[VOL-5567] Upgrade protos and remove deprecated dependencies

Change-Id: I61605ee294a3c5abe65ecf94a0fe647c6e3b8479
Signed-off-by: bseeniva <balaji.seenivasan@radisys.com>
diff --git a/.golangci.yml b/.golangci.yml
index 1147894..4eec439 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -71,4 +71,20 @@
     - gofmt
     - goimports
 run:
-  modules-download-mode: vendor
\ No newline at end of file
+  modules-download-mode: vendor
+
+  issues:
+  exclude-rules:
+    - text: "weak cryptographic primitive"
+      linters:
+        - gosec
+    - path: ".*_test.go"
+      linters:
+        - govet
+        - fieldalignment
+        - copylocks
+  exclude-use-default: false
+  exclude:
+    - "SA1019: voltha.ImageDownloads is deprecated"
+    - "SA1019: voltha.ImageDownload is deprecated"
+    - 'G115: integer overflow conversion'
diff --git a/Makefile b/Makefile
index 6026802..c38fda9 100644
--- a/Makefile
+++ b/Makefile
@@ -80,7 +80,7 @@
 	--build-arg org_opencord_vcs_dirty="${DOCKER_LABEL_VCS_DIRTY}"
 
 # tool containers
-VOLTHA_TOOLS_VERSION ?= 3.1.4
+VOLTHA_TOOLS_VERSION ?= 3.2.1
 
 ## TODO: Verify / migrate to repo:onf-make
 # GO                = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
diff --git a/VERSION b/VERSION
index 6ee1bd8..7721732 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.6.19
+4.6.20
diff --git a/go.mod b/go.mod
index c5eabe5..a4f1bd2 100644
--- a/go.mod
+++ b/go.mod
@@ -5,15 +5,15 @@
 require (
 	github.com/cenkalti/backoff/v3 v3.1.1
 	github.com/gogo/protobuf v1.3.2
-	github.com/golang/protobuf v1.5.4
 	github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
 	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
-	github.com/opencord/voltha-lib-go/v7 v7.7.1
-	github.com/opencord/voltha-protos/v5 v5.6.8
+	github.com/opencord/voltha-lib-go/v7 v7.8.1
+	github.com/opencord/voltha-protos/v5 v5.7.1
 	github.com/prometheus/client_golang v1.23.2
 	github.com/stretchr/testify v1.11.1
 	go.etcd.io/etcd/tests/v3 v3.6.5
-	google.golang.org/grpc v1.76.0
+	google.golang.org/grpc v1.77.0
+	google.golang.org/protobuf v1.36.11
 )
 
 require (
@@ -41,6 +41,7 @@
 	github.com/go-redis/redis/v8 v8.11.5 // indirect
 	github.com/golang-jwt/jwt/v5 v5.2.2 // indirect
 	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
+	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/golang/snappy v0.0.4 // indirect
 	github.com/google/btree v1.1.3 // indirect
 	github.com/google/go-cmp v0.7.0 // indirect
@@ -91,27 +92,26 @@
 	go.etcd.io/etcd/server/v3 v3.6.5 // indirect
 	go.etcd.io/gofail v0.2.0 // indirect
 	go.etcd.io/raft/v3 v3.6.0 // indirect
-	go.opentelemetry.io/auto/sdk v1.1.0 // indirect
+	go.opentelemetry.io/auto/sdk v1.2.1 // indirect
 	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect
-	go.opentelemetry.io/otel v1.37.0 // indirect
+	go.opentelemetry.io/otel v1.38.0 // indirect
 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
 	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
-	go.opentelemetry.io/otel/metric v1.37.0 // indirect
-	go.opentelemetry.io/otel/sdk v1.37.0 // indirect
-	go.opentelemetry.io/otel/trace v1.37.0 // indirect
+	go.opentelemetry.io/otel/metric v1.38.0 // indirect
+	go.opentelemetry.io/otel/sdk v1.38.0 // indirect
+	go.opentelemetry.io/otel/trace v1.38.0 // indirect
 	go.opentelemetry.io/proto/otlp v1.5.0 // indirect
 	go.uber.org/atomic v1.7.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.uber.org/zap v1.27.0 // indirect
 	go.yaml.in/yaml/v2 v2.4.2 // indirect
 	golang.org/x/crypto v0.43.0 // indirect
-	golang.org/x/net v0.46.0 // indirect
+	golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82 // indirect
 	golang.org/x/sys v0.37.0 // indirect
 	golang.org/x/text v0.30.0 // indirect
 	golang.org/x/time v0.9.0 // indirect
-	google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect
-	google.golang.org/protobuf v1.36.10 // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect
diff --git a/go.sum b/go.sum
index bb76581..7a976b4 100644
--- a/go.sum
+++ b/go.sum
@@ -1,619 +1,11 @@
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
-cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
-cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
-cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
-cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
-cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
-cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
-cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=
-cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=
-cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
-cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
-cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
-cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
-cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
-cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
-cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U=
-cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
-cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
-cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
-cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
-cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM=
-cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I=
-cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
-cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4=
-cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw=
-cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E=
-cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o=
-cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE=
-cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM=
-cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ=
-cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
-cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
-cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg=
-cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ=
-cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k=
-cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw=
-cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
-cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4=
-cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M=
-cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE=
-cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE=
-cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk=
-cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc=
-cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8=
-cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc=
-cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04=
-cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8=
-cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY=
-cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM=
-cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc=
-cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU=
-cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI=
-cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8=
-cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno=
-cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak=
-cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84=
-cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A=
-cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E=
-cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4=
-cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0=
-cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY=
-cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k=
-cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ=
-cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk=
-cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0=
-cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc=
-cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI=
-cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ=
-cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI=
-cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08=
-cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o=
-cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s=
-cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0=
-cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ=
-cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY=
-cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo=
-cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg=
-cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw=
-cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
-cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
-cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo=
-cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0=
-cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E=
-cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
-cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
-cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8=
-cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM=
-cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU=
-cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc=
-cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI=
-cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss=
-cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE=
-cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE=
-cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g=
-cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4=
-cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8=
-cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM=
-cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA=
-cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw=
-cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc=
-cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E=
-cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac=
-cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q=
-cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU=
-cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY=
-cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s=
-cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI=
-cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y=
-cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss=
-cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc=
-cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM=
-cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI=
-cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0=
-cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk=
-cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q=
-cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg=
-cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590=
-cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8=
-cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk=
-cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk=
-cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE=
-cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU=
-cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U=
-cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA=
-cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M=
-cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg=
-cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s=
-cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM=
-cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk=
-cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA=
-cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY=
-cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI=
-cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4=
-cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI=
-cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y=
-cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs=
-cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
-cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
-cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
-cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
-cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
-cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
-cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
-cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=
-cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=
-cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE=
-cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo=
-cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA=
-cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
-cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=
-cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
-cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=
-cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
-cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
-cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY=
-cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck=
-cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w=
-cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg=
-cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo=
-cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4=
-cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM=
-cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA=
-cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
-cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
-cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI=
-cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s=
-cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
-cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs=
-cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc=
-cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE=
-cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM=
-cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M=
-cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0=
-cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8=
-cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM=
-cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ=
-cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE=
-cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo=
-cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE=
-cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0=
-cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA=
-cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE=
-cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38=
-cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w=
-cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8=
-cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I=
-cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ=
-cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM=
-cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA=
-cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A=
-cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ=
-cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs=
-cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s=
-cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI=
-cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4=
-cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo=
-cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA=
-cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM=
-cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c=
-cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo=
-cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ=
-cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g=
-cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4=
-cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs=
-cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww=
-cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c=
-cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s=
-cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI=
-cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ=
-cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4=
-cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0=
-cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8=
-cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek=
-cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0=
-cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM=
-cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4=
-cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE=
-cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM=
-cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q=
-cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4=
-cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU=
-cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU=
-cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k=
-cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4=
-cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM=
-cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs=
-cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y=
-cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg=
-cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE=
-cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk=
-cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w=
-cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc=
-cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY=
-cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU=
-cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI=
-cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8=
-cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M=
-cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc=
-cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw=
-cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw=
-cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY=
-cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w=
-cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI=
-cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs=
-cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg=
-cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE=
-cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk=
-cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg=
-cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY=
-cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08=
-cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw=
-cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA=
-cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c=
-cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM=
-cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA=
-cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w=
-cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM=
-cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0=
-cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60=
-cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo=
-cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg=
-cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o=
-cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A=
-cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw=
-cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0=
-cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0=
-cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E=
-cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw=
-cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA=
-cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI=
-cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y=
-cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
-cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM=
-cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o=
-cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo=
-cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c=
-cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc=
-cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg=
-cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE=
-cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY=
-cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=
-cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
-cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc=
-cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A=
-cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk=
-cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo=
-cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74=
-cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM=
-cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY=
-cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4=
-cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs=
-cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g=
-cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o=
-cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE=
-cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA=
-cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg=
-cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0=
-cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg=
-cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w=
-cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24=
-cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI=
-cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
-cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
-cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE=
-cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8=
-cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY=
-cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
-cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
-cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo=
-cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw=
-cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M=
-cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE=
-cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc=
-cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
-cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE=
-cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM=
-cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA=
-cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI=
-cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw=
-cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY=
-cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
-cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
-cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I=
-cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
-cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=
-cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA=
-cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY=
-cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM=
-cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=
-cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=
-cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8=
-cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI=
-cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo=
-cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk=
-cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4=
-cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w=
-cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw=
-cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=
-cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=
-cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM=
-cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8=
-cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E=
-cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM=
-cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8=
-cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4=
-cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY=
-cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=
-cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU=
-cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k=
-cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU=
-cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY=
-cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34=
-cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA=
-cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0=
-cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE=
-cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ=
-cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4=
-cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs=
-cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI=
-cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA=
-cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk=
-cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ=
-cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE=
-cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc=
-cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc=
-cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs=
-cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg=
-cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo=
-cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw=
-cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw=
-cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E=
-cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU=
-cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70=
-cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo=
-cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs=
-cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0=
-cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA=
-cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk=
-cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg=
-cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE=
-cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw=
-cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc=
-cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0=
-cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI=
-cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg=
-cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI=
-cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0=
-cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8=
-cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4=
-cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg=
-cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k=
-cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM=
-cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4=
-cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o=
-cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk=
-cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo=
-cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE=
-cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U=
-cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA=
-cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c=
-cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg=
-cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4=
-cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac=
-cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg=
-cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c=
-cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs=
-cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70=
-cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ=
-cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y=
-cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A=
-cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA=
-cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM=
-cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ=
-cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA=
-cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0=
-cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots=
-cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo=
-cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI=
-cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU=
-cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg=
-cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA=
-cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4=
-cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY=
-cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc=
-cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y=
-cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14=
-cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do=
-cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo=
-cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM=
-cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg=
-cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s=
-cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI=
-cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk=
-cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44=
-cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc=
-cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc=
-cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA=
-cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4=
-cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4=
-cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU=
-cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4=
-cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0=
-cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU=
-cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q=
-cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA=
-cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8=
-cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0=
-cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU=
-cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc=
-cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk=
-cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk=
-cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0=
-cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag=
-cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU=
-cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s=
-cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA=
-cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc=
-cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk=
-cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs=
-cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg=
-cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4=
-cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U=
-cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY=
-cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s=
-cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco=
-cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo=
-cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc=
-cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4=
-cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E=
-cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU=
-cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec=
-cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA=
-cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4=
-cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw=
-cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A=
-cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos=
-cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk=
-cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M=
-cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM=
-cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ=
-cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0=
-cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco=
-cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0=
-cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
-cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
-cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
-cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
-cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y=
-cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4=
-cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w=
-cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I=
-cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4=
-cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw=
-cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
-cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
-cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM=
-cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA=
-cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c=
-cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8=
-cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4=
-cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc=
-cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ=
-cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg=
-cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM=
-cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28=
-cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y=
-cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA=
-cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk=
-cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs=
-cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg=
-cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0=
-cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=
-cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=
-cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk=
-cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw=
-cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg=
-cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk=
-cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=
-cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=
-cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
-cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=
-cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M=
-cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU=
-cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU=
-cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
-cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo=
-cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo=
-cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY=
-cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E=
-cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY=
-cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0=
-cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE=
-cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g=
-cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc=
-cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY=
-cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208=
-cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8=
-cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY=
-cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w=
-cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8=
-cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes=
-cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE=
-cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
-cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc=
-cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A=
-cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg=
-cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo=
-cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ=
-cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng=
-cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
-cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
-cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
-cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
-cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
-git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
 github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
 github.com/IBM/sarama v1.46.2 h1:65JJmZpxKUWe/7HEHmc56upTfAvgoxuyu4Ek+TcevDE=
 github.com/IBM/sarama v1.46.2/go.mod h1:PDOGmVeKmW744c/0d4CZ0MfrzmcIYtpmS5+KIWs1zHQ=
-github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
-github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
 github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
-github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
-github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
-github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
-github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
-github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
-github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
-github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
-github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI=
-github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU=
 github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -621,8 +13,6 @@
 github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
 github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d h1:zsO4lp+bjv5XvPTF58Vq+qgmZEYZttJK+CWtSZhKenI=
 github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d/go.mod h1:f1iKL6ZhUWvbk7PdWVmOaak10o86cqMUYEmn1CZNGEI=
-github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
-github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
 github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw=
 github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c=
 github.com/cenkalti/backoff/v3 v3.1.1 h1:UBHElAnr3ODEbpqPzX8g5sBcASjoLFtt3L/xwJ01L6E=
@@ -630,35 +20,14 @@
 github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
 github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
 github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cevaris/ordered_map v0.0.0-20220813181356-34664b69742b h1:3G9nSrTyBZcQMI9phQK1XvSDCb8E6b1+6E5dcr+R2MU=
 github.com/cevaris/ordered_map v0.0.0-20220813181356-34664b69742b/go.mod h1:dcE/RHCVM8522lLVHLcdgxCuQEYE5Zhn6VPXcxALaNs=
 github.com/cheggaaa/pb/v3 v3.1.6 h1:h0x+vd7EiUohAJ29DJtJy+SNAc55t/elW3jCD086EXk=
 github.com/cheggaaa/pb/v3 v3.1.6/go.mod h1:urxmfVtaxT+9aWk92DbsvXFZtNSWQSO5TRAp+MJ3l1s=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
-github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
-github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
-github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA=
 github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
 github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
@@ -666,14 +35,11 @@
 github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
 github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
 github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
 github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
 github.com/eapache/go-resiliency v1.7.0 h1:n3NRTnBn5N0Cbi/IeOHuQn9s2UwVUH7Ga0ZWcP+9JTA=
@@ -685,163 +51,47 @@
 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
-github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
-github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
-github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
-github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34=
-github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI=
-github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q=
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo=
-github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w=
-github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=
-github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=
 github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
 github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
-github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
-github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
 github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
 github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
-github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
-github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
-github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
-github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
-github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
-github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=
 github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
 github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
-github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
 github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
 github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
 github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
-github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
-github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
-github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
-github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
 github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
-github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
 github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
-github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
-github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
-github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
-github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
-github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
-github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
-github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8=
-github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI=
-github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
 github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
 github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
 github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
@@ -854,19 +104,11 @@
 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w=
 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
 github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
 github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
 github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
 github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
@@ -885,23 +127,12 @@
 github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
 github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
 github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
-github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
-github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
-github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
 github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
 github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -910,21 +141,13 @@
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
-github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
-github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=
 github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
 github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
-github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
 github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
-github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
@@ -935,34 +158,25 @@
 github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
 github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
 github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
-github.com/opencord/voltha-lib-go/v7 v7.7.1 h1:sqx8yvrzPjaieZnxyAOya7Vl5U/A7tvORkuWpdxA6bg=
-github.com/opencord/voltha-lib-go/v7 v7.7.1/go.mod h1:apWuzeWBYXIUuHB00YreV8FtfQfpfs74u5/8U+gmdwk=
-github.com/opencord/voltha-protos/v5 v5.6.8 h1:Cafo26A8+jwL89HIWoUA/2yvmfE4Fr/tnt8KdK56fA0=
-github.com/opencord/voltha-protos/v5 v5.6.8/go.mod h1:ZDosM1aQa2jooUjHucAyifvs3MfifBlBD3rRRhyZ4kc=
+github.com/opencord/voltha-lib-go/v7 v7.8.1 h1:tScnUJAtKo2bu6dg2NFirawIrXf2YwKjlb8+YdCDp2s=
+github.com/opencord/voltha-lib-go/v7 v7.8.1/go.mod h1:ege+7IIFRKe89exRbV6B9+N0J9pCJY8tCw1Ex/ryBQM=
+github.com/opencord/voltha-protos/v5 v5.7.1 h1:2K3s5nNn/EI6MJPgN1AK2db5RZCMisvK4SXqlOba5xA=
+github.com/opencord/voltha-protos/v5 v5.7.1/go.mod h1:KxcAB17mXTUSjA/rAziV3sDaOpntaFTCEXBJIfN5El4=
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
-github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
-github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
-github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
-github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
 github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
 github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
 github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
 github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
 github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
 github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
@@ -971,28 +185,17 @@
 github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
 github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg=
 github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
 github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
 github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
 github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
-github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
 github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
 github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
-github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
-github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
-github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
 github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
 github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
 github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
@@ -1006,13 +209,10 @@
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
 github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=
@@ -1023,15 +223,9 @@
 github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
-github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
 go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo=
 go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
 go.etcd.io/etcd/api/v3 v3.6.5 h1:pMMc42276sgR1j1raO/Qv3QI9Af/AuyQUW6CBAWuntA=
@@ -1052,35 +246,24 @@
 go.etcd.io/gofail v0.2.0/go.mod h1:nL3ILMGfkXTekKI3clMBNazKnjUZjYLKmBHzsVAnC1o=
 go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ=
 go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
-go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
-go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
-go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
+go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
+go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE=
 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4=
-go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
-go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
+go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8=
+go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM=
 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60=
 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM=
 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
-go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
-go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
-go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI=
-go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg=
-go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc=
-go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
-go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
-go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
-go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
-go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
+go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA=
+go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI=
+go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
+go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
+go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
+go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
+go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
+go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
 go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
 go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
 go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
@@ -1097,666 +280,114 @@
 go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
 go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
 golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
 golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
-golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
-golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=
-golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
-golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
-golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
-golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
-golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
-golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
-golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
-golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
-golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
-golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
-golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
-golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
+golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82 h1:6/3JGEh1C88g7m+qzzTbl3A0FtsLguXieqofVLU/JAo=
+golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
-golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
-golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
-golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
-golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
-golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=
-golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
-golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
-golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
 golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
 golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
 golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
 golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY=
 golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
-golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
-golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
-golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
-gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
-gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=
-gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA=
 gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
 gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
-gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
-gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY=
-gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo=
-google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
-google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
-google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
-google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
-google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
-google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
-google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
-google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
-google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
-google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
-google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
-google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
-google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
-google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
-google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
-google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
-google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
-google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
-google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
-google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=
-google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=
-google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
-google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
-google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
-google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=
-google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
-google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=
-google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
-google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
-google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI=
-google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
-google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
-google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
-google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08=
-google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo=
-google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0=
-google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
-google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
-google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
-google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI=
-google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0=
-google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
-google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
-google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
-google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
-google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
-google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
-google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
-google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
-google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
-google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
-google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
-google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
-google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=
-google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
-google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
-google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE=
-google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
-google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
-google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
-google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
-google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
-google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
-google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
-google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
-google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
-google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
-google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
-google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=
-google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
-google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
-google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=
-google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
-google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
-google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo=
-google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
-google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE=
-google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
-google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA=
-google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
-google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
-google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA=
-google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
-google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
-google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
-google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
-google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
-google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
-google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY=
-google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64=
-google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8=
-google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig=
-google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b h1:ULiyYQ0FdsJhwwZUwbaXpZF5yUE3h+RA+gxvBu37ucc=
-google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:oDOGiMSXHL4sDTJvFvIB9nRQCGdLP1o/iVaqQK8zB+M=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
+google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 h1:7LRqPCEdE4TP4/9psdaB7F2nhZFfBiGJomA5sojLWdU=
+google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846 h1:Wgl1rcDNThT+Zn47YyCXOXyX/COgMTIdhJ717F0l4xk=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
 google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
-google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
-google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
-google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
-google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
-google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
-google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
-google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
-google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
-google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
-google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
-google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
-google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
-google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
-google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
-google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
-google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
-google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
-google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
-google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
+google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
+google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
+google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
+google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
 gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
@@ -1765,51 +396,7 @@
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
-lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
-lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
-modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
-modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
-modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
-modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc=
-modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw=
-modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
-modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
-modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws=
-modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo=
-modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
-modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
-modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=
-modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A=
-modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU=
-modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU=
-modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=
-modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0=
-modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s=
-modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
-modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
-modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
-modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
-modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
-modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
-modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
-modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
-modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4=
-modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=
-modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
-modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw=
-modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
-modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
 sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=
 sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
 sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 00b339d..05e85ff 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -30,13 +30,13 @@
 	"sync"
 	"time"
 
+	"github.com/gogo/protobuf/proto"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
 
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 
 	"github.com/cenkalti/backoff/v3"
-	"github.com/gogo/protobuf/proto"
 	grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
 	grpc_opentracing "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
 	grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
@@ -215,14 +215,14 @@
 	dh.cm = cm
 	dh.coreClient = cc
 	dh.EventProxy = ep
-	cloned := (proto.Clone(device)).(*voltha.Device)
-	dh.device = cloned
+	// Note: We use the device directly instead of cloning to avoid issues with protobuf unexported fields
+	dh.device = device
 	dh.openOLT = adapter
 	dh.exitChannel = make(chan struct{})
 	dh.lockDevice = sync.RWMutex{}
 	dh.stopCollector = make(chan bool, 1)      // TODO: Why buffered?
 	dh.stopHeartbeatCheck = make(chan bool, 1) // TODO: Why buffered?
-	dh.metrics = pmmetrics.NewPmMetrics(cloned.Id, pmmetrics.Frequency(150), pmmetrics.FrequencyOverride(false), pmmetrics.Grouped(false), pmmetrics.Metrics(pmNames))
+	dh.metrics = pmmetrics.NewPmMetrics(device.Id, pmmetrics.Frequency(150), pmmetrics.FrequencyOverride(false), pmmetrics.Grouped(false), pmmetrics.Metrics(pmNames))
 	dh.activePorts = sync.Map{}
 	dh.stopIndications = make(chan bool, 1) // TODO: Why buffered?
 	dh.perPonOnuIndicationChannel = make(map[uint32]onuIndicationChannels)
@@ -1153,18 +1153,16 @@
 		return olterrors.NewErrNotFound("device", log.Fields{"device-id": dh.device.Id}, err)
 	}
 
-	cloned := proto.Clone(device).(*voltha.Device)
-
 	// Update the device oper state and connection status
-	cloned.OperStatus = voltha.OperStatus_UNKNOWN
+	device.OperStatus = voltha.OperStatus_UNKNOWN
 	dh.lockDevice.Lock()
-	dh.device = cloned
+	dh.device = device
 	dh.lockDevice.Unlock()
 
 	if err = dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
-		DeviceId:   cloned.Id,
-		OperStatus: cloned.OperStatus,
-		ConnStatus: cloned.ConnectStatus,
+		DeviceId:   device.Id,
+		OperStatus: device.OperStatus,
+		ConnStatus: device.ConnectStatus,
 	}); err != nil {
 		return olterrors.NewErrAdapter("state-update-failed", log.Fields{"device-id": device.Id}, err)
 	}
@@ -1192,7 +1190,7 @@
 		if err != nil {
 			_ = olterrors.NewErrCommunication("inter-adapter-send-failed", log.Fields{
 				"source":        dh.openOLT.config.AdapterEndpoint,
-				"onu-indicator": onuInd,
+				"onu-indicator": onuInd.String(),
 				"device-type":   onuDevice.Type,
 				"device-id":     onuDevice.Id}, err).LogAt(log.ErrorLevel)
 			// Do not return here and continue to process other ONUs
@@ -1285,15 +1283,14 @@
 	if device.AdminState == voltha.AdminState_DISABLED {
 		logger.Debugln(ctx, "do-state-connected--device-admin-state-down")
 
-		cloned := proto.Clone(device).(*voltha.Device)
-		cloned.ConnectStatus = voltha.ConnectStatus_REACHABLE
-		cloned.OperStatus = voltha.OperStatus_UNKNOWN
-		dh.device = cloned
+		device.ConnectStatus = voltha.ConnectStatus_REACHABLE
+		device.OperStatus = voltha.OperStatus_UNKNOWN
+		dh.device = device
 
 		if err = dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
-			DeviceId:   cloned.Id,
-			OperStatus: cloned.OperStatus,
-			ConnStatus: cloned.ConnectStatus,
+			DeviceId:   device.Id,
+			OperStatus: device.OperStatus,
+			ConnStatus: device.ConnectStatus,
 		}); err != nil {
 			return olterrors.NewErrAdapter("device-state-update-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
 		}
@@ -1804,7 +1801,7 @@
 		if st.Code() == codes.AlreadyExists {
 			logger.Debugw(ctx, "onu-activation-in-progress", log.Fields{"SerialNumber": serialNumber, "onu-id": onuID, "device-id": dh.device.Id})
 		} else {
-			return olterrors.NewErrAdapter("onu-activate-failed", log.Fields{"onu": Onu, "device-id": dh.device.Id}, err)
+			return olterrors.NewErrAdapter("onu-activate-failed", log.Fields{"onu-serial": serialNumber, "onu-id": onuID, "device-id": dh.device.Id}, err)
 		}
 	} else {
 		logger.Infow(ctx, "activated-onu", log.Fields{"SerialNumber": serialNumber, "device-id": dh.device.Id})
@@ -2491,13 +2488,12 @@
 	dh.lockDevice.RUnlock()
 
 	go dh.notifyChildDevices(ctx, "unreachable")
-	cloned := proto.Clone(device).(*voltha.Device)
 	// Update device Admin state
-	dh.device = cloned
+	dh.device = device
 
 	// Update the all pon ports state on that device to disable and NNI remains active as NNI remains active in openolt agent.
 	if err := dh.updatePortsStateInCore(ctx, &ca.PortStateFilter{
-		DeviceId:       cloned.Id,
+		DeviceId:       device.Id,
 		PortTypeFilter: ^uint32(1 << voltha.Port_PON_OLT),
 		OperStatus:     voltha.OperStatus_UNKNOWN,
 	}); err != nil {
@@ -2524,7 +2520,7 @@
 				OnuIndication: &onuInd,
 			})
 			if err != nil {
-				logger.Errorw(ctx, "failed-to-send-inter-adapter-message", log.Fields{"OnuInd": onuInd,
+				logger.Errorw(ctx, "failed-to-send-inter-adapter-message", log.Fields{"OnuInd": onuInd.String(),
 					"From Adapter": dh.openOLT.config.AdapterEndpoint, "DeviceType": onuDevice.Type, "device-id": onuDevice.Id})
 			}
 		}
@@ -2801,7 +2797,7 @@
 func (dh *DeviceHandler) handlePacketIndication(ctx context.Context, packetIn *oop.PacketIndication) error {
 	if logger.V(log.DebugLevel) {
 		logger.Debugw(ctx, "received-packet-in", log.Fields{
-			"packet-indication": *packetIn,
+			"packet-indication": packetIn.String(),
 			"device-id":         dh.device.Id,
 			"packet":            hex.EncodeToString(packetIn.Pkt),
 		})
@@ -2856,7 +2852,7 @@
 
 	if logger.V(log.DebugLevel) {
 		logger.Debugw(ctx, "sending-packet-to-nni", log.Fields{
-			"uplink-pkt": uplinkPkt,
+			"uplink-pkt": uplinkPkt.String(),
 			"packet":     hex.EncodeToString(packet.Data),
 			"device-id":  dh.device.Id,
 		})
@@ -3091,11 +3087,10 @@
 
 		// raise olt communication failure event
 		raisedTs := time.Now().Unix()
-		cloned := proto.Clone(device).(*voltha.Device)
-		cloned.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
-		cloned.OperStatus = voltha.OperStatus_UNKNOWN
-		dh.device = cloned // update local copy of the device
-		go dh.eventMgr.oltCommunicationEvent(ctx, cloned, raisedTs)
+		device.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
+		device.OperStatus = voltha.OperStatus_UNKNOWN
+		dh.device = device // update local copy of the device
+		go dh.eventMgr.oltCommunicationEvent(ctx, device, raisedTs)
 
 		dh.lockDevice.RLock()
 		// Stop the Stats collector
@@ -3163,11 +3158,10 @@
 
 	//raise olt communication failure event
 	raisedTs := time.Now().Unix()
-	cloned := proto.Clone(device).(*voltha.Device)
-	cloned.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
-	cloned.OperStatus = voltha.OperStatus_UNKNOWN
-	dh.device = cloned // update local copy of the device
-	go dh.eventMgr.oltCommunicationEvent(ctx, cloned, raisedTs)
+	device.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
+	device.OperStatus = voltha.OperStatus_UNKNOWN
+	dh.device = device // update local copy of the device
+	go dh.eventMgr.oltCommunicationEvent(ctx, device, raisedTs)
 
 	if err := dh.cleanupDeviceResources(ctx); err != nil {
 		logger.Errorw(ctx, "failure-in-cleanup-device-resources", log.Fields{"device-id": dh.device.Id, "err": err})
@@ -3713,9 +3707,9 @@
 		select {
 		// process one indication per onu, before proceeding to the next one
 		case onuInd := <-onuChannels.indicationChannel:
-			indication := *(proto.Clone(onuInd.indication)).(*oop.Indication)
+			indication := onuInd.indication
 			logger.Debugw(onuInd.ctx, "calling-indication", log.Fields{"device-id": dh.device.Id,
-				"ind": indication})
+				"ind": indication.String()})
 			switch indication.Data.(type) {
 			case *oop.Indication_OnuInd:
 				if err := dh.onuIndication(onuInd.ctx, indication.GetOnuInd()); err != nil {
@@ -4183,7 +4177,7 @@
 	rxPower, err := dh.Client.GetPonRxPower(subCtx, &Onu)
 	cancel()
 	if err != nil {
-		logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"Onu": Onu, "err": err})
+		logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"intf-id": Onu.IntfId, "onu-id": Onu.OnuId, "err": err})
 		return generateSingleGetValueErrorResponse(err)
 	}
 	return &extension.SingleGetValueResponse{
@@ -4246,7 +4240,7 @@
 			rxPower, err := dh.Client.GetPonRxPower(subCtx, &Onu)
 			cancel()
 			if err != nil {
-				logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"Onu": Onu, "err": err})
+				logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"intf-id": Onu.IntfId, "onu-id": Onu.OnuId, "err": err})
 				return generateSingleGetValueErrorResponse(err)
 			}
 
@@ -4269,7 +4263,7 @@
 				rxPower, err := dh.Client.GetPonRxPower(subCtx, &Onu)
 				cancel()
 				if err != nil {
-					logger.Errorw(ctx, "error-while-getting-rx-power, however considering to proceed further with other ONUs on PON", log.Fields{"Onu": Onu, "err": err})
+					logger.Errorw(ctx, "error-while-getting-rx-power, however considering to proceed further with other ONUs on PON", log.Fields{"intf-id": Onu.IntfId, "onu-id": Onu.OnuId, "err": err})
 				} else {
 					rxPowerValue := extension.RxPower{}
 					rxPowerValue.OnuSn = onuInCache.(*OnuDevice).serialNumber
@@ -4280,11 +4274,11 @@
 					resp.Response.GetOltRxPower().RxPower = append(resp.Response.GetOltRxPower().RxPower, &rxPowerValue)
 				}
 			}
-			logger.Infow(ctx, "getPONRxPower response ", log.Fields{"Response": resp})
+			logger.Infow(ctx, "getPONRxPower response ", log.Fields{"status": resp.Response.Status})
 			return true
 		})
 	}
-	logger.Infow(ctx, "getPONRxPower response ", log.Fields{"Response": resp})
+	logger.Infow(ctx, "getPONRxPower response ", log.Fields{"status": resp.Response.Status})
 	return &resp
 }
 
@@ -4337,7 +4331,7 @@
 	ponPortStats.PonPort = uint32(portNumber)
 	ponPortStats.PortStatistics = ponStats
 
-	logger.Infow(ctx, "getPonPortStats response ", log.Fields{"Response": resp})
+	logger.Infow(ctx, "getPonPortStats response ", log.Fields{"status": resp.Response.Status, "pon-port": portNumber})
 	return &resp
 }
 
@@ -4390,7 +4384,7 @@
 	nniPortStats.NniPort = uint32(portNumber)
 	nniPortStats.PortStatistics = nniStats
 
-	logger.Infow(ctx, "getNniPortStats response ", log.Fields{"Response": resp})
+	logger.Infow(ctx, "getNniPortStats response ", log.Fields{"status": resp.Response.Status, "nni-port": portNumber})
 	return &resp
 }
 
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 6f670e0..b4274c9 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -26,10 +26,9 @@
 	"time"
 
 	conf "github.com/opencord/voltha-lib-go/v7/pkg/config"
-	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
-
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	fu "github.com/opencord/voltha-lib-go/v7/pkg/flows"
+	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 	plt "github.com/opencord/voltha-lib-go/v7/pkg/platform"
 	"github.com/opencord/voltha-lib-go/v7/pkg/pmmetrics"
 	ponrmgr "github.com/opencord/voltha-lib-go/v7/pkg/ponresourcemanager"
@@ -37,6 +36,7 @@
 	"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
 	"github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
 	"github.com/opencord/voltha-openolt-adapter/pkg/mocks"
+	"github.com/opencord/voltha-protos/v5/go/adapter_service"
 	cmn "github.com/opencord/voltha-protos/v5/go/common"
 	ia "github.com/opencord/voltha-protos/v5/go/inter_adapter"
 	of "github.com/opencord/voltha-protos/v5/go/openflow_13"
@@ -168,7 +168,14 @@
 	cm := &conf.ConfigManager{}
 	cm.Backend = &db.Backend{StoreType: "etcd", Client: &mocks.MockKVClient{}}
 	cfg := &config.AdapterFlags{OmccEncryption: true}
-	openOLT := &OpenOLT{eventProxy: ep, config: cfg, KVStoreType: "etcd", KVStoreAddress: "1:2"}
+	openOLT := &OpenOLT{
+		UnimplementedAdapterServiceServer: adapter_service.UnimplementedAdapterServiceServer{},
+		eventProxy:                        ep,
+		config:                            cfg,
+		KVStoreType:                       "etcd",
+		KVStoreAddress:                    "1:2",
+	}
+
 	dh := NewDeviceHandler(cc, ep, device, openOLT, cm, cfg)
 	dh.kvStore = cm.Backend
 	oopRanges := []*oop.DeviceInfo_DeviceResourceRanges{{
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index ddd331f..0dd2325 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -23,7 +23,6 @@
 	"sync"
 	"time"
 
-	"github.com/golang/protobuf/ptypes/empty"
 	conf "github.com/opencord/voltha-lib-go/v7/pkg/config"
 	"github.com/opencord/voltha-lib-go/v7/pkg/events/eventif"
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
@@ -40,10 +39,12 @@
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
+	"google.golang.org/protobuf/types/known/emptypb"
 )
 
 // OpenOLT structure holds the OLT information
 type OpenOLT struct {
+	adapter_service.UnimplementedAdapterServiceServer
 	eventProxy                         eventif.EventProxy
 	configManager                      *conf.ConfigManager
 	deviceHandlers                     map[string]*DeviceHandler
@@ -145,7 +146,7 @@
 }
 
 // AdoptDevice creates a new device handler if not present already and then adopts the device
-func (oo *OpenOLT) AdoptDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) AdoptDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	if device == nil {
 		return nil, olterrors.NewErrInvalidValue(log.Fields{"device": nil}, nil).Log()
 	}
@@ -156,7 +157,7 @@
 		oo.addDeviceHandlerToMap(handler)
 		go handler.AdoptDevice(log.WithSpanFromContext(context.Background(), ctx), device)
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // GetOfpDeviceInfo returns OFP information for the given device
@@ -169,7 +170,7 @@
 }
 
 // ReconcileDevice unimplemented
-func (oo *OpenOLT) ReconcileDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) ReconcileDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	if device == nil {
 		return nil, olterrors.NewErrInvalidValue(log.Fields{"device": nil}, nil)
 	}
@@ -229,49 +230,49 @@
 		go handler.transitionMap.Handle(dhCtx, DeviceInit)
 	} else {
 		logger.Warnf(ctx, "device-already-reconciled-or-active", log.Fields{"device-id": device.Id})
-		return &empty.Empty{}, status.Errorf(codes.AlreadyExists, "handler exists: %s", device.Id)
+		return &emptypb.Empty{}, status.Errorf(codes.AlreadyExists, "handler exists: %s", device.Id)
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DisableDevice disables the given device
-func (oo *OpenOLT) DisableDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) DisableDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "disable-device", log.Fields{"device-id": device.Id})
 	if handler := oo.getDeviceHandler(device.Id); handler != nil {
 		if err := handler.DisableDevice(log.WithSpanFromContext(context.Background(), ctx), device); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil)
 }
 
 // ReEnableDevice enables the olt device after disable
-func (oo *OpenOLT) ReEnableDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) ReEnableDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "reenable-device", log.Fields{"device-id": device.Id})
 	if handler := oo.getDeviceHandler(device.Id); handler != nil {
 		if err := handler.ReenableDevice(log.WithSpanFromContext(context.Background(), ctx), device); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil)
 }
 
 // RebootDevice reboots the given device
-func (oo *OpenOLT) RebootDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) RebootDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "reboot-device", log.Fields{"device-id": device.Id})
 	if handler := oo.getDeviceHandler(device.Id); handler != nil {
 		if err := handler.RebootDevice(log.WithSpanFromContext(context.Background(), ctx), device); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": device.Id}, nil)
 }
 
 // DeleteDevice deletes a device
-func (oo *OpenOLT) DeleteDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) DeleteDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "delete-device", log.Fields{"device-id": device.Id})
 	if handler := oo.getDeviceHandler(device.Id); handler != nil {
 		if err := handler.DeleteDevice(log.WithSpanFromContext(context.Background(), ctx), device); err != nil {
@@ -291,13 +292,13 @@
 				if !handler.isHeartbeatCheckActive && !handler.isCollectorActive && !handler.isReadIndicationRoutineActive {
 					logger.Debugf(ctx, "delete-device-handler")
 					oo.deleteDeviceHandlerToMap(handler)
-					return &empty.Empty{}, nil
+					return &emptypb.Empty{}, nil
 				}
 			case <-timeout:
 				// Timeout exceeded
 				logger.Warnw(ctx, "delete-device-handler timeout exceeded", log.Fields{"device-id": device.Id})
 				oo.deleteDeviceHandlerToMap(handler) // Clean up anyway
-				return &empty.Empty{}, nil
+				return &emptypb.Empty{}, nil
 			}
 		}
 	}
@@ -305,55 +306,55 @@
 }
 
 // UpdateFlowsIncrementally updates (add/remove) the flows on a given device
-func (oo *OpenOLT) UpdateFlowsIncrementally(ctx context.Context, incrFlows *ca.IncrementalFlows) (*empty.Empty, error) {
+func (oo *OpenOLT) UpdateFlowsIncrementally(ctx context.Context, incrFlows *ca.IncrementalFlows) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "update_flows_incrementally", log.Fields{"device-id": incrFlows.Device.Id, "flows": incrFlows.Flows, "flowMetadata": incrFlows.FlowMetadata})
 	if handler := oo.getDeviceHandler(incrFlows.Device.Id); handler != nil {
 		if err := handler.UpdateFlowsIncrementally(log.WithSpanFromContext(context.Background(), ctx), incrFlows.Device, incrFlows.Flows, incrFlows.Groups, incrFlows.FlowMetadata); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": incrFlows.Device.Id}, nil)
 }
 
 // UpdatePmConfig returns PmConfigs nil or error
-func (oo *OpenOLT) UpdatePmConfig(ctx context.Context, configs *ca.PmConfigsInfo) (*empty.Empty, error) {
+func (oo *OpenOLT) UpdatePmConfig(ctx context.Context, configs *ca.PmConfigsInfo) (*emptypb.Empty, error) {
 	logger.Debugw(ctx, "update_pm_config", log.Fields{"device-id": configs.DeviceId, "pm-configs": configs.PmConfigs})
 	if handler := oo.getDeviceHandler(configs.DeviceId); handler != nil {
 		handler.UpdatePmConfig(log.WithSpanFromContext(context.Background(), ctx), configs.PmConfigs)
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": configs.DeviceId}, nil)
 }
 
 // SendPacketOut sends packet out to the device
-func (oo *OpenOLT) SendPacketOut(ctx context.Context, packet *ca.PacketOut) (*empty.Empty, error) {
+func (oo *OpenOLT) SendPacketOut(ctx context.Context, packet *ca.PacketOut) (*emptypb.Empty, error) {
 	logger.Debugw(ctx, "send_packet_out", log.Fields{"device-id": packet.DeviceId, "egress_port_no": packet.EgressPortNo, "pkt": packet.Packet})
 	if handler := oo.getDeviceHandler(packet.DeviceId); handler != nil {
 		if err := handler.PacketOut(log.WithSpanFromContext(context.Background(), ctx), packet.EgressPortNo, packet.Packet); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": packet.DeviceId}, nil)
 }
 
 // EnableOnuSerialNumber to Enable onu serial number
-func (oo *OpenOLT) EnableOnuSerialNumber(ctx context.Context, device *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
+func (oo *OpenOLT) EnableOnuSerialNumber(ctx context.Context, device *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "enable_onu_serial_number", log.Fields{"olt_device_id": device.OltDeviceId, "onu_serial_number": device.SerialNumber})
 	if err := oo.enableDisableOnuSerialNumber(log.WithSpanFromContext(context.Background(), ctx), device, true); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DisableOnuSerialNumber to Disable onu serial number
-func (oo *OpenOLT) DisableOnuSerialNumber(ctx context.Context, device *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
+func (oo *OpenOLT) DisableOnuSerialNumber(ctx context.Context, device *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "disable_onu_serial_number", log.Fields{"olt_device_id": device.OltDeviceId, "onu_serial_number": device.SerialNumber})
 	if err := oo.enableDisableOnuSerialNumber(log.WithSpanFromContext(context.Background(), ctx), device, false); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // enableDisableOnuSerialNumber to Disable onu or Enable onu
@@ -389,21 +390,21 @@
 }
 
 // EnableOnuDevice to Enable onu
-func (oo *OpenOLT) EnableOnuDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) EnableOnuDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "enable_onu", log.Fields{"onu_device_id": device.Id, "onu_serial_number": device.SerialNumber})
 	if err := oo.enableDisableOnuDevice(log.WithSpanFromContext(context.Background(), ctx), device, true); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DisableOnuDevice to Disable onu
-func (oo *OpenOLT) DisableOnuDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) DisableOnuDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "disable_onu", log.Fields{"onu_device_id": device.Id, "onu_serial_number": device.SerialNumber})
 	if err := oo.enableDisableOnuDevice(log.WithSpanFromContext(context.Background(), ctx), device, false); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // enableDisableOnuDevice to Disable onu or Enable onu
@@ -434,21 +435,21 @@
 }
 
 // EnablePort to Enable PON/NNI interface
-func (oo *OpenOLT) EnablePort(ctx context.Context, port *voltha.Port) (*empty.Empty, error) {
+func (oo *OpenOLT) EnablePort(ctx context.Context, port *voltha.Port) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "enable_port", log.Fields{"device-id": port.DeviceId, "port": port})
 	if err := oo.enableDisablePort(log.WithSpanFromContext(context.Background(), ctx), port.DeviceId, port, true); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DisablePort to Disable pon/nni interface
-func (oo *OpenOLT) DisablePort(ctx context.Context, port *voltha.Port) (*empty.Empty, error) {
+func (oo *OpenOLT) DisablePort(ctx context.Context, port *voltha.Port) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "disable_port", log.Fields{"device-id": port.DeviceId, "port": port})
 	if err := oo.enableDisablePort(log.WithSpanFromContext(context.Background(), ctx), port.DeviceId, port, false); err != nil {
 		return nil, err
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // enableDisablePort to Disable pon or Enable PON interface
@@ -476,13 +477,13 @@
 }
 
 // ChildDeviceLost deletes the ONU and its references from PONResources
-func (oo *OpenOLT) ChildDeviceLost(ctx context.Context, childDevice *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) ChildDeviceLost(ctx context.Context, childDevice *voltha.Device) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "Child-device-lost", log.Fields{"parent-device-id": childDevice.ParentId, "child-device-id": childDevice.Id})
 	if handler := oo.getDeviceHandler(childDevice.ParentId); handler != nil {
 		if err := handler.ChildDeviceLost(log.WithSpanFromContext(context.Background(), ctx), childDevice.ParentPortNo, childDevice.ProxyAddress.OnuId, childDevice.SerialNumber); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"parent-device-id": childDevice.ParentId}, nil).Log()
 }
@@ -602,25 +603,25 @@
  */
 
 // ProxyOmciRequests proxies an onu sw download OMCI request from the child adapter
-func (oo *OpenOLT) ProxyOmciRequests(ctx context.Context, request *ia.OmciMessages) (*empty.Empty, error) {
+func (oo *OpenOLT) ProxyOmciRequests(ctx context.Context, request *ia.OmciMessages) (*emptypb.Empty, error) {
 	if handler := oo.getDeviceHandler(request.ParentDeviceId); handler != nil {
 		if err := handler.ProxyOmciRequests(ctx, request); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("no-device-handler", log.Fields{"parent-device-id": request.ParentDeviceId, "child-device-id": request.ChildDeviceId}, nil).Log()
 }
 
 // ProxyOmciRequest proxies an OMCI request from the child adapter
-func (oo *OpenOLT) ProxyOmciRequest(ctx context.Context, request *ia.OmciMessage) (*empty.Empty, error) {
+func (oo *OpenOLT) ProxyOmciRequest(ctx context.Context, request *ia.OmciMessage) (*emptypb.Empty, error) {
 	logger.Debugw(ctx, "proxy-omci-request", log.Fields{"request": request})
 
 	if handler := oo.getDeviceHandler(request.ParentDeviceId); handler != nil {
 		if err := handler.ProxyOmciMessage(ctx, request); err != nil {
 			return nil, err
 		}
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 	return nil, olterrors.NewErrNotFound("no-device-handler", log.Fields{"parent-device-id": request.ParentDeviceId, "child-device-id": request.ChildDeviceId}, nil).Log()
 }
@@ -684,7 +685,7 @@
 }
 
 // UpdateDevice updates the address of the OLT for now
-func (oo *OpenOLT) UpdateDevice(ctx context.Context, updateDeviceReq *voltha.UpdateDevice) (*empty.Empty, error) {
+func (oo *OpenOLT) UpdateDevice(ctx context.Context, updateDeviceReq *voltha.UpdateDevice) (*emptypb.Empty, error) {
 	logger.Infow(ctx, "update-device", log.Fields{"device": updateDeviceReq})
 	if updateDeviceReq == nil {
 		return nil, fmt.Errorf("nil-device-config")
@@ -694,7 +695,7 @@
 	}
 	if handler := oo.getDeviceHandler(updateDeviceReq.Id); handler != nil {
 		go handler.UpdateDevice(context.Background(), updateDeviceReq)
-		return &empty.Empty{}, nil
+		return &emptypb.Empty{}, nil
 	}
 
 	return nil, olterrors.NewErrNotFound("device-handler", log.Fields{"device-id": updateDeviceReq.Id}, nil).Log()
@@ -712,7 +713,7 @@
 }
 
 // SetExtValue is unimplemented
-func (oo *OpenOLT) SetExtValue(context.Context, *ca.SetExtValueMessage) (*empty.Empty, error) {
+func (oo *OpenOLT) SetExtValue(context.Context, *ca.SetExtValueMessage) (*emptypb.Empty, error) {
 	return nil, olterrors.ErrNotImplemented
 }
 
@@ -722,12 +723,12 @@
 }
 
 // SuppressEvent unimplemented
-func (oo *OpenOLT) SuppressEvent(ctx context.Context, filter *voltha.EventFilter) (*empty.Empty, error) {
+func (oo *OpenOLT) SuppressEvent(ctx context.Context, filter *voltha.EventFilter) (*emptypb.Empty, error) {
 	return nil, olterrors.ErrNotImplemented
 }
 
 // UnSuppressEvent  unimplemented
-func (oo *OpenOLT) UnSuppressEvent(ctx context.Context, filter *voltha.EventFilter) (*empty.Empty, error) {
+func (oo *OpenOLT) UnSuppressEvent(ctx context.Context, filter *voltha.EventFilter) (*emptypb.Empty, error) {
 	return nil, olterrors.ErrNotImplemented
 }
 
@@ -787,11 +788,11 @@
 }
 
 // UpdateFlowsBulk is unimplemented
-func (oo *OpenOLT) UpdateFlowsBulk(ctx context.Context, flows *ca.BulkFlows) (*empty.Empty, error) {
+func (oo *OpenOLT) UpdateFlowsBulk(ctx context.Context, flows *ca.BulkFlows) (*emptypb.Empty, error) {
 	return nil, olterrors.ErrNotImplemented
 }
 
 // SelfTestDevice unimplemented
-func (oo *OpenOLT) SelfTestDevice(ctx context.Context, device *voltha.Device) (*empty.Empty, error) {
+func (oo *OpenOLT) SelfTestDevice(ctx context.Context, device *voltha.Device) (*emptypb.Empty, error) {
 	return nil, olterrors.ErrNotImplemented
 }
diff --git a/internal/pkg/core/openoltInterAdapter.go b/internal/pkg/core/openoltInterAdapter.go
index d27f600..84c6dd2 100644
--- a/internal/pkg/core/openoltInterAdapter.go
+++ b/internal/pkg/core/openoltInterAdapter.go
@@ -22,16 +22,17 @@
 	"fmt"
 	"time"
 
-	"github.com/golang/protobuf/ptypes/empty"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-protos/v5/go/common"
 	"github.com/opencord/voltha-protos/v5/go/health"
 	ia "github.com/opencord/voltha-protos/v5/go/inter_adapter"
 	oltia "github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service"
+	"google.golang.org/protobuf/types/known/emptypb"
 )
 
 // OpenOLTInterAdapter structure holds a reference to the oltAdapter
 type OpenOLTInterAdapter struct {
+	oltia.UnimplementedOltInterAdapterServiceServer
 	oltAdapter  *OpenOLT
 	exitChannel chan struct{}
 }
@@ -53,12 +54,12 @@
 }
 
 // ProxyOmciRequest proxies an OMCI request from the child adapter
-func (oo *OpenOLTInterAdapter) ProxyOmciRequest(ctx context.Context, request *ia.OmciMessage) (*empty.Empty, error) {
+func (oo *OpenOLTInterAdapter) ProxyOmciRequest(ctx context.Context, request *ia.OmciMessage) (*emptypb.Empty, error) {
 	return oo.oltAdapter.ProxyOmciRequest(ctx, request)
 }
 
 // ProxyOmciRequests proxies an OMCI request from the child adapter
-func (oo *OpenOLTInterAdapter) ProxyOmciRequests(ctx context.Context, request *ia.OmciMessages) (*empty.Empty, error) {
+func (oo *OpenOLTInterAdapter) ProxyOmciRequests(ctx context.Context, request *ia.OmciMessages) (*emptypb.Empty, error) {
 	return oo.oltAdapter.ProxyOmciRequests(ctx, request)
 }
 
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 134b095..958ab19 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -395,8 +395,9 @@
 	case tp_pb.Direction_DOWNSTREAM:
 		SchedCfg = f.techprofile.GetDsScheduler(sq.tpInst.(*tp_pb.TechProfileInstance))
 	}
-	TrafficSched := []*tp_pb.TrafficScheduler{f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), SchedCfg, TrafficShaping)}
-	TrafficSched[0].TechProfileId = sq.tpID
+	trafficSched := f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), SchedCfg, TrafficShaping)
+	trafficSched.TechProfileId = sq.tpID
+	TrafficSched := []*tp_pb.TrafficScheduler{trafficSched}
 
 	/* Lets make a simple assumption that if the meter-id is present on the KV store,
 	 * then the scheduler and queues configuration is applied on the OLT device
@@ -689,8 +690,9 @@
 
 	TrafficShaping := &tp_pb.TrafficShapingInfo{} // this info is not really useful for the agent during flow removal. Just use default values.
 
-	TrafficSched := []*tp_pb.TrafficScheduler{f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), SchedCfg, TrafficShaping)}
-	TrafficSched[0].TechProfileId = sq.tpID
+	trafficSched := f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), SchedCfg, TrafficShaping)
+	trafficSched.TechProfileId = sq.tpID
+	TrafficSched := []*tp_pb.TrafficScheduler{trafficSched}
 
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), f.deviceHandler.cfg.RPCTimeout)
 	if _, err = f.deviceHandler.Client.RemoveTrafficSchedulers(subCtx, &tp_pb.TrafficSchedulers{
@@ -759,8 +761,9 @@
 	}
 
 	TrafficShaping := &tp_pb.TrafficShapingInfo{} // this info is not really useful for the agent during flow removal. Just use default values.
-	TrafficSched := []*tp_pb.TrafficScheduler{f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), schedCfg, TrafficShaping)}
-	TrafficSched[0].TechProfileId = sq.tpID
+	trafficSched := f.techprofile.GetTrafficScheduler(sq.tpInst.(*tp_pb.TechProfileInstance), schedCfg, TrafficShaping)
+	trafficSched.TechProfileId = sq.tpID
+	TrafficSched := []*tp_pb.TrafficScheduler{trafficSched}
 
 	// Remove traffic queues. Ignore any errors, just log them.
 	if TrafficQueues, err := f.techprofile.GetTrafficQueues(ctx, sq.tpInst.(*tp_pb.TechProfileInstance), sq.direction); err != nil {
@@ -1074,16 +1077,16 @@
 	logicalFlow := flowContext.logicalFlow
 	logger.Infow(ctx, "adding-hsia-flow",
 		log.Fields{
-			"intf-id":     intfID,
-			"onu-id":      onuID,
-			"uni-id":      uniID,
-			"device-id":   f.deviceHandler.device.Id,
-			"classifier":  classifier,
-			"action":      action,
-			"direction":   direction,
-			"alloc-id":    allocID,
-			"gemport-id":  gemPortID,
-			"logicalflow": *logicalFlow})
+			"intf-id":    intfID,
+			"onu-id":     onuID,
+			"uni-id":     uniID,
+			"device-id":  f.deviceHandler.device.Id,
+			"classifier": classifier,
+			"action":     action,
+			"direction":  direction,
+			"alloc-id":   allocID,
+			"gemport-id": gemPortID,
+			"flow-id":    logicalFlow.Id})
 
 	present, err := f.resourceMgr.IsFlowOnKvStore(ctx, int32(onuID), logicalFlow.Id)
 	if present {
@@ -1105,7 +1108,7 @@
 	}
 	logger.Debugw(ctx, "created-classifier-proto",
 		log.Fields{
-			"classifier": *classifierProto,
+			"classifier": classifierProto.String(),
 			"device-id":  f.deviceHandler.device.Id})
 	actionProto, err := makeOpenOltActionField(action, classifier)
 	if err != nil {
@@ -1113,7 +1116,7 @@
 	}
 	logger.Debugw(ctx, "created-action-proto",
 		log.Fields{
-			"action":    *actionProto,
+			"action":    actionProto.String(),
 			"device-id": f.deviceHandler.device.Id})
 	networkIntfID, err := getNniIntfID(ctx, classifier, action)
 	if err != nil {
@@ -1149,7 +1152,7 @@
 	logger.Infow(ctx, "hsia-flow-added-to-device-successfully",
 		log.Fields{"direction": direction,
 			"device-id": f.deviceHandler.device.Id,
-			"flow":      flow,
+			"flow-id":   flow.FlowId,
 			"intf-id":   intfID,
 			"onu-id":    onuID})
 
@@ -1210,7 +1213,7 @@
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier}, err).Log()
 	}
-	logger.Debugw(ctx, "created-classifier-proto", log.Fields{"classifier": *classifierProto})
+	logger.Debugw(ctx, "created-classifier-proto", log.Fields{"classifier": classifierProto.String()})
 	actionProto, err := makeOpenOltActionField(action, classifier)
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"action": action}, err).Log()
@@ -1235,7 +1238,7 @@
 		GemportToAes:  flowContext.gemToAes,
 	}
 	if err := f.addFlowToDevice(ctx, logicalFlow, &dhcpFlow); err != nil {
-		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"dhcp-flow": dhcpFlow}, err).Log()
+		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"dhcp-flow-id": dhcpFlow.FlowId}, err).Log()
 	}
 	logger.Infow(ctx, "dhcp-ul-flow-added-to-device-successfully",
 		log.Fields{
@@ -1305,7 +1308,7 @@
 	}
 	logger.Debugw(ctx, "created-classifier-proto",
 		log.Fields{
-			"classifier": *classifierProto,
+			"classifier": classifierProto.String(),
 			"device-id":  f.deviceHandler.device.Id})
 	actionProto, err := makeOpenOltActionField(action, classifier)
 	if err != nil {
@@ -1332,7 +1335,7 @@
 	}
 
 	if err := f.addFlowToDevice(ctx, logicalFlow, &flow); err != nil {
-		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": flow, "device-id": f.deviceHandler.device.Id}, err).Log()
+		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow-id": flow.FlowId, "device-id": f.deviceHandler.device.Id}, err).Log()
 	}
 
 	return nil
@@ -1402,7 +1405,7 @@
 	}
 	logger.Debugw(ctx, "created-classifier-proto",
 		log.Fields{
-			"classifier": *classifierProto,
+			"classifier": classifierProto.String(),
 			"device-id":  f.deviceHandler.device.Id})
 	actionProto, err := makeOpenOltActionField(uplinkAction, uplinkClassifier)
 	if err != nil {
@@ -1410,7 +1413,7 @@
 	}
 	logger.Debugw(ctx, "created-action-proto",
 		log.Fields{
-			"action":    *actionProto,
+			"action":    actionProto.String(),
 			"device-id": f.deviceHandler.device.Id})
 	networkIntfID, err := getNniIntfID(ctx, classifier, action)
 	if err != nil {
@@ -1440,7 +1443,7 @@
 		GemportToAes:  flowContext.gemToAes,
 	}
 	if err := f.addFlowToDevice(ctx, logicalFlow, &upstreamFlow); err != nil {
-		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": upstreamFlow}, err).Log()
+		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow-id": upstreamFlow.FlowId}, err).Log()
 	}
 	logger.Infow(ctx, "ethType-ul-flow-added-to-device-successfully",
 		log.Fields{
@@ -1640,7 +1643,7 @@
 	}
 
 	logger.Debugw(ctx, "sending-flow-to-device-via-grpc", log.Fields{
-		"flow":      *deviceFlow,
+		"flow-id":   deviceFlow.FlowId,
 		"device-id": f.deviceHandler.device.Id,
 		"intf-id":   intfID})
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), f.deviceHandler.cfg.RPCTimeout)
@@ -1650,24 +1653,24 @@
 	st, _ := status.FromError(err)
 	if st.Code() == codes.AlreadyExists {
 		logger.Debug(ctx, "flow-already-exists", log.Fields{
-			"err":        err,
-			"deviceFlow": deviceFlow,
-			"device-id":  f.deviceHandler.device.Id,
-			"intf-id":    intfID})
+			"err":       err,
+			"flow-id":   deviceFlow.FlowId,
+			"device-id": f.deviceHandler.device.Id,
+			"intf-id":   intfID})
 		return nil
 	}
 
 	if err != nil {
 		logger.Errorw(ctx, "failed-to-add-flow-to-device",
 			log.Fields{"err": err,
-				"device-flow": deviceFlow,
-				"device-id":   f.deviceHandler.device.Id,
-				"intf-id":     intfID})
+				"flow-id":   deviceFlow.FlowId,
+				"device-id": f.deviceHandler.device.Id,
+				"intf-id":   intfID})
 		return err
 	}
 	logger.Infow(ctx, "flow-added-to-device-successfully ",
 		log.Fields{
-			"flow":      *deviceFlow,
+			"flow-id":   deviceFlow.FlowId,
 			"device-id": f.deviceHandler.device.Id,
 			"intf-id":   intfID})
 
@@ -1681,7 +1684,7 @@
 func (f *OpenOltFlowMgr) removeFlowFromDevice(ctx context.Context, deviceFlow *openoltpb2.Flow, ofFlowID uint64) error {
 	logger.Debugw(ctx, "sending-flow-to-device-via-grpc",
 		log.Fields{
-			"flow":      *deviceFlow,
+			"flow-id":   deviceFlow.FlowId,
 			"device-id": f.deviceHandler.device.Id})
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), f.deviceHandler.cfg.RPCTimeout)
 	_, err := f.deviceHandler.Client.FlowRemove(subCtx, deviceFlow)
@@ -1700,7 +1703,7 @@
 	}
 	logger.Infow(ctx, "flow-removed-from-device-successfully", log.Fields{
 		"of-flow-id": ofFlowID,
-		"flow":       *deviceFlow,
+		"flow-id":    deviceFlow.FlowId,
 		"device-id":  f.deviceHandler.device.Id,
 	})
 	return nil
@@ -1753,7 +1756,7 @@
 	}
 	logger.Debugw(ctx, "created-classifier-proto",
 		log.Fields{
-			"classifier": *classifierProto,
+			"classifier": classifierProto.String(),
 			"device-id":  f.deviceHandler.device.Id})
 	actionProto, err := makeOpenOltActionField(actionInfo, classifierInfo)
 	if err != nil {
@@ -1764,7 +1767,7 @@
 	}
 	logger.Debugw(ctx, "created-action-proto",
 		log.Fields{
-			"action":    *actionProto,
+			"action":    actionProto.String(),
 			"device-id": f.deviceHandler.device.Id})
 
 	downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
@@ -1782,7 +1785,7 @@
 	if err := f.addFlowToDevice(ctx, flow, &downstreamflow); err != nil {
 		return olterrors.NewErrFlowOp("add", flow.Id,
 			log.Fields{
-				"flow":      downstreamflow,
+				"flow-id":   downstreamflow.FlowId,
 				"device-id": f.deviceHandler.device.Id}, err)
 	}
 	logger.Infow(ctx, "lldp-trap-on-nni-flow-added-to-device-successfully",
@@ -1873,7 +1876,7 @@
 		TpInstancePath: tpPath,
 		GemPortId:      gemPortID,
 	}
-	logger.Debugw(ctx, "sending-gem-port-delete-to-openonu-adapter", log.Fields{"msg": *delGemPortMsg, "child-device-id": onuDev.deviceID})
+	logger.Debugw(ctx, "sending-gem-port-delete-to-openonu-adapter", log.Fields{"msg": delGemPortMsg.String(), "child-device-id": onuDev.deviceID})
 
 	if err := f.deviceHandler.sendDeleteGemPortToChildAdapter(ctx, onuDev.adapterEndpoint, delGemPortMsg); err != nil {
 		return olterrors.NewErrCommunication("send-delete-gem-port-to-onu-adapter",
@@ -1916,7 +1919,7 @@
 
 	logger.Debugw(ctx, "sending-tcont-delete-to-openonu-adapter",
 		log.Fields{
-			"msg":       *delTcontMsg,
+			"msg":       delTcontMsg.String(),
 			"device-id": f.deviceHandler.device.Id})
 
 	if err := f.deviceHandler.sendDeleteTContToChildAdapter(ctx, onuDev.adapterEndpoint, delTcontMsg); err != nil {
@@ -2131,7 +2134,7 @@
 	logger.Debugw(ctx, "clear-flow-from-resource-manager",
 		log.Fields{
 			"flowDirection": flowDirection,
-			"flow":          *flow,
+			"flow-id":       flow.Id,
 			"device-id":     f.deviceHandler.device.Id})
 
 	if flowDirection == Multicast {
@@ -2212,7 +2215,7 @@
 
 // RemoveFlow removes the flow from the device
 func (f *OpenOltFlowMgr) RemoveFlow(ctx context.Context, flow *ofp.OfpFlowStats) error {
-	logger.Debugw(ctx, "removing-flow", log.Fields{"flow": *flow})
+	logger.Debugw(ctx, "removing-flow", log.Fields{"flow-id": flow.Id})
 	var direction string
 	actionInfo := make(map[string]interface{})
 
@@ -2519,7 +2522,7 @@
 		Cookie:        flow.Cookie}
 
 	if err := f.addFlowToDevice(ctx, flow, &multicastFlow); err != nil {
-		return olterrors.NewErrFlowOp("add", flow.Id, log.Fields{"flow": multicastFlow}, err)
+		return olterrors.NewErrFlowOp("add", flow.Id, log.Fields{"flow-id": multicastFlow.FlowId}, err)
 	}
 	logger.Info(ctx, "multicast-flow-added-to-device-successfully")
 	// get cached group
@@ -2552,7 +2555,7 @@
 }
 
 // sendTPDownloadMsgToChild send payload
-func (f *OpenOltFlowMgr) sendTPDownloadMsgToChild(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, uni string, TpID uint32, tpInst tp_pb.TechProfileInstance) error {
+func (f *OpenOltFlowMgr) sendTPDownloadMsgToChild(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, uni string, TpID uint32, tpInst *tp_pb.TechProfileInstance) error {
 	onuDev, err := f.getOnuDevice(ctx, intfID, onuID)
 	if err != nil {
 		logger.Errorw(ctx, "couldnt-find-onu-child-device",
@@ -2569,9 +2572,9 @@
 		DeviceId:       onuDev.deviceID,
 		UniId:          uniID,
 		TpInstancePath: tpPath,
-		TechTpInstance: &ia.TechProfileDownloadMessage_TpInstance{TpInstance: &tpInst},
+		TechTpInstance: &ia.TechProfileDownloadMessage_TpInstance{TpInstance: tpInst},
 	}
-	logger.Debugw(ctx, "sending-load-tech-profile-request-to-brcm-onu-adapter", log.Fields{"tpDownloadMsg": *tpDownloadMsg})
+	logger.Debugw(ctx, "sending-load-tech-profile-request-to-brcm-onu-adapter", log.Fields{"tpDownloadMsg": tpDownloadMsg.String()})
 
 	err = f.deviceHandler.sendDownloadTechProfileToChildAdapter(ctx, onuDev.adapterEndpoint, tpDownloadMsg)
 	if err != nil {
@@ -2711,12 +2714,12 @@
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier}, err)
 	}
-	logger.Debugw(ctx, "created-classifier-proto", log.Fields{"classifier": *classifierProto})
+	logger.Debugw(ctx, "created-classifier-proto", log.Fields{"classifier": classifierProto.String()})
 	actionProto, err := makeOpenOltActionField(action, classifier)
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"action": action}, err)
 	}
-	logger.Debugw(ctx, "created-action-proto", log.Fields{"action": *actionProto})
+	logger.Debugw(ctx, "created-action-proto", log.Fields{"action": actionProto.String()})
 	downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
 		OnuId:         int32(onuID), // OnuId not required
 		UniId:         int32(uniID), // UniId not used
@@ -2731,7 +2734,7 @@
 		Cookie:        logicalFlow.Cookie,
 		PortNo:        portNo}
 	if err := f.addFlowToDevice(ctx, logicalFlow, &downstreamflow); err != nil {
-		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
+		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow-id": downstreamflow.FlowId}, err)
 	}
 	logger.Info(ctx, "trap-on-nni-flow-added–to-device-successfully")
 	return nil
@@ -2818,12 +2821,12 @@
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier}, err)
 	}
-	logger.Debugw(ctx, "created-classifier-proto-for-the-igmp-flow", log.Fields{"classifier": *classifierProto})
+	logger.Debugw(ctx, "created-classifier-proto-for-the-igmp-flow", log.Fields{"classifier": classifierProto.String()})
 	actionProto, err := makeOpenOltActionField(action, classifier)
 	if err != nil {
 		return olterrors.NewErrInvalidValue(log.Fields{"action": action}, err)
 	}
-	logger.Debugw(ctx, "created-action-proto-for-the-igmp-flow", log.Fields{"action": *actionProto})
+	logger.Debugw(ctx, "created-action-proto-for-the-igmp-flow", log.Fields{"action": actionProto.String()})
 	downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
 		OnuId:         int32(onuID), // OnuId not required
 		UniId:         int32(uniID), // UniId not used
@@ -2838,7 +2841,7 @@
 		Cookie:        logicalFlow.Cookie,
 		PortNo:        portNo}
 	if err := f.addFlowToDevice(ctx, logicalFlow, &downstreamflow); err != nil {
-		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
+		return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow-id": downstreamflow.FlowId}, err)
 	}
 	logger.Info(ctx, "igmp-trap-on-nni-flow-added-to-device-successfully")
 
@@ -3032,7 +3035,7 @@
 	}
 	// Send Techprofile download event to child device in go routine as it takes time
 	go func() {
-		if err := f.sendTPDownloadMsgToChild(ctx, intfID, onuID, uniID, uni, tpID, *(TpInst.(*tp_pb.TechProfileInstance))); err != nil {
+		if err := f.sendTPDownloadMsgToChild(ctx, intfID, onuID, uniID, uni, tpID, TpInst.(*tp_pb.TechProfileInstance)); err != nil {
 			logger.Warn(ctx, err)
 		}
 	}()
@@ -3044,7 +3047,7 @@
 	if tpInst.InstanceControl.Onu == "single-instance" && sq.direction == tp_pb.Direction_UPSTREAM {
 		tpInstances := f.techprofile.FindAllTpInstances(ctx, f.deviceHandler.device.Id, sq.tpID, sq.intfID, sq.onuID).([]tp_pb.TechProfileInstance)
 		for i := 0; i < len(tpInstances); i++ {
-			tpI := tpInstances[i]
+			tpI := &tpInstances[i]
 			if tpI.SubscriberIdentifier != tpInst.SubscriberIdentifier &&
 				tpI.UsScheduler.AllocId == tpInst.UsScheduler.AllocId {
 				logger.Debugw(ctx, "alloc-is-in-use-on-another-uni",
diff --git a/internal/pkg/core/openolt_groupmgr.go b/internal/pkg/core/openolt_groupmgr.go
index f52c481..9b40516 100644
--- a/internal/pkg/core/openolt_groupmgr.go
+++ b/internal/pkg/core/openolt_groupmgr.go
@@ -70,18 +70,18 @@
 		Command: openoltpb2.Group_SET_MEMBERS,
 		Action:  g.buildGroupAction(),
 	}
-	logger.Debugw(ctx, "sending-group-to-device", log.Fields{"groupToOlt": groupToOlt})
+	logger.Debugw(ctx, "sending-group-to-device", log.Fields{"group-id": groupToOlt.GroupId})
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), g.deviceHandler.cfg.RPCTimeout)
 	_, err := g.deviceHandler.Client.PerformGroupOperation(subCtx, &groupToOlt)
 	cancel()
 	if err != nil {
-		return olterrors.NewErrAdapter("add-group-operation-failed", log.Fields{"groupToOlt": groupToOlt}, err)
+		return olterrors.NewErrAdapter("add-group-operation-failed", log.Fields{"group-id": groupToOlt.GroupId}, err)
 	}
 	// group members not created yet. So let's store the group
 	if err := g.resourceMgr.AddFlowGroupToKVStore(ctx, group, true); err != nil {
 		return olterrors.NewErrPersistence("add", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
 	}
-	logger.Infow(ctx, "add-group-operation-performed-on-the-device-successfully ", log.Fields{"groupToOlt": groupToOlt})
+	logger.Infow(ctx, "add-group-operation-performed-on-the-device-successfully ", log.Fields{"group-id": groupToOlt.GroupId})
 	return nil
 }
 
@@ -95,19 +95,19 @@
 	groupToOlt := openoltpb2.Group{
 		GroupId: group.Desc.GroupId,
 	}
-	logger.Debugw(ctx, "deleting-group-from-device", log.Fields{"groupToOlt": groupToOlt})
+	logger.Debugw(ctx, "deleting-group-from-device", log.Fields{"group-id": groupToOlt.GroupId})
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), g.deviceHandler.cfg.RPCTimeout)
 	_, err := g.deviceHandler.Client.DeleteGroup(subCtx, &groupToOlt)
 	cancel()
 	if err != nil {
-		logger.Errorw(ctx, "delete-group-failed-on-dev", log.Fields{"groupToOlt": groupToOlt, "err": err})
-		return olterrors.NewErrAdapter("delete-group-operation-failed", log.Fields{"groupToOlt": groupToOlt}, err)
+		logger.Errorw(ctx, "delete-group-failed-on-dev", log.Fields{"group-id": groupToOlt.GroupId, "err": err})
+		return olterrors.NewErrAdapter("delete-group-operation-failed", log.Fields{"group-id": groupToOlt.GroupId}, err)
 	}
 	// remove group from the store
 	if err := g.resourceMgr.RemoveFlowGroupFromKVStore(ctx, group.Desc.GroupId, false); err != nil {
 		return olterrors.NewErrPersistence("delete", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
 	}
-	logger.Debugw(ctx, "delete-group-operation-performed-on-the-device-successfully ", log.Fields{"groupToOlt": groupToOlt})
+	logger.Debugw(ctx, "delete-group-operation-performed-on-the-device-successfully ", log.Fields{"group-id": groupToOlt.GroupId})
 	return nil
 }
 
diff --git a/makefiles/docker/include.mk b/makefiles/docker/include.mk
index cb29730..b57a515 100644
--- a/makefiles/docker/include.mk
+++ b/makefiles/docker/include.mk
@@ -17,7 +17,7 @@
 
 $(if $(DEBUG),$(warning ENTER))
 
-VOLTHA_TOOLS_VERSION ?= 3.1.4
+VOLTHA_TOOLS_VERSION ?= 3.2.1
 
 # ---------------------------
 # Macros: command refactoring
diff --git a/pkg/mocks/mockCoreClient.go b/pkg/mocks/mockCoreClient.go
index dca0e3b..b68f60a 100644
--- a/pkg/mocks/mockCoreClient.go
+++ b/pkg/mocks/mockCoreClient.go
@@ -23,13 +23,13 @@
 	"fmt"
 	"strings"
 
-	"github.com/golang/protobuf/ptypes/empty"
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 	"github.com/opencord/voltha-protos/v5/go/common"
 	ca "github.com/opencord/voltha-protos/v5/go/core_adapter"
 	"github.com/opencord/voltha-protos/v5/go/core_service"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 	"google.golang.org/grpc"
+	"google.golang.org/protobuf/types/known/emptypb"
 )
 
 // NewMockCoreClient creates a new mock core client for a given core service
@@ -48,46 +48,46 @@
 }
 
 // RegisterAdapter implements mock RegisterAdapter
-func (mcs MockCoreService) RegisterAdapter(ctx context.Context, in *ca.AdapterRegistration, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) RegisterAdapter(ctx context.Context, in *ca.AdapterRegistration, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if ctx == nil || in.Adapter == nil || in.DTypes == nil {
 		return nil, errors.New("registerAdapter func parameters cannot be nil")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DeviceUpdate implements mock DeviceUpdate
-func (mcs MockCoreService) DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.Id == "" {
 		return nil, errors.New("no Device")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // PortCreated implements mock PortCreated
-func (mcs MockCoreService) PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no deviceID")
 	}
 	if in.Type > 7 {
 		return nil, errors.New("invalid porttype")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // PortsStateUpdate implements mock PortsStateUpdate
-func (mcs MockCoreService) PortsStateUpdate(ctx context.Context, in *ca.PortStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) PortsStateUpdate(ctx context.Context, in *ca.PortStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no Device")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DeleteAllPorts implements mock DeleteAllPorts
-func (mcs MockCoreService) DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.Id == "" {
 		return nil, errors.New("no Device id")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // GetDevicePort implements mock GetDevicePort
@@ -110,16 +110,16 @@
 }
 
 // DeviceStateUpdate implements mock DeviceStateUpdate
-func (mcs MockCoreService) DeviceStateUpdate(ctx context.Context, in *ca.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) DeviceStateUpdate(ctx context.Context, in *ca.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no Device id")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DevicePMConfigUpdate implements mock DevicePMConfigUpdate
-func (mcs MockCoreService) DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mcs MockCoreService) DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // ChildDeviceDetected implements mock ChildDeviceDetected
@@ -136,19 +136,19 @@
 }
 
 // ChildDevicesLost implements mock ChildDevicesLost
-func (mcs MockCoreService) ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.Id == "" {
 		return nil, errors.New("no device id")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // ChildDevicesDetected implements mock ChildDevicesDetected
-func (mcs MockCoreService) ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.Id == "" {
 		return nil, errors.New("no device id")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // GetDevice implements mock GetDevice
@@ -204,27 +204,27 @@
 }
 
 // SendPacketIn implements mock SendPacketIn
-func (mcs MockCoreService) SendPacketIn(ctx context.Context, in *ca.PacketIn, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) SendPacketIn(ctx context.Context, in *ca.PacketIn, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no Device ID")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // DeviceReasonUpdate implements mock DeviceReasonUpdate
-func (mcs MockCoreService) DeviceReasonUpdate(ctx context.Context, in *ca.DeviceReason, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) DeviceReasonUpdate(ctx context.Context, in *ca.DeviceReason, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no Device ID")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // PortStateUpdate implements mock PortStateUpdate
-func (mcs MockCoreService) PortStateUpdate(ctx context.Context, in *ca.PortState, opts ...grpc.CallOption) (*empty.Empty, error) {
+func (mcs MockCoreService) PortStateUpdate(ctx context.Context, in *ca.PortState, opts ...grpc.CallOption) (*emptypb.Empty, error) {
 	if in.DeviceId == "" {
 		return nil, errors.New("no Device")
 	}
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 // GetHealthStatus implements mock GetHealthStatus
@@ -235,8 +235,8 @@
 // Additional API found in the Core - unused?
 
 // ReconcileChildDevices implements mock ReconcileChildDevices
-func (mcs MockCoreService) ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mcs MockCoreService) ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // GetChildDeviceWithProxyAddress implements mock GetChildDeviceWithProxyAddress
@@ -250,11 +250,11 @@
 }
 
 // ChildrenStateUpdate implements mock ChildrenStateUpdate
-func (mcs MockCoreService) ChildrenStateUpdate(ctx context.Context, in *ca.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mcs MockCoreService) ChildrenStateUpdate(ctx context.Context, in *ca.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // UpdateImageDownload implements mock UpdateImageDownload
-func (mcs MockCoreService) UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mcs MockCoreService) UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
diff --git a/pkg/mocks/mockKVClient.go b/pkg/mocks/mockKVClient.go
index fabe4a8..67685b4 100644
--- a/pkg/mocks/mockKVClient.go
+++ b/pkg/mocks/mockKVClient.go
@@ -94,7 +94,7 @@
 				Flags:   0,
 				MeterId: 1,
 			}
-			str, _ := json.Marshal(meterConfig)
+			str, _ := json.Marshal(&meterConfig)
 			return kvstore.NewKVPair(key, string(str), "mock", 3000, 1), nil
 		}
 		if strings.Contains(key, MeterConfig) {
diff --git a/pkg/mocks/mockOnuInterAdapterClient.go b/pkg/mocks/mockOnuInterAdapterClient.go
index ee740e8..0a05ff3 100644
--- a/pkg/mocks/mockOnuInterAdapterClient.go
+++ b/pkg/mocks/mockOnuInterAdapterClient.go
@@ -20,11 +20,11 @@
 import (
 	"context"
 
-	"github.com/golang/protobuf/ptypes/empty"
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 	ia "github.com/opencord/voltha-protos/v5/go/inter_adapter"
 	"github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service"
 	"google.golang.org/grpc"
+	"google.golang.org/protobuf/types/known/emptypb"
 )
 
 // NewMockChildAdapterClient create a mock child adapter client
@@ -39,28 +39,28 @@
 }
 
 // OnuIndication implements mock OnuIndication
-func (mos *MockOnuInterAdapterService) OnuIndication(ctx context.Context, in *ia.OnuIndicationMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mos *MockOnuInterAdapterService) OnuIndication(ctx context.Context, in *ia.OnuIndicationMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // OmciResponse implements mock OmciResponse
-func (mos *MockOnuInterAdapterService) OmciResponse(ctx context.Context, in *ia.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mos *MockOnuInterAdapterService) OmciResponse(ctx context.Context, in *ia.OmciMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // DownloadTechProfile implements mock DownloadTechProfile
-func (mos *MockOnuInterAdapterService) DownloadTechProfile(ctx context.Context, in *ia.TechProfileDownloadMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mos *MockOnuInterAdapterService) DownloadTechProfile(ctx context.Context, in *ia.TechProfileDownloadMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // DeleteGemPort implements mock DeleteGemPort
-func (mos *MockOnuInterAdapterService) DeleteGemPort(ctx context.Context, in *ia.DeleteGemPortMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mos *MockOnuInterAdapterService) DeleteGemPort(ctx context.Context, in *ia.DeleteGemPortMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // DeleteTCont implements mock DeleteTCont
-func (mos *MockOnuInterAdapterService) DeleteTCont(ctx context.Context, in *ia.DeleteTcontMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (mos *MockOnuInterAdapterService) DeleteTCont(ctx context.Context, in *ia.DeleteTcontMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // GetHealthStatus implements mock GetHealthStatus
diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
deleted file mode 100644
index 0ef27d3..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/any/any.proto
-
-package any
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/any.proto.
-
-type Any = anypb.Any
-
-var File_github_com_golang_protobuf_ptypes_any_any_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = []byte{
-	0x0a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x79, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x2b, 0x5a, 0x29,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65,
-	0x73, 0x2f, 0x61, 0x6e, 0x79, 0x3b, 0x61, 0x6e, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_any_any_proto_init() }
-func file_github_com_golang_protobuf_ptypes_any_any_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_any_any_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_any_any_proto = out.File
-	file_github_com_golang_protobuf_ptypes_any_any_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_any_any_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_any_any_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go b/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
deleted file mode 100644
index 16686a6..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/empty/empty.proto
-
-package empty
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	emptypb "google.golang.org/protobuf/types/known/emptypb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/empty.proto.
-
-type Empty = emptypb.Empty
-
-var File_github_com_golang_protobuf_ptypes_empty_empty_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x3b, 0x65, 0x6d,
-	0x70, 0x74, 0x79, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() }
-func file_github_com_golang_protobuf_ptypes_empty_empty_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_empty_empty_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_empty_empty_proto = out.File
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_empty_empty_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
deleted file mode 100644
index a76f807..0000000
--- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
-
-package timestamp
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-	reflect "reflect"
-)
-
-// Symbols defined in public import of google/protobuf/timestamp.proto.
-
-type Timestamp = timestamppb.Timestamp
-
-var File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto protoreflect.FileDescriptor
-
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = []byte{
-	0x0a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2f, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x37,
-	0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x70, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x3b, 0x74, 0x69,
-	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x50, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = []interface{}{}
-var file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() }
-func file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_init() {
-	if File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes,
-		DependencyIndexes: file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs,
-	}.Build()
-	File_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto = out.File
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_rawDesc = nil
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_goTypes = nil
-	file_github_com_golang_protobuf_ptypes_timestamp_timestamp_proto_depIdxs = nil
-}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore/etcdclient.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore/etcdclient.go
index 6828700..b1080ef 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore/etcdclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore/etcdclient.go
@@ -36,8 +36,10 @@
 )
 
 const (
-	defaultMaxPoolCapacity = 1000 // Default size of an Etcd Client pool
-	defaultMaxPoolUsage    = 100  // Maximum concurrent request an Etcd Client is allowed to process
+	defaultMaxPoolCapacity         = 1000            // Default size of an Etcd Client pool
+	defaultMaxPoolUsage            = 100             // Maximum concurrent request an Etcd Client is allowed to process
+	defaultMaxAttempts             = 10              // Default number of attempts to retry an operation
+	defaultOperationContextTimeout = 3 * time.Second // Default context timeout for operations
 )
 
 // EtcdClient represents the Etcd KV store client
@@ -152,35 +154,49 @@
 	defer c.pool.Put(client)
 
 	attempt := 0
-
 startLoop:
 	for {
-		resp, err := client.Get(ctx, key)
+		retryCtx, cancel := context.WithTimeout(ctx, defaultOperationContextTimeout)
+		resp, err := client.Get(retryCtx, key)
+		cancel()
+		if attempt >= defaultMaxAttempts {
+			logger.Warnw(ctx, "get-retries-exceeded", log.Fields{"key": key, "error": err, "attempt": attempt})
+			return nil, err
+		}
 		if err != nil {
 			switch err {
 			case context.Canceled:
+				// Check if the parent context was cancelled, if so don't retry
+				if ctx.Err() != nil {
+					logger.Warnw(ctx, "parent-context-cancelled", log.Fields{"error": err})
+					return nil, err
+				}
+				// Otherwise retry
 				logger.Warnw(ctx, "context-cancelled", log.Fields{"error": err})
 			case context.DeadlineExceeded:
-				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "context": ctx})
+				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "attempt": attempt})
 			case v3rpcTypes.ErrEmptyKey:
 				logger.Warnw(ctx, "etcd-client-error", log.Fields{"error": err})
+				return nil, err
 			case v3rpcTypes.ErrLeaderChanged,
 				v3rpcTypes.ErrGRPCNoLeader,
 				v3rpcTypes.ErrTimeout,
 				v3rpcTypes.ErrTimeoutDueToLeaderFail,
 				v3rpcTypes.ErrTimeoutDueToConnectionLost:
 				// Retry for these server errors
-				attempt += 1
-				if er := backoff(ctx, attempt); er != nil {
-					logger.Warnw(ctx, "get-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
-					return nil, err
-				}
-				logger.Warnw(ctx, "retrying-get", log.Fields{"key": key, "error": err, "attempt": attempt})
-				goto startLoop
-			default:
 				logger.Warnw(ctx, "etcd-server-error", log.Fields{"error": err})
+			default:
+				logger.Warnw(ctx, "etcd-unknown-error", log.Fields{"error": err})
 			}
-			return nil, err
+
+			// Common retry logic for all error cases
+			attempt++
+			if er := backoff(ctx, attempt); er != nil {
+				logger.Warnw(ctx, "get-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
+				return nil, err
+			}
+			logger.Warnw(ctx, "retrying-get", log.Fields{"key": key, "error": err, "attempt": attempt})
+			goto startLoop
 		}
 
 		for _, ev := range resp.Kvs {
@@ -246,7 +262,6 @@
 // accepts only a string as a value for a put operation. Timeout defines how long the function will
 // wait for a response
 func (c *EtcdClient) Put(ctx context.Context, key string, value interface{}) error {
-
 	// Validate that we can convert value to a string as etcd API expects a string
 	var val string
 	var err error
@@ -263,32 +278,47 @@
 	attempt := 0
 startLoop:
 	for {
-		_, err = client.Put(ctx, key, val)
+		retryCtx, cancel := context.WithTimeout(ctx, defaultOperationContextTimeout)
+		_, err = client.Put(retryCtx, key, val)
+		cancel()
+		if attempt >= defaultMaxAttempts {
+			logger.Warnw(ctx, "put-retries-exceeded", log.Fields{"key": key, "error": err, "attempt": attempt})
+			return err
+		}
 		if err != nil {
 			switch err {
 			case context.Canceled:
+				// Check if the parent context was cancelled, if so don't retry
+				if ctx.Err() != nil {
+					logger.Warnw(ctx, "parent-context-cancelled", log.Fields{"error": err})
+					return err
+				}
+				// Otherwise retry
 				logger.Warnw(ctx, "context-cancelled", log.Fields{"error": err})
 			case context.DeadlineExceeded:
-				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "context": ctx})
+				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "attempt": attempt})
 			case v3rpcTypes.ErrEmptyKey:
 				logger.Warnw(ctx, "etcd-client-error", log.Fields{"error": err})
+				return err
 			case v3rpcTypes.ErrLeaderChanged,
 				v3rpcTypes.ErrGRPCNoLeader,
 				v3rpcTypes.ErrTimeout,
 				v3rpcTypes.ErrTimeoutDueToLeaderFail,
 				v3rpcTypes.ErrTimeoutDueToConnectionLost:
 				// Retry for these server errors
-				attempt += 1
-				if er := backoff(ctx, attempt); er != nil {
-					logger.Warnw(ctx, "put-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
-					return err
-				}
-				logger.Warnw(ctx, "retrying-put", log.Fields{"key": key, "error": err, "attempt": attempt})
-				goto startLoop
-			default:
 				logger.Warnw(ctx, "etcd-server-error", log.Fields{"error": err})
+			default:
+				logger.Warnw(ctx, "etcd-unknown-error", log.Fields{"error": err})
 			}
-			return err
+
+			// Common retry logic for all error cases
+			attempt++
+			if er := backoff(ctx, attempt); er != nil {
+				logger.Warnw(ctx, "put-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
+				return err
+			}
+			logger.Warnw(ctx, "retrying-put", log.Fields{"key": key, "error": err, "attempt": attempt})
+			goto startLoop
 		}
 		return nil
 	}
@@ -306,32 +336,47 @@
 	attempt := 0
 startLoop:
 	for {
-		_, err = client.Delete(ctx, key)
+		retryCtx, cancel := context.WithTimeout(ctx, defaultOperationContextTimeout)
+		_, err = client.Delete(retryCtx, key)
+		cancel()
+		if attempt >= defaultMaxAttempts {
+			logger.Warnw(ctx, "delete-retries-exceeded", log.Fields{"key": key, "error": err, "attempt": attempt})
+			return err
+		}
 		if err != nil {
 			switch err {
 			case context.Canceled:
+				// Check if the parent context was cancelled, if so don't retry
+				if ctx.Err() != nil {
+					logger.Warnw(ctx, "parent-context-cancelled", log.Fields{"error": err})
+					return err
+				}
+				// Otherwise retry
 				logger.Warnw(ctx, "context-cancelled", log.Fields{"error": err})
 			case context.DeadlineExceeded:
-				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "context": ctx})
+				logger.Warnw(ctx, "context-deadline-exceeded", log.Fields{"error": err, "attempt": attempt})
 			case v3rpcTypes.ErrEmptyKey:
 				logger.Warnw(ctx, "etcd-client-error", log.Fields{"error": err})
+				return err
 			case v3rpcTypes.ErrLeaderChanged,
 				v3rpcTypes.ErrGRPCNoLeader,
 				v3rpcTypes.ErrTimeout,
 				v3rpcTypes.ErrTimeoutDueToLeaderFail,
 				v3rpcTypes.ErrTimeoutDueToConnectionLost:
 				// Retry for these server errors
-				attempt += 1
-				if er := backoff(ctx, attempt); er != nil {
-					logger.Warnw(ctx, "delete-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
-					return err
-				}
-				logger.Warnw(ctx, "retrying-delete", log.Fields{"key": key, "error": err, "attempt": attempt})
-				goto startLoop
-			default:
 				logger.Warnw(ctx, "etcd-server-error", log.Fields{"error": err})
+			default:
+				logger.Warnw(ctx, "etcd-unknown-error", log.Fields{"error": err})
 			}
-			return err
+
+			// Common retry logic for all error cases
+			attempt++
+			if er := backoff(ctx, attempt); er != nil {
+				logger.Warnw(ctx, "delete-retries-failed", log.Fields{"key": key, "error": er, "attempt": attempt})
+				return err
+			}
+			logger.Warnw(ctx, "retrying-delete", log.Fields{"key": key, "error": err, "attempt": attempt})
+			goto startLoop
 		}
 		logger.Debugw(ctx, "key(s)-deleted", log.Fields{"key": key})
 		return nil
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/events_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/events_proxy.go
index 1eb2409..7d08e51 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/events_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/events/events_proxy.go
@@ -144,7 +144,7 @@
 		logger.Errorw(ctx, "Failed to send device event to KAFKA bus", log.Fields{"device-event": deviceEvent})
 		return err
 	}
-	logger.Infow(ctx, "Successfully sent device event KAFKA", log.Fields{"key": key, "Id": event.Header.Id, "Category": event.Header.Category,
+	logger.Debugw(ctx, "Successfully sent device event KAFKA", log.Fields{"key": key, "Id": event.Header.Id, "Category": event.Header.Category,
 		"SubCategory": event.Header.SubCategory, "Type": event.Header.Type, "TypeVersion": event.Header.TypeVersion,
 		"ReportedTs": event.Header.ReportedTs, "ResourceId": deviceEvent.ResourceId, "Context": deviceEvent.Context,
 		"DeviceEventName": deviceEvent.DeviceEventName})
@@ -172,7 +172,7 @@
 		logger.Errorw(ctx, "Failed to send kpi event to KAFKA bus", log.Fields{"device-event": kpiEvent})
 		return err
 	}
-	logger.Infow(ctx, "Successfully sent kpi event to KAFKA", log.Fields{"Id": event.Header.Id, "Category": event.Header.Category,
+	logger.Debugw(ctx, "Successfully sent kpi event to KAFKA", log.Fields{"Id": event.Header.Id, "Category": event.Header.Category,
 		"SubCategory": event.Header.SubCategory, "Type": event.Header.Type, "TypeVersion": event.Header.TypeVersion,
 		"ReportedTs": event.Header.ReportedTs, "KpiEventName": "STATS_EVENT"})
 
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
index 8a6333f..7b65b4e 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/flows/flow_utils.go
@@ -27,9 +27,10 @@
 	"sync"
 
 	"github.com/cevaris/ordered_map"
-	"github.com/golang/protobuf/proto"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	ofp "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	"google.golang.org/protobuf/encoding/prototext"
+	"google.golang.org/protobuf/proto"
 )
 
 var (
@@ -1019,7 +1020,7 @@
 		bandStats = append(bandStats, band)
 	}
 	meter.Stats.BandStats = bandStats
-	logger.Debugw(ctx, "Allocated meter entry", log.Fields{"meter": *meter})
+	logger.Debugw(ctx, "Allocated meter entry", log.Fields{"meter": meter})
 	return meter
 
 }
@@ -1040,8 +1041,8 @@
 
 func MkOxmFields(matchFields []ofp.OfpOxmField) []*ofp.OfpOxmField {
 	oxmFields := make([]*ofp.OfpOxmField, 0)
-	for _, matchField := range matchFields {
-		oxmField := ofp.OfpOxmField{OxmClass: ofp.OfpOxmClass_OFPXMC_OPENFLOW_BASIC, Field: matchField.Field}
+	for i := range matchFields {
+		oxmField := ofp.OfpOxmField{OxmClass: ofp.OfpOxmClass_OFPXMC_OPENFLOW_BASIC, Field: matchFields[i].Field}
 		oxmFields = append(oxmFields, &oxmField)
 	}
 	return oxmFields
@@ -1278,7 +1279,7 @@
 	for kv, ok := iter(); ok; kv, ok = iter() {
 		if protoMsg, isMsg := kv.Value.(*ofp.OfpFlowStats); isMsg {
 			buffer.WriteString("\nFlow:\n")
-			buffer.WriteString(proto.MarshalTextString(protoMsg))
+			buffer.WriteString(prototext.Format(protoMsg))
 			buffer.WriteString("\n")
 		}
 	}
@@ -1286,7 +1287,7 @@
 	for kv, ok := iter(); ok; kv, ok = iter() {
 		if protoMsg, isMsg := kv.Value.(*ofp.OfpGroupEntry); isMsg {
 			buffer.WriteString("\nGroup:\n")
-			buffer.WriteString(proto.MarshalTextString(protoMsg))
+			buffer.WriteString(prototext.Format(protoMsg))
 			buffer.WriteString("\n")
 		}
 	}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
index 6d8a93c..5fcc8dc 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/client.go
@@ -37,7 +37,7 @@
 	"github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
-	rpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha"
+	"google.golang.org/grpc/credentials/insecure"
 	"google.golang.org/grpc/status"
 )
 
@@ -291,7 +291,7 @@
 
 	// Get a new client using reflection. The server can implement any grpc service, but it
 	// needs to also implement the "StartKeepAliveStream" API
-	grpcReflectClient := grpcreflect.NewClient(ctx, rpb.NewServerReflectionClient(conn))
+	grpcReflectClient := grpcreflect.NewClientAuto(ctx, conn)
 	if grpcReflectClient == nil {
 		logger.Errorw(ctx, "grpc-reflect-client-nil", log.Fields{"api-endpoint": c.serverEndPoint, "client": c.clientEndpoint})
 		return
@@ -621,8 +621,8 @@
 	if len(retry_interceptor) > 0 {
 		interceptor_opts = append(interceptor_opts, retry_interceptor...)
 	}
-	conn, err := grpc.Dial(c.serverEndPoint,
-		grpc.WithInsecure(),
+	conn, err := grpc.NewClient(c.serverEndPoint,
+		grpc.WithTransportCredentials(insecure.NewCredentials()),
 		grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(grpcRecvMsgSizeLimit*1024*1024)),
 		grpc.WithStreamInterceptor(grpc_middleware.ChainStreamClient(
 			grpc_opentracing.StreamClientInterceptor(grpc_opentracing.WithTracer(log.ActiveTracerProxy{})),
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
index 5c78dff..e695102 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/grpc/mock_core_service.go
@@ -21,17 +21,18 @@
 	"strconv"
 	"time"
 
-	"github.com/golang/protobuf/ptypes/empty"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-protos/v5/go/common"
 	ca "github.com/opencord/voltha-protos/v5/go/core_adapter"
 	"github.com/opencord/voltha-protos/v5/go/core_service"
 	"github.com/opencord/voltha-protos/v5/go/health"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
+	"google.golang.org/protobuf/types/known/emptypb"
 )
 
 // MockCoreServiceHandler implements the methods in the core service
 type MockCoreServiceHandler struct {
+	core_service.UnimplementedCoreServiceServer
 	exitChannel chan struct{}
 }
 
@@ -48,25 +49,25 @@
 	close(handler.exitChannel)
 }
 
-func (handler *MockCoreServiceHandler) RegisterAdapter(ctx context.Context, reg *ca.AdapterRegistration) (*empty.Empty, error) {
+func (handler *MockCoreServiceHandler) RegisterAdapter(ctx context.Context, reg *ca.AdapterRegistration) (*emptypb.Empty, error) {
 	//logger.Debugw(ctx, "registration-received", log.Fields{"input": reg})
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) DeviceUpdate(context.Context, *voltha.Device) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) DeviceUpdate(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) PortCreated(context.Context, *voltha.Port) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) PortCreated(context.Context, *voltha.Port) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) PortsStateUpdate(context.Context, *ca.PortStateFilter) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) PortsStateUpdate(context.Context, *ca.PortStateFilter) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) DeleteAllPorts(context.Context, *common.ID) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) DeleteAllPorts(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 func (handler *MockCoreServiceHandler) GetDevicePort(context.Context, *ca.PortFilter) (*voltha.Port, error) {
@@ -77,25 +78,25 @@
 	return &voltha.Ports{}, nil
 }
 
-func (handler *MockCoreServiceHandler) DeviceStateUpdate(context.Context, *ca.DeviceStateFilter) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) DeviceStateUpdate(context.Context, *ca.DeviceStateFilter) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) DevicePMConfigUpdate(context.Context, *voltha.PmConfigs) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) DevicePMConfigUpdate(context.Context, *voltha.PmConfigs) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 func (handler *MockCoreServiceHandler) ChildDeviceDetected(context.Context, *ca.DeviceDiscovery) (*voltha.Device, error) {
 	return &voltha.Device{}, nil
 }
 
-func (handler *MockCoreServiceHandler) ChildDevicesLost(context.Context, *common.ID) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) ChildDevicesLost(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) ChildDevicesDetected(context.Context, *common.ID) (*empty.Empty, error) {
+func (handler *MockCoreServiceHandler) ChildDevicesDetected(context.Context, *common.ID) (*emptypb.Empty, error) {
 	time.Sleep(50 * time.Millisecond)
-	return &empty.Empty{}, nil
+	return &emptypb.Empty{}, nil
 }
 
 func (handler *MockCoreServiceHandler) GetDevice(ctx context.Context, id *common.ID) (*voltha.Device, error) {
@@ -116,21 +117,21 @@
 	return &voltha.Devices{}, nil
 }
 
-func (handler *MockCoreServiceHandler) SendPacketIn(context.Context, *ca.PacketIn) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) SendPacketIn(context.Context, *ca.PacketIn) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) DeviceReasonUpdate(context.Context, *ca.DeviceReason) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) DeviceReasonUpdate(context.Context, *ca.DeviceReason) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) PortStateUpdate(context.Context, *ca.PortState) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) PortStateUpdate(context.Context, *ca.PortState) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 // Additional API found in the Core - unused?
-func (handler *MockCoreServiceHandler) ReconcileChildDevices(context.Context, *common.ID) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) ReconcileChildDevices(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 func (handler *MockCoreServiceHandler) GetChildDeviceWithProxyAddress(context.Context, *voltha.Device_ProxyAddress) (*voltha.Device, error) {
@@ -141,12 +142,12 @@
 	return &voltha.Ports{}, nil
 }
 
-func (handler *MockCoreServiceHandler) ChildrenStateUpdate(context.Context, *ca.DeviceStateFilter) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) ChildrenStateUpdate(context.Context, *ca.DeviceStateFilter) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
-func (handler *MockCoreServiceHandler) UpdateImageDownload(context.Context, *voltha.ImageDownload) (*empty.Empty, error) {
-	return &empty.Empty{}, nil
+func (handler *MockCoreServiceHandler) UpdateImageDownload(context.Context, *voltha.ImageDownload) (*emptypb.Empty, error) {
+	return &emptypb.Empty{}, nil
 }
 
 func (handler *MockCoreServiceHandler) GetHealthStatus(stream core_service.CoreService_GetHealthStatusServer) error {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/client.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/client.go
index 77c529b..5b77001 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/client.go
@@ -25,7 +25,7 @@
 	"context"
 	"time"
 
-	"github.com/golang/protobuf/proto"
+	"google.golang.org/protobuf/proto"
 )
 
 const (
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/sarama_client.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/sarama_client.go
index 75025f2..c47efe9 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/sarama_client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/sarama_client.go
@@ -26,9 +26,9 @@
 
 	"github.com/IBM/sarama"
 	"github.com/eapache/go-resiliency/breaker"
-	"github.com/golang/protobuf/proto"
 	"github.com/google/uuid"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
+	"google.golang.org/protobuf/proto"
 )
 
 // consumerChannels represents one or more consumers listening on a kafka topic.  Once a message is received on that
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/utils.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/utils.go
index fba621f..622513f 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/kafka/utils.go
@@ -21,9 +21,9 @@
 	"strings"
 	"time"
 
-	"github.com/golang/protobuf/ptypes/any"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-lib-go/v7/pkg/probe"
+	"google.golang.org/protobuf/types/known/anypb"
 )
 
 const (
@@ -59,10 +59,10 @@
 type RpcResponse struct {
 	MType RpcMType
 	Err   error
-	Reply *any.Any
+	Reply *anypb.Any
 }
 
-func NewResponse(messageType RpcMType, err error, body *any.Any) *RpcResponse {
+func NewResponse(messageType RpcMType, err error, body *anypb.Any) *RpcResponse {
 	return &RpcResponse{
 		MType: messageType,
 		Err:   err,
diff --git a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/techprofile/tech_profile.go b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/techprofile/tech_profile.go
index c3e202d..1bfb964 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v7/pkg/techprofile/tech_profile.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v7/pkg/techprofile/tech_profile.go
@@ -17,7 +17,6 @@
 package techprofile
 
 import (
-	"bytes"
 	"context"
 	"errors"
 	"fmt"
@@ -27,12 +26,12 @@
 	"sync"
 	"time"
 
-	"github.com/golang/protobuf/jsonpb"
-	"github.com/golang/protobuf/proto"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	tp_pb "github.com/opencord/voltha-protos/v5/go/tech_profile"
+	"google.golang.org/protobuf/encoding/protojson"
+	"google.golang.org/protobuf/proto"
 )
 
 // Interface to pon resource manager APIs
@@ -284,7 +283,7 @@
 	if t.resourceMgr.GetTechnology() == epon {
 		tp := t.getEponTPFromKVStore(ctx, tpID)
 		if tp != nil {
-			if err := t.validateInstanceControlAttr(ctx, *tp.InstanceControl); err != nil {
+			if err := t.validateInstanceControlAttr(ctx, tp.InstanceControl); err != nil {
 				logger.Error(ctx, "invalid-instance-ctrl-attr-using-default-tp")
 				tp = t.getDefaultEponProfile(ctx)
 			} else {
@@ -318,7 +317,7 @@
 
 		logger.Infow(ctx, "epon-tp-instance-created-successfully",
 			log.Fields{"tpID": tpID, "uni": uniPortName, "intfID": intfID})
-		if err := t.addResourceInstanceToKVStore(ctx, tpID, uniPortName, resInst); err != nil {
+		if err := t.addResourceInstanceToKVStore(ctx, tpID, uniPortName, &resInst); err != nil {
 			logger.Errorw(ctx, "failed-to-update-resource-instance-to-kv-store--freeing-up-resources", log.Fields{"err": err, "tpID": tpID, "uniPortName": uniPortName})
 			allocIDs := make([]uint32, 0)
 			allocIDs = append(allocIDs, resInst.AllocId)
@@ -334,7 +333,7 @@
 	} else {
 		tp := t.getTPFromKVStore(ctx, tpID)
 		if tp != nil {
-			if err := t.validateInstanceControlAttr(ctx, *tp.InstanceControl); err != nil {
+			if err := t.validateInstanceControlAttr(ctx, tp.InstanceControl); err != nil {
 				logger.Error(ctx, "invalid-instance-ctrl-attr--using-default-tp")
 				tp = t.getDefaultTechProfile(ctx)
 			} else {
@@ -369,7 +368,7 @@
 
 		logger.Infow(ctx, "tp-instance-created-successfully",
 			log.Fields{"tpID": tpID, "uni": uniPortName, "intfID": intfID})
-		if err := t.addResourceInstanceToKVStore(ctx, tpID, uniPortName, resInst); err != nil {
+		if err := t.addResourceInstanceToKVStore(ctx, tpID, uniPortName, &resInst); err != nil {
 			logger.Errorw(ctx, "failed-to-update-resource-instance-to-kv-store--freeing-up-resources", log.Fields{"err": err, "tpID": tpID, "uniPortName": uniPortName})
 			allocIDs := make([]uint32, 0)
 			allocIDs = append(allocIDs, resInst.AllocId)
@@ -523,22 +522,22 @@
 	if tech == xgspon || tech == xgpon || tech == gpon {
 		t.tpInstanceMapLock.RLock()
 		defer t.tpInstanceMapLock.RUnlock()
-		tpInstancesTech := make([]tp_pb.TechProfileInstance, 0)
+		tpInstancesTech := make([]*tp_pb.TechProfileInstance, 0)
 		for i := 0; i < MaxUniPortPerOnu; i++ {
 			key := onuTpInstancePathSuffix + fmt.Sprintf("/uni-{%d}", i)
 			if tpInst, ok := t.tpInstanceMap[key]; ok {
-				tpInstancesTech = append(tpInstancesTech, *tpInst)
+				tpInstancesTech = append(tpInstancesTech, tpInst)
 			}
 		}
 		return tpInstancesTech
 	} else if tech == epon {
 		t.epontpInstanceMapLock.RLock()
 		defer t.epontpInstanceMapLock.RUnlock()
-		tpInstancesTech := make([]tp_pb.EponTechProfileInstance, 0)
+		tpInstancesTech := make([]*tp_pb.EponTechProfileInstance, 0)
 		for i := 0; i < MaxUniPortPerOnu; i++ {
 			key := onuTpInstancePathSuffix + fmt.Sprintf("/uni-{%d}", i)
 			if tpInst, ok := t.eponTpInstanceMap[key]; ok {
-				tpInstancesTech = append(tpInstancesTech, *tpInst)
+				tpInstancesTech = append(tpInstancesTech, tpInst)
 			}
 		}
 		return tpInstancesTech
@@ -698,7 +697,7 @@
 	return nil, fmt.Errorf("downstream gem port traffic queue creation failed due to unsupported direction %s", direction)
 }
 
-func (t *TechProfileMgr) validateInstanceControlAttr(ctx context.Context, instCtl tp_pb.InstanceControl) error {
+func (t *TechProfileMgr) validateInstanceControlAttr(ctx context.Context, instCtl *tp_pb.InstanceControl) error {
 	if instCtl.Onu != "single-instance" && instCtl.Onu != "multi-instance" {
 		logger.Errorw(ctx, "invalid-onu-instance-control-attribute", log.Fields{"onu-inst": instCtl.Onu})
 		return errors.New("invalid-onu-instance-ctl-attr")
@@ -1144,11 +1143,11 @@
 		(isMulticastAttrValue == "True" || isMulticastAttrValue == "true" || isMulticastAttrValue == "TRUE")
 }
 
-func (t *TechProfileMgr) addResourceInstanceToKVStore(ctx context.Context, tpID uint32, uniPortName string, resInst tp_pb.ResourceInstance) error {
-	logger.Debugw(ctx, "adding-resource-instance-to-kv-store", log.Fields{"tpID": tpID, "uniPortName": uniPortName, "resInst": resInst})
-	val, err := proto.Marshal(&resInst)
+func (t *TechProfileMgr) addResourceInstanceToKVStore(ctx context.Context, tpID uint32, uniPortName string, resInst *tp_pb.ResourceInstance) error {
+	logger.Debugw(ctx, "adding-resource-instance-to-kv-store", log.Fields{"tpID": tpID, "uniPortName": uniPortName})
+	val, err := proto.Marshal(resInst)
 	if err != nil {
-		logger.Errorw(ctx, "failed-to-marshall-resource-instance", log.Fields{"err": err, "tpID": tpID, "uniPortName": uniPortName, "resInst": resInst})
+		logger.Errorw(ctx, "failed-to-marshall-resource-instance", log.Fields{"err": err, "tpID": tpID, "uniPortName": uniPortName})
 		return err
 	}
 	err = t.config.ResourceInstanceKVBacked.Put(ctx, fmt.Sprintf("%s/%d/%s", t.resourceMgr.GetTechnology(), tpID, uniPortName), val)
@@ -1184,13 +1183,12 @@
 		/* Backend will return Value in string format,needs to be converted to []byte before unmarshal*/
 		if value, err := kvstore.ToByte(kvresult.Value); err == nil {
 			lTp := &tp_pb.TechProfile{}
-			reader := bytes.NewReader(value)
-			if err = jsonpb.Unmarshal(reader, lTp); err != nil {
+			if err = protojson.Unmarshal(value, lTp); err != nil {
 				logger.Errorw(ctx, "error-unmarshalling-tp-from-kv-store", log.Fields{"err": err, "tpID": tpID, "error": err})
 				return nil
 			}
 
-			logger.Debugw(ctx, "success-fetched-tp-from-kv-store", log.Fields{"tpID": tpID, "value": *lTp})
+			logger.Debugw(ctx, "success-fetched-tp-from-kv-store", log.Fields{"tpID": tpID})
 			return lTp
 		} else {
 			logger.Errorw(ctx, "error-decoding-tp", log.Fields{"err": err, "tpID": tpID})
@@ -1221,13 +1219,12 @@
 		/* Backend will return Value in string format,needs to be converted to []byte before unmarshal*/
 		if value, err := kvstore.ToByte(kvresult.Value); err == nil {
 			lEponTp := &tp_pb.EponTechProfile{}
-			reader := bytes.NewReader(value)
-			if err = jsonpb.Unmarshal(reader, lEponTp); err != nil {
+			if err = protojson.Unmarshal(value, lEponTp); err != nil {
 				logger.Errorw(ctx, "error-unmarshalling-epon-tp-from-kv-store", log.Fields{"err": err, "tpID": tpID, "error": err})
 				return nil
 			}
 
-			logger.Debugw(ctx, "success-fetching-epon-tp-from-kv-store", log.Fields{"tpID": tpID, "value": *lEponTp})
+			logger.Debugw(ctx, "success-fetching-epon-tp-from-kv-store", log.Fields{"tpID": tpID})
 			return lEponTp
 		}
 	}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
index a910872..a1486d3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service.pb.go
@@ -1,1644 +1,222 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/adapter_service.proto
 
 package adapter_service
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	core_adapter "github.com/opencord/voltha-protos/v5/go/core_adapter"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	omci "github.com/opencord/voltha-protos/v5/go/omci"
 	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+var File_voltha_protos_adapter_service_proto protoreflect.FileDescriptor
 
-func init() {
-	proto.RegisterFile("voltha_protos/adapter_service.proto", fileDescriptor_038e6ec340f67698)
-}
+const file_voltha_protos_adapter_service_proto_rawDesc = "" +
+	"\n" +
+	"#voltha_protos/adapter_service.proto\x12\x0fadapter_service\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\x1a voltha_protos/core_adapter.proto\x1a\x1avoltha_protos/device.proto\x1a\x1evoltha_protos/extensions.proto\x1a\x1avoltha_protos/health.proto\x1a\x1avoltha_protos/voltha.proto\x1a\x1dvoltha_protos/omci_test.proto\x1a\x1avoltha_protos/events.proto2\xf2\x15\n" +
+	"\x0eAdapterService\x12?\n" +
+	"\x0fGetHealthStatus\x12\x12.common.Connection\x1a\x14.health.HealthStatus(\x010\x01\x125\n" +
+	"\vAdoptDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x129\n" +
+	"\x0fReconcileDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x126\n" +
+	"\fDeleteDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x127\n" +
+	"\rDisableDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x128\n" +
+	"\x0eReEnableDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x126\n" +
+	"\fRebootDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x128\n" +
+	"\x0eSelfTestDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x12B\n" +
+	"\x10GetOfpDeviceInfo\x12\x0e.device.Device\x1a\x1e.core_adapter.SwitchCapability\x129\n" +
+	"\x0fChildDeviceLost\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x122\n" +
+	"\n" +
+	"EnablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\x123\n" +
+	"\vDisablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\x12B\n" +
+	"\x0fUpdateFlowsBulk\x12\x17.core_adapter.BulkFlows\x1a\x16.google.protobuf.Empty\x12R\n" +
+	"\x18UpdateFlowsIncrementally\x12\x1e.core_adapter.IncrementalFlows\x1a\x16.google.protobuf.Empty\x12@\n" +
+	"\rSendPacketOut\x12\x17.core_adapter.PacketOut\x1a\x16.google.protobuf.Empty\x12E\n" +
+	"\x0eUpdatePmConfig\x12\x1b.core_adapter.PmConfigsInfo\x1a\x16.google.protobuf.Empty\x12S\n" +
+	"\x10DownloadOnuImage\x12\".device.DeviceImageDownloadRequest\x1a\x1b.device.DeviceImageResponse\x12L\n" +
+	"\x11GetOnuImageStatus\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\x12O\n" +
+	"\x14AbortOnuImageUpgrade\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\x12-\n" +
+	"\fGetOnuImages\x12\n" +
+	".common.ID\x1a\x11.device.OnuImages\x12K\n" +
+	"\x10ActivateOnuImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\x12I\n" +
+	"\x0eCommitOnuImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\x12O\n" +
+	"\rDownloadImage\x12\".core_adapter.ImageDownloadMessage\x1a\x15.device.ImageDownload\"\x03\x88\x02\x01\x12X\n" +
+	"\x16GetImageDownloadStatus\x12\".core_adapter.ImageDownloadMessage\x1a\x15.device.ImageDownload\"\x03\x88\x02\x01\x12U\n" +
+	"\x13CancelImageDownload\x12\".core_adapter.ImageDownloadMessage\x1a\x15.device.ImageDownload\"\x03\x88\x02\x01\x12U\n" +
+	"\x13ActivateImageUpdate\x12\".core_adapter.ImageDownloadMessage\x1a\x15.device.ImageDownload\"\x03\x88\x02\x01\x12S\n" +
+	"\x11RevertImageUpdate\x12\".core_adapter.ImageDownloadMessage\x1a\x15.device.ImageDownload\"\x03\x88\x02\x01\x12;\n" +
+	"\rStartOmciTest\x12\x16.core_adapter.OMCITest\x1a\x12.omci.TestResponse\x12J\n" +
+	"\rSimulateAlarm\x12\".core_adapter.SimulateAlarmMessage\x1a\x15.common.OperationResp\x12;\n" +
+	"\rSuppressEvent\x12\x12.event.EventFilter\x1a\x16.google.protobuf.Empty\x12=\n" +
+	"\x0fUnSuppressEvent\x12\x12.event.EventFilter\x1a\x16.google.protobuf.Empty\x12H\n" +
+	"\vGetExtValue\x12 .core_adapter.GetExtValueMessage\x1a\x17.extension.ReturnValues\x12G\n" +
+	"\vSetExtValue\x12 .core_adapter.SetExtValueMessage\x1a\x16.google.protobuf.Empty\x12U\n" +
+	"\x0eGetSingleValue\x12 .extension.SingleGetValueRequest\x1a!.extension.SingleGetValueResponse\x12U\n" +
+	"\x0eSetSingleValue\x12 .extension.SingleSetValueRequest\x1a!.extension.SingleSetValueResponse\x12:\n" +
+	"\x10DisableOnuDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x129\n" +
+	"\x0fEnableOnuDevice\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x12Q\n" +
+	"\x16DisableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\x12P\n" +
+	"\x15EnableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\x12<\n" +
+	"\fUpdateDevice\x12\x14.device.UpdateDevice\x1a\x16.google.protobuf.EmptyBt\n" +
+	"#org.opencord.voltha.adapter_serviceB\x14VolthaAdapterServiceZ7github.com/opencord/voltha-protos/v5/go/adapter_serviceb\x06proto3"
 
-var fileDescriptor_038e6ec340f67698 = []byte{
-	// 918 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0xcd, 0x6e, 0xdb, 0x46,
-	0x10, 0xc7, 0x91, 0x16, 0xe8, 0x61, 0x6c, 0x4b, 0xf6, 0xd6, 0x76, 0x0a, 0x1a, 0x4d, 0xd3, 0xe4,
-	0xd2, 0x4b, 0xa8, 0x22, 0x41, 0x92, 0x7e, 0xa2, 0xd5, 0x57, 0x14, 0xb5, 0x4e, 0xa9, 0x8a, 0x51,
-	0x50, 0xf4, 0x62, 0xac, 0xa8, 0x11, 0x45, 0x64, 0xb9, 0xcb, 0xee, 0x0e, 0xe5, 0xe4, 0x0d, 0xfa,
-	0xbc, 0x7d, 0x82, 0x82, 0xe4, 0x52, 0x12, 0x15, 0x29, 0x89, 0x6c, 0xdf, 0xc4, 0xf9, 0xef, 0xfc,
-	0x66, 0x76, 0x66, 0xbf, 0x04, 0xf7, 0xe7, 0x4a, 0xd0, 0x8c, 0x5f, 0x24, 0x5a, 0x91, 0x32, 0x0d,
-	0x3e, 0xe1, 0x09, 0xa1, 0xbe, 0x30, 0xa8, 0xe7, 0x51, 0x80, 0x6e, 0x6e, 0x66, 0xf5, 0x35, 0xb3,
-	0x73, 0x16, 0x2a, 0x15, 0x0a, 0x6c, 0xe4, 0xf2, 0x38, 0x9d, 0x36, 0x30, 0x4e, 0xe8, 0x6d, 0x31,
-	0xda, 0x71, 0xaa, 0xc8, 0x40, 0xc5, 0xb1, 0x92, 0x56, 0xbb, 0xbb, 0xae, 0x69, 0xbc, 0xb0, 0xf0,
-	0xcd, 0xde, 0x13, 0x5c, 0xe6, 0xe1, 0xdc, 0xa9, 0x6a, 0xf8, 0x86, 0x50, 0x9a, 0x48, 0x49, 0xb3,
-	0xd9, 0x77, 0x86, 0x5c, 0xd0, 0x6c, 0xb3, 0x56, 0x7c, 0x59, 0xed, 0xcb, 0xaa, 0xa6, 0xe2, 0x20,
-	0xba, 0x20, 0x34, 0xb4, 0xd9, 0x15, 0xe7, 0x28, 0xc9, 0x86, 0x7c, 0xf8, 0xdf, 0x09, 0xd4, 0x9a,
-	0xc5, 0x04, 0xfc, 0xa2, 0x38, 0xec, 0x17, 0xa8, 0xf7, 0x90, 0x9e, 0xe7, 0xc1, 0x7d, 0xe2, 0x94,
-	0x1a, 0xc6, 0x5c, 0x5b, 0x85, 0xb6, 0x92, 0x12, 0x03, 0x8a, 0x94, 0x74, 0x8e, 0x5d, 0x9b, 0xdf,
-	0xea, 0xc8, 0x6f, 0x6e, 0x7d, 0x7b, 0x8b, 0x3d, 0x86, 0xbd, 0xe6, 0x44, 0x25, 0xd4, 0xc9, 0xe7,
-	0xce, 0x6a, 0xae, 0x2d, 0x42, 0xf1, 0xed, 0x9c, 0xba, 0x45, 0xf5, 0xdd, 0xb2, 0xfa, 0x6e, 0x37,
-	0xab, 0x3e, 0xfb, 0x1e, 0xea, 0x43, 0x0c, 0x94, 0x0c, 0x22, 0x81, 0x3b, 0xba, 0x3e, 0x81, 0xfd,
-	0x0e, 0x0a, 0xa4, 0x5d, 0xfd, 0x9e, 0xc2, 0x41, 0x27, 0x32, 0x7c, 0xbc, 0x73, 0xc0, 0xef, 0xa0,
-	0x36, 0xc4, 0xae, 0xbc, 0x82, 0xe7, 0x13, 0xd8, 0x1f, 0xe2, 0x58, 0x29, 0xda, 0x3d, 0xa2, 0x8f,
-	0x62, 0xfa, 0x12, 0xcd, 0xae, 0x9e, 0x2d, 0x38, 0xec, 0x21, 0x79, 0xd3, 0xa4, 0x18, 0xd7, 0x97,
-	0x53, 0xf5, 0x8e, 0xef, 0x1d, 0xb7, 0xb2, 0x94, 0xfd, 0xcb, 0x88, 0x82, 0x59, 0x9b, 0x27, 0x7c,
-	0x1c, 0x89, 0xa8, 0xe8, 0x4d, 0x7b, 0x16, 0x89, 0x49, 0x31, 0xfc, 0x5c, 0x19, 0xfa, 0xe8, 0xf0,
-	0x0f, 0x01, 0x8a, 0x42, 0x0d, 0x94, 0x26, 0xb6, 0x5f, 0x7a, 0x65, 0x5f, 0x5b, 0x7d, 0x1e, 0xc1,
-	0x9e, 0xed, 0xcb, 0x0e, 0x4e, 0x2d, 0xa8, 0x8f, 0x92, 0x09, 0x27, 0x7c, 0x26, 0xd4, 0xa5, 0x69,
-	0xa5, 0xe2, 0x35, 0xbb, 0x5d, 0x9d, 0x56, 0x66, 0xcb, 0xc5, 0xad, 0x8c, 0x21, 0x7c, 0xb1, 0xc2,
-	0xe8, 0xcb, 0x40, 0x63, 0x8c, 0x92, 0xb8, 0x10, 0x6f, 0xd9, 0x5a, 0x8d, 0x56, 0xc4, 0xf7, 0x33,
-	0x7f, 0x85, 0x03, 0x1f, 0xe5, 0x64, 0xc0, 0x83, 0xd7, 0x48, 0x5e, 0x4a, 0xeb, 0x59, 0x2d, 0x84,
-	0xad, 0x84, 0x2e, 0xd4, 0x8a, 0xac, 0x06, 0x71, 0x5b, 0xc9, 0x69, 0x14, 0xb2, 0xb3, 0x35, 0x84,
-	0xb5, 0x9b, 0xac, 0xb9, 0x5b, 0x31, 0x3e, 0x1c, 0x76, 0xd4, 0xa5, 0x14, 0x8a, 0x4f, 0x3c, 0x99,
-	0xf6, 0x63, 0x1e, 0x22, 0xbb, 0x57, 0xed, 0x62, 0x6e, 0x2c, 0x07, 0x0d, 0xf1, 0x9f, 0x14, 0x0d,
-	0x39, 0x67, 0x1b, 0xc6, 0x0c, 0xd1, 0x24, 0x4a, 0x1a, 0x64, 0xe7, 0x70, 0x94, 0xad, 0x2e, 0xcb,
-	0xb3, 0xe7, 0x85, 0xb3, 0xd1, 0xe3, 0x23, 0x68, 0x1e, 0x1c, 0x37, 0xc7, 0x4a, 0x2f, 0x78, 0xa3,
-	0x24, 0xd4, 0x7c, 0x82, 0x57, 0x07, 0x3e, 0x80, 0xfd, 0x95, 0xf4, 0x0c, 0x83, 0xf2, 0x24, 0xeb,
-	0x77, 0x9c, 0xa3, 0xd2, 0x71, 0x29, 0xff, 0x0e, 0x87, 0xcd, 0x80, 0xa2, 0x39, 0x27, 0x5c, 0x94,
-	0xe8, 0xca, 0xb1, 0xfb, 0x50, 0x6b, 0xab, 0x38, 0x8e, 0xe8, 0xfa, 0x28, 0x0f, 0x0e, 0xca, 0xae,
-	0x94, 0x7d, 0xab, 0x2e, 0xc6, 0xd5, 0xbe, 0xbd, 0x40, 0x63, 0x78, 0x88, 0xce, 0x49, 0x49, 0xac,
-	0xa8, 0xf7, 0x3e, 0xfd, 0xf7, 0x93, 0x5b, 0xec, 0x2f, 0x38, 0xed, 0x21, 0x55, 0x04, 0xdb, 0xbb,
-	0xeb, 0x92, 0x47, 0xf0, 0x79, 0x9b, 0xcb, 0x00, 0x45, 0x45, 0xbb, 0x09, 0x6c, 0xd9, 0x19, 0xbb,
-	0x32, 0xb2, 0x0d, 0x71, 0x6d, 0xac, 0x0f, 0x47, 0x43, 0x9c, 0xa3, 0xa6, 0x9b, 0x84, 0xfe, 0x08,
-	0x07, 0x3e, 0x71, 0x4d, 0x5e, 0x1c, 0x44, 0xd9, 0x81, 0xcd, 0x4e, 0xab, 0x40, 0xef, 0x45, 0xbb,
-	0x9f, 0xd9, 0x1d, 0xe6, 0x66, 0x77, 0xb5, 0x9b, 0xfd, 0x5e, 0xb4, 0xfa, 0x37, 0x38, 0xf0, 0xa3,
-	0x38, 0x15, 0x9c, 0xb0, 0x29, 0xb8, 0x8e, 0xd7, 0xb3, 0xa9, 0x88, 0xcb, 0x6c, 0xec, 0xb2, 0xf6,
-	0x12, 0xd4, 0x3c, 0xbb, 0x9f, 0x33, 0x5e, 0x9e, 0x48, 0x9a, 0x24, 0x1a, 0x8d, 0xe9, 0x66, 0xb7,
-	0x3e, 0x63, 0x6e, 0x7e, 0xfb, 0xbb, 0xf9, 0xd7, 0xb3, 0x48, 0x10, 0xea, 0xad, 0xc7, 0xc5, 0xcf,
-	0x50, 0x1f, 0xc9, 0xab, 0xbb, 0x3f, 0x87, 0xbd, 0x1e, 0x52, 0xf7, 0x0d, 0xbd, 0xe2, 0x22, 0x45,
-	0x76, 0xb7, 0x3a, 0x8b, 0x15, 0xa9, 0x9c, 0xc3, 0x6d, 0x77, 0xf1, 0x20, 0x72, 0x87, 0x48, 0xa9,
-	0x96, 0xb9, 0x6c, 0x58, 0x0f, 0xf6, 0xfc, 0xed, 0x24, 0xff, 0x5d, 0xd2, 0xb6, 0x94, 0x46, 0x50,
-	0xeb, 0x21, 0xf9, 0x91, 0x0c, 0x05, 0x96, 0xac, 0x65, 0xcc, 0xc2, 0xde, 0xc3, 0x82, 0x55, 0x6e,
-	0xcb, 0xaf, 0xdf, 0x33, 0xc2, 0x76, 0x6c, 0x94, 0x5d, 0xcd, 0x1f, 0xc0, 0xfa, 0x1f, 0xc4, 0xfa,
-	0xeb, 0xd8, 0x1f, 0xe0, 0xd0, 0x5e, 0x82, 0x9e, 0x4c, 0x77, 0x7f, 0x4b, 0x15, 0x97, 0xee, 0xee,
-	0xae, 0x7f, 0xc2, 0xe9, 0x32, 0xac, 0x8f, 0x3a, 0xe2, 0xe2, 0x8f, 0x34, 0x1e, 0xa3, 0x66, 0x5f,
-	0xad, 0x9c, 0x97, 0xab, 0x82, 0x27, 0xbd, 0xf3, 0x97, 0x03, 0x25, 0xb7, 0x22, 0x07, 0x70, 0xb2,
-	0xc8, 0xe6, 0x66, 0x88, 0x3f, 0xc1, 0x7e, 0xb1, 0x57, 0xed, 0xe4, 0x8e, 0x4b, 0xd0, 0xaa, 0x75,
-	0x9b, 0x77, 0x8b, 0xe0, 0xbe, 0xd2, 0xa1, 0xab, 0x12, 0x94, 0x81, 0xd2, 0x13, 0xd7, 0x3e, 0xa6,
-	0xd7, 0xfe, 0x25, 0xb4, 0x8e, 0x5f, 0xe5, 0xf6, 0xea, 0xf3, 0xf8, 0xef, 0xa7, 0x61, 0x44, 0xb3,
-	0x74, 0x9c, 0x6d, 0xb8, 0x46, 0x49, 0xb0, 0xcf, 0xf1, 0x07, 0xe5, 0xe3, 0xfc, 0x71, 0x23, 0x54,
-	0xeb, 0xff, 0x45, 0xc6, 0x9f, 0xe5, 0xea, 0xa3, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x06, 0x1b,
-	0x18, 0x90, 0xb3, 0x0c, 0x00, 0x00,
+var file_voltha_protos_adapter_service_proto_goTypes = []any{
+	(*common.Connection)(nil),                 // 0: common.Connection
+	(*voltha.Device)(nil),                     // 1: device.Device
+	(*voltha.Port)(nil),                       // 2: device.Port
+	(*core_adapter.BulkFlows)(nil),            // 3: core_adapter.BulkFlows
+	(*core_adapter.IncrementalFlows)(nil),     // 4: core_adapter.IncrementalFlows
+	(*core_adapter.PacketOut)(nil),            // 5: core_adapter.PacketOut
+	(*core_adapter.PmConfigsInfo)(nil),        // 6: core_adapter.PmConfigsInfo
+	(*voltha.DeviceImageDownloadRequest)(nil), // 7: device.DeviceImageDownloadRequest
+	(*voltha.DeviceImageRequest)(nil),         // 8: device.DeviceImageRequest
+	(*common.ID)(nil),                         // 9: common.ID
+	(*core_adapter.ImageDownloadMessage)(nil), // 10: core_adapter.ImageDownloadMessage
+	(*core_adapter.OMCITest)(nil),             // 11: core_adapter.OMCITest
+	(*core_adapter.SimulateAlarmMessage)(nil), // 12: core_adapter.SimulateAlarmMessage
+	(*voltha.EventFilter)(nil),                // 13: event.EventFilter
+	(*core_adapter.GetExtValueMessage)(nil),   // 14: core_adapter.GetExtValueMessage
+	(*core_adapter.SetExtValueMessage)(nil),   // 15: core_adapter.SetExtValueMessage
+	(*extension.SingleGetValueRequest)(nil),   // 16: extension.SingleGetValueRequest
+	(*extension.SingleSetValueRequest)(nil),   // 17: extension.SingleSetValueRequest
+	(*voltha.OnuSerialNumberOnOLTPon)(nil),    // 18: device.OnuSerialNumberOnOLTPon
+	(*voltha.UpdateDevice)(nil),               // 19: device.UpdateDevice
+	(*health.HealthStatus)(nil),               // 20: health.HealthStatus
+	(*emptypb.Empty)(nil),                     // 21: google.protobuf.Empty
+	(*core_adapter.SwitchCapability)(nil),     // 22: core_adapter.SwitchCapability
+	(*voltha.DeviceImageResponse)(nil),        // 23: device.DeviceImageResponse
+	(*voltha.OnuImages)(nil),                  // 24: device.OnuImages
+	(*voltha.ImageDownload)(nil),              // 25: device.ImageDownload
+	(*omci.TestResponse)(nil),                 // 26: omci.TestResponse
+	(*common.OperationResp)(nil),              // 27: common.OperationResp
+	(*extension.ReturnValues)(nil),            // 28: extension.ReturnValues
+	(*extension.SingleGetValueResponse)(nil),  // 29: extension.SingleGetValueResponse
+	(*extension.SingleSetValueResponse)(nil),  // 30: extension.SingleSetValueResponse
 }
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// AdapterServiceClient is the client API for AdapterService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type AdapterServiceClient interface {
-	// GetHealthStatus is used by an AdapterService client to verify connectivity
-	// to the gRPC server hosting the AdapterService service
-	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (AdapterService_GetHealthStatusClient, error)
-	// Device
-	AdoptDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	ReconcileDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeleteDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	ReEnableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	RebootDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	SelfTestDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetOfpDeviceInfo(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*core_adapter.SwitchCapability, error)
-	ChildDeviceLost(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Ports
-	EnablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Flows
-	UpdateFlowsBulk(ctx context.Context, in *core_adapter.BulkFlows, opts ...grpc.CallOption) (*empty.Empty, error)
-	UpdateFlowsIncrementally(ctx context.Context, in *core_adapter.IncrementalFlows, opts ...grpc.CallOption) (*empty.Empty, error)
-	//Packets
-	SendPacketOut(ctx context.Context, in *core_adapter.PacketOut, opts ...grpc.CallOption) (*empty.Empty, error)
-	// PM
-	UpdatePmConfig(ctx context.Context, in *core_adapter.PmConfigsInfo, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Image
-	DownloadOnuImage(ctx context.Context, in *voltha.DeviceImageDownloadRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
-	GetOnuImageStatus(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
-	AbortOnuImageUpgrade(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
-	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.OnuImages, error)
-	ActivateOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
-	CommitOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
-	// Deprecated Image APIs
-	DownloadImage(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
-	GetImageDownloadStatus(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
-	CancelImageDownload(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
-	ActivateImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
-	RevertImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
-	// Tests
-	StartOmciTest(ctx context.Context, in *core_adapter.OMCITest, opts ...grpc.CallOption) (*omci.TestResponse, error)
-	SimulateAlarm(ctx context.Context, in *core_adapter.SimulateAlarmMessage, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Events
-	SuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	UnSuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get/Set
-	GetExtValue(ctx context.Context, in *core_adapter.GetExtValueMessage, opts ...grpc.CallOption) (*extension.ReturnValues, error)
-	SetExtValue(ctx context.Context, in *core_adapter.SetExtValueMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetSingleValue(ctx context.Context, in *extension.SingleGetValueRequest, opts ...grpc.CallOption) (*extension.SingleGetValueResponse, error)
-	SetSingleValue(ctx context.Context, in *extension.SingleSetValueRequest, opts ...grpc.CallOption) (*extension.SingleSetValueResponse, error)
-	DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	UpdateDevice(ctx context.Context, in *voltha.UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error)
-}
-
-type adapterServiceClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewAdapterServiceClient(cc *grpc.ClientConn) AdapterServiceClient {
-	return &adapterServiceClient{cc}
+var file_voltha_protos_adapter_service_proto_depIdxs = []int32{
+	0,  // 0: adapter_service.AdapterService.GetHealthStatus:input_type -> common.Connection
+	1,  // 1: adapter_service.AdapterService.AdoptDevice:input_type -> device.Device
+	1,  // 2: adapter_service.AdapterService.ReconcileDevice:input_type -> device.Device
+	1,  // 3: adapter_service.AdapterService.DeleteDevice:input_type -> device.Device
+	1,  // 4: adapter_service.AdapterService.DisableDevice:input_type -> device.Device
+	1,  // 5: adapter_service.AdapterService.ReEnableDevice:input_type -> device.Device
+	1,  // 6: adapter_service.AdapterService.RebootDevice:input_type -> device.Device
+	1,  // 7: adapter_service.AdapterService.SelfTestDevice:input_type -> device.Device
+	1,  // 8: adapter_service.AdapterService.GetOfpDeviceInfo:input_type -> device.Device
+	1,  // 9: adapter_service.AdapterService.ChildDeviceLost:input_type -> device.Device
+	2,  // 10: adapter_service.AdapterService.EnablePort:input_type -> device.Port
+	2,  // 11: adapter_service.AdapterService.DisablePort:input_type -> device.Port
+	3,  // 12: adapter_service.AdapterService.UpdateFlowsBulk:input_type -> core_adapter.BulkFlows
+	4,  // 13: adapter_service.AdapterService.UpdateFlowsIncrementally:input_type -> core_adapter.IncrementalFlows
+	5,  // 14: adapter_service.AdapterService.SendPacketOut:input_type -> core_adapter.PacketOut
+	6,  // 15: adapter_service.AdapterService.UpdatePmConfig:input_type -> core_adapter.PmConfigsInfo
+	7,  // 16: adapter_service.AdapterService.DownloadOnuImage:input_type -> device.DeviceImageDownloadRequest
+	8,  // 17: adapter_service.AdapterService.GetOnuImageStatus:input_type -> device.DeviceImageRequest
+	8,  // 18: adapter_service.AdapterService.AbortOnuImageUpgrade:input_type -> device.DeviceImageRequest
+	9,  // 19: adapter_service.AdapterService.GetOnuImages:input_type -> common.ID
+	8,  // 20: adapter_service.AdapterService.ActivateOnuImage:input_type -> device.DeviceImageRequest
+	8,  // 21: adapter_service.AdapterService.CommitOnuImage:input_type -> device.DeviceImageRequest
+	10, // 22: adapter_service.AdapterService.DownloadImage:input_type -> core_adapter.ImageDownloadMessage
+	10, // 23: adapter_service.AdapterService.GetImageDownloadStatus:input_type -> core_adapter.ImageDownloadMessage
+	10, // 24: adapter_service.AdapterService.CancelImageDownload:input_type -> core_adapter.ImageDownloadMessage
+	10, // 25: adapter_service.AdapterService.ActivateImageUpdate:input_type -> core_adapter.ImageDownloadMessage
+	10, // 26: adapter_service.AdapterService.RevertImageUpdate:input_type -> core_adapter.ImageDownloadMessage
+	11, // 27: adapter_service.AdapterService.StartOmciTest:input_type -> core_adapter.OMCITest
+	12, // 28: adapter_service.AdapterService.SimulateAlarm:input_type -> core_adapter.SimulateAlarmMessage
+	13, // 29: adapter_service.AdapterService.SuppressEvent:input_type -> event.EventFilter
+	13, // 30: adapter_service.AdapterService.UnSuppressEvent:input_type -> event.EventFilter
+	14, // 31: adapter_service.AdapterService.GetExtValue:input_type -> core_adapter.GetExtValueMessage
+	15, // 32: adapter_service.AdapterService.SetExtValue:input_type -> core_adapter.SetExtValueMessage
+	16, // 33: adapter_service.AdapterService.GetSingleValue:input_type -> extension.SingleGetValueRequest
+	17, // 34: adapter_service.AdapterService.SetSingleValue:input_type -> extension.SingleSetValueRequest
+	1,  // 35: adapter_service.AdapterService.DisableOnuDevice:input_type -> device.Device
+	1,  // 36: adapter_service.AdapterService.EnableOnuDevice:input_type -> device.Device
+	18, // 37: adapter_service.AdapterService.DisableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	18, // 38: adapter_service.AdapterService.EnableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	19, // 39: adapter_service.AdapterService.UpdateDevice:input_type -> device.UpdateDevice
+	20, // 40: adapter_service.AdapterService.GetHealthStatus:output_type -> health.HealthStatus
+	21, // 41: adapter_service.AdapterService.AdoptDevice:output_type -> google.protobuf.Empty
+	21, // 42: adapter_service.AdapterService.ReconcileDevice:output_type -> google.protobuf.Empty
+	21, // 43: adapter_service.AdapterService.DeleteDevice:output_type -> google.protobuf.Empty
+	21, // 44: adapter_service.AdapterService.DisableDevice:output_type -> google.protobuf.Empty
+	21, // 45: adapter_service.AdapterService.ReEnableDevice:output_type -> google.protobuf.Empty
+	21, // 46: adapter_service.AdapterService.RebootDevice:output_type -> google.protobuf.Empty
+	21, // 47: adapter_service.AdapterService.SelfTestDevice:output_type -> google.protobuf.Empty
+	22, // 48: adapter_service.AdapterService.GetOfpDeviceInfo:output_type -> core_adapter.SwitchCapability
+	21, // 49: adapter_service.AdapterService.ChildDeviceLost:output_type -> google.protobuf.Empty
+	21, // 50: adapter_service.AdapterService.EnablePort:output_type -> google.protobuf.Empty
+	21, // 51: adapter_service.AdapterService.DisablePort:output_type -> google.protobuf.Empty
+	21, // 52: adapter_service.AdapterService.UpdateFlowsBulk:output_type -> google.protobuf.Empty
+	21, // 53: adapter_service.AdapterService.UpdateFlowsIncrementally:output_type -> google.protobuf.Empty
+	21, // 54: adapter_service.AdapterService.SendPacketOut:output_type -> google.protobuf.Empty
+	21, // 55: adapter_service.AdapterService.UpdatePmConfig:output_type -> google.protobuf.Empty
+	23, // 56: adapter_service.AdapterService.DownloadOnuImage:output_type -> device.DeviceImageResponse
+	23, // 57: adapter_service.AdapterService.GetOnuImageStatus:output_type -> device.DeviceImageResponse
+	23, // 58: adapter_service.AdapterService.AbortOnuImageUpgrade:output_type -> device.DeviceImageResponse
+	24, // 59: adapter_service.AdapterService.GetOnuImages:output_type -> device.OnuImages
+	23, // 60: adapter_service.AdapterService.ActivateOnuImage:output_type -> device.DeviceImageResponse
+	23, // 61: adapter_service.AdapterService.CommitOnuImage:output_type -> device.DeviceImageResponse
+	25, // 62: adapter_service.AdapterService.DownloadImage:output_type -> device.ImageDownload
+	25, // 63: adapter_service.AdapterService.GetImageDownloadStatus:output_type -> device.ImageDownload
+	25, // 64: adapter_service.AdapterService.CancelImageDownload:output_type -> device.ImageDownload
+	25, // 65: adapter_service.AdapterService.ActivateImageUpdate:output_type -> device.ImageDownload
+	25, // 66: adapter_service.AdapterService.RevertImageUpdate:output_type -> device.ImageDownload
+	26, // 67: adapter_service.AdapterService.StartOmciTest:output_type -> omci.TestResponse
+	27, // 68: adapter_service.AdapterService.SimulateAlarm:output_type -> common.OperationResp
+	21, // 69: adapter_service.AdapterService.SuppressEvent:output_type -> google.protobuf.Empty
+	21, // 70: adapter_service.AdapterService.UnSuppressEvent:output_type -> google.protobuf.Empty
+	28, // 71: adapter_service.AdapterService.GetExtValue:output_type -> extension.ReturnValues
+	21, // 72: adapter_service.AdapterService.SetExtValue:output_type -> google.protobuf.Empty
+	29, // 73: adapter_service.AdapterService.GetSingleValue:output_type -> extension.SingleGetValueResponse
+	30, // 74: adapter_service.AdapterService.SetSingleValue:output_type -> extension.SingleSetValueResponse
+	21, // 75: adapter_service.AdapterService.DisableOnuDevice:output_type -> google.protobuf.Empty
+	21, // 76: adapter_service.AdapterService.EnableOnuDevice:output_type -> google.protobuf.Empty
+	21, // 77: adapter_service.AdapterService.DisableOnuSerialNumber:output_type -> google.protobuf.Empty
+	21, // 78: adapter_service.AdapterService.EnableOnuSerialNumber:output_type -> google.protobuf.Empty
+	21, // 79: adapter_service.AdapterService.UpdateDevice:output_type -> google.protobuf.Empty
+	40, // [40:80] is the sub-list for method output_type
+	0,  // [0:40] is the sub-list for method input_type
+	0,  // [0:0] is the sub-list for extension type_name
+	0,  // [0:0] is the sub-list for extension extendee
+	0,  // [0:0] is the sub-list for field type_name
 }
 
-func (c *adapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (AdapterService_GetHealthStatusClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_AdapterService_serviceDesc.Streams[0], "/adapter_service.AdapterService/GetHealthStatus", opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_adapter_service_proto_init() }
+func file_voltha_protos_adapter_service_proto_init() {
+	if File_voltha_protos_adapter_service_proto != nil {
+		return
 	}
-	x := &adapterServiceGetHealthStatusClient{stream}
-	return x, nil
-}
-
-type AdapterService_GetHealthStatusClient interface {
-	Send(*common.Connection) error
-	Recv() (*health.HealthStatus, error)
-	grpc.ClientStream
-}
-
-type adapterServiceGetHealthStatusClient struct {
-	grpc.ClientStream
-}
-
-func (x *adapterServiceGetHealthStatusClient) Send(m *common.Connection) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *adapterServiceGetHealthStatusClient) Recv() (*health.HealthStatus, error) {
-	m := new(health.HealthStatus)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *adapterServiceClient) AdoptDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/AdoptDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) ReconcileDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/ReconcileDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DeleteDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DisableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) ReEnableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/ReEnableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) RebootDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/RebootDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SelfTestDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SelfTestDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) GetOfpDeviceInfo(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*core_adapter.SwitchCapability, error) {
-	out := new(core_adapter.SwitchCapability)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetOfpDeviceInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) ChildDeviceLost(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/ChildDeviceLost", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) EnablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/EnablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DisablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) UpdateFlowsBulk(ctx context.Context, in *core_adapter.BulkFlows, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/UpdateFlowsBulk", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) UpdateFlowsIncrementally(ctx context.Context, in *core_adapter.IncrementalFlows, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/UpdateFlowsIncrementally", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SendPacketOut(ctx context.Context, in *core_adapter.PacketOut, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SendPacketOut", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) UpdatePmConfig(ctx context.Context, in *core_adapter.PmConfigsInfo, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/UpdatePmConfig", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DownloadOnuImage(ctx context.Context, in *voltha.DeviceImageDownloadRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
-	out := new(voltha.DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DownloadOnuImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) GetOnuImageStatus(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
-	out := new(voltha.DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetOnuImageStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) AbortOnuImageUpgrade(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
-	out := new(voltha.DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/AbortOnuImageUpgrade", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.OnuImages, error) {
-	out := new(voltha.OnuImages)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetOnuImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) ActivateOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
-	out := new(voltha.DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/ActivateOnuImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) CommitOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
-	out := new(voltha.DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/CommitOnuImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *adapterServiceClient) DownloadImage(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
-	out := new(voltha.ImageDownload)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DownloadImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *adapterServiceClient) GetImageDownloadStatus(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
-	out := new(voltha.ImageDownload)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetImageDownloadStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *adapterServiceClient) CancelImageDownload(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
-	out := new(voltha.ImageDownload)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/CancelImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *adapterServiceClient) ActivateImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
-	out := new(voltha.ImageDownload)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/ActivateImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *adapterServiceClient) RevertImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
-	out := new(voltha.ImageDownload)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/RevertImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) StartOmciTest(ctx context.Context, in *core_adapter.OMCITest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
-	out := new(omci.TestResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/StartOmciTest", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SimulateAlarm(ctx context.Context, in *core_adapter.SimulateAlarmMessage, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SimulateAlarm", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SuppressEvent", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) UnSuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/UnSuppressEvent", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) GetExtValue(ctx context.Context, in *core_adapter.GetExtValueMessage, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
-	out := new(extension.ReturnValues)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SetExtValue(ctx context.Context, in *core_adapter.SetExtValueMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) GetSingleValue(ctx context.Context, in *extension.SingleGetValueRequest, opts ...grpc.CallOption) (*extension.SingleGetValueResponse, error) {
-	out := new(extension.SingleGetValueResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/GetSingleValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) SetSingleValue(ctx context.Context, in *extension.SingleSetValueRequest, opts ...grpc.CallOption) (*extension.SingleSetValueResponse, error) {
-	out := new(extension.SingleSetValueResponse)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/SetSingleValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/EnableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/EnableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *adapterServiceClient) UpdateDevice(ctx context.Context, in *voltha.UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/UpdateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// AdapterServiceServer is the server API for AdapterService service.
-type AdapterServiceServer interface {
-	// GetHealthStatus is used by an AdapterService client to verify connectivity
-	// to the gRPC server hosting the AdapterService service
-	GetHealthStatus(AdapterService_GetHealthStatusServer) error
-	// Device
-	AdoptDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	ReconcileDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	DeleteDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	DisableDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	ReEnableDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	RebootDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	SelfTestDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	GetOfpDeviceInfo(context.Context, *voltha.Device) (*core_adapter.SwitchCapability, error)
-	ChildDeviceLost(context.Context, *voltha.Device) (*empty.Empty, error)
-	// Ports
-	EnablePort(context.Context, *voltha.Port) (*empty.Empty, error)
-	DisablePort(context.Context, *voltha.Port) (*empty.Empty, error)
-	// Flows
-	UpdateFlowsBulk(context.Context, *core_adapter.BulkFlows) (*empty.Empty, error)
-	UpdateFlowsIncrementally(context.Context, *core_adapter.IncrementalFlows) (*empty.Empty, error)
-	//Packets
-	SendPacketOut(context.Context, *core_adapter.PacketOut) (*empty.Empty, error)
-	// PM
-	UpdatePmConfig(context.Context, *core_adapter.PmConfigsInfo) (*empty.Empty, error)
-	// Image
-	DownloadOnuImage(context.Context, *voltha.DeviceImageDownloadRequest) (*voltha.DeviceImageResponse, error)
-	GetOnuImageStatus(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
-	AbortOnuImageUpgrade(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
-	GetOnuImages(context.Context, *common.ID) (*voltha.OnuImages, error)
-	ActivateOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
-	CommitOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
-	// Deprecated Image APIs
-	DownloadImage(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
-	GetImageDownloadStatus(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
-	CancelImageDownload(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
-	ActivateImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
-	RevertImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
-	// Tests
-	StartOmciTest(context.Context, *core_adapter.OMCITest) (*omci.TestResponse, error)
-	SimulateAlarm(context.Context, *core_adapter.SimulateAlarmMessage) (*common.OperationResp, error)
-	// Events
-	SuppressEvent(context.Context, *voltha.EventFilter) (*empty.Empty, error)
-	UnSuppressEvent(context.Context, *voltha.EventFilter) (*empty.Empty, error)
-	// Get/Set
-	GetExtValue(context.Context, *core_adapter.GetExtValueMessage) (*extension.ReturnValues, error)
-	SetExtValue(context.Context, *core_adapter.SetExtValueMessage) (*empty.Empty, error)
-	GetSingleValue(context.Context, *extension.SingleGetValueRequest) (*extension.SingleGetValueResponse, error)
-	SetSingleValue(context.Context, *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error)
-	DisableOnuDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	EnableOnuDevice(context.Context, *voltha.Device) (*empty.Empty, error)
-	DisableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	EnableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	UpdateDevice(context.Context, *voltha.UpdateDevice) (*empty.Empty, error)
-}
-
-// UnimplementedAdapterServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedAdapterServiceServer struct {
-}
-
-func (*UnimplementedAdapterServiceServer) GetHealthStatus(srv AdapterService_GetHealthStatusServer) error {
-	return status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
-}
-func (*UnimplementedAdapterServiceServer) AdoptDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method AdoptDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) ReconcileDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReconcileDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DeleteDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DisableDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) ReEnableDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReEnableDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) RebootDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RebootDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SelfTestDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SelfTestDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetOfpDeviceInfo(ctx context.Context, req *voltha.Device) (*core_adapter.SwitchCapability, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOfpDeviceInfo not implemented")
-}
-func (*UnimplementedAdapterServiceServer) ChildDeviceLost(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChildDeviceLost not implemented")
-}
-func (*UnimplementedAdapterServiceServer) EnablePort(ctx context.Context, req *voltha.Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnablePort not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DisablePort(ctx context.Context, req *voltha.Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisablePort not implemented")
-}
-func (*UnimplementedAdapterServiceServer) UpdateFlowsBulk(ctx context.Context, req *core_adapter.BulkFlows) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateFlowsBulk not implemented")
-}
-func (*UnimplementedAdapterServiceServer) UpdateFlowsIncrementally(ctx context.Context, req *core_adapter.IncrementalFlows) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateFlowsIncrementally not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SendPacketOut(ctx context.Context, req *core_adapter.PacketOut) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SendPacketOut not implemented")
-}
-func (*UnimplementedAdapterServiceServer) UpdatePmConfig(ctx context.Context, req *core_adapter.PmConfigsInfo) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdatePmConfig not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DownloadOnuImage(ctx context.Context, req *voltha.DeviceImageDownloadRequest) (*voltha.DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadOnuImage not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetOnuImageStatus(ctx context.Context, req *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuImageStatus not implemented")
-}
-func (*UnimplementedAdapterServiceServer) AbortOnuImageUpgrade(ctx context.Context, req *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method AbortOnuImageUpgrade not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetOnuImages(ctx context.Context, req *common.ID) (*voltha.OnuImages, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuImages not implemented")
-}
-func (*UnimplementedAdapterServiceServer) ActivateOnuImage(ctx context.Context, req *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateOnuImage not implemented")
-}
-func (*UnimplementedAdapterServiceServer) CommitOnuImage(ctx context.Context, req *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CommitOnuImage not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DownloadImage(ctx context.Context, req *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImage not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetImageDownloadStatus(ctx context.Context, req *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
-}
-func (*UnimplementedAdapterServiceServer) CancelImageDownload(ctx context.Context, req *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CancelImageDownload not implemented")
-}
-func (*UnimplementedAdapterServiceServer) ActivateImageUpdate(ctx context.Context, req *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImageUpdate not implemented")
-}
-func (*UnimplementedAdapterServiceServer) RevertImageUpdate(ctx context.Context, req *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RevertImageUpdate not implemented")
-}
-func (*UnimplementedAdapterServiceServer) StartOmciTest(ctx context.Context, req *core_adapter.OMCITest) (*omci.TestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTest not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SimulateAlarm(ctx context.Context, req *core_adapter.SimulateAlarmMessage) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SimulateAlarm not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SuppressEvent(ctx context.Context, req *voltha.EventFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SuppressEvent not implemented")
-}
-func (*UnimplementedAdapterServiceServer) UnSuppressEvent(ctx context.Context, req *voltha.EventFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UnSuppressEvent not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetExtValue(ctx context.Context, req *core_adapter.GetExtValueMessage) (*extension.ReturnValues, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SetExtValue(ctx context.Context, req *core_adapter.SetExtValueMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
-}
-func (*UnimplementedAdapterServiceServer) GetSingleValue(ctx context.Context, req *extension.SingleGetValueRequest) (*extension.SingleGetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetSingleValue not implemented")
-}
-func (*UnimplementedAdapterServiceServer) SetSingleValue(ctx context.Context, req *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetSingleValue not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DisableOnuDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) EnableOnuDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuDevice not implemented")
-}
-func (*UnimplementedAdapterServiceServer) DisableOnuSerialNumber(ctx context.Context, req *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
-}
-func (*UnimplementedAdapterServiceServer) EnableOnuSerialNumber(ctx context.Context, req *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
-}
-func (*UnimplementedAdapterServiceServer) UpdateDevice(ctx context.Context, req *voltha.UpdateDevice) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevice not implemented")
-}
-
-func RegisterAdapterServiceServer(s *grpc.Server, srv AdapterServiceServer) {
-	s.RegisterService(&_AdapterService_serviceDesc, srv)
-}
-
-func _AdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(AdapterServiceServer).GetHealthStatus(&adapterServiceGetHealthStatusServer{stream})
-}
-
-type AdapterService_GetHealthStatusServer interface {
-	Send(*health.HealthStatus) error
-	Recv() (*common.Connection, error)
-	grpc.ServerStream
-}
-
-type adapterServiceGetHealthStatusServer struct {
-	grpc.ServerStream
-}
-
-func (x *adapterServiceGetHealthStatusServer) Send(m *health.HealthStatus) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *adapterServiceGetHealthStatusServer) Recv() (*common.Connection, error) {
-	m := new(common.Connection)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _AdapterService_AdoptDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).AdoptDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/AdoptDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).AdoptDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_ReconcileDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).ReconcileDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/ReconcileDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).ReconcileDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DeleteDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DisableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DisableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DisableDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_ReEnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).ReEnableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/ReEnableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).ReEnableDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).RebootDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/RebootDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).RebootDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SelfTestDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SelfTestDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SelfTestDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SelfTestDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetOfpDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetOfpDeviceInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetOfpDeviceInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetOfpDeviceInfo(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_ChildDeviceLost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).ChildDeviceLost(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/ChildDeviceLost",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).ChildDeviceLost(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).EnablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/EnablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).EnablePort(ctx, req.(*voltha.Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DisablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DisablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DisablePort(ctx, req.(*voltha.Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_UpdateFlowsBulk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.BulkFlows)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).UpdateFlowsBulk(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/UpdateFlowsBulk",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).UpdateFlowsBulk(ctx, req.(*core_adapter.BulkFlows))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_UpdateFlowsIncrementally_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.IncrementalFlows)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).UpdateFlowsIncrementally(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/UpdateFlowsIncrementally",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).UpdateFlowsIncrementally(ctx, req.(*core_adapter.IncrementalFlows))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SendPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PacketOut)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SendPacketOut(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SendPacketOut",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SendPacketOut(ctx, req.(*core_adapter.PacketOut))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_UpdatePmConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PmConfigsInfo)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).UpdatePmConfig(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/UpdatePmConfig",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).UpdatePmConfig(ctx, req.(*core_adapter.PmConfigsInfo))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DownloadOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.DeviceImageDownloadRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DownloadOnuImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DownloadOnuImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DownloadOnuImage(ctx, req.(*voltha.DeviceImageDownloadRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetOnuImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetOnuImageStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetOnuImageStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetOnuImageStatus(ctx, req.(*voltha.DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_AbortOnuImageUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).AbortOnuImageUpgrade(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/AbortOnuImageUpgrade",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).AbortOnuImageUpgrade(ctx, req.(*voltha.DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetOnuImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetOnuImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetOnuImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_ActivateOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).ActivateOnuImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/ActivateOnuImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).ActivateOnuImage(ctx, req.(*voltha.DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_CommitOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).CommitOnuImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/CommitOnuImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).CommitOnuImage(ctx, req.(*voltha.DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ImageDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DownloadImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DownloadImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DownloadImage(ctx, req.(*core_adapter.ImageDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ImageDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetImageDownloadStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetImageDownloadStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetImageDownloadStatus(ctx, req.(*core_adapter.ImageDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ImageDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).CancelImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/CancelImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).CancelImageDownload(ctx, req.(*core_adapter.ImageDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ImageDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).ActivateImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/ActivateImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).ActivateImageUpdate(ctx, req.(*core_adapter.ImageDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ImageDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).RevertImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/RevertImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).RevertImageUpdate(ctx, req.(*core_adapter.ImageDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_StartOmciTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.OMCITest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).StartOmciTest(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/StartOmciTest",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).StartOmciTest(ctx, req.(*core_adapter.OMCITest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.SimulateAlarmMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SimulateAlarm(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SimulateAlarm",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SimulateAlarm(ctx, req.(*core_adapter.SimulateAlarmMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SuppressEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SuppressEvent(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SuppressEvent",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SuppressEvent(ctx, req.(*voltha.EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_UnSuppressEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).UnSuppressEvent(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/UnSuppressEvent",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).UnSuppressEvent(ctx, req.(*voltha.EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.GetExtValueMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetExtValue(ctx, req.(*core_adapter.GetExtValueMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.SetExtValueMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SetExtValue(ctx, req.(*core_adapter.SetExtValueMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_GetSingleValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.SingleGetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).GetSingleValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/GetSingleValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).GetSingleValue(ctx, req.(*extension.SingleGetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_SetSingleValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.SingleSetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).SetSingleValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/SetSingleValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).SetSingleValue(ctx, req.(*extension.SingleSetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DisableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/EnableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/DisableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/EnableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _AdapterService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.UpdateDevice)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AdapterServiceServer).UpdateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/adapter_service.AdapterService/UpdateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AdapterServiceServer).UpdateDevice(ctx, req.(*voltha.UpdateDevice))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _AdapterService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "adapter_service.AdapterService",
-	HandlerType: (*AdapterServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "AdoptDevice",
-			Handler:    _AdapterService_AdoptDevice_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_service_proto_rawDesc), len(file_voltha_protos_adapter_service_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "ReconcileDevice",
-			Handler:    _AdapterService_ReconcileDevice_Handler,
-		},
-		{
-			MethodName: "DeleteDevice",
-			Handler:    _AdapterService_DeleteDevice_Handler,
-		},
-		{
-			MethodName: "DisableDevice",
-			Handler:    _AdapterService_DisableDevice_Handler,
-		},
-		{
-			MethodName: "ReEnableDevice",
-			Handler:    _AdapterService_ReEnableDevice_Handler,
-		},
-		{
-			MethodName: "RebootDevice",
-			Handler:    _AdapterService_RebootDevice_Handler,
-		},
-		{
-			MethodName: "SelfTestDevice",
-			Handler:    _AdapterService_SelfTestDevice_Handler,
-		},
-		{
-			MethodName: "GetOfpDeviceInfo",
-			Handler:    _AdapterService_GetOfpDeviceInfo_Handler,
-		},
-		{
-			MethodName: "ChildDeviceLost",
-			Handler:    _AdapterService_ChildDeviceLost_Handler,
-		},
-		{
-			MethodName: "EnablePort",
-			Handler:    _AdapterService_EnablePort_Handler,
-		},
-		{
-			MethodName: "DisablePort",
-			Handler:    _AdapterService_DisablePort_Handler,
-		},
-		{
-			MethodName: "UpdateFlowsBulk",
-			Handler:    _AdapterService_UpdateFlowsBulk_Handler,
-		},
-		{
-			MethodName: "UpdateFlowsIncrementally",
-			Handler:    _AdapterService_UpdateFlowsIncrementally_Handler,
-		},
-		{
-			MethodName: "SendPacketOut",
-			Handler:    _AdapterService_SendPacketOut_Handler,
-		},
-		{
-			MethodName: "UpdatePmConfig",
-			Handler:    _AdapterService_UpdatePmConfig_Handler,
-		},
-		{
-			MethodName: "DownloadOnuImage",
-			Handler:    _AdapterService_DownloadOnuImage_Handler,
-		},
-		{
-			MethodName: "GetOnuImageStatus",
-			Handler:    _AdapterService_GetOnuImageStatus_Handler,
-		},
-		{
-			MethodName: "AbortOnuImageUpgrade",
-			Handler:    _AdapterService_AbortOnuImageUpgrade_Handler,
-		},
-		{
-			MethodName: "GetOnuImages",
-			Handler:    _AdapterService_GetOnuImages_Handler,
-		},
-		{
-			MethodName: "ActivateOnuImage",
-			Handler:    _AdapterService_ActivateOnuImage_Handler,
-		},
-		{
-			MethodName: "CommitOnuImage",
-			Handler:    _AdapterService_CommitOnuImage_Handler,
-		},
-		{
-			MethodName: "DownloadImage",
-			Handler:    _AdapterService_DownloadImage_Handler,
-		},
-		{
-			MethodName: "GetImageDownloadStatus",
-			Handler:    _AdapterService_GetImageDownloadStatus_Handler,
-		},
-		{
-			MethodName: "CancelImageDownload",
-			Handler:    _AdapterService_CancelImageDownload_Handler,
-		},
-		{
-			MethodName: "ActivateImageUpdate",
-			Handler:    _AdapterService_ActivateImageUpdate_Handler,
-		},
-		{
-			MethodName: "RevertImageUpdate",
-			Handler:    _AdapterService_RevertImageUpdate_Handler,
-		},
-		{
-			MethodName: "StartOmciTest",
-			Handler:    _AdapterService_StartOmciTest_Handler,
-		},
-		{
-			MethodName: "SimulateAlarm",
-			Handler:    _AdapterService_SimulateAlarm_Handler,
-		},
-		{
-			MethodName: "SuppressEvent",
-			Handler:    _AdapterService_SuppressEvent_Handler,
-		},
-		{
-			MethodName: "UnSuppressEvent",
-			Handler:    _AdapterService_UnSuppressEvent_Handler,
-		},
-		{
-			MethodName: "GetExtValue",
-			Handler:    _AdapterService_GetExtValue_Handler,
-		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _AdapterService_SetExtValue_Handler,
-		},
-		{
-			MethodName: "GetSingleValue",
-			Handler:    _AdapterService_GetSingleValue_Handler,
-		},
-		{
-			MethodName: "SetSingleValue",
-			Handler:    _AdapterService_SetSingleValue_Handler,
-		},
-		{
-			MethodName: "DisableOnuDevice",
-			Handler:    _AdapterService_DisableOnuDevice_Handler,
-		},
-		{
-			MethodName: "EnableOnuDevice",
-			Handler:    _AdapterService_EnableOnuDevice_Handler,
-		},
-		{
-			MethodName: "DisableOnuSerialNumber",
-			Handler:    _AdapterService_DisableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "EnableOnuSerialNumber",
-			Handler:    _AdapterService_EnableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "UpdateDevice",
-			Handler:    _AdapterService_UpdateDevice_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "GetHealthStatus",
-			Handler:       _AdapterService_GetHealthStatus_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "voltha_protos/adapter_service.proto",
+		GoTypes:           file_voltha_protos_adapter_service_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_adapter_service_proto_depIdxs,
+	}.Build()
+	File_voltha_protos_adapter_service_proto = out.File
+	file_voltha_protos_adapter_service_proto_goTypes = nil
+	file_voltha_protos_adapter_service_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service_grpc.pb.go
new file mode 100644
index 0000000..7ee44d3
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/adapter_service/adapter_service_grpc.pb.go
@@ -0,0 +1,1648 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/adapter_service.proto
+
+package adapter_service
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	core_adapter "github.com/opencord/voltha-protos/v5/go/core_adapter"
+	extension "github.com/opencord/voltha-protos/v5/go/extension"
+	health "github.com/opencord/voltha-protos/v5/go/health"
+	omci "github.com/opencord/voltha-protos/v5/go/omci"
+	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	AdapterService_GetHealthStatus_FullMethodName          = "/adapter_service.AdapterService/GetHealthStatus"
+	AdapterService_AdoptDevice_FullMethodName              = "/adapter_service.AdapterService/AdoptDevice"
+	AdapterService_ReconcileDevice_FullMethodName          = "/adapter_service.AdapterService/ReconcileDevice"
+	AdapterService_DeleteDevice_FullMethodName             = "/adapter_service.AdapterService/DeleteDevice"
+	AdapterService_DisableDevice_FullMethodName            = "/adapter_service.AdapterService/DisableDevice"
+	AdapterService_ReEnableDevice_FullMethodName           = "/adapter_service.AdapterService/ReEnableDevice"
+	AdapterService_RebootDevice_FullMethodName             = "/adapter_service.AdapterService/RebootDevice"
+	AdapterService_SelfTestDevice_FullMethodName           = "/adapter_service.AdapterService/SelfTestDevice"
+	AdapterService_GetOfpDeviceInfo_FullMethodName         = "/adapter_service.AdapterService/GetOfpDeviceInfo"
+	AdapterService_ChildDeviceLost_FullMethodName          = "/adapter_service.AdapterService/ChildDeviceLost"
+	AdapterService_EnablePort_FullMethodName               = "/adapter_service.AdapterService/EnablePort"
+	AdapterService_DisablePort_FullMethodName              = "/adapter_service.AdapterService/DisablePort"
+	AdapterService_UpdateFlowsBulk_FullMethodName          = "/adapter_service.AdapterService/UpdateFlowsBulk"
+	AdapterService_UpdateFlowsIncrementally_FullMethodName = "/adapter_service.AdapterService/UpdateFlowsIncrementally"
+	AdapterService_SendPacketOut_FullMethodName            = "/adapter_service.AdapterService/SendPacketOut"
+	AdapterService_UpdatePmConfig_FullMethodName           = "/adapter_service.AdapterService/UpdatePmConfig"
+	AdapterService_DownloadOnuImage_FullMethodName         = "/adapter_service.AdapterService/DownloadOnuImage"
+	AdapterService_GetOnuImageStatus_FullMethodName        = "/adapter_service.AdapterService/GetOnuImageStatus"
+	AdapterService_AbortOnuImageUpgrade_FullMethodName     = "/adapter_service.AdapterService/AbortOnuImageUpgrade"
+	AdapterService_GetOnuImages_FullMethodName             = "/adapter_service.AdapterService/GetOnuImages"
+	AdapterService_ActivateOnuImage_FullMethodName         = "/adapter_service.AdapterService/ActivateOnuImage"
+	AdapterService_CommitOnuImage_FullMethodName           = "/adapter_service.AdapterService/CommitOnuImage"
+	AdapterService_DownloadImage_FullMethodName            = "/adapter_service.AdapterService/DownloadImage"
+	AdapterService_GetImageDownloadStatus_FullMethodName   = "/adapter_service.AdapterService/GetImageDownloadStatus"
+	AdapterService_CancelImageDownload_FullMethodName      = "/adapter_service.AdapterService/CancelImageDownload"
+	AdapterService_ActivateImageUpdate_FullMethodName      = "/adapter_service.AdapterService/ActivateImageUpdate"
+	AdapterService_RevertImageUpdate_FullMethodName        = "/adapter_service.AdapterService/RevertImageUpdate"
+	AdapterService_StartOmciTest_FullMethodName            = "/adapter_service.AdapterService/StartOmciTest"
+	AdapterService_SimulateAlarm_FullMethodName            = "/adapter_service.AdapterService/SimulateAlarm"
+	AdapterService_SuppressEvent_FullMethodName            = "/adapter_service.AdapterService/SuppressEvent"
+	AdapterService_UnSuppressEvent_FullMethodName          = "/adapter_service.AdapterService/UnSuppressEvent"
+	AdapterService_GetExtValue_FullMethodName              = "/adapter_service.AdapterService/GetExtValue"
+	AdapterService_SetExtValue_FullMethodName              = "/adapter_service.AdapterService/SetExtValue"
+	AdapterService_GetSingleValue_FullMethodName           = "/adapter_service.AdapterService/GetSingleValue"
+	AdapterService_SetSingleValue_FullMethodName           = "/adapter_service.AdapterService/SetSingleValue"
+	AdapterService_DisableOnuDevice_FullMethodName         = "/adapter_service.AdapterService/DisableOnuDevice"
+	AdapterService_EnableOnuDevice_FullMethodName          = "/adapter_service.AdapterService/EnableOnuDevice"
+	AdapterService_DisableOnuSerialNumber_FullMethodName   = "/adapter_service.AdapterService/DisableOnuSerialNumber"
+	AdapterService_EnableOnuSerialNumber_FullMethodName    = "/adapter_service.AdapterService/EnableOnuSerialNumber"
+	AdapterService_UpdateDevice_FullMethodName             = "/adapter_service.AdapterService/UpdateDevice"
+)
+
+// AdapterServiceClient is the client API for AdapterService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// AdapterService is a gRPC service to serve requests from Voltha RW_Core.
+type AdapterServiceClient interface {
+	// GetHealthStatus is used by an AdapterService client to verify connectivity
+	// to the gRPC server hosting the AdapterService service
+	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error)
+	// Device
+	AdoptDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	ReconcileDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeleteDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	ReEnableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	RebootDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	SelfTestDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetOfpDeviceInfo(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*core_adapter.SwitchCapability, error)
+	ChildDeviceLost(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Ports
+	EnablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Flows
+	UpdateFlowsBulk(ctx context.Context, in *core_adapter.BulkFlows, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	UpdateFlowsIncrementally(ctx context.Context, in *core_adapter.IncrementalFlows, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Packets
+	SendPacketOut(ctx context.Context, in *core_adapter.PacketOut, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// PM
+	UpdatePmConfig(ctx context.Context, in *core_adapter.PmConfigsInfo, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Image
+	DownloadOnuImage(ctx context.Context, in *voltha.DeviceImageDownloadRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
+	GetOnuImageStatus(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
+	AbortOnuImageUpgrade(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
+	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.OnuImages, error)
+	ActivateOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
+	CommitOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error)
+	// Deprecated: Do not use.
+	// Deprecated Image APIs
+	DownloadImage(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	GetImageDownloadStatus(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	CancelImageDownload(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	ActivateImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	RevertImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error)
+	// Tests
+	StartOmciTest(ctx context.Context, in *core_adapter.OMCITest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	SimulateAlarm(ctx context.Context, in *core_adapter.SimulateAlarmMessage, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Events
+	SuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	UnSuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get/Set
+	GetExtValue(ctx context.Context, in *core_adapter.GetExtValueMessage, opts ...grpc.CallOption) (*extension.ReturnValues, error)
+	SetExtValue(ctx context.Context, in *core_adapter.SetExtValueMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetSingleValue(ctx context.Context, in *extension.SingleGetValueRequest, opts ...grpc.CallOption) (*extension.SingleGetValueResponse, error)
+	SetSingleValue(ctx context.Context, in *extension.SingleSetValueRequest, opts ...grpc.CallOption) (*extension.SingleSetValueResponse, error)
+	DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	UpdateDevice(ctx context.Context, in *voltha.UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type adapterServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewAdapterServiceClient(cc grpc.ClientConnInterface) AdapterServiceClient {
+	return &adapterServiceClient{cc}
+}
+
+func (c *adapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &AdapterService_ServiceDesc.Streams[0], AdapterService_GetHealthStatus_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[common.Connection, health.HealthStatus]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type AdapterService_GetHealthStatusClient = grpc.BidiStreamingClient[common.Connection, health.HealthStatus]
+
+func (c *adapterServiceClient) AdoptDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_AdoptDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) ReconcileDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_ReconcileDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DeleteDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_DeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DisableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_DisableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) ReEnableDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_ReEnableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) RebootDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_RebootDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SelfTestDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_SelfTestDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) GetOfpDeviceInfo(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*core_adapter.SwitchCapability, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(core_adapter.SwitchCapability)
+	err := c.cc.Invoke(ctx, AdapterService_GetOfpDeviceInfo_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) ChildDeviceLost(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_ChildDeviceLost_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) EnablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_EnablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DisablePort(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_DisablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) UpdateFlowsBulk(ctx context.Context, in *core_adapter.BulkFlows, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_UpdateFlowsBulk_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) UpdateFlowsIncrementally(ctx context.Context, in *core_adapter.IncrementalFlows, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_UpdateFlowsIncrementally_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SendPacketOut(ctx context.Context, in *core_adapter.PacketOut, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_SendPacketOut_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) UpdatePmConfig(ctx context.Context, in *core_adapter.PmConfigsInfo, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_UpdatePmConfig_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DownloadOnuImage(ctx context.Context, in *voltha.DeviceImageDownloadRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.DeviceImageResponse)
+	err := c.cc.Invoke(ctx, AdapterService_DownloadOnuImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) GetOnuImageStatus(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.DeviceImageResponse)
+	err := c.cc.Invoke(ctx, AdapterService_GetOnuImageStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) AbortOnuImageUpgrade(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.DeviceImageResponse)
+	err := c.cc.Invoke(ctx, AdapterService_AbortOnuImageUpgrade_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.OnuImages, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.OnuImages)
+	err := c.cc.Invoke(ctx, AdapterService_GetOnuImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) ActivateOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.DeviceImageResponse)
+	err := c.cc.Invoke(ctx, AdapterService_ActivateOnuImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) CommitOnuImage(ctx context.Context, in *voltha.DeviceImageRequest, opts ...grpc.CallOption) (*voltha.DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.DeviceImageResponse)
+	err := c.cc.Invoke(ctx, AdapterService_CommitOnuImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *adapterServiceClient) DownloadImage(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.ImageDownload)
+	err := c.cc.Invoke(ctx, AdapterService_DownloadImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *adapterServiceClient) GetImageDownloadStatus(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.ImageDownload)
+	err := c.cc.Invoke(ctx, AdapterService_GetImageDownloadStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *adapterServiceClient) CancelImageDownload(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.ImageDownload)
+	err := c.cc.Invoke(ctx, AdapterService_CancelImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *adapterServiceClient) ActivateImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.ImageDownload)
+	err := c.cc.Invoke(ctx, AdapterService_ActivateImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *adapterServiceClient) RevertImageUpdate(ctx context.Context, in *core_adapter.ImageDownloadMessage, opts ...grpc.CallOption) (*voltha.ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.ImageDownload)
+	err := c.cc.Invoke(ctx, AdapterService_RevertImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) StartOmciTest(ctx context.Context, in *core_adapter.OMCITest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.TestResponse)
+	err := c.cc.Invoke(ctx, AdapterService_StartOmciTest_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SimulateAlarm(ctx context.Context, in *core_adapter.SimulateAlarmMessage, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, AdapterService_SimulateAlarm_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_SuppressEvent_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) UnSuppressEvent(ctx context.Context, in *voltha.EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_UnSuppressEvent_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) GetExtValue(ctx context.Context, in *core_adapter.GetExtValueMessage, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.ReturnValues)
+	err := c.cc.Invoke(ctx, AdapterService_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SetExtValue(ctx context.Context, in *core_adapter.SetExtValueMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) GetSingleValue(ctx context.Context, in *extension.SingleGetValueRequest, opts ...grpc.CallOption) (*extension.SingleGetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.SingleGetValueResponse)
+	err := c.cc.Invoke(ctx, AdapterService_GetSingleValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) SetSingleValue(ctx context.Context, in *extension.SingleSetValueRequest, opts ...grpc.CallOption) (*extension.SingleSetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.SingleSetValueResponse)
+	err := c.cc.Invoke(ctx, AdapterService_SetSingleValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_DisableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_EnableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_DisableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_EnableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) UpdateDevice(ctx context.Context, in *voltha.UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, AdapterService_UpdateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// AdapterServiceServer is the server API for AdapterService service.
+// All implementations must embed UnimplementedAdapterServiceServer
+// for forward compatibility.
+//
+// AdapterService is a gRPC service to serve requests from Voltha RW_Core.
+type AdapterServiceServer interface {
+	// GetHealthStatus is used by an AdapterService client to verify connectivity
+	// to the gRPC server hosting the AdapterService service
+	GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error
+	// Device
+	AdoptDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	ReconcileDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	DeleteDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	DisableDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	ReEnableDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	RebootDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	SelfTestDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	GetOfpDeviceInfo(context.Context, *voltha.Device) (*core_adapter.SwitchCapability, error)
+	ChildDeviceLost(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	// Ports
+	EnablePort(context.Context, *voltha.Port) (*emptypb.Empty, error)
+	DisablePort(context.Context, *voltha.Port) (*emptypb.Empty, error)
+	// Flows
+	UpdateFlowsBulk(context.Context, *core_adapter.BulkFlows) (*emptypb.Empty, error)
+	UpdateFlowsIncrementally(context.Context, *core_adapter.IncrementalFlows) (*emptypb.Empty, error)
+	// Packets
+	SendPacketOut(context.Context, *core_adapter.PacketOut) (*emptypb.Empty, error)
+	// PM
+	UpdatePmConfig(context.Context, *core_adapter.PmConfigsInfo) (*emptypb.Empty, error)
+	// Image
+	DownloadOnuImage(context.Context, *voltha.DeviceImageDownloadRequest) (*voltha.DeviceImageResponse, error)
+	GetOnuImageStatus(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
+	AbortOnuImageUpgrade(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
+	GetOnuImages(context.Context, *common.ID) (*voltha.OnuImages, error)
+	ActivateOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
+	CommitOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error)
+	// Deprecated: Do not use.
+	// Deprecated Image APIs
+	DownloadImage(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	GetImageDownloadStatus(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	CancelImageDownload(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	ActivateImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
+	// Deprecated: Do not use.
+	RevertImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error)
+	// Tests
+	StartOmciTest(context.Context, *core_adapter.OMCITest) (*omci.TestResponse, error)
+	SimulateAlarm(context.Context, *core_adapter.SimulateAlarmMessage) (*common.OperationResp, error)
+	// Events
+	SuppressEvent(context.Context, *voltha.EventFilter) (*emptypb.Empty, error)
+	UnSuppressEvent(context.Context, *voltha.EventFilter) (*emptypb.Empty, error)
+	// Get/Set
+	GetExtValue(context.Context, *core_adapter.GetExtValueMessage) (*extension.ReturnValues, error)
+	SetExtValue(context.Context, *core_adapter.SetExtValueMessage) (*emptypb.Empty, error)
+	GetSingleValue(context.Context, *extension.SingleGetValueRequest) (*extension.SingleGetValueResponse, error)
+	SetSingleValue(context.Context, *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error)
+	DisableOnuDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	EnableOnuDevice(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	DisableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	EnableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	UpdateDevice(context.Context, *voltha.UpdateDevice) (*emptypb.Empty, error)
+	mustEmbedUnimplementedAdapterServiceServer()
+}
+
+// UnimplementedAdapterServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedAdapterServiceServer struct{}
+
+func (UnimplementedAdapterServiceServer) GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error {
+	return status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedAdapterServiceServer) AdoptDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method AdoptDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) ReconcileDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReconcileDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) DeleteDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) DisableDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) ReEnableDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReEnableDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) RebootDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RebootDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) SelfTestDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SelfTestDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetOfpDeviceInfo(context.Context, *voltha.Device) (*core_adapter.SwitchCapability, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOfpDeviceInfo not implemented")
+}
+func (UnimplementedAdapterServiceServer) ChildDeviceLost(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ChildDeviceLost not implemented")
+}
+func (UnimplementedAdapterServiceServer) EnablePort(context.Context, *voltha.Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnablePort not implemented")
+}
+func (UnimplementedAdapterServiceServer) DisablePort(context.Context, *voltha.Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisablePort not implemented")
+}
+func (UnimplementedAdapterServiceServer) UpdateFlowsBulk(context.Context, *core_adapter.BulkFlows) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateFlowsBulk not implemented")
+}
+func (UnimplementedAdapterServiceServer) UpdateFlowsIncrementally(context.Context, *core_adapter.IncrementalFlows) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateFlowsIncrementally not implemented")
+}
+func (UnimplementedAdapterServiceServer) SendPacketOut(context.Context, *core_adapter.PacketOut) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SendPacketOut not implemented")
+}
+func (UnimplementedAdapterServiceServer) UpdatePmConfig(context.Context, *core_adapter.PmConfigsInfo) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdatePmConfig not implemented")
+}
+func (UnimplementedAdapterServiceServer) DownloadOnuImage(context.Context, *voltha.DeviceImageDownloadRequest) (*voltha.DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadOnuImage not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetOnuImageStatus(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuImageStatus not implemented")
+}
+func (UnimplementedAdapterServiceServer) AbortOnuImageUpgrade(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method AbortOnuImageUpgrade not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetOnuImages(context.Context, *common.ID) (*voltha.OnuImages, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuImages not implemented")
+}
+func (UnimplementedAdapterServiceServer) ActivateOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateOnuImage not implemented")
+}
+func (UnimplementedAdapterServiceServer) CommitOnuImage(context.Context, *voltha.DeviceImageRequest) (*voltha.DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method CommitOnuImage not implemented")
+}
+func (UnimplementedAdapterServiceServer) DownloadImage(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImage not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetImageDownloadStatus(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
+}
+func (UnimplementedAdapterServiceServer) CancelImageDownload(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method CancelImageDownload not implemented")
+}
+func (UnimplementedAdapterServiceServer) ActivateImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImageUpdate not implemented")
+}
+func (UnimplementedAdapterServiceServer) RevertImageUpdate(context.Context, *core_adapter.ImageDownloadMessage) (*voltha.ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method RevertImageUpdate not implemented")
+}
+func (UnimplementedAdapterServiceServer) StartOmciTest(context.Context, *core_adapter.OMCITest) (*omci.TestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method StartOmciTest not implemented")
+}
+func (UnimplementedAdapterServiceServer) SimulateAlarm(context.Context, *core_adapter.SimulateAlarmMessage) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method SimulateAlarm not implemented")
+}
+func (UnimplementedAdapterServiceServer) SuppressEvent(context.Context, *voltha.EventFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SuppressEvent not implemented")
+}
+func (UnimplementedAdapterServiceServer) UnSuppressEvent(context.Context, *voltha.EventFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UnSuppressEvent not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetExtValue(context.Context, *core_adapter.GetExtValueMessage) (*extension.ReturnValues, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedAdapterServiceServer) SetExtValue(context.Context, *core_adapter.SetExtValueMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedAdapterServiceServer) GetSingleValue(context.Context, *extension.SingleGetValueRequest) (*extension.SingleGetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetSingleValue not implemented")
+}
+func (UnimplementedAdapterServiceServer) SetSingleValue(context.Context, *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetSingleValue not implemented")
+}
+func (UnimplementedAdapterServiceServer) DisableOnuDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) EnableOnuDevice(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) DisableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (UnimplementedAdapterServiceServer) EnableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
+func (UnimplementedAdapterServiceServer) UpdateDevice(context.Context, *voltha.UpdateDevice) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevice not implemented")
+}
+func (UnimplementedAdapterServiceServer) mustEmbedUnimplementedAdapterServiceServer() {}
+func (UnimplementedAdapterServiceServer) testEmbeddedByValue()                        {}
+
+// UnsafeAdapterServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to AdapterServiceServer will
+// result in compilation errors.
+type UnsafeAdapterServiceServer interface {
+	mustEmbedUnimplementedAdapterServiceServer()
+}
+
+func RegisterAdapterServiceServer(s grpc.ServiceRegistrar, srv AdapterServiceServer) {
+	// If the following call panics, it indicates UnimplementedAdapterServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&AdapterService_ServiceDesc, srv)
+}
+
+func _AdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(AdapterServiceServer).GetHealthStatus(&grpc.GenericServerStream[common.Connection, health.HealthStatus]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type AdapterService_GetHealthStatusServer = grpc.BidiStreamingServer[common.Connection, health.HealthStatus]
+
+func _AdapterService_AdoptDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).AdoptDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_AdoptDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).AdoptDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_ReconcileDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).ReconcileDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_ReconcileDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).ReconcileDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DeleteDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DisableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisableDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_ReEnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).ReEnableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_ReEnableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).ReEnableDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).RebootDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_RebootDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).RebootDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SelfTestDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SelfTestDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SelfTestDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SelfTestDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetOfpDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetOfpDeviceInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetOfpDeviceInfo_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetOfpDeviceInfo(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_ChildDeviceLost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).ChildDeviceLost(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_ChildDeviceLost_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).ChildDeviceLost(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).EnablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_EnablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).EnablePort(ctx, req.(*voltha.Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DisablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisablePort(ctx, req.(*voltha.Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_UpdateFlowsBulk_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.BulkFlows)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).UpdateFlowsBulk(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_UpdateFlowsBulk_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).UpdateFlowsBulk(ctx, req.(*core_adapter.BulkFlows))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_UpdateFlowsIncrementally_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.IncrementalFlows)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).UpdateFlowsIncrementally(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_UpdateFlowsIncrementally_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).UpdateFlowsIncrementally(ctx, req.(*core_adapter.IncrementalFlows))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SendPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PacketOut)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SendPacketOut(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SendPacketOut_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SendPacketOut(ctx, req.(*core_adapter.PacketOut))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_UpdatePmConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PmConfigsInfo)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).UpdatePmConfig(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_UpdatePmConfig_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).UpdatePmConfig(ctx, req.(*core_adapter.PmConfigsInfo))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DownloadOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.DeviceImageDownloadRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DownloadOnuImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DownloadOnuImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DownloadOnuImage(ctx, req.(*voltha.DeviceImageDownloadRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetOnuImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetOnuImageStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetOnuImageStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetOnuImageStatus(ctx, req.(*voltha.DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_AbortOnuImageUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).AbortOnuImageUpgrade(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_AbortOnuImageUpgrade_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).AbortOnuImageUpgrade(ctx, req.(*voltha.DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetOnuImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetOnuImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetOnuImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_ActivateOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).ActivateOnuImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_ActivateOnuImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).ActivateOnuImage(ctx, req.(*voltha.DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_CommitOnuImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).CommitOnuImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_CommitOnuImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).CommitOnuImage(ctx, req.(*voltha.DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ImageDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DownloadImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DownloadImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DownloadImage(ctx, req.(*core_adapter.ImageDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ImageDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetImageDownloadStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetImageDownloadStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetImageDownloadStatus(ctx, req.(*core_adapter.ImageDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ImageDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).CancelImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_CancelImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).CancelImageDownload(ctx, req.(*core_adapter.ImageDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ImageDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).ActivateImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_ActivateImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).ActivateImageUpdate(ctx, req.(*core_adapter.ImageDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ImageDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).RevertImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_RevertImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).RevertImageUpdate(ctx, req.(*core_adapter.ImageDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_StartOmciTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.OMCITest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).StartOmciTest(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_StartOmciTest_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).StartOmciTest(ctx, req.(*core_adapter.OMCITest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.SimulateAlarmMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SimulateAlarm(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SimulateAlarm_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SimulateAlarm(ctx, req.(*core_adapter.SimulateAlarmMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SuppressEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SuppressEvent(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SuppressEvent_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SuppressEvent(ctx, req.(*voltha.EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_UnSuppressEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).UnSuppressEvent(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_UnSuppressEvent_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).UnSuppressEvent(ctx, req.(*voltha.EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.GetExtValueMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetExtValue(ctx, req.(*core_adapter.GetExtValueMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.SetExtValueMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SetExtValue(ctx, req.(*core_adapter.SetExtValueMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_GetSingleValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.SingleGetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).GetSingleValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_GetSingleValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).GetSingleValue(ctx, req.(*extension.SingleGetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_SetSingleValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.SingleSetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).SetSingleValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_SetSingleValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).SetSingleValue(ctx, req.(*extension.SingleSetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DisableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_EnableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_DisableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_EnableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.UpdateDevice)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).UpdateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: AdapterService_UpdateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).UpdateDevice(ctx, req.(*voltha.UpdateDevice))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// AdapterService_ServiceDesc is the grpc.ServiceDesc for AdapterService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var AdapterService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "adapter_service.AdapterService",
+	HandlerType: (*AdapterServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "AdoptDevice",
+			Handler:    _AdapterService_AdoptDevice_Handler,
+		},
+		{
+			MethodName: "ReconcileDevice",
+			Handler:    _AdapterService_ReconcileDevice_Handler,
+		},
+		{
+			MethodName: "DeleteDevice",
+			Handler:    _AdapterService_DeleteDevice_Handler,
+		},
+		{
+			MethodName: "DisableDevice",
+			Handler:    _AdapterService_DisableDevice_Handler,
+		},
+		{
+			MethodName: "ReEnableDevice",
+			Handler:    _AdapterService_ReEnableDevice_Handler,
+		},
+		{
+			MethodName: "RebootDevice",
+			Handler:    _AdapterService_RebootDevice_Handler,
+		},
+		{
+			MethodName: "SelfTestDevice",
+			Handler:    _AdapterService_SelfTestDevice_Handler,
+		},
+		{
+			MethodName: "GetOfpDeviceInfo",
+			Handler:    _AdapterService_GetOfpDeviceInfo_Handler,
+		},
+		{
+			MethodName: "ChildDeviceLost",
+			Handler:    _AdapterService_ChildDeviceLost_Handler,
+		},
+		{
+			MethodName: "EnablePort",
+			Handler:    _AdapterService_EnablePort_Handler,
+		},
+		{
+			MethodName: "DisablePort",
+			Handler:    _AdapterService_DisablePort_Handler,
+		},
+		{
+			MethodName: "UpdateFlowsBulk",
+			Handler:    _AdapterService_UpdateFlowsBulk_Handler,
+		},
+		{
+			MethodName: "UpdateFlowsIncrementally",
+			Handler:    _AdapterService_UpdateFlowsIncrementally_Handler,
+		},
+		{
+			MethodName: "SendPacketOut",
+			Handler:    _AdapterService_SendPacketOut_Handler,
+		},
+		{
+			MethodName: "UpdatePmConfig",
+			Handler:    _AdapterService_UpdatePmConfig_Handler,
+		},
+		{
+			MethodName: "DownloadOnuImage",
+			Handler:    _AdapterService_DownloadOnuImage_Handler,
+		},
+		{
+			MethodName: "GetOnuImageStatus",
+			Handler:    _AdapterService_GetOnuImageStatus_Handler,
+		},
+		{
+			MethodName: "AbortOnuImageUpgrade",
+			Handler:    _AdapterService_AbortOnuImageUpgrade_Handler,
+		},
+		{
+			MethodName: "GetOnuImages",
+			Handler:    _AdapterService_GetOnuImages_Handler,
+		},
+		{
+			MethodName: "ActivateOnuImage",
+			Handler:    _AdapterService_ActivateOnuImage_Handler,
+		},
+		{
+			MethodName: "CommitOnuImage",
+			Handler:    _AdapterService_CommitOnuImage_Handler,
+		},
+		{
+			MethodName: "DownloadImage",
+			Handler:    _AdapterService_DownloadImage_Handler,
+		},
+		{
+			MethodName: "GetImageDownloadStatus",
+			Handler:    _AdapterService_GetImageDownloadStatus_Handler,
+		},
+		{
+			MethodName: "CancelImageDownload",
+			Handler:    _AdapterService_CancelImageDownload_Handler,
+		},
+		{
+			MethodName: "ActivateImageUpdate",
+			Handler:    _AdapterService_ActivateImageUpdate_Handler,
+		},
+		{
+			MethodName: "RevertImageUpdate",
+			Handler:    _AdapterService_RevertImageUpdate_Handler,
+		},
+		{
+			MethodName: "StartOmciTest",
+			Handler:    _AdapterService_StartOmciTest_Handler,
+		},
+		{
+			MethodName: "SimulateAlarm",
+			Handler:    _AdapterService_SimulateAlarm_Handler,
+		},
+		{
+			MethodName: "SuppressEvent",
+			Handler:    _AdapterService_SuppressEvent_Handler,
+		},
+		{
+			MethodName: "UnSuppressEvent",
+			Handler:    _AdapterService_UnSuppressEvent_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _AdapterService_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _AdapterService_SetExtValue_Handler,
+		},
+		{
+			MethodName: "GetSingleValue",
+			Handler:    _AdapterService_GetSingleValue_Handler,
+		},
+		{
+			MethodName: "SetSingleValue",
+			Handler:    _AdapterService_SetSingleValue_Handler,
+		},
+		{
+			MethodName: "DisableOnuDevice",
+			Handler:    _AdapterService_DisableOnuDevice_Handler,
+		},
+		{
+			MethodName: "EnableOnuDevice",
+			Handler:    _AdapterService_EnableOnuDevice_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _AdapterService_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _AdapterService_EnableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "UpdateDevice",
+			Handler:    _AdapterService_UpdateDevice_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "GetHealthStatus",
+			Handler:       _AdapterService_GetHealthStatus_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/adapter_service.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 593ef2d..0312ed7 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -1,24 +1,25 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/common.proto
 
 package common
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type TestModeKeys int32
 
@@ -26,20 +27,41 @@
 	TestModeKeys_api_test TestModeKeys = 0
 )
 
-var TestModeKeys_name = map[int32]string{
-	0: "api_test",
-}
+// Enum value maps for TestModeKeys.
+var (
+	TestModeKeys_name = map[int32]string{
+		0: "api_test",
+	}
+	TestModeKeys_value = map[string]int32{
+		"api_test": 0,
+	}
+)
 
-var TestModeKeys_value = map[string]int32{
-	"api_test": 0,
+func (x TestModeKeys) Enum() *TestModeKeys {
+	p := new(TestModeKeys)
+	*p = x
+	return p
 }
 
 func (x TestModeKeys) String() string {
-	return proto.EnumName(TestModeKeys_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (TestModeKeys) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[0].Descriptor()
+}
+
+func (TestModeKeys) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[0]
+}
+
+func (x TestModeKeys) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TestModeKeys.Descriptor instead.
 func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{0}
 }
 
 // Administrative State
@@ -59,28 +81,49 @@
 	AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
 )
 
-var AdminState_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "PREPROVISIONED",
-	2: "ENABLED",
-	3: "DISABLED",
-	4: "DOWNLOADING_IMAGE",
-}
+// Enum value maps for AdminState_Types.
+var (
+	AdminState_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "PREPROVISIONED",
+		2: "ENABLED",
+		3: "DISABLED",
+		4: "DOWNLOADING_IMAGE",
+	}
+	AdminState_Types_value = map[string]int32{
+		"UNKNOWN":           0,
+		"PREPROVISIONED":    1,
+		"ENABLED":           2,
+		"DISABLED":          3,
+		"DOWNLOADING_IMAGE": 4,
+	}
+)
 
-var AdminState_Types_value = map[string]int32{
-	"UNKNOWN":           0,
-	"PREPROVISIONED":    1,
-	"ENABLED":           2,
-	"DISABLED":          3,
-	"DOWNLOADING_IMAGE": 4,
+func (x AdminState_Types) Enum() *AdminState_Types {
+	p := new(AdminState_Types)
+	*p = x
+	return p
 }
 
 func (x AdminState_Types) String() string {
-	return proto.EnumName(AdminState_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AdminState_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[1].Descriptor()
+}
+
+func (AdminState_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[1]
+}
+
+func (x AdminState_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AdminState_Types.Descriptor instead.
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{4, 0}
 }
 
 // Operational Status
@@ -107,36 +150,57 @@
 	OperStatus_REBOOTED OperStatus_Types = 8
 )
 
-var OperStatus_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "DISCOVERED",
-	2: "ACTIVATING",
-	3: "TESTING",
-	4: "ACTIVE",
-	5: "FAILED",
-	6: "RECONCILING",
-	7: "RECONCILING_FAILED",
-	8: "REBOOTED",
-}
+// Enum value maps for OperStatus_Types.
+var (
+	OperStatus_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "DISCOVERED",
+		2: "ACTIVATING",
+		3: "TESTING",
+		4: "ACTIVE",
+		5: "FAILED",
+		6: "RECONCILING",
+		7: "RECONCILING_FAILED",
+		8: "REBOOTED",
+	}
+	OperStatus_Types_value = map[string]int32{
+		"UNKNOWN":            0,
+		"DISCOVERED":         1,
+		"ACTIVATING":         2,
+		"TESTING":            3,
+		"ACTIVE":             4,
+		"FAILED":             5,
+		"RECONCILING":        6,
+		"RECONCILING_FAILED": 7,
+		"REBOOTED":           8,
+	}
+)
 
-var OperStatus_Types_value = map[string]int32{
-	"UNKNOWN":            0,
-	"DISCOVERED":         1,
-	"ACTIVATING":         2,
-	"TESTING":            3,
-	"ACTIVE":             4,
-	"FAILED":             5,
-	"RECONCILING":        6,
-	"RECONCILING_FAILED": 7,
-	"REBOOTED":           8,
+func (x OperStatus_Types) Enum() *OperStatus_Types {
+	p := new(OperStatus_Types)
+	*p = x
+	return p
 }
 
 func (x OperStatus_Types) String() string {
-	return proto.EnumName(OperStatus_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OperStatus_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[2].Descriptor()
+}
+
+func (OperStatus_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[2]
+}
+
+func (x OperStatus_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OperStatus_Types.Descriptor instead.
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{5, 0}
 }
 
 // Connectivity Status
@@ -151,24 +215,45 @@
 	ConnectStatus_REACHABLE ConnectStatus_Types = 2
 )
 
-var ConnectStatus_Types_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "UNREACHABLE",
-	2: "REACHABLE",
-}
+// Enum value maps for ConnectStatus_Types.
+var (
+	ConnectStatus_Types_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "UNREACHABLE",
+		2: "REACHABLE",
+	}
+	ConnectStatus_Types_value = map[string]int32{
+		"UNKNOWN":     0,
+		"UNREACHABLE": 1,
+		"REACHABLE":   2,
+	}
+)
 
-var ConnectStatus_Types_value = map[string]int32{
-	"UNKNOWN":     0,
-	"UNREACHABLE": 1,
-	"REACHABLE":   2,
+func (x ConnectStatus_Types) Enum() *ConnectStatus_Types {
+	p := new(ConnectStatus_Types)
+	*p = x
+	return p
 }
 
 func (x ConnectStatus_Types) String() string {
-	return proto.EnumName(ConnectStatus_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ConnectStatus_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[3].Descriptor()
+}
+
+func (ConnectStatus_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[3]
+}
+
+func (x ConnectStatus_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConnectStatus_Types.Descriptor instead.
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -180,362 +265,434 @@
 	OperationResp_OPERATION_IN_PROGRESS OperationResp_OperationReturnCode = 3
 )
 
-var OperationResp_OperationReturnCode_name = map[int32]string{
-	0: "OPERATION_SUCCESS",
-	1: "OPERATION_FAILURE",
-	2: "OPERATION_UNSUPPORTED",
-	3: "OPERATION_IN_PROGRESS",
-}
+// Enum value maps for OperationResp_OperationReturnCode.
+var (
+	OperationResp_OperationReturnCode_name = map[int32]string{
+		0: "OPERATION_SUCCESS",
+		1: "OPERATION_FAILURE",
+		2: "OPERATION_UNSUPPORTED",
+		3: "OPERATION_IN_PROGRESS",
+	}
+	OperationResp_OperationReturnCode_value = map[string]int32{
+		"OPERATION_SUCCESS":     0,
+		"OPERATION_FAILURE":     1,
+		"OPERATION_UNSUPPORTED": 2,
+		"OPERATION_IN_PROGRESS": 3,
+	}
+)
 
-var OperationResp_OperationReturnCode_value = map[string]int32{
-	"OPERATION_SUCCESS":     0,
-	"OPERATION_FAILURE":     1,
-	"OPERATION_UNSUPPORTED": 2,
-	"OPERATION_IN_PROGRESS": 3,
+func (x OperationResp_OperationReturnCode) Enum() *OperationResp_OperationReturnCode {
+	p := new(OperationResp_OperationReturnCode)
+	*p = x
+	return p
 }
 
 func (x OperationResp_OperationReturnCode) String() string {
-	return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OperationResp_OperationReturnCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_common_proto_enumTypes[4].Descriptor()
+}
+
+func (OperationResp_OperationReturnCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_common_proto_enumTypes[4]
+}
+
+func (x OperationResp_OperationReturnCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OperationResp_OperationReturnCode.Descriptor instead.
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{7, 0}
 }
 
 // Full path for KV store
 type Key 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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Key) Reset()         { *m = Key{} }
-func (m *Key) String() string { return proto.CompactTextString(m) }
-func (*Key) ProtoMessage()    {}
+func (x *Key) Reset() {
+	*x = Key{}
+	mi := &file_voltha_protos_common_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Key) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Key) ProtoMessage() {}
+
+func (x *Key) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Key.ProtoReflect.Descriptor instead.
 func (*Key) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Key) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Key.Unmarshal(m, b)
-}
-func (m *Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Key.Marshal(b, m, deterministic)
-}
-func (m *Key) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Key.Merge(m, src)
-}
-func (m *Key) XXX_Size() int {
-	return xxx_messageInfo_Key.Size(m)
-}
-func (m *Key) XXX_DiscardUnknown() {
-	xxx_messageInfo_Key.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Key proto.InternalMessageInfo
-
-func (m *Key) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *Key) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
 // 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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ID) Reset()         { *m = ID{} }
-func (m *ID) String() string { return proto.CompactTextString(m) }
-func (*ID) ProtoMessage()    {}
+func (x *ID) Reset() {
+	*x = ID{}
+	mi := &file_voltha_protos_common_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ID) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ID) ProtoMessage() {}
+
+func (x *ID) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ID.ProtoReflect.Descriptor instead.
 func (*ID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{1}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{1}
 }
 
-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
+func (x *ID) GetId() string {
+	if x != nil {
+		return x.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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*ID                  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *IDs) Reset()         { *m = IDs{} }
-func (m *IDs) String() string { return proto.CompactTextString(m) }
-func (*IDs) ProtoMessage()    {}
+func (x *IDs) Reset() {
+	*x = IDs{}
+	mi := &file_voltha_protos_common_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IDs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IDs) ProtoMessage() {}
+
+func (x *IDs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IDs.ProtoReflect.Descriptor instead.
 func (*IDs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{2}
 }
 
-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
+func (x *IDs) GetItems() []*ID {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type Connection struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// endpoint is the endpoint sending the request
 	Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
 	// contextInfo represents additional contextual information
 	ContextInfo string `protobuf:"bytes,2,opt,name=contextInfo,proto3" json:"contextInfo,omitempty"`
 	// keep_alive_interval is used to indicate to the remote endpoint how often it
 	// will get a keep alive notification
-	KeepAliveInterval    int64    `protobuf:"varint,3,opt,name=keep_alive_interval,json=keepAliveInterval,proto3" json:"keep_alive_interval,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	KeepAliveInterval int64 `protobuf:"varint,3,opt,name=keep_alive_interval,json=keepAliveInterval,proto3" json:"keep_alive_interval,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *Connection) Reset()         { *m = Connection{} }
-func (m *Connection) String() string { return proto.CompactTextString(m) }
-func (*Connection) ProtoMessage()    {}
+func (x *Connection) Reset() {
+	*x = Connection{}
+	mi := &file_voltha_protos_common_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Connection) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Connection) ProtoMessage() {}
+
+func (x *Connection) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Connection.ProtoReflect.Descriptor instead.
 func (*Connection) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *Connection) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Connection.Unmarshal(m, b)
-}
-func (m *Connection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Connection.Marshal(b, m, deterministic)
-}
-func (m *Connection) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Connection.Merge(m, src)
-}
-func (m *Connection) XXX_Size() int {
-	return xxx_messageInfo_Connection.Size(m)
-}
-func (m *Connection) XXX_DiscardUnknown() {
-	xxx_messageInfo_Connection.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Connection proto.InternalMessageInfo
-
-func (m *Connection) GetEndpoint() string {
-	if m != nil {
-		return m.Endpoint
+func (x *Connection) GetEndpoint() string {
+	if x != nil {
+		return x.Endpoint
 	}
 	return ""
 }
 
-func (m *Connection) GetContextInfo() string {
-	if m != nil {
-		return m.ContextInfo
+func (x *Connection) GetContextInfo() string {
+	if x != nil {
+		return x.ContextInfo
 	}
 	return ""
 }
 
-func (m *Connection) GetKeepAliveInterval() int64 {
-	if m != nil {
-		return m.KeepAliveInterval
+func (x *Connection) GetKeepAliveInterval() int64 {
+	if x != nil {
+		return x.KeepAliveInterval
 	}
 	return 0
 }
 
 type AdminState struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AdminState) Reset()         { *m = AdminState{} }
-func (m *AdminState) String() string { return proto.CompactTextString(m) }
-func (*AdminState) ProtoMessage()    {}
+func (x *AdminState) Reset() {
+	*x = AdminState{}
+	mi := &file_voltha_protos_common_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdminState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdminState) ProtoMessage() {}
+
+func (x *AdminState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdminState.ProtoReflect.Descriptor instead.
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{4}
 }
 
-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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OperStatus) Reset()         { *m = OperStatus{} }
-func (m *OperStatus) String() string { return proto.CompactTextString(m) }
-func (*OperStatus) ProtoMessage()    {}
+func (x *OperStatus) Reset() {
+	*x = OperStatus{}
+	mi := &file_voltha_protos_common_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OperStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OperStatus) ProtoMessage() {}
+
+func (x *OperStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OperStatus.ProtoReflect.Descriptor instead.
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{5}
 }
 
-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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConnectStatus) Reset()         { *m = ConnectStatus{} }
-func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
-func (*ConnectStatus) ProtoMessage()    {}
+func (x *ConnectStatus) Reset() {
+	*x = ConnectStatus{}
+	mi := &file_voltha_protos_common_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConnectStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConnectStatus) ProtoMessage() {}
+
+func (x *ConnectStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConnectStatus.ProtoReflect.Descriptor instead.
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{6}
 }
 
-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 {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// 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:"-"`
+	AdditionalInfo string `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OperationResp) Reset()         { *m = OperationResp{} }
-func (m *OperationResp) String() string { return proto.CompactTextString(m) }
-func (*OperationResp) ProtoMessage()    {}
+func (x *OperationResp) Reset() {
+	*x = OperationResp{}
+	mi := &file_voltha_protos_common_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OperationResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OperationResp) ProtoMessage() {}
+
+func (x *OperationResp) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OperationResp.ProtoReflect.Descriptor instead.
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{7}
 }
 
-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
+func (x *OperationResp) GetCode() OperationResp_OperationReturnCode {
+	if x != nil {
+		return x.Code
 	}
 	return OperationResp_OPERATION_SUCCESS
 }
 
-func (m *OperationResp) GetAdditionalInfo() string {
-	if m != nil {
-		return m.AdditionalInfo
+func (x *OperationResp) GetAdditionalInfo() string {
+	if x != nil {
+		return x.AdditionalInfo
 	}
 	return ""
 }
 
 type PortStatistics struct {
-	IntfId  uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	RxBytes uint64 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	IntfId  uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	RxBytes uint64                 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use rx_frames (field 17) instead
-	RxPackets uint64 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxPackets uint64 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use rx_ucast_frames (field 63) instead
-	RxUcastPackets uint64 `protobuf:"fixed64,4,opt,name=rx_ucast_packets,json=rxUcastPackets,proto3" json:"rx_ucast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxUcastPackets uint64 `protobuf:"fixed64,4,opt,name=rx_ucast_packets,json=rxUcastPackets,proto3" json:"rx_ucast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use rx_mcast_frames (field 64) instead
-	RxMcastPackets uint64 `protobuf:"fixed64,5,opt,name=rx_mcast_packets,json=rxMcastPackets,proto3" json:"rx_mcast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxMcastPackets uint64 `protobuf:"fixed64,5,opt,name=rx_mcast_packets,json=rxMcastPackets,proto3" json:"rx_mcast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use rx_bcast_frames (field 65) instead
-	RxBcastPackets uint64 `protobuf:"fixed64,6,opt,name=rx_bcast_packets,json=rxBcastPackets,proto3" json:"rx_bcast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxBcastPackets uint64 `protobuf:"fixed64,6,opt,name=rx_bcast_packets,json=rxBcastPackets,proto3" json:"rx_bcast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use rx_error_frames (field 66) instead
-	RxErrorPackets          uint64 `protobuf:"fixed64,7,opt,name=rx_error_packets,json=rxErrorPackets,proto3" json:"rx_error_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	RxErrorPackets          uint64 `protobuf:"fixed64,7,opt,name=rx_error_packets,json=rxErrorPackets,proto3" json:"rx_error_packets,omitempty"`
 	RxFrames                uint64 `protobuf:"fixed64,17,opt,name=rx_frames,json=rxFrames,proto3" json:"rx_frames,omitempty"`
 	RxFrames_64             uint64 `protobuf:"fixed64,18,opt,name=rx_frames_64,json=rxFrames64,proto3" json:"rx_frames_64,omitempty"`
 	RxFrames_65_127         uint64 `protobuf:"fixed64,19,opt,name=rx_frames_65_127,json=rxFrames65127,proto3" json:"rx_frames_65_127,omitempty"`
@@ -564,710 +721,804 @@
 	RxFcsErrorPackets       uint64 `protobuf:"fixed64,62,opt,name=rxFcsErrorPackets,proto3" json:"rxFcsErrorPackets,omitempty"`
 	TxBytes                 uint64 `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use tx_frames (field 28) instead
-	TxPackets uint64 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxPackets uint64 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use tx_ucast_frames (field 68) instead
-	TxUcastPackets uint64 `protobuf:"fixed64,10,opt,name=tx_ucast_packets,json=txUcastPackets,proto3" json:"tx_ucast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxUcastPackets uint64 `protobuf:"fixed64,10,opt,name=tx_ucast_packets,json=txUcastPackets,proto3" json:"tx_ucast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use tx_mcast_frames (field 69) instead
-	TxMcastPackets uint64 `protobuf:"fixed64,11,opt,name=tx_mcast_packets,json=txMcastPackets,proto3" json:"tx_mcast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxMcastPackets uint64 `protobuf:"fixed64,11,opt,name=tx_mcast_packets,json=txMcastPackets,proto3" json:"tx_mcast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use tx_bcast_frames (field 70) instead
-	TxBcastPackets uint64 `protobuf:"fixed64,12,opt,name=tx_bcast_packets,json=txBcastPackets,proto3" json:"tx_bcast_packets,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxBcastPackets uint64 `protobuf:"fixed64,12,opt,name=tx_bcast_packets,json=txBcastPackets,proto3" json:"tx_bcast_packets,omitempty"`
 	// Deprecated: OLT being a Layer 2 device, use tx_error_frames (field 71) instead
-	TxErrorPackets         uint64   `protobuf:"fixed64,13,opt,name=tx_error_packets,json=txErrorPackets,proto3" json:"tx_error_packets,omitempty"` // Deprecated: Do not use.
-	TxFrames               uint64   `protobuf:"fixed64,28,opt,name=tx_frames,json=txFrames,proto3" json:"tx_frames,omitempty"`
-	TxFrames_64            uint64   `protobuf:"fixed64,29,opt,name=tx_frames_64,json=txFrames64,proto3" json:"tx_frames_64,omitempty"`
-	TxFrames_65_127        uint64   `protobuf:"fixed64,30,opt,name=tx_frames_65_127,json=txFrames65127,proto3" json:"tx_frames_65_127,omitempty"`
-	TxFrames_128_255       uint64   `protobuf:"fixed64,31,opt,name=tx_frames_128_255,json=txFrames128255,proto3" json:"tx_frames_128_255,omitempty"`
-	TxFrames_256_511       uint64   `protobuf:"fixed64,32,opt,name=tx_frames_256_511,json=txFrames256511,proto3" json:"tx_frames_256_511,omitempty"`
-	TxFrames_512_1023      uint64   `protobuf:"fixed64,33,opt,name=tx_frames_512_1023,json=txFrames5121023,proto3" json:"tx_frames_512_1023,omitempty"`
-	TxFrames_1024_1518     uint64   `protobuf:"fixed64,34,opt,name=tx_frames_1024_1518,json=txFrames10241518,proto3" json:"tx_frames_1024_1518,omitempty"`
-	TxFrames_1519_2047     uint64   `protobuf:"fixed64,35,opt,name=tx_frames_1519_2047,json=txFrames15192047,proto3" json:"tx_frames_1519_2047,omitempty"`
-	TxFrames_2048_4095     uint64   `protobuf:"fixed64,36,opt,name=tx_frames_2048_4095,json=txFrames20484095,proto3" json:"tx_frames_2048_4095,omitempty"`
-	TxFrames_4096_9216     uint64   `protobuf:"fixed64,37,opt,name=tx_frames_4096_9216,json=txFrames40969216,proto3" json:"tx_frames_4096_9216,omitempty"`
-	TxFrames_9217_16383    uint64   `protobuf:"fixed64,38,opt,name=tx_frames_9217_16383,json=txFrames921716383,proto3" json:"tx_frames_9217_16383,omitempty"`
-	TxUndersizePackets     uint64   `protobuf:"fixed64,41,opt,name=txUndersizePackets,proto3" json:"txUndersizePackets,omitempty"`
-	TxOversizePackets      uint64   `protobuf:"fixed64,42,opt,name=txOversizePackets,proto3" json:"txOversizePackets,omitempty"`
-	TxGem                  uint64   `protobuf:"fixed64,54,opt,name=txGem,proto3" json:"txGem,omitempty"`
-	TxCpu                  uint64   `protobuf:"fixed64,55,opt,name=txCpu,proto3" json:"txCpu,omitempty"`
-	TxOmci                 uint64   `protobuf:"fixed64,56,opt,name=txOmci,proto3" json:"txOmci,omitempty"`
-	TxDroppedIllegalLength uint64   `protobuf:"fixed64,57,opt,name=txDroppedIllegalLength,proto3" json:"txDroppedIllegalLength,omitempty"`
-	TxDroppedTpidMiss      uint64   `protobuf:"fixed64,58,opt,name=txDroppedTpidMiss,proto3" json:"txDroppedTpidMiss,omitempty"`
-	TxDroppedVidMiss       uint64   `protobuf:"fixed64,59,opt,name=txDroppedVidMiss,proto3" json:"txDroppedVidMiss,omitempty"`
-	TxDroppedTotal         uint64   `protobuf:"fixed64,60,opt,name=txDroppedTotal,proto3" json:"txDroppedTotal,omitempty"`
-	BipErrors              uint64   `protobuf:"fixed64,15,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
-	BipUnits               uint64   `protobuf:"fixed64,61,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
-	Timestamp              uint32   `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	RxUcastFrames          uint64   `protobuf:"fixed64,63,opt,name=rx_ucast_frames,json=rxUcastFrames,proto3" json:"rx_ucast_frames,omitempty"`
-	RxMcastFrames          uint64   `protobuf:"fixed64,64,opt,name=rx_mcast_frames,json=rxMcastFrames,proto3" json:"rx_mcast_frames,omitempty"`
-	RxBcastFrames          uint64   `protobuf:"fixed64,65,opt,name=rx_bcast_frames,json=rxBcastFrames,proto3" json:"rx_bcast_frames,omitempty"`
-	RxErrorFrames          uint64   `protobuf:"fixed64,66,opt,name=rx_error_frames,json=rxErrorFrames,proto3" json:"rx_error_frames,omitempty"`
-	RxRightFrames          uint64   `protobuf:"fixed64,67,opt,name=rx_right_frames,json=rxRightFrames,proto3" json:"rx_right_frames,omitempty"`
-	TxUcastFrames          uint64   `protobuf:"fixed64,68,opt,name=tx_ucast_frames,json=txUcastFrames,proto3" json:"tx_ucast_frames,omitempty"`
-	TxMcastFrames          uint64   `protobuf:"fixed64,69,opt,name=tx_mcast_frames,json=txMcastFrames,proto3" json:"tx_mcast_frames,omitempty"`
-	TxBcastFrames          uint64   `protobuf:"fixed64,70,opt,name=tx_bcast_frames,json=txBcastFrames,proto3" json:"tx_bcast_frames,omitempty"`
-	TxErrorFrames          uint64   `protobuf:"fixed64,71,opt,name=tx_error_frames,json=txErrorFrames,proto3" json:"tx_error_frames,omitempty"`
-	RxDiscardedFrames      uint64   `protobuf:"fixed64,72,opt,name=rx_discarded_frames,json=rxDiscardedFrames,proto3" json:"rx_discarded_frames,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+	TxErrorPackets         uint64 `protobuf:"fixed64,13,opt,name=tx_error_packets,json=txErrorPackets,proto3" json:"tx_error_packets,omitempty"`
+	TxFrames               uint64 `protobuf:"fixed64,28,opt,name=tx_frames,json=txFrames,proto3" json:"tx_frames,omitempty"`
+	TxFrames_64            uint64 `protobuf:"fixed64,29,opt,name=tx_frames_64,json=txFrames64,proto3" json:"tx_frames_64,omitempty"`
+	TxFrames_65_127        uint64 `protobuf:"fixed64,30,opt,name=tx_frames_65_127,json=txFrames65127,proto3" json:"tx_frames_65_127,omitempty"`
+	TxFrames_128_255       uint64 `protobuf:"fixed64,31,opt,name=tx_frames_128_255,json=txFrames128255,proto3" json:"tx_frames_128_255,omitempty"`
+	TxFrames_256_511       uint64 `protobuf:"fixed64,32,opt,name=tx_frames_256_511,json=txFrames256511,proto3" json:"tx_frames_256_511,omitempty"`
+	TxFrames_512_1023      uint64 `protobuf:"fixed64,33,opt,name=tx_frames_512_1023,json=txFrames5121023,proto3" json:"tx_frames_512_1023,omitempty"`
+	TxFrames_1024_1518     uint64 `protobuf:"fixed64,34,opt,name=tx_frames_1024_1518,json=txFrames10241518,proto3" json:"tx_frames_1024_1518,omitempty"`
+	TxFrames_1519_2047     uint64 `protobuf:"fixed64,35,opt,name=tx_frames_1519_2047,json=txFrames15192047,proto3" json:"tx_frames_1519_2047,omitempty"`
+	TxFrames_2048_4095     uint64 `protobuf:"fixed64,36,opt,name=tx_frames_2048_4095,json=txFrames20484095,proto3" json:"tx_frames_2048_4095,omitempty"`
+	TxFrames_4096_9216     uint64 `protobuf:"fixed64,37,opt,name=tx_frames_4096_9216,json=txFrames40969216,proto3" json:"tx_frames_4096_9216,omitempty"`
+	TxFrames_9217_16383    uint64 `protobuf:"fixed64,38,opt,name=tx_frames_9217_16383,json=txFrames921716383,proto3" json:"tx_frames_9217_16383,omitempty"`
+	TxUndersizePackets     uint64 `protobuf:"fixed64,41,opt,name=txUndersizePackets,proto3" json:"txUndersizePackets,omitempty"`
+	TxOversizePackets      uint64 `protobuf:"fixed64,42,opt,name=txOversizePackets,proto3" json:"txOversizePackets,omitempty"`
+	TxGem                  uint64 `protobuf:"fixed64,54,opt,name=txGem,proto3" json:"txGem,omitempty"`
+	TxCpu                  uint64 `protobuf:"fixed64,55,opt,name=txCpu,proto3" json:"txCpu,omitempty"`
+	TxOmci                 uint64 `protobuf:"fixed64,56,opt,name=txOmci,proto3" json:"txOmci,omitempty"`
+	TxDroppedIllegalLength uint64 `protobuf:"fixed64,57,opt,name=txDroppedIllegalLength,proto3" json:"txDroppedIllegalLength,omitempty"`
+	TxDroppedTpidMiss      uint64 `protobuf:"fixed64,58,opt,name=txDroppedTpidMiss,proto3" json:"txDroppedTpidMiss,omitempty"`
+	TxDroppedVidMiss       uint64 `protobuf:"fixed64,59,opt,name=txDroppedVidMiss,proto3" json:"txDroppedVidMiss,omitempty"`
+	TxDroppedTotal         uint64 `protobuf:"fixed64,60,opt,name=txDroppedTotal,proto3" json:"txDroppedTotal,omitempty"`
+	BipErrors              uint64 `protobuf:"fixed64,15,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
+	BipUnits               uint64 `protobuf:"fixed64,61,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
+	Timestamp              uint32 `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	RxUcastFrames          uint64 `protobuf:"fixed64,63,opt,name=rx_ucast_frames,json=rxUcastFrames,proto3" json:"rx_ucast_frames,omitempty"`
+	RxMcastFrames          uint64 `protobuf:"fixed64,64,opt,name=rx_mcast_frames,json=rxMcastFrames,proto3" json:"rx_mcast_frames,omitempty"`
+	RxBcastFrames          uint64 `protobuf:"fixed64,65,opt,name=rx_bcast_frames,json=rxBcastFrames,proto3" json:"rx_bcast_frames,omitempty"`
+	RxErrorFrames          uint64 `protobuf:"fixed64,66,opt,name=rx_error_frames,json=rxErrorFrames,proto3" json:"rx_error_frames,omitempty"`
+	RxRightFrames          uint64 `protobuf:"fixed64,67,opt,name=rx_right_frames,json=rxRightFrames,proto3" json:"rx_right_frames,omitempty"`
+	TxUcastFrames          uint64 `protobuf:"fixed64,68,opt,name=tx_ucast_frames,json=txUcastFrames,proto3" json:"tx_ucast_frames,omitempty"`
+	TxMcastFrames          uint64 `protobuf:"fixed64,69,opt,name=tx_mcast_frames,json=txMcastFrames,proto3" json:"tx_mcast_frames,omitempty"`
+	TxBcastFrames          uint64 `protobuf:"fixed64,70,opt,name=tx_bcast_frames,json=txBcastFrames,proto3" json:"tx_bcast_frames,omitempty"`
+	TxErrorFrames          uint64 `protobuf:"fixed64,71,opt,name=tx_error_frames,json=txErrorFrames,proto3" json:"tx_error_frames,omitempty"`
+	RxDiscardedFrames      uint64 `protobuf:"fixed64,72,opt,name=rx_discarded_frames,json=rxDiscardedFrames,proto3" json:"rx_discarded_frames,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *PortStatistics) Reset()         { *m = PortStatistics{} }
-func (m *PortStatistics) String() string { return proto.CompactTextString(m) }
-func (*PortStatistics) ProtoMessage()    {}
+func (x *PortStatistics) Reset() {
+	*x = PortStatistics{}
+	mi := &file_voltha_protos_common_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PortStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PortStatistics) ProtoMessage() {}
+
+func (x *PortStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_common_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PortStatistics.ProtoReflect.Descriptor instead.
 func (*PortStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8}
+	return file_voltha_protos_common_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *PortStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PortStatistics.Unmarshal(m, b)
-}
-func (m *PortStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PortStatistics.Marshal(b, m, deterministic)
-}
-func (m *PortStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortStatistics.Merge(m, src)
-}
-func (m *PortStatistics) XXX_Size() int {
-	return xxx_messageInfo_PortStatistics.Size(m)
-}
-func (m *PortStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_PortStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PortStatistics proto.InternalMessageInfo
-
-func (m *PortStatistics) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *PortStatistics) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *PortStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetRxUcastPackets() uint64 {
-	if m != nil {
-		return m.RxUcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxUcastPackets() uint64 {
+	if x != nil {
+		return x.RxUcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetRxMcastPackets() uint64 {
-	if m != nil {
-		return m.RxMcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxMcastPackets() uint64 {
+	if x != nil {
+		return x.RxMcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetRxBcastPackets() uint64 {
-	if m != nil {
-		return m.RxBcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxBcastPackets() uint64 {
+	if x != nil {
+		return x.RxBcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetRxErrorPackets() uint64 {
-	if m != nil {
-		return m.RxErrorPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetRxErrorPackets() uint64 {
+	if x != nil {
+		return x.RxErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames() uint64 {
-	if m != nil {
-		return m.RxFrames
+func (x *PortStatistics) GetRxFrames() uint64 {
+	if x != nil {
+		return x.RxFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_64() uint64 {
-	if m != nil {
-		return m.RxFrames_64
+func (x *PortStatistics) GetRxFrames_64() uint64 {
+	if x != nil {
+		return x.RxFrames_64
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_65_127() uint64 {
-	if m != nil {
-		return m.RxFrames_65_127
+func (x *PortStatistics) GetRxFrames_65_127() uint64 {
+	if x != nil {
+		return x.RxFrames_65_127
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_128_255() uint64 {
-	if m != nil {
-		return m.RxFrames_128_255
+func (x *PortStatistics) GetRxFrames_128_255() uint64 {
+	if x != nil {
+		return x.RxFrames_128_255
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_256_511() uint64 {
-	if m != nil {
-		return m.RxFrames_256_511
+func (x *PortStatistics) GetRxFrames_256_511() uint64 {
+	if x != nil {
+		return x.RxFrames_256_511
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_512_1023() uint64 {
-	if m != nil {
-		return m.RxFrames_512_1023
+func (x *PortStatistics) GetRxFrames_512_1023() uint64 {
+	if x != nil {
+		return x.RxFrames_512_1023
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_1024_1518() uint64 {
-	if m != nil {
-		return m.RxFrames_1024_1518
+func (x *PortStatistics) GetRxFrames_1024_1518() uint64 {
+	if x != nil {
+		return x.RxFrames_1024_1518
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_1519_2047() uint64 {
-	if m != nil {
-		return m.RxFrames_1519_2047
+func (x *PortStatistics) GetRxFrames_1519_2047() uint64 {
+	if x != nil {
+		return x.RxFrames_1519_2047
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_2048_4095() uint64 {
-	if m != nil {
-		return m.RxFrames_2048_4095
+func (x *PortStatistics) GetRxFrames_2048_4095() uint64 {
+	if x != nil {
+		return x.RxFrames_2048_4095
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_4096_9216() uint64 {
-	if m != nil {
-		return m.RxFrames_4096_9216
+func (x *PortStatistics) GetRxFrames_4096_9216() uint64 {
+	if x != nil {
+		return x.RxFrames_4096_9216
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFrames_9217_16383() uint64 {
-	if m != nil {
-		return m.RxFrames_9217_16383
+func (x *PortStatistics) GetRxFrames_9217_16383() uint64 {
+	if x != nil {
+		return x.RxFrames_9217_16383
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCrcErrors() uint64 {
-	if m != nil {
-		return m.RxCrcErrors
+func (x *PortStatistics) GetRxCrcErrors() uint64 {
+	if x != nil {
+		return x.RxCrcErrors
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxUndersizePackets() uint64 {
-	if m != nil {
-		return m.RxUndersizePackets
+func (x *PortStatistics) GetRxUndersizePackets() uint64 {
+	if x != nil {
+		return x.RxUndersizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOversizePackets() uint64 {
-	if m != nil {
-		return m.RxOversizePackets
+func (x *PortStatistics) GetRxOversizePackets() uint64 {
+	if x != nil {
+		return x.RxOversizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGem() uint64 {
-	if m != nil {
-		return m.RxGem
+func (x *PortStatistics) GetRxGem() uint64 {
+	if x != nil {
+		return x.RxGem
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemDropped() uint64 {
-	if m != nil {
-		return m.RxGemDropped
+func (x *PortStatistics) GetRxGemDropped() uint64 {
+	if x != nil {
+		return x.RxGemDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemIdle() uint64 {
-	if m != nil {
-		return m.RxGemIdle
+func (x *PortStatistics) GetRxGemIdle() uint64 {
+	if x != nil {
+		return x.RxGemIdle
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemCorrected() uint64 {
-	if m != nil {
-		return m.RxGemCorrected
+func (x *PortStatistics) GetRxGemCorrected() uint64 {
+	if x != nil {
+		return x.RxGemCorrected
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxGemIllegal() uint64 {
-	if m != nil {
-		return m.RxGemIllegal
+func (x *PortStatistics) GetRxGemIllegal() uint64 {
+	if x != nil {
+		return x.RxGemIllegal
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFragmentError() uint64 {
-	if m != nil {
-		return m.RxFragmentError
+func (x *PortStatistics) GetRxFragmentError() uint64 {
+	if x != nil {
+		return x.RxFragmentError
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxPacketsDropped() uint64 {
-	if m != nil {
-		return m.RxPacketsDropped
+func (x *PortStatistics) GetRxPacketsDropped() uint64 {
+	if x != nil {
+		return x.RxPacketsDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCpuOmciPacketsDropped() uint64 {
-	if m != nil {
-		return m.RxCpuOmciPacketsDropped
+func (x *PortStatistics) GetRxCpuOmciPacketsDropped() uint64 {
+	if x != nil {
+		return x.RxCpuOmciPacketsDropped
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxCpu() uint64 {
-	if m != nil {
-		return m.RxCpu
+func (x *PortStatistics) GetRxCpu() uint64 {
+	if x != nil {
+		return x.RxCpu
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOmci() uint64 {
-	if m != nil {
-		return m.RxOmci
+func (x *PortStatistics) GetRxOmci() uint64 {
+	if x != nil {
+		return x.RxOmci
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxOmciPacketsCrcError() uint64 {
-	if m != nil {
-		return m.RxOmciPacketsCrcError
+func (x *PortStatistics) GetRxOmciPacketsCrcError() uint64 {
+	if x != nil {
+		return x.RxOmciPacketsCrcError
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxFcsErrorPackets() uint64 {
-	if m != nil {
-		return m.RxFcsErrorPackets
+func (x *PortStatistics) GetRxFcsErrorPackets() uint64 {
+	if x != nil {
+		return x.RxFcsErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *PortStatistics) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetTxUcastPackets() uint64 {
-	if m != nil {
-		return m.TxUcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxUcastPackets() uint64 {
+	if x != nil {
+		return x.TxUcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetTxMcastPackets() uint64 {
-	if m != nil {
-		return m.TxMcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxMcastPackets() uint64 {
+	if x != nil {
+		return x.TxMcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetTxBcastPackets() uint64 {
-	if m != nil {
-		return m.TxBcastPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxBcastPackets() uint64 {
+	if x != nil {
+		return x.TxBcastPackets
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *PortStatistics) GetTxErrorPackets() uint64 {
-	if m != nil {
-		return m.TxErrorPackets
+// Deprecated: Marked as deprecated in voltha_protos/common.proto.
+func (x *PortStatistics) GetTxErrorPackets() uint64 {
+	if x != nil {
+		return x.TxErrorPackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames() uint64 {
-	if m != nil {
-		return m.TxFrames
+func (x *PortStatistics) GetTxFrames() uint64 {
+	if x != nil {
+		return x.TxFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_64() uint64 {
-	if m != nil {
-		return m.TxFrames_64
+func (x *PortStatistics) GetTxFrames_64() uint64 {
+	if x != nil {
+		return x.TxFrames_64
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_65_127() uint64 {
-	if m != nil {
-		return m.TxFrames_65_127
+func (x *PortStatistics) GetTxFrames_65_127() uint64 {
+	if x != nil {
+		return x.TxFrames_65_127
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_128_255() uint64 {
-	if m != nil {
-		return m.TxFrames_128_255
+func (x *PortStatistics) GetTxFrames_128_255() uint64 {
+	if x != nil {
+		return x.TxFrames_128_255
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_256_511() uint64 {
-	if m != nil {
-		return m.TxFrames_256_511
+func (x *PortStatistics) GetTxFrames_256_511() uint64 {
+	if x != nil {
+		return x.TxFrames_256_511
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_512_1023() uint64 {
-	if m != nil {
-		return m.TxFrames_512_1023
+func (x *PortStatistics) GetTxFrames_512_1023() uint64 {
+	if x != nil {
+		return x.TxFrames_512_1023
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_1024_1518() uint64 {
-	if m != nil {
-		return m.TxFrames_1024_1518
+func (x *PortStatistics) GetTxFrames_1024_1518() uint64 {
+	if x != nil {
+		return x.TxFrames_1024_1518
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_1519_2047() uint64 {
-	if m != nil {
-		return m.TxFrames_1519_2047
+func (x *PortStatistics) GetTxFrames_1519_2047() uint64 {
+	if x != nil {
+		return x.TxFrames_1519_2047
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_2048_4095() uint64 {
-	if m != nil {
-		return m.TxFrames_2048_4095
+func (x *PortStatistics) GetTxFrames_2048_4095() uint64 {
+	if x != nil {
+		return x.TxFrames_2048_4095
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_4096_9216() uint64 {
-	if m != nil {
-		return m.TxFrames_4096_9216
+func (x *PortStatistics) GetTxFrames_4096_9216() uint64 {
+	if x != nil {
+		return x.TxFrames_4096_9216
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxFrames_9217_16383() uint64 {
-	if m != nil {
-		return m.TxFrames_9217_16383
+func (x *PortStatistics) GetTxFrames_9217_16383() uint64 {
+	if x != nil {
+		return x.TxFrames_9217_16383
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxUndersizePackets() uint64 {
-	if m != nil {
-		return m.TxUndersizePackets
+func (x *PortStatistics) GetTxUndersizePackets() uint64 {
+	if x != nil {
+		return x.TxUndersizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxOversizePackets() uint64 {
-	if m != nil {
-		return m.TxOversizePackets
+func (x *PortStatistics) GetTxOversizePackets() uint64 {
+	if x != nil {
+		return x.TxOversizePackets
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxGem() uint64 {
-	if m != nil {
-		return m.TxGem
+func (x *PortStatistics) GetTxGem() uint64 {
+	if x != nil {
+		return x.TxGem
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxCpu() uint64 {
-	if m != nil {
-		return m.TxCpu
+func (x *PortStatistics) GetTxCpu() uint64 {
+	if x != nil {
+		return x.TxCpu
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxOmci() uint64 {
-	if m != nil {
-		return m.TxOmci
+func (x *PortStatistics) GetTxOmci() uint64 {
+	if x != nil {
+		return x.TxOmci
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedIllegalLength() uint64 {
-	if m != nil {
-		return m.TxDroppedIllegalLength
+func (x *PortStatistics) GetTxDroppedIllegalLength() uint64 {
+	if x != nil {
+		return x.TxDroppedIllegalLength
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedTpidMiss() uint64 {
-	if m != nil {
-		return m.TxDroppedTpidMiss
+func (x *PortStatistics) GetTxDroppedTpidMiss() uint64 {
+	if x != nil {
+		return x.TxDroppedTpidMiss
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedVidMiss() uint64 {
-	if m != nil {
-		return m.TxDroppedVidMiss
+func (x *PortStatistics) GetTxDroppedVidMiss() uint64 {
+	if x != nil {
+		return x.TxDroppedVidMiss
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxDroppedTotal() uint64 {
-	if m != nil {
-		return m.TxDroppedTotal
+func (x *PortStatistics) GetTxDroppedTotal() uint64 {
+	if x != nil {
+		return x.TxDroppedTotal
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetBipErrors() uint64 {
-	if m != nil {
-		return m.BipErrors
+func (x *PortStatistics) GetBipErrors() uint64 {
+	if x != nil {
+		return x.BipErrors
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetBipUnits() uint64 {
-	if m != nil {
-		return m.BipUnits
+func (x *PortStatistics) GetBipUnits() uint64 {
+	if x != nil {
+		return x.BipUnits
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTimestamp() uint32 {
-	if m != nil {
-		return m.Timestamp
+func (x *PortStatistics) GetTimestamp() uint32 {
+	if x != nil {
+		return x.Timestamp
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxUcastFrames() uint64 {
-	if m != nil {
-		return m.RxUcastFrames
+func (x *PortStatistics) GetRxUcastFrames() uint64 {
+	if x != nil {
+		return x.RxUcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxMcastFrames() uint64 {
-	if m != nil {
-		return m.RxMcastFrames
+func (x *PortStatistics) GetRxMcastFrames() uint64 {
+	if x != nil {
+		return x.RxMcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxBcastFrames() uint64 {
-	if m != nil {
-		return m.RxBcastFrames
+func (x *PortStatistics) GetRxBcastFrames() uint64 {
+	if x != nil {
+		return x.RxBcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxErrorFrames() uint64 {
-	if m != nil {
-		return m.RxErrorFrames
+func (x *PortStatistics) GetRxErrorFrames() uint64 {
+	if x != nil {
+		return x.RxErrorFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxRightFrames() uint64 {
-	if m != nil {
-		return m.RxRightFrames
+func (x *PortStatistics) GetRxRightFrames() uint64 {
+	if x != nil {
+		return x.RxRightFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxUcastFrames() uint64 {
-	if m != nil {
-		return m.TxUcastFrames
+func (x *PortStatistics) GetTxUcastFrames() uint64 {
+	if x != nil {
+		return x.TxUcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxMcastFrames() uint64 {
-	if m != nil {
-		return m.TxMcastFrames
+func (x *PortStatistics) GetTxMcastFrames() uint64 {
+	if x != nil {
+		return x.TxMcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxBcastFrames() uint64 {
-	if m != nil {
-		return m.TxBcastFrames
+func (x *PortStatistics) GetTxBcastFrames() uint64 {
+	if x != nil {
+		return x.TxBcastFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetTxErrorFrames() uint64 {
-	if m != nil {
-		return m.TxErrorFrames
+func (x *PortStatistics) GetTxErrorFrames() uint64 {
+	if x != nil {
+		return x.TxErrorFrames
 	}
 	return 0
 }
 
-func (m *PortStatistics) GetRxDiscardedFrames() uint64 {
-	if m != nil {
-		return m.RxDiscardedFrames
+func (x *PortStatistics) GetRxDiscardedFrames() uint64 {
+	if x != nil {
+		return x.RxDiscardedFrames
 	}
 	return 0
 }
 
+var File_voltha_protos_common_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_common_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/common.proto\x12\x06common\"\x17\n" +
+	"\x03Key\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\"\x14\n" +
+	"\x02ID\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\"'\n" +
+	"\x03IDs\x12 \n" +
+	"\x05items\x18\x01 \x03(\v2\n" +
+	".common.IDR\x05items\"z\n" +
+	"\n" +
+	"Connection\x12\x1a\n" +
+	"\bendpoint\x18\x01 \x01(\tR\bendpoint\x12 \n" +
+	"\vcontextInfo\x18\x02 \x01(\tR\vcontextInfo\x12.\n" +
+	"\x13keep_alive_interval\x18\x03 \x01(\x03R\x11keepAliveInterval\"h\n" +
+	"\n" +
+	"AdminState\"Z\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x12\n" +
+	"\x0ePREPROVISIONED\x10\x01\x12\v\n" +
+	"\aENABLED\x10\x02\x12\f\n" +
+	"\bDISABLED\x10\x03\x12\x15\n" +
+	"\x11DOWNLOADING_IMAGE\x10\x04\"\x9f\x01\n" +
+	"\n" +
+	"OperStatus\"\x90\x01\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x0e\n" +
+	"\n" +
+	"DISCOVERED\x10\x01\x12\x0e\n" +
+	"\n" +
+	"ACTIVATING\x10\x02\x12\v\n" +
+	"\aTESTING\x10\x03\x12\n" +
+	"\n" +
+	"\x06ACTIVE\x10\x04\x12\n" +
+	"\n" +
+	"\x06FAILED\x10\x05\x12\x0f\n" +
+	"\vRECONCILING\x10\x06\x12\x16\n" +
+	"\x12RECONCILING_FAILED\x10\a\x12\f\n" +
+	"\bREBOOTED\x10\b\"E\n" +
+	"\rConnectStatus\"4\n" +
+	"\x05Types\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x0f\n" +
+	"\vUNREACHABLE\x10\x01\x12\r\n" +
+	"\tREACHABLE\x10\x02\"\xf2\x01\n" +
+	"\rOperationResp\x12=\n" +
+	"\x04code\x18\x01 \x01(\x0e2).common.OperationResp.OperationReturnCodeR\x04code\x12'\n" +
+	"\x0fadditional_info\x18\x02 \x01(\tR\x0eadditionalInfo\"y\n" +
+	"\x13OperationReturnCode\x12\x15\n" +
+	"\x11OPERATION_SUCCESS\x10\x00\x12\x15\n" +
+	"\x11OPERATION_FAILURE\x10\x01\x12\x19\n" +
+	"\x15OPERATION_UNSUPPORTED\x10\x02\x12\x19\n" +
+	"\x15OPERATION_IN_PROGRESS\x10\x03\"\xdb\x16\n" +
+	"\x0ePortStatistics\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x19\n" +
+	"\brx_bytes\x18\x02 \x01(\x06R\arxBytes\x12!\n" +
+	"\n" +
+	"rx_packets\x18\x03 \x01(\x06B\x02\x18\x01R\trxPackets\x12,\n" +
+	"\x10rx_ucast_packets\x18\x04 \x01(\x06B\x02\x18\x01R\x0erxUcastPackets\x12,\n" +
+	"\x10rx_mcast_packets\x18\x05 \x01(\x06B\x02\x18\x01R\x0erxMcastPackets\x12,\n" +
+	"\x10rx_bcast_packets\x18\x06 \x01(\x06B\x02\x18\x01R\x0erxBcastPackets\x12,\n" +
+	"\x10rx_error_packets\x18\a \x01(\x06B\x02\x18\x01R\x0erxErrorPackets\x12\x1b\n" +
+	"\trx_frames\x18\x11 \x01(\x06R\brxFrames\x12 \n" +
+	"\frx_frames_64\x18\x12 \x01(\x06R\n" +
+	"rxFrames64\x12'\n" +
+	"\x10rx_frames_65_127\x18\x13 \x01(\x06R\rrxFrames65127\x12)\n" +
+	"\x11rx_frames_128_255\x18\x14 \x01(\x06R\x0erxFrames128255\x12)\n" +
+	"\x11rx_frames_256_511\x18\x15 \x01(\x06R\x0erxFrames256511\x12+\n" +
+	"\x12rx_frames_512_1023\x18\x16 \x01(\x06R\x0frxFrames5121023\x12-\n" +
+	"\x13rx_frames_1024_1518\x18\x17 \x01(\x06R\x10rxFrames10241518\x12-\n" +
+	"\x13rx_frames_1519_2047\x18\x18 \x01(\x06R\x10rxFrames15192047\x12-\n" +
+	"\x13rx_frames_2048_4095\x18\x19 \x01(\x06R\x10rxFrames20484095\x12-\n" +
+	"\x13rx_frames_4096_9216\x18\x1a \x01(\x06R\x10rxFrames40969216\x12/\n" +
+	"\x14rx_frames_9217_16383\x18\x1b \x01(\x06R\x11rxFrames921716383\x12\"\n" +
+	"\rrx_crc_errors\x18\x0e \x01(\x06R\vrxCrcErrors\x12.\n" +
+	"\x12rxUndersizePackets\x18' \x01(\x06R\x12rxUndersizePackets\x12,\n" +
+	"\x11rxOversizePackets\x18( \x01(\x06R\x11rxOversizePackets\x12\x14\n" +
+	"\x05rxGem\x18+ \x01(\x06R\x05rxGem\x12\"\n" +
+	"\frxGemDropped\x18, \x01(\x06R\frxGemDropped\x12\x1c\n" +
+	"\trxGemIdle\x18- \x01(\x06R\trxGemIdle\x12&\n" +
+	"\x0erxGemCorrected\x18. \x01(\x06R\x0erxGemCorrected\x12\"\n" +
+	"\frxGemIllegal\x18/ \x01(\x06R\frxGemIllegal\x12(\n" +
+	"\x0frxFragmentError\x180 \x01(\x06R\x0frxFragmentError\x12*\n" +
+	"\x10rxPacketsDropped\x181 \x01(\x06R\x10rxPacketsDropped\x128\n" +
+	"\x17rxCpuOmciPacketsDropped\x182 \x01(\x06R\x17rxCpuOmciPacketsDropped\x12\x14\n" +
+	"\x05rxCpu\x183 \x01(\x06R\x05rxCpu\x12\x16\n" +
+	"\x06rxOmci\x184 \x01(\x06R\x06rxOmci\x124\n" +
+	"\x15rxOmciPacketsCrcError\x185 \x01(\x06R\x15rxOmciPacketsCrcError\x12,\n" +
+	"\x11rxFcsErrorPackets\x18> \x01(\x06R\x11rxFcsErrorPackets\x12\x19\n" +
+	"\btx_bytes\x18\b \x01(\x06R\atxBytes\x12!\n" +
+	"\n" +
+	"tx_packets\x18\t \x01(\x06B\x02\x18\x01R\ttxPackets\x12,\n" +
+	"\x10tx_ucast_packets\x18\n" +
+	" \x01(\x06B\x02\x18\x01R\x0etxUcastPackets\x12,\n" +
+	"\x10tx_mcast_packets\x18\v \x01(\x06B\x02\x18\x01R\x0etxMcastPackets\x12,\n" +
+	"\x10tx_bcast_packets\x18\f \x01(\x06B\x02\x18\x01R\x0etxBcastPackets\x12,\n" +
+	"\x10tx_error_packets\x18\r \x01(\x06B\x02\x18\x01R\x0etxErrorPackets\x12\x1b\n" +
+	"\ttx_frames\x18\x1c \x01(\x06R\btxFrames\x12 \n" +
+	"\ftx_frames_64\x18\x1d \x01(\x06R\n" +
+	"txFrames64\x12'\n" +
+	"\x10tx_frames_65_127\x18\x1e \x01(\x06R\rtxFrames65127\x12)\n" +
+	"\x11tx_frames_128_255\x18\x1f \x01(\x06R\x0etxFrames128255\x12)\n" +
+	"\x11tx_frames_256_511\x18  \x01(\x06R\x0etxFrames256511\x12+\n" +
+	"\x12tx_frames_512_1023\x18! \x01(\x06R\x0ftxFrames5121023\x12-\n" +
+	"\x13tx_frames_1024_1518\x18\" \x01(\x06R\x10txFrames10241518\x12-\n" +
+	"\x13tx_frames_1519_2047\x18# \x01(\x06R\x10txFrames15192047\x12-\n" +
+	"\x13tx_frames_2048_4095\x18$ \x01(\x06R\x10txFrames20484095\x12-\n" +
+	"\x13tx_frames_4096_9216\x18% \x01(\x06R\x10txFrames40969216\x12/\n" +
+	"\x14tx_frames_9217_16383\x18& \x01(\x06R\x11txFrames921716383\x12.\n" +
+	"\x12txUndersizePackets\x18) \x01(\x06R\x12txUndersizePackets\x12,\n" +
+	"\x11txOversizePackets\x18* \x01(\x06R\x11txOversizePackets\x12\x14\n" +
+	"\x05txGem\x186 \x01(\x06R\x05txGem\x12\x14\n" +
+	"\x05txCpu\x187 \x01(\x06R\x05txCpu\x12\x16\n" +
+	"\x06txOmci\x188 \x01(\x06R\x06txOmci\x126\n" +
+	"\x16txDroppedIllegalLength\x189 \x01(\x06R\x16txDroppedIllegalLength\x12,\n" +
+	"\x11txDroppedTpidMiss\x18: \x01(\x06R\x11txDroppedTpidMiss\x12*\n" +
+	"\x10txDroppedVidMiss\x18; \x01(\x06R\x10txDroppedVidMiss\x12&\n" +
+	"\x0etxDroppedTotal\x18< \x01(\x06R\x0etxDroppedTotal\x12\x1d\n" +
+	"\n" +
+	"bip_errors\x18\x0f \x01(\x06R\tbipErrors\x12\x1b\n" +
+	"\tbip_units\x18= \x01(\x06R\bbipUnits\x12\x1c\n" +
+	"\ttimestamp\x18\x10 \x01(\aR\ttimestamp\x12&\n" +
+	"\x0frx_ucast_frames\x18? \x01(\x06R\rrxUcastFrames\x12&\n" +
+	"\x0frx_mcast_frames\x18@ \x01(\x06R\rrxMcastFrames\x12&\n" +
+	"\x0frx_bcast_frames\x18A \x01(\x06R\rrxBcastFrames\x12&\n" +
+	"\x0frx_error_frames\x18B \x01(\x06R\rrxErrorFrames\x12&\n" +
+	"\x0frx_right_frames\x18C \x01(\x06R\rrxRightFrames\x12&\n" +
+	"\x0ftx_ucast_frames\x18D \x01(\x06R\rtxUcastFrames\x12&\n" +
+	"\x0ftx_mcast_frames\x18E \x01(\x06R\rtxMcastFrames\x12&\n" +
+	"\x0ftx_bcast_frames\x18F \x01(\x06R\rtxBcastFrames\x12&\n" +
+	"\x0ftx_error_frames\x18G \x01(\x06R\rtxErrorFrames\x12.\n" +
+	"\x13rx_discarded_frames\x18H \x01(\x06R\x11rxDiscardedFrames*\x1c\n" +
+	"\fTestModeKeys\x12\f\n" +
+	"\bapi_test\x10\x00BE\n" +
+	"\x13org.opencord.volthaZ.github.com/opencord/voltha-protos/v5/go/commonb\x06proto3"
+
+var (
+	file_voltha_protos_common_proto_rawDescOnce sync.Once
+	file_voltha_protos_common_proto_rawDescData []byte
+)
+
-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.RegisterType((*Key)(nil), "common.Key")
-	proto.RegisterType((*ID)(nil), "common.ID")
-	proto.RegisterType((*IDs)(nil), "common.IDs")
-	proto.RegisterType((*Connection)(nil), "common.Connection")
-	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((*PortStatistics)(nil), "common.PortStatistics")
+func file_voltha_protos_common_proto_rawDescGZIP() []byte {
+	file_voltha_protos_common_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_common_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_common_proto_rawDesc), len(file_voltha_protos_common_proto_rawDesc)))
+	})
+	return file_voltha_protos_common_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
+var file_voltha_protos_common_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_voltha_protos_common_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_voltha_protos_common_proto_goTypes = []any{
+	(TestModeKeys)(0),                      // 0: common.TestModeKeys
+	(AdminState_Types)(0),                  // 1: common.AdminState.Types
+	(OperStatus_Types)(0),                  // 2: common.OperStatus.Types
+	(ConnectStatus_Types)(0),               // 3: common.ConnectStatus.Types
+	(OperationResp_OperationReturnCode)(0), // 4: common.OperationResp.OperationReturnCode
+	(*Key)(nil),                            // 5: common.Key
+	(*ID)(nil),                             // 6: common.ID
+	(*IDs)(nil),                            // 7: common.IDs
+	(*Connection)(nil),                     // 8: common.Connection
+	(*AdminState)(nil),                     // 9: common.AdminState
+	(*OperStatus)(nil),                     // 10: common.OperStatus
+	(*ConnectStatus)(nil),                  // 11: common.ConnectStatus
+	(*OperationResp)(nil),                  // 12: common.OperationResp
+	(*PortStatistics)(nil),                 // 13: common.PortStatistics
+}
+var file_voltha_protos_common_proto_depIdxs = []int32{
+	6, // 0: common.IDs.items:type_name -> common.ID
+	4, // 1: common.OperationResp.code:type_name -> common.OperationResp.OperationReturnCode
+	2, // [2:2] is the sub-list for method output_type
+	2, // [2:2] is the sub-list for method input_type
+	2, // [2:2] is the sub-list for extension type_name
+	2, // [2:2] is the sub-list for extension extendee
+	0, // [0:2] is the sub-list for field type_name
+}
 
-var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 1578 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x97, 0xfd, 0x52, 0xdb, 0xca,
-	0x15, 0xc0, 0x63, 0x1c, 0x0c, 0x1c, 0x82, 0x31, 0x4b, 0x42, 0x36, 0x1f, 0xb7, 0xe5, 0xba, 0x6d,
-	0x42, 0x72, 0x13, 0x83, 0x84, 0x65, 0xa0, 0xed, 0x6d, 0xeb, 0x0f, 0x85, 0xab, 0x49, 0xb0, 0x19,
-	0xd9, 0xe6, 0xce, 0xdc, 0x7f, 0x34, 0xc6, 0xda, 0x80, 0x26, 0xb6, 0xa4, 0x59, 0x2d, 0x8c, 0xb9,
-	0x4f, 0xd1, 0x37, 0xe8, 0x83, 0xf5, 0x2d, 0xfa, 0x04, 0x9d, 0xdd, 0xd5, 0x5a, 0x92, 0xe5, 0xfc,
-	0xe7, 0x73, 0xce, 0xcf, 0xab, 0xfd, 0x38, 0xfb, 0xb3, 0x05, 0x2f, 0xef, 0x83, 0x09, 0xbb, 0x1d,
-	0x39, 0x21, 0x0d, 0x58, 0x10, 0x1d, 0x8e, 0x83, 0xe9, 0x34, 0xf0, 0x6b, 0x22, 0x42, 0x25, 0x19,
-	0x55, 0x9f, 0x43, 0xf1, 0x33, 0x79, 0x40, 0x15, 0x28, 0x7e, 0x23, 0x0f, 0xb8, 0xb0, 0x5f, 0x38,
-	0xd8, 0xb0, 0xf9, 0xc7, 0xea, 0x53, 0x58, 0xb1, 0x3a, 0xa8, 0x0c, 0x2b, 0x9e, 0x1b, 0xa7, 0x57,
-	0x3c, 0xb7, 0xfa, 0x16, 0x8a, 0x56, 0x27, 0x42, 0xfb, 0xb0, 0xea, 0x31, 0x32, 0x8d, 0x70, 0x61,
-	0xbf, 0x78, 0xb0, 0xa9, 0x43, 0x2d, 0x1e, 0xdb, 0xea, 0xd8, 0xb2, 0x50, 0xfd, 0x1d, 0xa0, 0x1d,
-	0xf8, 0x3e, 0x19, 0x33, 0x2f, 0xf0, 0xd1, 0x4b, 0x58, 0x27, 0xbe, 0x1b, 0x06, 0x9e, 0xcf, 0xe2,
-	0xc1, 0xe6, 0x31, 0xda, 0x87, 0xcd, 0x71, 0xe0, 0x33, 0x32, 0x63, 0x96, 0xff, 0x35, 0xc0, 0x2b,
-	0xa2, 0x9c, 0x4e, 0xa1, 0x1a, 0xec, 0x7e, 0x23, 0x24, 0x74, 0x46, 0x13, 0xef, 0x9e, 0x38, 0x9e,
-	0xcf, 0x08, 0xbd, 0x1f, 0x4d, 0x70, 0x71, 0xbf, 0x70, 0x50, 0xb4, 0x77, 0x78, 0xa9, 0xc9, 0x2b,
-	0x56, 0x5c, 0xa8, 0xde, 0x02, 0x34, 0xdd, 0xa9, 0xe7, 0xf7, 0xd9, 0x88, 0x91, 0xea, 0x6f, 0xb0,
-	0x3a, 0x78, 0x08, 0x49, 0x84, 0x36, 0x61, 0x6d, 0xd8, 0xfd, 0xdc, 0xed, 0xfd, 0xda, 0xad, 0x3c,
-	0x42, 0x08, 0xca, 0x97, 0xb6, 0x79, 0x69, 0xf7, 0xae, 0xac, 0xbe, 0xd5, 0xeb, 0x9a, 0x9d, 0x4a,
-	0x81, 0x03, 0x66, 0xb7, 0xd9, 0xfa, 0x62, 0x76, 0x2a, 0x2b, 0xe8, 0x09, 0xac, 0x77, 0xac, 0xbe,
-	0x8c, 0x8a, 0xe8, 0x19, 0xec, 0x74, 0x7a, 0xbf, 0x76, 0xbf, 0xf4, 0x9a, 0x1d, 0xab, 0x7b, 0xee,
-	0x58, 0x17, 0xcd, 0x73, 0xb3, 0xf2, 0xb8, 0xfa, 0x9f, 0x02, 0x40, 0x2f, 0x24, 0x94, 0x3f, 0xe9,
-	0x2e, 0xaa, 0xfe, 0xbb, 0xb0, 0xf4, 0x59, 0x65, 0x80, 0x8e, 0xd5, 0x6f, 0xf7, 0xae, 0x4c, 0x5b,
-	0x3c, 0xa7, 0x0c, 0xd0, 0x6c, 0x0f, 0xac, 0xab, 0xe6, 0xc0, 0xea, 0x9e, 0x57, 0x56, 0x38, 0x3c,
-	0x30, 0xfb, 0x22, 0x28, 0x22, 0x80, 0x92, 0x28, 0x9a, 0x95, 0xc7, 0xfc, 0xf3, 0xa7, 0xa6, 0xc5,
-	0x67, 0xb0, 0x8a, 0xb6, 0x61, 0xd3, 0x36, 0xdb, 0xbd, 0x6e, 0xdb, 0xfa, 0xc2, 0xc1, 0x12, 0xda,
-	0x03, 0x94, 0x4a, 0x38, 0x31, 0xb8, 0xc6, 0x27, 0x6e, 0x9b, 0xad, 0x5e, 0x6f, 0x60, 0x76, 0x2a,
-	0xeb, 0x55, 0x13, 0xb6, 0xe2, 0x73, 0x88, 0xe7, 0x58, 0x5f, 0x3a, 0xc5, 0x6d, 0xd8, 0x1c, 0x76,
-	0x6d, 0xb3, 0xd9, 0xfe, 0x85, 0xaf, 0xb8, 0x52, 0x40, 0x5b, 0xb0, 0x91, 0x84, 0x2b, 0xd5, 0xff,
-	0x15, 0x60, 0x8b, 0x2f, 0x74, 0xc4, 0x8f, 0xd3, 0x26, 0x51, 0x88, 0x7e, 0x86, 0xc7, 0xe3, 0xc0,
-	0x25, 0xe2, 0x38, 0xcb, 0xfa, 0x3b, 0xd5, 0x01, 0x19, 0x28, 0x1d, 0xb1, 0x3b, 0xea, 0xb7, 0x03,
-	0x97, 0xd8, 0xe2, 0x6b, 0xe8, 0x2d, 0x6c, 0x8f, 0x5c, 0xd7, 0xe3, 0xb5, 0xd1, 0xc4, 0xf1, 0x92,
-	0x93, 0x2f, 0x27, 0x69, 0x7e, 0xf8, 0xd5, 0x07, 0xd8, 0x5d, 0x32, 0x0a, 0x3f, 0x90, 0xde, 0xa5,
-	0x69, 0x37, 0x07, 0x56, 0xaf, 0xeb, 0xf4, 0x87, 0xed, 0xb6, 0xd9, 0xef, 0x57, 0x1e, 0x65, 0xd3,
-	0x7c, 0x4b, 0x86, 0x36, 0x5f, 0xcd, 0x0b, 0x78, 0x96, 0xa4, 0x87, 0xdd, 0xfe, 0xf0, 0xf2, 0xb2,
-	0x67, 0x0f, 0xc4, 0x39, 0x67, 0x4a, 0x56, 0xd7, 0xb9, 0xb4, 0x7b, 0xe7, 0x36, 0x1f, 0xac, 0x58,
-	0xfd, 0xef, 0x1e, 0x94, 0x2f, 0x03, 0x2a, 0x76, 0xce, 0x8b, 0x98, 0x37, 0x8e, 0xd0, 0x73, 0x58,
-	0xf3, 0x7c, 0xf6, 0xd5, 0x89, 0x2f, 0xc5, 0x9a, 0x5d, 0xe2, 0xa1, 0xe5, 0xa2, 0x17, 0xb0, 0x4e,
-	0x67, 0xce, 0xf5, 0x03, 0x23, 0x91, 0x58, 0x48, 0xc9, 0x5e, 0xa3, 0xb3, 0x16, 0x0f, 0xd1, 0x8f,
-	0x00, 0x74, 0xe6, 0x84, 0xa3, 0xf1, 0x37, 0xc2, 0x22, 0xd1, 0xb5, 0xa5, 0xd6, 0x0a, 0x2e, 0xd8,
-	0x1b, 0x74, 0x76, 0x29, 0x93, 0xe8, 0x03, 0x54, 0xe8, 0xcc, 0xb9, 0x1b, 0x8f, 0x22, 0x36, 0x07,
-	0x1f, 0xcf, 0xc1, 0x32, 0x9d, 0x0d, 0x79, 0x29, 0x4b, 0x4f, 0x33, 0xf4, 0x6a, 0x9a, 0xbe, 0xc8,
-	0xd3, 0xd7, 0x19, 0xba, 0x94, 0xa6, 0x5b, 0x79, 0x9a, 0x50, 0x1a, 0xd0, 0x39, 0xbd, 0x96, 0xa6,
-	0x4d, 0x5e, 0x52, 0xf4, 0x2b, 0xd8, 0xa0, 0x33, 0xe7, 0x2b, 0x1d, 0x4d, 0x49, 0x84, 0x77, 0xc4,
-	0xb2, 0xd7, 0xe9, 0xec, 0x93, 0x88, 0xd1, 0x3e, 0x3c, 0x99, 0x17, 0x9d, 0x46, 0x1d, 0x23, 0x51,
-	0x07, 0x55, 0x6f, 0xd4, 0xd1, 0x5b, 0xf1, 0x30, 0x45, 0x18, 0x8e, 0xa6, 0x9f, 0xe0, 0x5d, 0x41,
-	0x6d, 0xcd, 0x29, 0x43, 0xd3, 0x4f, 0xd0, 0x3b, 0xd8, 0x49, 0x40, 0x4d, 0x3f, 0x75, 0x74, 0xc3,
-	0xc0, 0x4f, 0x05, 0x59, 0x56, 0xa4, 0xa6, 0x9f, 0xea, 0x86, 0x91, 0x45, 0x75, 0xa3, 0xe1, 0x18,
-	0x9a, 0x86, 0x9f, 0x65, 0x51, 0xdd, 0x68, 0x18, 0x9a, 0x86, 0x7e, 0x02, 0x94, 0xa0, 0x86, 0xa6,
-	0x3b, 0xda, 0x91, 0x7e, 0x8c, 0xf7, 0x04, 0xbb, 0xad, 0x58, 0x43, 0xd3, 0x79, 0x1a, 0x7d, 0x84,
-	0xdd, 0xd4, 0x14, 0x8e, 0xf4, 0xba, 0xa3, 0x19, 0xda, 0x29, 0x7e, 0x2e, 0xe8, 0xca, 0x7c, 0x12,
-	0x47, 0x7a, 0x9d, 0xe7, 0x17, 0x70, 0x43, 0x3b, 0x73, 0xf4, 0xa3, 0xfa, 0x09, 0xc6, 0x0b, 0xb8,
-	0xa1, 0x9d, 0xf1, 0x7c, 0x16, 0xd7, 0x8f, 0xea, 0xa7, 0x4e, 0xfd, 0xe8, 0xcc, 0xc0, 0x2f, 0xb2,
-	0x38, 0x2f, 0xf0, 0x7c, 0x16, 0xaf, 0x1f, 0x9d, 0x35, 0x9c, 0x33, 0x5d, 0x6b, 0xe0, 0x97, 0x59,
-	0x9c, 0x17, 0x78, 0x1e, 0x1d, 0xc2, 0xd3, 0x04, 0x3f, 0xd3, 0xb5, 0x13, 0x47, 0x6b, 0x1c, 0x9f,
-	0x1e, 0xe3, 0x57, 0x82, 0xdf, 0x51, 0x3c, 0xaf, 0x88, 0x02, 0xaa, 0xc2, 0x16, 0x9d, 0x39, 0x63,
-	0x3a, 0x96, 0x9d, 0x10, 0xe1, 0xb2, 0x20, 0x37, 0xe9, 0xac, 0x4d, 0xc7, 0xa2, 0x03, 0x22, 0x54,
-	0xe3, 0xbb, 0x37, 0xf4, 0x5d, 0x42, 0x23, 0xef, 0x77, 0x12, 0x77, 0x04, 0x7e, 0x2b, 0xc0, 0x25,
-	0x15, 0xf4, 0x81, 0x1f, 0x4c, 0xef, 0x3e, 0x8b, 0x1f, 0xa8, 0x19, 0x2c, 0x14, 0xd0, 0x53, 0x58,
-	0xa5, 0xb3, 0x73, 0x32, 0xc5, 0x3f, 0x09, 0x42, 0x06, 0xa8, 0xca, 0x5b, 0xea, 0x9c, 0x4c, 0x3b,
-	0x34, 0x08, 0x43, 0xe2, 0xe2, 0x0f, 0xa2, 0x98, 0xc9, 0xa1, 0xd7, 0xbc, 0x27, 0xcf, 0xc9, 0xd4,
-	0x72, 0x27, 0x04, 0x7f, 0x14, 0x40, 0x92, 0x40, 0x6f, 0xa0, 0x2c, 0x82, 0x76, 0x40, 0x29, 0x19,
-	0x33, 0xe2, 0xe2, 0x9a, 0xea, 0x8d, 0x74, 0x76, 0xfe, 0x24, 0x6b, 0x32, 0x21, 0x37, 0xa3, 0x09,
-	0x3e, 0x4c, 0x3d, 0x29, 0xce, 0xa1, 0x03, 0x90, 0x5d, 0x72, 0x33, 0x25, 0x3e, 0x13, 0xbb, 0x82,
-	0x8f, 0x52, 0xcd, 0x93, 0xa4, 0xd1, 0x7b, 0xde, 0xe8, 0xf1, 0xd2, 0xd4, 0xdc, 0x35, 0x75, 0x58,
-	0xd9, 0x3c, 0x3a, 0x85, 0xe7, 0x74, 0xd6, 0x0e, 0xef, 0x7a, 0xd3, 0xb1, 0xb7, 0xf0, 0x15, 0x5d,
-	0x7c, 0xe5, 0x7b, 0x65, 0xb9, 0x67, 0xed, 0xf0, 0x0e, 0x1f, 0xab, 0x3d, 0x6b, 0x87, 0x77, 0x68,
-	0x0f, 0x4a, 0x74, 0xc6, 0x69, 0x5c, 0x17, 0xe9, 0x38, 0x42, 0x75, 0x78, 0x26, 0x3f, 0xc5, 0xa3,
-	0xa8, 0x93, 0xc5, 0x86, 0xc0, 0x96, 0x17, 0xe5, 0x29, 0x7e, 0x1a, 0x47, 0x69, 0x0d, 0xe0, 0x7f,
-	0xcc, 0xfb, 0x28, 0x5b, 0xe0, 0x56, 0x64, 0xca, 0x8a, 0xeb, 0xd2, 0x8a, 0x2c, 0xb1, 0x22, 0x4b,
-	0xac, 0xb8, 0x91, 0x58, 0x91, 0xa5, 0xad, 0xc8, 0x16, 0xad, 0x08, 0x89, 0x8b, 0x58, 0xce, 0x8a,
-	0x6c, 0xd1, 0x8a, 0x9b, 0x69, 0xfa, 0x22, 0x4f, 0x67, 0xad, 0xf8, 0x24, 0x4d, 0xb7, 0xf2, 0x74,
-	0xd6, 0x8a, 0x5b, 0x69, 0x7a, 0xd1, 0x8a, 0x6c, 0x6e, 0xc5, 0xd7, 0xd2, 0x8a, 0x2c, 0x65, 0x45,
-	0x96, 0xb6, 0xe2, 0x0f, 0xd2, 0x8a, 0x2c, 0x63, 0x45, 0xb6, 0x68, 0xc5, 0x3f, 0x48, 0x2b, 0xb2,
-	0x45, 0x2b, 0xb2, 0x9c, 0x15, 0xff, 0x28, 0xdb, 0x99, 0xe5, 0xac, 0xc8, 0x72, 0x56, 0xdc, 0xcf,
-	0xa2, 0x89, 0x15, 0x59, 0xde, 0x8a, 0x3f, 0xca, 0xc6, 0x66, 0x79, 0x2b, 0xb2, 0x25, 0x56, 0xac,
-	0xca, 0xde, 0x66, 0x4b, 0xac, 0xc8, 0x96, 0x58, 0xf1, 0x4f, 0x0b, 0x78, 0xca, 0x8a, 0x6c, 0x89,
-	0x15, 0xff, 0x9c, 0xc5, 0xd3, 0x56, 0x64, 0x4b, 0xac, 0xf8, 0x97, 0x2c, 0x9e, 0xb6, 0x22, 0x5b,
-	0x66, 0xc5, 0x37, 0xb2, 0x9b, 0x59, 0xce, 0x8a, 0x35, 0xbe, 0x33, 0x39, 0xe3, 0xbd, 0x93, 0xc6,
-	0x63, 0x4b, 0x8d, 0xc7, 0x72, 0xc6, 0x7b, 0xaf, 0x46, 0x5f, 0x62, 0x3c, 0x26, 0x8c, 0xd7, 0x90,
-	0xb7, 0x57, 0x04, 0x32, 0xcb, 0xef, 0xf4, 0x89, 0xca, 0xc6, 0x77, 0x9a, 0xc9, 0x3b, 0x7d, 0x2a,
-	0xef, 0xb4, 0x8c, 0x50, 0x03, 0xf6, 0xd8, 0x2c, 0xd6, 0x41, 0x6c, 0xa9, 0x2f, 0xc4, 0xbf, 0x61,
-	0xb7, 0xf8, 0x4c, 0x70, 0xdf, 0xa9, 0xca, 0x99, 0xc6, 0x95, 0x41, 0xe8, 0xb9, 0x17, 0x5e, 0x14,
-	0xe1, 0xbf, 0xaa, 0x99, 0x2e, 0x14, 0xb8, 0xcd, 0xe6, 0xc9, 0xab, 0x18, 0xfe, 0x9b, 0xda, 0xe4,
-	0x6c, 0x9e, 0xfb, 0x36, 0x19, 0x20, 0x60, 0xa3, 0x09, 0xfe, 0xbb, 0xea, 0xba, 0x74, 0x16, 0xfd,
-	0x00, 0x70, 0xed, 0x85, 0xea, 0xe7, 0x66, 0x5b, 0x6a, 0xfb, 0xda, 0x0b, 0xe3, 0x1f, 0x9b, 0x57,
-	0xc0, 0x03, 0xe7, 0xce, 0xf7, 0x58, 0x84, 0x7f, 0x96, 0x57, 0xea, 0xda, 0x0b, 0x87, 0x3c, 0xe6,
-	0xc6, 0x67, 0xde, 0x94, 0x44, 0x6c, 0x34, 0x0d, 0x71, 0x45, 0xfc, 0x2d, 0x4b, 0x12, 0xe8, 0x0d,
-	0xb7, 0x74, 0x6c, 0x91, 0xf8, 0x4e, 0xfe, 0x53, 0xfd, 0xc7, 0x10, 0x02, 0x89, 0x2f, 0xa6, 0xe4,
-	0xa6, 0x69, 0xee, 0x5f, 0x8a, 0xbb, 0xc8, 0x71, 0xd7, 0x69, 0xae, 0xa9, 0xb8, 0x56, 0x8e, 0x93,
-	0xce, 0x88, 0xb9, 0x96, 0xe2, 0xc4, 0xaa, 0x32, 0x1c, 0xf5, 0x6e, 0x6e, 0xe7, 0xe3, 0xb5, 0x15,
-	0x67, 0xf3, 0x6c, 0xc2, 0xb1, 0x85, 0x75, 0x74, 0x94, 0x15, 0x16, 0xd6, 0xc1, 0x16, 0xd6, 0x61,
-	0x2a, 0xee, 0x22, 0xc7, 0x65, 0xd6, 0xf1, 0x49, 0x71, 0xad, 0x1c, 0x97, 0x59, 0xc7, 0xb9, 0xe2,
-	0xd2, 0xeb, 0xa8, 0x89, 0xff, 0x24, 0xae, 0x17, 0x8d, 0x47, 0xd4, 0x25, 0xae, 0x62, 0x7f, 0x51,
-	0xbf, 0x0d, 0x1d, 0x55, 0x91, 0xfc, 0xfb, 0xd7, 0xf0, 0x64, 0x40, 0x22, 0x76, 0x11, 0xb8, 0xe4,
-	0x33, 0x79, 0x88, 0xf8, 0x7b, 0xcb, 0x28, 0xf4, 0x1c, 0x46, 0x22, 0x56, 0x79, 0xd4, 0x32, 0x61,
-	0x37, 0xa0, 0x37, 0xb5, 0x20, 0x24, 0xfe, 0x38, 0xa0, 0x6e, 0x4d, 0xbe, 0xca, 0xfe, 0x56, 0xbb,
-	0xf1, 0xd8, 0xed, 0xdd, 0x35, 0x7f, 0xdb, 0x38, 0x54, 0xb5, 0x43, 0x59, 0xfb, 0x18, 0xbf, 0xe6,
-	0xde, 0x1b, 0x87, 0x37, 0x41, 0xfc, 0xb2, 0x7b, 0x5d, 0x12, 0xc9, 0xe3, 0xff, 0x07, 0x00, 0x00,
-	0xff, 0xff, 0x70, 0x09, 0x2f, 0xa5, 0x0b, 0x0f, 0x00, 0x00,
+func init() { file_voltha_protos_common_proto_init() }
+func file_voltha_protos_common_proto_init() {
+	if File_voltha_protos_common_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_common_proto_rawDesc), len(file_voltha_protos_common_proto_rawDesc)),
+			NumEnums:      5,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_common_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_common_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_common_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_common_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_common_proto = out.File
+	file_voltha_protos_common_proto_goTypes = nil
+	file_voltha_protos_common_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/core_adapter/core_adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/core_adapter/core_adapter.pb.go
index 3259b05..c79baf3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/core_adapter/core_adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/core_adapter/core_adapter.pb.go
@@ -1,1177 +1,1384 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/core_adapter.proto
 
 package core_adapter
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	omci "github.com/opencord/voltha-protos/v5/go/omci"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
 	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AdapterRegistration struct {
-	Adapter              *voltha.Adapter     `protobuf:"bytes,1,opt,name=adapter,proto3" json:"adapter,omitempty"`
-	DTypes               *voltha.DeviceTypes `protobuf:"bytes,2,opt,name=dTypes,proto3" json:"dTypes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Adapter       *voltha.Adapter        `protobuf:"bytes,1,opt,name=adapter,proto3" json:"adapter,omitempty"`
+	DTypes        *voltha.DeviceTypes    `protobuf:"bytes,2,opt,name=dTypes,proto3" json:"dTypes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AdapterRegistration) Reset()         { *m = AdapterRegistration{} }
-func (m *AdapterRegistration) String() string { return proto.CompactTextString(m) }
-func (*AdapterRegistration) ProtoMessage()    {}
+func (x *AdapterRegistration) Reset() {
+	*x = AdapterRegistration{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdapterRegistration) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdapterRegistration) ProtoMessage() {}
+
+func (x *AdapterRegistration) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdapterRegistration.ProtoReflect.Descriptor instead.
 func (*AdapterRegistration) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{0}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AdapterRegistration) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AdapterRegistration.Unmarshal(m, b)
-}
-func (m *AdapterRegistration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AdapterRegistration.Marshal(b, m, deterministic)
-}
-func (m *AdapterRegistration) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AdapterRegistration.Merge(m, src)
-}
-func (m *AdapterRegistration) XXX_Size() int {
-	return xxx_messageInfo_AdapterRegistration.Size(m)
-}
-func (m *AdapterRegistration) XXX_DiscardUnknown() {
-	xxx_messageInfo_AdapterRegistration.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AdapterRegistration proto.InternalMessageInfo
-
-func (m *AdapterRegistration) GetAdapter() *voltha.Adapter {
-	if m != nil {
-		return m.Adapter
+func (x *AdapterRegistration) GetAdapter() *voltha.Adapter {
+	if x != nil {
+		return x.Adapter
 	}
 	return nil
 }
 
-func (m *AdapterRegistration) GetDTypes() *voltha.DeviceTypes {
-	if m != nil {
-		return m.DTypes
+func (x *AdapterRegistration) GetDTypes() *voltha.DeviceTypes {
+	if x != nil {
+		return x.DTypes
 	}
 	return nil
 }
 
 type ChildDeviceFilter struct {
-	ParentId             string   `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
-	SerialNumber         string   `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	OnuId                uint32   `protobuf:"varint,3,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	ParentPortNo         uint32   `protobuf:"varint,4,opt,name=parent_port_no,json=parentPortNo,proto3" json:"parent_port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ParentId      string                 `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+	SerialNumber  string                 `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	OnuId         uint32                 `protobuf:"varint,3,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	ParentPortNo  uint32                 `protobuf:"varint,4,opt,name=parent_port_no,json=parentPortNo,proto3" json:"parent_port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ChildDeviceFilter) Reset()         { *m = ChildDeviceFilter{} }
-func (m *ChildDeviceFilter) String() string { return proto.CompactTextString(m) }
-func (*ChildDeviceFilter) ProtoMessage()    {}
+func (x *ChildDeviceFilter) Reset() {
+	*x = ChildDeviceFilter{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ChildDeviceFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChildDeviceFilter) ProtoMessage() {}
+
+func (x *ChildDeviceFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChildDeviceFilter.ProtoReflect.Descriptor instead.
 func (*ChildDeviceFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{1}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *ChildDeviceFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChildDeviceFilter.Unmarshal(m, b)
-}
-func (m *ChildDeviceFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChildDeviceFilter.Marshal(b, m, deterministic)
-}
-func (m *ChildDeviceFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChildDeviceFilter.Merge(m, src)
-}
-func (m *ChildDeviceFilter) XXX_Size() int {
-	return xxx_messageInfo_ChildDeviceFilter.Size(m)
-}
-func (m *ChildDeviceFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChildDeviceFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChildDeviceFilter proto.InternalMessageInfo
-
-func (m *ChildDeviceFilter) GetParentId() string {
-	if m != nil {
-		return m.ParentId
+func (x *ChildDeviceFilter) GetParentId() string {
+	if x != nil {
+		return x.ParentId
 	}
 	return ""
 }
 
-func (m *ChildDeviceFilter) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *ChildDeviceFilter) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func (m *ChildDeviceFilter) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *ChildDeviceFilter) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *ChildDeviceFilter) GetParentPortNo() uint32 {
-	if m != nil {
-		return m.ParentPortNo
+func (x *ChildDeviceFilter) GetParentPortNo() uint32 {
+	if x != nil {
+		return x.ParentPortNo
 	}
 	return 0
 }
 
 type PortFilter struct {
-	DeviceId             string               `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Port                 uint32               `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	PortType             voltha.Port_PortType `protobuf:"varint,3,opt,name=port_type,json=portType,proto3,enum=device.Port_PortType" json:"port_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
+	PortType      voltha.Port_PortType   `protobuf:"varint,3,opt,name=port_type,json=portType,proto3,enum=device.Port_PortType" json:"port_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PortFilter) Reset()         { *m = PortFilter{} }
-func (m *PortFilter) String() string { return proto.CompactTextString(m) }
-func (*PortFilter) ProtoMessage()    {}
+func (x *PortFilter) Reset() {
+	*x = PortFilter{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PortFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PortFilter) ProtoMessage() {}
+
+func (x *PortFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PortFilter.ProtoReflect.Descriptor instead.
 func (*PortFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{2}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *PortFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PortFilter.Unmarshal(m, b)
-}
-func (m *PortFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PortFilter.Marshal(b, m, deterministic)
-}
-func (m *PortFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortFilter.Merge(m, src)
-}
-func (m *PortFilter) XXX_Size() int {
-	return xxx_messageInfo_PortFilter.Size(m)
-}
-func (m *PortFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_PortFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PortFilter proto.InternalMessageInfo
-
-func (m *PortFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PortFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PortFilter) GetPort() uint32 {
-	if m != nil {
-		return m.Port
+func (x *PortFilter) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *PortFilter) GetPortType() voltha.Port_PortType {
-	if m != nil {
-		return m.PortType
+func (x *PortFilter) GetPortType() voltha.Port_PortType {
+	if x != nil {
+		return x.PortType
 	}
-	return voltha.Port_UNKNOWN
+	return voltha.Port_PortType(0)
 }
 
 type DeviceDiscovery struct {
-	ParentId             string   `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
-	ParentPortNo         uint32   `protobuf:"varint,2,opt,name=parent_port_no,json=parentPortNo,proto3" json:"parent_port_no,omitempty"`
-	ChildDeviceType      string   `protobuf:"bytes,3,opt,name=child_device_type,json=childDeviceType,proto3" json:"child_device_type,omitempty"`
-	ChannelId            uint32   `protobuf:"varint,4,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	VendorId             string   `protobuf:"bytes,5,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
-	SerialNumber         string   `protobuf:"bytes,6,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	OnuId                uint32   `protobuf:"varint,7,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	ParentId        string                 `protobuf:"bytes,1,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
+	ParentPortNo    uint32                 `protobuf:"varint,2,opt,name=parent_port_no,json=parentPortNo,proto3" json:"parent_port_no,omitempty"`
+	ChildDeviceType string                 `protobuf:"bytes,3,opt,name=child_device_type,json=childDeviceType,proto3" json:"child_device_type,omitempty"`
+	ChannelId       uint32                 `protobuf:"varint,4,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
+	VendorId        string                 `protobuf:"bytes,5,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
+	SerialNumber    string                 `protobuf:"bytes,6,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	OnuId           uint32                 `protobuf:"varint,7,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceDiscovery) Reset()         { *m = DeviceDiscovery{} }
-func (m *DeviceDiscovery) String() string { return proto.CompactTextString(m) }
-func (*DeviceDiscovery) ProtoMessage()    {}
+func (x *DeviceDiscovery) Reset() {
+	*x = DeviceDiscovery{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceDiscovery) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceDiscovery) ProtoMessage() {}
+
+func (x *DeviceDiscovery) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceDiscovery.ProtoReflect.Descriptor instead.
 func (*DeviceDiscovery) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{3}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *DeviceDiscovery) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceDiscovery.Unmarshal(m, b)
-}
-func (m *DeviceDiscovery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceDiscovery.Marshal(b, m, deterministic)
-}
-func (m *DeviceDiscovery) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceDiscovery.Merge(m, src)
-}
-func (m *DeviceDiscovery) XXX_Size() int {
-	return xxx_messageInfo_DeviceDiscovery.Size(m)
-}
-func (m *DeviceDiscovery) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceDiscovery.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceDiscovery proto.InternalMessageInfo
-
-func (m *DeviceDiscovery) GetParentId() string {
-	if m != nil {
-		return m.ParentId
+func (x *DeviceDiscovery) GetParentId() string {
+	if x != nil {
+		return x.ParentId
 	}
 	return ""
 }
 
-func (m *DeviceDiscovery) GetParentPortNo() uint32 {
-	if m != nil {
-		return m.ParentPortNo
+func (x *DeviceDiscovery) GetParentPortNo() uint32 {
+	if x != nil {
+		return x.ParentPortNo
 	}
 	return 0
 }
 
-func (m *DeviceDiscovery) GetChildDeviceType() string {
-	if m != nil {
-		return m.ChildDeviceType
+func (x *DeviceDiscovery) GetChildDeviceType() string {
+	if x != nil {
+		return x.ChildDeviceType
 	}
 	return ""
 }
 
-func (m *DeviceDiscovery) GetChannelId() uint32 {
-	if m != nil {
-		return m.ChannelId
+func (x *DeviceDiscovery) GetChannelId() uint32 {
+	if x != nil {
+		return x.ChannelId
 	}
 	return 0
 }
 
-func (m *DeviceDiscovery) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *DeviceDiscovery) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *DeviceDiscovery) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *DeviceDiscovery) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func (m *DeviceDiscovery) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *DeviceDiscovery) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type DeviceStateFilter struct {
-	DeviceId             string                     `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	ParentDeviceId       string                     `protobuf:"bytes,2,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
-	OperStatus           common.OperStatus_Types    `protobuf:"varint,3,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	ConnStatus           common.ConnectStatus_Types `protobuf:"varint,4,opt,name=conn_status,json=connStatus,proto3,enum=common.ConnectStatus_Types" json:"conn_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
+	state          protoimpl.MessageState     `protogen:"open.v1"`
+	DeviceId       string                     `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	ParentDeviceId string                     `protobuf:"bytes,2,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
+	OperStatus     common.OperStatus_Types    `protobuf:"varint,3,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
+	ConnStatus     common.ConnectStatus_Types `protobuf:"varint,4,opt,name=conn_status,json=connStatus,proto3,enum=common.ConnectStatus_Types" json:"conn_status,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *DeviceStateFilter) Reset()         { *m = DeviceStateFilter{} }
-func (m *DeviceStateFilter) String() string { return proto.CompactTextString(m) }
-func (*DeviceStateFilter) ProtoMessage()    {}
+func (x *DeviceStateFilter) Reset() {
+	*x = DeviceStateFilter{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceStateFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceStateFilter) ProtoMessage() {}
+
+func (x *DeviceStateFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceStateFilter.ProtoReflect.Descriptor instead.
 func (*DeviceStateFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{4}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *DeviceStateFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceStateFilter.Unmarshal(m, b)
-}
-func (m *DeviceStateFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceStateFilter.Marshal(b, m, deterministic)
-}
-func (m *DeviceStateFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceStateFilter.Merge(m, src)
-}
-func (m *DeviceStateFilter) XXX_Size() int {
-	return xxx_messageInfo_DeviceStateFilter.Size(m)
-}
-func (m *DeviceStateFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceStateFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceStateFilter proto.InternalMessageInfo
-
-func (m *DeviceStateFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceStateFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeviceStateFilter) GetParentDeviceId() string {
-	if m != nil {
-		return m.ParentDeviceId
+func (x *DeviceStateFilter) GetParentDeviceId() string {
+	if x != nil {
+		return x.ParentDeviceId
 	}
 	return ""
 }
 
-func (m *DeviceStateFilter) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *DeviceStateFilter) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
-func (m *DeviceStateFilter) GetConnStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnStatus
+func (x *DeviceStateFilter) GetConnStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnStatus
 	}
-	return common.ConnectStatus_UNKNOWN
+	return common.ConnectStatus_Types(0)
 }
 
 type PortState struct {
-	DeviceId             string                  `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PortType             voltha.Port_PortType    `protobuf:"varint,2,opt,name=port_type,json=portType,proto3,enum=device.Port_PortType" json:"port_type,omitempty"`
-	PortNo               uint32                  `protobuf:"varint,3,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	OperStatus           common.OperStatus_Types `protobuf:"varint,4,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state         protoimpl.MessageState  `protogen:"open.v1"`
+	DeviceId      string                  `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PortType      voltha.Port_PortType    `protobuf:"varint,2,opt,name=port_type,json=portType,proto3,enum=device.Port_PortType" json:"port_type,omitempty"`
+	PortNo        uint32                  `protobuf:"varint,3,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	OperStatus    common.OperStatus_Types `protobuf:"varint,4,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PortState) Reset()         { *m = PortState{} }
-func (m *PortState) String() string { return proto.CompactTextString(m) }
-func (*PortState) ProtoMessage()    {}
+func (x *PortState) Reset() {
+	*x = PortState{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PortState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PortState) ProtoMessage() {}
+
+func (x *PortState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PortState.ProtoReflect.Descriptor instead.
 func (*PortState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{5}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *PortState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PortState.Unmarshal(m, b)
-}
-func (m *PortState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PortState.Marshal(b, m, deterministic)
-}
-func (m *PortState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortState.Merge(m, src)
-}
-func (m *PortState) XXX_Size() int {
-	return xxx_messageInfo_PortState.Size(m)
-}
-func (m *PortState) XXX_DiscardUnknown() {
-	xxx_messageInfo_PortState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PortState proto.InternalMessageInfo
-
-func (m *PortState) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PortState) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PortState) GetPortType() voltha.Port_PortType {
-	if m != nil {
-		return m.PortType
+func (x *PortState) GetPortType() voltha.Port_PortType {
+	if x != nil {
+		return x.PortType
 	}
-	return voltha.Port_UNKNOWN
+	return voltha.Port_PortType(0)
 }
 
-func (m *PortState) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *PortState) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *PortState) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *PortState) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
 type PortStateFilter struct {
-	DeviceId             string                  `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PortTypeFilter       uint32                  `protobuf:"varint,2,opt,name=port_type_filter,json=portTypeFilter,proto3" json:"port_type_filter,omitempty"`
-	OperStatus           common.OperStatus_Types `protobuf:"varint,4,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state          protoimpl.MessageState  `protogen:"open.v1"`
+	DeviceId       string                  `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PortTypeFilter uint32                  `protobuf:"varint,2,opt,name=port_type_filter,json=portTypeFilter,proto3" json:"port_type_filter,omitempty"`
+	OperStatus     common.OperStatus_Types `protobuf:"varint,4,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *PortStateFilter) Reset()         { *m = PortStateFilter{} }
-func (m *PortStateFilter) String() string { return proto.CompactTextString(m) }
-func (*PortStateFilter) ProtoMessage()    {}
+func (x *PortStateFilter) Reset() {
+	*x = PortStateFilter{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PortStateFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PortStateFilter) ProtoMessage() {}
+
+func (x *PortStateFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PortStateFilter.ProtoReflect.Descriptor instead.
 func (*PortStateFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{6}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *PortStateFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PortStateFilter.Unmarshal(m, b)
-}
-func (m *PortStateFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PortStateFilter.Marshal(b, m, deterministic)
-}
-func (m *PortStateFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PortStateFilter.Merge(m, src)
-}
-func (m *PortStateFilter) XXX_Size() int {
-	return xxx_messageInfo_PortStateFilter.Size(m)
-}
-func (m *PortStateFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_PortStateFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PortStateFilter proto.InternalMessageInfo
-
-func (m *PortStateFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PortStateFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PortStateFilter) GetPortTypeFilter() uint32 {
-	if m != nil {
-		return m.PortTypeFilter
+func (x *PortStateFilter) GetPortTypeFilter() uint32 {
+	if x != nil {
+		return x.PortTypeFilter
 	}
 	return 0
 }
 
-func (m *PortStateFilter) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *PortStateFilter) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
 type PacketIn struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Port                 uint32   `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	Packet               []byte   `protobuf:"bytes,3,opt,name=packet,proto3" json:"packet,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
+	Packet        []byte                 `protobuf:"bytes,3,opt,name=packet,proto3" json:"packet,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PacketIn) Reset()         { *m = PacketIn{} }
-func (m *PacketIn) String() string { return proto.CompactTextString(m) }
-func (*PacketIn) ProtoMessage()    {}
+func (x *PacketIn) Reset() {
+	*x = PacketIn{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketIn) ProtoMessage() {}
+
+func (x *PacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketIn.ProtoReflect.Descriptor instead.
 func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{7}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *PacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketIn.Unmarshal(m, b)
-}
-func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
-}
-func (m *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(m, src)
-}
-func (m *PacketIn) XXX_Size() int {
-	return xxx_messageInfo_PacketIn.Size(m)
-}
-func (m *PacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketIn proto.InternalMessageInfo
-
-func (m *PacketIn) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PacketIn) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PacketIn) GetPort() uint32 {
-	if m != nil {
-		return m.Port
+func (x *PacketIn) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *PacketIn) GetPacket() []byte {
-	if m != nil {
-		return m.Packet
+func (x *PacketIn) GetPacket() []byte {
+	if x != nil {
+		return x.Packet
 	}
 	return nil
 }
 
 type PacketOut struct {
-	DeviceId             string                    `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	EgressPortNo         uint32                    `protobuf:"varint,2,opt,name=egress_port_no,json=egressPortNo,proto3" json:"egress_port_no,omitempty"`
-	Packet               *openflow_13.OfpPacketOut `protobuf:"bytes,3,opt,name=packet,proto3" json:"packet,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	DeviceId      string                    `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	EgressPortNo  uint32                    `protobuf:"varint,2,opt,name=egress_port_no,json=egressPortNo,proto3" json:"egress_port_no,omitempty"`
+	Packet        *openflow_13.OfpPacketOut `protobuf:"bytes,3,opt,name=packet,proto3" json:"packet,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PacketOut) Reset()         { *m = PacketOut{} }
-func (m *PacketOut) String() string { return proto.CompactTextString(m) }
-func (*PacketOut) ProtoMessage()    {}
+func (x *PacketOut) Reset() {
+	*x = PacketOut{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketOut) ProtoMessage() {}
+
+func (x *PacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketOut.ProtoReflect.Descriptor instead.
 func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{8}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *PacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketOut.Unmarshal(m, b)
-}
-func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
-}
-func (m *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(m, src)
-}
-func (m *PacketOut) XXX_Size() int {
-	return xxx_messageInfo_PacketOut.Size(m)
-}
-func (m *PacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketOut proto.InternalMessageInfo
-
-func (m *PacketOut) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PacketOut) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PacketOut) GetEgressPortNo() uint32 {
-	if m != nil {
-		return m.EgressPortNo
+func (x *PacketOut) GetEgressPortNo() uint32 {
+	if x != nil {
+		return x.EgressPortNo
 	}
 	return 0
 }
 
-func (m *PacketOut) GetPacket() *openflow_13.OfpPacketOut {
-	if m != nil {
-		return m.Packet
+func (x *PacketOut) GetPacket() *openflow_13.OfpPacketOut {
+	if x != nil {
+		return x.Packet
 	}
 	return nil
 }
 
 type DeviceReason struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Reason               string   `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Reason        string                 `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceReason) Reset()         { *m = DeviceReason{} }
-func (m *DeviceReason) String() string { return proto.CompactTextString(m) }
-func (*DeviceReason) ProtoMessage()    {}
+func (x *DeviceReason) Reset() {
+	*x = DeviceReason{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceReason) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceReason) ProtoMessage() {}
+
+func (x *DeviceReason) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceReason.ProtoReflect.Descriptor instead.
 func (*DeviceReason) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{9}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *DeviceReason) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceReason.Unmarshal(m, b)
-}
-func (m *DeviceReason) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceReason.Marshal(b, m, deterministic)
-}
-func (m *DeviceReason) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceReason.Merge(m, src)
-}
-func (m *DeviceReason) XXX_Size() int {
-	return xxx_messageInfo_DeviceReason.Size(m)
-}
-func (m *DeviceReason) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceReason.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceReason proto.InternalMessageInfo
-
-func (m *DeviceReason) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceReason) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeviceReason) GetReason() string {
-	if m != nil {
-		return m.Reason
+func (x *DeviceReason) GetReason() string {
+	if x != nil {
+		return x.Reason
 	}
 	return ""
 }
 
 type BulkFlows struct {
-	Device               *voltha.Device            `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Flows                *openflow_13.Flows        `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`
-	Groups               *openflow_13.FlowGroups   `protobuf:"bytes,3,opt,name=groups,proto3" json:"groups,omitempty"`
-	FlowMetadata         *openflow_13.FlowMetadata `protobuf:"bytes,4,opt,name=flow_metadata,json=flowMetadata,proto3" json:"flow_metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	Device        *voltha.Device            `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Flows         *openflow_13.Flows        `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`
+	Groups        *openflow_13.FlowGroups   `protobuf:"bytes,3,opt,name=groups,proto3" json:"groups,omitempty"`
+	FlowMetadata  *openflow_13.FlowMetadata `protobuf:"bytes,4,opt,name=flow_metadata,json=flowMetadata,proto3" json:"flow_metadata,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *BulkFlows) Reset()         { *m = BulkFlows{} }
-func (m *BulkFlows) String() string { return proto.CompactTextString(m) }
-func (*BulkFlows) ProtoMessage()    {}
+func (x *BulkFlows) Reset() {
+	*x = BulkFlows{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *BulkFlows) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BulkFlows) ProtoMessage() {}
+
+func (x *BulkFlows) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use BulkFlows.ProtoReflect.Descriptor instead.
 func (*BulkFlows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{10}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *BulkFlows) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_BulkFlows.Unmarshal(m, b)
-}
-func (m *BulkFlows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_BulkFlows.Marshal(b, m, deterministic)
-}
-func (m *BulkFlows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BulkFlows.Merge(m, src)
-}
-func (m *BulkFlows) XXX_Size() int {
-	return xxx_messageInfo_BulkFlows.Size(m)
-}
-func (m *BulkFlows) XXX_DiscardUnknown() {
-	xxx_messageInfo_BulkFlows.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_BulkFlows proto.InternalMessageInfo
-
-func (m *BulkFlows) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *BulkFlows) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *BulkFlows) GetFlows() *openflow_13.Flows {
-	if m != nil {
-		return m.Flows
+func (x *BulkFlows) GetFlows() *openflow_13.Flows {
+	if x != nil {
+		return x.Flows
 	}
 	return nil
 }
 
-func (m *BulkFlows) GetGroups() *openflow_13.FlowGroups {
-	if m != nil {
-		return m.Groups
+func (x *BulkFlows) GetGroups() *openflow_13.FlowGroups {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
-func (m *BulkFlows) GetFlowMetadata() *openflow_13.FlowMetadata {
-	if m != nil {
-		return m.FlowMetadata
+func (x *BulkFlows) GetFlowMetadata() *openflow_13.FlowMetadata {
+	if x != nil {
+		return x.FlowMetadata
 	}
 	return nil
 }
 
 type IncrementalFlows struct {
-	Device               *voltha.Device                `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Flows                *openflow_13.FlowChanges      `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`
-	Groups               *openflow_13.FlowGroupChanges `protobuf:"bytes,3,opt,name=groups,proto3" json:"groups,omitempty"`
-	FlowMetadata         *openflow_13.FlowMetadata     `protobuf:"bytes,4,opt,name=flow_metadata,json=flowMetadata,proto3" json:"flow_metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	state         protoimpl.MessageState        `protogen:"open.v1"`
+	Device        *voltha.Device                `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Flows         *openflow_13.FlowChanges      `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`
+	Groups        *openflow_13.FlowGroupChanges `protobuf:"bytes,3,opt,name=groups,proto3" json:"groups,omitempty"`
+	FlowMetadata  *openflow_13.FlowMetadata     `protobuf:"bytes,4,opt,name=flow_metadata,json=flowMetadata,proto3" json:"flow_metadata,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *IncrementalFlows) Reset()         { *m = IncrementalFlows{} }
-func (m *IncrementalFlows) String() string { return proto.CompactTextString(m) }
-func (*IncrementalFlows) ProtoMessage()    {}
+func (x *IncrementalFlows) Reset() {
+	*x = IncrementalFlows{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IncrementalFlows) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IncrementalFlows) ProtoMessage() {}
+
+func (x *IncrementalFlows) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IncrementalFlows.ProtoReflect.Descriptor instead.
 func (*IncrementalFlows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{11}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *IncrementalFlows) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IncrementalFlows.Unmarshal(m, b)
-}
-func (m *IncrementalFlows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IncrementalFlows.Marshal(b, m, deterministic)
-}
-func (m *IncrementalFlows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IncrementalFlows.Merge(m, src)
-}
-func (m *IncrementalFlows) XXX_Size() int {
-	return xxx_messageInfo_IncrementalFlows.Size(m)
-}
-func (m *IncrementalFlows) XXX_DiscardUnknown() {
-	xxx_messageInfo_IncrementalFlows.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IncrementalFlows proto.InternalMessageInfo
-
-func (m *IncrementalFlows) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *IncrementalFlows) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *IncrementalFlows) GetFlows() *openflow_13.FlowChanges {
-	if m != nil {
-		return m.Flows
+func (x *IncrementalFlows) GetFlows() *openflow_13.FlowChanges {
+	if x != nil {
+		return x.Flows
 	}
 	return nil
 }
 
-func (m *IncrementalFlows) GetGroups() *openflow_13.FlowGroupChanges {
-	if m != nil {
-		return m.Groups
+func (x *IncrementalFlows) GetGroups() *openflow_13.FlowGroupChanges {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
-func (m *IncrementalFlows) GetFlowMetadata() *openflow_13.FlowMetadata {
-	if m != nil {
-		return m.FlowMetadata
+func (x *IncrementalFlows) GetFlowMetadata() *openflow_13.FlowMetadata {
+	if x != nil {
+		return x.FlowMetadata
 	}
 	return nil
 }
 
 type PmConfigsInfo struct {
-	DeviceId             string            `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PmConfigs            *voltha.PmConfigs `protobuf:"bytes,2,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PmConfigs     *voltha.PmConfigs      `protobuf:"bytes,2,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfigsInfo) Reset()         { *m = PmConfigsInfo{} }
-func (m *PmConfigsInfo) String() string { return proto.CompactTextString(m) }
-func (*PmConfigsInfo) ProtoMessage()    {}
+func (x *PmConfigsInfo) Reset() {
+	*x = PmConfigsInfo{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfigsInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfigsInfo) ProtoMessage() {}
+
+func (x *PmConfigsInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfigsInfo.ProtoReflect.Descriptor instead.
 func (*PmConfigsInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{12}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *PmConfigsInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmConfigsInfo.Unmarshal(m, b)
-}
-func (m *PmConfigsInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmConfigsInfo.Marshal(b, m, deterministic)
-}
-func (m *PmConfigsInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfigsInfo.Merge(m, src)
-}
-func (m *PmConfigsInfo) XXX_Size() int {
-	return xxx_messageInfo_PmConfigsInfo.Size(m)
-}
-func (m *PmConfigsInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfigsInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfigsInfo proto.InternalMessageInfo
-
-func (m *PmConfigsInfo) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *PmConfigsInfo) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *PmConfigsInfo) GetPmConfigs() *voltha.PmConfigs {
-	if m != nil {
-		return m.PmConfigs
+func (x *PmConfigsInfo) GetPmConfigs() *voltha.PmConfigs {
+	if x != nil {
+		return x.PmConfigs
 	}
 	return nil
 }
 
 type SwitchCapability struct {
-	Desc                 *openflow_13.OfpDesc           `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
-	SwitchFeatures       *openflow_13.OfpSwitchFeatures `protobuf:"bytes,2,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+	state          protoimpl.MessageState         `protogen:"open.v1"`
+	Desc           *openflow_13.OfpDesc           `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+	SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,2,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *SwitchCapability) Reset()         { *m = SwitchCapability{} }
-func (m *SwitchCapability) String() string { return proto.CompactTextString(m) }
-func (*SwitchCapability) ProtoMessage()    {}
+func (x *SwitchCapability) Reset() {
+	*x = SwitchCapability{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SwitchCapability) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SwitchCapability) ProtoMessage() {}
+
+func (x *SwitchCapability) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SwitchCapability.ProtoReflect.Descriptor instead.
 func (*SwitchCapability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{13}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *SwitchCapability) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SwitchCapability.Unmarshal(m, b)
-}
-func (m *SwitchCapability) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SwitchCapability.Marshal(b, m, deterministic)
-}
-func (m *SwitchCapability) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SwitchCapability.Merge(m, src)
-}
-func (m *SwitchCapability) XXX_Size() int {
-	return xxx_messageInfo_SwitchCapability.Size(m)
-}
-func (m *SwitchCapability) XXX_DiscardUnknown() {
-	xxx_messageInfo_SwitchCapability.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SwitchCapability proto.InternalMessageInfo
-
-func (m *SwitchCapability) GetDesc() *openflow_13.OfpDesc {
-	if m != nil {
-		return m.Desc
+func (x *SwitchCapability) GetDesc() *openflow_13.OfpDesc {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
-func (m *SwitchCapability) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
-	if m != nil {
-		return m.SwitchFeatures
+func (x *SwitchCapability) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+	if x != nil {
+		return x.SwitchFeatures
 	}
 	return nil
 }
 
 type ImageDownloadMessage struct {
-	Device               *voltha.Device        `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Image                *voltha.ImageDownload `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Device        *voltha.Device         `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Image         *voltha.ImageDownload  `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownloadMessage) Reset()         { *m = ImageDownloadMessage{} }
-func (m *ImageDownloadMessage) String() string { return proto.CompactTextString(m) }
-func (*ImageDownloadMessage) ProtoMessage()    {}
+func (x *ImageDownloadMessage) Reset() {
+	*x = ImageDownloadMessage{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownloadMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownloadMessage) ProtoMessage() {}
+
+func (x *ImageDownloadMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownloadMessage.ProtoReflect.Descriptor instead.
 func (*ImageDownloadMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{14}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *ImageDownloadMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageDownloadMessage.Unmarshal(m, b)
-}
-func (m *ImageDownloadMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageDownloadMessage.Marshal(b, m, deterministic)
-}
-func (m *ImageDownloadMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownloadMessage.Merge(m, src)
-}
-func (m *ImageDownloadMessage) XXX_Size() int {
-	return xxx_messageInfo_ImageDownloadMessage.Size(m)
-}
-func (m *ImageDownloadMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownloadMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownloadMessage proto.InternalMessageInfo
-
-func (m *ImageDownloadMessage) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *ImageDownloadMessage) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *ImageDownloadMessage) GetImage() *voltha.ImageDownload {
-	if m != nil {
-		return m.Image
+func (x *ImageDownloadMessage) GetImage() *voltha.ImageDownload {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
 type OMCITest struct {
-	Device               *voltha.Device        `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Request              *omci.OmciTestRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Device        *voltha.Device         `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Request       *omci.OmciTestRequest  `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OMCITest) Reset()         { *m = OMCITest{} }
-func (m *OMCITest) String() string { return proto.CompactTextString(m) }
-func (*OMCITest) ProtoMessage()    {}
+func (x *OMCITest) Reset() {
+	*x = OMCITest{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OMCITest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OMCITest) ProtoMessage() {}
+
+func (x *OMCITest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OMCITest.ProtoReflect.Descriptor instead.
 func (*OMCITest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{15}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *OMCITest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OMCITest.Unmarshal(m, b)
-}
-func (m *OMCITest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OMCITest.Marshal(b, m, deterministic)
-}
-func (m *OMCITest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OMCITest.Merge(m, src)
-}
-func (m *OMCITest) XXX_Size() int {
-	return xxx_messageInfo_OMCITest.Size(m)
-}
-func (m *OMCITest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OMCITest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OMCITest proto.InternalMessageInfo
-
-func (m *OMCITest) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *OMCITest) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *OMCITest) GetRequest() *omci.OmciTestRequest {
-	if m != nil {
-		return m.Request
+func (x *OMCITest) GetRequest() *omci.OmciTestRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type SimulateAlarmMessage struct {
-	Device               *voltha.Device               `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Request              *voltha.SimulateAlarmRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Device        *voltha.Device               `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Request       *voltha.SimulateAlarmRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SimulateAlarmMessage) Reset()         { *m = SimulateAlarmMessage{} }
-func (m *SimulateAlarmMessage) String() string { return proto.CompactTextString(m) }
-func (*SimulateAlarmMessage) ProtoMessage()    {}
+func (x *SimulateAlarmMessage) Reset() {
+	*x = SimulateAlarmMessage{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SimulateAlarmMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimulateAlarmMessage) ProtoMessage() {}
+
+func (x *SimulateAlarmMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimulateAlarmMessage.ProtoReflect.Descriptor instead.
 func (*SimulateAlarmMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{16}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *SimulateAlarmMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimulateAlarmMessage.Unmarshal(m, b)
-}
-func (m *SimulateAlarmMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimulateAlarmMessage.Marshal(b, m, deterministic)
-}
-func (m *SimulateAlarmMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimulateAlarmMessage.Merge(m, src)
-}
-func (m *SimulateAlarmMessage) XXX_Size() int {
-	return xxx_messageInfo_SimulateAlarmMessage.Size(m)
-}
-func (m *SimulateAlarmMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimulateAlarmMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimulateAlarmMessage proto.InternalMessageInfo
-
-func (m *SimulateAlarmMessage) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *SimulateAlarmMessage) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *SimulateAlarmMessage) GetRequest() *voltha.SimulateAlarmRequest {
-	if m != nil {
-		return m.Request
+func (x *SimulateAlarmMessage) GetRequest() *voltha.SimulateAlarmRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type GetExtValueMessage struct {
-	ParentDevice         *voltha.Device           `protobuf:"bytes,1,opt,name=parent_device,json=parentDevice,proto3" json:"parent_device,omitempty"`
-	ChildDevice          *voltha.Device           `protobuf:"bytes,2,opt,name=child_device,json=childDevice,proto3" json:"child_device,omitempty"`
-	ValueType            extension.ValueType_Type `protobuf:"varint,3,opt,name=value_type,json=valueType,proto3,enum=extension.ValueType_Type" json:"value_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	ParentDevice  *voltha.Device           `protobuf:"bytes,1,opt,name=parent_device,json=parentDevice,proto3" json:"parent_device,omitempty"`
+	ChildDevice   *voltha.Device           `protobuf:"bytes,2,opt,name=child_device,json=childDevice,proto3" json:"child_device,omitempty"`
+	ValueType     extension.ValueType_Type `protobuf:"varint,3,opt,name=value_type,json=valueType,proto3,enum=extension.ValueType_Type" json:"value_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetExtValueMessage) Reset()         { *m = GetExtValueMessage{} }
-func (m *GetExtValueMessage) String() string { return proto.CompactTextString(m) }
-func (*GetExtValueMessage) ProtoMessage()    {}
+func (x *GetExtValueMessage) Reset() {
+	*x = GetExtValueMessage{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetExtValueMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetExtValueMessage) ProtoMessage() {}
+
+func (x *GetExtValueMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetExtValueMessage.ProtoReflect.Descriptor instead.
 func (*GetExtValueMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{17}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *GetExtValueMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetExtValueMessage.Unmarshal(m, b)
-}
-func (m *GetExtValueMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetExtValueMessage.Marshal(b, m, deterministic)
-}
-func (m *GetExtValueMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetExtValueMessage.Merge(m, src)
-}
-func (m *GetExtValueMessage) XXX_Size() int {
-	return xxx_messageInfo_GetExtValueMessage.Size(m)
-}
-func (m *GetExtValueMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetExtValueMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetExtValueMessage proto.InternalMessageInfo
-
-func (m *GetExtValueMessage) GetParentDevice() *voltha.Device {
-	if m != nil {
-		return m.ParentDevice
+func (x *GetExtValueMessage) GetParentDevice() *voltha.Device {
+	if x != nil {
+		return x.ParentDevice
 	}
 	return nil
 }
 
-func (m *GetExtValueMessage) GetChildDevice() *voltha.Device {
-	if m != nil {
-		return m.ChildDevice
+func (x *GetExtValueMessage) GetChildDevice() *voltha.Device {
+	if x != nil {
+		return x.ChildDevice
 	}
 	return nil
 }
 
-func (m *GetExtValueMessage) GetValueType() extension.ValueType_Type {
-	if m != nil {
-		return m.ValueType
+func (x *GetExtValueMessage) GetValueType() extension.ValueType_Type {
+	if x != nil {
+		return x.ValueType
 	}
-	return extension.ValueType_EMPTY
+	return extension.ValueType_Type(0)
 }
 
 type SetExtValueMessage struct {
-	Device               *voltha.Device      `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
-	Value                *extension.ValueSet `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Device        *voltha.Device         `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
+	Value         *extension.ValueSet    `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SetExtValueMessage) Reset()         { *m = SetExtValueMessage{} }
-func (m *SetExtValueMessage) String() string { return proto.CompactTextString(m) }
-func (*SetExtValueMessage) ProtoMessage()    {}
+func (x *SetExtValueMessage) Reset() {
+	*x = SetExtValueMessage{}
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SetExtValueMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetExtValueMessage) ProtoMessage() {}
+
+func (x *SetExtValueMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_core_adapter_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetExtValueMessage.ProtoReflect.Descriptor instead.
 func (*SetExtValueMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b77436fd29d035f0, []int{18}
+	return file_voltha_protos_core_adapter_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *SetExtValueMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetExtValueMessage.Unmarshal(m, b)
-}
-func (m *SetExtValueMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetExtValueMessage.Marshal(b, m, deterministic)
-}
-func (m *SetExtValueMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetExtValueMessage.Merge(m, src)
-}
-func (m *SetExtValueMessage) XXX_Size() int {
-	return xxx_messageInfo_SetExtValueMessage.Size(m)
-}
-func (m *SetExtValueMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetExtValueMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SetExtValueMessage proto.InternalMessageInfo
-
-func (m *SetExtValueMessage) GetDevice() *voltha.Device {
-	if m != nil {
-		return m.Device
+func (x *SetExtValueMessage) GetDevice() *voltha.Device {
+	if x != nil {
+		return x.Device
 	}
 	return nil
 }
 
-func (m *SetExtValueMessage) GetValue() *extension.ValueSet {
-	if m != nil {
-		return m.Value
+func (x *SetExtValueMessage) GetValue() *extension.ValueSet {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*AdapterRegistration)(nil), "core_adapter.AdapterRegistration")
-	proto.RegisterType((*ChildDeviceFilter)(nil), "core_adapter.ChildDeviceFilter")
-	proto.RegisterType((*PortFilter)(nil), "core_adapter.PortFilter")
-	proto.RegisterType((*DeviceDiscovery)(nil), "core_adapter.DeviceDiscovery")
-	proto.RegisterType((*DeviceStateFilter)(nil), "core_adapter.DeviceStateFilter")
-	proto.RegisterType((*PortState)(nil), "core_adapter.PortState")
-	proto.RegisterType((*PortStateFilter)(nil), "core_adapter.PortStateFilter")
-	proto.RegisterType((*PacketIn)(nil), "core_adapter.PacketIn")
-	proto.RegisterType((*PacketOut)(nil), "core_adapter.PacketOut")
-	proto.RegisterType((*DeviceReason)(nil), "core_adapter.DeviceReason")
-	proto.RegisterType((*BulkFlows)(nil), "core_adapter.BulkFlows")
-	proto.RegisterType((*IncrementalFlows)(nil), "core_adapter.IncrementalFlows")
-	proto.RegisterType((*PmConfigsInfo)(nil), "core_adapter.PmConfigsInfo")
-	proto.RegisterType((*SwitchCapability)(nil), "core_adapter.SwitchCapability")
-	proto.RegisterType((*ImageDownloadMessage)(nil), "core_adapter.ImageDownloadMessage")
-	proto.RegisterType((*OMCITest)(nil), "core_adapter.OMCITest")
-	proto.RegisterType((*SimulateAlarmMessage)(nil), "core_adapter.SimulateAlarmMessage")
-	proto.RegisterType((*GetExtValueMessage)(nil), "core_adapter.GetExtValueMessage")
-	proto.RegisterType((*SetExtValueMessage)(nil), "core_adapter.SetExtValueMessage")
+var File_voltha_protos_core_adapter_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_core_adapter_proto_rawDesc = "" +
+	"\n" +
+	" voltha_protos/core_adapter.proto\x12\fcore_adapter\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/voltha.proto\x1a\x1fvoltha_protos/openflow_13.proto\x1a\x1bvoltha_protos/adapter.proto\x1a\x1avoltha_protos/device.proto\x1a\x1evoltha_protos/extensions.proto\x1a\x1dvoltha_protos/omci_test.proto\"n\n" +
+	"\x13AdapterRegistration\x12*\n" +
+	"\aadapter\x18\x01 \x01(\v2\x10.adapter.AdapterR\aadapter\x12+\n" +
+	"\x06dTypes\x18\x02 \x01(\v2\x13.device.DeviceTypesR\x06dTypes\"\x92\x01\n" +
+	"\x11ChildDeviceFilter\x12\x1b\n" +
+	"\tparent_id\x18\x01 \x01(\tR\bparentId\x12#\n" +
+	"\rserial_number\x18\x02 \x01(\tR\fserialNumber\x12\x15\n" +
+	"\x06onu_id\x18\x03 \x01(\rR\x05onuId\x12$\n" +
+	"\x0eparent_port_no\x18\x04 \x01(\rR\fparentPortNo\"q\n" +
+	"\n" +
+	"PortFilter\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x12\n" +
+	"\x04port\x18\x02 \x01(\rR\x04port\x122\n" +
+	"\tport_type\x18\x03 \x01(\x0e2\x15.device.Port.PortTypeR\bportType\"\xf8\x01\n" +
+	"\x0fDeviceDiscovery\x12\x1b\n" +
+	"\tparent_id\x18\x01 \x01(\tR\bparentId\x12$\n" +
+	"\x0eparent_port_no\x18\x02 \x01(\rR\fparentPortNo\x12*\n" +
+	"\x11child_device_type\x18\x03 \x01(\tR\x0fchildDeviceType\x12\x1d\n" +
+	"\n" +
+	"channel_id\x18\x04 \x01(\rR\tchannelId\x12\x1b\n" +
+	"\tvendor_id\x18\x05 \x01(\tR\bvendorId\x12#\n" +
+	"\rserial_number\x18\x06 \x01(\tR\fserialNumber\x12\x15\n" +
+	"\x06onu_id\x18\a \x01(\rR\x05onuId\"\xd3\x01\n" +
+	"\x11DeviceStateFilter\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12(\n" +
+	"\x10parent_device_id\x18\x02 \x01(\tR\x0eparentDeviceId\x129\n" +
+	"\voper_status\x18\x03 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12<\n" +
+	"\vconn_status\x18\x04 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\n" +
+	"connStatus\"\xb0\x01\n" +
+	"\tPortState\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x122\n" +
+	"\tport_type\x18\x02 \x01(\x0e2\x15.device.Port.PortTypeR\bportType\x12\x17\n" +
+	"\aport_no\x18\x03 \x01(\rR\x06portNo\x129\n" +
+	"\voper_status\x18\x04 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\"\x93\x01\n" +
+	"\x0fPortStateFilter\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12(\n" +
+	"\x10port_type_filter\x18\x02 \x01(\rR\x0eportTypeFilter\x129\n" +
+	"\voper_status\x18\x04 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\"S\n" +
+	"\bPacketIn\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x12\n" +
+	"\x04port\x18\x02 \x01(\rR\x04port\x12\x16\n" +
+	"\x06packet\x18\x03 \x01(\fR\x06packet\"\x83\x01\n" +
+	"\tPacketOut\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12$\n" +
+	"\x0eegress_port_no\x18\x02 \x01(\rR\fegressPortNo\x123\n" +
+	"\x06packet\x18\x03 \x01(\v2\x1b.openflow_13.ofp_packet_outR\x06packet\"C\n" +
+	"\fDeviceReason\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x16\n" +
+	"\x06reason\x18\x02 \x01(\tR\x06reason\"\xce\x01\n" +
+	"\tBulkFlows\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x12(\n" +
+	"\x05flows\x18\x02 \x01(\v2\x12.openflow_13.FlowsR\x05flows\x12/\n" +
+	"\x06groups\x18\x03 \x01(\v2\x17.openflow_13.FlowGroupsR\x06groups\x12>\n" +
+	"\rflow_metadata\x18\x04 \x01(\v2\x19.openflow_13.FlowMetadataR\fflowMetadata\"\xe1\x01\n" +
+	"\x10IncrementalFlows\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x12.\n" +
+	"\x05flows\x18\x02 \x01(\v2\x18.openflow_13.FlowChangesR\x05flows\x125\n" +
+	"\x06groups\x18\x03 \x01(\v2\x1d.openflow_13.FlowGroupChangesR\x06groups\x12>\n" +
+	"\rflow_metadata\x18\x04 \x01(\v2\x19.openflow_13.FlowMetadataR\fflowMetadata\"^\n" +
+	"\rPmConfigsInfo\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x120\n" +
+	"\n" +
+	"pm_configs\x18\x02 \x01(\v2\x11.device.PmConfigsR\tpmConfigs\"\x88\x01\n" +
+	"\x10SwitchCapability\x12)\n" +
+	"\x04desc\x18\x01 \x01(\v2\x15.openflow_13.ofp_descR\x04desc\x12I\n" +
+	"\x0fswitch_features\x18\x02 \x01(\v2 .openflow_13.ofp_switch_featuresR\x0eswitchFeatures\"k\n" +
+	"\x14ImageDownloadMessage\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x12+\n" +
+	"\x05image\x18\x02 \x01(\v2\x15.device.ImageDownloadR\x05image\"c\n" +
+	"\bOMCITest\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x12/\n" +
+	"\arequest\x18\x02 \x01(\v2\x15.omci.OmciTestRequestR\arequest\"v\n" +
+	"\x14SimulateAlarmMessage\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x126\n" +
+	"\arequest\x18\x02 \x01(\v2\x1c.device.SimulateAlarmRequestR\arequest\"\xb6\x01\n" +
+	"\x12GetExtValueMessage\x123\n" +
+	"\rparent_device\x18\x01 \x01(\v2\x0e.device.DeviceR\fparentDevice\x121\n" +
+	"\fchild_device\x18\x02 \x01(\v2\x0e.device.DeviceR\vchildDevice\x128\n" +
+	"\n" +
+	"value_type\x18\x03 \x01(\x0e2\x19.extension.ValueType.TypeR\tvalueType\"g\n" +
+	"\x12SetExtValueMessage\x12&\n" +
+	"\x06device\x18\x01 \x01(\v2\x0e.device.DeviceR\x06device\x12)\n" +
+	"\x05value\x18\x03 \x01(\v2\x13.extension.ValueSetR\x05valueBX\n" +
+	" org.opencord.voltha.core_adapterZ4github.com/opencord/voltha-protos/v5/go/core_adapterb\x06proto3"
+
+var (
+	file_voltha_protos_core_adapter_proto_rawDescOnce sync.Once
+	file_voltha_protos_core_adapter_proto_rawDescData []byte
+)
+
+func file_voltha_protos_core_adapter_proto_rawDescGZIP() []byte {
+	file_voltha_protos_core_adapter_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_core_adapter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_core_adapter_proto_rawDesc), len(file_voltha_protos_core_adapter_proto_rawDesc)))
+	})
+	return file_voltha_protos_core_adapter_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/core_adapter.proto", fileDescriptor_b77436fd29d035f0) }
+var file_voltha_protos_core_adapter_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_voltha_protos_core_adapter_proto_goTypes = []any{
+	(*AdapterRegistration)(nil),           // 0: core_adapter.AdapterRegistration
+	(*ChildDeviceFilter)(nil),             // 1: core_adapter.ChildDeviceFilter
+	(*PortFilter)(nil),                    // 2: core_adapter.PortFilter
+	(*DeviceDiscovery)(nil),               // 3: core_adapter.DeviceDiscovery
+	(*DeviceStateFilter)(nil),             // 4: core_adapter.DeviceStateFilter
+	(*PortState)(nil),                     // 5: core_adapter.PortState
+	(*PortStateFilter)(nil),               // 6: core_adapter.PortStateFilter
+	(*PacketIn)(nil),                      // 7: core_adapter.PacketIn
+	(*PacketOut)(nil),                     // 8: core_adapter.PacketOut
+	(*DeviceReason)(nil),                  // 9: core_adapter.DeviceReason
+	(*BulkFlows)(nil),                     // 10: core_adapter.BulkFlows
+	(*IncrementalFlows)(nil),              // 11: core_adapter.IncrementalFlows
+	(*PmConfigsInfo)(nil),                 // 12: core_adapter.PmConfigsInfo
+	(*SwitchCapability)(nil),              // 13: core_adapter.SwitchCapability
+	(*ImageDownloadMessage)(nil),          // 14: core_adapter.ImageDownloadMessage
+	(*OMCITest)(nil),                      // 15: core_adapter.OMCITest
+	(*SimulateAlarmMessage)(nil),          // 16: core_adapter.SimulateAlarmMessage
+	(*GetExtValueMessage)(nil),            // 17: core_adapter.GetExtValueMessage
+	(*SetExtValueMessage)(nil),            // 18: core_adapter.SetExtValueMessage
+	(*voltha.Adapter)(nil),                // 19: adapter.Adapter
+	(*voltha.DeviceTypes)(nil),            // 20: device.DeviceTypes
+	(voltha.Port_PortType)(0),             // 21: device.Port.PortType
+	(common.OperStatus_Types)(0),          // 22: common.OperStatus.Types
+	(common.ConnectStatus_Types)(0),       // 23: common.ConnectStatus.Types
+	(*openflow_13.OfpPacketOut)(nil),      // 24: openflow_13.ofp_packet_out
+	(*voltha.Device)(nil),                 // 25: device.Device
+	(*openflow_13.Flows)(nil),             // 26: openflow_13.Flows
+	(*openflow_13.FlowGroups)(nil),        // 27: openflow_13.FlowGroups
+	(*openflow_13.FlowMetadata)(nil),      // 28: openflow_13.FlowMetadata
+	(*openflow_13.FlowChanges)(nil),       // 29: openflow_13.FlowChanges
+	(*openflow_13.FlowGroupChanges)(nil),  // 30: openflow_13.FlowGroupChanges
+	(*voltha.PmConfigs)(nil),              // 31: device.PmConfigs
+	(*openflow_13.OfpDesc)(nil),           // 32: openflow_13.ofp_desc
+	(*openflow_13.OfpSwitchFeatures)(nil), // 33: openflow_13.ofp_switch_features
+	(*voltha.ImageDownload)(nil),          // 34: device.ImageDownload
+	(*omci.OmciTestRequest)(nil),          // 35: omci.OmciTestRequest
+	(*voltha.SimulateAlarmRequest)(nil),   // 36: device.SimulateAlarmRequest
+	(extension.ValueType_Type)(0),         // 37: extension.ValueType.Type
+	(*extension.ValueSet)(nil),            // 38: extension.ValueSet
+}
+var file_voltha_protos_core_adapter_proto_depIdxs = []int32{
+	19, // 0: core_adapter.AdapterRegistration.adapter:type_name -> adapter.Adapter
+	20, // 1: core_adapter.AdapterRegistration.dTypes:type_name -> device.DeviceTypes
+	21, // 2: core_adapter.PortFilter.port_type:type_name -> device.Port.PortType
+	22, // 3: core_adapter.DeviceStateFilter.oper_status:type_name -> common.OperStatus.Types
+	23, // 4: core_adapter.DeviceStateFilter.conn_status:type_name -> common.ConnectStatus.Types
+	21, // 5: core_adapter.PortState.port_type:type_name -> device.Port.PortType
+	22, // 6: core_adapter.PortState.oper_status:type_name -> common.OperStatus.Types
+	22, // 7: core_adapter.PortStateFilter.oper_status:type_name -> common.OperStatus.Types
+	24, // 8: core_adapter.PacketOut.packet:type_name -> openflow_13.ofp_packet_out
+	25, // 9: core_adapter.BulkFlows.device:type_name -> device.Device
+	26, // 10: core_adapter.BulkFlows.flows:type_name -> openflow_13.Flows
+	27, // 11: core_adapter.BulkFlows.groups:type_name -> openflow_13.FlowGroups
+	28, // 12: core_adapter.BulkFlows.flow_metadata:type_name -> openflow_13.FlowMetadata
+	25, // 13: core_adapter.IncrementalFlows.device:type_name -> device.Device
+	29, // 14: core_adapter.IncrementalFlows.flows:type_name -> openflow_13.FlowChanges
+	30, // 15: core_adapter.IncrementalFlows.groups:type_name -> openflow_13.FlowGroupChanges
+	28, // 16: core_adapter.IncrementalFlows.flow_metadata:type_name -> openflow_13.FlowMetadata
+	31, // 17: core_adapter.PmConfigsInfo.pm_configs:type_name -> device.PmConfigs
+	32, // 18: core_adapter.SwitchCapability.desc:type_name -> openflow_13.ofp_desc
+	33, // 19: core_adapter.SwitchCapability.switch_features:type_name -> openflow_13.ofp_switch_features
+	25, // 20: core_adapter.ImageDownloadMessage.device:type_name -> device.Device
+	34, // 21: core_adapter.ImageDownloadMessage.image:type_name -> device.ImageDownload
+	25, // 22: core_adapter.OMCITest.device:type_name -> device.Device
+	35, // 23: core_adapter.OMCITest.request:type_name -> omci.OmciTestRequest
+	25, // 24: core_adapter.SimulateAlarmMessage.device:type_name -> device.Device
+	36, // 25: core_adapter.SimulateAlarmMessage.request:type_name -> device.SimulateAlarmRequest
+	25, // 26: core_adapter.GetExtValueMessage.parent_device:type_name -> device.Device
+	25, // 27: core_adapter.GetExtValueMessage.child_device:type_name -> device.Device
+	37, // 28: core_adapter.GetExtValueMessage.value_type:type_name -> extension.ValueType.Type
+	25, // 29: core_adapter.SetExtValueMessage.device:type_name -> device.Device
+	38, // 30: core_adapter.SetExtValueMessage.value:type_name -> extension.ValueSet
+	31, // [31:31] is the sub-list for method output_type
+	31, // [31:31] is the sub-list for method input_type
+	31, // [31:31] is the sub-list for extension type_name
+	31, // [31:31] is the sub-list for extension extendee
+	0,  // [0:31] is the sub-list for field type_name
+}
 
-var fileDescriptor_b77436fd29d035f0 = []byte{
-	// 1107 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
-	0x14, 0xd7, 0x86, 0xc4, 0x89, 0x9f, 0xff, 0x24, 0x99, 0x34, 0x6d, 0xda, 0x10, 0x88, 0x96, 0x0a,
-	0xa5, 0xad, 0x70, 0x68, 0x42, 0x11, 0x48, 0x08, 0xa9, 0x75, 0x48, 0xe5, 0x43, 0x9a, 0x68, 0x5c,
-	0x21, 0xc4, 0x81, 0xd5, 0x64, 0x77, 0x6c, 0xaf, 0xb2, 0x3b, 0xb3, 0x9d, 0x99, 0x75, 0x9a, 0x33,
-	0x17, 0xce, 0xf0, 0x45, 0x38, 0xf1, 0x31, 0xb8, 0xf0, 0x09, 0xf8, 0x16, 0x1c, 0xd1, 0xfc, 0x59,
-	0xc7, 0xbb, 0x2e, 0xc1, 0x11, 0x5c, 0xec, 0x9d, 0xf7, 0x7e, 0xef, 0xbd, 0xdf, 0xef, 0xbd, 0xd9,
-	0xd9, 0x81, 0xdd, 0x31, 0x4f, 0xd4, 0x88, 0x04, 0x99, 0xe0, 0x8a, 0xcb, 0xfd, 0x90, 0x0b, 0x1a,
-	0x90, 0x88, 0x64, 0x8a, 0x8a, 0x8e, 0xb1, 0xa1, 0xe6, 0xb4, 0xed, 0xc1, 0x83, 0x2a, 0x3e, 0x4d,
-	0x39, 0xb3, 0xc8, 0xaa, 0xcf, 0xae, 0x9c, 0xef, 0xc3, 0xb2, 0x8f, 0x67, 0x94, 0x0d, 0x12, 0x7e,
-	0x19, 0x3c, 0x3d, 0x74, 0x80, 0xed, 0x32, 0xa0, 0xc4, 0xa1, 0x9a, 0x39, 0xa2, 0xe3, 0x38, 0xa4,
-	0xce, 0xf7, 0x41, 0xd9, 0x47, 0xdf, 0x2a, 0xca, 0x64, 0xcc, 0x99, 0x74, 0xfe, 0x9d, 0x4a, 0xe5,
-	0x34, 0x8c, 0x03, 0x45, 0xa5, 0xb2, 0x6e, 0x9f, 0xc1, 0xc6, 0x73, 0x5b, 0x0b, 0xd3, 0x61, 0x2c,
-	0x95, 0x20, 0x2a, 0xe6, 0x0c, 0x3d, 0x86, 0x65, 0x47, 0x61, 0xcb, 0xdb, 0xf5, 0xf6, 0x1a, 0x07,
-	0x6b, 0x9d, 0x82, 0x52, 0x01, 0x2f, 0x00, 0xe8, 0x09, 0xd4, 0xa2, 0xd7, 0x57, 0x19, 0x95, 0x5b,
-	0x0b, 0x06, 0xba, 0xd1, 0x71, 0x04, 0x8f, 0xcc, 0x9f, 0x71, 0x61, 0x07, 0xf1, 0x7f, 0xf6, 0x60,
-	0xbd, 0x3b, 0x8a, 0x93, 0xc8, 0x3a, 0x8f, 0xe3, 0x44, 0xa7, 0xd8, 0x86, 0x7a, 0x46, 0x04, 0x65,
-	0x2a, 0x88, 0x23, 0x53, 0xb0, 0x8e, 0x57, 0xac, 0xa1, 0x17, 0xa1, 0x8f, 0xa0, 0x25, 0xa9, 0x88,
-	0x49, 0x12, 0xb0, 0x3c, 0x3d, 0xa7, 0xc2, 0x94, 0xa9, 0xe3, 0xa6, 0x35, 0xbe, 0x32, 0x36, 0xb4,
-	0x09, 0x35, 0xce, 0x72, 0x1d, 0xfe, 0xde, 0xae, 0xb7, 0xd7, 0xc2, 0x4b, 0x9c, 0xe5, 0xbd, 0x08,
-	0x3d, 0x84, 0xb6, 0x4b, 0x9c, 0x71, 0xa1, 0x02, 0xc6, 0xb7, 0x16, 0x8d, 0xbb, 0x69, 0xad, 0x67,
-	0x5c, 0xa8, 0x57, 0xdc, 0x7f, 0x03, 0xa0, 0x9f, 0xae, 0xc9, 0x58, 0x01, 0x53, 0x64, 0xac, 0xa1,
-	0x17, 0x21, 0x04, 0x8b, 0x3a, 0x93, 0xe1, 0xd0, 0xc2, 0xe6, 0x19, 0x1d, 0x40, 0xdd, 0x64, 0x57,
-	0x57, 0x19, 0x35, 0xe5, 0xdb, 0x07, 0x9b, 0x45, 0x0f, 0x74, 0x5e, 0xf3, 0xa3, 0xe5, 0xe3, 0x95,
-	0xcc, 0x3d, 0xf9, 0x7f, 0x79, 0xb0, 0x6a, 0x5b, 0x70, 0x14, 0xcb, 0x90, 0x8f, 0xa9, 0xb8, 0xba,
-	0xb9, 0x0b, 0xb3, 0x4a, 0x16, 0x66, 0x95, 0xa0, 0xc7, 0xb0, 0x1e, 0xea, 0xee, 0x06, 0x4e, 0xc1,
-	0x84, 0x52, 0x1d, 0xaf, 0x86, 0xd7, 0x6d, 0xd7, 0x14, 0xd0, 0x0e, 0x40, 0x38, 0x22, 0x8c, 0xd1,
-	0x44, 0xd7, 0xb3, 0x7d, 0xa9, 0x3b, 0x4b, 0x2f, 0xd2, 0x6c, 0xc6, 0x94, 0x45, 0x5c, 0x68, 0xef,
-	0x92, 0x65, 0x63, 0x0d, 0xef, 0x9a, 0x49, 0xed, 0xc6, 0x99, 0x2c, 0x4f, 0xcd, 0xc4, 0xff, 0xc3,
-	0x83, 0x75, 0x4b, 0xa3, 0xaf, 0x88, 0xa2, 0xf3, 0x74, 0x7d, 0x0f, 0xd6, 0x9c, 0xf8, 0x6b, 0x8c,
-	0xdd, 0x05, 0xae, 0x29, 0x47, 0x05, 0xf2, 0x4b, 0x68, 0xf0, 0x8c, 0x8a, 0x40, 0x2a, 0xa2, 0x72,
-	0xe9, 0xa6, 0xb1, 0xd5, 0x71, 0x2f, 0xea, 0x69, 0x46, 0x45, 0xdf, 0x78, 0x3a, 0x76, 0x5b, 0x02,
-	0x9f, 0x58, 0xd0, 0x57, 0xd0, 0x08, 0x39, 0x63, 0x45, 0xe8, 0xa2, 0x09, 0xdd, 0x2e, 0x42, 0xbb,
-	0x9c, 0x31, 0x1a, 0xaa, 0x72, 0xb4, 0xc6, 0x5b, 0x8b, 0xff, 0xab, 0x07, 0x75, 0x3d, 0x04, 0xa3,
-	0xe9, 0x66, 0x35, 0xa5, 0xfd, 0xb2, 0x30, 0xd7, 0x7e, 0x41, 0xf7, 0x60, 0xb9, 0x98, 0xbb, 0xdd,
-	0xe0, 0xb5, 0xcc, 0x4e, 0xbc, 0x22, 0x78, 0x71, 0x7e, 0xc1, 0xfe, 0x2f, 0x1e, 0xac, 0x4e, 0x28,
-	0xcf, 0x3b, 0x86, 0x82, 0x78, 0x30, 0x30, 0x01, 0x6e, 0x17, 0xb6, 0x0b, 0xa2, 0x2e, 0xcd, 0x7f,
-	0x60, 0xd5, 0x87, 0x95, 0x33, 0x12, 0x5e, 0x50, 0xd5, 0x63, 0xb7, 0x7f, 0x15, 0xef, 0x42, 0x2d,
-	0x33, 0xc1, 0xa6, 0x4b, 0x4d, 0xec, 0x56, 0xfe, 0x8f, 0x7a, 0x3a, 0xe6, 0xf1, 0x34, 0x57, 0x37,
-	0xa7, 0x7d, 0x08, 0x6d, 0x3a, 0x14, 0x54, 0xca, 0xea, 0x8b, 0x66, 0xad, 0xee, 0x45, 0x3b, 0x2c,
-	0x15, 0x6a, 0x1c, 0x6c, 0x77, 0xa6, 0xcf, 0x74, 0x3e, 0xc8, 0x02, 0xeb, 0x0e, 0x78, 0xae, 0x26,
-	0x2c, 0xba, 0xd0, 0xb4, 0x1b, 0x15, 0x53, 0x22, 0xf9, 0xbf, 0xc8, 0xbb, 0x0b, 0x35, 0x61, 0x60,
-	0x6e, 0xa7, 0xbb, 0x95, 0xff, 0xbb, 0x07, 0xf5, 0x17, 0x79, 0x72, 0x71, 0x9c, 0xf0, 0x4b, 0x89,
-	0x3e, 0x86, 0x9a, 0x8d, 0x70, 0xe7, 0x74, 0xbb, 0x7c, 0xf8, 0x62, 0xe7, 0x45, 0x7b, 0xb0, 0xa4,
-	0xc9, 0x15, 0x67, 0x34, 0x2a, 0xd1, 0x35, 0xa9, 0xb0, 0x05, 0xa0, 0x7d, 0xa8, 0x0d, 0x05, 0xcf,
-	0x33, 0xe9, 0x94, 0xdd, 0x9b, 0x81, 0xbe, 0x34, 0x6e, 0xec, 0x60, 0xe8, 0x6b, 0x68, 0x19, 0x6f,
-	0x4a, 0x15, 0x89, 0x88, 0x22, 0x66, 0xda, 0x8d, 0x83, 0xfb, 0x33, 0x71, 0x27, 0x0e, 0x80, 0x9b,
-	0x83, 0xa9, 0x95, 0xff, 0xa7, 0x07, 0x6b, 0x3d, 0x16, 0x0a, 0x9a, 0x52, 0xa6, 0x48, 0x72, 0x3b,
-	0x5d, 0x9d, 0xb2, 0xae, 0xad, 0x99, 0xa2, 0xdd, 0x11, 0x61, 0x43, 0x3a, 0x51, 0xf7, 0xac, 0xa2,
-	0x6e, 0xe7, 0xdd, 0xea, 0x8a, 0xa8, 0xff, 0x4b, 0xe3, 0x0f, 0xd0, 0x3a, 0x4b, 0xbb, 0x9c, 0x0d,
-	0xe2, 0xa1, 0xec, 0xb1, 0x01, 0xbf, 0x79, 0xf4, 0x9f, 0x02, 0x64, 0x69, 0x10, 0x5a, 0xb8, 0x53,
-	0xb6, 0x3e, 0x39, 0x21, 0x8a, 0x3c, 0xb8, 0x9e, 0x15, 0x8f, 0xfe, 0x4f, 0x1e, 0xac, 0xf5, 0x2f,
-	0x63, 0x15, 0x8e, 0xba, 0x24, 0x23, 0xe7, 0x71, 0x12, 0xab, 0x2b, 0xf4, 0x08, 0x16, 0x23, 0x2a,
-	0x43, 0xd7, 0xc1, 0xcd, 0x99, 0x1d, 0xaa, 0x9d, 0xd8, 0x40, 0x50, 0x0f, 0x56, 0xa5, 0x09, 0x0f,
-	0x06, 0x94, 0xa8, 0x5c, 0x4c, 0x3e, 0xe6, 0xbb, 0x33, 0x51, 0x15, 0x1c, 0x6e, 0x5b, 0xc3, 0xb1,
-	0x5b, 0xfb, 0x17, 0x70, 0xa7, 0x97, 0x92, 0x21, 0x3d, 0xe2, 0x97, 0x2c, 0xe1, 0x24, 0x3a, 0xa1,
-	0x52, 0x92, 0x21, 0x9d, 0x7b, 0xa2, 0x4f, 0x60, 0x29, 0xd6, 0xf1, 0x8e, 0xc0, 0xe4, 0x64, 0x2c,
-	0x25, 0xc5, 0x16, 0xe3, 0x87, 0xb0, 0x72, 0x7a, 0xd2, 0xed, 0xbd, 0xa6, 0x52, 0xcd, 0x5d, 0x60,
-	0x1f, 0x96, 0x05, 0x7d, 0x93, 0x53, 0xa9, 0x26, 0x25, 0xf4, 0xad, 0xa8, 0x73, 0x9a, 0x86, 0xb1,
-	0x4e, 0x84, 0xad, 0x13, 0x17, 0x28, 0x7f, 0x0c, 0x77, 0xfa, 0x71, 0x9a, 0x27, 0x44, 0xd1, 0xe7,
-	0x09, 0x11, 0xe9, 0x6d, 0x15, 0x7d, 0x5e, 0x2d, 0xf8, 0x7e, 0x01, 0x2c, 0xa5, 0x9d, 0xa9, 0xfb,
-	0x9b, 0x07, 0xe8, 0x25, 0x55, 0xdf, 0xbc, 0x55, 0xdf, 0x92, 0x24, 0xa7, 0x45, 0xd9, 0x43, 0x68,
-	0x95, 0x3e, 0x86, 0xff, 0x50, 0xbd, 0x39, 0xfd, 0x65, 0x44, 0x4f, 0xa1, 0x39, 0x7d, 0x31, 0x70,
-	0x44, 0xaa, 0x31, 0x8d, 0xa9, 0x3b, 0x02, 0xfa, 0x02, 0x60, 0xac, 0xeb, 0x4e, 0xdf, 0x6b, 0xee,
-	0x77, 0x26, 0x17, 0xcc, 0x8e, 0x21, 0xa5, 0xcf, 0x6f, 0x73, 0x88, 0xe3, 0xfa, 0xb8, 0x58, 0xfb,
-	0x43, 0x40, 0xfd, 0x59, 0xde, 0xf3, 0xb6, 0xeb, 0x11, 0x2c, 0x99, 0x54, 0xee, 0x0d, 0xdd, 0xa8,
-	0x96, 0xec, 0x53, 0x85, 0x2d, 0xe2, 0xc5, 0x77, 0xb0, 0xcb, 0xc5, 0xd0, 0x6c, 0xd1, 0x90, 0x8b,
-	0xa8, 0xe3, 0xee, 0xdc, 0xd3, 0x57, 0xf6, 0xef, 0x3f, 0x1b, 0xc6, 0x6a, 0x94, 0x9f, 0xeb, 0x6f,
-	0xcf, 0x7e, 0x01, 0x74, 0x97, 0xf3, 0x4f, 0x8a, 0xab, 0xfa, 0xb3, 0xfd, 0x21, 0x2f, 0x5d, 0xfe,
-	0xcf, 0x6b, 0xc6, 0x75, 0xf8, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xbf, 0xfc, 0xfe, 0x21,
-	0x0c, 0x00, 0x00,
+func init() { file_voltha_protos_core_adapter_proto_init() }
+func file_voltha_protos_core_adapter_proto_init() {
+	if File_voltha_protos_core_adapter_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_core_adapter_proto_rawDesc), len(file_voltha_protos_core_adapter_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_core_adapter_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_core_adapter_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_core_adapter_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_core_adapter_proto = out.File
+	file_voltha_protos_core_adapter_proto_goTypes = nil
+	file_voltha_protos_core_adapter_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
index 265d0c8..7547702 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services.pb.go
@@ -1,1023 +1,166 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/core_services.proto
 
 package core_service
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	core_adapter "github.com/opencord/voltha-protos/v5/go/core_adapter"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+var File_voltha_protos_core_services_proto protoreflect.FileDescriptor
 
-func init() { proto.RegisterFile("voltha_protos/core_services.proto", fileDescriptor_979c43850713f141) }
+const file_voltha_protos_core_services_proto_rawDesc = "" +
+	"\n" +
+	"!voltha_protos/core_services.proto\x12\fcore_service\x1a\x1bgoogle/protobuf/empty.proto\x1a voltha_protos/core_adapter.proto\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/device.proto\x1a\x1avoltha_protos/health.proto2\xfd\v\n" +
+	"\vCoreService\x12?\n" +
+	"\x0fGetHealthStatus\x12\x12.common.Connection\x1a\x14.health.HealthStatus(\x010\x01\x12L\n" +
+	"\x0fRegisterAdapter\x12!.core_adapter.AdapterRegistration\x1a\x16.google.protobuf.Empty\x126\n" +
+	"\fDeviceUpdate\x12\x0e.device.Device\x1a\x16.google.protobuf.Empty\x123\n" +
+	"\vPortCreated\x12\f.device.Port\x1a\x16.google.protobuf.Empty\x12I\n" +
+	"\x10PortsStateUpdate\x12\x1d.core_adapter.PortStateFilter\x1a\x16.google.protobuf.Empty\x124\n" +
+	"\x0eDeleteAllPorts\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\x127\n" +
+	"\rGetDevicePort\x12\x18.core_adapter.PortFilter\x1a\f.device.Port\x12,\n" +
+	"\x0fListDevicePorts\x12\n" +
+	".common.ID\x1a\r.device.Ports\x12L\n" +
+	"\x11DeviceStateUpdate\x12\x1f.core_adapter.DeviceStateFilter\x1a\x16.google.protobuf.Empty\x12A\n" +
+	"\x14DevicePMConfigUpdate\x12\x11.device.PmConfigs\x1a\x16.google.protobuf.Empty\x12D\n" +
+	"\x13ChildDeviceDetected\x12\x1d.core_adapter.DeviceDiscovery\x1a\x0e.device.Device\x126\n" +
+	"\x10ChildDevicesLost\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\x12:\n" +
+	"\x14ChildDevicesDetected\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\x12'\n" +
+	"\tGetDevice\x12\n" +
+	".common.ID\x1a\x0e.device.Device\x12A\n" +
+	"\x0eGetChildDevice\x12\x1f.core_adapter.ChildDeviceFilter\x1a\x0e.device.Device\x12.\n" +
+	"\x0fGetChildDevices\x12\n" +
+	".common.ID\x1a\x0f.device.Devices\x12>\n" +
+	"\fSendPacketIn\x12\x16.core_adapter.PacketIn\x1a\x16.google.protobuf.Empty\x12H\n" +
+	"\x12DeviceReasonUpdate\x12\x1a.core_adapter.DeviceReason\x1a\x16.google.protobuf.Empty\x12B\n" +
+	"\x0fPortStateUpdate\x12\x17.core_adapter.PortState\x1a\x16.google.protobuf.Empty\x12;\n" +
+	"\x15ReconcileChildDevices\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\x12M\n" +
+	"\x1eGetChildDeviceWithProxyAddress\x12\x1b.device.Device.ProxyAddress\x1a\x0e.device.Device\x123\n" +
+	"\bGetPorts\x12\x18.core_adapter.PortFilter\x1a\r.device.Ports\x12N\n" +
+	"\x13ChildrenStateUpdate\x12\x1f.core_adapter.DeviceStateFilter\x1a\x16.google.protobuf.Empty\x12D\n" +
+	"\x13UpdateImageDownload\x12\x15.device.ImageDownload\x1a\x16.google.protobuf.EmptyBk\n" +
+	" org.opencord.voltha.core_serviceB\x11VolthaCoreServiceZ4github.com/opencord/voltha-protos/v5/go/core_serviceb\x06proto3"
 
-var fileDescriptor_979c43850713f141 = []byte{
-	// 625 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xcd, 0x4f, 0x14, 0x31,
-	0x14, 0x0f, 0x17, 0xa3, 0x8f, 0x85, 0x85, 0xf2, 0xa1, 0x59, 0x82, 0xc2, 0x49, 0x0f, 0xda, 0x35,
-	0x82, 0x98, 0x68, 0xa2, 0x59, 0x76, 0x74, 0xd9, 0x64, 0x31, 0x04, 0xa2, 0x26, 0x5e, 0x48, 0x99,
-	0x79, 0xcc, 0x4c, 0x98, 0x6d, 0x37, 0x6d, 0x59, 0xdd, 0x3f, 0xde, 0xc4, 0xcc, 0xb4, 0xb3, 0x69,
-	0x87, 0x6d, 0xe4, 0xe0, 0xf5, 0xbd, 0xdf, 0x47, 0xdf, 0xaf, 0x7d, 0x29, 0xec, 0x4f, 0x45, 0xa1,
-	0x33, 0x76, 0x39, 0x91, 0x42, 0x0b, 0xd5, 0x8d, 0x85, 0xc4, 0x4b, 0x85, 0x72, 0x9a, 0xc7, 0xa8,
-	0x68, 0x55, 0x24, 0x2d, 0xb7, 0xd8, 0xd9, 0x49, 0x85, 0x48, 0x0b, 0xec, 0x56, 0xbd, 0xab, 0xdb,
-	0xeb, 0x2e, 0x8e, 0x27, 0x7a, 0x66, 0xa0, 0x9d, 0xbd, 0x05, 0x6a, 0x2c, 0x61, 0x13, 0x8d, 0xd2,
-	0x22, 0x3a, 0x4d, 0xc4, 0x78, 0x2c, 0xf8, 0xe2, 0x5e, 0x82, 0xa5, 0xe1, 0xe2, 0x5e, 0x86, 0xac,
-	0xd0, 0x99, 0xe9, 0xbd, 0xf9, 0xb3, 0x0c, 0xcb, 0x7d, 0x21, 0xf1, 0xc2, 0x1c, 0x91, 0x7c, 0x82,
-	0xf6, 0x00, 0xf5, 0x49, 0x05, 0xb9, 0xd0, 0x4c, 0xdf, 0x2a, 0x42, 0xa8, 0x75, 0xea, 0x0b, 0xce,
-	0x31, 0xd6, 0xb9, 0xe0, 0x9d, 0x4d, 0x6a, 0x55, 0x5c, 0xe4, 0x8b, 0xa5, 0xd7, 0x4b, 0x64, 0x04,
-	0xed, 0x73, 0x4c, 0x73, 0xa5, 0x51, 0xf6, 0xcc, 0xe9, 0xc9, 0x3e, 0xf5, 0x86, 0xb1, 0x65, 0x83,
-	0x92, 0xac, 0xd2, 0xdb, 0xa6, 0x26, 0x1a, 0x5a, 0x47, 0x43, 0x3f, 0x97, 0xd1, 0x90, 0x23, 0x68,
-	0x45, 0xd5, 0x28, 0xdf, 0x26, 0x09, 0xd3, 0x48, 0x56, 0xa9, 0x9d, 0xcc, 0x54, 0x83, 0xbc, 0x03,
-	0x58, 0x3e, 0x13, 0x52, 0xf7, 0x25, 0x32, 0x8d, 0x09, 0x69, 0xd5, 0xb4, 0xb2, 0x18, 0x24, 0x0d,
-	0x61, 0xad, 0xec, 0xab, 0x72, 0x9a, 0xda, 0x70, 0xd7, 0x3f, 0x7b, 0xd9, 0xaf, 0xda, 0x5f, 0xf2,
-	0x42, 0xa3, 0x0c, 0x4a, 0x1d, 0xc2, 0x6a, 0x84, 0x05, 0x6a, 0xec, 0x15, 0x45, 0xa5, 0x49, 0xa0,
-	0x4e, 0x71, 0x18, 0x05, 0x59, 0xef, 0x60, 0x65, 0x80, 0xda, 0x8c, 0x56, 0xb2, 0xc8, 0x93, 0xbb,
-	0xee, 0xd6, 0xd8, 0x9b, 0x88, 0xbc, 0x84, 0xf6, 0x28, 0x57, 0x0e, 0xd3, 0xf7, 0x5b, 0x71, 0xc1,
-	0x8a, 0x8c, 0x60, 0xdd, 0x20, 0xdd, 0x41, 0x9f, 0xf9, 0x56, 0x0e, 0xe0, 0x1f, 0xa3, 0xf6, 0x60,
-	0xd3, 0xfa, 0x9e, 0xf6, 0x05, 0xbf, 0xce, 0x53, 0x2b, 0xb8, 0x3e, 0x37, 0x1d, 0x9b, 0xba, 0x0a,
-	0x4a, 0x44, 0xb0, 0xd1, 0xcf, 0xf2, 0x22, 0x31, 0x3a, 0x11, 0x6a, 0x8c, 0xcb, 0x5b, 0xdb, 0x5d,
-	0x74, 0xa4, 0x28, 0x57, 0xb1, 0x98, 0xa2, 0x9c, 0x75, 0x1a, 0x6f, 0x81, 0x1c, 0xc1, 0x9a, 0xa3,
-	0xa2, 0x46, 0x42, 0xe9, 0x7b, 0xa5, 0xfe, 0x1e, 0x36, 0x5d, 0xde, 0xdc, 0xfe, 0x3e, 0xdc, 0xe7,
-	0xf0, 0x68, 0x7e, 0x63, 0x1e, 0xa1, 0x79, 0xb8, 0x1e, 0xac, 0x0e, 0x50, 0x3b, 0x3e, 0xcd, 0xc0,
-	0x9d, 0x96, 0x0d, 0xbc, 0x29, 0x41, 0xab, 0xd5, 0x74, 0x8f, 0xea, 0x39, 0xb6, 0x7d, 0xb8, 0x22,
-	0x1f, 0xa1, 0x75, 0x81, 0x3c, 0x39, 0x63, 0xf1, 0x0d, 0xea, 0x21, 0x27, 0xdb, 0x8d, 0xc7, 0x64,
-	0xeb, 0xc1, 0xd9, 0x4e, 0x80, 0x18, 0xa9, 0x73, 0x64, 0x4a, 0x70, 0x7b, 0xad, 0x9d, 0x45, 0x97,
-	0x62, 0x10, 0x41, 0xa5, 0x63, 0x68, 0xcf, 0x17, 0xc7, 0xca, 0x3c, 0x0e, 0xec, 0x55, 0x50, 0xe3,
-	0x03, 0x6c, 0x9d, 0x63, 0x2c, 0x78, 0x9c, 0x17, 0x18, 0xcc, 0x20, 0x44, 0x3e, 0x85, 0xa7, 0x7e,
-	0x74, 0x3f, 0x72, 0x9d, 0x9d, 0x49, 0xf1, 0x7b, 0xd6, 0x4b, 0x12, 0x89, 0x4a, 0x91, 0x1d, 0x3f,
-	0x3d, 0xea, 0x36, 0xef, 0xdc, 0xc4, 0x01, 0x3c, 0x1c, 0xa0, 0x36, 0xcb, 0x14, 0x5e, 0xd1, 0xc6,
-	0xd6, 0x7d, 0xb5, 0x8f, 0x5c, 0x22, 0xff, 0x2f, 0x7b, 0x17, 0xc1, 0x86, 0x91, 0x18, 0x8e, 0x59,
-	0x8a, 0x91, 0xf8, 0xc5, 0x0b, 0xc1, 0x12, 0xb2, 0x55, 0xbb, 0x7a, 0xe5, 0x90, 0xca, 0xf1, 0x0d,
-	0xec, 0x09, 0x99, 0x52, 0x31, 0x41, 0x1e, 0x0b, 0x99, 0x50, 0xf3, 0x55, 0x50, 0xf7, 0xdb, 0x3a,
-	0x5e, 0xff, 0x5e, 0x15, 0x9d, 0x6f, 0xe2, 0xe7, 0x61, 0x9a, 0xeb, 0xec, 0xf6, 0xaa, 0x8c, 0xbe,
-	0x5b, 0x73, 0xbb, 0x86, 0xfb, 0xca, 0x7e, 0x33, 0xd3, 0xb7, 0xdd, 0x54, 0x78, 0x9f, 0xe2, 0xd5,
-	0x83, 0xaa, 0x75, 0xf0, 0x37, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x44, 0xa5, 0x7d, 0x39, 0x07, 0x00,
-	0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// CoreServiceClient is the client API for CoreService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type CoreServiceClient interface {
-	// GetHealthStatus is used by a CoreService client to verify connectivity
-	// to the gRPC server hosting the CoreService service
-	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (CoreService_GetHealthStatusClient, error)
-	RegisterAdapter(ctx context.Context, in *core_adapter.AdapterRegistration, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
-	PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	PortsStateUpdate(ctx context.Context, in *core_adapter.PortStateFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetDevicePort(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Port, error)
-	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Ports, error)
-	DeviceStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error)
-	ChildDeviceDetected(ctx context.Context, in *core_adapter.DeviceDiscovery, opts ...grpc.CallOption) (*voltha.Device, error)
-	ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Device, error)
-	GetChildDevice(ctx context.Context, in *core_adapter.ChildDeviceFilter, opts ...grpc.CallOption) (*voltha.Device, error)
-	GetChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Devices, error)
-	SendPacketIn(ctx context.Context, in *core_adapter.PacketIn, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeviceReasonUpdate(ctx context.Context, in *core_adapter.DeviceReason, opts ...grpc.CallOption) (*empty.Empty, error)
-	PortStateUpdate(ctx context.Context, in *core_adapter.PortState, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Additional API found in the Core - unused?
-	ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetChildDeviceWithProxyAddress(ctx context.Context, in *voltha.Device_ProxyAddress, opts ...grpc.CallOption) (*voltha.Device, error)
-	GetPorts(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Ports, error)
-	ChildrenStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*empty.Empty, error)
-}
-
-type coreServiceClient struct {
-	cc *grpc.ClientConn
+var file_voltha_protos_core_services_proto_goTypes = []any{
+	(*common.Connection)(nil),                // 0: common.Connection
+	(*core_adapter.AdapterRegistration)(nil), // 1: core_adapter.AdapterRegistration
+	(*voltha.Device)(nil),                    // 2: device.Device
+	(*voltha.Port)(nil),                      // 3: device.Port
+	(*core_adapter.PortStateFilter)(nil),     // 4: core_adapter.PortStateFilter
+	(*common.ID)(nil),                        // 5: common.ID
+	(*core_adapter.PortFilter)(nil),          // 6: core_adapter.PortFilter
+	(*core_adapter.DeviceStateFilter)(nil),   // 7: core_adapter.DeviceStateFilter
+	(*voltha.PmConfigs)(nil),                 // 8: device.PmConfigs
+	(*core_adapter.DeviceDiscovery)(nil),     // 9: core_adapter.DeviceDiscovery
+	(*core_adapter.ChildDeviceFilter)(nil),   // 10: core_adapter.ChildDeviceFilter
+	(*core_adapter.PacketIn)(nil),            // 11: core_adapter.PacketIn
+	(*core_adapter.DeviceReason)(nil),        // 12: core_adapter.DeviceReason
+	(*core_adapter.PortState)(nil),           // 13: core_adapter.PortState
+	(*voltha.Device_ProxyAddress)(nil),       // 14: device.Device.ProxyAddress
+	(*voltha.ImageDownload)(nil),             // 15: device.ImageDownload
+	(*health.HealthStatus)(nil),              // 16: health.HealthStatus
+	(*emptypb.Empty)(nil),                    // 17: google.protobuf.Empty
+	(*voltha.Ports)(nil),                     // 18: device.Ports
+	(*voltha.Devices)(nil),                   // 19: device.Devices
 }
-
-func NewCoreServiceClient(cc *grpc.ClientConn) CoreServiceClient {
-	return &coreServiceClient{cc}
+var file_voltha_protos_core_services_proto_depIdxs = []int32{
+	0,  // 0: core_service.CoreService.GetHealthStatus:input_type -> common.Connection
+	1,  // 1: core_service.CoreService.RegisterAdapter:input_type -> core_adapter.AdapterRegistration
+	2,  // 2: core_service.CoreService.DeviceUpdate:input_type -> device.Device
+	3,  // 3: core_service.CoreService.PortCreated:input_type -> device.Port
+	4,  // 4: core_service.CoreService.PortsStateUpdate:input_type -> core_adapter.PortStateFilter
+	5,  // 5: core_service.CoreService.DeleteAllPorts:input_type -> common.ID
+	6,  // 6: core_service.CoreService.GetDevicePort:input_type -> core_adapter.PortFilter
+	5,  // 7: core_service.CoreService.ListDevicePorts:input_type -> common.ID
+	7,  // 8: core_service.CoreService.DeviceStateUpdate:input_type -> core_adapter.DeviceStateFilter
+	8,  // 9: core_service.CoreService.DevicePMConfigUpdate:input_type -> device.PmConfigs
+	9,  // 10: core_service.CoreService.ChildDeviceDetected:input_type -> core_adapter.DeviceDiscovery
+	5,  // 11: core_service.CoreService.ChildDevicesLost:input_type -> common.ID
+	5,  // 12: core_service.CoreService.ChildDevicesDetected:input_type -> common.ID
+	5,  // 13: core_service.CoreService.GetDevice:input_type -> common.ID
+	10, // 14: core_service.CoreService.GetChildDevice:input_type -> core_adapter.ChildDeviceFilter
+	5,  // 15: core_service.CoreService.GetChildDevices:input_type -> common.ID
+	11, // 16: core_service.CoreService.SendPacketIn:input_type -> core_adapter.PacketIn
+	12, // 17: core_service.CoreService.DeviceReasonUpdate:input_type -> core_adapter.DeviceReason
+	13, // 18: core_service.CoreService.PortStateUpdate:input_type -> core_adapter.PortState
+	5,  // 19: core_service.CoreService.ReconcileChildDevices:input_type -> common.ID
+	14, // 20: core_service.CoreService.GetChildDeviceWithProxyAddress:input_type -> device.Device.ProxyAddress
+	6,  // 21: core_service.CoreService.GetPorts:input_type -> core_adapter.PortFilter
+	7,  // 22: core_service.CoreService.ChildrenStateUpdate:input_type -> core_adapter.DeviceStateFilter
+	15, // 23: core_service.CoreService.UpdateImageDownload:input_type -> device.ImageDownload
+	16, // 24: core_service.CoreService.GetHealthStatus:output_type -> health.HealthStatus
+	17, // 25: core_service.CoreService.RegisterAdapter:output_type -> google.protobuf.Empty
+	17, // 26: core_service.CoreService.DeviceUpdate:output_type -> google.protobuf.Empty
+	17, // 27: core_service.CoreService.PortCreated:output_type -> google.protobuf.Empty
+	17, // 28: core_service.CoreService.PortsStateUpdate:output_type -> google.protobuf.Empty
+	17, // 29: core_service.CoreService.DeleteAllPorts:output_type -> google.protobuf.Empty
+	3,  // 30: core_service.CoreService.GetDevicePort:output_type -> device.Port
+	18, // 31: core_service.CoreService.ListDevicePorts:output_type -> device.Ports
+	17, // 32: core_service.CoreService.DeviceStateUpdate:output_type -> google.protobuf.Empty
+	17, // 33: core_service.CoreService.DevicePMConfigUpdate:output_type -> google.protobuf.Empty
+	2,  // 34: core_service.CoreService.ChildDeviceDetected:output_type -> device.Device
+	17, // 35: core_service.CoreService.ChildDevicesLost:output_type -> google.protobuf.Empty
+	17, // 36: core_service.CoreService.ChildDevicesDetected:output_type -> google.protobuf.Empty
+	2,  // 37: core_service.CoreService.GetDevice:output_type -> device.Device
+	2,  // 38: core_service.CoreService.GetChildDevice:output_type -> device.Device
+	19, // 39: core_service.CoreService.GetChildDevices:output_type -> device.Devices
+	17, // 40: core_service.CoreService.SendPacketIn:output_type -> google.protobuf.Empty
+	17, // 41: core_service.CoreService.DeviceReasonUpdate:output_type -> google.protobuf.Empty
+	17, // 42: core_service.CoreService.PortStateUpdate:output_type -> google.protobuf.Empty
+	17, // 43: core_service.CoreService.ReconcileChildDevices:output_type -> google.protobuf.Empty
+	2,  // 44: core_service.CoreService.GetChildDeviceWithProxyAddress:output_type -> device.Device
+	18, // 45: core_service.CoreService.GetPorts:output_type -> device.Ports
+	17, // 46: core_service.CoreService.ChildrenStateUpdate:output_type -> google.protobuf.Empty
+	17, // 47: core_service.CoreService.UpdateImageDownload:output_type -> google.protobuf.Empty
+	24, // [24:48] is the sub-list for method output_type
+	0,  // [0:24] is the sub-list for method input_type
+	0,  // [0:0] is the sub-list for extension type_name
+	0,  // [0:0] is the sub-list for extension extendee
+	0,  // [0:0] is the sub-list for field type_name
 }
 
-func (c *coreServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (CoreService_GetHealthStatusClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_CoreService_serviceDesc.Streams[0], "/core_service.CoreService/GetHealthStatus", opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_core_services_proto_init() }
+func file_voltha_protos_core_services_proto_init() {
+	if File_voltha_protos_core_services_proto != nil {
+		return
 	}
-	x := &coreServiceGetHealthStatusClient{stream}
-	return x, nil
-}
-
-type CoreService_GetHealthStatusClient interface {
-	Send(*common.Connection) error
-	Recv() (*health.HealthStatus, error)
-	grpc.ClientStream
-}
-
-type coreServiceGetHealthStatusClient struct {
-	grpc.ClientStream
-}
-
-func (x *coreServiceGetHealthStatusClient) Send(m *common.Connection) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *coreServiceGetHealthStatusClient) Recv() (*health.HealthStatus, error) {
-	m := new(health.HealthStatus)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *coreServiceClient) RegisterAdapter(ctx context.Context, in *core_adapter.AdapterRegistration, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/RegisterAdapter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/DeviceUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/PortCreated", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) PortsStateUpdate(ctx context.Context, in *core_adapter.PortStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/PortsStateUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/DeleteAllPorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetDevicePort(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Port, error) {
-	out := new(voltha.Port)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Ports, error) {
-	out := new(voltha.Ports)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ListDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) DeviceStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/DeviceStateUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/DevicePMConfigUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ChildDeviceDetected(ctx context.Context, in *core_adapter.DeviceDiscovery, opts ...grpc.CallOption) (*voltha.Device, error) {
-	out := new(voltha.Device)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ChildDeviceDetected", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ChildDevicesLost", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ChildDevicesDetected", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Device, error) {
-	out := new(voltha.Device)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetChildDevice(ctx context.Context, in *core_adapter.ChildDeviceFilter, opts ...grpc.CallOption) (*voltha.Device, error) {
-	out := new(voltha.Device)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetChildDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Devices, error) {
-	out := new(voltha.Devices)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetChildDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) SendPacketIn(ctx context.Context, in *core_adapter.PacketIn, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/SendPacketIn", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) DeviceReasonUpdate(ctx context.Context, in *core_adapter.DeviceReason, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/DeviceReasonUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) PortStateUpdate(ctx context.Context, in *core_adapter.PortState, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/PortStateUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ReconcileChildDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetChildDeviceWithProxyAddress(ctx context.Context, in *voltha.Device_ProxyAddress, opts ...grpc.CallOption) (*voltha.Device, error) {
-	out := new(voltha.Device)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetChildDeviceWithProxyAddress", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) GetPorts(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Ports, error) {
-	out := new(voltha.Ports)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/GetPorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) ChildrenStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/ChildrenStateUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *coreServiceClient) UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/core_service.CoreService/UpdateImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// CoreServiceServer is the server API for CoreService service.
-type CoreServiceServer interface {
-	// GetHealthStatus is used by a CoreService client to verify connectivity
-	// to the gRPC server hosting the CoreService service
-	GetHealthStatus(CoreService_GetHealthStatusServer) error
-	RegisterAdapter(context.Context, *core_adapter.AdapterRegistration) (*empty.Empty, error)
-	DeviceUpdate(context.Context, *voltha.Device) (*empty.Empty, error)
-	PortCreated(context.Context, *voltha.Port) (*empty.Empty, error)
-	PortsStateUpdate(context.Context, *core_adapter.PortStateFilter) (*empty.Empty, error)
-	DeleteAllPorts(context.Context, *common.ID) (*empty.Empty, error)
-	GetDevicePort(context.Context, *core_adapter.PortFilter) (*voltha.Port, error)
-	ListDevicePorts(context.Context, *common.ID) (*voltha.Ports, error)
-	DeviceStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*empty.Empty, error)
-	DevicePMConfigUpdate(context.Context, *voltha.PmConfigs) (*empty.Empty, error)
-	ChildDeviceDetected(context.Context, *core_adapter.DeviceDiscovery) (*voltha.Device, error)
-	ChildDevicesLost(context.Context, *common.ID) (*empty.Empty, error)
-	ChildDevicesDetected(context.Context, *common.ID) (*empty.Empty, error)
-	GetDevice(context.Context, *common.ID) (*voltha.Device, error)
-	GetChildDevice(context.Context, *core_adapter.ChildDeviceFilter) (*voltha.Device, error)
-	GetChildDevices(context.Context, *common.ID) (*voltha.Devices, error)
-	SendPacketIn(context.Context, *core_adapter.PacketIn) (*empty.Empty, error)
-	DeviceReasonUpdate(context.Context, *core_adapter.DeviceReason) (*empty.Empty, error)
-	PortStateUpdate(context.Context, *core_adapter.PortState) (*empty.Empty, error)
-	// Additional API found in the Core - unused?
-	ReconcileChildDevices(context.Context, *common.ID) (*empty.Empty, error)
-	GetChildDeviceWithProxyAddress(context.Context, *voltha.Device_ProxyAddress) (*voltha.Device, error)
-	GetPorts(context.Context, *core_adapter.PortFilter) (*voltha.Ports, error)
-	ChildrenStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*empty.Empty, error)
-	UpdateImageDownload(context.Context, *voltha.ImageDownload) (*empty.Empty, error)
-}
-
-// UnimplementedCoreServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedCoreServiceServer struct {
-}
-
-func (*UnimplementedCoreServiceServer) GetHealthStatus(srv CoreService_GetHealthStatusServer) error {
-	return status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
-}
-func (*UnimplementedCoreServiceServer) RegisterAdapter(ctx context.Context, req *core_adapter.AdapterRegistration) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RegisterAdapter not implemented")
-}
-func (*UnimplementedCoreServiceServer) DeviceUpdate(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeviceUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) PortCreated(ctx context.Context, req *voltha.Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PortCreated not implemented")
-}
-func (*UnimplementedCoreServiceServer) PortsStateUpdate(ctx context.Context, req *core_adapter.PortStateFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PortsStateUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) DeleteAllPorts(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteAllPorts not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetDevicePort(ctx context.Context, req *core_adapter.PortFilter) (*voltha.Port, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDevicePort not implemented")
-}
-func (*UnimplementedCoreServiceServer) ListDevicePorts(ctx context.Context, req *common.ID) (*voltha.Ports, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePorts not implemented")
-}
-func (*UnimplementedCoreServiceServer) DeviceStateUpdate(ctx context.Context, req *core_adapter.DeviceStateFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeviceStateUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) DevicePMConfigUpdate(ctx context.Context, req *voltha.PmConfigs) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DevicePMConfigUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) ChildDeviceDetected(ctx context.Context, req *core_adapter.DeviceDiscovery) (*voltha.Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChildDeviceDetected not implemented")
-}
-func (*UnimplementedCoreServiceServer) ChildDevicesLost(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChildDevicesLost not implemented")
-}
-func (*UnimplementedCoreServiceServer) ChildDevicesDetected(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChildDevicesDetected not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetDevice(ctx context.Context, req *common.ID) (*voltha.Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDevice not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetChildDevice(ctx context.Context, req *core_adapter.ChildDeviceFilter) (*voltha.Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetChildDevice not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetChildDevices(ctx context.Context, req *common.ID) (*voltha.Devices, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetChildDevices not implemented")
-}
-func (*UnimplementedCoreServiceServer) SendPacketIn(ctx context.Context, req *core_adapter.PacketIn) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SendPacketIn not implemented")
-}
-func (*UnimplementedCoreServiceServer) DeviceReasonUpdate(ctx context.Context, req *core_adapter.DeviceReason) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeviceReasonUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) PortStateUpdate(ctx context.Context, req *core_adapter.PortState) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PortStateUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) ReconcileChildDevices(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReconcileChildDevices not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetChildDeviceWithProxyAddress(ctx context.Context, req *voltha.Device_ProxyAddress) (*voltha.Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetChildDeviceWithProxyAddress not implemented")
-}
-func (*UnimplementedCoreServiceServer) GetPorts(ctx context.Context, req *core_adapter.PortFilter) (*voltha.Ports, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetPorts not implemented")
-}
-func (*UnimplementedCoreServiceServer) ChildrenStateUpdate(ctx context.Context, req *core_adapter.DeviceStateFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ChildrenStateUpdate not implemented")
-}
-func (*UnimplementedCoreServiceServer) UpdateImageDownload(ctx context.Context, req *voltha.ImageDownload) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateImageDownload not implemented")
-}
-
-func RegisterCoreServiceServer(s *grpc.Server, srv CoreServiceServer) {
-	s.RegisterService(&_CoreService_serviceDesc, srv)
-}
-
-func _CoreService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(CoreServiceServer).GetHealthStatus(&coreServiceGetHealthStatusServer{stream})
-}
-
-type CoreService_GetHealthStatusServer interface {
-	Send(*health.HealthStatus) error
-	Recv() (*common.Connection, error)
-	grpc.ServerStream
-}
-
-type coreServiceGetHealthStatusServer struct {
-	grpc.ServerStream
-}
-
-func (x *coreServiceGetHealthStatusServer) Send(m *health.HealthStatus) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *coreServiceGetHealthStatusServer) Recv() (*common.Connection, error) {
-	m := new(common.Connection)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _CoreService_RegisterAdapter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.AdapterRegistration)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).RegisterAdapter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/RegisterAdapter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).RegisterAdapter(ctx, req.(*core_adapter.AdapterRegistration))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_DeviceUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).DeviceUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/DeviceUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).DeviceUpdate(ctx, req.(*voltha.Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_PortCreated_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).PortCreated(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/PortCreated",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).PortCreated(ctx, req.(*voltha.Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_PortsStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PortStateFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).PortsStateUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/PortsStateUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).PortsStateUpdate(ctx, req.(*core_adapter.PortStateFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_DeleteAllPorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).DeleteAllPorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/DeleteAllPorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).DeleteAllPorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PortFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetDevicePort(ctx, req.(*core_adapter.PortFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ListDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ListDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ListDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_DeviceStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.DeviceStateFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).DeviceStateUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/DeviceStateUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).DeviceStateUpdate(ctx, req.(*core_adapter.DeviceStateFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_DevicePMConfigUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.PmConfigs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).DevicePMConfigUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/DevicePMConfigUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).DevicePMConfigUpdate(ctx, req.(*voltha.PmConfigs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ChildDeviceDetected_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.DeviceDiscovery)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ChildDeviceDetected(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ChildDeviceDetected",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ChildDeviceDetected(ctx, req.(*core_adapter.DeviceDiscovery))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ChildDevicesLost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ChildDevicesLost(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ChildDevicesLost",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ChildDevicesLost(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ChildDevicesDetected_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ChildDevicesDetected(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ChildDevicesDetected",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ChildDevicesDetected(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetChildDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.ChildDeviceFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetChildDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetChildDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetChildDevice(ctx, req.(*core_adapter.ChildDeviceFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetChildDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetChildDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetChildDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetChildDevices(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_SendPacketIn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PacketIn)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).SendPacketIn(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/SendPacketIn",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).SendPacketIn(ctx, req.(*core_adapter.PacketIn))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_DeviceReasonUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.DeviceReason)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).DeviceReasonUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/DeviceReasonUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).DeviceReasonUpdate(ctx, req.(*core_adapter.DeviceReason))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_PortStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PortState)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).PortStateUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/PortStateUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).PortStateUpdate(ctx, req.(*core_adapter.PortState))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ReconcileChildDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ReconcileChildDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ReconcileChildDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ReconcileChildDevices(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetChildDeviceWithProxyAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.Device_ProxyAddress)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetChildDeviceWithProxyAddress(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetChildDeviceWithProxyAddress",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetChildDeviceWithProxyAddress(ctx, req.(*voltha.Device_ProxyAddress))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_GetPorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.PortFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).GetPorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/GetPorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).GetPorts(ctx, req.(*core_adapter.PortFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_ChildrenStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(core_adapter.DeviceStateFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).ChildrenStateUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/ChildrenStateUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).ChildrenStateUpdate(ctx, req.(*core_adapter.DeviceStateFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _CoreService_UpdateImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voltha.ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(CoreServiceServer).UpdateImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/core_service.CoreService/UpdateImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(CoreServiceServer).UpdateImageDownload(ctx, req.(*voltha.ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _CoreService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "core_service.CoreService",
-	HandlerType: (*CoreServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "RegisterAdapter",
-			Handler:    _CoreService_RegisterAdapter_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_core_services_proto_rawDesc), len(file_voltha_protos_core_services_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "DeviceUpdate",
-			Handler:    _CoreService_DeviceUpdate_Handler,
-		},
-		{
-			MethodName: "PortCreated",
-			Handler:    _CoreService_PortCreated_Handler,
-		},
-		{
-			MethodName: "PortsStateUpdate",
-			Handler:    _CoreService_PortsStateUpdate_Handler,
-		},
-		{
-			MethodName: "DeleteAllPorts",
-			Handler:    _CoreService_DeleteAllPorts_Handler,
-		},
-		{
-			MethodName: "GetDevicePort",
-			Handler:    _CoreService_GetDevicePort_Handler,
-		},
-		{
-			MethodName: "ListDevicePorts",
-			Handler:    _CoreService_ListDevicePorts_Handler,
-		},
-		{
-			MethodName: "DeviceStateUpdate",
-			Handler:    _CoreService_DeviceStateUpdate_Handler,
-		},
-		{
-			MethodName: "DevicePMConfigUpdate",
-			Handler:    _CoreService_DevicePMConfigUpdate_Handler,
-		},
-		{
-			MethodName: "ChildDeviceDetected",
-			Handler:    _CoreService_ChildDeviceDetected_Handler,
-		},
-		{
-			MethodName: "ChildDevicesLost",
-			Handler:    _CoreService_ChildDevicesLost_Handler,
-		},
-		{
-			MethodName: "ChildDevicesDetected",
-			Handler:    _CoreService_ChildDevicesDetected_Handler,
-		},
-		{
-			MethodName: "GetDevice",
-			Handler:    _CoreService_GetDevice_Handler,
-		},
-		{
-			MethodName: "GetChildDevice",
-			Handler:    _CoreService_GetChildDevice_Handler,
-		},
-		{
-			MethodName: "GetChildDevices",
-			Handler:    _CoreService_GetChildDevices_Handler,
-		},
-		{
-			MethodName: "SendPacketIn",
-			Handler:    _CoreService_SendPacketIn_Handler,
-		},
-		{
-			MethodName: "DeviceReasonUpdate",
-			Handler:    _CoreService_DeviceReasonUpdate_Handler,
-		},
-		{
-			MethodName: "PortStateUpdate",
-			Handler:    _CoreService_PortStateUpdate_Handler,
-		},
-		{
-			MethodName: "ReconcileChildDevices",
-			Handler:    _CoreService_ReconcileChildDevices_Handler,
-		},
-		{
-			MethodName: "GetChildDeviceWithProxyAddress",
-			Handler:    _CoreService_GetChildDeviceWithProxyAddress_Handler,
-		},
-		{
-			MethodName: "GetPorts",
-			Handler:    _CoreService_GetPorts_Handler,
-		},
-		{
-			MethodName: "ChildrenStateUpdate",
-			Handler:    _CoreService_ChildrenStateUpdate_Handler,
-		},
-		{
-			MethodName: "UpdateImageDownload",
-			Handler:    _CoreService_UpdateImageDownload_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "GetHealthStatus",
-			Handler:       _CoreService_GetHealthStatus_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "voltha_protos/core_services.proto",
+		GoTypes:           file_voltha_protos_core_services_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_core_services_proto_depIdxs,
+	}.Build()
+	File_voltha_protos_core_services_proto = out.File
+	file_voltha_protos_core_services_proto_goTypes = nil
+	file_voltha_protos_core_services_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services_grpc.pb.go
new file mode 100644
index 0000000..61f346d
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/core_service/core_services_grpc.pb.go
@@ -0,0 +1,1007 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/core_services.proto
+
+package core_service
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	core_adapter "github.com/opencord/voltha-protos/v5/go/core_adapter"
+	health "github.com/opencord/voltha-protos/v5/go/health"
+	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	CoreService_GetHealthStatus_FullMethodName                = "/core_service.CoreService/GetHealthStatus"
+	CoreService_RegisterAdapter_FullMethodName                = "/core_service.CoreService/RegisterAdapter"
+	CoreService_DeviceUpdate_FullMethodName                   = "/core_service.CoreService/DeviceUpdate"
+	CoreService_PortCreated_FullMethodName                    = "/core_service.CoreService/PortCreated"
+	CoreService_PortsStateUpdate_FullMethodName               = "/core_service.CoreService/PortsStateUpdate"
+	CoreService_DeleteAllPorts_FullMethodName                 = "/core_service.CoreService/DeleteAllPorts"
+	CoreService_GetDevicePort_FullMethodName                  = "/core_service.CoreService/GetDevicePort"
+	CoreService_ListDevicePorts_FullMethodName                = "/core_service.CoreService/ListDevicePorts"
+	CoreService_DeviceStateUpdate_FullMethodName              = "/core_service.CoreService/DeviceStateUpdate"
+	CoreService_DevicePMConfigUpdate_FullMethodName           = "/core_service.CoreService/DevicePMConfigUpdate"
+	CoreService_ChildDeviceDetected_FullMethodName            = "/core_service.CoreService/ChildDeviceDetected"
+	CoreService_ChildDevicesLost_FullMethodName               = "/core_service.CoreService/ChildDevicesLost"
+	CoreService_ChildDevicesDetected_FullMethodName           = "/core_service.CoreService/ChildDevicesDetected"
+	CoreService_GetDevice_FullMethodName                      = "/core_service.CoreService/GetDevice"
+	CoreService_GetChildDevice_FullMethodName                 = "/core_service.CoreService/GetChildDevice"
+	CoreService_GetChildDevices_FullMethodName                = "/core_service.CoreService/GetChildDevices"
+	CoreService_SendPacketIn_FullMethodName                   = "/core_service.CoreService/SendPacketIn"
+	CoreService_DeviceReasonUpdate_FullMethodName             = "/core_service.CoreService/DeviceReasonUpdate"
+	CoreService_PortStateUpdate_FullMethodName                = "/core_service.CoreService/PortStateUpdate"
+	CoreService_ReconcileChildDevices_FullMethodName          = "/core_service.CoreService/ReconcileChildDevices"
+	CoreService_GetChildDeviceWithProxyAddress_FullMethodName = "/core_service.CoreService/GetChildDeviceWithProxyAddress"
+	CoreService_GetPorts_FullMethodName                       = "/core_service.CoreService/GetPorts"
+	CoreService_ChildrenStateUpdate_FullMethodName            = "/core_service.CoreService/ChildrenStateUpdate"
+	CoreService_UpdateImageDownload_FullMethodName            = "/core_service.CoreService/UpdateImageDownload"
+)
+
+// CoreServiceClient is the client API for CoreService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// The CoreService is a gRPC service implemented by the Voltha RW-Core for the
+// sole purpose of serving requests/updates from the Voltha adapters.
+type CoreServiceClient interface {
+	// GetHealthStatus is used by a CoreService client to verify connectivity
+	// to the gRPC server hosting the CoreService service
+	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error)
+	RegisterAdapter(ctx context.Context, in *core_adapter.AdapterRegistration, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	PortsStateUpdate(ctx context.Context, in *core_adapter.PortStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetDevicePort(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Port, error)
+	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Ports, error)
+	DeviceStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	ChildDeviceDetected(ctx context.Context, in *core_adapter.DeviceDiscovery, opts ...grpc.CallOption) (*voltha.Device, error)
+	ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Device, error)
+	GetChildDevice(ctx context.Context, in *core_adapter.ChildDeviceFilter, opts ...grpc.CallOption) (*voltha.Device, error)
+	GetChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Devices, error)
+	SendPacketIn(ctx context.Context, in *core_adapter.PacketIn, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeviceReasonUpdate(ctx context.Context, in *core_adapter.DeviceReason, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	PortStateUpdate(ctx context.Context, in *core_adapter.PortState, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Additional API found in the Core - unused?
+	ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetChildDeviceWithProxyAddress(ctx context.Context, in *voltha.Device_ProxyAddress, opts ...grpc.CallOption) (*voltha.Device, error)
+	GetPorts(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Ports, error)
+	ChildrenStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type coreServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewCoreServiceClient(cc grpc.ClientConnInterface) CoreServiceClient {
+	return &coreServiceClient{cc}
+}
+
+func (c *coreServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &CoreService_ServiceDesc.Streams[0], CoreService_GetHealthStatus_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[common.Connection, health.HealthStatus]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type CoreService_GetHealthStatusClient = grpc.BidiStreamingClient[common.Connection, health.HealthStatus]
+
+func (c *coreServiceClient) RegisterAdapter(ctx context.Context, in *core_adapter.AdapterRegistration, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_RegisterAdapter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) DeviceUpdate(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_DeviceUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) PortCreated(ctx context.Context, in *voltha.Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_PortCreated_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) PortsStateUpdate(ctx context.Context, in *core_adapter.PortStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_PortsStateUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) DeleteAllPorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_DeleteAllPorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetDevicePort(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Port, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Port)
+	err := c.cc.Invoke(ctx, CoreService_GetDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Ports, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Ports)
+	err := c.cc.Invoke(ctx, CoreService_ListDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) DeviceStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_DeviceStateUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) DevicePMConfigUpdate(ctx context.Context, in *voltha.PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_DevicePMConfigUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ChildDeviceDetected(ctx context.Context, in *core_adapter.DeviceDiscovery, opts ...grpc.CallOption) (*voltha.Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Device)
+	err := c.cc.Invoke(ctx, CoreService_ChildDeviceDetected_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ChildDevicesLost(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_ChildDevicesLost_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ChildDevicesDetected(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_ChildDevicesDetected_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Device)
+	err := c.cc.Invoke(ctx, CoreService_GetDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetChildDevice(ctx context.Context, in *core_adapter.ChildDeviceFilter, opts ...grpc.CallOption) (*voltha.Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Device)
+	err := c.cc.Invoke(ctx, CoreService_GetChildDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*voltha.Devices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Devices)
+	err := c.cc.Invoke(ctx, CoreService_GetChildDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) SendPacketIn(ctx context.Context, in *core_adapter.PacketIn, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_SendPacketIn_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) DeviceReasonUpdate(ctx context.Context, in *core_adapter.DeviceReason, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_DeviceReasonUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) PortStateUpdate(ctx context.Context, in *core_adapter.PortState, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_PortStateUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ReconcileChildDevices(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_ReconcileChildDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetChildDeviceWithProxyAddress(ctx context.Context, in *voltha.Device_ProxyAddress, opts ...grpc.CallOption) (*voltha.Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Device)
+	err := c.cc.Invoke(ctx, CoreService_GetChildDeviceWithProxyAddress_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) GetPorts(ctx context.Context, in *core_adapter.PortFilter, opts ...grpc.CallOption) (*voltha.Ports, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(voltha.Ports)
+	err := c.cc.Invoke(ctx, CoreService_GetPorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) ChildrenStateUpdate(ctx context.Context, in *core_adapter.DeviceStateFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_ChildrenStateUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *coreServiceClient) UpdateImageDownload(ctx context.Context, in *voltha.ImageDownload, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, CoreService_UpdateImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// CoreServiceServer is the server API for CoreService service.
+// All implementations must embed UnimplementedCoreServiceServer
+// for forward compatibility.
+//
+// The CoreService is a gRPC service implemented by the Voltha RW-Core for the
+// sole purpose of serving requests/updates from the Voltha adapters.
+type CoreServiceServer interface {
+	// GetHealthStatus is used by a CoreService client to verify connectivity
+	// to the gRPC server hosting the CoreService service
+	GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error
+	RegisterAdapter(context.Context, *core_adapter.AdapterRegistration) (*emptypb.Empty, error)
+	DeviceUpdate(context.Context, *voltha.Device) (*emptypb.Empty, error)
+	PortCreated(context.Context, *voltha.Port) (*emptypb.Empty, error)
+	PortsStateUpdate(context.Context, *core_adapter.PortStateFilter) (*emptypb.Empty, error)
+	DeleteAllPorts(context.Context, *common.ID) (*emptypb.Empty, error)
+	GetDevicePort(context.Context, *core_adapter.PortFilter) (*voltha.Port, error)
+	ListDevicePorts(context.Context, *common.ID) (*voltha.Ports, error)
+	DeviceStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*emptypb.Empty, error)
+	DevicePMConfigUpdate(context.Context, *voltha.PmConfigs) (*emptypb.Empty, error)
+	ChildDeviceDetected(context.Context, *core_adapter.DeviceDiscovery) (*voltha.Device, error)
+	ChildDevicesLost(context.Context, *common.ID) (*emptypb.Empty, error)
+	ChildDevicesDetected(context.Context, *common.ID) (*emptypb.Empty, error)
+	GetDevice(context.Context, *common.ID) (*voltha.Device, error)
+	GetChildDevice(context.Context, *core_adapter.ChildDeviceFilter) (*voltha.Device, error)
+	GetChildDevices(context.Context, *common.ID) (*voltha.Devices, error)
+	SendPacketIn(context.Context, *core_adapter.PacketIn) (*emptypb.Empty, error)
+	DeviceReasonUpdate(context.Context, *core_adapter.DeviceReason) (*emptypb.Empty, error)
+	PortStateUpdate(context.Context, *core_adapter.PortState) (*emptypb.Empty, error)
+	// Additional API found in the Core - unused?
+	ReconcileChildDevices(context.Context, *common.ID) (*emptypb.Empty, error)
+	GetChildDeviceWithProxyAddress(context.Context, *voltha.Device_ProxyAddress) (*voltha.Device, error)
+	GetPorts(context.Context, *core_adapter.PortFilter) (*voltha.Ports, error)
+	ChildrenStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*emptypb.Empty, error)
+	UpdateImageDownload(context.Context, *voltha.ImageDownload) (*emptypb.Empty, error)
+	mustEmbedUnimplementedCoreServiceServer()
+}
+
+// UnimplementedCoreServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedCoreServiceServer struct{}
+
+func (UnimplementedCoreServiceServer) GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error {
+	return status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedCoreServiceServer) RegisterAdapter(context.Context, *core_adapter.AdapterRegistration) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RegisterAdapter not implemented")
+}
+func (UnimplementedCoreServiceServer) DeviceUpdate(context.Context, *voltha.Device) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeviceUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) PortCreated(context.Context, *voltha.Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PortCreated not implemented")
+}
+func (UnimplementedCoreServiceServer) PortsStateUpdate(context.Context, *core_adapter.PortStateFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PortsStateUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) DeleteAllPorts(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteAllPorts not implemented")
+}
+func (UnimplementedCoreServiceServer) GetDevicePort(context.Context, *core_adapter.PortFilter) (*voltha.Port, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDevicePort not implemented")
+}
+func (UnimplementedCoreServiceServer) ListDevicePorts(context.Context, *common.ID) (*voltha.Ports, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePorts not implemented")
+}
+func (UnimplementedCoreServiceServer) DeviceStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeviceStateUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) DevicePMConfigUpdate(context.Context, *voltha.PmConfigs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DevicePMConfigUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) ChildDeviceDetected(context.Context, *core_adapter.DeviceDiscovery) (*voltha.Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method ChildDeviceDetected not implemented")
+}
+func (UnimplementedCoreServiceServer) ChildDevicesLost(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ChildDevicesLost not implemented")
+}
+func (UnimplementedCoreServiceServer) ChildDevicesDetected(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ChildDevicesDetected not implemented")
+}
+func (UnimplementedCoreServiceServer) GetDevice(context.Context, *common.ID) (*voltha.Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDevice not implemented")
+}
+func (UnimplementedCoreServiceServer) GetChildDevice(context.Context, *core_adapter.ChildDeviceFilter) (*voltha.Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetChildDevice not implemented")
+}
+func (UnimplementedCoreServiceServer) GetChildDevices(context.Context, *common.ID) (*voltha.Devices, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetChildDevices not implemented")
+}
+func (UnimplementedCoreServiceServer) SendPacketIn(context.Context, *core_adapter.PacketIn) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SendPacketIn not implemented")
+}
+func (UnimplementedCoreServiceServer) DeviceReasonUpdate(context.Context, *core_adapter.DeviceReason) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeviceReasonUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) PortStateUpdate(context.Context, *core_adapter.PortState) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PortStateUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) ReconcileChildDevices(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReconcileChildDevices not implemented")
+}
+func (UnimplementedCoreServiceServer) GetChildDeviceWithProxyAddress(context.Context, *voltha.Device_ProxyAddress) (*voltha.Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetChildDeviceWithProxyAddress not implemented")
+}
+func (UnimplementedCoreServiceServer) GetPorts(context.Context, *core_adapter.PortFilter) (*voltha.Ports, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetPorts not implemented")
+}
+func (UnimplementedCoreServiceServer) ChildrenStateUpdate(context.Context, *core_adapter.DeviceStateFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ChildrenStateUpdate not implemented")
+}
+func (UnimplementedCoreServiceServer) UpdateImageDownload(context.Context, *voltha.ImageDownload) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateImageDownload not implemented")
+}
+func (UnimplementedCoreServiceServer) mustEmbedUnimplementedCoreServiceServer() {}
+func (UnimplementedCoreServiceServer) testEmbeddedByValue()                     {}
+
+// UnsafeCoreServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to CoreServiceServer will
+// result in compilation errors.
+type UnsafeCoreServiceServer interface {
+	mustEmbedUnimplementedCoreServiceServer()
+}
+
+func RegisterCoreServiceServer(s grpc.ServiceRegistrar, srv CoreServiceServer) {
+	// If the following call panics, it indicates UnimplementedCoreServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&CoreService_ServiceDesc, srv)
+}
+
+func _CoreService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(CoreServiceServer).GetHealthStatus(&grpc.GenericServerStream[common.Connection, health.HealthStatus]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type CoreService_GetHealthStatusServer = grpc.BidiStreamingServer[common.Connection, health.HealthStatus]
+
+func _CoreService_RegisterAdapter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.AdapterRegistration)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).RegisterAdapter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_RegisterAdapter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).RegisterAdapter(ctx, req.(*core_adapter.AdapterRegistration))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_DeviceUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).DeviceUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_DeviceUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).DeviceUpdate(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_PortCreated_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).PortCreated(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_PortCreated_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).PortCreated(ctx, req.(*voltha.Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_PortsStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PortStateFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).PortsStateUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_PortsStateUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).PortsStateUpdate(ctx, req.(*core_adapter.PortStateFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_DeleteAllPorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).DeleteAllPorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_DeleteAllPorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).DeleteAllPorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PortFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetDevicePort(ctx, req.(*core_adapter.PortFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ListDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ListDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ListDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_DeviceStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.DeviceStateFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).DeviceStateUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_DeviceStateUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).DeviceStateUpdate(ctx, req.(*core_adapter.DeviceStateFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_DevicePMConfigUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.PmConfigs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).DevicePMConfigUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_DevicePMConfigUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).DevicePMConfigUpdate(ctx, req.(*voltha.PmConfigs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ChildDeviceDetected_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.DeviceDiscovery)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ChildDeviceDetected(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ChildDeviceDetected_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ChildDeviceDetected(ctx, req.(*core_adapter.DeviceDiscovery))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ChildDevicesLost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ChildDevicesLost(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ChildDevicesLost_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ChildDevicesLost(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ChildDevicesDetected_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ChildDevicesDetected(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ChildDevicesDetected_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ChildDevicesDetected(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetChildDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.ChildDeviceFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetChildDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetChildDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetChildDevice(ctx, req.(*core_adapter.ChildDeviceFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetChildDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetChildDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetChildDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetChildDevices(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_SendPacketIn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PacketIn)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).SendPacketIn(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_SendPacketIn_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).SendPacketIn(ctx, req.(*core_adapter.PacketIn))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_DeviceReasonUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.DeviceReason)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).DeviceReasonUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_DeviceReasonUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).DeviceReasonUpdate(ctx, req.(*core_adapter.DeviceReason))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_PortStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PortState)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).PortStateUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_PortStateUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).PortStateUpdate(ctx, req.(*core_adapter.PortState))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ReconcileChildDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ReconcileChildDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ReconcileChildDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ReconcileChildDevices(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetChildDeviceWithProxyAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device_ProxyAddress)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetChildDeviceWithProxyAddress(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetChildDeviceWithProxyAddress_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetChildDeviceWithProxyAddress(ctx, req.(*voltha.Device_ProxyAddress))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_GetPorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.PortFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).GetPorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_GetPorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).GetPorts(ctx, req.(*core_adapter.PortFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_ChildrenStateUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(core_adapter.DeviceStateFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).ChildrenStateUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_ChildrenStateUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).ChildrenStateUpdate(ctx, req.(*core_adapter.DeviceStateFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CoreService_UpdateImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CoreServiceServer).UpdateImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: CoreService_UpdateImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CoreServiceServer).UpdateImageDownload(ctx, req.(*voltha.ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// CoreService_ServiceDesc is the grpc.ServiceDesc for CoreService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var CoreService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "core_service.CoreService",
+	HandlerType: (*CoreServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "RegisterAdapter",
+			Handler:    _CoreService_RegisterAdapter_Handler,
+		},
+		{
+			MethodName: "DeviceUpdate",
+			Handler:    _CoreService_DeviceUpdate_Handler,
+		},
+		{
+			MethodName: "PortCreated",
+			Handler:    _CoreService_PortCreated_Handler,
+		},
+		{
+			MethodName: "PortsStateUpdate",
+			Handler:    _CoreService_PortsStateUpdate_Handler,
+		},
+		{
+			MethodName: "DeleteAllPorts",
+			Handler:    _CoreService_DeleteAllPorts_Handler,
+		},
+		{
+			MethodName: "GetDevicePort",
+			Handler:    _CoreService_GetDevicePort_Handler,
+		},
+		{
+			MethodName: "ListDevicePorts",
+			Handler:    _CoreService_ListDevicePorts_Handler,
+		},
+		{
+			MethodName: "DeviceStateUpdate",
+			Handler:    _CoreService_DeviceStateUpdate_Handler,
+		},
+		{
+			MethodName: "DevicePMConfigUpdate",
+			Handler:    _CoreService_DevicePMConfigUpdate_Handler,
+		},
+		{
+			MethodName: "ChildDeviceDetected",
+			Handler:    _CoreService_ChildDeviceDetected_Handler,
+		},
+		{
+			MethodName: "ChildDevicesLost",
+			Handler:    _CoreService_ChildDevicesLost_Handler,
+		},
+		{
+			MethodName: "ChildDevicesDetected",
+			Handler:    _CoreService_ChildDevicesDetected_Handler,
+		},
+		{
+			MethodName: "GetDevice",
+			Handler:    _CoreService_GetDevice_Handler,
+		},
+		{
+			MethodName: "GetChildDevice",
+			Handler:    _CoreService_GetChildDevice_Handler,
+		},
+		{
+			MethodName: "GetChildDevices",
+			Handler:    _CoreService_GetChildDevices_Handler,
+		},
+		{
+			MethodName: "SendPacketIn",
+			Handler:    _CoreService_SendPacketIn_Handler,
+		},
+		{
+			MethodName: "DeviceReasonUpdate",
+			Handler:    _CoreService_DeviceReasonUpdate_Handler,
+		},
+		{
+			MethodName: "PortStateUpdate",
+			Handler:    _CoreService_PortStateUpdate_Handler,
+		},
+		{
+			MethodName: "ReconcileChildDevices",
+			Handler:    _CoreService_ReconcileChildDevices_Handler,
+		},
+		{
+			MethodName: "GetChildDeviceWithProxyAddress",
+			Handler:    _CoreService_GetChildDeviceWithProxyAddress_Handler,
+		},
+		{
+			MethodName: "GetPorts",
+			Handler:    _CoreService_GetPorts_Handler,
+		},
+		{
+			MethodName: "ChildrenStateUpdate",
+			Handler:    _CoreService_ChildrenStateUpdate_Handler,
+		},
+		{
+			MethodName: "UpdateImageDownload",
+			Handler:    _CoreService_UpdateImageDownload_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "GetHealthStatus",
+			Handler:       _CoreService_GetHealthStatus_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/core_services.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
index 2db2ed1..06b5dd3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/ext/config/ext_config.pb.go
@@ -1,108 +1,187 @@
+// Copyright 2020-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/ext_config.proto
 
 package config
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type OnuItuPonAlarm_AlarmID int32
 
 const (
-	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0
+	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0 // RDI errors
 )
 
-var OnuItuPonAlarm_AlarmID_name = map[int32]string{
-	0: "RDI_ERRORS",
-}
+// Enum value maps for OnuItuPonAlarm_AlarmID.
+var (
+	OnuItuPonAlarm_AlarmID_name = map[int32]string{
+		0: "RDI_ERRORS",
+	}
+	OnuItuPonAlarm_AlarmID_value = map[string]int32{
+		"RDI_ERRORS": 0,
+	}
+)
 
-var OnuItuPonAlarm_AlarmID_value = map[string]int32{
-	"RDI_ERRORS": 0,
+func (x OnuItuPonAlarm_AlarmID) Enum() *OnuItuPonAlarm_AlarmID {
+	p := new(OnuItuPonAlarm_AlarmID)
+	*p = x
+	return p
 }
 
 func (x OnuItuPonAlarm_AlarmID) String() string {
-	return proto.EnumName(OnuItuPonAlarm_AlarmID_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuItuPonAlarm_AlarmID) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_ext_config_proto_enumTypes[0].Descriptor()
+}
+
+func (OnuItuPonAlarm_AlarmID) Type() protoreflect.EnumType {
+	return &file_voltha_protos_ext_config_proto_enumTypes[0]
+}
+
+func (x OnuItuPonAlarm_AlarmID) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_AlarmID.Descriptor instead.
 func (OnuItuPonAlarm_AlarmID) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+	OnuItuPonAlarm_RATE_THRESHOLD  OnuItuPonAlarm_AlarmReportingCondition = 0 // The alarm is triggered if the stats delta value between samples crosses the configured threshold boundary
+	OnuItuPonAlarm_RATE_RANGE      OnuItuPonAlarm_AlarmReportingCondition = 1 // The alarm is triggered if the stats delta value between samples deviates from the configured range
+	OnuItuPonAlarm_VALUE_THRESHOLD OnuItuPonAlarm_AlarmReportingCondition = 2 // The alarm is raised if the stats sample value becomes greater than this level.  The alarm is cleared when the host read the stats
 )
 
-var OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
-	0: "RATE_THRESHOLD",
-	1: "RATE_RANGE",
-	2: "VALUE_THRESHOLD",
-}
+// Enum value maps for OnuItuPonAlarm_AlarmReportingCondition.
+var (
+	OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
+		0: "RATE_THRESHOLD",
+		1: "RATE_RANGE",
+		2: "VALUE_THRESHOLD",
+	}
+	OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
+		"RATE_THRESHOLD":  0,
+		"RATE_RANGE":      1,
+		"VALUE_THRESHOLD": 2,
+	}
+)
 
-var OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
-	"RATE_THRESHOLD":  0,
-	"RATE_RANGE":      1,
-	"VALUE_THRESHOLD": 2,
+func (x OnuItuPonAlarm_AlarmReportingCondition) Enum() *OnuItuPonAlarm_AlarmReportingCondition {
+	p := new(OnuItuPonAlarm_AlarmReportingCondition)
+	*p = x
+	return p
 }
 
 func (x OnuItuPonAlarm_AlarmReportingCondition) String() string {
-	return proto.EnumName(OnuItuPonAlarm_AlarmReportingCondition_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuItuPonAlarm_AlarmReportingCondition) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_ext_config_proto_enumTypes[1].Descriptor()
+}
+
+func (OnuItuPonAlarm_AlarmReportingCondition) Type() protoreflect.EnumType {
+	return &file_voltha_protos_ext_config_proto_enumTypes[1]
+}
+
+func (x OnuItuPonAlarm_AlarmReportingCondition) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_AlarmReportingCondition.Descriptor instead.
 func (OnuItuPonAlarm_AlarmReportingCondition) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []int{1, 1}
 }
 
 type AlarmConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// 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:"-"`
+	Config        isAlarmConfig_Config `protobuf_oneof:"config"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmConfig) Reset()         { *m = AlarmConfig{} }
-func (m *AlarmConfig) String() string { return proto.CompactTextString(m) }
-func (*AlarmConfig) ProtoMessage()    {}
+func (x *AlarmConfig) Reset() {
+	*x = AlarmConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmConfig) ProtoMessage() {}
+
+func (x *AlarmConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmConfig.ProtoReflect.Descriptor instead.
 func (*AlarmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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)
+func (x *AlarmConfig) GetConfig() isAlarmConfig_Config {
+	if x != nil {
+		return x.Config
+	}
+	return nil
 }
 
-var xxx_messageInfo_AlarmConfig proto.InternalMessageInfo
+func (x *AlarmConfig) GetOnuItuPonAlarmConfig() *OnuItuPonAlarm {
+	if x != nil {
+		if x, ok := x.Config.(*AlarmConfig_OnuItuPonAlarmConfig); ok {
+			return x.OnuItuPonAlarmConfig
+		}
+	}
+	return nil
+}
 
 type isAlarmConfig_Config interface {
 	isAlarmConfig_Config()
@@ -114,95 +193,114 @@
 
 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 {
+	state                   protoimpl.MessageState                 `protogen:"open.v1"`
 	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:"-"`
+	Config        isOnuItuPonAlarm_Config `protobuf_oneof:"config"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm) Reset()         { *m = OnuItuPonAlarm{} }
-func (m *OnuItuPonAlarm) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm) ProtoMessage()    {}
+func (x *OnuItuPonAlarm) Reset() {
+	*x = OnuItuPonAlarm{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+func (x *OnuItuPonAlarm) GetPonNi() uint32 {
+	if x != nil {
+		return x.PonNi
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *OnuItuPonAlarm) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
-	if m != nil {
-		return m.AlarmId
+func (x *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
+	if x != nil {
+		return x.AlarmId
 	}
 	return OnuItuPonAlarm_RDI_ERRORS
 }
 
-func (m *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
-	if m != nil {
-		return m.AlarmReportingCondition
+func (x *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
+	if x != nil {
+		return x.AlarmReportingCondition
 	}
 	return OnuItuPonAlarm_RATE_THRESHOLD
 }
 
+func (x *OnuItuPonAlarm) GetConfig() isOnuItuPonAlarm_Config {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetRateThresholdConfig() *OnuItuPonAlarm_RateThresholdConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_RateThresholdConfig_); ok {
+			return x.RateThresholdConfig
+		}
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetRateRangeConfig() *OnuItuPonAlarm_RateRangeConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_RateRangeConfig_); ok {
+			return x.RateRangeConfig
+		}
+	}
+	return nil
+}
+
+func (x *OnuItuPonAlarm) GetValueThresholdConfig() *OnuItuPonAlarm_ValueThresholdConfig {
+	if x != nil {
+		if x, ok := x.Config.(*OnuItuPonAlarm_ValueThresholdConfig_); ok {
+			return x.ValueThresholdConfig
+		}
+	}
+	return nil
+}
+
 type isOnuItuPonAlarm_Config interface {
 	isOnuItuPonAlarm_Config()
 }
@@ -225,299 +323,341 @@
 
 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:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_SoakTime) Reset()         { *m = OnuItuPonAlarm_SoakTime{} }
-func (m *OnuItuPonAlarm_SoakTime) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_SoakTime) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_SoakTime) Reset() {
+	*x = OnuItuPonAlarm_SoakTime{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_SoakTime) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_SoakTime) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_SoakTime) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_SoakTime.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_SoakTime) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+func (x *OnuItuPonAlarm_SoakTime) GetActiveSoakTime() uint32 {
+	if x != nil {
+		return x.ActiveSoakTime
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
-	if m != nil {
-		return m.ClearSoakTime
+func (x *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
+	if x != nil {
+		return x.ClearSoakTime
 	}
 	return 0
 }
 
 type OnuItuPonAlarm_RateThresholdConfig struct {
+	state                protoimpl.MessageState   `protogen:"open.v1"`
 	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:"-"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) Reset()         { *m = OnuItuPonAlarm_RateThresholdConfig{} }
-func (m *OnuItuPonAlarm_RateThresholdConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_RateThresholdConfig) Reset() {
+	*x = OnuItuPonAlarm_RateThresholdConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_RateThresholdConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_RateThresholdConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_RateThresholdConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_RateThresholdConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdRising() uint64 {
+	if x != nil {
+		return x.RateThresholdRising
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
-	if m != nil {
-		return m.RateThresholdFalling
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
+	if x != nil {
+		return x.RateThresholdFalling
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.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:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	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"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) Reset()         { *m = OnuItuPonAlarm_RateRangeConfig{} }
-func (m *OnuItuPonAlarm_RateRangeConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_RateRangeConfig) Reset() {
+	*x = OnuItuPonAlarm_RateRangeConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_RateRangeConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_RateRangeConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_RateRangeConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_RateRangeConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 2}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+func (x *OnuItuPonAlarm_RateRangeConfig) GetRateRangeLower() uint64 {
+	if x != nil {
+		return x.RateRangeLower
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
-	if m != nil {
-		return m.RateRangeUpper
+func (x *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
+	if x != nil {
+		return x.RateRangeUpper
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.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:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	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"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuItuPonAlarm_ValueThresholdConfig) Reset()         { *m = OnuItuPonAlarm_ValueThresholdConfig{} }
-func (m *OnuItuPonAlarm_ValueThresholdConfig) String() string { return proto.CompactTextString(m) }
-func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage()    {}
+func (x *OnuItuPonAlarm_ValueThresholdConfig) Reset() {
+	*x = OnuItuPonAlarm_ValueThresholdConfig{}
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonAlarm_ValueThresholdConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage() {}
+
+func (x *OnuItuPonAlarm_ValueThresholdConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_ext_config_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonAlarm_ValueThresholdConfig.ProtoReflect.Descriptor instead.
 func (*OnuItuPonAlarm_ValueThresholdConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 3}
+	return file_voltha_protos_ext_config_proto_rawDescGZIP(), []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
+func (x *OnuItuPonAlarm_ValueThresholdConfig) GetThresholdLimit() uint64 {
+	if x != nil {
+		return x.ThresholdLimit
 	}
 	return 0
 }
 
-func (m *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
-	if m != nil {
-		return m.SoakTime
+func (x *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if x != nil {
+		return x.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")
+var File_voltha_protos_ext_config_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_ext_config_proto_rawDesc = "" +
+	"\n" +
+	"\x1evoltha_protos/ext_config.proto\x12\x06config\"i\n" +
+	"\vAlarmConfig\x12P\n" +
+	"\x18onu_itu_pon_alarm_config\x18\x01 \x01(\v2\x16.config.OnuItuPonAlarmH\x00R\x14onuItuPonAlarmConfigB\b\n" +
+	"\x06config\"\xbe\t\n" +
+	"\x0eOnuItuPonAlarm\x12\x15\n" +
+	"\x06pon_ni\x18\x01 \x01(\aR\x05ponNi\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x129\n" +
+	"\balarm_id\x18\x03 \x01(\x0e2\x1e.config.OnuItuPonAlarm.AlarmIDR\aalarmId\x12j\n" +
+	"\x19alarm_reporting_condition\x18\x04 \x01(\x0e2..config.OnuItuPonAlarm.AlarmReportingConditionR\x17alarmReportingCondition\x12`\n" +
+	"\x15rate_threshold_config\x18\x05 \x01(\v2*.config.OnuItuPonAlarm.RateThresholdConfigH\x00R\x13rateThresholdConfig\x12T\n" +
+	"\x11rate_range_config\x18\x06 \x01(\v2&.config.OnuItuPonAlarm.RateRangeConfigH\x00R\x0frateRangeConfig\x12c\n" +
+	"\x16value_threshold_config\x18\a \x01(\v2+.config.OnuItuPonAlarm.ValueThresholdConfigH\x00R\x14valueThresholdConfig\x1a\\\n" +
+	"\bSoakTime\x12(\n" +
+	"\x10active_soak_time\x18\x01 \x01(\aR\x0eactiveSoakTime\x12&\n" +
+	"\x0fclear_soak_time\x18\x02 \x01(\aR\rclearSoakTime\x1a\xbd\x01\n" +
+	"\x13RateThresholdConfig\x122\n" +
+	"\x15rate_threshold_rising\x18\x01 \x01(\x06R\x13rateThresholdRising\x124\n" +
+	"\x16rate_threshold_falling\x18\x02 \x01(\x06R\x14rateThresholdFalling\x12<\n" +
+	"\tsoak_time\x18\x03 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\x1a\xa3\x01\n" +
+	"\x0fRateRangeConfig\x12(\n" +
+	"\x10rate_range_lower\x18\x01 \x01(\x06R\x0erateRangeLower\x12(\n" +
+	"\x10rate_range_upper\x18\x02 \x01(\x06R\x0erateRangeUpper\x12<\n" +
+	"\tsoak_time\x18\x03 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\x1a}\n" +
+	"\x14ValueThresholdConfig\x12'\n" +
+	"\x0fthreshold_limit\x18\x01 \x01(\x06R\x0ethresholdLimit\x12<\n" +
+	"\tsoak_time\x18\x02 \x01(\v2\x1f.config.OnuItuPonAlarm.SoakTimeR\bsoakTime\"\x19\n" +
+	"\aAlarmID\x12\x0e\n" +
+	"\n" +
+	"RDI_ERRORS\x10\x00\"R\n" +
+	"\x17AlarmReportingCondition\x12\x12\n" +
+	"\x0eRATE_THRESHOLD\x10\x00\x12\x0e\n" +
+	"\n" +
+	"RATE_RANGE\x10\x01\x12\x13\n" +
+	"\x0fVALUE_THRESHOLD\x10\x02B\b\n" +
+	"\x06configBI\n" +
+	"\x13org.opencord.volthaZ2github.com/opencord/voltha-protos/v5/go/ext/configb\x06proto3"
+
+var (
+	file_voltha_protos_ext_config_proto_rawDescOnce sync.Once
+	file_voltha_protos_ext_config_proto_rawDescData []byte
+)
+
+func file_voltha_protos_ext_config_proto_rawDescGZIP() []byte {
+	file_voltha_protos_ext_config_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_ext_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_ext_config_proto_rawDesc), len(file_voltha_protos_ext_config_proto_rawDesc)))
+	})
+	return file_voltha_protos_ext_config_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/ext_config.proto", fileDescriptor_fb43b44b7fa3aba9) }
+var file_voltha_protos_ext_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_voltha_protos_ext_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_voltha_protos_ext_config_proto_goTypes = []any{
+	(OnuItuPonAlarm_AlarmID)(0),                 // 0: config.OnuItuPonAlarm.AlarmID
+	(OnuItuPonAlarm_AlarmReportingCondition)(0), // 1: config.OnuItuPonAlarm.AlarmReportingCondition
+	(*AlarmConfig)(nil),                         // 2: config.AlarmConfig
+	(*OnuItuPonAlarm)(nil),                      // 3: config.OnuItuPonAlarm
+	(*OnuItuPonAlarm_SoakTime)(nil),             // 4: config.OnuItuPonAlarm.SoakTime
+	(*OnuItuPonAlarm_RateThresholdConfig)(nil),  // 5: config.OnuItuPonAlarm.RateThresholdConfig
+	(*OnuItuPonAlarm_RateRangeConfig)(nil),      // 6: config.OnuItuPonAlarm.RateRangeConfig
+	(*OnuItuPonAlarm_ValueThresholdConfig)(nil), // 7: config.OnuItuPonAlarm.ValueThresholdConfig
+}
+var file_voltha_protos_ext_config_proto_depIdxs = []int32{
+	3, // 0: config.AlarmConfig.onu_itu_pon_alarm_config:type_name -> config.OnuItuPonAlarm
+	0, // 1: config.OnuItuPonAlarm.alarm_id:type_name -> config.OnuItuPonAlarm.AlarmID
+	1, // 2: config.OnuItuPonAlarm.alarm_reporting_condition:type_name -> config.OnuItuPonAlarm.AlarmReportingCondition
+	5, // 3: config.OnuItuPonAlarm.rate_threshold_config:type_name -> config.OnuItuPonAlarm.RateThresholdConfig
+	6, // 4: config.OnuItuPonAlarm.rate_range_config:type_name -> config.OnuItuPonAlarm.RateRangeConfig
+	7, // 5: config.OnuItuPonAlarm.value_threshold_config:type_name -> config.OnuItuPonAlarm.ValueThresholdConfig
+	4, // 6: config.OnuItuPonAlarm.RateThresholdConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	4, // 7: config.OnuItuPonAlarm.RateRangeConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	4, // 8: config.OnuItuPonAlarm.ValueThresholdConfig.soak_time:type_name -> config.OnuItuPonAlarm.SoakTime
+	9, // [9:9] is the sub-list for method output_type
+	9, // [9:9] is the sub-list for method input_type
+	9, // [9:9] is the sub-list for extension type_name
+	9, // [9:9] is the sub-list for extension extendee
+	0, // [0:9] is the sub-list for field type_name
+}
 
-var fileDescriptor_fb43b44b7fa3aba9 = []byte{
-	// 610 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xd1, 0x6e, 0x12, 0x41,
-	0x14, 0x05, 0x6a, 0x81, 0xde, 0x46, 0xc0, 0x81, 0xb6, 0xb4, 0x0f, 0xb5, 0xe9, 0x43, 0x6d, 0x34,
-	0x2e, 0x09, 0xea, 0x83, 0x89, 0x2f, 0xb4, 0x45, 0x21, 0x21, 0x6d, 0x33, 0xa5, 0x7d, 0x30, 0x26,
-	0xeb, 0x94, 0x9d, 0x2e, 0x63, 0x97, 0x99, 0xcd, 0x30, 0x8b, 0xbe, 0xf8, 0x35, 0x7e, 0x87, 0x7e,
-	0x9b, 0x99, 0x99, 0x5d, 0x28, 0xb0, 0x34, 0x31, 0xbe, 0x90, 0xec, 0xb9, 0xf7, 0x9c, 0x7b, 0x38,
-	0x77, 0x66, 0x60, 0x7f, 0x22, 0x02, 0x35, 0x24, 0x6e, 0x28, 0x85, 0x12, 0xe3, 0x06, 0xfd, 0xa1,
-	0xdc, 0x81, 0xe0, 0x77, 0xcc, 0x77, 0x0c, 0x82, 0xf2, 0xf6, 0xeb, 0x90, 0xc1, 0x66, 0x2b, 0x20,
-	0x72, 0x74, 0x6a, 0x3e, 0xd1, 0x25, 0xd4, 0x05, 0x8f, 0x5c, 0xa6, 0x22, 0x37, 0x14, 0xdc, 0x25,
-	0xba, 0x14, 0x13, 0xeb, 0xd9, 0x83, 0xec, 0xf1, 0x66, 0x73, 0xdb, 0x89, 0x75, 0x2e, 0x78, 0xd4,
-	0x55, 0xd1, 0xa5, 0xe0, 0x86, 0xdf, 0xc9, 0xe0, 0x9a, 0x98, 0x43, 0xac, 0xe2, 0x49, 0x11, 0x92,
-	0x51, 0x7f, 0x36, 0xa0, 0x34, 0x4f, 0x42, 0x5b, 0x90, 0xd7, 0x63, 0x38, 0x33, 0xe2, 0x05, 0xbc,
-	0x1e, 0x0a, 0x7e, 0xce, 0x34, 0x6c, 0x5c, 0x78, 0xf5, 0x9c, 0x85, 0xb5, 0xb2, 0x87, 0xde, 0x43,
-	0xd1, 0x1a, 0x62, 0x5e, 0x7d, 0xed, 0x20, 0x7b, 0x5c, 0x6a, 0xee, 0xa7, 0x9b, 0x71, 0xcc, 0x6f,
-	0xf7, 0x0c, 0x17, 0x4c, 0x7f, 0xd7, 0x43, 0xdf, 0x60, 0xd7, 0x52, 0x25, 0x0d, 0x85, 0x54, 0x8c,
-	0xfb, 0xfa, 0x5f, 0x79, 0x4c, 0x31, 0xc1, 0xeb, 0x4f, 0x8c, 0x96, 0xf3, 0x98, 0x16, 0x4e, 0x68,
-	0xa7, 0x09, 0x0b, 0xef, 0x90, 0xf4, 0x02, 0xfa, 0x0a, 0x5b, 0x92, 0x28, 0xea, 0xaa, 0xa1, 0xa4,
-	0xe3, 0xa1, 0x08, 0xbc, 0x24, 0xc0, 0x75, 0x13, 0xe0, 0xcb, 0x15, 0x73, 0x30, 0x51, 0xb4, 0x9f,
-	0x50, 0x6c, 0x78, 0x9d, 0x0c, 0xae, 0xca, 0x65, 0x18, 0xf5, 0xe1, 0x99, 0x99, 0x20, 0x09, 0xf7,
-	0x69, 0xa2, 0x9e, 0x37, 0xea, 0x47, 0x8f, 0xa8, 0x63, 0xdd, 0x3e, 0x55, 0x2e, 0xcb, 0x79, 0x08,
-	0x0d, 0x60, 0x7b, 0x42, 0x82, 0x28, 0xc5, 0x78, 0xc1, 0x48, 0xbf, 0x5a, 0x21, 0x7d, 0xa3, 0x49,
-	0xcb, 0xce, 0x6b, 0x93, 0x14, 0x7c, 0xef, 0x0b, 0x14, 0xaf, 0x04, 0xb9, 0xef, 0xb3, 0x11, 0x45,
-	0xc7, 0x50, 0x21, 0x03, 0xc5, 0x26, 0xd4, 0x1d, 0x0b, 0x72, 0xef, 0x2a, 0x36, 0xa2, 0xf1, 0x39,
-	0x28, 0x59, 0x7c, 0xda, 0x79, 0x04, 0xe5, 0x41, 0x40, 0x89, 0x7c, 0xd0, 0x68, 0x4f, 0xc6, 0x53,
-	0x03, 0x27, 0x7d, 0x7b, 0xbf, 0xb3, 0x50, 0x4d, 0xc9, 0x11, 0x35, 0x97, 0x56, 0x22, 0xd9, 0x98,
-	0x71, 0x7b, 0xa6, 0xf3, 0x0b, 0x21, 0x63, 0x53, 0x42, 0x6f, 0x61, 0x7b, 0x81, 0x73, 0x47, 0x82,
-	0x40, 0x93, 0x72, 0x86, 0x54, 0x9b, 0x23, 0x7d, 0xb4, 0x35, 0xf4, 0x01, 0x36, 0x66, 0x1e, 0xd7,
-	0x4c, 0x6e, 0xcf, 0x57, 0xe4, 0x96, 0xb8, 0xc6, 0xc5, 0x71, 0xe2, 0xff, 0x57, 0x16, 0xca, 0x0b,
-	0x9b, 0xd2, 0x29, 0x3d, 0x58, 0x76, 0x20, 0xbe, 0x53, 0x19, 0xdb, 0x2e, 0x4d, 0x37, 0xd8, 0xd3,
-	0xe8, 0x42, 0x67, 0x14, 0x86, 0x54, 0xc6, 0x5e, 0x67, 0x9d, 0xd7, 0x1a, 0xfd, 0x4f, 0x97, 0x3f,
-	0xa1, 0x96, 0xb6, 0x73, 0xf4, 0x02, 0xca, 0xb3, 0xb0, 0x02, 0x36, 0x62, 0x2a, 0x31, 0x3a, 0x85,
-	0x7b, 0x1a, 0x9d, 0x1f, 0x9f, 0xfb, 0xc7, 0xf1, 0x87, 0xbb, 0x50, 0x88, 0xef, 0x37, 0x2a, 0x01,
-	0xe0, 0xb3, 0xae, 0xdb, 0xc6, 0xf8, 0x02, 0x5f, 0x55, 0x32, 0x87, 0x18, 0x76, 0x56, 0x5c, 0x57,
-	0x84, 0xa0, 0x84, 0x5b, 0xfd, 0xb6, 0xdb, 0xef, 0xe0, 0xf6, 0x55, 0xe7, 0xa2, 0x77, 0x56, 0xc9,
-	0x18, 0xba, 0xc6, 0x70, 0xeb, 0xfc, 0x53, 0xbb, 0x92, 0x45, 0x55, 0x28, 0xdf, 0xb4, 0x7a, 0xd7,
-	0x0f, 0x9b, 0x72, 0xb3, 0x07, 0xec, 0xa4, 0x0b, 0x55, 0x21, 0x7d, 0x47, 0x84, 0x94, 0x0f, 0x84,
-	0xf4, 0x1c, 0xfb, 0xc4, 0x7e, 0x6e, 0xfa, 0x4c, 0x0d, 0xa3, 0x5b, 0x67, 0x20, 0x46, 0x8d, 0xa4,
-	0xd6, 0xb0, 0xb5, 0xd7, 0xf1, 0xf3, 0x3b, 0x79, 0xd7, 0xf0, 0x85, 0x7e, 0x84, 0x1b, 0x56, 0xea,
-	0x36, 0x6f, 0x0a, 0x6f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0x36, 0x9d, 0x64, 0x93, 0xa7, 0x05,
-	0x00, 0x00,
+func init() { file_voltha_protos_ext_config_proto_init() }
+func file_voltha_protos_ext_config_proto_init() {
+	if File_voltha_protos_ext_config_proto != nil {
+		return
+	}
+	file_voltha_protos_ext_config_proto_msgTypes[0].OneofWrappers = []any{
+		(*AlarmConfig_OnuItuPonAlarmConfig)(nil),
+	}
+	file_voltha_protos_ext_config_proto_msgTypes[1].OneofWrappers = []any{
+		(*OnuItuPonAlarm_RateThresholdConfig_)(nil),
+		(*OnuItuPonAlarm_RateRangeConfig_)(nil),
+		(*OnuItuPonAlarm_ValueThresholdConfig_)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_ext_config_proto_rawDesc), len(file_voltha_protos_ext_config_proto_rawDesc)),
+			NumEnums:      2,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_ext_config_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_ext_config_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_ext_config_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_ext_config_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_ext_config_proto = out.File
+	file_voltha_protos_ext_config_proto_goTypes = nil
+	file_voltha_protos_ext_config_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
index a43c4bd..883a391 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
@@ -1,31 +1,42 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/extensions.proto
 
 package extension
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	config "github.com/opencord/voltha-protos/v5/go/ext/config"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type ValueType_Type int32
 
@@ -34,22 +45,43 @@
 	ValueType_DISTANCE ValueType_Type = 1
 )
 
-var ValueType_Type_name = map[int32]string{
-	0: "EMPTY",
-	1: "DISTANCE",
-}
+// Enum value maps for ValueType_Type.
+var (
+	ValueType_Type_name = map[int32]string{
+		0: "EMPTY",
+		1: "DISTANCE",
+	}
+	ValueType_Type_value = map[string]int32{
+		"EMPTY":    0,
+		"DISTANCE": 1,
+	}
+)
 
-var ValueType_Type_value = map[string]int32{
-	"EMPTY":    0,
-	"DISTANCE": 1,
+func (x ValueType_Type) Enum() *ValueType_Type {
+	p := new(ValueType_Type)
+	*p = x
+	return p
 }
 
 func (x ValueType_Type) String() string {
-	return proto.EnumName(ValueType_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ValueType_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[0].Descriptor()
+}
+
+func (ValueType_Type) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[0]
+}
+
+func (x ValueType_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ValueType_Type.Descriptor instead.
 func (ValueType_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{1, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type GetOnuUniInfoResponse_ConfigurationInd int32
@@ -65,34 +97,55 @@
 	GetOnuUniInfoResponse_GIGABIT_ETHERNET_HDX GetOnuUniInfoResponse_ConfigurationInd = 7
 )
 
-var GetOnuUniInfoResponse_ConfigurationInd_name = map[int32]string{
-	0: "UNKOWN",
-	1: "TEN_BASE_T_FDX",
-	2: "HUNDRED_BASE_T_FDX",
-	3: "GIGABIT_ETHERNET_FDX",
-	4: "TEN_G_ETHERNET_FDX",
-	5: "TEN_BASE_T_HDX",
-	6: "HUNDRED_BASE_T_HDX",
-	7: "GIGABIT_ETHERNET_HDX",
-}
+// Enum value maps for GetOnuUniInfoResponse_ConfigurationInd.
+var (
+	GetOnuUniInfoResponse_ConfigurationInd_name = map[int32]string{
+		0: "UNKOWN",
+		1: "TEN_BASE_T_FDX",
+		2: "HUNDRED_BASE_T_FDX",
+		3: "GIGABIT_ETHERNET_FDX",
+		4: "TEN_G_ETHERNET_FDX",
+		5: "TEN_BASE_T_HDX",
+		6: "HUNDRED_BASE_T_HDX",
+		7: "GIGABIT_ETHERNET_HDX",
+	}
+	GetOnuUniInfoResponse_ConfigurationInd_value = map[string]int32{
+		"UNKOWN":               0,
+		"TEN_BASE_T_FDX":       1,
+		"HUNDRED_BASE_T_FDX":   2,
+		"GIGABIT_ETHERNET_FDX": 3,
+		"TEN_G_ETHERNET_FDX":   4,
+		"TEN_BASE_T_HDX":       5,
+		"HUNDRED_BASE_T_HDX":   6,
+		"GIGABIT_ETHERNET_HDX": 7,
+	}
+)
 
-var GetOnuUniInfoResponse_ConfigurationInd_value = map[string]int32{
-	"UNKOWN":               0,
-	"TEN_BASE_T_FDX":       1,
-	"HUNDRED_BASE_T_FDX":   2,
-	"GIGABIT_ETHERNET_FDX": 3,
-	"TEN_G_ETHERNET_FDX":   4,
-	"TEN_BASE_T_HDX":       5,
-	"HUNDRED_BASE_T_HDX":   6,
-	"GIGABIT_ETHERNET_HDX": 7,
+func (x GetOnuUniInfoResponse_ConfigurationInd) Enum() *GetOnuUniInfoResponse_ConfigurationInd {
+	p := new(GetOnuUniInfoResponse_ConfigurationInd)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_ConfigurationInd) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_ConfigurationInd_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_ConfigurationInd) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[1].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_ConfigurationInd) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[1]
+}
+
+func (x GetOnuUniInfoResponse_ConfigurationInd) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_ConfigurationInd.Descriptor instead.
 func (GetOnuUniInfoResponse_ConfigurationInd) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 0}
 }
 
 type GetOnuUniInfoResponse_AdministrativeState int32
@@ -103,24 +156,45 @@
 	GetOnuUniInfoResponse_UNLOCKED           GetOnuUniInfoResponse_AdministrativeState = 2
 )
 
-var GetOnuUniInfoResponse_AdministrativeState_name = map[int32]string{
-	0: "ADMSTATE_UNDEFINED",
-	1: "LOCKED",
-	2: "UNLOCKED",
-}
+// Enum value maps for GetOnuUniInfoResponse_AdministrativeState.
+var (
+	GetOnuUniInfoResponse_AdministrativeState_name = map[int32]string{
+		0: "ADMSTATE_UNDEFINED",
+		1: "LOCKED",
+		2: "UNLOCKED",
+	}
+	GetOnuUniInfoResponse_AdministrativeState_value = map[string]int32{
+		"ADMSTATE_UNDEFINED": 0,
+		"LOCKED":             1,
+		"UNLOCKED":           2,
+	}
+)
 
-var GetOnuUniInfoResponse_AdministrativeState_value = map[string]int32{
-	"ADMSTATE_UNDEFINED": 0,
-	"LOCKED":             1,
-	"UNLOCKED":           2,
+func (x GetOnuUniInfoResponse_AdministrativeState) Enum() *GetOnuUniInfoResponse_AdministrativeState {
+	p := new(GetOnuUniInfoResponse_AdministrativeState)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_AdministrativeState) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_AdministrativeState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_AdministrativeState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[2].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_AdministrativeState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[2]
+}
+
+func (x GetOnuUniInfoResponse_AdministrativeState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_AdministrativeState.Descriptor instead.
 func (GetOnuUniInfoResponse_AdministrativeState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 1}
 }
 
 type GetOnuUniInfoResponse_OperationalState int32
@@ -131,24 +205,45 @@
 	GetOnuUniInfoResponse_DISABLED            GetOnuUniInfoResponse_OperationalState = 2
 )
 
-var GetOnuUniInfoResponse_OperationalState_name = map[int32]string{
-	0: "OPERSTATE_UNDEFINED",
-	1: "ENABLED",
-	2: "DISABLED",
-}
+// Enum value maps for GetOnuUniInfoResponse_OperationalState.
+var (
+	GetOnuUniInfoResponse_OperationalState_name = map[int32]string{
+		0: "OPERSTATE_UNDEFINED",
+		1: "ENABLED",
+		2: "DISABLED",
+	}
+	GetOnuUniInfoResponse_OperationalState_value = map[string]int32{
+		"OPERSTATE_UNDEFINED": 0,
+		"ENABLED":             1,
+		"DISABLED":            2,
+	}
+)
 
-var GetOnuUniInfoResponse_OperationalState_value = map[string]int32{
-	"OPERSTATE_UNDEFINED": 0,
-	"ENABLED":             1,
-	"DISABLED":            2,
+func (x GetOnuUniInfoResponse_OperationalState) Enum() *GetOnuUniInfoResponse_OperationalState {
+	p := new(GetOnuUniInfoResponse_OperationalState)
+	*p = x
+	return p
 }
 
 func (x GetOnuUniInfoResponse_OperationalState) String() string {
-	return proto.EnumName(GetOnuUniInfoResponse_OperationalState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuUniInfoResponse_OperationalState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[3].Descriptor()
+}
+
+func (GetOnuUniInfoResponse_OperationalState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[3]
+}
+
+func (x GetOnuUniInfoResponse_OperationalState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse_OperationalState.Descriptor instead.
 func (GetOnuUniInfoResponse_OperationalState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7, 2}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7, 2}
 }
 
 type GetOltPortCounters_PortType int32
@@ -159,24 +254,45 @@
 	GetOltPortCounters_Port_PON_OLT      GetOltPortCounters_PortType = 2
 )
 
-var GetOltPortCounters_PortType_name = map[int32]string{
-	0: "Port_UNKNOWN",
-	1: "Port_ETHERNET_NNI",
-	2: "Port_PON_OLT",
-}
+// Enum value maps for GetOltPortCounters_PortType.
+var (
+	GetOltPortCounters_PortType_name = map[int32]string{
+		0: "Port_UNKNOWN",
+		1: "Port_ETHERNET_NNI",
+		2: "Port_PON_OLT",
+	}
+	GetOltPortCounters_PortType_value = map[string]int32{
+		"Port_UNKNOWN":      0,
+		"Port_ETHERNET_NNI": 1,
+		"Port_PON_OLT":      2,
+	}
+)
 
-var GetOltPortCounters_PortType_value = map[string]int32{
-	"Port_UNKNOWN":      0,
-	"Port_ETHERNET_NNI": 1,
-	"Port_PON_OLT":      2,
+func (x GetOltPortCounters_PortType) Enum() *GetOltPortCounters_PortType {
+	p := new(GetOltPortCounters_PortType)
+	*p = x
+	return p
 }
 
 func (x GetOltPortCounters_PortType) String() string {
-	return proto.EnumName(GetOltPortCounters_PortType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOltPortCounters_PortType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[4].Descriptor()
+}
+
+func (GetOltPortCounters_PortType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[4]
+}
+
+func (x GetOltPortCounters_PortType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOltPortCounters_PortType.Descriptor instead.
 func (GetOltPortCounters_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{8, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{8, 0}
 }
 
 type GetOnuEthernetBridgePortHistory_Direction int32
@@ -187,24 +303,45 @@
 	GetOnuEthernetBridgePortHistory_DOWNSTREAM GetOnuEthernetBridgePortHistory_Direction = 2
 )
 
-var GetOnuEthernetBridgePortHistory_Direction_name = map[int32]string{
-	0: "UNDEFINED",
-	1: "UPSTREAM",
-	2: "DOWNSTREAM",
-}
+// Enum value maps for GetOnuEthernetBridgePortHistory_Direction.
+var (
+	GetOnuEthernetBridgePortHistory_Direction_name = map[int32]string{
+		0: "UNDEFINED",
+		1: "UPSTREAM",
+		2: "DOWNSTREAM",
+	}
+	GetOnuEthernetBridgePortHistory_Direction_value = map[string]int32{
+		"UNDEFINED":  0,
+		"UPSTREAM":   1,
+		"DOWNSTREAM": 2,
+	}
+)
 
-var GetOnuEthernetBridgePortHistory_Direction_value = map[string]int32{
-	"UNDEFINED":  0,
-	"UPSTREAM":   1,
-	"DOWNSTREAM": 2,
+func (x GetOnuEthernetBridgePortHistory_Direction) Enum() *GetOnuEthernetBridgePortHistory_Direction {
+	p := new(GetOnuEthernetBridgePortHistory_Direction)
+	*p = x
+	return p
 }
 
 func (x GetOnuEthernetBridgePortHistory_Direction) String() string {
-	return proto.EnumName(GetOnuEthernetBridgePortHistory_Direction_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOnuEthernetBridgePortHistory_Direction) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[5].Descriptor()
+}
+
+func (GetOnuEthernetBridgePortHistory_Direction) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[5]
+}
+
+func (x GetOnuEthernetBridgePortHistory_Direction) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistory_Direction.Descriptor instead.
 func (GetOnuEthernetBridgePortHistory_Direction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{12, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type GetOmciEthernetFrameExtendedPmResponse_Format int32
@@ -214,22 +351,43 @@
 	GetOmciEthernetFrameExtendedPmResponse_SIXTY_FOUR_BIT GetOmciEthernetFrameExtendedPmResponse_Format = 1
 )
 
-var GetOmciEthernetFrameExtendedPmResponse_Format_name = map[int32]string{
-	0: "THIRTY_TWO_BIT",
-	1: "SIXTY_FOUR_BIT",
-}
+// Enum value maps for GetOmciEthernetFrameExtendedPmResponse_Format.
+var (
+	GetOmciEthernetFrameExtendedPmResponse_Format_name = map[int32]string{
+		0: "THIRTY_TWO_BIT",
+		1: "SIXTY_FOUR_BIT",
+	}
+	GetOmciEthernetFrameExtendedPmResponse_Format_value = map[string]int32{
+		"THIRTY_TWO_BIT": 0,
+		"SIXTY_FOUR_BIT": 1,
+	}
+)
 
-var GetOmciEthernetFrameExtendedPmResponse_Format_value = map[string]int32{
-	"THIRTY_TWO_BIT": 0,
-	"SIXTY_FOUR_BIT": 1,
+func (x GetOmciEthernetFrameExtendedPmResponse_Format) Enum() *GetOmciEthernetFrameExtendedPmResponse_Format {
+	p := new(GetOmciEthernetFrameExtendedPmResponse_Format)
+	*p = x
+	return p
 }
 
 func (x GetOmciEthernetFrameExtendedPmResponse_Format) String() string {
-	return proto.EnumName(GetOmciEthernetFrameExtendedPmResponse_Format_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOmciEthernetFrameExtendedPmResponse_Format) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[6].Descriptor()
+}
+
+func (GetOmciEthernetFrameExtendedPmResponse_Format) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[6]
+}
+
+func (x GetOmciEthernetFrameExtendedPmResponse_Format) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmResponse_Format.Descriptor instead.
 func (GetOmciEthernetFrameExtendedPmResponse_Format) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{36, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{36, 0}
 }
 
 type GetOffloadedAppsStatisticsRequest_OffloadedApp int32
@@ -241,26 +399,47 @@
 	GetOffloadedAppsStatisticsRequest_DHCPv6RA  GetOffloadedAppsStatisticsRequest_OffloadedApp = 3
 )
 
-var GetOffloadedAppsStatisticsRequest_OffloadedApp_name = map[int32]string{
-	0: "UNDEFINED",
-	1: "PPPoeIA",
-	2: "DHCPv4RA",
-	3: "DHCPv6RA",
-}
+// Enum value maps for GetOffloadedAppsStatisticsRequest_OffloadedApp.
+var (
+	GetOffloadedAppsStatisticsRequest_OffloadedApp_name = map[int32]string{
+		0: "UNDEFINED",
+		1: "PPPoeIA",
+		2: "DHCPv4RA",
+		3: "DHCPv6RA",
+	}
+	GetOffloadedAppsStatisticsRequest_OffloadedApp_value = map[string]int32{
+		"UNDEFINED": 0,
+		"PPPoeIA":   1,
+		"DHCPv4RA":  2,
+		"DHCPv6RA":  3,
+	}
+)
 
-var GetOffloadedAppsStatisticsRequest_OffloadedApp_value = map[string]int32{
-	"UNDEFINED": 0,
-	"PPPoeIA":   1,
-	"DHCPv4RA":  2,
-	"DHCPv6RA":  3,
+func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) Enum() *GetOffloadedAppsStatisticsRequest_OffloadedApp {
+	p := new(GetOffloadedAppsStatisticsRequest_OffloadedApp)
+	*p = x
+	return p
 }
 
 func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) String() string {
-	return proto.EnumName(GetOffloadedAppsStatisticsRequest_OffloadedApp_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetOffloadedAppsStatisticsRequest_OffloadedApp) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[7].Descriptor()
+}
+
+func (GetOffloadedAppsStatisticsRequest_OffloadedApp) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[7]
+}
+
+func (x GetOffloadedAppsStatisticsRequest_OffloadedApp) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsRequest_OffloadedApp.Descriptor instead.
 func (GetOffloadedAppsStatisticsRequest_OffloadedApp) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{45, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{45, 0}
 }
 
 type GetValueResponse_Status int32
@@ -271,24 +450,45 @@
 	GetValueResponse_ERROR            GetValueResponse_Status = 2
 )
 
-var GetValueResponse_Status_name = map[int32]string{
-	0: "STATUS_UNDEFINED",
-	1: "OK",
-	2: "ERROR",
-}
+// Enum value maps for GetValueResponse_Status.
+var (
+	GetValueResponse_Status_name = map[int32]string{
+		0: "STATUS_UNDEFINED",
+		1: "OK",
+		2: "ERROR",
+	}
+	GetValueResponse_Status_value = map[string]int32{
+		"STATUS_UNDEFINED": 0,
+		"OK":               1,
+		"ERROR":            2,
+	}
+)
 
-var GetValueResponse_Status_value = map[string]int32{
-	"STATUS_UNDEFINED": 0,
-	"OK":               1,
-	"ERROR":            2,
+func (x GetValueResponse_Status) Enum() *GetValueResponse_Status {
+	p := new(GetValueResponse_Status)
+	*p = x
+	return p
 }
 
 func (x GetValueResponse_Status) String() string {
-	return proto.EnumName(GetValueResponse_Status_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetValueResponse_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[8].Descriptor()
+}
+
+func (GetValueResponse_Status) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[8]
+}
+
+func (x GetValueResponse_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetValueResponse_Status.Descriptor instead.
 func (GetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48, 0}
 }
 
 type GetValueResponse_ErrorReason int32
@@ -304,34 +504,55 @@
 	GetValueResponse_INVALID_DEVICE    GetValueResponse_ErrorReason = 7
 )
 
-var GetValueResponse_ErrorReason_name = map[int32]string{
-	0: "REASON_UNDEFINED",
-	1: "UNSUPPORTED",
-	2: "INVALID_DEVICE_ID",
-	3: "INVALID_PORT_TYPE",
-	4: "TIMEOUT",
-	5: "INVALID_REQ_TYPE",
-	6: "INTERNAL_ERROR",
-	7: "INVALID_DEVICE",
-}
+// Enum value maps for GetValueResponse_ErrorReason.
+var (
+	GetValueResponse_ErrorReason_name = map[int32]string{
+		0: "REASON_UNDEFINED",
+		1: "UNSUPPORTED",
+		2: "INVALID_DEVICE_ID",
+		3: "INVALID_PORT_TYPE",
+		4: "TIMEOUT",
+		5: "INVALID_REQ_TYPE",
+		6: "INTERNAL_ERROR",
+		7: "INVALID_DEVICE",
+	}
+	GetValueResponse_ErrorReason_value = map[string]int32{
+		"REASON_UNDEFINED":  0,
+		"UNSUPPORTED":       1,
+		"INVALID_DEVICE_ID": 2,
+		"INVALID_PORT_TYPE": 3,
+		"TIMEOUT":           4,
+		"INVALID_REQ_TYPE":  5,
+		"INTERNAL_ERROR":    6,
+		"INVALID_DEVICE":    7,
+	}
+)
 
-var GetValueResponse_ErrorReason_value = map[string]int32{
-	"REASON_UNDEFINED":  0,
-	"UNSUPPORTED":       1,
-	"INVALID_DEVICE_ID": 2,
-	"INVALID_PORT_TYPE": 3,
-	"TIMEOUT":           4,
-	"INVALID_REQ_TYPE":  5,
-	"INTERNAL_ERROR":    6,
-	"INVALID_DEVICE":    7,
+func (x GetValueResponse_ErrorReason) Enum() *GetValueResponse_ErrorReason {
+	p := new(GetValueResponse_ErrorReason)
+	*p = x
+	return p
 }
 
 func (x GetValueResponse_ErrorReason) String() string {
-	return proto.EnumName(GetValueResponse_ErrorReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GetValueResponse_ErrorReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[9].Descriptor()
+}
+
+func (GetValueResponse_ErrorReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[9]
+}
+
+func (x GetValueResponse_ErrorReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GetValueResponse_ErrorReason.Descriptor instead.
 func (GetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48, 1}
 }
 
 type SetValueResponse_Status int32
@@ -342,24 +563,45 @@
 	SetValueResponse_ERROR            SetValueResponse_Status = 2
 )
 
-var SetValueResponse_Status_name = map[int32]string{
-	0: "STATUS_UNDEFINED",
-	1: "OK",
-	2: "ERROR",
-}
+// Enum value maps for SetValueResponse_Status.
+var (
+	SetValueResponse_Status_name = map[int32]string{
+		0: "STATUS_UNDEFINED",
+		1: "OK",
+		2: "ERROR",
+	}
+	SetValueResponse_Status_value = map[string]int32{
+		"STATUS_UNDEFINED": 0,
+		"OK":               1,
+		"ERROR":            2,
+	}
+)
 
-var SetValueResponse_Status_value = map[string]int32{
-	"STATUS_UNDEFINED": 0,
-	"OK":               1,
-	"ERROR":            2,
+func (x SetValueResponse_Status) Enum() *SetValueResponse_Status {
+	p := new(SetValueResponse_Status)
+	*p = x
+	return p
 }
 
 func (x SetValueResponse_Status) String() string {
-	return proto.EnumName(SetValueResponse_Status_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SetValueResponse_Status) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[10].Descriptor()
+}
+
+func (SetValueResponse_Status) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[10]
+}
+
+func (x SetValueResponse_Status) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SetValueResponse_Status.Descriptor instead.
 func (SetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52, 0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52, 0}
 }
 
 type SetValueResponse_ErrorReason int32
@@ -372,72 +614,115 @@
 	SetValueResponse_INVALID_UNI_ID        SetValueResponse_ErrorReason = 4
 )
 
-var SetValueResponse_ErrorReason_name = map[int32]string{
-	0: "REASON_UNDEFINED",
-	1: "UNSUPPORTED",
-	2: "INVALID_DEVICE_ID",
-	3: "INVALID_ONU_DEVICE_ID",
-	4: "INVALID_UNI_ID",
-}
+// Enum value maps for SetValueResponse_ErrorReason.
+var (
+	SetValueResponse_ErrorReason_name = map[int32]string{
+		0: "REASON_UNDEFINED",
+		1: "UNSUPPORTED",
+		2: "INVALID_DEVICE_ID",
+		3: "INVALID_ONU_DEVICE_ID",
+		4: "INVALID_UNI_ID",
+	}
+	SetValueResponse_ErrorReason_value = map[string]int32{
+		"REASON_UNDEFINED":      0,
+		"UNSUPPORTED":           1,
+		"INVALID_DEVICE_ID":     2,
+		"INVALID_ONU_DEVICE_ID": 3,
+		"INVALID_UNI_ID":        4,
+	}
+)
 
-var SetValueResponse_ErrorReason_value = map[string]int32{
-	"REASON_UNDEFINED":      0,
-	"UNSUPPORTED":           1,
-	"INVALID_DEVICE_ID":     2,
-	"INVALID_ONU_DEVICE_ID": 3,
-	"INVALID_UNI_ID":        4,
+func (x SetValueResponse_ErrorReason) Enum() *SetValueResponse_ErrorReason {
+	p := new(SetValueResponse_ErrorReason)
+	*p = x
+	return p
 }
 
 func (x SetValueResponse_ErrorReason) String() string {
-	return proto.EnumName(SetValueResponse_ErrorReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SetValueResponse_ErrorReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_extensions_proto_enumTypes[11].Descriptor()
+}
+
+func (SetValueResponse_ErrorReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_extensions_proto_enumTypes[11]
+}
+
+func (x SetValueResponse_ErrorReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SetValueResponse_ErrorReason.Descriptor instead.
 func (SetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52, 1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52, 1}
 }
 
 type ValueSet struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Types that are valid to be assigned to Value:
+	//
 	//	*ValueSet_AlarmConfig
-	Value                isValueSet_Value `protobuf_oneof:"value"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Value         isValueSet_Value `protobuf_oneof:"value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueSet) Reset()         { *m = ValueSet{} }
-func (m *ValueSet) String() string { return proto.CompactTextString(m) }
-func (*ValueSet) ProtoMessage()    {}
+func (x *ValueSet) Reset() {
+	*x = ValueSet{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueSet) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueSet) ProtoMessage() {}
+
+func (x *ValueSet) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueSet.ProtoReflect.Descriptor instead.
 func (*ValueSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{0}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ValueSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ValueSet.Unmarshal(m, b)
-}
-func (m *ValueSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ValueSet.Marshal(b, m, deterministic)
-}
-func (m *ValueSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ValueSet.Merge(m, src)
-}
-func (m *ValueSet) XXX_Size() int {
-	return xxx_messageInfo_ValueSet.Size(m)
-}
-func (m *ValueSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_ValueSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ValueSet proto.InternalMessageInfo
-
-func (m *ValueSet) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ValueSet) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
+func (x *ValueSet) GetValue() isValueSet_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *ValueSet) GetAlarmConfig() *config.AlarmConfig {
+	if x != nil {
+		if x, ok := x.Value.(*ValueSet_AlarmConfig); ok {
+			return x.AlarmConfig
+		}
+	}
+	return nil
+}
+
 type isValueSet_Value interface {
 	isValueSet_Value()
 }
@@ -448,549 +733,578 @@
 
 func (*ValueSet_AlarmConfig) isValueSet_Value() {}
 
-func (m *ValueSet) GetValue() isValueSet_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *ValueSet) GetAlarmConfig() *config.AlarmConfig {
-	if x, ok := m.GetValue().(*ValueSet_AlarmConfig); ok {
-		return x.AlarmConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ValueSet) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ValueSet_AlarmConfig)(nil),
-	}
-}
-
 type ValueType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueType) Reset()         { *m = ValueType{} }
-func (m *ValueType) String() string { return proto.CompactTextString(m) }
-func (*ValueType) ProtoMessage()    {}
+func (x *ValueType) Reset() {
+	*x = ValueType{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueType) ProtoMessage() {}
+
+func (x *ValueType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueType.ProtoReflect.Descriptor instead.
 func (*ValueType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{1}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{1}
 }
 
-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=extension.ValueType_Type" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Value         ValueType_Type         `protobuf:"varint,2,opt,name=value,proto3,enum=extension.ValueType_Type" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ValueSpecifier) Reset()         { *m = ValueSpecifier{} }
-func (m *ValueSpecifier) String() string { return proto.CompactTextString(m) }
-func (*ValueSpecifier) ProtoMessage()    {}
+func (x *ValueSpecifier) Reset() {
+	*x = ValueSpecifier{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueSpecifier) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueSpecifier) ProtoMessage() {}
+
+func (x *ValueSpecifier) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueSpecifier.ProtoReflect.Descriptor instead.
 func (*ValueSpecifier) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{2}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{2}
 }
 
-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
+func (x *ValueSpecifier) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *ValueSpecifier) GetValue() ValueType_Type {
-	if m != nil {
-		return m.Value
+func (x *ValueSpecifier) GetValue() ValueType_Type {
+	if x != nil {
+		return x.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:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Set           uint32                 `protobuf:"varint,1,opt,name=Set,proto3" json:"Set,omitempty"`                 // Specifies what values are
+	Unsupported   uint32                 `protobuf:"varint,2,opt,name=Unsupported,proto3" json:"Unsupported,omitempty"` // Specifies requested values not
+	Error         uint32                 `protobuf:"varint,3,opt,name=Error,proto3" json:"Error,omitempty"`             // Specifies requested values not
+	Distance      uint32                 `protobuf:"varint,4,opt,name=Distance,proto3" json:"Distance,omitempty"`       // Value of distance Set includes
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ReturnValues) Reset()         { *m = ReturnValues{} }
-func (m *ReturnValues) String() string { return proto.CompactTextString(m) }
-func (*ReturnValues) ProtoMessage()    {}
+func (x *ReturnValues) Reset() {
+	*x = ReturnValues{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ReturnValues) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReturnValues) ProtoMessage() {}
+
+func (x *ReturnValues) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReturnValues.ProtoReflect.Descriptor instead.
 func (*ReturnValues) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{3}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{3}
 }
 
-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
+func (x *ReturnValues) GetSet() uint32 {
+	if x != nil {
+		return x.Set
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetUnsupported() uint32 {
-	if m != nil {
-		return m.Unsupported
+func (x *ReturnValues) GetUnsupported() uint32 {
+	if x != nil {
+		return x.Unsupported
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetError() uint32 {
-	if m != nil {
-		return m.Error
+func (x *ReturnValues) GetError() uint32 {
+	if x != nil {
+		return x.Error
 	}
 	return 0
 }
 
-func (m *ReturnValues) GetDistance() uint32 {
-	if m != nil {
-		return m.Distance
+func (x *ReturnValues) GetDistance() uint32 {
+	if x != nil {
+		return x.Distance
 	}
 	return 0
 }
 
 type GetDistanceRequest struct {
-	OnuDeviceId          string   `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OnuDeviceId   string                 `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetDistanceRequest) Reset()         { *m = GetDistanceRequest{} }
-func (m *GetDistanceRequest) String() string { return proto.CompactTextString(m) }
-func (*GetDistanceRequest) ProtoMessage()    {}
+func (x *GetDistanceRequest) Reset() {
+	*x = GetDistanceRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetDistanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDistanceRequest) ProtoMessage() {}
+
+func (x *GetDistanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDistanceRequest.ProtoReflect.Descriptor instead.
 func (*GetDistanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{4}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *GetDistanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDistanceRequest.Unmarshal(m, b)
-}
-func (m *GetDistanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDistanceRequest.Marshal(b, m, deterministic)
-}
-func (m *GetDistanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDistanceRequest.Merge(m, src)
-}
-func (m *GetDistanceRequest) XXX_Size() int {
-	return xxx_messageInfo_GetDistanceRequest.Size(m)
-}
-func (m *GetDistanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDistanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDistanceRequest proto.InternalMessageInfo
-
-func (m *GetDistanceRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *GetDistanceRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
 type GetDistanceResponse struct {
-	Distance             uint32   `protobuf:"varint,1,opt,name=distance,proto3" json:"distance,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Distance      uint32                 `protobuf:"varint,1,opt,name=distance,proto3" json:"distance,omitempty"` // distance in meters
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetDistanceResponse) Reset()         { *m = GetDistanceResponse{} }
-func (m *GetDistanceResponse) String() string { return proto.CompactTextString(m) }
-func (*GetDistanceResponse) ProtoMessage()    {}
+func (x *GetDistanceResponse) Reset() {
+	*x = GetDistanceResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetDistanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetDistanceResponse) ProtoMessage() {}
+
+func (x *GetDistanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetDistanceResponse.ProtoReflect.Descriptor instead.
 func (*GetDistanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{5}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *GetDistanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetDistanceResponse.Unmarshal(m, b)
-}
-func (m *GetDistanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetDistanceResponse.Marshal(b, m, deterministic)
-}
-func (m *GetDistanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetDistanceResponse.Merge(m, src)
-}
-func (m *GetDistanceResponse) XXX_Size() int {
-	return xxx_messageInfo_GetDistanceResponse.Size(m)
-}
-func (m *GetDistanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetDistanceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetDistanceResponse proto.InternalMessageInfo
-
-func (m *GetDistanceResponse) GetDistance() uint32 {
-	if m != nil {
-		return m.Distance
+func (x *GetDistanceResponse) GetDistance() uint32 {
+	if x != nil {
+		return x.Distance
 	}
 	return 0
 }
 
 type GetOnuUniInfoRequest struct {
-	UniIndex             uint32   `protobuf:"varint,1,opt,name=uniIndex,proto3" json:"uniIndex,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	UniIndex      uint32                 `protobuf:"varint,1,opt,name=uniIndex,proto3" json:"uniIndex,omitempty"` // Index of the uni starting from 0
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuUniInfoRequest) Reset()         { *m = GetOnuUniInfoRequest{} }
-func (m *GetOnuUniInfoRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuUniInfoRequest) ProtoMessage()    {}
+func (x *GetOnuUniInfoRequest) Reset() {
+	*x = GetOnuUniInfoRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuUniInfoRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuUniInfoRequest) ProtoMessage() {}
+
+func (x *GetOnuUniInfoRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuUniInfoRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuUniInfoRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{6}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *GetOnuUniInfoRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Unmarshal(m, b)
-}
-func (m *GetOnuUniInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuUniInfoRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuUniInfoRequest.Merge(m, src)
-}
-func (m *GetOnuUniInfoRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuUniInfoRequest.Size(m)
-}
-func (m *GetOnuUniInfoRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuUniInfoRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuUniInfoRequest proto.InternalMessageInfo
-
-func (m *GetOnuUniInfoRequest) GetUniIndex() uint32 {
-	if m != nil {
-		return m.UniIndex
+func (x *GetOnuUniInfoRequest) GetUniIndex() uint32 {
+	if x != nil {
+		return x.UniIndex
 	}
 	return 0
 }
 
 type GetOnuUniInfoResponse struct {
-	AdmState             GetOnuUniInfoResponse_AdministrativeState `protobuf:"varint,1,opt,name=admState,proto3,enum=extension.GetOnuUniInfoResponse_AdministrativeState" json:"admState,omitempty"`
-	OperState            GetOnuUniInfoResponse_OperationalState    `protobuf:"varint,2,opt,name=operState,proto3,enum=extension.GetOnuUniInfoResponse_OperationalState" json:"operState,omitempty"`
-	ConfigInd            GetOnuUniInfoResponse_ConfigurationInd    `protobuf:"varint,3,opt,name=configInd,proto3,enum=extension.GetOnuUniInfoResponse_ConfigurationInd" json:"configInd,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
-	XXX_unrecognized     []byte                                    `json:"-"`
-	XXX_sizecache        int32                                     `json:"-"`
+	state         protoimpl.MessageState                    `protogen:"open.v1"`
+	AdmState      GetOnuUniInfoResponse_AdministrativeState `protobuf:"varint,1,opt,name=admState,proto3,enum=extension.GetOnuUniInfoResponse_AdministrativeState" json:"admState,omitempty"`
+	OperState     GetOnuUniInfoResponse_OperationalState    `protobuf:"varint,2,opt,name=operState,proto3,enum=extension.GetOnuUniInfoResponse_OperationalState" json:"operState,omitempty"`
+	ConfigInd     GetOnuUniInfoResponse_ConfigurationInd    `protobuf:"varint,3,opt,name=configInd,proto3,enum=extension.GetOnuUniInfoResponse_ConfigurationInd" json:"configInd,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuUniInfoResponse) Reset()         { *m = GetOnuUniInfoResponse{} }
-func (m *GetOnuUniInfoResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuUniInfoResponse) ProtoMessage()    {}
+func (x *GetOnuUniInfoResponse) Reset() {
+	*x = GetOnuUniInfoResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuUniInfoResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuUniInfoResponse) ProtoMessage() {}
+
+func (x *GetOnuUniInfoResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuUniInfoResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuUniInfoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{7}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *GetOnuUniInfoResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Unmarshal(m, b)
-}
-func (m *GetOnuUniInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuUniInfoResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuUniInfoResponse.Merge(m, src)
-}
-func (m *GetOnuUniInfoResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuUniInfoResponse.Size(m)
-}
-func (m *GetOnuUniInfoResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuUniInfoResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuUniInfoResponse proto.InternalMessageInfo
-
-func (m *GetOnuUniInfoResponse) GetAdmState() GetOnuUniInfoResponse_AdministrativeState {
-	if m != nil {
-		return m.AdmState
+func (x *GetOnuUniInfoResponse) GetAdmState() GetOnuUniInfoResponse_AdministrativeState {
+	if x != nil {
+		return x.AdmState
 	}
 	return GetOnuUniInfoResponse_ADMSTATE_UNDEFINED
 }
 
-func (m *GetOnuUniInfoResponse) GetOperState() GetOnuUniInfoResponse_OperationalState {
-	if m != nil {
-		return m.OperState
+func (x *GetOnuUniInfoResponse) GetOperState() GetOnuUniInfoResponse_OperationalState {
+	if x != nil {
+		return x.OperState
 	}
 	return GetOnuUniInfoResponse_OPERSTATE_UNDEFINED
 }
 
-func (m *GetOnuUniInfoResponse) GetConfigInd() GetOnuUniInfoResponse_ConfigurationInd {
-	if m != nil {
-		return m.ConfigInd
+func (x *GetOnuUniInfoResponse) GetConfigInd() GetOnuUniInfoResponse_ConfigurationInd {
+	if x != nil {
+		return x.ConfigInd
 	}
 	return GetOnuUniInfoResponse_UNKOWN
 }
 
 type GetOltPortCounters struct {
-	PortNo               uint32                      `protobuf:"varint,1,opt,name=portNo,proto3" json:"portNo,omitempty"`
-	PortType             GetOltPortCounters_PortType `protobuf:"varint,2,opt,name=portType,proto3,enum=extension.GetOltPortCounters_PortType" json:"portType,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	state         protoimpl.MessageState      `protogen:"open.v1"`
+	PortNo        uint32                      `protobuf:"varint,1,opt,name=portNo,proto3" json:"portNo,omitempty"` // Device-unique port number
+	PortType      GetOltPortCounters_PortType `protobuf:"varint,2,opt,name=portType,proto3,enum=extension.GetOltPortCounters_PortType" json:"portType,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltPortCounters) Reset()         { *m = GetOltPortCounters{} }
-func (m *GetOltPortCounters) String() string { return proto.CompactTextString(m) }
-func (*GetOltPortCounters) ProtoMessage()    {}
+func (x *GetOltPortCounters) Reset() {
+	*x = GetOltPortCounters{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltPortCounters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltPortCounters) ProtoMessage() {}
+
+func (x *GetOltPortCounters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltPortCounters.ProtoReflect.Descriptor instead.
 func (*GetOltPortCounters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{8}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *GetOltPortCounters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltPortCounters.Unmarshal(m, b)
-}
-func (m *GetOltPortCounters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltPortCounters.Marshal(b, m, deterministic)
-}
-func (m *GetOltPortCounters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltPortCounters.Merge(m, src)
-}
-func (m *GetOltPortCounters) XXX_Size() int {
-	return xxx_messageInfo_GetOltPortCounters.Size(m)
-}
-func (m *GetOltPortCounters) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltPortCounters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltPortCounters proto.InternalMessageInfo
-
-func (m *GetOltPortCounters) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *GetOltPortCounters) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *GetOltPortCounters) GetPortType() GetOltPortCounters_PortType {
-	if m != nil {
-		return m.PortType
+func (x *GetOltPortCounters) GetPortType() GetOltPortCounters_PortType {
+	if x != nil {
+		return x.PortType
 	}
 	return GetOltPortCounters_Port_UNKNOWN
 }
 
 type GetOltPortCountersResponse struct {
-	TxBytes              uint64   `protobuf:"varint,1,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,3,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,4,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
-	TxErrorPackets       uint64   `protobuf:"varint,5,opt,name=txErrorPackets,proto3" json:"txErrorPackets,omitempty"`
-	RxErrorPackets       uint64   `protobuf:"varint,6,opt,name=rxErrorPackets,proto3" json:"rxErrorPackets,omitempty"`
-	TxBcastPackets       uint64   `protobuf:"varint,7,opt,name=txBcastPackets,proto3" json:"txBcastPackets,omitempty"`
-	RxBcastPackets       uint64   `protobuf:"varint,8,opt,name=rxBcastPackets,proto3" json:"rxBcastPackets,omitempty"`
-	TxUcastPackets       uint64   `protobuf:"varint,9,opt,name=txUcastPackets,proto3" json:"txUcastPackets,omitempty"`
-	RxUcastPackets       uint64   `protobuf:"varint,10,opt,name=rxUcastPackets,proto3" json:"rxUcastPackets,omitempty"`
-	TxMcastPackets       uint64   `protobuf:"varint,11,opt,name=txMcastPackets,proto3" json:"txMcastPackets,omitempty"`
-	RxMcastPackets       uint64   `protobuf:"varint,12,opt,name=rxMcastPackets,proto3" json:"rxMcastPackets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	TxBytes        uint64                 `protobuf:"varint,1,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
+	RxBytes        uint64                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	TxPackets      uint64                 `protobuf:"varint,3,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
+	RxPackets      uint64                 `protobuf:"varint,4,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
+	TxErrorPackets uint64                 `protobuf:"varint,5,opt,name=txErrorPackets,proto3" json:"txErrorPackets,omitempty"`
+	RxErrorPackets uint64                 `protobuf:"varint,6,opt,name=rxErrorPackets,proto3" json:"rxErrorPackets,omitempty"`
+	TxBcastPackets uint64                 `protobuf:"varint,7,opt,name=txBcastPackets,proto3" json:"txBcastPackets,omitempty"`
+	RxBcastPackets uint64                 `protobuf:"varint,8,opt,name=rxBcastPackets,proto3" json:"rxBcastPackets,omitempty"`
+	TxUcastPackets uint64                 `protobuf:"varint,9,opt,name=txUcastPackets,proto3" json:"txUcastPackets,omitempty"`
+	RxUcastPackets uint64                 `protobuf:"varint,10,opt,name=rxUcastPackets,proto3" json:"rxUcastPackets,omitempty"`
+	TxMcastPackets uint64                 `protobuf:"varint,11,opt,name=txMcastPackets,proto3" json:"txMcastPackets,omitempty"`
+	RxMcastPackets uint64                 `protobuf:"varint,12,opt,name=rxMcastPackets,proto3" json:"rxMcastPackets,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetOltPortCountersResponse) Reset()         { *m = GetOltPortCountersResponse{} }
-func (m *GetOltPortCountersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOltPortCountersResponse) ProtoMessage()    {}
+func (x *GetOltPortCountersResponse) Reset() {
+	*x = GetOltPortCountersResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltPortCountersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltPortCountersResponse) ProtoMessage() {}
+
+func (x *GetOltPortCountersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltPortCountersResponse.ProtoReflect.Descriptor instead.
 func (*GetOltPortCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{9}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *GetOltPortCountersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltPortCountersResponse.Unmarshal(m, b)
-}
-func (m *GetOltPortCountersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltPortCountersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOltPortCountersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltPortCountersResponse.Merge(m, src)
-}
-func (m *GetOltPortCountersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOltPortCountersResponse.Size(m)
-}
-func (m *GetOltPortCountersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltPortCountersResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltPortCountersResponse proto.InternalMessageInfo
-
-func (m *GetOltPortCountersResponse) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *GetOltPortCountersResponse) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *GetOltPortCountersResponse) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *GetOltPortCountersResponse) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *GetOltPortCountersResponse) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxErrorPackets() uint64 {
-	if m != nil {
-		return m.TxErrorPackets
+func (x *GetOltPortCountersResponse) GetTxErrorPackets() uint64 {
+	if x != nil {
+		return x.TxErrorPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxErrorPackets() uint64 {
-	if m != nil {
-		return m.RxErrorPackets
+func (x *GetOltPortCountersResponse) GetRxErrorPackets() uint64 {
+	if x != nil {
+		return x.RxErrorPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxBcastPackets() uint64 {
-	if m != nil {
-		return m.TxBcastPackets
+func (x *GetOltPortCountersResponse) GetTxBcastPackets() uint64 {
+	if x != nil {
+		return x.TxBcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxBcastPackets() uint64 {
-	if m != nil {
-		return m.RxBcastPackets
+func (x *GetOltPortCountersResponse) GetRxBcastPackets() uint64 {
+	if x != nil {
+		return x.RxBcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxUcastPackets() uint64 {
-	if m != nil {
-		return m.TxUcastPackets
+func (x *GetOltPortCountersResponse) GetTxUcastPackets() uint64 {
+	if x != nil {
+		return x.TxUcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxUcastPackets() uint64 {
-	if m != nil {
-		return m.RxUcastPackets
+func (x *GetOltPortCountersResponse) GetRxUcastPackets() uint64 {
+	if x != nil {
+		return x.RxUcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetTxMcastPackets() uint64 {
-	if m != nil {
-		return m.TxMcastPackets
+func (x *GetOltPortCountersResponse) GetTxMcastPackets() uint64 {
+	if x != nil {
+		return x.TxMcastPackets
 	}
 	return 0
 }
 
-func (m *GetOltPortCountersResponse) GetRxMcastPackets() uint64 {
-	if m != nil {
-		return m.RxMcastPackets
+func (x *GetOltPortCountersResponse) GetRxMcastPackets() uint64 {
+	if x != nil {
+		return x.RxMcastPackets
 	}
 	return 0
 }
 
 type GetOnuPonOpticalInfo struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuPonOpticalInfo) Reset()         { *m = GetOnuPonOpticalInfo{} }
-func (m *GetOnuPonOpticalInfo) String() string { return proto.CompactTextString(m) }
-func (*GetOnuPonOpticalInfo) ProtoMessage()    {}
+func (x *GetOnuPonOpticalInfo) Reset() {
+	*x = GetOnuPonOpticalInfo{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuPonOpticalInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuPonOpticalInfo) ProtoMessage() {}
+
+func (x *GetOnuPonOpticalInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuPonOpticalInfo.ProtoReflect.Descriptor instead.
 func (*GetOnuPonOpticalInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{10}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *GetOnuPonOpticalInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Unmarshal(m, b)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Marshal(b, m, deterministic)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuPonOpticalInfo.Merge(m, src)
-}
-func (m *GetOnuPonOpticalInfo) XXX_Size() int {
-	return xxx_messageInfo_GetOnuPonOpticalInfo.Size(m)
-}
-func (m *GetOnuPonOpticalInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuPonOpticalInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuPonOpticalInfo proto.InternalMessageInfo
-
-func (m *GetOnuPonOpticalInfo) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuPonOpticalInfo) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
@@ -998,950 +1312,1057 @@
 // These values correspond to the Optical Line Supervision Test results
 // described in section A3.39.5 of ITU-T G.988 (11/2017) specification.
 type GetOnuPonOpticalInfoResponse struct {
-	PowerFeedVoltage       float32  `protobuf:"fixed32,1,opt,name=powerFeedVoltage,proto3" json:"powerFeedVoltage,omitempty"`
-	ReceivedOpticalPower   float32  `protobuf:"fixed32,2,opt,name=receivedOpticalPower,proto3" json:"receivedOpticalPower,omitempty"`
-	MeanOpticalLaunchPower float32  `protobuf:"fixed32,3,opt,name=meanOpticalLaunchPower,proto3" json:"meanOpticalLaunchPower,omitempty"`
-	LaserBiasCurrent       float32  `protobuf:"fixed32,4,opt,name=laserBiasCurrent,proto3" json:"laserBiasCurrent,omitempty"`
-	Temperature            float32  `protobuf:"fixed32,5,opt,name=temperature,proto3" json:"temperature,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	state                  protoimpl.MessageState `protogen:"open.v1"`
+	PowerFeedVoltage       float32                `protobuf:"fixed32,1,opt,name=powerFeedVoltage,proto3" json:"powerFeedVoltage,omitempty"`             // unit of value is voltage
+	ReceivedOpticalPower   float32                `protobuf:"fixed32,2,opt,name=receivedOpticalPower,proto3" json:"receivedOpticalPower,omitempty"`     // unit of value is dBm
+	MeanOpticalLaunchPower float32                `protobuf:"fixed32,3,opt,name=meanOpticalLaunchPower,proto3" json:"meanOpticalLaunchPower,omitempty"` // unit of value is dBm
+	LaserBiasCurrent       float32                `protobuf:"fixed32,4,opt,name=laserBiasCurrent,proto3" json:"laserBiasCurrent,omitempty"`             // unit of value is milli-amphere (mA)
+	Temperature            float32                `protobuf:"fixed32,5,opt,name=temperature,proto3" json:"temperature,omitempty"`                       // unit of value is degree celsius
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *GetOnuPonOpticalInfoResponse) Reset()         { *m = GetOnuPonOpticalInfoResponse{} }
-func (m *GetOnuPonOpticalInfoResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuPonOpticalInfoResponse) ProtoMessage()    {}
+func (x *GetOnuPonOpticalInfoResponse) Reset() {
+	*x = GetOnuPonOpticalInfoResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuPonOpticalInfoResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuPonOpticalInfoResponse) ProtoMessage() {}
+
+func (x *GetOnuPonOpticalInfoResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuPonOpticalInfoResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuPonOpticalInfoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{11}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *GetOnuPonOpticalInfoResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Unmarshal(m, b)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuPonOpticalInfoResponse.Merge(m, src)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuPonOpticalInfoResponse.Size(m)
-}
-func (m *GetOnuPonOpticalInfoResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuPonOpticalInfoResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuPonOpticalInfoResponse proto.InternalMessageInfo
-
-func (m *GetOnuPonOpticalInfoResponse) GetPowerFeedVoltage() float32 {
-	if m != nil {
-		return m.PowerFeedVoltage
+func (x *GetOnuPonOpticalInfoResponse) GetPowerFeedVoltage() float32 {
+	if x != nil {
+		return x.PowerFeedVoltage
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetReceivedOpticalPower() float32 {
-	if m != nil {
-		return m.ReceivedOpticalPower
+func (x *GetOnuPonOpticalInfoResponse) GetReceivedOpticalPower() float32 {
+	if x != nil {
+		return x.ReceivedOpticalPower
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetMeanOpticalLaunchPower() float32 {
-	if m != nil {
-		return m.MeanOpticalLaunchPower
+func (x *GetOnuPonOpticalInfoResponse) GetMeanOpticalLaunchPower() float32 {
+	if x != nil {
+		return x.MeanOpticalLaunchPower
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetLaserBiasCurrent() float32 {
-	if m != nil {
-		return m.LaserBiasCurrent
+func (x *GetOnuPonOpticalInfoResponse) GetLaserBiasCurrent() float32 {
+	if x != nil {
+		return x.LaserBiasCurrent
 	}
 	return 0
 }
 
-func (m *GetOnuPonOpticalInfoResponse) GetTemperature() float32 {
-	if m != nil {
-		return m.Temperature
+func (x *GetOnuPonOpticalInfoResponse) GetTemperature() float32 {
+	if x != nil {
+		return x.Temperature
 	}
 	return 0
 }
 
 type GetOnuEthernetBridgePortHistory struct {
-	Direction            GetOnuEthernetBridgePortHistory_Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=extension.GetOnuEthernetBridgePortHistory_Direction" json:"direction,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                  `json:"-"`
-	XXX_unrecognized     []byte                                    `json:"-"`
-	XXX_sizecache        int32                                     `json:"-"`
+	state         protoimpl.MessageState                    `protogen:"open.v1"`
+	Direction     GetOnuEthernetBridgePortHistory_Direction `protobuf:"varint,1,opt,name=direction,proto3,enum=extension.GetOnuEthernetBridgePortHistory_Direction" json:"direction,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuEthernetBridgePortHistory) Reset()         { *m = GetOnuEthernetBridgePortHistory{} }
-func (m *GetOnuEthernetBridgePortHistory) String() string { return proto.CompactTextString(m) }
-func (*GetOnuEthernetBridgePortHistory) ProtoMessage()    {}
+func (x *GetOnuEthernetBridgePortHistory) Reset() {
+	*x = GetOnuEthernetBridgePortHistory{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuEthernetBridgePortHistory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuEthernetBridgePortHistory) ProtoMessage() {}
+
+func (x *GetOnuEthernetBridgePortHistory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistory.ProtoReflect.Descriptor instead.
 func (*GetOnuEthernetBridgePortHistory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{12}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *GetOnuEthernetBridgePortHistory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Unmarshal(m, b)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Marshal(b, m, deterministic)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistory.Merge(m, src)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_Size() int {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistory.Size(m)
-}
-func (m *GetOnuEthernetBridgePortHistory) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuEthernetBridgePortHistory proto.InternalMessageInfo
-
-func (m *GetOnuEthernetBridgePortHistory) GetDirection() GetOnuEthernetBridgePortHistory_Direction {
-	if m != nil {
-		return m.Direction
+func (x *GetOnuEthernetBridgePortHistory) GetDirection() GetOnuEthernetBridgePortHistory_Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return GetOnuEthernetBridgePortHistory_UNDEFINED
 }
 
 type GetOnuEthernetBridgePortHistoryResponse struct {
-	DropEvents              uint32   `protobuf:"varint,1,opt,name=dropEvents,proto3" json:"dropEvents,omitempty"`
-	Octets                  uint32   `protobuf:"varint,2,opt,name=octets,proto3" json:"octets,omitempty"`
-	Packets                 uint32   `protobuf:"varint,3,opt,name=packets,proto3" json:"packets,omitempty"`
-	BroadcastPackets        uint32   `protobuf:"varint,4,opt,name=broadcastPackets,proto3" json:"broadcastPackets,omitempty"`
-	MulticastPackets        uint32   `protobuf:"varint,5,opt,name=multicastPackets,proto3" json:"multicastPackets,omitempty"`
-	CrcErroredPackets       uint32   `protobuf:"varint,6,opt,name=crcErroredPackets,proto3" json:"crcErroredPackets,omitempty"`
-	UndersizePackets        uint32   `protobuf:"varint,7,opt,name=undersizePackets,proto3" json:"undersizePackets,omitempty"`
-	OversizePackets         uint32   `protobuf:"varint,8,opt,name=oversizePackets,proto3" json:"oversizePackets,omitempty"`
-	Packets64Octets         uint32   `protobuf:"varint,9,opt,name=packets64octets,proto3" json:"packets64octets,omitempty"`
-	Packets65To127Octets    uint32   `protobuf:"varint,10,opt,name=packets65To127octets,proto3" json:"packets65To127octets,omitempty"`
-	Packets128To255Octets   uint32   `protobuf:"varint,11,opt,name=packets128To255Octets,proto3" json:"packets128To255Octets,omitempty"`
-	Packets256To511Octets   uint32   `protobuf:"varint,12,opt,name=packets256To511octets,proto3" json:"packets256To511octets,omitempty"`
-	Packets512To1023Octets  uint32   `protobuf:"varint,13,opt,name=packets512To1023octets,proto3" json:"packets512To1023octets,omitempty"`
-	Packets1024To1518Octets uint32   `protobuf:"varint,14,opt,name=packets1024To1518octets,proto3" json:"packets1024To1518octets,omitempty"`
-	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
-	XXX_unrecognized        []byte   `json:"-"`
-	XXX_sizecache           int32    `json:"-"`
+	state                   protoimpl.MessageState `protogen:"open.v1"`
+	DropEvents              uint32                 `protobuf:"varint,1,opt,name=dropEvents,proto3" json:"dropEvents,omitempty"`
+	Octets                  uint32                 `protobuf:"varint,2,opt,name=octets,proto3" json:"octets,omitempty"`
+	Packets                 uint32                 `protobuf:"varint,3,opt,name=packets,proto3" json:"packets,omitempty"`
+	BroadcastPackets        uint32                 `protobuf:"varint,4,opt,name=broadcastPackets,proto3" json:"broadcastPackets,omitempty"`
+	MulticastPackets        uint32                 `protobuf:"varint,5,opt,name=multicastPackets,proto3" json:"multicastPackets,omitempty"`
+	CrcErroredPackets       uint32                 `protobuf:"varint,6,opt,name=crcErroredPackets,proto3" json:"crcErroredPackets,omitempty"`
+	UndersizePackets        uint32                 `protobuf:"varint,7,opt,name=undersizePackets,proto3" json:"undersizePackets,omitempty"`
+	OversizePackets         uint32                 `protobuf:"varint,8,opt,name=oversizePackets,proto3" json:"oversizePackets,omitempty"`
+	Packets64Octets         uint32                 `protobuf:"varint,9,opt,name=packets64octets,proto3" json:"packets64octets,omitempty"`
+	Packets65To127Octets    uint32                 `protobuf:"varint,10,opt,name=packets65To127octets,proto3" json:"packets65To127octets,omitempty"`
+	Packets128To255Octets   uint32                 `protobuf:"varint,11,opt,name=packets128To255Octets,proto3" json:"packets128To255Octets,omitempty"`
+	Packets256To511Octets   uint32                 `protobuf:"varint,12,opt,name=packets256To511octets,proto3" json:"packets256To511octets,omitempty"`
+	Packets512To1023Octets  uint32                 `protobuf:"varint,13,opt,name=packets512To1023octets,proto3" json:"packets512To1023octets,omitempty"`
+	Packets1024To1518Octets uint32                 `protobuf:"varint,14,opt,name=packets1024To1518octets,proto3" json:"packets1024To1518octets,omitempty"`
+	unknownFields           protoimpl.UnknownFields
+	sizeCache               protoimpl.SizeCache
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) Reset() {
-	*m = GetOnuEthernetBridgePortHistoryResponse{}
+func (x *GetOnuEthernetBridgePortHistoryResponse) Reset() {
+	*x = GetOnuEthernetBridgePortHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
-func (m *GetOnuEthernetBridgePortHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuEthernetBridgePortHistoryResponse) ProtoMessage()    {}
+
+func (x *GetOnuEthernetBridgePortHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuEthernetBridgePortHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuEthernetBridgePortHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuEthernetBridgePortHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuEthernetBridgePortHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{13}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.Size(m)
-}
-func (m *GetOnuEthernetBridgePortHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuEthernetBridgePortHistoryResponse proto.InternalMessageInfo
-
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetDropEvents() uint32 {
-	if m != nil {
-		return m.DropEvents
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetDropEvents() uint32 {
+	if x != nil {
+		return x.DropEvents
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetOctets() uint32 {
-	if m != nil {
-		return m.Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetOctets() uint32 {
+	if x != nil {
+		return x.Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets() uint32 {
-	if m != nil {
-		return m.Packets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets() uint32 {
+	if x != nil {
+		return x.Packets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetBroadcastPackets() uint32 {
-	if m != nil {
-		return m.BroadcastPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetBroadcastPackets() uint32 {
+	if x != nil {
+		return x.BroadcastPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetMulticastPackets() uint32 {
-	if m != nil {
-		return m.MulticastPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetMulticastPackets() uint32 {
+	if x != nil {
+		return x.MulticastPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetCrcErroredPackets() uint32 {
-	if m != nil {
-		return m.CrcErroredPackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetCrcErroredPackets() uint32 {
+	if x != nil {
+		return x.CrcErroredPackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetUndersizePackets() uint32 {
-	if m != nil {
-		return m.UndersizePackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetUndersizePackets() uint32 {
+	if x != nil {
+		return x.UndersizePackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetOversizePackets() uint32 {
-	if m != nil {
-		return m.OversizePackets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetOversizePackets() uint32 {
+	if x != nil {
+		return x.OversizePackets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets64Octets() uint32 {
-	if m != nil {
-		return m.Packets64Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets64Octets() uint32 {
+	if x != nil {
+		return x.Packets64Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets65To127Octets() uint32 {
-	if m != nil {
-		return m.Packets65To127Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets65To127Octets() uint32 {
+	if x != nil {
+		return x.Packets65To127Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets128To255Octets() uint32 {
-	if m != nil {
-		return m.Packets128To255Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets128To255Octets() uint32 {
+	if x != nil {
+		return x.Packets128To255Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets256To511Octets() uint32 {
-	if m != nil {
-		return m.Packets256To511Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets256To511Octets() uint32 {
+	if x != nil {
+		return x.Packets256To511Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets512To1023Octets() uint32 {
-	if m != nil {
-		return m.Packets512To1023Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets512To1023Octets() uint32 {
+	if x != nil {
+		return x.Packets512To1023Octets
 	}
 	return 0
 }
 
-func (m *GetOnuEthernetBridgePortHistoryResponse) GetPackets1024To1518Octets() uint32 {
-	if m != nil {
-		return m.Packets1024To1518Octets
+func (x *GetOnuEthernetBridgePortHistoryResponse) GetPackets1024To1518Octets() uint32 {
+	if x != nil {
+		return x.Packets1024To1518Octets
 	}
 	return 0
 }
 
 // GetOnuAllocGemHistoryRequest collects GEM and AllocId stats from ONU
 type GetOnuAllocGemHistoryRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuAllocGemHistoryRequest) Reset()         { *m = GetOnuAllocGemHistoryRequest{} }
-func (m *GetOnuAllocGemHistoryRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuAllocGemHistoryRequest) ProtoMessage()    {}
+func (x *GetOnuAllocGemHistoryRequest) Reset() {
+	*x = GetOnuAllocGemHistoryRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuAllocGemHistoryRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuAllocGemHistoryRequest) ProtoMessage() {}
+
+func (x *GetOnuAllocGemHistoryRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuAllocGemHistoryRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuAllocGemHistoryRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{14}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *GetOnuAllocGemHistoryRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Unmarshal(m, b)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuAllocGemHistoryRequest.Merge(m, src)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuAllocGemHistoryRequest.Size(m)
-}
-func (m *GetOnuAllocGemHistoryRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuAllocGemHistoryRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuAllocGemHistoryRequest proto.InternalMessageInfo
-
-func (m *GetOnuAllocGemHistoryRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuAllocGemHistoryRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type OnuGemPortHistoryData struct {
-	GemId                uint32 `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
-	TransmittedGEMFrames uint32 `protobuf:"varint,2,opt,name=transmittedGEMFrames,proto3" json:"transmittedGEMFrames,omitempty"`
-	ReceivedGEMFrames    uint32 `protobuf:"varint,3,opt,name=receivedGEMFrames,proto3" json:"receivedGEMFrames,omitempty"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	GemId                uint32                 `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
+	TransmittedGEMFrames uint32                 `protobuf:"varint,2,opt,name=transmittedGEMFrames,proto3" json:"transmittedGEMFrames,omitempty"`
+	ReceivedGEMFrames    uint32                 `protobuf:"varint,3,opt,name=receivedGEMFrames,proto3" json:"receivedGEMFrames,omitempty"`
 	// Deprecated: uint32 cannot handle large byte counters and will overflow after ~4GB.
 	// Use received_payload_bytes_64 instead for full 64-bit precision.
-	ReceivedPayloadBytes uint32 `protobuf:"varint,4,opt,name=receivedPayloadBytes,proto3" json:"receivedPayloadBytes,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	ReceivedPayloadBytes uint32 `protobuf:"varint,4,opt,name=receivedPayloadBytes,proto3" json:"receivedPayloadBytes,omitempty"`
 	// Deprecated: uint32 cannot handle large byte counters and will overflow after ~4GB.
 	// Use transmitted_payload_bytes_64 instead for full 64-bit precision.
-	TransmittedPayloadBytes    uint32   `protobuf:"varint,5,opt,name=transmittedPayloadBytes,proto3" json:"transmittedPayloadBytes,omitempty"` // Deprecated: Do not use.
-	EncryptionKeyErrors        uint32   `protobuf:"varint,6,opt,name=encryptionKeyErrors,proto3" json:"encryptionKeyErrors,omitempty"`
-	ReceivedPayloadBytes_64    uint64   `protobuf:"fixed64,7,opt,name=received_payload_bytes_64,json=receivedPayloadBytes64,proto3" json:"received_payload_bytes_64,omitempty"`
-	TransmittedPayloadBytes_64 uint64   `protobuf:"fixed64,8,opt,name=transmitted_payload_bytes_64,json=transmittedPayloadBytes64,proto3" json:"transmitted_payload_bytes_64,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{} `json:"-"`
-	XXX_unrecognized           []byte   `json:"-"`
-	XXX_sizecache              int32    `json:"-"`
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	TransmittedPayloadBytes    uint32 `protobuf:"varint,5,opt,name=transmittedPayloadBytes,proto3" json:"transmittedPayloadBytes,omitempty"`
+	EncryptionKeyErrors        uint32 `protobuf:"varint,6,opt,name=encryptionKeyErrors,proto3" json:"encryptionKeyErrors,omitempty"`
+	ReceivedPayloadBytes_64    uint64 `protobuf:"fixed64,7,opt,name=received_payload_bytes_64,json=receivedPayloadBytes64,proto3" json:"received_payload_bytes_64,omitempty"`
+	TransmittedPayloadBytes_64 uint64 `protobuf:"fixed64,8,opt,name=transmitted_payload_bytes_64,json=transmittedPayloadBytes64,proto3" json:"transmitted_payload_bytes_64,omitempty"`
+	unknownFields              protoimpl.UnknownFields
+	sizeCache                  protoimpl.SizeCache
 }
 
-func (m *OnuGemPortHistoryData) Reset()         { *m = OnuGemPortHistoryData{} }
-func (m *OnuGemPortHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuGemPortHistoryData) ProtoMessage()    {}
+func (x *OnuGemPortHistoryData) Reset() {
+	*x = OnuGemPortHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuGemPortHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuGemPortHistoryData) ProtoMessage() {}
+
+func (x *OnuGemPortHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuGemPortHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuGemPortHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{15}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *OnuGemPortHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuGemPortHistoryData.Unmarshal(m, b)
-}
-func (m *OnuGemPortHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuGemPortHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuGemPortHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuGemPortHistoryData.Merge(m, src)
-}
-func (m *OnuGemPortHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuGemPortHistoryData.Size(m)
-}
-func (m *OnuGemPortHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuGemPortHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuGemPortHistoryData proto.InternalMessageInfo
-
-func (m *OnuGemPortHistoryData) GetGemId() uint32 {
-	if m != nil {
-		return m.GemId
+func (x *OnuGemPortHistoryData) GetGemId() uint32 {
+	if x != nil {
+		return x.GemId
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetTransmittedGEMFrames() uint32 {
-	if m != nil {
-		return m.TransmittedGEMFrames
+func (x *OnuGemPortHistoryData) GetTransmittedGEMFrames() uint32 {
+	if x != nil {
+		return x.TransmittedGEMFrames
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetReceivedGEMFrames() uint32 {
-	if m != nil {
-		return m.ReceivedGEMFrames
+func (x *OnuGemPortHistoryData) GetReceivedGEMFrames() uint32 {
+	if x != nil {
+		return x.ReceivedGEMFrames
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *OnuGemPortHistoryData) GetReceivedPayloadBytes() uint32 {
-	if m != nil {
-		return m.ReceivedPayloadBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *OnuGemPortHistoryData) GetReceivedPayloadBytes() uint32 {
+	if x != nil {
+		return x.ReceivedPayloadBytes
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *OnuGemPortHistoryData) GetTransmittedPayloadBytes() uint32 {
-	if m != nil {
-		return m.TransmittedPayloadBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *OnuGemPortHistoryData) GetTransmittedPayloadBytes() uint32 {
+	if x != nil {
+		return x.TransmittedPayloadBytes
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetEncryptionKeyErrors() uint32 {
-	if m != nil {
-		return m.EncryptionKeyErrors
+func (x *OnuGemPortHistoryData) GetEncryptionKeyErrors() uint32 {
+	if x != nil {
+		return x.EncryptionKeyErrors
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetReceivedPayloadBytes_64() uint64 {
-	if m != nil {
-		return m.ReceivedPayloadBytes_64
+func (x *OnuGemPortHistoryData) GetReceivedPayloadBytes_64() uint64 {
+	if x != nil {
+		return x.ReceivedPayloadBytes_64
 	}
 	return 0
 }
 
-func (m *OnuGemPortHistoryData) GetTransmittedPayloadBytes_64() uint64 {
-	if m != nil {
-		return m.TransmittedPayloadBytes_64
+func (x *OnuGemPortHistoryData) GetTransmittedPayloadBytes_64() uint64 {
+	if x != nil {
+		return x.TransmittedPayloadBytes_64
 	}
 	return 0
 }
 
 type OnuAllocHistoryData struct {
-	AllocId              uint32   `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
-	RxBytes              uint32   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	AllocId       uint32                 `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
+	RxBytes       uint32                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocHistoryData) Reset()         { *m = OnuAllocHistoryData{} }
-func (m *OnuAllocHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocHistoryData) ProtoMessage()    {}
+func (x *OnuAllocHistoryData) Reset() {
+	*x = OnuAllocHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocHistoryData) ProtoMessage() {}
+
+func (x *OnuAllocHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuAllocHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{16}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *OnuAllocHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocHistoryData.Unmarshal(m, b)
-}
-func (m *OnuAllocHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocHistoryData.Merge(m, src)
-}
-func (m *OnuAllocHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocHistoryData.Size(m)
-}
-func (m *OnuAllocHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocHistoryData proto.InternalMessageInfo
-
-func (m *OnuAllocHistoryData) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *OnuAllocHistoryData) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *OnuAllocHistoryData) GetRxBytes() uint32 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuAllocHistoryData) GetRxBytes() uint32 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
 type OnuAllocGemHistoryData struct {
-	OnuAllocIdInfo       *OnuAllocHistoryData     `protobuf:"bytes,1,opt,name=onuAllocIdInfo,proto3" json:"onuAllocIdInfo,omitempty"`
-	GemPortInfo          []*OnuGemPortHistoryData `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state          protoimpl.MessageState   `protogen:"open.v1"`
+	OnuAllocIdInfo *OnuAllocHistoryData     `protobuf:"bytes,1,opt,name=onuAllocIdInfo,proto3" json:"onuAllocIdInfo,omitempty"`
+	GemPortInfo    []*OnuGemPortHistoryData `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OnuAllocGemHistoryData) Reset()         { *m = OnuAllocGemHistoryData{} }
-func (m *OnuAllocGemHistoryData) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocGemHistoryData) ProtoMessage()    {}
+func (x *OnuAllocGemHistoryData) Reset() {
+	*x = OnuAllocGemHistoryData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocGemHistoryData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocGemHistoryData) ProtoMessage() {}
+
+func (x *OnuAllocGemHistoryData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocGemHistoryData.ProtoReflect.Descriptor instead.
 func (*OnuAllocGemHistoryData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{17}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *OnuAllocGemHistoryData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Unmarshal(m, b)
-}
-func (m *OnuAllocGemHistoryData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocGemHistoryData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocGemHistoryData.Merge(m, src)
-}
-func (m *OnuAllocGemHistoryData) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocGemHistoryData.Size(m)
-}
-func (m *OnuAllocGemHistoryData) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocGemHistoryData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocGemHistoryData proto.InternalMessageInfo
-
-func (m *OnuAllocGemHistoryData) GetOnuAllocIdInfo() *OnuAllocHistoryData {
-	if m != nil {
-		return m.OnuAllocIdInfo
+func (x *OnuAllocGemHistoryData) GetOnuAllocIdInfo() *OnuAllocHistoryData {
+	if x != nil {
+		return x.OnuAllocIdInfo
 	}
 	return nil
 }
 
-func (m *OnuAllocGemHistoryData) GetGemPortInfo() []*OnuGemPortHistoryData {
-	if m != nil {
-		return m.GemPortInfo
+func (x *OnuAllocGemHistoryData) GetGemPortInfo() []*OnuGemPortHistoryData {
+	if x != nil {
+		return x.GemPortInfo
 	}
 	return nil
 }
 
 type GetOnuAllocGemHistoryResponse struct {
+	state                  protoimpl.MessageState    `protogen:"open.v1"`
 	OnuAllocGemHistoryData []*OnuAllocGemHistoryData `protobuf:"bytes,1,rep,name=onuAllocGemHistoryData,proto3" json:"onuAllocGemHistoryData,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{}                  `json:"-"`
-	XXX_unrecognized       []byte                    `json:"-"`
-	XXX_sizecache          int32                     `json:"-"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *GetOnuAllocGemHistoryResponse) Reset()         { *m = GetOnuAllocGemHistoryResponse{} }
-func (m *GetOnuAllocGemHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuAllocGemHistoryResponse) ProtoMessage()    {}
+func (x *GetOnuAllocGemHistoryResponse) Reset() {
+	*x = GetOnuAllocGemHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuAllocGemHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuAllocGemHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuAllocGemHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuAllocGemHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuAllocGemHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{18}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *GetOnuAllocGemHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuAllocGemHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuAllocGemHistoryResponse.Size(m)
-}
-func (m *GetOnuAllocGemHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuAllocGemHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuAllocGemHistoryResponse proto.InternalMessageInfo
-
-func (m *GetOnuAllocGemHistoryResponse) GetOnuAllocGemHistoryData() []*OnuAllocGemHistoryData {
-	if m != nil {
-		return m.OnuAllocGemHistoryData
+func (x *GetOnuAllocGemHistoryResponse) GetOnuAllocGemHistoryData() []*OnuAllocGemHistoryData {
+	if x != nil {
+		return x.OnuAllocGemHistoryData
 	}
 	return nil
 }
 
 type GetOnuFecHistory struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuFecHistory) Reset()         { *m = GetOnuFecHistory{} }
-func (m *GetOnuFecHistory) String() string { return proto.CompactTextString(m) }
-func (*GetOnuFecHistory) ProtoMessage()    {}
+func (x *GetOnuFecHistory) Reset() {
+	*x = GetOnuFecHistory{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuFecHistory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuFecHistory) ProtoMessage() {}
+
+func (x *GetOnuFecHistory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuFecHistory.ProtoReflect.Descriptor instead.
 func (*GetOnuFecHistory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *GetOnuFecHistory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuFecHistory.Unmarshal(m, b)
-}
-func (m *GetOnuFecHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuFecHistory.Marshal(b, m, deterministic)
-}
-func (m *GetOnuFecHistory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuFecHistory.Merge(m, src)
-}
-func (m *GetOnuFecHistory) XXX_Size() int {
-	return xxx_messageInfo_GetOnuFecHistory.Size(m)
-}
-func (m *GetOnuFecHistory) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuFecHistory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuFecHistory proto.InternalMessageInfo
-
-func (m *GetOnuFecHistory) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuFecHistory) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type GetOnuFecHistoryResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Deprecated: uint32 cannot handle large counter values and will overflow.
 	// Use fec_corrected_bytes_64 instead for full 64-bit precision.
-	CorrectedBytes uint32 `protobuf:"varint,1,opt,name=correctedBytes,proto3" json:"correctedBytes,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	CorrectedBytes uint32 `protobuf:"varint,1,opt,name=correctedBytes,proto3" json:"correctedBytes,omitempty"`
 	// Deprecated: uint32 cannot handle large counter values and will overflow.
 	// Use fec_corrected_code_words_64 instead for full 64-bit precision.
-	CorrectedCodeWords uint32 `protobuf:"varint,2,opt,name=correctedCodeWords,proto3" json:"correctedCodeWords,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	CorrectedCodeWords uint32 `protobuf:"varint,2,opt,name=correctedCodeWords,proto3" json:"correctedCodeWords,omitempty"`
 	FecSeconds         uint32 `protobuf:"varint,3,opt,name=fecSeconds,proto3" json:"fecSeconds,omitempty"`
 	// Deprecated: uint32 cannot handle large counter values and will overflow.
 	// Use total_code_words_64 instead for full 64-bit precision.
-	TotalCodeWords uint32 `protobuf:"varint,4,opt,name=totalCodeWords,proto3" json:"totalCodeWords,omitempty"` // Deprecated: Do not use.
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	TotalCodeWords uint32 `protobuf:"varint,4,opt,name=totalCodeWords,proto3" json:"totalCodeWords,omitempty"`
 	// Deprecated: uint32 cannot handle large counter values and will overflow.
 	// Use uncorrectable_code_words_64 instead for full 64-bit precision.
-	UncorrectableCodeWords    uint32   `protobuf:"varint,5,opt,name=uncorrectableCodeWords,proto3" json:"uncorrectableCodeWords,omitempty"` // Deprecated: Do not use.
-	FecCorrectedBytes_64      uint64   `protobuf:"fixed64,6,opt,name=fec_corrected_bytes_64,json=fecCorrectedBytes64,proto3" json:"fec_corrected_bytes_64,omitempty"`
-	FecCorrectedCodeWords_64  uint64   `protobuf:"fixed64,7,opt,name=fec_corrected_code_words_64,json=fecCorrectedCodeWords64,proto3" json:"fec_corrected_code_words_64,omitempty"`
-	TotalCodeWords_64         uint64   `protobuf:"fixed64,8,opt,name=total_code_words_64,json=totalCodeWords64,proto3" json:"total_code_words_64,omitempty"`
-	UncorrectableCodeWords_64 uint64   `protobuf:"fixed64,9,opt,name=uncorrectable_code_words_64,json=uncorrectableCodeWords64,proto3" json:"uncorrectable_code_words_64,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{} `json:"-"`
-	XXX_unrecognized          []byte   `json:"-"`
-	XXX_sizecache             int32    `json:"-"`
+	//
+	// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+	UncorrectableCodeWords    uint32 `protobuf:"varint,5,opt,name=uncorrectableCodeWords,proto3" json:"uncorrectableCodeWords,omitempty"`
+	FecCorrectedBytes_64      uint64 `protobuf:"fixed64,6,opt,name=fec_corrected_bytes_64,json=fecCorrectedBytes64,proto3" json:"fec_corrected_bytes_64,omitempty"`
+	FecCorrectedCodeWords_64  uint64 `protobuf:"fixed64,7,opt,name=fec_corrected_code_words_64,json=fecCorrectedCodeWords64,proto3" json:"fec_corrected_code_words_64,omitempty"`
+	TotalCodeWords_64         uint64 `protobuf:"fixed64,8,opt,name=total_code_words_64,json=totalCodeWords64,proto3" json:"total_code_words_64,omitempty"`
+	UncorrectableCodeWords_64 uint64 `protobuf:"fixed64,9,opt,name=uncorrectable_code_words_64,json=uncorrectableCodeWords64,proto3" json:"uncorrectable_code_words_64,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
 }
 
-func (m *GetOnuFecHistoryResponse) Reset()         { *m = GetOnuFecHistoryResponse{} }
-func (m *GetOnuFecHistoryResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuFecHistoryResponse) ProtoMessage()    {}
+func (x *GetOnuFecHistoryResponse) Reset() {
+	*x = GetOnuFecHistoryResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuFecHistoryResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuFecHistoryResponse) ProtoMessage() {}
+
+func (x *GetOnuFecHistoryResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuFecHistoryResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuFecHistoryResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{20}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *GetOnuFecHistoryResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Unmarshal(m, b)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuFecHistoryResponse.Merge(m, src)
-}
-func (m *GetOnuFecHistoryResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuFecHistoryResponse.Size(m)
-}
-func (m *GetOnuFecHistoryResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuFecHistoryResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuFecHistoryResponse proto.InternalMessageInfo
-
-// Deprecated: Do not use.
-func (m *GetOnuFecHistoryResponse) GetCorrectedBytes() uint32 {
-	if m != nil {
-		return m.CorrectedBytes
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetCorrectedBytes() uint32 {
+	if x != nil {
+		return x.CorrectedBytes
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *GetOnuFecHistoryResponse) GetCorrectedCodeWords() uint32 {
-	if m != nil {
-		return m.CorrectedCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetCorrectedCodeWords() uint32 {
+	if x != nil {
+		return x.CorrectedCodeWords
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetFecSeconds() uint32 {
-	if m != nil {
-		return m.FecSeconds
+func (x *GetOnuFecHistoryResponse) GetFecSeconds() uint32 {
+	if x != nil {
+		return x.FecSeconds
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *GetOnuFecHistoryResponse) GetTotalCodeWords() uint32 {
-	if m != nil {
-		return m.TotalCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetTotalCodeWords() uint32 {
+	if x != nil {
+		return x.TotalCodeWords
 	}
 	return 0
 }
 
-// Deprecated: Do not use.
-func (m *GetOnuFecHistoryResponse) GetUncorrectableCodeWords() uint32 {
-	if m != nil {
-		return m.UncorrectableCodeWords
+// Deprecated: Marked as deprecated in voltha_protos/extensions.proto.
+func (x *GetOnuFecHistoryResponse) GetUncorrectableCodeWords() uint32 {
+	if x != nil {
+		return x.UncorrectableCodeWords
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetFecCorrectedBytes_64() uint64 {
-	if m != nil {
-		return m.FecCorrectedBytes_64
+func (x *GetOnuFecHistoryResponse) GetFecCorrectedBytes_64() uint64 {
+	if x != nil {
+		return x.FecCorrectedBytes_64
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetFecCorrectedCodeWords_64() uint64 {
-	if m != nil {
-		return m.FecCorrectedCodeWords_64
+func (x *GetOnuFecHistoryResponse) GetFecCorrectedCodeWords_64() uint64 {
+	if x != nil {
+		return x.FecCorrectedCodeWords_64
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetTotalCodeWords_64() uint64 {
-	if m != nil {
-		return m.TotalCodeWords_64
+func (x *GetOnuFecHistoryResponse) GetTotalCodeWords_64() uint64 {
+	if x != nil {
+		return x.TotalCodeWords_64
 	}
 	return 0
 }
 
-func (m *GetOnuFecHistoryResponse) GetUncorrectableCodeWords_64() uint64 {
-	if m != nil {
-		return m.UncorrectableCodeWords_64
+func (x *GetOnuFecHistoryResponse) GetUncorrectableCodeWords_64() uint64 {
+	if x != nil {
+		return x.UncorrectableCodeWords_64
 	}
 	return 0
 }
 
 type GetOnuCountersRequest 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"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuCountersRequest) Reset()         { *m = GetOnuCountersRequest{} }
-func (m *GetOnuCountersRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuCountersRequest) ProtoMessage()    {}
+func (x *GetOnuCountersRequest) Reset() {
+	*x = GetOnuCountersRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuCountersRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuCountersRequest) ProtoMessage() {}
+
+func (x *GetOnuCountersRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuCountersRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuCountersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *GetOnuCountersRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuCountersRequest.Unmarshal(m, b)
-}
-func (m *GetOnuCountersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuCountersRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuCountersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuCountersRequest.Merge(m, src)
-}
-func (m *GetOnuCountersRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuCountersRequest.Size(m)
-}
-func (m *GetOnuCountersRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuCountersRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuCountersRequest proto.InternalMessageInfo
-
-func (m *GetOnuCountersRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetOnuCountersRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetOnuCountersRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetOnuCountersRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type GetOmciEthernetFrameExtendedPmRequest struct {
-	OnuDeviceId string `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	state       protoimpl.MessageState `protogen:"open.v1"`
+	OnuDeviceId string                 `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
 	// Types that are valid to be assigned to IsUniIndex:
+	//
 	//	*GetOmciEthernetFrameExtendedPmRequest_UniIndex
-	IsUniIndex           isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex `protobuf_oneof:"is_uni_index"`
-	Reset_               bool                                               `protobuf:"varint,3,opt,name=reset,proto3" json:"reset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                           `json:"-"`
-	XXX_unrecognized     []byte                                             `json:"-"`
-	XXX_sizecache        int32                                              `json:"-"`
+	IsUniIndex    isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex `protobuf_oneof:"is_uni_index"`
+	Reset_        bool                                               `protobuf:"varint,3,opt,name=reset,proto3" json:"reset,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) Reset()         { *m = GetOmciEthernetFrameExtendedPmRequest{} }
-func (m *GetOmciEthernetFrameExtendedPmRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOmciEthernetFrameExtendedPmRequest) ProtoMessage()    {}
+func (x *GetOmciEthernetFrameExtendedPmRequest) Reset() {
+	*x = GetOmciEthernetFrameExtendedPmRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOmciEthernetFrameExtendedPmRequest) ProtoMessage() {}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmRequest.ProtoReflect.Descriptor instead.
 func (*GetOmciEthernetFrameExtendedPmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{22}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Unmarshal(m, b)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Merge(m, src)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.Size(m)
-}
-func (m *GetOmciEthernetFrameExtendedPmRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOmciEthernetFrameExtendedPmRequest proto.InternalMessageInfo
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetIsUniIndex() isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex {
+	if x != nil {
+		return x.IsUniIndex
+	}
+	return nil
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetUniIndex() uint32 {
+	if x != nil {
+		if x, ok := x.IsUniIndex.(*GetOmciEthernetFrameExtendedPmRequest_UniIndex); ok {
+			return x.UniIndex
+		}
+	}
+	return 0
+}
+
+func (x *GetOmciEthernetFrameExtendedPmRequest) GetReset_() bool {
+	if x != nil {
+		return x.Reset_
+	}
+	return false
+}
+
 type isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex interface {
 	isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex()
 }
 
 type GetOmciEthernetFrameExtendedPmRequest_UniIndex struct {
-	UniIndex uint32 `protobuf:"varint,2,opt,name=uniIndex,proto3,oneof"`
+	UniIndex uint32 `protobuf:"varint,2,opt,name=uniIndex,proto3,oneof"` // Index of the uni starting from 0
 }
 
 func (*GetOmciEthernetFrameExtendedPmRequest_UniIndex) isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex() {
 }
 
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetIsUniIndex() isGetOmciEthernetFrameExtendedPmRequest_IsUniIndex {
-	if m != nil {
-		return m.IsUniIndex
-	}
-	return nil
-}
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetUniIndex() uint32 {
-	if x, ok := m.GetIsUniIndex().(*GetOmciEthernetFrameExtendedPmRequest_UniIndex); ok {
-		return x.UniIndex
-	}
-	return 0
-}
-
-func (m *GetOmciEthernetFrameExtendedPmRequest) GetReset_() bool {
-	if m != nil {
-		return m.Reset_
-	}
-	return false
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOmciEthernetFrameExtendedPmRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOmciEthernetFrameExtendedPmRequest_UniIndex)(nil),
-	}
-}
-
 // DEPRECATED
 type GetRxPowerRequest 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"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetRxPowerRequest) Reset()         { *m = GetRxPowerRequest{} }
-func (m *GetRxPowerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetRxPowerRequest) ProtoMessage()    {}
+func (x *GetRxPowerRequest) Reset() {
+	*x = GetRxPowerRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetRxPowerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRxPowerRequest) ProtoMessage() {}
+
+func (x *GetRxPowerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRxPowerRequest.ProtoReflect.Descriptor instead.
 func (*GetRxPowerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *GetRxPowerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetRxPowerRequest.Unmarshal(m, b)
-}
-func (m *GetRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetRxPowerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetRxPowerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetRxPowerRequest.Merge(m, src)
-}
-func (m *GetRxPowerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetRxPowerRequest.Size(m)
-}
-func (m *GetRxPowerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetRxPowerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetRxPowerRequest proto.InternalMessageInfo
-
-func (m *GetRxPowerRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetRxPowerRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetRxPowerRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetRxPowerRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type GetOltRxPowerRequest struct {
-	PortLabel string `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	state     protoimpl.MessageState `protogen:"open.v1"`
+	PortLabel string                 `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
 	// onu_sn is optional and if onu_sn is an empty string and the label is
 	// of a PON port then it means that the Rx Power corresponding to all
 	// the ONUs on that PON port is requested. In case the port_label is not
 	// of a PON port, the onu_sn does not have any significance
-	OnuSn                string   `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OnuSn         string `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltRxPowerRequest) Reset()         { *m = GetOltRxPowerRequest{} }
-func (m *GetOltRxPowerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOltRxPowerRequest) ProtoMessage()    {}
+func (x *GetOltRxPowerRequest) Reset() {
+	*x = GetOltRxPowerRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltRxPowerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltRxPowerRequest) ProtoMessage() {}
+
+func (x *GetOltRxPowerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltRxPowerRequest.ProtoReflect.Descriptor instead.
 func (*GetOltRxPowerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{24}
 }
 
-func (m *GetOltRxPowerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltRxPowerRequest.Unmarshal(m, b)
-}
-func (m *GetOltRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltRxPowerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOltRxPowerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltRxPowerRequest.Merge(m, src)
-}
-func (m *GetOltRxPowerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOltRxPowerRequest.Size(m)
-}
-func (m *GetOltRxPowerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltRxPowerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltRxPowerRequest proto.InternalMessageInfo
-
-func (m *GetOltRxPowerRequest) GetPortLabel() string {
-	if m != nil {
-		return m.PortLabel
+func (x *GetOltRxPowerRequest) GetPortLabel() string {
+	if x != nil {
+		return x.PortLabel
 	}
 	return ""
 }
 
-func (m *GetOltRxPowerRequest) GetOnuSn() string {
-	if m != nil {
-		return m.OnuSn
+func (x *GetOltRxPowerRequest) GetOnuSn() string {
+	if x != nil {
+		return x.OnuSn
 	}
 	return ""
 }
 
 type GetPonStatsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to PortInfo:
+	//
 	//	*GetPonStatsRequest_PortLabel
 	//	*GetPonStatsRequest_PortId
-	PortInfo             isGetPonStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	PortInfo      isGetPonStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetPonStatsRequest) Reset()         { *m = GetPonStatsRequest{} }
-func (m *GetPonStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetPonStatsRequest) ProtoMessage()    {}
+func (x *GetPonStatsRequest) Reset() {
+	*x = GetPonStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetPonStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPonStatsRequest) ProtoMessage() {}
+
+func (x *GetPonStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetPonStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetPonStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{25}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{25}
 }
 
-func (m *GetPonStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPonStatsRequest.Unmarshal(m, b)
-}
-func (m *GetPonStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPonStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetPonStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPonStatsRequest.Merge(m, src)
-}
-func (m *GetPonStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetPonStatsRequest.Size(m)
-}
-func (m *GetPonStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPonStatsRequest.DiscardUnknown(m)
+func (x *GetPonStatsRequest) GetPortInfo() isGetPonStatsRequest_PortInfo {
+	if x != nil {
+		return x.PortInfo
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetPonStatsRequest proto.InternalMessageInfo
+func (x *GetPonStatsRequest) GetPortLabel() string {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetPonStatsRequest_PortLabel); ok {
+			return x.PortLabel
+		}
+	}
+	return ""
+}
+
+func (x *GetPonStatsRequest) GetPortId() uint32 {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetPonStatsRequest_PortId); ok {
+			return x.PortId
+		}
+	}
+	return 0
+}
 
 type isGetPonStatsRequest_PortInfo interface {
 	isGetPonStatsRequest_PortInfo()
@@ -1959,116 +2380,123 @@
 
 func (*GetPonStatsRequest_PortId) isGetPonStatsRequest_PortInfo() {}
 
-func (m *GetPonStatsRequest) GetPortInfo() isGetPonStatsRequest_PortInfo {
-	if m != nil {
-		return m.PortInfo
-	}
-	return nil
-}
-
-func (m *GetPonStatsRequest) GetPortLabel() string {
-	if x, ok := m.GetPortInfo().(*GetPonStatsRequest_PortLabel); ok {
-		return x.PortLabel
-	}
-	return ""
-}
-
-func (m *GetPonStatsRequest) GetPortId() uint32 {
-	if x, ok := m.GetPortInfo().(*GetPonStatsRequest_PortId); ok {
-		return x.PortId
-	}
-	return 0
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetPonStatsRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetPonStatsRequest_PortLabel)(nil),
-		(*GetPonStatsRequest_PortId)(nil),
-	}
-}
-
 type GetPonStatsResponse struct {
-	PonPort              uint32                 `protobuf:"varint,1,opt,name=ponPort,proto3" json:"ponPort,omitempty"`
-	PortStatistics       *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	PonPort        uint32                 `protobuf:"varint,1,opt,name=ponPort,proto3" json:"ponPort,omitempty"`
+	PortStatistics *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetPonStatsResponse) Reset()         { *m = GetPonStatsResponse{} }
-func (m *GetPonStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetPonStatsResponse) ProtoMessage()    {}
+func (x *GetPonStatsResponse) Reset() {
+	*x = GetPonStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetPonStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPonStatsResponse) ProtoMessage() {}
+
+func (x *GetPonStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetPonStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetPonStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{26}
 }
 
-func (m *GetPonStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetPonStatsResponse.Unmarshal(m, b)
-}
-func (m *GetPonStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetPonStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetPonStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetPonStatsResponse.Merge(m, src)
-}
-func (m *GetPonStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetPonStatsResponse.Size(m)
-}
-func (m *GetPonStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetPonStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetPonStatsResponse proto.InternalMessageInfo
-
-func (m *GetPonStatsResponse) GetPonPort() uint32 {
-	if m != nil {
-		return m.PonPort
+func (x *GetPonStatsResponse) GetPonPort() uint32 {
+	if x != nil {
+		return x.PonPort
 	}
 	return 0
 }
 
-func (m *GetPonStatsResponse) GetPortStatistics() *common.PortStatistics {
-	if m != nil {
-		return m.PortStatistics
+func (x *GetPonStatsResponse) GetPortStatistics() *common.PortStatistics {
+	if x != nil {
+		return x.PortStatistics
 	}
 	return nil
 }
 
 type GetNNIStatsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to PortInfo:
+	//
 	//	*GetNNIStatsRequest_PortLabel
 	//	*GetNNIStatsRequest_PortId
-	PortInfo             isGetNNIStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	PortInfo      isGetNNIStatsRequest_PortInfo `protobuf_oneof:"portInfo"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetNNIStatsRequest) Reset()         { *m = GetNNIStatsRequest{} }
-func (m *GetNNIStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetNNIStatsRequest) ProtoMessage()    {}
+func (x *GetNNIStatsRequest) Reset() {
+	*x = GetNNIStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetNNIStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNNIStatsRequest) ProtoMessage() {}
+
+func (x *GetNNIStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNNIStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetNNIStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{27}
 }
 
-func (m *GetNNIStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNNIStatsRequest.Unmarshal(m, b)
-}
-func (m *GetNNIStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNNIStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetNNIStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNNIStatsRequest.Merge(m, src)
-}
-func (m *GetNNIStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetNNIStatsRequest.Size(m)
-}
-func (m *GetNNIStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNNIStatsRequest.DiscardUnknown(m)
+func (x *GetNNIStatsRequest) GetPortInfo() isGetNNIStatsRequest_PortInfo {
+	if x != nil {
+		return x.PortInfo
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetNNIStatsRequest proto.InternalMessageInfo
+func (x *GetNNIStatsRequest) GetPortLabel() string {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetNNIStatsRequest_PortLabel); ok {
+			return x.PortLabel
+		}
+	}
+	return ""
+}
+
+func (x *GetNNIStatsRequest) GetPortId() uint32 {
+	if x != nil {
+		if x, ok := x.PortInfo.(*GetNNIStatsRequest_PortId); ok {
+			return x.PortId
+		}
+	}
+	return 0
+}
 
 type isGetNNIStatsRequest_PortInfo interface {
 	isGetNNIStatsRequest_PortInfo()
@@ -2086,448 +2514,930 @@
 
 func (*GetNNIStatsRequest_PortId) isGetNNIStatsRequest_PortInfo() {}
 
-func (m *GetNNIStatsRequest) GetPortInfo() isGetNNIStatsRequest_PortInfo {
-	if m != nil {
-		return m.PortInfo
-	}
-	return nil
-}
-
-func (m *GetNNIStatsRequest) GetPortLabel() string {
-	if x, ok := m.GetPortInfo().(*GetNNIStatsRequest_PortLabel); ok {
-		return x.PortLabel
-	}
-	return ""
-}
-
-func (m *GetNNIStatsRequest) GetPortId() uint32 {
-	if x, ok := m.GetPortInfo().(*GetNNIStatsRequest_PortId); ok {
-		return x.PortId
-	}
-	return 0
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetNNIStatsRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetNNIStatsRequest_PortLabel)(nil),
-		(*GetNNIStatsRequest_PortId)(nil),
-	}
-}
-
 type GetNNIStatsResponse struct {
-	NniPort              uint32                 `protobuf:"varint,1,opt,name=nniPort,proto3" json:"nniPort,omitempty"`
-	PortStatistics       *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	NniPort        uint32                 `protobuf:"varint,1,opt,name=nniPort,proto3" json:"nniPort,omitempty"`
+	PortStatistics *common.PortStatistics `protobuf:"bytes,2,opt,name=portStatistics,proto3" json:"portStatistics,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *GetNNIStatsResponse) Reset()         { *m = GetNNIStatsResponse{} }
-func (m *GetNNIStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetNNIStatsResponse) ProtoMessage()    {}
+func (x *GetNNIStatsResponse) Reset() {
+	*x = GetNNIStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetNNIStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetNNIStatsResponse) ProtoMessage() {}
+
+func (x *GetNNIStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetNNIStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetNNIStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{28}
 }
 
-func (m *GetNNIStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetNNIStatsResponse.Unmarshal(m, b)
-}
-func (m *GetNNIStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetNNIStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetNNIStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetNNIStatsResponse.Merge(m, src)
-}
-func (m *GetNNIStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetNNIStatsResponse.Size(m)
-}
-func (m *GetNNIStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetNNIStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetNNIStatsResponse proto.InternalMessageInfo
-
-func (m *GetNNIStatsResponse) GetNniPort() uint32 {
-	if m != nil {
-		return m.NniPort
+func (x *GetNNIStatsResponse) GetNniPort() uint32 {
+	if x != nil {
+		return x.NniPort
 	}
 	return 0
 }
 
-func (m *GetNNIStatsResponse) GetPortStatistics() *common.PortStatistics {
-	if m != nil {
-		return m.PortStatistics
+func (x *GetNNIStatsResponse) GetPortStatistics() *common.PortStatistics {
+	if x != nil {
+		return x.PortStatistics
 	}
 	return nil
 }
 
 // GetOnuStatsFromOltRequest collects GEM and AllocId stats from the OLT for a particular ONU.
 type GetOnuStatsFromOltRequest struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onuId,proto3" json:"onuId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,2,opt,name=onuId,proto3" json:"onuId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuStatsFromOltRequest) Reset()         { *m = GetOnuStatsFromOltRequest{} }
-func (m *GetOnuStatsFromOltRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuStatsFromOltRequest) ProtoMessage()    {}
+func (x *GetOnuStatsFromOltRequest) Reset() {
+	*x = GetOnuStatsFromOltRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuStatsFromOltRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuStatsFromOltRequest) ProtoMessage() {}
+
+func (x *GetOnuStatsFromOltRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuStatsFromOltRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuStatsFromOltRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{29}
 }
 
-func (m *GetOnuStatsFromOltRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Unmarshal(m, b)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuStatsFromOltRequest.Merge(m, src)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuStatsFromOltRequest.Size(m)
-}
-func (m *GetOnuStatsFromOltRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuStatsFromOltRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuStatsFromOltRequest proto.InternalMessageInfo
-
-func (m *GetOnuStatsFromOltRequest) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetOnuStatsFromOltRequest) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetOnuStatsFromOltRequest) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetOnuStatsFromOltRequest) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
 type OnuGemPortInfoFromOlt struct {
-	GemId                uint32   `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,2,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,4,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,5,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GemId         uint32                 `protobuf:"varint,1,opt,name=gemId,proto3" json:"gemId,omitempty"`
+	RxPackets     uint64                 `protobuf:"varint,2,opt,name=rxPackets,proto3" json:"rxPackets,omitempty"`
+	RxBytes       uint64                 `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	TxPackets     uint64                 `protobuf:"varint,4,opt,name=txPackets,proto3" json:"txPackets,omitempty"`
+	TxBytes       uint64                 `protobuf:"varint,5,opt,name=txBytes,proto3" json:"txBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuGemPortInfoFromOlt) Reset()         { *m = OnuGemPortInfoFromOlt{} }
-func (m *OnuGemPortInfoFromOlt) String() string { return proto.CompactTextString(m) }
-func (*OnuGemPortInfoFromOlt) ProtoMessage()    {}
+func (x *OnuGemPortInfoFromOlt) Reset() {
+	*x = OnuGemPortInfoFromOlt{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuGemPortInfoFromOlt) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuGemPortInfoFromOlt) ProtoMessage() {}
+
+func (x *OnuGemPortInfoFromOlt) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuGemPortInfoFromOlt.ProtoReflect.Descriptor instead.
 func (*OnuGemPortInfoFromOlt) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{30}
 }
 
-func (m *OnuGemPortInfoFromOlt) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Unmarshal(m, b)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Marshal(b, m, deterministic)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuGemPortInfoFromOlt.Merge(m, src)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_Size() int {
-	return xxx_messageInfo_OnuGemPortInfoFromOlt.Size(m)
-}
-func (m *OnuGemPortInfoFromOlt) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuGemPortInfoFromOlt.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuGemPortInfoFromOlt proto.InternalMessageInfo
-
-func (m *OnuGemPortInfoFromOlt) GetGemId() uint32 {
-	if m != nil {
-		return m.GemId
+func (x *OnuGemPortInfoFromOlt) GetGemId() uint32 {
+	if x != nil {
+		return x.GemId
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *OnuGemPortInfoFromOlt) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuGemPortInfoFromOlt) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *OnuGemPortInfoFromOlt) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *OnuGemPortInfoFromOlt) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *OnuGemPortInfoFromOlt) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
 type OnuAllocIdInfoFromOlt struct {
-	AllocId              uint32   `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	AllocId       uint32                 `protobuf:"varint,1,opt,name=allocId,proto3" json:"allocId,omitempty"`
+	RxBytes       uint64                 `protobuf:"varint,2,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocIdInfoFromOlt) Reset()         { *m = OnuAllocIdInfoFromOlt{} }
-func (m *OnuAllocIdInfoFromOlt) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocIdInfoFromOlt) ProtoMessage()    {}
+func (x *OnuAllocIdInfoFromOlt) Reset() {
+	*x = OnuAllocIdInfoFromOlt{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocIdInfoFromOlt) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocIdInfoFromOlt) ProtoMessage() {}
+
+func (x *OnuAllocIdInfoFromOlt) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocIdInfoFromOlt.ProtoReflect.Descriptor instead.
 func (*OnuAllocIdInfoFromOlt) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{31}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{31}
 }
 
-func (m *OnuAllocIdInfoFromOlt) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Unmarshal(m, b)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocIdInfoFromOlt.Merge(m, src)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocIdInfoFromOlt.Size(m)
-}
-func (m *OnuAllocIdInfoFromOlt) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocIdInfoFromOlt.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocIdInfoFromOlt proto.InternalMessageInfo
-
-func (m *OnuAllocIdInfoFromOlt) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *OnuAllocIdInfoFromOlt) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *OnuAllocIdInfoFromOlt) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *OnuAllocIdInfoFromOlt) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
 type OnuAllocGemStatsFromOltResponse struct {
-	AllocIdInfo          *OnuAllocIdInfoFromOlt   `protobuf:"bytes,1,opt,name=allocIdInfo,proto3" json:"allocIdInfo,omitempty"`
-	GemPortInfo          []*OnuGemPortInfoFromOlt `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	AllocIdInfo   *OnuAllocIdInfoFromOlt   `protobuf:"bytes,1,opt,name=allocIdInfo,proto3" json:"allocIdInfo,omitempty"`
+	GemPortInfo   []*OnuGemPortInfoFromOlt `protobuf:"bytes,2,rep,name=gemPortInfo,proto3" json:"gemPortInfo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) Reset()         { *m = OnuAllocGemStatsFromOltResponse{} }
-func (m *OnuAllocGemStatsFromOltResponse) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocGemStatsFromOltResponse) ProtoMessage()    {}
+func (x *OnuAllocGemStatsFromOltResponse) Reset() {
+	*x = OnuAllocGemStatsFromOltResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocGemStatsFromOltResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocGemStatsFromOltResponse) ProtoMessage() {}
+
+func (x *OnuAllocGemStatsFromOltResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocGemStatsFromOltResponse.ProtoReflect.Descriptor instead.
 func (*OnuAllocGemStatsFromOltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{32}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{32}
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Unmarshal(m, b)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Merge(m, src)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocGemStatsFromOltResponse.Size(m)
-}
-func (m *OnuAllocGemStatsFromOltResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocGemStatsFromOltResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocGemStatsFromOltResponse proto.InternalMessageInfo
-
-func (m *OnuAllocGemStatsFromOltResponse) GetAllocIdInfo() *OnuAllocIdInfoFromOlt {
-	if m != nil {
-		return m.AllocIdInfo
+func (x *OnuAllocGemStatsFromOltResponse) GetAllocIdInfo() *OnuAllocIdInfoFromOlt {
+	if x != nil {
+		return x.AllocIdInfo
 	}
 	return nil
 }
 
-func (m *OnuAllocGemStatsFromOltResponse) GetGemPortInfo() []*OnuGemPortInfoFromOlt {
-	if m != nil {
-		return m.GemPortInfo
+func (x *OnuAllocGemStatsFromOltResponse) GetGemPortInfo() []*OnuGemPortInfoFromOlt {
+	if x != nil {
+		return x.GemPortInfo
 	}
 	return nil
 }
 
 type GetOnuStatsFromOltResponse struct {
-	AllocGemStatsInfo    []*OnuAllocGemStatsFromOltResponse `protobuf:"bytes,1,rep,name=allocGemStatsInfo,proto3" json:"allocGemStatsInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
+	state             protoimpl.MessageState             `protogen:"open.v1"`
+	AllocGemStatsInfo []*OnuAllocGemStatsFromOltResponse `protobuf:"bytes,1,rep,name=allocGemStatsInfo,proto3" json:"allocGemStatsInfo,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *GetOnuStatsFromOltResponse) Reset()         { *m = GetOnuStatsFromOltResponse{} }
-func (m *GetOnuStatsFromOltResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuStatsFromOltResponse) ProtoMessage()    {}
+func (x *GetOnuStatsFromOltResponse) Reset() {
+	*x = GetOnuStatsFromOltResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuStatsFromOltResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuStatsFromOltResponse) ProtoMessage() {}
+
+func (x *GetOnuStatsFromOltResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuStatsFromOltResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuStatsFromOltResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{33}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{33}
 }
 
-func (m *GetOnuStatsFromOltResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Unmarshal(m, b)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuStatsFromOltResponse.Merge(m, src)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuStatsFromOltResponse.Size(m)
-}
-func (m *GetOnuStatsFromOltResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuStatsFromOltResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuStatsFromOltResponse proto.InternalMessageInfo
-
-func (m *GetOnuStatsFromOltResponse) GetAllocGemStatsInfo() []*OnuAllocGemStatsFromOltResponse {
-	if m != nil {
-		return m.AllocGemStatsInfo
+func (x *GetOnuStatsFromOltResponse) GetAllocGemStatsInfo() []*OnuAllocGemStatsFromOltResponse {
+	if x != nil {
+		return x.AllocGemStatsInfo
 	}
 	return nil
 }
 
 type GetOnuCountersResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to IsIntfId:
+	//
 	//	*GetOnuCountersResponse_IntfId
 	IsIntfId isGetOnuCountersResponse_IsIntfId `protobuf_oneof:"is_intf_id"`
 	// Types that are valid to be assigned to IsOnuId:
+	//
 	//	*GetOnuCountersResponse_OnuId
 	IsOnuId isGetOnuCountersResponse_IsOnuId `protobuf_oneof:"is_onu_id"`
 	// Types that are valid to be assigned to IsPositiveDrift:
+	//
 	//	*GetOnuCountersResponse_PositiveDrift
 	IsPositiveDrift isGetOnuCountersResponse_IsPositiveDrift `protobuf_oneof:"is_positive_drift"`
 	// Types that are valid to be assigned to IsNegativeDrift:
+	//
 	//	*GetOnuCountersResponse_NegativeDrift
 	IsNegativeDrift isGetOnuCountersResponse_IsNegativeDrift `protobuf_oneof:"is_negative_drift"`
 	// Types that are valid to be assigned to IsDelimiterMissDetection:
+	//
 	//	*GetOnuCountersResponse_DelimiterMissDetection
 	IsDelimiterMissDetection isGetOnuCountersResponse_IsDelimiterMissDetection `protobuf_oneof:"is_delimiter_miss_detection"`
 	// Types that are valid to be assigned to IsBipErrors:
+	//
 	//	*GetOnuCountersResponse_BipErrors
 	IsBipErrors isGetOnuCountersResponse_IsBipErrors `protobuf_oneof:"is_bip_errors"`
 	// Types that are valid to be assigned to IsBipUnits:
+	//
 	//	*GetOnuCountersResponse_BipUnits
 	IsBipUnits isGetOnuCountersResponse_IsBipUnits `protobuf_oneof:"is_bip_units"`
 	// Types that are valid to be assigned to IsFecCorrectedSymbols:
+	//
 	//	*GetOnuCountersResponse_FecCorrectedSymbols
 	IsFecCorrectedSymbols isGetOnuCountersResponse_IsFecCorrectedSymbols `protobuf_oneof:"is_fec_corrected_symbols"`
 	// Types that are valid to be assigned to IsFecCodewordsCorrected:
+	//
 	//	*GetOnuCountersResponse_FecCodewordsCorrected
 	IsFecCodewordsCorrected isGetOnuCountersResponse_IsFecCodewordsCorrected `protobuf_oneof:"is_fec_codewords_corrected"`
 	// Types that are valid to be assigned to IsFecCodewordsUncorrectable:
+	//
 	//	*GetOnuCountersResponse_FecCodewordsUncorrectable
 	IsFecCodewordsUncorrectable isGetOnuCountersResponse_IsFecCodewordsUncorrectable `protobuf_oneof:"is_fec_codewords_uncorrectable"`
 	// Types that are valid to be assigned to IsFecCodewords:
+	//
 	//	*GetOnuCountersResponse_FecCodewords
 	IsFecCodewords isGetOnuCountersResponse_IsFecCodewords `protobuf_oneof:"is_fec_codewords"`
 	// Types that are valid to be assigned to IsFecCorrectedUnits:
+	//
 	//	*GetOnuCountersResponse_FecCorrectedUnits
 	IsFecCorrectedUnits isGetOnuCountersResponse_IsFecCorrectedUnits `protobuf_oneof:"is_fec_corrected_units"`
 	// Types that are valid to be assigned to IsXgemKeyErrors:
+	//
 	//	*GetOnuCountersResponse_XgemKeyErrors
 	IsXgemKeyErrors isGetOnuCountersResponse_IsXgemKeyErrors `protobuf_oneof:"is_xgem_key_errors"`
 	// Types that are valid to be assigned to IsXgemLoss:
+	//
 	//	*GetOnuCountersResponse_XgemLoss
 	IsXgemLoss isGetOnuCountersResponse_IsXgemLoss `protobuf_oneof:"is_xgem_loss"`
 	// Types that are valid to be assigned to IsRxPloamsError:
+	//
 	//	*GetOnuCountersResponse_RxPloamsError
 	IsRxPloamsError isGetOnuCountersResponse_IsRxPloamsError `protobuf_oneof:"is_rx_ploams_error"`
 	// Types that are valid to be assigned to IsRxPloamsNonIdle:
+	//
 	//	*GetOnuCountersResponse_RxPloamsNonIdle
 	IsRxPloamsNonIdle isGetOnuCountersResponse_IsRxPloamsNonIdle `protobuf_oneof:"is_rx_ploams_non_idle"`
 	// Types that are valid to be assigned to IsRxOmci:
+	//
 	//	*GetOnuCountersResponse_RxOmci
 	IsRxOmci isGetOnuCountersResponse_IsRxOmci `protobuf_oneof:"is_rx_omci"`
 	// Types that are valid to be assigned to IsTxOmci:
+	//
 	//	*GetOnuCountersResponse_TxOmci
 	IsTxOmci isGetOnuCountersResponse_IsTxOmci `protobuf_oneof:"is_tx_omci"`
 	// Types that are valid to be assigned to IsRxOmciPacketsCrcError:
+	//
 	//	*GetOnuCountersResponse_RxOmciPacketsCrcError
 	IsRxOmciPacketsCrcError isGetOnuCountersResponse_IsRxOmciPacketsCrcError `protobuf_oneof:"is_rx_omci_packets_crc_error"`
 	// Types that are valid to be assigned to IsRxBytes:
+	//
 	//	*GetOnuCountersResponse_RxBytes
 	IsRxBytes isGetOnuCountersResponse_IsRxBytes `protobuf_oneof:"is_rx_bytes"`
 	// Types that are valid to be assigned to IsRxPackets:
+	//
 	//	*GetOnuCountersResponse_RxPackets
 	IsRxPackets isGetOnuCountersResponse_IsRxPackets `protobuf_oneof:"is_rx_packets"`
 	// Types that are valid to be assigned to IsTxBytes:
+	//
 	//	*GetOnuCountersResponse_TxBytes
 	IsTxBytes isGetOnuCountersResponse_IsTxBytes `protobuf_oneof:"is_tx_bytes"`
 	// Types that are valid to be assigned to IsTxPackets:
+	//
 	//	*GetOnuCountersResponse_TxPackets
 	IsTxPackets isGetOnuCountersResponse_IsTxPackets `protobuf_oneof:"is_tx_packets"`
 	// Types that are valid to be assigned to IsBerReported:
+	//
 	//	*GetOnuCountersResponse_BerReported
 	IsBerReported isGetOnuCountersResponse_IsBerReported `protobuf_oneof:"is_ber_reported"`
 	// Types that are valid to be assigned to IsLcdgErrors:
+	//
 	//	*GetOnuCountersResponse_LcdgErrors
 	IsLcdgErrors isGetOnuCountersResponse_IsLcdgErrors `protobuf_oneof:"is_lcdg_errors"`
 	// Types that are valid to be assigned to IsRdiErrors:
+	//
 	//	*GetOnuCountersResponse_RdiErrors
 	IsRdiErrors isGetOnuCountersResponse_IsRdiErrors `protobuf_oneof:"is_rdi_errors"`
 	// Types that are valid to be assigned to IsTimestamp:
+	//
 	//	*GetOnuCountersResponse_Timestamp
 	IsTimestamp isGetOnuCountersResponse_IsTimestamp `protobuf_oneof:"is_timestamp"`
 	// Types that are valid to be assigned to IsHecErrors:
+	//
 	//	*GetOnuCountersResponse_HecErrors
-	IsHecErrors          isGetOnuCountersResponse_IsHecErrors `protobuf_oneof:"is_hec_errors"`
-	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
-	XXX_unrecognized     []byte                               `json:"-"`
-	XXX_sizecache        int32                                `json:"-"`
+	IsHecErrors   isGetOnuCountersResponse_IsHecErrors `protobuf_oneof:"is_hec_errors"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuCountersResponse) Reset()         { *m = GetOnuCountersResponse{} }
-func (m *GetOnuCountersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuCountersResponse) ProtoMessage()    {}
+func (x *GetOnuCountersResponse) Reset() {
+	*x = GetOnuCountersResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuCountersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuCountersResponse) ProtoMessage() {}
+
+func (x *GetOnuCountersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuCountersResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{34}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{34}
 }
 
-func (m *GetOnuCountersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuCountersResponse.Unmarshal(m, b)
-}
-func (m *GetOnuCountersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuCountersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuCountersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuCountersResponse.Merge(m, src)
-}
-func (m *GetOnuCountersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuCountersResponse.Size(m)
-}
-func (m *GetOnuCountersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuCountersResponse.DiscardUnknown(m)
+func (x *GetOnuCountersResponse) GetIsIntfId() isGetOnuCountersResponse_IsIntfId {
+	if x != nil {
+		return x.IsIntfId
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetOnuCountersResponse proto.InternalMessageInfo
+func (x *GetOnuCountersResponse) GetIntfId() uint32 {
+	if x != nil {
+		if x, ok := x.IsIntfId.(*GetOnuCountersResponse_IntfId); ok {
+			return x.IntfId
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsOnuId() isGetOnuCountersResponse_IsOnuId {
+	if x != nil {
+		return x.IsOnuId
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetOnuId() uint32 {
+	if x != nil {
+		if x, ok := x.IsOnuId.(*GetOnuCountersResponse_OnuId); ok {
+			return x.OnuId
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsPositiveDrift() isGetOnuCountersResponse_IsPositiveDrift {
+	if x != nil {
+		return x.IsPositiveDrift
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetPositiveDrift() uint64 {
+	if x != nil {
+		if x, ok := x.IsPositiveDrift.(*GetOnuCountersResponse_PositiveDrift); ok {
+			return x.PositiveDrift
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsNegativeDrift() isGetOnuCountersResponse_IsNegativeDrift {
+	if x != nil {
+		return x.IsNegativeDrift
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetNegativeDrift() uint64 {
+	if x != nil {
+		if x, ok := x.IsNegativeDrift.(*GetOnuCountersResponse_NegativeDrift); ok {
+			return x.NegativeDrift
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsDelimiterMissDetection() isGetOnuCountersResponse_IsDelimiterMissDetection {
+	if x != nil {
+		return x.IsDelimiterMissDetection
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetDelimiterMissDetection() uint64 {
+	if x != nil {
+		if x, ok := x.IsDelimiterMissDetection.(*GetOnuCountersResponse_DelimiterMissDetection); ok {
+			return x.DelimiterMissDetection
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBipErrors() isGetOnuCountersResponse_IsBipErrors {
+	if x != nil {
+		return x.IsBipErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBipErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsBipErrors.(*GetOnuCountersResponse_BipErrors); ok {
+			return x.BipErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBipUnits() isGetOnuCountersResponse_IsBipUnits {
+	if x != nil {
+		return x.IsBipUnits
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBipUnits() uint64 {
+	if x != nil {
+		if x, ok := x.IsBipUnits.(*GetOnuCountersResponse_BipUnits); ok {
+			return x.BipUnits
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCorrectedSymbols() isGetOnuCountersResponse_IsFecCorrectedSymbols {
+	if x != nil {
+		return x.IsFecCorrectedSymbols
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCorrectedSymbols() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCorrectedSymbols.(*GetOnuCountersResponse_FecCorrectedSymbols); ok {
+			return x.FecCorrectedSymbols
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewordsCorrected() isGetOnuCountersResponse_IsFecCodewordsCorrected {
+	if x != nil {
+		return x.IsFecCodewordsCorrected
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewordsCorrected() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewordsCorrected.(*GetOnuCountersResponse_FecCodewordsCorrected); ok {
+			return x.FecCodewordsCorrected
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewordsUncorrectable() isGetOnuCountersResponse_IsFecCodewordsUncorrectable {
+	if x != nil {
+		return x.IsFecCodewordsUncorrectable
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewordsUncorrectable() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewordsUncorrectable.(*GetOnuCountersResponse_FecCodewordsUncorrectable); ok {
+			return x.FecCodewordsUncorrectable
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCodewords() isGetOnuCountersResponse_IsFecCodewords {
+	if x != nil {
+		return x.IsFecCodewords
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCodewords() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCodewords.(*GetOnuCountersResponse_FecCodewords); ok {
+			return x.FecCodewords
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsFecCorrectedUnits() isGetOnuCountersResponse_IsFecCorrectedUnits {
+	if x != nil {
+		return x.IsFecCorrectedUnits
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetFecCorrectedUnits() uint64 {
+	if x != nil {
+		if x, ok := x.IsFecCorrectedUnits.(*GetOnuCountersResponse_FecCorrectedUnits); ok {
+			return x.FecCorrectedUnits
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsXgemKeyErrors() isGetOnuCountersResponse_IsXgemKeyErrors {
+	if x != nil {
+		return x.IsXgemKeyErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetXgemKeyErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsXgemKeyErrors.(*GetOnuCountersResponse_XgemKeyErrors); ok {
+			return x.XgemKeyErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsXgemLoss() isGetOnuCountersResponse_IsXgemLoss {
+	if x != nil {
+		return x.IsXgemLoss
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetXgemLoss() uint64 {
+	if x != nil {
+		if x, ok := x.IsXgemLoss.(*GetOnuCountersResponse_XgemLoss); ok {
+			return x.XgemLoss
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPloamsError() isGetOnuCountersResponse_IsRxPloamsError {
+	if x != nil {
+		return x.IsRxPloamsError
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPloamsError() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPloamsError.(*GetOnuCountersResponse_RxPloamsError); ok {
+			return x.RxPloamsError
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPloamsNonIdle() isGetOnuCountersResponse_IsRxPloamsNonIdle {
+	if x != nil {
+		return x.IsRxPloamsNonIdle
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPloamsNonIdle() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPloamsNonIdle.(*GetOnuCountersResponse_RxPloamsNonIdle); ok {
+			return x.RxPloamsNonIdle
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxOmci() isGetOnuCountersResponse_IsRxOmci {
+	if x != nil {
+		return x.IsRxOmci
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxOmci() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxOmci.(*GetOnuCountersResponse_RxOmci); ok {
+			return x.RxOmci
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxOmci() isGetOnuCountersResponse_IsTxOmci {
+	if x != nil {
+		return x.IsTxOmci
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxOmci() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxOmci.(*GetOnuCountersResponse_TxOmci); ok {
+			return x.TxOmci
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxOmciPacketsCrcError() isGetOnuCountersResponse_IsRxOmciPacketsCrcError {
+	if x != nil {
+		return x.IsRxOmciPacketsCrcError
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxOmciPacketsCrcError() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxOmciPacketsCrcError.(*GetOnuCountersResponse_RxOmciPacketsCrcError); ok {
+			return x.RxOmciPacketsCrcError
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxBytes() isGetOnuCountersResponse_IsRxBytes {
+	if x != nil {
+		return x.IsRxBytes
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxBytes() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxBytes.(*GetOnuCountersResponse_RxBytes); ok {
+			return x.RxBytes
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRxPackets() isGetOnuCountersResponse_IsRxPackets {
+	if x != nil {
+		return x.IsRxPackets
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRxPackets() uint64 {
+	if x != nil {
+		if x, ok := x.IsRxPackets.(*GetOnuCountersResponse_RxPackets); ok {
+			return x.RxPackets
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxBytes() isGetOnuCountersResponse_IsTxBytes {
+	if x != nil {
+		return x.IsTxBytes
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxBytes() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxBytes.(*GetOnuCountersResponse_TxBytes); ok {
+			return x.TxBytes
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTxPackets() isGetOnuCountersResponse_IsTxPackets {
+	if x != nil {
+		return x.IsTxPackets
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTxPackets() uint64 {
+	if x != nil {
+		if x, ok := x.IsTxPackets.(*GetOnuCountersResponse_TxPackets); ok {
+			return x.TxPackets
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsBerReported() isGetOnuCountersResponse_IsBerReported {
+	if x != nil {
+		return x.IsBerReported
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetBerReported() uint64 {
+	if x != nil {
+		if x, ok := x.IsBerReported.(*GetOnuCountersResponse_BerReported); ok {
+			return x.BerReported
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsLcdgErrors() isGetOnuCountersResponse_IsLcdgErrors {
+	if x != nil {
+		return x.IsLcdgErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetLcdgErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsLcdgErrors.(*GetOnuCountersResponse_LcdgErrors); ok {
+			return x.LcdgErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsRdiErrors() isGetOnuCountersResponse_IsRdiErrors {
+	if x != nil {
+		return x.IsRdiErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetRdiErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsRdiErrors.(*GetOnuCountersResponse_RdiErrors); ok {
+			return x.RdiErrors
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsTimestamp() isGetOnuCountersResponse_IsTimestamp {
+	if x != nil {
+		return x.IsTimestamp
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetTimestamp() uint32 {
+	if x != nil {
+		if x, ok := x.IsTimestamp.(*GetOnuCountersResponse_Timestamp); ok {
+			return x.Timestamp
+		}
+	}
+	return 0
+}
+
+func (x *GetOnuCountersResponse) GetIsHecErrors() isGetOnuCountersResponse_IsHecErrors {
+	if x != nil {
+		return x.IsHecErrors
+	}
+	return nil
+}
+
+func (x *GetOnuCountersResponse) GetHecErrors() uint64 {
+	if x != nil {
+		if x, ok := x.IsHecErrors.(*GetOnuCountersResponse_HecErrors); ok {
+			return x.HecErrors
+		}
+	}
+	return 0
+}
 
 type isGetOnuCountersResponse_IsIntfId interface {
 	isGetOnuCountersResponse_IsIntfId()
@@ -2539,20 +3449,6 @@
 
 func (*GetOnuCountersResponse_IntfId) isGetOnuCountersResponse_IsIntfId() {}
 
-func (m *GetOnuCountersResponse) GetIsIntfId() isGetOnuCountersResponse_IsIntfId {
-	if m != nil {
-		return m.IsIntfId
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetIntfId() uint32 {
-	if x, ok := m.GetIsIntfId().(*GetOnuCountersResponse_IntfId); ok {
-		return x.IntfId
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsOnuId interface {
 	isGetOnuCountersResponse_IsOnuId()
 }
@@ -2563,20 +3459,6 @@
 
 func (*GetOnuCountersResponse_OnuId) isGetOnuCountersResponse_IsOnuId() {}
 
-func (m *GetOnuCountersResponse) GetIsOnuId() isGetOnuCountersResponse_IsOnuId {
-	if m != nil {
-		return m.IsOnuId
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetOnuId() uint32 {
-	if x, ok := m.GetIsOnuId().(*GetOnuCountersResponse_OnuId); ok {
-		return x.OnuId
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsPositiveDrift interface {
 	isGetOnuCountersResponse_IsPositiveDrift()
 }
@@ -2587,20 +3469,6 @@
 
 func (*GetOnuCountersResponse_PositiveDrift) isGetOnuCountersResponse_IsPositiveDrift() {}
 
-func (m *GetOnuCountersResponse) GetIsPositiveDrift() isGetOnuCountersResponse_IsPositiveDrift {
-	if m != nil {
-		return m.IsPositiveDrift
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetPositiveDrift() uint64 {
-	if x, ok := m.GetIsPositiveDrift().(*GetOnuCountersResponse_PositiveDrift); ok {
-		return x.PositiveDrift
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsNegativeDrift interface {
 	isGetOnuCountersResponse_IsNegativeDrift()
 }
@@ -2611,20 +3479,6 @@
 
 func (*GetOnuCountersResponse_NegativeDrift) isGetOnuCountersResponse_IsNegativeDrift() {}
 
-func (m *GetOnuCountersResponse) GetIsNegativeDrift() isGetOnuCountersResponse_IsNegativeDrift {
-	if m != nil {
-		return m.IsNegativeDrift
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetNegativeDrift() uint64 {
-	if x, ok := m.GetIsNegativeDrift().(*GetOnuCountersResponse_NegativeDrift); ok {
-		return x.NegativeDrift
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsDelimiterMissDetection interface {
 	isGetOnuCountersResponse_IsDelimiterMissDetection()
 }
@@ -2636,20 +3490,6 @@
 func (*GetOnuCountersResponse_DelimiterMissDetection) isGetOnuCountersResponse_IsDelimiterMissDetection() {
 }
 
-func (m *GetOnuCountersResponse) GetIsDelimiterMissDetection() isGetOnuCountersResponse_IsDelimiterMissDetection {
-	if m != nil {
-		return m.IsDelimiterMissDetection
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetDelimiterMissDetection() uint64 {
-	if x, ok := m.GetIsDelimiterMissDetection().(*GetOnuCountersResponse_DelimiterMissDetection); ok {
-		return x.DelimiterMissDetection
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBipErrors interface {
 	isGetOnuCountersResponse_IsBipErrors()
 }
@@ -2660,20 +3500,6 @@
 
 func (*GetOnuCountersResponse_BipErrors) isGetOnuCountersResponse_IsBipErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsBipErrors() isGetOnuCountersResponse_IsBipErrors {
-	if m != nil {
-		return m.IsBipErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBipErrors() uint64 {
-	if x, ok := m.GetIsBipErrors().(*GetOnuCountersResponse_BipErrors); ok {
-		return x.BipErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBipUnits interface {
 	isGetOnuCountersResponse_IsBipUnits()
 }
@@ -2684,20 +3510,6 @@
 
 func (*GetOnuCountersResponse_BipUnits) isGetOnuCountersResponse_IsBipUnits() {}
 
-func (m *GetOnuCountersResponse) GetIsBipUnits() isGetOnuCountersResponse_IsBipUnits {
-	if m != nil {
-		return m.IsBipUnits
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBipUnits() uint64 {
-	if x, ok := m.GetIsBipUnits().(*GetOnuCountersResponse_BipUnits); ok {
-		return x.BipUnits
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCorrectedSymbols interface {
 	isGetOnuCountersResponse_IsFecCorrectedSymbols()
 }
@@ -2708,20 +3520,6 @@
 
 func (*GetOnuCountersResponse_FecCorrectedSymbols) isGetOnuCountersResponse_IsFecCorrectedSymbols() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCorrectedSymbols() isGetOnuCountersResponse_IsFecCorrectedSymbols {
-	if m != nil {
-		return m.IsFecCorrectedSymbols
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCorrectedSymbols() uint64 {
-	if x, ok := m.GetIsFecCorrectedSymbols().(*GetOnuCountersResponse_FecCorrectedSymbols); ok {
-		return x.FecCorrectedSymbols
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewordsCorrected interface {
 	isGetOnuCountersResponse_IsFecCodewordsCorrected()
 }
@@ -2733,20 +3531,6 @@
 func (*GetOnuCountersResponse_FecCodewordsCorrected) isGetOnuCountersResponse_IsFecCodewordsCorrected() {
 }
 
-func (m *GetOnuCountersResponse) GetIsFecCodewordsCorrected() isGetOnuCountersResponse_IsFecCodewordsCorrected {
-	if m != nil {
-		return m.IsFecCodewordsCorrected
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewordsCorrected() uint64 {
-	if x, ok := m.GetIsFecCodewordsCorrected().(*GetOnuCountersResponse_FecCodewordsCorrected); ok {
-		return x.FecCodewordsCorrected
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewordsUncorrectable interface {
 	isGetOnuCountersResponse_IsFecCodewordsUncorrectable()
 }
@@ -2758,20 +3542,6 @@
 func (*GetOnuCountersResponse_FecCodewordsUncorrectable) isGetOnuCountersResponse_IsFecCodewordsUncorrectable() {
 }
 
-func (m *GetOnuCountersResponse) GetIsFecCodewordsUncorrectable() isGetOnuCountersResponse_IsFecCodewordsUncorrectable {
-	if m != nil {
-		return m.IsFecCodewordsUncorrectable
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewordsUncorrectable() uint64 {
-	if x, ok := m.GetIsFecCodewordsUncorrectable().(*GetOnuCountersResponse_FecCodewordsUncorrectable); ok {
-		return x.FecCodewordsUncorrectable
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCodewords interface {
 	isGetOnuCountersResponse_IsFecCodewords()
 }
@@ -2782,20 +3552,6 @@
 
 func (*GetOnuCountersResponse_FecCodewords) isGetOnuCountersResponse_IsFecCodewords() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCodewords() isGetOnuCountersResponse_IsFecCodewords {
-	if m != nil {
-		return m.IsFecCodewords
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCodewords() uint64 {
-	if x, ok := m.GetIsFecCodewords().(*GetOnuCountersResponse_FecCodewords); ok {
-		return x.FecCodewords
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsFecCorrectedUnits interface {
 	isGetOnuCountersResponse_IsFecCorrectedUnits()
 }
@@ -2806,20 +3562,6 @@
 
 func (*GetOnuCountersResponse_FecCorrectedUnits) isGetOnuCountersResponse_IsFecCorrectedUnits() {}
 
-func (m *GetOnuCountersResponse) GetIsFecCorrectedUnits() isGetOnuCountersResponse_IsFecCorrectedUnits {
-	if m != nil {
-		return m.IsFecCorrectedUnits
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetFecCorrectedUnits() uint64 {
-	if x, ok := m.GetIsFecCorrectedUnits().(*GetOnuCountersResponse_FecCorrectedUnits); ok {
-		return x.FecCorrectedUnits
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsXgemKeyErrors interface {
 	isGetOnuCountersResponse_IsXgemKeyErrors()
 }
@@ -2830,20 +3572,6 @@
 
 func (*GetOnuCountersResponse_XgemKeyErrors) isGetOnuCountersResponse_IsXgemKeyErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsXgemKeyErrors() isGetOnuCountersResponse_IsXgemKeyErrors {
-	if m != nil {
-		return m.IsXgemKeyErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetXgemKeyErrors() uint64 {
-	if x, ok := m.GetIsXgemKeyErrors().(*GetOnuCountersResponse_XgemKeyErrors); ok {
-		return x.XgemKeyErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsXgemLoss interface {
 	isGetOnuCountersResponse_IsXgemLoss()
 }
@@ -2854,20 +3582,6 @@
 
 func (*GetOnuCountersResponse_XgemLoss) isGetOnuCountersResponse_IsXgemLoss() {}
 
-func (m *GetOnuCountersResponse) GetIsXgemLoss() isGetOnuCountersResponse_IsXgemLoss {
-	if m != nil {
-		return m.IsXgemLoss
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetXgemLoss() uint64 {
-	if x, ok := m.GetIsXgemLoss().(*GetOnuCountersResponse_XgemLoss); ok {
-		return x.XgemLoss
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPloamsError interface {
 	isGetOnuCountersResponse_IsRxPloamsError()
 }
@@ -2878,20 +3592,6 @@
 
 func (*GetOnuCountersResponse_RxPloamsError) isGetOnuCountersResponse_IsRxPloamsError() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPloamsError() isGetOnuCountersResponse_IsRxPloamsError {
-	if m != nil {
-		return m.IsRxPloamsError
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPloamsError() uint64 {
-	if x, ok := m.GetIsRxPloamsError().(*GetOnuCountersResponse_RxPloamsError); ok {
-		return x.RxPloamsError
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPloamsNonIdle interface {
 	isGetOnuCountersResponse_IsRxPloamsNonIdle()
 }
@@ -2902,20 +3602,6 @@
 
 func (*GetOnuCountersResponse_RxPloamsNonIdle) isGetOnuCountersResponse_IsRxPloamsNonIdle() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPloamsNonIdle() isGetOnuCountersResponse_IsRxPloamsNonIdle {
-	if m != nil {
-		return m.IsRxPloamsNonIdle
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPloamsNonIdle() uint64 {
-	if x, ok := m.GetIsRxPloamsNonIdle().(*GetOnuCountersResponse_RxPloamsNonIdle); ok {
-		return x.RxPloamsNonIdle
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxOmci interface {
 	isGetOnuCountersResponse_IsRxOmci()
 }
@@ -2926,20 +3612,6 @@
 
 func (*GetOnuCountersResponse_RxOmci) isGetOnuCountersResponse_IsRxOmci() {}
 
-func (m *GetOnuCountersResponse) GetIsRxOmci() isGetOnuCountersResponse_IsRxOmci {
-	if m != nil {
-		return m.IsRxOmci
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxOmci() uint64 {
-	if x, ok := m.GetIsRxOmci().(*GetOnuCountersResponse_RxOmci); ok {
-		return x.RxOmci
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxOmci interface {
 	isGetOnuCountersResponse_IsTxOmci()
 }
@@ -2950,20 +3622,6 @@
 
 func (*GetOnuCountersResponse_TxOmci) isGetOnuCountersResponse_IsTxOmci() {}
 
-func (m *GetOnuCountersResponse) GetIsTxOmci() isGetOnuCountersResponse_IsTxOmci {
-	if m != nil {
-		return m.IsTxOmci
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxOmci() uint64 {
-	if x, ok := m.GetIsTxOmci().(*GetOnuCountersResponse_TxOmci); ok {
-		return x.TxOmci
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxOmciPacketsCrcError interface {
 	isGetOnuCountersResponse_IsRxOmciPacketsCrcError()
 }
@@ -2975,20 +3633,6 @@
 func (*GetOnuCountersResponse_RxOmciPacketsCrcError) isGetOnuCountersResponse_IsRxOmciPacketsCrcError() {
 }
 
-func (m *GetOnuCountersResponse) GetIsRxOmciPacketsCrcError() isGetOnuCountersResponse_IsRxOmciPacketsCrcError {
-	if m != nil {
-		return m.IsRxOmciPacketsCrcError
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxOmciPacketsCrcError() uint64 {
-	if x, ok := m.GetIsRxOmciPacketsCrcError().(*GetOnuCountersResponse_RxOmciPacketsCrcError); ok {
-		return x.RxOmciPacketsCrcError
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxBytes interface {
 	isGetOnuCountersResponse_IsRxBytes()
 }
@@ -2999,20 +3643,6 @@
 
 func (*GetOnuCountersResponse_RxBytes) isGetOnuCountersResponse_IsRxBytes() {}
 
-func (m *GetOnuCountersResponse) GetIsRxBytes() isGetOnuCountersResponse_IsRxBytes {
-	if m != nil {
-		return m.IsRxBytes
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxBytes() uint64 {
-	if x, ok := m.GetIsRxBytes().(*GetOnuCountersResponse_RxBytes); ok {
-		return x.RxBytes
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRxPackets interface {
 	isGetOnuCountersResponse_IsRxPackets()
 }
@@ -3023,20 +3653,6 @@
 
 func (*GetOnuCountersResponse_RxPackets) isGetOnuCountersResponse_IsRxPackets() {}
 
-func (m *GetOnuCountersResponse) GetIsRxPackets() isGetOnuCountersResponse_IsRxPackets {
-	if m != nil {
-		return m.IsRxPackets
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRxPackets() uint64 {
-	if x, ok := m.GetIsRxPackets().(*GetOnuCountersResponse_RxPackets); ok {
-		return x.RxPackets
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxBytes interface {
 	isGetOnuCountersResponse_IsTxBytes()
 }
@@ -3047,20 +3663,6 @@
 
 func (*GetOnuCountersResponse_TxBytes) isGetOnuCountersResponse_IsTxBytes() {}
 
-func (m *GetOnuCountersResponse) GetIsTxBytes() isGetOnuCountersResponse_IsTxBytes {
-	if m != nil {
-		return m.IsTxBytes
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxBytes() uint64 {
-	if x, ok := m.GetIsTxBytes().(*GetOnuCountersResponse_TxBytes); ok {
-		return x.TxBytes
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTxPackets interface {
 	isGetOnuCountersResponse_IsTxPackets()
 }
@@ -3071,20 +3673,6 @@
 
 func (*GetOnuCountersResponse_TxPackets) isGetOnuCountersResponse_IsTxPackets() {}
 
-func (m *GetOnuCountersResponse) GetIsTxPackets() isGetOnuCountersResponse_IsTxPackets {
-	if m != nil {
-		return m.IsTxPackets
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTxPackets() uint64 {
-	if x, ok := m.GetIsTxPackets().(*GetOnuCountersResponse_TxPackets); ok {
-		return x.TxPackets
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsBerReported interface {
 	isGetOnuCountersResponse_IsBerReported()
 }
@@ -3095,20 +3683,6 @@
 
 func (*GetOnuCountersResponse_BerReported) isGetOnuCountersResponse_IsBerReported() {}
 
-func (m *GetOnuCountersResponse) GetIsBerReported() isGetOnuCountersResponse_IsBerReported {
-	if m != nil {
-		return m.IsBerReported
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetBerReported() uint64 {
-	if x, ok := m.GetIsBerReported().(*GetOnuCountersResponse_BerReported); ok {
-		return x.BerReported
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsLcdgErrors interface {
 	isGetOnuCountersResponse_IsLcdgErrors()
 }
@@ -3119,20 +3693,6 @@
 
 func (*GetOnuCountersResponse_LcdgErrors) isGetOnuCountersResponse_IsLcdgErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsLcdgErrors() isGetOnuCountersResponse_IsLcdgErrors {
-	if m != nil {
-		return m.IsLcdgErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetLcdgErrors() uint64 {
-	if x, ok := m.GetIsLcdgErrors().(*GetOnuCountersResponse_LcdgErrors); ok {
-		return x.LcdgErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsRdiErrors interface {
 	isGetOnuCountersResponse_IsRdiErrors()
 }
@@ -3143,44 +3703,17 @@
 
 func (*GetOnuCountersResponse_RdiErrors) isGetOnuCountersResponse_IsRdiErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsRdiErrors() isGetOnuCountersResponse_IsRdiErrors {
-	if m != nil {
-		return m.IsRdiErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetRdiErrors() uint64 {
-	if x, ok := m.GetIsRdiErrors().(*GetOnuCountersResponse_RdiErrors); ok {
-		return x.RdiErrors
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsTimestamp interface {
 	isGetOnuCountersResponse_IsTimestamp()
 }
 
 type GetOnuCountersResponse_Timestamp struct {
+	// reported timestamp in seconds since epoch
 	Timestamp uint32 `protobuf:"fixed32,27,opt,name=timestamp,proto3,oneof"`
 }
 
 func (*GetOnuCountersResponse_Timestamp) isGetOnuCountersResponse_IsTimestamp() {}
 
-func (m *GetOnuCountersResponse) GetIsTimestamp() isGetOnuCountersResponse_IsTimestamp {
-	if m != nil {
-		return m.IsTimestamp
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetTimestamp() uint32 {
-	if x, ok := m.GetIsTimestamp().(*GetOnuCountersResponse_Timestamp); ok {
-		return x.Timestamp
-	}
-	return 0
-}
-
 type isGetOnuCountersResponse_IsHecErrors interface {
 	isGetOnuCountersResponse_IsHecErrors()
 }
@@ -3191,477 +3724,458 @@
 
 func (*GetOnuCountersResponse_HecErrors) isGetOnuCountersResponse_IsHecErrors() {}
 
-func (m *GetOnuCountersResponse) GetIsHecErrors() isGetOnuCountersResponse_IsHecErrors {
-	if m != nil {
-		return m.IsHecErrors
-	}
-	return nil
-}
-
-func (m *GetOnuCountersResponse) GetHecErrors() uint64 {
-	if x, ok := m.GetIsHecErrors().(*GetOnuCountersResponse_HecErrors); ok {
-		return x.HecErrors
-	}
-	return 0
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOnuCountersResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOnuCountersResponse_IntfId)(nil),
-		(*GetOnuCountersResponse_OnuId)(nil),
-		(*GetOnuCountersResponse_PositiveDrift)(nil),
-		(*GetOnuCountersResponse_NegativeDrift)(nil),
-		(*GetOnuCountersResponse_DelimiterMissDetection)(nil),
-		(*GetOnuCountersResponse_BipErrors)(nil),
-		(*GetOnuCountersResponse_BipUnits)(nil),
-		(*GetOnuCountersResponse_FecCorrectedSymbols)(nil),
-		(*GetOnuCountersResponse_FecCodewordsCorrected)(nil),
-		(*GetOnuCountersResponse_FecCodewordsUncorrectable)(nil),
-		(*GetOnuCountersResponse_FecCodewords)(nil),
-		(*GetOnuCountersResponse_FecCorrectedUnits)(nil),
-		(*GetOnuCountersResponse_XgemKeyErrors)(nil),
-		(*GetOnuCountersResponse_XgemLoss)(nil),
-		(*GetOnuCountersResponse_RxPloamsError)(nil),
-		(*GetOnuCountersResponse_RxPloamsNonIdle)(nil),
-		(*GetOnuCountersResponse_RxOmci)(nil),
-		(*GetOnuCountersResponse_TxOmci)(nil),
-		(*GetOnuCountersResponse_RxOmciPacketsCrcError)(nil),
-		(*GetOnuCountersResponse_RxBytes)(nil),
-		(*GetOnuCountersResponse_RxPackets)(nil),
-		(*GetOnuCountersResponse_TxBytes)(nil),
-		(*GetOnuCountersResponse_TxPackets)(nil),
-		(*GetOnuCountersResponse_BerReported)(nil),
-		(*GetOnuCountersResponse_LcdgErrors)(nil),
-		(*GetOnuCountersResponse_RdiErrors)(nil),
-		(*GetOnuCountersResponse_Timestamp)(nil),
-		(*GetOnuCountersResponse_HecErrors)(nil),
-	}
-}
-
 type OmciEthernetFrameExtendedPm struct {
-	DropEvents               uint64   `protobuf:"fixed64,1,opt,name=drop_events,json=dropEvents,proto3" json:"drop_events,omitempty"`
-	Octets                   uint64   `protobuf:"fixed64,2,opt,name=octets,proto3" json:"octets,omitempty"`
-	Frames                   uint64   `protobuf:"fixed64,3,opt,name=frames,proto3" json:"frames,omitempty"`
-	BroadcastFrames          uint64   `protobuf:"fixed64,4,opt,name=broadcast_frames,json=broadcastFrames,proto3" json:"broadcast_frames,omitempty"`
-	MulticastFrames          uint64   `protobuf:"fixed64,5,opt,name=multicast_frames,json=multicastFrames,proto3" json:"multicast_frames,omitempty"`
-	CrcErroredFrames         uint64   `protobuf:"fixed64,6,opt,name=crc_errored_frames,json=crcErroredFrames,proto3" json:"crc_errored_frames,omitempty"`
-	UndersizeFrames          uint64   `protobuf:"fixed64,7,opt,name=undersize_frames,json=undersizeFrames,proto3" json:"undersize_frames,omitempty"`
-	OversizeFrames           uint64   `protobuf:"fixed64,8,opt,name=oversize_frames,json=oversizeFrames,proto3" json:"oversize_frames,omitempty"`
-	Frames_64Octets          uint64   `protobuf:"fixed64,9,opt,name=frames_64_octets,json=frames64Octets,proto3" json:"frames_64_octets,omitempty"`
-	Frames_65To_127Octets    uint64   `protobuf:"fixed64,10,opt,name=frames_65_to_127_octets,json=frames65To127Octets,proto3" json:"frames_65_to_127_octets,omitempty"`
-	Frames_128To_255Octets   uint64   `protobuf:"fixed64,11,opt,name=frames_128_to_255_octets,json=frames128To255Octets,proto3" json:"frames_128_to_255_octets,omitempty"`
-	Frames_256To_511Octets   uint64   `protobuf:"fixed64,12,opt,name=frames_256_to_511_octets,json=frames256To511Octets,proto3" json:"frames_256_to_511_octets,omitempty"`
-	Frames_512To_1023Octets  uint64   `protobuf:"fixed64,13,opt,name=frames_512_to_1023_octets,json=frames512To1023Octets,proto3" json:"frames_512_to_1023_octets,omitempty"`
-	Frames_1024To_1518Octets uint64   `protobuf:"fixed64,14,opt,name=frames_1024_to_1518_octets,json=frames1024To1518Octets,proto3" json:"frames_1024_to_1518_octets,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
-	XXX_unrecognized         []byte   `json:"-"`
-	XXX_sizecache            int32    `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	DropEvents               uint64                 `protobuf:"fixed64,1,opt,name=drop_events,json=dropEvents,proto3" json:"drop_events,omitempty"`
+	Octets                   uint64                 `protobuf:"fixed64,2,opt,name=octets,proto3" json:"octets,omitempty"`
+	Frames                   uint64                 `protobuf:"fixed64,3,opt,name=frames,proto3" json:"frames,omitempty"`
+	BroadcastFrames          uint64                 `protobuf:"fixed64,4,opt,name=broadcast_frames,json=broadcastFrames,proto3" json:"broadcast_frames,omitempty"`
+	MulticastFrames          uint64                 `protobuf:"fixed64,5,opt,name=multicast_frames,json=multicastFrames,proto3" json:"multicast_frames,omitempty"`
+	CrcErroredFrames         uint64                 `protobuf:"fixed64,6,opt,name=crc_errored_frames,json=crcErroredFrames,proto3" json:"crc_errored_frames,omitempty"`
+	UndersizeFrames          uint64                 `protobuf:"fixed64,7,opt,name=undersize_frames,json=undersizeFrames,proto3" json:"undersize_frames,omitempty"`
+	OversizeFrames           uint64                 `protobuf:"fixed64,8,opt,name=oversize_frames,json=oversizeFrames,proto3" json:"oversize_frames,omitempty"`
+	Frames_64Octets          uint64                 `protobuf:"fixed64,9,opt,name=frames_64_octets,json=frames64Octets,proto3" json:"frames_64_octets,omitempty"`
+	Frames_65To_127Octets    uint64                 `protobuf:"fixed64,10,opt,name=frames_65_to_127_octets,json=frames65To127Octets,proto3" json:"frames_65_to_127_octets,omitempty"`
+	Frames_128To_255Octets   uint64                 `protobuf:"fixed64,11,opt,name=frames_128_to_255_octets,json=frames128To255Octets,proto3" json:"frames_128_to_255_octets,omitempty"`
+	Frames_256To_511Octets   uint64                 `protobuf:"fixed64,12,opt,name=frames_256_to_511_octets,json=frames256To511Octets,proto3" json:"frames_256_to_511_octets,omitempty"`
+	Frames_512To_1023Octets  uint64                 `protobuf:"fixed64,13,opt,name=frames_512_to_1023_octets,json=frames512To1023Octets,proto3" json:"frames_512_to_1023_octets,omitempty"`
+	Frames_1024To_1518Octets uint64                 `protobuf:"fixed64,14,opt,name=frames_1024_to_1518_octets,json=frames1024To1518Octets,proto3" json:"frames_1024_to_1518_octets,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *OmciEthernetFrameExtendedPm) Reset()         { *m = OmciEthernetFrameExtendedPm{} }
-func (m *OmciEthernetFrameExtendedPm) String() string { return proto.CompactTextString(m) }
-func (*OmciEthernetFrameExtendedPm) ProtoMessage()    {}
+func (x *OmciEthernetFrameExtendedPm) Reset() {
+	*x = OmciEthernetFrameExtendedPm{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciEthernetFrameExtendedPm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciEthernetFrameExtendedPm) ProtoMessage() {}
+
+func (x *OmciEthernetFrameExtendedPm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciEthernetFrameExtendedPm.ProtoReflect.Descriptor instead.
 func (*OmciEthernetFrameExtendedPm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{35}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{35}
 }
 
-func (m *OmciEthernetFrameExtendedPm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Unmarshal(m, b)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Marshal(b, m, deterministic)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciEthernetFrameExtendedPm.Merge(m, src)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_Size() int {
-	return xxx_messageInfo_OmciEthernetFrameExtendedPm.Size(m)
-}
-func (m *OmciEthernetFrameExtendedPm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciEthernetFrameExtendedPm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciEthernetFrameExtendedPm proto.InternalMessageInfo
-
-func (m *OmciEthernetFrameExtendedPm) GetDropEvents() uint64 {
-	if m != nil {
-		return m.DropEvents
+func (x *OmciEthernetFrameExtendedPm) GetDropEvents() uint64 {
+	if x != nil {
+		return x.DropEvents
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetOctets() uint64 {
-	if m != nil {
-		return m.Octets
+func (x *OmciEthernetFrameExtendedPm) GetOctets() uint64 {
+	if x != nil {
+		return x.Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames() uint64 {
-	if m != nil {
-		return m.Frames
+func (x *OmciEthernetFrameExtendedPm) GetFrames() uint64 {
+	if x != nil {
+		return x.Frames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetBroadcastFrames() uint64 {
-	if m != nil {
-		return m.BroadcastFrames
+func (x *OmciEthernetFrameExtendedPm) GetBroadcastFrames() uint64 {
+	if x != nil {
+		return x.BroadcastFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetMulticastFrames() uint64 {
-	if m != nil {
-		return m.MulticastFrames
+func (x *OmciEthernetFrameExtendedPm) GetMulticastFrames() uint64 {
+	if x != nil {
+		return x.MulticastFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetCrcErroredFrames() uint64 {
-	if m != nil {
-		return m.CrcErroredFrames
+func (x *OmciEthernetFrameExtendedPm) GetCrcErroredFrames() uint64 {
+	if x != nil {
+		return x.CrcErroredFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetUndersizeFrames() uint64 {
-	if m != nil {
-		return m.UndersizeFrames
+func (x *OmciEthernetFrameExtendedPm) GetUndersizeFrames() uint64 {
+	if x != nil {
+		return x.UndersizeFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetOversizeFrames() uint64 {
-	if m != nil {
-		return m.OversizeFrames
+func (x *OmciEthernetFrameExtendedPm) GetOversizeFrames() uint64 {
+	if x != nil {
+		return x.OversizeFrames
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_64Octets() uint64 {
-	if m != nil {
-		return m.Frames_64Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_64Octets() uint64 {
+	if x != nil {
+		return x.Frames_64Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_65To_127Octets() uint64 {
-	if m != nil {
-		return m.Frames_65To_127Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_65To_127Octets() uint64 {
+	if x != nil {
+		return x.Frames_65To_127Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_128To_255Octets() uint64 {
-	if m != nil {
-		return m.Frames_128To_255Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_128To_255Octets() uint64 {
+	if x != nil {
+		return x.Frames_128To_255Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_256To_511Octets() uint64 {
-	if m != nil {
-		return m.Frames_256To_511Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_256To_511Octets() uint64 {
+	if x != nil {
+		return x.Frames_256To_511Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_512To_1023Octets() uint64 {
-	if m != nil {
-		return m.Frames_512To_1023Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_512To_1023Octets() uint64 {
+	if x != nil {
+		return x.Frames_512To_1023Octets
 	}
 	return 0
 }
 
-func (m *OmciEthernetFrameExtendedPm) GetFrames_1024To_1518Octets() uint64 {
-	if m != nil {
-		return m.Frames_1024To_1518Octets
+func (x *OmciEthernetFrameExtendedPm) GetFrames_1024To_1518Octets() uint64 {
+	if x != nil {
+		return x.Frames_1024To_1518Octets
 	}
 	return 0
 }
 
 type GetOmciEthernetFrameExtendedPmResponse struct {
+	state                             protoimpl.MessageState                        `protogen:"open.v1"`
 	Upstream                          *OmciEthernetFrameExtendedPm                  `protobuf:"bytes,1,opt,name=upstream,proto3" json:"upstream,omitempty"`
 	Downstream                        *OmciEthernetFrameExtendedPm                  `protobuf:"bytes,2,opt,name=downstream,proto3" json:"downstream,omitempty"`
 	OmciEthernetFrameExtendedPmFormat GetOmciEthernetFrameExtendedPmResponse_Format `protobuf:"varint,3,opt,name=omci_ethernet_frame_extended_pm_format,json=omciEthernetFrameExtendedPmFormat,proto3,enum=extension.GetOmciEthernetFrameExtendedPmResponse_Format" json:"omci_ethernet_frame_extended_pm_format,omitempty"`
-	XXX_NoUnkeyedLiteral              struct{}                                      `json:"-"`
-	XXX_unrecognized                  []byte                                        `json:"-"`
-	XXX_sizecache                     int32                                         `json:"-"`
+	unknownFields                     protoimpl.UnknownFields
+	sizeCache                         protoimpl.SizeCache
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) Reset() {
-	*m = GetOmciEthernetFrameExtendedPmResponse{}
+func (x *GetOmciEthernetFrameExtendedPmResponse) Reset() {
+	*x = GetOmciEthernetFrameExtendedPmResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
-func (m *GetOmciEthernetFrameExtendedPmResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage()    {}
+
+func (x *GetOmciEthernetFrameExtendedPmResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage() {}
+
+func (x *GetOmciEthernetFrameExtendedPmResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOmciEthernetFrameExtendedPmResponse.ProtoReflect.Descriptor instead.
 func (*GetOmciEthernetFrameExtendedPmResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{36}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{36}
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Unmarshal(m, b)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Merge(m, src)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.Size(m)
-}
-func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOmciEthernetFrameExtendedPmResponse proto.InternalMessageInfo
-
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetUpstream() *OmciEthernetFrameExtendedPm {
-	if m != nil {
-		return m.Upstream
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetUpstream() *OmciEthernetFrameExtendedPm {
+	if x != nil {
+		return x.Upstream
 	}
 	return nil
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetDownstream() *OmciEthernetFrameExtendedPm {
-	if m != nil {
-		return m.Downstream
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetDownstream() *OmciEthernetFrameExtendedPm {
+	if x != nil {
+		return x.Downstream
 	}
 	return nil
 }
 
-func (m *GetOmciEthernetFrameExtendedPmResponse) GetOmciEthernetFrameExtendedPmFormat() GetOmciEthernetFrameExtendedPmResponse_Format {
-	if m != nil {
-		return m.OmciEthernetFrameExtendedPmFormat
+func (x *GetOmciEthernetFrameExtendedPmResponse) GetOmciEthernetFrameExtendedPmFormat() GetOmciEthernetFrameExtendedPmResponse_Format {
+	if x != nil {
+		return x.OmciEthernetFrameExtendedPmFormat
 	}
 	return GetOmciEthernetFrameExtendedPmResponse_THIRTY_TWO_BIT
 }
 
 type RxPower struct {
-	OnuSn                string   `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
-	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
-	FailReason           string   `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
-	RxPower              float64  `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OnuSn         string                 `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"` // if the port on which RxPower is measured is not a PON port this will be empty ("") string
+	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+	FailReason    string                 `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower       float64                `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *RxPower) Reset()         { *m = RxPower{} }
-func (m *RxPower) String() string { return proto.CompactTextString(m) }
-func (*RxPower) ProtoMessage()    {}
+func (x *RxPower) Reset() {
+	*x = RxPower{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RxPower) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RxPower) ProtoMessage() {}
+
+func (x *RxPower) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RxPower.ProtoReflect.Descriptor instead.
 func (*RxPower) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{37}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{37}
 }
 
-func (m *RxPower) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RxPower.Unmarshal(m, b)
-}
-func (m *RxPower) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RxPower.Marshal(b, m, deterministic)
-}
-func (m *RxPower) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RxPower.Merge(m, src)
-}
-func (m *RxPower) XXX_Size() int {
-	return xxx_messageInfo_RxPower.Size(m)
-}
-func (m *RxPower) XXX_DiscardUnknown() {
-	xxx_messageInfo_RxPower.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RxPower proto.InternalMessageInfo
-
-func (m *RxPower) GetOnuSn() string {
-	if m != nil {
-		return m.OnuSn
+func (x *RxPower) GetOnuSn() string {
+	if x != nil {
+		return x.OnuSn
 	}
 	return ""
 }
 
-func (m *RxPower) GetStatus() string {
-	if m != nil {
-		return m.Status
+func (x *RxPower) GetStatus() string {
+	if x != nil {
+		return x.Status
 	}
 	return ""
 }
 
-func (m *RxPower) GetFailReason() string {
-	if m != nil {
-		return m.FailReason
+func (x *RxPower) GetFailReason() string {
+	if x != nil {
+		return x.FailReason
 	}
 	return ""
 }
 
-func (m *RxPower) GetRxPower() float64 {
-	if m != nil {
-		return m.RxPower
+func (x *RxPower) GetRxPower() float64 {
+	if x != nil {
+		return x.RxPower
 	}
 	return 0
 }
 
 type GetOltRxPowerResponse struct {
-	PortLabel            string     `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
-	RxPower              []*RxPower `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortLabel     string                 `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	RxPower       []*RxPower             `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOltRxPowerResponse) Reset()         { *m = GetOltRxPowerResponse{} }
-func (m *GetOltRxPowerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOltRxPowerResponse) ProtoMessage()    {}
+func (x *GetOltRxPowerResponse) Reset() {
+	*x = GetOltRxPowerResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOltRxPowerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOltRxPowerResponse) ProtoMessage() {}
+
+func (x *GetOltRxPowerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOltRxPowerResponse.ProtoReflect.Descriptor instead.
 func (*GetOltRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{38}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{38}
 }
 
-func (m *GetOltRxPowerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOltRxPowerResponse.Unmarshal(m, b)
-}
-func (m *GetOltRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOltRxPowerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOltRxPowerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOltRxPowerResponse.Merge(m, src)
-}
-func (m *GetOltRxPowerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOltRxPowerResponse.Size(m)
-}
-func (m *GetOltRxPowerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOltRxPowerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOltRxPowerResponse proto.InternalMessageInfo
-
-func (m *GetOltRxPowerResponse) GetPortLabel() string {
-	if m != nil {
-		return m.PortLabel
+func (x *GetOltRxPowerResponse) GetPortLabel() string {
+	if x != nil {
+		return x.PortLabel
 	}
 	return ""
 }
 
-func (m *GetOltRxPowerResponse) GetRxPower() []*RxPower {
-	if m != nil {
-		return m.RxPower
+func (x *GetOltRxPowerResponse) GetRxPower() []*RxPower {
+	if x != nil {
+		return x.RxPower
 	}
 	return nil
 }
 
 // DEPRECATED
 type GetRxPowerResponse 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"`
-	FailReason           string   `protobuf:"bytes,4,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
-	RxPower              float64  `protobuf:"fixed64,5,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	FailReason    string                 `protobuf:"bytes,4,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower       float64                `protobuf:"fixed64,5,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetRxPowerResponse) Reset()         { *m = GetRxPowerResponse{} }
-func (m *GetRxPowerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetRxPowerResponse) ProtoMessage()    {}
+func (x *GetRxPowerResponse) Reset() {
+	*x = GetRxPowerResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetRxPowerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetRxPowerResponse) ProtoMessage() {}
+
+func (x *GetRxPowerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetRxPowerResponse.ProtoReflect.Descriptor instead.
 func (*GetRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{39}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{39}
 }
 
-func (m *GetRxPowerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetRxPowerResponse.Unmarshal(m, b)
-}
-func (m *GetRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetRxPowerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetRxPowerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetRxPowerResponse.Merge(m, src)
-}
-func (m *GetRxPowerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetRxPowerResponse.Size(m)
-}
-func (m *GetRxPowerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetRxPowerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetRxPowerResponse proto.InternalMessageInfo
-
-func (m *GetRxPowerResponse) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *GetRxPowerResponse) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *GetRxPowerResponse) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *GetRxPowerResponse) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *GetRxPowerResponse) GetStatus() string {
-	if m != nil {
-		return m.Status
+func (x *GetRxPowerResponse) GetStatus() string {
+	if x != nil {
+		return x.Status
 	}
 	return ""
 }
 
-func (m *GetRxPowerResponse) GetFailReason() string {
-	if m != nil {
-		return m.FailReason
+func (x *GetRxPowerResponse) GetFailReason() string {
+	if x != nil {
+		return x.FailReason
 	}
 	return ""
 }
 
-func (m *GetRxPowerResponse) GetRxPower() float64 {
-	if m != nil {
-		return m.RxPower
+func (x *GetRxPowerResponse) GetRxPower() float64 {
+	if x != nil {
+		return x.RxPower
 	}
 	return 0
 }
 
 type GetOnuOmciTxRxStatsRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciTxRxStatsRequest) Reset()         { *m = GetOnuOmciTxRxStatsRequest{} }
-func (m *GetOnuOmciTxRxStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciTxRxStatsRequest) ProtoMessage()    {}
+func (x *GetOnuOmciTxRxStatsRequest) Reset() {
+	*x = GetOnuOmciTxRxStatsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciTxRxStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciTxRxStatsRequest) ProtoMessage() {}
+
+func (x *GetOnuOmciTxRxStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciTxRxStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciTxRxStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{40}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{40}
 }
 
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Unmarshal(m, b)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Merge(m, src)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Size(m)
-}
-func (m *GetOnuOmciTxRxStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciTxRxStatsRequest proto.InternalMessageInfo
-
-func (m *GetOnuOmciTxRxStatsRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuOmciTxRxStatsRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 // see ITU-T G.988 clause 11.2.2
 type GetOnuOmciTxRxStatsResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// OMCI baseline Tx frames with AR bit set
 	BaseTxArFrames uint32 `protobuf:"varint,1,opt,name=base_tx_ar_frames,json=baseTxArFrames,proto3" json:"base_tx_ar_frames,omitempty"`
 	// OMCI baseline Rx frames with AK bit set
@@ -3681,323 +4195,387 @@
 	// Number of retries of requests (tx) due to not received responses (Rx)
 	TxOmciCounterRetries uint32 `protobuf:"varint,9,opt,name=tx_omci_counter_retries,json=txOmciCounterRetries,proto3" json:"tx_omci_counter_retries,omitempty"`
 	// Number of timeouts of requests (tx) due to not received responses (Rx) after configured number of retries
-	TxOmciCounterTimeouts uint32   `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	TxOmciCounterTimeouts uint32 `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
+	unknownFields         protoimpl.UnknownFields
+	sizeCache             protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) Reset()         { *m = GetOnuOmciTxRxStatsResponse{} }
-func (m *GetOnuOmciTxRxStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciTxRxStatsResponse) ProtoMessage()    {}
+func (x *GetOnuOmciTxRxStatsResponse) Reset() {
+	*x = GetOnuOmciTxRxStatsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciTxRxStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciTxRxStatsResponse) ProtoMessage() {}
+
+func (x *GetOnuOmciTxRxStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciTxRxStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciTxRxStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{41}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{41}
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Unmarshal(m, b)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Merge(m, src)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Size(m)
-}
-func (m *GetOnuOmciTxRxStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciTxRxStatsResponse proto.InternalMessageInfo
-
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
-	if m != nil {
-		return m.BaseTxArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
+	if x != nil {
+		return x.BaseTxArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
-	if m != nil {
-		return m.BaseRxAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
+	if x != nil {
+		return x.BaseRxAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
-	if m != nil {
-		return m.BaseTxNoArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
+	if x != nil {
+		return x.BaseTxNoArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
-	if m != nil {
-		return m.BaseRxNoAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
+	if x != nil {
+		return x.BaseRxNoAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
-	if m != nil {
-		return m.ExtTxArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
+	if x != nil {
+		return x.ExtTxArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
-	if m != nil {
-		return m.ExtRxAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
+	if x != nil {
+		return x.ExtRxAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
-	if m != nil {
-		return m.ExtTxNoArFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
+	if x != nil {
+		return x.ExtTxNoArFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
-	if m != nil {
-		return m.ExtRxNoAkFrames
+func (x *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
+	if x != nil {
+		return x.ExtRxNoAkFrames
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
-	if m != nil {
-		return m.TxOmciCounterRetries
+func (x *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
+	if x != nil {
+		return x.TxOmciCounterRetries
 	}
 	return 0
 }
 
-func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
-	if m != nil {
-		return m.TxOmciCounterTimeouts
+func (x *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
+	if x != nil {
+		return x.TxOmciCounterTimeouts
 	}
 	return 0
 }
 
 type GetOnuOmciActiveAlarmsRequest struct {
-	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Empty         *emptypb.Empty         `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciActiveAlarmsRequest) Reset()         { *m = GetOnuOmciActiveAlarmsRequest{} }
-func (m *GetOnuOmciActiveAlarmsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage()    {}
+func (x *GetOnuOmciActiveAlarmsRequest) Reset() {
+	*x = GetOnuOmciActiveAlarmsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciActiveAlarmsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage() {}
+
+func (x *GetOnuOmciActiveAlarmsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciActiveAlarmsRequest.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciActiveAlarmsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{42}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{42}
 }
 
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Unmarshal(m, b)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Merge(m, src)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Size(m)
-}
-func (m *GetOnuOmciActiveAlarmsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciActiveAlarmsRequest proto.InternalMessageInfo
-
-func (m *GetOnuOmciActiveAlarmsRequest) GetEmpty() *empty.Empty {
-	if m != nil {
-		return m.Empty
+func (x *GetOnuOmciActiveAlarmsRequest) GetEmpty() *emptypb.Empty {
+	if x != nil {
+		return x.Empty
 	}
 	return nil
 }
 
 type AlarmData struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	InstanceId           uint32   `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Name                 string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	InstanceId    uint32                 `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Name          string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Description   string                 `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmData) Reset()         { *m = AlarmData{} }
-func (m *AlarmData) String() string { return proto.CompactTextString(m) }
-func (*AlarmData) ProtoMessage()    {}
+func (x *AlarmData) Reset() {
+	*x = AlarmData{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmData) ProtoMessage() {}
+
+func (x *AlarmData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmData.ProtoReflect.Descriptor instead.
 func (*AlarmData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{43}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{43}
 }
 
-func (m *AlarmData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmData.Unmarshal(m, b)
-}
-func (m *AlarmData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmData.Marshal(b, m, deterministic)
-}
-func (m *AlarmData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmData.Merge(m, src)
-}
-func (m *AlarmData) XXX_Size() int {
-	return xxx_messageInfo_AlarmData.Size(m)
-}
-func (m *AlarmData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmData proto.InternalMessageInfo
-
-func (m *AlarmData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *AlarmData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *AlarmData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *AlarmData) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *AlarmData) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
 type GetOnuOmciActiveAlarmsResponse struct {
-	ActiveAlarms         []*AlarmData `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ActiveAlarms  []*AlarmData           `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOnuOmciActiveAlarmsResponse) Reset()         { *m = GetOnuOmciActiveAlarmsResponse{} }
-func (m *GetOnuOmciActiveAlarmsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage()    {}
+func (x *GetOnuOmciActiveAlarmsResponse) Reset() {
+	*x = GetOnuOmciActiveAlarmsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOnuOmciActiveAlarmsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage() {}
+
+func (x *GetOnuOmciActiveAlarmsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOnuOmciActiveAlarmsResponse.ProtoReflect.Descriptor instead.
 func (*GetOnuOmciActiveAlarmsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{44}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{44}
 }
 
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Unmarshal(m, b)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Merge(m, src)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Size(m)
-}
-func (m *GetOnuOmciActiveAlarmsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOnuOmciActiveAlarmsResponse proto.InternalMessageInfo
-
-func (m *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
-	if m != nil {
-		return m.ActiveAlarms
+func (x *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
+	if x != nil {
+		return x.ActiveAlarms
 	}
 	return nil
 }
 
 type GetOffloadedAppsStatisticsRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// The offloaded application whose statistics are requested
-	StatsFor             GetOffloadedAppsStatisticsRequest_OffloadedApp `protobuf:"varint,1,opt,name=statsFor,proto3,enum=extension.GetOffloadedAppsStatisticsRequest_OffloadedApp" json:"statsFor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                       `json:"-"`
-	XXX_unrecognized     []byte                                         `json:"-"`
-	XXX_sizecache        int32                                          `json:"-"`
+	StatsFor      GetOffloadedAppsStatisticsRequest_OffloadedApp `protobuf:"varint,1,opt,name=statsFor,proto3,enum=extension.GetOffloadedAppsStatisticsRequest_OffloadedApp" json:"statsFor,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOffloadedAppsStatisticsRequest) Reset()         { *m = GetOffloadedAppsStatisticsRequest{} }
-func (m *GetOffloadedAppsStatisticsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetOffloadedAppsStatisticsRequest) ProtoMessage()    {}
+func (x *GetOffloadedAppsStatisticsRequest) Reset() {
+	*x = GetOffloadedAppsStatisticsRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsRequest) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsRequest.ProtoReflect.Descriptor instead.
 func (*GetOffloadedAppsStatisticsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{45}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{45}
 }
 
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsRequest.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsRequest proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsRequest) GetStatsFor() GetOffloadedAppsStatisticsRequest_OffloadedApp {
-	if m != nil {
-		return m.StatsFor
+func (x *GetOffloadedAppsStatisticsRequest) GetStatsFor() GetOffloadedAppsStatisticsRequest_OffloadedApp {
+	if x != nil {
+		return x.StatsFor
 	}
 	return GetOffloadedAppsStatisticsRequest_UNDEFINED
 }
 
 type GetOffloadedAppsStatisticsResponse struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Stats:
+	//
 	//	*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats
 	//	*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats
 	//	*GetOffloadedAppsStatisticsResponse_PppoeIaStats
-	Stats                isGetOffloadedAppsStatisticsResponse_Stats `protobuf_oneof:"stats"`
-	XXX_NoUnkeyedLiteral struct{}                                   `json:"-"`
-	XXX_unrecognized     []byte                                     `json:"-"`
-	XXX_sizecache        int32                                      `json:"-"`
+	Stats         isGetOffloadedAppsStatisticsResponse_Stats `protobuf_oneof:"stats"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) Reset()         { *m = GetOffloadedAppsStatisticsResponse{} }
-func (m *GetOffloadedAppsStatisticsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetOffloadedAppsStatisticsResponse) ProtoMessage()    {}
+func (x *GetOffloadedAppsStatisticsResponse) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse.ProtoReflect.Descriptor instead.
 func (*GetOffloadedAppsStatisticsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46}
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse.DiscardUnknown(m)
+func (x *GetOffloadedAppsStatisticsResponse) GetStats() isGetOffloadedAppsStatisticsResponse_Stats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse proto.InternalMessageInfo
+func (x *GetOffloadedAppsStatisticsResponse) GetDhcpv4RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats); ok {
+			return x.Dhcpv4RaStats
+		}
+	}
+	return nil
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) GetDhcpv6RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats); ok {
+			return x.Dhcpv6RaStats
+		}
+	}
+	return nil
+}
+
+func (x *GetOffloadedAppsStatisticsResponse) GetPppoeIaStats() *GetOffloadedAppsStatisticsResponse_PPPoeIAStats {
+	if x != nil {
+		if x, ok := x.Stats.(*GetOffloadedAppsStatisticsResponse_PppoeIaStats); ok {
+			return x.PppoeIaStats
+		}
+	}
+	return nil
+}
 
 type isGetOffloadedAppsStatisticsResponse_Stats interface {
 	isGetOffloadedAppsStatisticsResponse_Stats()
@@ -4024,396 +4602,10 @@
 func (*GetOffloadedAppsStatisticsResponse_PppoeIaStats) isGetOffloadedAppsStatisticsResponse_Stats() {
 }
 
-func (m *GetOffloadedAppsStatisticsResponse) GetStats() isGetOffloadedAppsStatisticsResponse_Stats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetDhcpv4RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats); ok {
-		return x.Dhcpv4RaStats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetDhcpv6RaStats() *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats); ok {
-		return x.Dhcpv6RaStats
-	}
-	return nil
-}
-
-func (m *GetOffloadedAppsStatisticsResponse) GetPppoeIaStats() *GetOffloadedAppsStatisticsResponse_PPPoeIAStats {
-	if x, ok := m.GetStats().(*GetOffloadedAppsStatisticsResponse_PppoeIaStats); ok {
-		return x.PppoeIaStats
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetOffloadedAppsStatisticsResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats)(nil),
-		(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats)(nil),
-		(*GetOffloadedAppsStatisticsResponse_PppoeIaStats)(nil),
-	}
-}
-
-type GetOffloadedAppsStatisticsResponse_DHCPv4RAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-l2-dhcpv4-relay.yang
-	InBadPacketsFromClient           uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
-	InBadPacketsFromServer           uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
-	InPacketsFromClient              uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
-	InPacketsFromServer              uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
-	OutPacketsToServer               uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
-	OutPacketsToClient               uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
-	Option_82InsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=option_82_inserted_packets_to_server,json=option82InsertedPacketsToServer,proto3" json:"option_82_inserted_packets_to_server,omitempty"`
-	Option_82RemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=option_82_removed_packets_to_client,json=option82RemovedPacketsToClient,proto3" json:"option_82_removed_packets_to_client,omitempty"`
-	Option_82NotInsertedToServer     uint32 `protobuf:"varint,9,opt,name=option_82_not_inserted_to_server,json=option82NotInsertedToServer,proto3" json:"option_82_not_inserted_to_server,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_DHCPv4RAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 0}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv4RAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToServer() uint32 {
-	if m != nil {
-		return m.OutPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToClient() uint32 {
-	if m != nil {
-		return m.OutPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_82InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_82RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82NotInsertedToServer() uint32 {
-	if m != nil {
-		return m.Option_82NotInsertedToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
-type GetOffloadedAppsStatisticsResponse_DHCPv6RAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-ldra.yang
-	InBadPacketsFromClient               uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
-	InBadPacketsFromServer               uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
-	Option_17InsertedPacketsToServer     uint32 `protobuf:"varint,3,opt,name=option_17_inserted_packets_to_server,json=option17InsertedPacketsToServer,proto3" json:"option_17_inserted_packets_to_server,omitempty"`
-	Option_17RemovedPacketsToClient      uint32 `protobuf:"varint,4,opt,name=option_17_removed_packets_to_client,json=option17RemovedPacketsToClient,proto3" json:"option_17_removed_packets_to_client,omitempty"`
-	Option_18InsertedPacketsToServer     uint32 `protobuf:"varint,5,opt,name=option_18_inserted_packets_to_server,json=option18InsertedPacketsToServer,proto3" json:"option_18_inserted_packets_to_server,omitempty"`
-	Option_18RemovedPacketsToClient      uint32 `protobuf:"varint,6,opt,name=option_18_removed_packets_to_client,json=option18RemovedPacketsToClient,proto3" json:"option_18_removed_packets_to_client,omitempty"`
-	Option_37InsertedPacketsToServer     uint32 `protobuf:"varint,7,opt,name=option_37_inserted_packets_to_server,json=option37InsertedPacketsToServer,proto3" json:"option_37_inserted_packets_to_server,omitempty"`
-	Option_37RemovedPacketsToClient      uint32 `protobuf:"varint,8,opt,name=option_37_removed_packets_to_client,json=option37RemovedPacketsToClient,proto3" json:"option_37_removed_packets_to_client,omitempty"`
-	OutgoingMtuExceededPacketsFromClient uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_DHCPv6RAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 1}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_DHCPv6RAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InBadPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_17InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_17RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_18InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_18RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37InsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.Option_37InsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37RemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.Option_37RemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
-	if m != nil {
-		return m.OutgoingMtuExceededPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
-type GetOffloadedAppsStatisticsResponse_PPPoeIAStats struct {
-	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent.yang
-	InErrorPacketsFromClient                 uint32 `protobuf:"varint,1,opt,name=in_error_packets_from_client,json=inErrorPacketsFromClient,proto3" json:"in_error_packets_from_client,omitempty"`
-	InErrorPacketsFromServer                 uint32 `protobuf:"varint,2,opt,name=in_error_packets_from_server,json=inErrorPacketsFromServer,proto3" json:"in_error_packets_from_server,omitempty"`
-	InPacketsFromClient                      uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
-	InPacketsFromServer                      uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
-	OutPacketsToServer                       uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
-	OutPacketsToClient                       uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
-	VendorSpecificTagInsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=vendor_specific_tag_inserted_packets_to_server,json=vendorSpecificTagInsertedPacketsToServer,proto3" json:"vendor_specific_tag_inserted_packets_to_server,omitempty"`
-	VendorSpecificTagRemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=vendor_specific_tag_removed_packets_to_client,json=vendorSpecificTagRemovedPacketsToClient,proto3" json:"vendor_specific_tag_removed_packets_to_client,omitempty"`
-	OutgoingMtuExceededPacketsFromClient     uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
-	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
-	AdditionalStats      map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Reset() {
-	*m = GetOffloadedAppsStatisticsResponse_PPPoeIAStats{}
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) String() string {
-	return proto.CompactTextString(m)
-}
-func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoMessage() {}
-func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{46, 2}
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Unmarshal(m, b)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Marshal(b, m, deterministic)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Merge(m, src)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_Size() int {
-	return xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.Size(m)
-}
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetOffloadedAppsStatisticsResponse_PPPoeIAStats proto.InternalMessageInfo
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InErrorPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InErrorPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromClient() uint32 {
-	if m != nil {
-		return m.InPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromServer() uint32 {
-	if m != nil {
-		return m.InPacketsFromServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToServer() uint32 {
-	if m != nil {
-		return m.OutPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToClient() uint32 {
-	if m != nil {
-		return m.OutPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagInsertedPacketsToServer() uint32 {
-	if m != nil {
-		return m.VendorSpecificTagInsertedPacketsToServer
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagRemovedPacketsToClient() uint32 {
-	if m != nil {
-		return m.VendorSpecificTagRemovedPacketsToClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
-	if m != nil {
-		return m.OutgoingMtuExceededPacketsFromClient
-	}
-	return 0
-}
-
-func (m *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetAdditionalStats() map[string]string {
-	if m != nil {
-		return m.AdditionalStats
-	}
-	return nil
-}
-
 type GetValueRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Request:
+	//
 	//	*GetValueRequest_Distance
 	//	*GetValueRequest_UniInfo
 	//	*GetValueRequest_OltPortInfo
@@ -4431,36 +4623,200 @@
 	//	*GetValueRequest_OnuStatsFromOlt
 	//	*GetValueRequest_OltPonStats
 	//	*GetValueRequest_OltNniStats
-	Request              isGetValueRequest_Request `protobuf_oneof:"request"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	Request       isGetValueRequest_Request `protobuf_oneof:"request"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetValueRequest) Reset()         { *m = GetValueRequest{} }
-func (m *GetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*GetValueRequest) ProtoMessage()    {}
+func (x *GetValueRequest) Reset() {
+	*x = GetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetValueRequest) ProtoMessage() {}
+
+func (x *GetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetValueRequest.ProtoReflect.Descriptor instead.
 func (*GetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{47}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{47}
 }
 
-func (m *GetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetValueRequest.Unmarshal(m, b)
-}
-func (m *GetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *GetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetValueRequest.Merge(m, src)
-}
-func (m *GetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_GetValueRequest.Size(m)
-}
-func (m *GetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetValueRequest.DiscardUnknown(m)
+func (x *GetValueRequest) GetRequest() isGetValueRequest_Request {
+	if x != nil {
+		return x.Request
+	}
+	return nil
 }
 
-var xxx_messageInfo_GetValueRequest proto.InternalMessageInfo
+func (x *GetValueRequest) GetDistance() *GetDistanceRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_Distance); ok {
+			return x.Distance
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetUniInfo() *GetOnuUniInfoRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_UniInfo); ok {
+			return x.UniInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltPortInfo() *GetOltPortCounters {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltPortInfo); ok {
+			return x.OltPortInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuOpticalInfo() *GetOnuPonOpticalInfo {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuOpticalInfo); ok {
+			return x.OnuOpticalInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetEthBridgePort() *GetOnuEthernetBridgePortHistory {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_EthBridgePort); ok {
+			return x.EthBridgePort
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetFecHistory() *GetOnuFecHistory {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_FecHistory); ok {
+			return x.FecHistory
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuPonInfo() *GetOnuCountersRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuPonInfo); ok {
+			return x.OnuPonInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuInfo() *GetOmciEthernetFrameExtendedPmRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuInfo); ok {
+			return x.OnuInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetRxPower() *GetRxPowerRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_RxPower); ok {
+			return x.RxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuOmciStats); ok {
+			return x.OnuOmciStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltRxPower); ok {
+			return x.OltRxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuActiveAlarms); ok {
+			return x.OnuActiveAlarms
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OffloadedAppsStats); ok {
+			return x.OffloadedAppsStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuAllocGemStats() *GetOnuAllocGemHistoryRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuAllocGemStats); ok {
+			return x.OnuAllocGemStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOnuStatsFromOlt() *GetOnuStatsFromOltRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OnuStatsFromOlt); ok {
+			return x.OnuStatsFromOlt
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltPonStats() *GetPonStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltPonStats); ok {
+			return x.OltPonStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueRequest) GetOltNniStats() *GetNNIStatsRequest {
+	if x != nil {
+		if x, ok := x.Request.(*GetValueRequest_OltNniStats); ok {
+			return x.OltNniStats
+		}
+	}
+	return nil
+}
 
 type isGetValueRequest_Request interface {
 	isGetValueRequest_Request()
@@ -4475,18 +4831,22 @@
 }
 
 type GetValueRequest_OltPortInfo struct {
+	// Corresponds to PmMetricId.PON_PORT_COUNTERS, PmMetricId.NNI_PORT_COUNTERS
 	OltPortInfo *GetOltPortCounters `protobuf:"bytes,3,opt,name=oltPortInfo,proto3,oneof"`
 }
 
 type GetValueRequest_OnuOpticalInfo struct {
+	// Corresponds to PmMetricId.PON_OPTICAL
 	OnuOpticalInfo *GetOnuPonOpticalInfo `protobuf:"bytes,4,opt,name=onuOpticalInfo,proto3,oneof"`
 }
 
 type GetValueRequest_EthBridgePort struct {
+	// Corresponds to PmMetricId.ETHERNET_BRIDGE_PORT_HISTORY
 	EthBridgePort *GetOnuEthernetBridgePortHistory `protobuf:"bytes,5,opt,name=ethBridgePort,proto3,oneof"`
 }
 
 type GetValueRequest_FecHistory struct {
+	// Corresponds to PmMetricId.FEC_HISTORY
 	FecHistory *GetOnuFecHistory `protobuf:"bytes,6,opt,name=fecHistory,proto3,oneof"`
 }
 
@@ -4499,7 +4859,7 @@
 }
 
 type GetValueRequest_RxPower struct {
-	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"`
+	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"` // This is deprecated
 }
 
 type GetValueRequest_OnuOmciStats struct {
@@ -4568,159 +4928,12 @@
 
 func (*GetValueRequest_OltNniStats) isGetValueRequest_Request() {}
 
-func (m *GetValueRequest) GetRequest() isGetValueRequest_Request {
-	if m != nil {
-		return m.Request
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetDistance() *GetDistanceRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_Distance); ok {
-		return x.Distance
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetUniInfo() *GetOnuUniInfoRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_UniInfo); ok {
-		return x.UniInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltPortInfo() *GetOltPortCounters {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltPortInfo); ok {
-		return x.OltPortInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuOpticalInfo() *GetOnuPonOpticalInfo {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuOpticalInfo); ok {
-		return x.OnuOpticalInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetEthBridgePort() *GetOnuEthernetBridgePortHistory {
-	if x, ok := m.GetRequest().(*GetValueRequest_EthBridgePort); ok {
-		return x.EthBridgePort
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetFecHistory() *GetOnuFecHistory {
-	if x, ok := m.GetRequest().(*GetValueRequest_FecHistory); ok {
-		return x.FecHistory
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuPonInfo() *GetOnuCountersRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuPonInfo); ok {
-		return x.OnuPonInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuInfo() *GetOmciEthernetFrameExtendedPmRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuInfo); ok {
-		return x.OnuInfo
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetRxPower() *GetRxPowerRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_RxPower); ok {
-		return x.RxPower
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuOmciStats); ok {
-		return x.OnuOmciStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltRxPower); ok {
-		return x.OltRxPower
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuActiveAlarms); ok {
-		return x.OnuActiveAlarms
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OffloadedAppsStats); ok {
-		return x.OffloadedAppsStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuAllocGemStats() *GetOnuAllocGemHistoryRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuAllocGemStats); ok {
-		return x.OnuAllocGemStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOnuStatsFromOlt() *GetOnuStatsFromOltRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OnuStatsFromOlt); ok {
-		return x.OnuStatsFromOlt
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltPonStats() *GetPonStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltPonStats); ok {
-		return x.OltPonStats
-	}
-	return nil
-}
-
-func (m *GetValueRequest) GetOltNniStats() *GetNNIStatsRequest {
-	if x, ok := m.GetRequest().(*GetValueRequest_OltNniStats); ok {
-		return x.OltNniStats
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetValueRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetValueRequest_Distance)(nil),
-		(*GetValueRequest_UniInfo)(nil),
-		(*GetValueRequest_OltPortInfo)(nil),
-		(*GetValueRequest_OnuOpticalInfo)(nil),
-		(*GetValueRequest_EthBridgePort)(nil),
-		(*GetValueRequest_FecHistory)(nil),
-		(*GetValueRequest_OnuPonInfo)(nil),
-		(*GetValueRequest_OnuInfo)(nil),
-		(*GetValueRequest_RxPower)(nil),
-		(*GetValueRequest_OnuOmciStats)(nil),
-		(*GetValueRequest_OltRxPower)(nil),
-		(*GetValueRequest_OnuActiveAlarms)(nil),
-		(*GetValueRequest_OffloadedAppsStats)(nil),
-		(*GetValueRequest_OnuAllocGemStats)(nil),
-		(*GetValueRequest_OnuStatsFromOlt)(nil),
-		(*GetValueRequest_OltPonStats)(nil),
-		(*GetValueRequest_OltNniStats)(nil),
-	}
-}
-
 type GetValueResponse struct {
+	state     protoimpl.MessageState       `protogen:"open.v1"`
 	Status    GetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.GetValueResponse_Status" json:"status,omitempty"`
 	ErrReason GetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.GetValueResponse_ErrorReason" json:"errReason,omitempty"`
 	// Types that are valid to be assigned to Response:
+	//
 	//	*GetValueResponse_Distance
 	//	*GetValueResponse_UniInfo
 	//	*GetValueResponse_PortCoutners
@@ -4738,51 +4951,215 @@
 	//	*GetValueResponse_OnuStatsFromOltResponse
 	//	*GetValueResponse_OltPonStatsResponse
 	//	*GetValueResponse_OltNniStatsResponse
-	Response             isGetValueResponse_Response `protobuf_oneof:"response"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	Response      isGetValueResponse_Response `protobuf_oneof:"response"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *GetValueResponse) Reset()         { *m = GetValueResponse{} }
-func (m *GetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*GetValueResponse) ProtoMessage()    {}
+func (x *GetValueResponse) Reset() {
+	*x = GetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetValueResponse) ProtoMessage() {}
+
+func (x *GetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetValueResponse.ProtoReflect.Descriptor instead.
 func (*GetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{48}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{48}
 }
 
-func (m *GetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetValueResponse.Unmarshal(m, b)
-}
-func (m *GetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *GetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetValueResponse.Merge(m, src)
-}
-func (m *GetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_GetValueResponse.Size(m)
-}
-func (m *GetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetValueResponse proto.InternalMessageInfo
-
-func (m *GetValueResponse) GetStatus() GetValueResponse_Status {
-	if m != nil {
-		return m.Status
+func (x *GetValueResponse) GetStatus() GetValueResponse_Status {
+	if x != nil {
+		return x.Status
 	}
 	return GetValueResponse_STATUS_UNDEFINED
 }
 
-func (m *GetValueResponse) GetErrReason() GetValueResponse_ErrorReason {
-	if m != nil {
-		return m.ErrReason
+func (x *GetValueResponse) GetErrReason() GetValueResponse_ErrorReason {
+	if x != nil {
+		return x.ErrReason
 	}
 	return GetValueResponse_REASON_UNDEFINED
 }
 
+func (x *GetValueResponse) GetResponse() isGetValueResponse_Response {
+	if x != nil {
+		return x.Response
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetDistance() *GetDistanceResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_Distance); ok {
+			return x.Distance
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetUniInfo() *GetOnuUniInfoResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_UniInfo); ok {
+			return x.UniInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetPortCoutners() *GetOltPortCountersResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_PortCoutners); ok {
+			return x.PortCoutners
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuOpticalInfo() *GetOnuPonOpticalInfoResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuOpticalInfo); ok {
+			return x.OnuOpticalInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetEthBridgePortInfo() *GetOnuEthernetBridgePortHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_EthBridgePortInfo); ok {
+			return x.EthBridgePortInfo
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetFecHistory() *GetOnuFecHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_FecHistory); ok {
+			return x.FecHistory
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuPonCounters() *GetOnuCountersResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuPonCounters); ok {
+			return x.OnuPonCounters
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuCounters() *GetOmciEthernetFrameExtendedPmResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuCounters); ok {
+			return x.OnuCounters
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetRxPower() *GetRxPowerResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_RxPower); ok {
+			return x.RxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuOmciStats); ok {
+			return x.OnuOmciStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltRxPower); ok {
+			return x.OltRxPower
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuActiveAlarms); ok {
+			return x.OnuActiveAlarms
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OffloadedAppsStats); ok {
+			return x.OffloadedAppsStats
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuAllocGemStatsResponse() *GetOnuAllocGemHistoryResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuAllocGemStatsResponse); ok {
+			return x.OnuAllocGemStatsResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOnuStatsFromOltResponse() *GetOnuStatsFromOltResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OnuStatsFromOltResponse); ok {
+			return x.OnuStatsFromOltResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltPonStatsResponse() *GetPonStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltPonStatsResponse); ok {
+			return x.OltPonStatsResponse
+		}
+	}
+	return nil
+}
+
+func (x *GetValueResponse) GetOltNniStatsResponse() *GetNNIStatsResponse {
+	if x != nil {
+		if x, ok := x.Response.(*GetValueResponse_OltNniStatsResponse); ok {
+			return x.OltNniStatsResponse
+		}
+	}
+	return nil
+}
+
 type isGetValueResponse_Response interface {
 	isGetValueResponse_Response()
 }
@@ -4820,7 +5197,7 @@
 }
 
 type GetValueResponse_RxPower struct {
-	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"`
+	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"` // This is DEPRECATED
 }
 
 type GetValueResponse_OnuOmciStats struct {
@@ -4889,361 +5266,204 @@
 
 func (*GetValueResponse_OltNniStatsResponse) isGetValueResponse_Response() {}
 
-func (m *GetValueResponse) GetResponse() isGetValueResponse_Response {
-	if m != nil {
-		return m.Response
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetDistance() *GetDistanceResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_Distance); ok {
-		return x.Distance
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetUniInfo() *GetOnuUniInfoResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_UniInfo); ok {
-		return x.UniInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetPortCoutners() *GetOltPortCountersResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_PortCoutners); ok {
-		return x.PortCoutners
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuOpticalInfo() *GetOnuPonOpticalInfoResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuOpticalInfo); ok {
-		return x.OnuOpticalInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetEthBridgePortInfo() *GetOnuEthernetBridgePortHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_EthBridgePortInfo); ok {
-		return x.EthBridgePortInfo
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetFecHistory() *GetOnuFecHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_FecHistory); ok {
-		return x.FecHistory
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuPonCounters() *GetOnuCountersResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuPonCounters); ok {
-		return x.OnuPonCounters
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuCounters() *GetOmciEthernetFrameExtendedPmResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuCounters); ok {
-		return x.OnuCounters
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetRxPower() *GetRxPowerResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_RxPower); ok {
-		return x.RxPower
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuOmciStats); ok {
-		return x.OnuOmciStats
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltRxPower); ok {
-		return x.OltRxPower
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuActiveAlarms); ok {
-		return x.OnuActiveAlarms
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOffloadedAppsStats() *GetOffloadedAppsStatisticsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OffloadedAppsStats); ok {
-		return x.OffloadedAppsStats
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuAllocGemStatsResponse() *GetOnuAllocGemHistoryResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuAllocGemStatsResponse); ok {
-		return x.OnuAllocGemStatsResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOnuStatsFromOltResponse() *GetOnuStatsFromOltResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OnuStatsFromOltResponse); ok {
-		return x.OnuStatsFromOltResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltPonStatsResponse() *GetPonStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltPonStatsResponse); ok {
-		return x.OltPonStatsResponse
-	}
-	return nil
-}
-
-func (m *GetValueResponse) GetOltNniStatsResponse() *GetNNIStatsResponse {
-	if x, ok := m.GetResponse().(*GetValueResponse_OltNniStatsResponse); ok {
-		return x.OltNniStatsResponse
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GetValueResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GetValueResponse_Distance)(nil),
-		(*GetValueResponse_UniInfo)(nil),
-		(*GetValueResponse_PortCoutners)(nil),
-		(*GetValueResponse_OnuOpticalInfo)(nil),
-		(*GetValueResponse_EthBridgePortInfo)(nil),
-		(*GetValueResponse_FecHistory)(nil),
-		(*GetValueResponse_OnuPonCounters)(nil),
-		(*GetValueResponse_OnuCounters)(nil),
-		(*GetValueResponse_RxPower)(nil),
-		(*GetValueResponse_OnuOmciStats)(nil),
-		(*GetValueResponse_OltRxPower)(nil),
-		(*GetValueResponse_OnuActiveAlarms)(nil),
-		(*GetValueResponse_OffloadedAppsStats)(nil),
-		(*GetValueResponse_OnuAllocGemStatsResponse)(nil),
-		(*GetValueResponse_OnuStatsFromOltResponse)(nil),
-		(*GetValueResponse_OltPonStatsResponse)(nil),
-		(*GetValueResponse_OltNniStatsResponse)(nil),
-	}
-}
-
 // AppOffloadConfig is the configuration for offloading applications to the OLT and has OLT wide configuration.
 type AppOffloadConfig struct {
-	EnableDHCPv4RA bool `protobuf:"varint,1,opt,name=enableDHCPv4RA,proto3" json:"enableDHCPv4RA,omitempty"`
-	EnableDHCPv6RA bool `protobuf:"varint,2,opt,name=enableDHCPv6RA,proto3" json:"enableDHCPv6RA,omitempty"`
-	EnablePPPoEIA  bool `protobuf:"varint,3,opt,name=enablePPPoEIA,proto3" json:"enablePPPoEIA,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	EnableDHCPv4RA bool                   `protobuf:"varint,1,opt,name=enableDHCPv4RA,proto3" json:"enableDHCPv4RA,omitempty"`
+	EnableDHCPv6RA bool                   `protobuf:"varint,2,opt,name=enableDHCPv6RA,proto3" json:"enableDHCPv6RA,omitempty"`
+	EnablePPPoEIA  bool                   `protobuf:"varint,3,opt,name=enablePPPoEIA,proto3" json:"enablePPPoEIA,omitempty"`
 	// Follows the same as the BBF Access Node Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-subscriber-profiles.yang
-	AccessNodeID         string   `protobuf:"bytes,4,opt,name=accessNodeID,proto3" json:"accessNodeID,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AccessNodeID  string `protobuf:"bytes,4,opt,name=accessNodeID,proto3" json:"accessNodeID,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AppOffloadConfig) Reset()         { *m = AppOffloadConfig{} }
-func (m *AppOffloadConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadConfig) ProtoMessage()    {}
+func (x *AppOffloadConfig) Reset() {
+	*x = AppOffloadConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadConfig) ProtoMessage() {}
+
+func (x *AppOffloadConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadConfig.ProtoReflect.Descriptor instead.
 func (*AppOffloadConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{49}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{49}
 }
 
-func (m *AppOffloadConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadConfig.Merge(m, src)
-}
-func (m *AppOffloadConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadConfig.Size(m)
-}
-func (m *AppOffloadConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadConfig proto.InternalMessageInfo
-
-func (m *AppOffloadConfig) GetEnableDHCPv4RA() bool {
-	if m != nil {
-		return m.EnableDHCPv4RA
+func (x *AppOffloadConfig) GetEnableDHCPv4RA() bool {
+	if x != nil {
+		return x.EnableDHCPv4RA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetEnableDHCPv6RA() bool {
-	if m != nil {
-		return m.EnableDHCPv6RA
+func (x *AppOffloadConfig) GetEnableDHCPv6RA() bool {
+	if x != nil {
+		return x.EnableDHCPv6RA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetEnablePPPoEIA() bool {
-	if m != nil {
-		return m.EnablePPPoEIA
+func (x *AppOffloadConfig) GetEnablePPPoEIA() bool {
+	if x != nil {
+		return x.EnablePPPoEIA
 	}
 	return false
 }
 
-func (m *AppOffloadConfig) GetAccessNodeID() string {
-	if m != nil {
-		return m.AccessNodeID
+func (x *AppOffloadConfig) GetAccessNodeID() string {
+	if x != nil {
+		return x.AccessNodeID
 	}
 	return ""
 }
 
 // AppOffloadOnuConfig has Onu specfic configuration which the OLT runs applications which have been offloaded.
 type AppOffloadOnuConfig struct {
-	OnuDeviceId          string                              `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
-	PerUniInfo           []*AppOffloadOnuConfig_PerUniConfig `protobuf:"bytes,5,rep,name=perUniInfo,proto3" json:"perUniInfo,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
-	XXX_unrecognized     []byte                              `json:"-"`
-	XXX_sizecache        int32                               `json:"-"`
+	state         protoimpl.MessageState              `protogen:"open.v1"`
+	OnuDeviceId   string                              `protobuf:"bytes,1,opt,name=onuDeviceId,proto3" json:"onuDeviceId,omitempty"`
+	PerUniInfo    []*AppOffloadOnuConfig_PerUniConfig `protobuf:"bytes,5,rep,name=perUniInfo,proto3" json:"perUniInfo,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AppOffloadOnuConfig) Reset()         { *m = AppOffloadOnuConfig{} }
-func (m *AppOffloadOnuConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadOnuConfig) ProtoMessage()    {}
+func (x *AppOffloadOnuConfig) Reset() {
+	*x = AppOffloadOnuConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadOnuConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadOnuConfig) ProtoMessage() {}
+
+func (x *AppOffloadOnuConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadOnuConfig.ProtoReflect.Descriptor instead.
 func (*AppOffloadOnuConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{50}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{50}
 }
 
-func (m *AppOffloadOnuConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadOnuConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadOnuConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadOnuConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadOnuConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadOnuConfig.Merge(m, src)
-}
-func (m *AppOffloadOnuConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadOnuConfig.Size(m)
-}
-func (m *AppOffloadOnuConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadOnuConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadOnuConfig proto.InternalMessageInfo
-
-func (m *AppOffloadOnuConfig) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *AppOffloadOnuConfig) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
-func (m *AppOffloadOnuConfig) GetPerUniInfo() []*AppOffloadOnuConfig_PerUniConfig {
-	if m != nil {
-		return m.PerUniInfo
+func (x *AppOffloadOnuConfig) GetPerUniInfo() []*AppOffloadOnuConfig_PerUniConfig {
+	if x != nil {
+		return x.PerUniInfo
 	}
 	return nil
 }
 
-type AppOffloadOnuConfig_PerUniConfig struct {
-	// As per the BBF Agent Remote Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
-	AgentRemoteID string `protobuf:"bytes,2,opt,name=agentRemoteID,proto3" json:"agentRemoteID,omitempty"`
-	// As per the BBF Agent Circuit Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
-	AgentCircuitID string `protobuf:"bytes,3,opt,name=agentCircuitID,proto3" json:"agentCircuitID,omitempty"`
-	// The id of the UNI on the Onu for which this configuration is relevant. The UNI ids are numbered from 0 to n depending on the number of UNI ports on the ONU.
-	OnuUniId             uint32   `protobuf:"varint,4,opt,name=onuUniId,proto3" json:"onuUniId,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) Reset()         { *m = AppOffloadOnuConfig_PerUniConfig{} }
-func (m *AppOffloadOnuConfig_PerUniConfig) String() string { return proto.CompactTextString(m) }
-func (*AppOffloadOnuConfig_PerUniConfig) ProtoMessage()    {}
-func (*AppOffloadOnuConfig_PerUniConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{50, 0}
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Unmarshal(m, b)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Marshal(b, m, deterministic)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Merge(m, src)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_Size() int {
-	return xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.Size(m)
-}
-func (m *AppOffloadOnuConfig_PerUniConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AppOffloadOnuConfig_PerUniConfig proto.InternalMessageInfo
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetAgentRemoteID() string {
-	if m != nil {
-		return m.AgentRemoteID
-	}
-	return ""
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetAgentCircuitID() string {
-	if m != nil {
-		return m.AgentCircuitID
-	}
-	return ""
-}
-
-func (m *AppOffloadOnuConfig_PerUniConfig) GetOnuUniId() uint32 {
-	if m != nil {
-		return m.OnuUniId
-	}
-	return 0
-}
-
 type SetValueRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Request:
+	//
 	//	*SetValueRequest_AlarmConfig
 	//	*SetValueRequest_AppOffloadConfig
 	//	*SetValueRequest_AppOffloadOnuConfig
-	Request              isSetValueRequest_Request `protobuf_oneof:"request"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	Request       isSetValueRequest_Request `protobuf_oneof:"request"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SetValueRequest) Reset()         { *m = SetValueRequest{} }
-func (m *SetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SetValueRequest) ProtoMessage()    {}
+func (x *SetValueRequest) Reset() {
+	*x = SetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetValueRequest) ProtoMessage() {}
+
+func (x *SetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetValueRequest.ProtoReflect.Descriptor instead.
 func (*SetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{51}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{51}
 }
 
-func (m *SetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetValueRequest.Unmarshal(m, b)
-}
-func (m *SetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetValueRequest.Merge(m, src)
-}
-func (m *SetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SetValueRequest.Size(m)
-}
-func (m *SetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetValueRequest.DiscardUnknown(m)
+func (x *SetValueRequest) GetRequest() isSetValueRequest_Request {
+	if x != nil {
+		return x.Request
+	}
+	return nil
 }
 
-var xxx_messageInfo_SetValueRequest proto.InternalMessageInfo
+func (x *SetValueRequest) GetAlarmConfig() *config.AlarmConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AlarmConfig); ok {
+			return x.AlarmConfig
+		}
+	}
+	return nil
+}
+
+func (x *SetValueRequest) GetAppOffloadConfig() *AppOffloadConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AppOffloadConfig); ok {
+			return x.AppOffloadConfig
+		}
+	}
+	return nil
+}
+
+func (x *SetValueRequest) GetAppOffloadOnuConfig() *AppOffloadOnuConfig {
+	if x != nil {
+		if x, ok := x.Request.(*SetValueRequest_AppOffloadOnuConfig); ok {
+			return x.AppOffloadOnuConfig
+		}
+	}
+	return nil
+}
 
 type isSetValueRequest_Request interface {
 	isSetValueRequest_Request()
@@ -5267,796 +5487,1455 @@
 
 func (*SetValueRequest_AppOffloadOnuConfig) isSetValueRequest_Request() {}
 
-func (m *SetValueRequest) GetRequest() isSetValueRequest_Request {
-	if m != nil {
-		return m.Request
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAlarmConfig() *config.AlarmConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AlarmConfig); ok {
-		return x.AlarmConfig
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAppOffloadConfig() *AppOffloadConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AppOffloadConfig); ok {
-		return x.AppOffloadConfig
-	}
-	return nil
-}
-
-func (m *SetValueRequest) GetAppOffloadOnuConfig() *AppOffloadOnuConfig {
-	if x, ok := m.GetRequest().(*SetValueRequest_AppOffloadOnuConfig); ok {
-		return x.AppOffloadOnuConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*SetValueRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*SetValueRequest_AlarmConfig)(nil),
-		(*SetValueRequest_AppOffloadConfig)(nil),
-		(*SetValueRequest_AppOffloadOnuConfig)(nil),
-	}
-}
-
 type SetValueResponse struct {
-	Status               SetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.SetValueResponse_Status" json:"status,omitempty"`
-	ErrReason            SetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.SetValueResponse_ErrorReason" json:"errReason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Status        SetValueResponse_Status      `protobuf:"varint,1,opt,name=status,proto3,enum=extension.SetValueResponse_Status" json:"status,omitempty"`
+	ErrReason     SetValueResponse_ErrorReason `protobuf:"varint,2,opt,name=errReason,proto3,enum=extension.SetValueResponse_ErrorReason" json:"errReason,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SetValueResponse) Reset()         { *m = SetValueResponse{} }
-func (m *SetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SetValueResponse) ProtoMessage()    {}
+func (x *SetValueResponse) Reset() {
+	*x = SetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetValueResponse) ProtoMessage() {}
+
+func (x *SetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetValueResponse.ProtoReflect.Descriptor instead.
 func (*SetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{52}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{52}
 }
 
-func (m *SetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SetValueResponse.Unmarshal(m, b)
-}
-func (m *SetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SetValueResponse.Merge(m, src)
-}
-func (m *SetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SetValueResponse.Size(m)
-}
-func (m *SetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SetValueResponse proto.InternalMessageInfo
-
-func (m *SetValueResponse) GetStatus() SetValueResponse_Status {
-	if m != nil {
-		return m.Status
+func (x *SetValueResponse) GetStatus() SetValueResponse_Status {
+	if x != nil {
+		return x.Status
 	}
 	return SetValueResponse_STATUS_UNDEFINED
 }
 
-func (m *SetValueResponse) GetErrReason() SetValueResponse_ErrorReason {
-	if m != nil {
-		return m.ErrReason
+func (x *SetValueResponse) GetErrReason() SetValueResponse_ErrorReason {
+	if x != nil {
+		return x.ErrReason
 	}
 	return SetValueResponse_REASON_UNDEFINED
 }
 
 type SingleGetValueRequest struct {
-	TargetId             string           `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
-	Request              *GetValueRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TargetId      string                 `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
+	Request       *GetValueRequest       `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleGetValueRequest) Reset()         { *m = SingleGetValueRequest{} }
-func (m *SingleGetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SingleGetValueRequest) ProtoMessage()    {}
+func (x *SingleGetValueRequest) Reset() {
+	*x = SingleGetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleGetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleGetValueRequest) ProtoMessage() {}
+
+func (x *SingleGetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleGetValueRequest.ProtoReflect.Descriptor instead.
 func (*SingleGetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{53}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{53}
 }
 
-func (m *SingleGetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleGetValueRequest.Unmarshal(m, b)
-}
-func (m *SingleGetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleGetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SingleGetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleGetValueRequest.Merge(m, src)
-}
-func (m *SingleGetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SingleGetValueRequest.Size(m)
-}
-func (m *SingleGetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleGetValueRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleGetValueRequest proto.InternalMessageInfo
-
-func (m *SingleGetValueRequest) GetTargetId() string {
-	if m != nil {
-		return m.TargetId
+func (x *SingleGetValueRequest) GetTargetId() string {
+	if x != nil {
+		return x.TargetId
 	}
 	return ""
 }
 
-func (m *SingleGetValueRequest) GetRequest() *GetValueRequest {
-	if m != nil {
-		return m.Request
+func (x *SingleGetValueRequest) GetRequest() *GetValueRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type SingleGetValueResponse struct {
-	Response             *GetValueResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Response      *GetValueResponse      `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleGetValueResponse) Reset()         { *m = SingleGetValueResponse{} }
-func (m *SingleGetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SingleGetValueResponse) ProtoMessage()    {}
+func (x *SingleGetValueResponse) Reset() {
+	*x = SingleGetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleGetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleGetValueResponse) ProtoMessage() {}
+
+func (x *SingleGetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleGetValueResponse.ProtoReflect.Descriptor instead.
 func (*SingleGetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{54}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{54}
 }
 
-func (m *SingleGetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleGetValueResponse.Unmarshal(m, b)
-}
-func (m *SingleGetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleGetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SingleGetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleGetValueResponse.Merge(m, src)
-}
-func (m *SingleGetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SingleGetValueResponse.Size(m)
-}
-func (m *SingleGetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleGetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleGetValueResponse proto.InternalMessageInfo
-
-func (m *SingleGetValueResponse) GetResponse() *GetValueResponse {
-	if m != nil {
-		return m.Response
+func (x *SingleGetValueResponse) GetResponse() *GetValueResponse {
+	if x != nil {
+		return x.Response
 	}
 	return nil
 }
 
 type SingleSetValueRequest struct {
-	TargetId             string           `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
-	Request              *SetValueRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TargetId      string                 `protobuf:"bytes,1,opt,name=targetId,proto3" json:"targetId,omitempty"`
+	Request       *SetValueRequest       `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleSetValueRequest) Reset()         { *m = SingleSetValueRequest{} }
-func (m *SingleSetValueRequest) String() string { return proto.CompactTextString(m) }
-func (*SingleSetValueRequest) ProtoMessage()    {}
+func (x *SingleSetValueRequest) Reset() {
+	*x = SingleSetValueRequest{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleSetValueRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleSetValueRequest) ProtoMessage() {}
+
+func (x *SingleSetValueRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleSetValueRequest.ProtoReflect.Descriptor instead.
 func (*SingleSetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{55}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{55}
 }
 
-func (m *SingleSetValueRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleSetValueRequest.Unmarshal(m, b)
-}
-func (m *SingleSetValueRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleSetValueRequest.Marshal(b, m, deterministic)
-}
-func (m *SingleSetValueRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleSetValueRequest.Merge(m, src)
-}
-func (m *SingleSetValueRequest) XXX_Size() int {
-	return xxx_messageInfo_SingleSetValueRequest.Size(m)
-}
-func (m *SingleSetValueRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleSetValueRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleSetValueRequest proto.InternalMessageInfo
-
-func (m *SingleSetValueRequest) GetTargetId() string {
-	if m != nil {
-		return m.TargetId
+func (x *SingleSetValueRequest) GetTargetId() string {
+	if x != nil {
+		return x.TargetId
 	}
 	return ""
 }
 
-func (m *SingleSetValueRequest) GetRequest() *SetValueRequest {
-	if m != nil {
-		return m.Request
+func (x *SingleSetValueRequest) GetRequest() *SetValueRequest {
+	if x != nil {
+		return x.Request
 	}
 	return nil
 }
 
 type SingleSetValueResponse struct {
-	Response             *SetValueResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Response      *SetValueResponse      `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SingleSetValueResponse) Reset()         { *m = SingleSetValueResponse{} }
-func (m *SingleSetValueResponse) String() string { return proto.CompactTextString(m) }
-func (*SingleSetValueResponse) ProtoMessage()    {}
+func (x *SingleSetValueResponse) Reset() {
+	*x = SingleSetValueResponse{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SingleSetValueResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SingleSetValueResponse) ProtoMessage() {}
+
+func (x *SingleSetValueResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SingleSetValueResponse.ProtoReflect.Descriptor instead.
 func (*SingleSetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{56}
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{56}
 }
 
-func (m *SingleSetValueResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SingleSetValueResponse.Unmarshal(m, b)
-}
-func (m *SingleSetValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SingleSetValueResponse.Marshal(b, m, deterministic)
-}
-func (m *SingleSetValueResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SingleSetValueResponse.Merge(m, src)
-}
-func (m *SingleSetValueResponse) XXX_Size() int {
-	return xxx_messageInfo_SingleSetValueResponse.Size(m)
-}
-func (m *SingleSetValueResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SingleSetValueResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SingleSetValueResponse proto.InternalMessageInfo
-
-func (m *SingleSetValueResponse) GetResponse() *SetValueResponse {
-	if m != nil {
-		return m.Response
+func (x *SingleSetValueResponse) GetResponse() *SetValueResponse {
+	if x != nil {
+		return x.Response
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("extension.ValueType_Type", ValueType_Type_name, ValueType_Type_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_ConfigurationInd", GetOnuUniInfoResponse_ConfigurationInd_name, GetOnuUniInfoResponse_ConfigurationInd_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_AdministrativeState", GetOnuUniInfoResponse_AdministrativeState_name, GetOnuUniInfoResponse_AdministrativeState_value)
-	proto.RegisterEnum("extension.GetOnuUniInfoResponse_OperationalState", GetOnuUniInfoResponse_OperationalState_name, GetOnuUniInfoResponse_OperationalState_value)
-	proto.RegisterEnum("extension.GetOltPortCounters_PortType", GetOltPortCounters_PortType_name, GetOltPortCounters_PortType_value)
-	proto.RegisterEnum("extension.GetOnuEthernetBridgePortHistory_Direction", GetOnuEthernetBridgePortHistory_Direction_name, GetOnuEthernetBridgePortHistory_Direction_value)
-	proto.RegisterEnum("extension.GetOmciEthernetFrameExtendedPmResponse_Format", GetOmciEthernetFrameExtendedPmResponse_Format_name, GetOmciEthernetFrameExtendedPmResponse_Format_value)
-	proto.RegisterEnum("extension.GetOffloadedAppsStatisticsRequest_OffloadedApp", GetOffloadedAppsStatisticsRequest_OffloadedApp_name, GetOffloadedAppsStatisticsRequest_OffloadedApp_value)
-	proto.RegisterEnum("extension.GetValueResponse_Status", GetValueResponse_Status_name, GetValueResponse_Status_value)
-	proto.RegisterEnum("extension.GetValueResponse_ErrorReason", GetValueResponse_ErrorReason_name, GetValueResponse_ErrorReason_value)
-	proto.RegisterEnum("extension.SetValueResponse_Status", SetValueResponse_Status_name, SetValueResponse_Status_value)
-	proto.RegisterEnum("extension.SetValueResponse_ErrorReason", SetValueResponse_ErrorReason_name, SetValueResponse_ErrorReason_value)
-	proto.RegisterType((*ValueSet)(nil), "extension.ValueSet")
-	proto.RegisterType((*ValueType)(nil), "extension.ValueType")
-	proto.RegisterType((*ValueSpecifier)(nil), "extension.ValueSpecifier")
-	proto.RegisterType((*ReturnValues)(nil), "extension.ReturnValues")
-	proto.RegisterType((*GetDistanceRequest)(nil), "extension.GetDistanceRequest")
-	proto.RegisterType((*GetDistanceResponse)(nil), "extension.GetDistanceResponse")
-	proto.RegisterType((*GetOnuUniInfoRequest)(nil), "extension.GetOnuUniInfoRequest")
-	proto.RegisterType((*GetOnuUniInfoResponse)(nil), "extension.GetOnuUniInfoResponse")
-	proto.RegisterType((*GetOltPortCounters)(nil), "extension.GetOltPortCounters")
-	proto.RegisterType((*GetOltPortCountersResponse)(nil), "extension.GetOltPortCountersResponse")
-	proto.RegisterType((*GetOnuPonOpticalInfo)(nil), "extension.GetOnuPonOpticalInfo")
-	proto.RegisterType((*GetOnuPonOpticalInfoResponse)(nil), "extension.GetOnuPonOpticalInfoResponse")
-	proto.RegisterType((*GetOnuEthernetBridgePortHistory)(nil), "extension.GetOnuEthernetBridgePortHistory")
-	proto.RegisterType((*GetOnuEthernetBridgePortHistoryResponse)(nil), "extension.GetOnuEthernetBridgePortHistoryResponse")
-	proto.RegisterType((*GetOnuAllocGemHistoryRequest)(nil), "extension.GetOnuAllocGemHistoryRequest")
-	proto.RegisterType((*OnuGemPortHistoryData)(nil), "extension.OnuGemPortHistoryData")
-	proto.RegisterType((*OnuAllocHistoryData)(nil), "extension.OnuAllocHistoryData")
-	proto.RegisterType((*OnuAllocGemHistoryData)(nil), "extension.OnuAllocGemHistoryData")
-	proto.RegisterType((*GetOnuAllocGemHistoryResponse)(nil), "extension.GetOnuAllocGemHistoryResponse")
-	proto.RegisterType((*GetOnuFecHistory)(nil), "extension.GetOnuFecHistory")
-	proto.RegisterType((*GetOnuFecHistoryResponse)(nil), "extension.GetOnuFecHistoryResponse")
-	proto.RegisterType((*GetOnuCountersRequest)(nil), "extension.GetOnuCountersRequest")
-	proto.RegisterType((*GetOmciEthernetFrameExtendedPmRequest)(nil), "extension.GetOmciEthernetFrameExtendedPmRequest")
-	proto.RegisterType((*GetRxPowerRequest)(nil), "extension.GetRxPowerRequest")
-	proto.RegisterType((*GetOltRxPowerRequest)(nil), "extension.GetOltRxPowerRequest")
-	proto.RegisterType((*GetPonStatsRequest)(nil), "extension.GetPonStatsRequest")
-	proto.RegisterType((*GetPonStatsResponse)(nil), "extension.GetPonStatsResponse")
-	proto.RegisterType((*GetNNIStatsRequest)(nil), "extension.GetNNIStatsRequest")
-	proto.RegisterType((*GetNNIStatsResponse)(nil), "extension.GetNNIStatsResponse")
-	proto.RegisterType((*GetOnuStatsFromOltRequest)(nil), "extension.GetOnuStatsFromOltRequest")
-	proto.RegisterType((*OnuGemPortInfoFromOlt)(nil), "extension.OnuGemPortInfoFromOlt")
-	proto.RegisterType((*OnuAllocIdInfoFromOlt)(nil), "extension.OnuAllocIdInfoFromOlt")
-	proto.RegisterType((*OnuAllocGemStatsFromOltResponse)(nil), "extension.OnuAllocGemStatsFromOltResponse")
-	proto.RegisterType((*GetOnuStatsFromOltResponse)(nil), "extension.GetOnuStatsFromOltResponse")
-	proto.RegisterType((*GetOnuCountersResponse)(nil), "extension.GetOnuCountersResponse")
-	proto.RegisterType((*OmciEthernetFrameExtendedPm)(nil), "extension.OmciEthernetFrameExtendedPm")
-	proto.RegisterType((*GetOmciEthernetFrameExtendedPmResponse)(nil), "extension.GetOmciEthernetFrameExtendedPmResponse")
-	proto.RegisterType((*RxPower)(nil), "extension.RxPower")
-	proto.RegisterType((*GetOltRxPowerResponse)(nil), "extension.GetOltRxPowerResponse")
-	proto.RegisterType((*GetRxPowerResponse)(nil), "extension.GetRxPowerResponse")
-	proto.RegisterType((*GetOnuOmciTxRxStatsRequest)(nil), "extension.GetOnuOmciTxRxStatsRequest")
-	proto.RegisterType((*GetOnuOmciTxRxStatsResponse)(nil), "extension.GetOnuOmciTxRxStatsResponse")
-	proto.RegisterType((*GetOnuOmciActiveAlarmsRequest)(nil), "extension.GetOnuOmciActiveAlarmsRequest")
-	proto.RegisterType((*AlarmData)(nil), "extension.AlarmData")
-	proto.RegisterType((*GetOnuOmciActiveAlarmsResponse)(nil), "extension.GetOnuOmciActiveAlarmsResponse")
-	proto.RegisterType((*GetOffloadedAppsStatisticsRequest)(nil), "extension.GetOffloadedAppsStatisticsRequest")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse)(nil), "extension.GetOffloadedAppsStatisticsResponse")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetOffloadedAppsStatisticsResponse_PPPoeIAStats)(nil), "extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats")
-	proto.RegisterMapType((map[string]string)(nil), "extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry")
-	proto.RegisterType((*GetValueRequest)(nil), "extension.GetValueRequest")
-	proto.RegisterType((*GetValueResponse)(nil), "extension.GetValueResponse")
-	proto.RegisterType((*AppOffloadConfig)(nil), "extension.AppOffloadConfig")
-	proto.RegisterType((*AppOffloadOnuConfig)(nil), "extension.AppOffloadOnuConfig")
-	proto.RegisterType((*AppOffloadOnuConfig_PerUniConfig)(nil), "extension.AppOffloadOnuConfig.PerUniConfig")
-	proto.RegisterType((*SetValueRequest)(nil), "extension.SetValueRequest")
-	proto.RegisterType((*SetValueResponse)(nil), "extension.SetValueResponse")
-	proto.RegisterType((*SingleGetValueRequest)(nil), "extension.SingleGetValueRequest")
-	proto.RegisterType((*SingleGetValueResponse)(nil), "extension.SingleGetValueResponse")
-	proto.RegisterType((*SingleSetValueRequest)(nil), "extension.SingleSetValueRequest")
-	proto.RegisterType((*SingleSetValueResponse)(nil), "extension.SingleSetValueResponse")
+type GetOffloadedAppsStatisticsResponse_DHCPv4RAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-l2-dhcpv4-relay.yang
+	InBadPacketsFromClient           uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
+	InBadPacketsFromServer           uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
+	InPacketsFromClient              uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
+	InPacketsFromServer              uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
+	OutPacketsToServer               uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
+	OutPacketsToClient               uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
+	Option_82InsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=option_82_inserted_packets_to_server,json=option82InsertedPacketsToServer,proto3" json:"option_82_inserted_packets_to_server,omitempty"`
+	Option_82RemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=option_82_removed_packets_to_client,json=option82RemovedPacketsToClient,proto3" json:"option_82_removed_packets_to_client,omitempty"`
+	Option_82NotInsertedToServer     uint32 `protobuf:"varint,9,opt,name=option_82_not_inserted_to_server,json=option82NotInsertedToServer,proto3" json:"option_82_not_inserted_to_server,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func init() { proto.RegisterFile("voltha_protos/extensions.proto", fileDescriptor_7ecf6e9799a9202d) }
-
-var fileDescriptor_7ecf6e9799a9202d = []byte{
-	// 5317 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7c, 0xcb, 0x6f, 0x23, 0x49,
-	0x72, 0xb7, 0x48, 0x49, 0x14, 0x19, 0x14, 0x25, 0x2a, 0xf5, 0x68, 0x4a, 0xea, 0xd7, 0x70, 0xe7,
-	0xd1, 0xb3, 0xdf, 0x8c, 0xba, 0xc5, 0x96, 0xd4, 0x9a, 0xde, 0xd9, 0xfd, 0x96, 0x94, 0x28, 0x91,
-	0x5f, 0x77, 0x53, 0x9c, 0x24, 0x35, 0x8f, 0xfd, 0xe0, 0xad, 0x2d, 0xb1, 0x52, 0xea, 0x42, 0x93,
-	0x95, 0x74, 0x55, 0x51, 0xab, 0x1e, 0xc3, 0x37, 0xdf, 0xd6, 0x3e, 0x19, 0x30, 0x7c, 0xf1, 0xcd,
-	0x17, 0x03, 0x36, 0x7c, 0xd8, 0x83, 0xe1, 0xeb, 0xc2, 0x47, 0xff, 0x13, 0x86, 0x0f, 0x3e, 0x1b,
-	0xb0, 0x01, 0xc3, 0x06, 0x0c, 0x23, 0x5f, 0x55, 0x59, 0xc5, 0xa2, 0xd4, 0x9a, 0x5d, 0xaf, 0x01,
-	0x5f, 0x66, 0x94, 0xf1, 0xf8, 0x65, 0x64, 0x56, 0x44, 0x64, 0x46, 0x66, 0xb2, 0xe1, 0xfe, 0x25,
-	0xed, 0xfb, 0xaf, 0x4d, 0x63, 0xe8, 0x52, 0x9f, 0x7a, 0x8f, 0xc9, 0x95, 0x4f, 0x1c, 0xcf, 0xa6,
-	0x8e, 0xb7, 0xc5, 0x29, 0x28, 0x17, 0x50, 0x36, 0xc6, 0x45, 0x8d, 0x1e, 0x75, 0xce, 0xed, 0x0b,
-	0x21, 0xba, 0xb1, 0x79, 0x41, 0xe9, 0x45, 0x9f, 0x3c, 0xe6, 0xad, 0xb3, 0xd1, 0xf9, 0x63, 0x32,
-	0x18, 0xfa, 0x6f, 0x25, 0x73, 0x23, 0xaa, 0xdc, 0xa3, 0x83, 0x01, 0x75, 0x04, 0xaf, 0xfc, 0x3b,
-	0x90, 0xfd, 0xd2, 0xec, 0x8f, 0x48, 0x87, 0xf8, 0x68, 0x01, 0xd2, 0xb6, 0x55, 0x4a, 0x3d, 0x4c,
-	0x3d, 0xca, 0xe1, 0xb4, 0x6d, 0xa1, 0x7d, 0x98, 0x37, 0xfb, 0xa6, 0x3b, 0x90, 0x5d, 0x95, 0xd2,
-	0x0f, 0x53, 0x8f, 0xf2, 0x95, 0xe5, 0x2d, 0xd9, 0x73, 0x95, 0xf1, 0x0e, 0xf8, 0xdf, 0x8d, 0x29,
-	0x9c, 0x37, 0xc3, 0x66, 0x6d, 0x0e, 0x66, 0x2f, 0x19, 0x6a, 0xf9, 0x13, 0xc8, 0x71, 0xf8, 0xee,
-	0xdb, 0x21, 0x29, 0x3f, 0x80, 0x19, 0xf6, 0x7f, 0x94, 0x83, 0xd9, 0xfa, 0xab, 0x76, 0xf7, 0x9b,
-	0xe2, 0x14, 0x9a, 0x87, 0xec, 0x61, 0xb3, 0xd3, 0xad, 0xb6, 0x0e, 0xea, 0xc5, 0x54, 0xf9, 0x0b,
-	0x58, 0x10, 0xc6, 0x0c, 0x49, 0xcf, 0x3e, 0xb7, 0x89, 0x3b, 0x66, 0xd2, 0x63, 0x09, 0xcc, 0x6d,
-	0x59, 0xa8, 0xac, 0x6f, 0x05, 0x53, 0xb4, 0x15, 0xf4, 0xb3, 0xc5, 0xfe, 0x83, 0xa5, 0x01, 0x3e,
-	0xcc, 0x63, 0xe2, 0x8f, 0x5c, 0x87, 0xb3, 0x3d, 0x54, 0x84, 0xe9, 0x0e, 0xf1, 0x39, 0x62, 0x01,
-	0xb3, 0x3f, 0xd1, 0x43, 0xc8, 0x9f, 0x3a, 0xde, 0x68, 0x38, 0xa4, 0xae, 0x4f, 0x2c, 0x0e, 0x5c,
-	0xc0, 0x3a, 0x09, 0xad, 0xc0, 0x6c, 0xdd, 0x75, 0xa9, 0x5b, 0x9a, 0xe6, 0x3c, 0xd1, 0x40, 0x1b,
-	0x90, 0x3d, 0xb4, 0x3d, 0xdf, 0x74, 0x7a, 0xa4, 0x34, 0xc3, 0x19, 0x41, 0xbb, 0xbc, 0x07, 0xe8,
-	0x98, 0xf8, 0xaa, 0x89, 0xc9, 0xef, 0x8e, 0x88, 0xc7, 0x7b, 0xa2, 0xce, 0xe8, 0x90, 0x5c, 0xda,
-	0x3d, 0xd2, 0x54, 0xa3, 0xd2, 0x49, 0xe5, 0x6d, 0x58, 0x8e, 0xe8, 0x79, 0x43, 0xea, 0x78, 0x84,
-	0x75, 0x65, 0xa9, 0xae, 0x84, 0xe5, 0x41, 0xbb, 0x5c, 0x81, 0x95, 0x63, 0xe2, 0x9f, 0x38, 0xa3,
-	0x53, 0xc7, 0x6e, 0x3a, 0xe7, 0x54, 0x75, 0xb6, 0x01, 0xd9, 0x11, 0xa3, 0x58, 0xe4, 0x4a, 0xe9,
-	0xa8, 0x76, 0xf9, 0x1f, 0x66, 0x60, 0x35, 0xa6, 0x24, 0x7b, 0x6a, 0x43, 0xd6, 0xb4, 0x06, 0x1d,
-	0xdf, 0xf4, 0x45, 0x4f, 0x0b, 0x95, 0x1d, 0x6d, 0x8a, 0x13, 0x75, 0xb6, 0xaa, 0xd6, 0xc0, 0x76,
-	0x6c, 0xcf, 0x77, 0x4d, 0xdf, 0xbe, 0x24, 0x5c, 0x17, 0x07, 0x28, 0xe8, 0x04, 0x72, 0x74, 0x48,
-	0x5c, 0x01, 0x29, 0xbe, 0xda, 0xf6, 0x8d, 0x90, 0x27, 0x43, 0xc2, 0xd0, 0xa8, 0x63, 0xf6, 0x05,
-	0x5e, 0x88, 0xc1, 0x00, 0x85, 0x03, 0x36, 0x1d, 0x8b, 0x7f, 0x91, 0x77, 0x01, 0x14, 0x7e, 0x39,
-	0x12, 0xa0, 0x4d, 0xc7, 0xc2, 0x21, 0x46, 0xf9, 0x57, 0x29, 0x28, 0xc6, 0xf9, 0x08, 0x20, 0x73,
-	0xda, 0x7a, 0x71, 0xf2, 0x55, 0xab, 0x38, 0x85, 0x10, 0x2c, 0x74, 0xeb, 0x2d, 0xa3, 0x56, 0xed,
-	0xd4, 0x8d, 0xae, 0x71, 0x74, 0xf8, 0x75, 0x31, 0x85, 0xd6, 0x00, 0x35, 0x4e, 0x5b, 0x87, 0xb8,
-	0x7e, 0xa8, 0xd3, 0xd3, 0xa8, 0x04, 0x2b, 0xc7, 0xcd, 0xe3, 0x6a, 0xad, 0xd9, 0x35, 0xea, 0xdd,
-	0x46, 0x1d, 0xb7, 0xea, 0x82, 0x33, 0xcd, 0x34, 0x18, 0xca, 0x71, 0x94, 0x3e, 0x13, 0x43, 0x6f,
-	0x1c, 0x7e, 0x5d, 0x9c, 0x4d, 0x40, 0x67, 0xf4, 0x4c, 0x22, 0x3a, 0xe3, 0xcc, 0x95, 0x8f, 0x61,
-	0x39, 0xe1, 0x3b, 0x30, 0xa0, 0xea, 0xe1, 0xab, 0x4e, 0xb7, 0xda, 0xad, 0x1b, 0xa7, 0xad, 0xc3,
-	0xfa, 0x51, 0xb3, 0x55, 0x3f, 0x2c, 0x4e, 0xb1, 0xe1, 0xbd, 0x3c, 0x39, 0x78, 0x51, 0x3f, 0x2c,
-	0xa6, 0x58, 0x0c, 0x9e, 0xb6, 0x64, 0x2b, 0x5d, 0x3e, 0x82, 0x62, 0x7c, 0xf6, 0xd1, 0x1d, 0x58,
-	0x3e, 0x69, 0xd7, 0xf1, 0x38, 0x4c, 0x1e, 0xe6, 0xea, 0xad, 0x6a, 0xed, 0xa5, 0xc2, 0x39, 0x6c,
-	0x76, 0x44, 0x2b, 0x5d, 0xfe, 0x9b, 0x14, 0x8f, 0x81, 0x93, 0xbe, 0xdf, 0xa6, 0xae, 0x7f, 0x40,
-	0x47, 0x8e, 0x4f, 0x5c, 0x0f, 0xad, 0x41, 0x86, 0x45, 0x55, 0x8b, 0x4a, 0xa7, 0x94, 0x2d, 0x54,
-	0x83, 0x2c, 0xfb, 0x8b, 0x85, 0xae, 0xf4, 0x92, 0x0f, 0x63, 0x1f, 0x35, 0x0a, 0xb4, 0xd5, 0x96,
-	0xd2, 0x38, 0xd0, 0x2b, 0xd7, 0x21, 0xab, 0xa8, 0xa8, 0x08, 0xf3, 0xec, 0x6f, 0xe3, 0xb4, 0xf5,
-	0xa2, 0x25, 0xbe, 0xe2, 0x2a, 0x2c, 0x71, 0x4a, 0x30, 0x71, 0xad, 0x56, 0xb3, 0x98, 0x0a, 0x04,
-	0xdb, 0x27, 0x2d, 0xe3, 0xe4, 0x65, 0xb7, 0x98, 0x2e, 0xff, 0xfd, 0x34, 0x6c, 0x8c, 0x77, 0x18,
-	0x84, 0x48, 0x09, 0xe6, 0xfc, 0xab, 0xda, 0x5b, 0x9f, 0x78, 0x7c, 0x08, 0x33, 0x58, 0x35, 0x19,
-	0xc7, 0x95, 0x9c, 0xb4, 0xe0, 0xc8, 0x26, 0xba, 0x0b, 0x39, 0xff, 0xaa, 0x6d, 0xf6, 0xde, 0x10,
-	0xdf, 0xe3, 0x3e, 0x3b, 0x83, 0x43, 0x02, 0xe3, 0xba, 0x01, 0x77, 0x46, 0x70, 0x03, 0x02, 0xfa,
-	0x10, 0x16, 0xfc, 0x2b, 0x9e, 0x72, 0x94, 0xc8, 0x2c, 0x17, 0x89, 0x51, 0x99, 0x9c, 0x1b, 0x95,
-	0xcb, 0x08, 0x39, 0x77, 0x4c, 0xce, 0xbf, 0xaa, 0xf5, 0x4c, 0xcf, 0x57, 0x72, 0x73, 0x0a, 0x4f,
-	0xa7, 0x0a, 0xbc, 0x88, 0x5c, 0x56, 0xe1, 0xc5, 0xe5, 0xfc, 0xab, 0x53, 0x5d, 0x2e, 0xa7, 0xf0,
-	0x4e, 0xc7, 0xf0, 0x22, 0x72, 0xa0, 0xf0, 0x4e, 0xc7, 0xf0, 0x5e, 0xe9, 0x72, 0x79, 0x85, 0xf7,
-	0x6a, 0x0c, 0x2f, 0x22, 0x37, 0xaf, 0xf0, 0x74, 0x6a, 0xf9, 0x50, 0x25, 0xc8, 0x36, 0x75, 0x4e,
-	0x86, 0xbe, 0xdd, 0x33, 0xfb, 0x2c, 0x35, 0xa0, 0x4f, 0x60, 0x96, 0x2f, 0x92, 0xfc, 0x2b, 0xe6,
-	0x2b, 0x6b, 0x5b, 0x62, 0x09, 0xdd, 0x52, 0x4b, 0xe8, 0x56, 0x9d, 0x71, 0xb1, 0x10, 0x2a, 0xff,
-	0x41, 0x1a, 0xee, 0x26, 0xc1, 0x04, 0x6e, 0xf1, 0x7d, 0x28, 0x0e, 0xe9, 0xcf, 0x89, 0x7b, 0x44,
-	0x88, 0xf5, 0x25, 0xed, 0xfb, 0xe6, 0x85, 0xc8, 0xa0, 0x69, 0x3c, 0x46, 0x47, 0x15, 0x58, 0x71,
-	0x49, 0x8f, 0xd8, 0x97, 0xc4, 0x92, 0x50, 0x6d, 0x26, 0xc2, 0xbd, 0x26, 0x8d, 0x13, 0x79, 0x68,
-	0x0f, 0xd6, 0x06, 0xc4, 0x54, 0x5d, 0xbf, 0x34, 0x47, 0x4e, 0xef, 0xb5, 0xd0, 0x9a, 0xe6, 0x5a,
-	0x13, 0xb8, 0xcc, 0xae, 0xbe, 0xe9, 0x11, 0xb7, 0x66, 0x9b, 0xde, 0xc1, 0xc8, 0x75, 0x89, 0xe3,
-	0x73, 0x1f, 0x4b, 0xe3, 0x31, 0x3a, 0x5b, 0xa0, 0x7c, 0x32, 0xe0, 0xd1, 0x3f, 0x72, 0x09, 0xf7,
-	0xb3, 0x34, 0xd6, 0x49, 0xe5, 0xbf, 0x4e, 0xc1, 0x03, 0x31, 0x0d, 0x75, 0xff, 0x35, 0x71, 0x1d,
-	0xe2, 0xd7, 0x5c, 0xdb, 0xba, 0x20, 0x2c, 0x52, 0x1a, 0xb6, 0xe7, 0x53, 0xf7, 0x2d, 0xc2, 0x90,
-	0xb3, 0x6c, 0x97, 0xf4, 0x58, 0x06, 0x99, 0xb8, 0x88, 0x4c, 0x54, 0xdf, 0x3a, 0x54, 0xba, 0x38,
-	0x84, 0x29, 0xef, 0x43, 0x2e, 0xa0, 0xa3, 0x02, 0xe4, 0xf4, 0x24, 0xc4, 0xf2, 0x57, 0xbb, 0xd3,
-	0xc5, 0xf5, 0xea, 0xab, 0x62, 0x0a, 0x2d, 0x00, 0x1c, 0x9e, 0x7c, 0xd5, 0x92, 0xed, 0x74, 0xf9,
-	0x8f, 0x67, 0xe1, 0xa3, 0x1b, 0xba, 0x0c, 0xbe, 0xe1, 0x7d, 0x00, 0xcb, 0xa5, 0xc3, 0xfa, 0x25,
-	0x71, 0x7c, 0x4f, 0x26, 0x28, 0x8d, 0xc2, 0x92, 0x17, 0xed, 0xf9, 0xcc, 0xd5, 0xc4, 0x2e, 0x41,
-	0xb6, 0x58, 0xe0, 0x0f, 0xb5, 0xe0, 0x2e, 0x60, 0xd5, 0x64, 0xb3, 0x7f, 0xe6, 0x52, 0xd3, 0xd2,
-	0xdd, 0x54, 0x6c, 0x16, 0xc6, 0xe8, 0x4c, 0x76, 0x30, 0xea, 0xb3, 0x0f, 0x18, 0xca, 0xce, 0x0a,
-	0xd9, 0x38, 0x1d, 0x7d, 0x02, 0x4b, 0x3d, 0xb7, 0xc7, 0xe3, 0x9a, 0x58, 0x7a, 0xbc, 0x17, 0xf0,
-	0x38, 0x83, 0x21, 0x8f, 0x1c, 0x8b, 0xb8, 0x9e, 0xfd, 0x2d, 0xd1, 0x83, 0xbe, 0x80, 0xc7, 0xe8,
-	0xe8, 0x11, 0x2c, 0xd2, 0xcb, 0xa8, 0x68, 0x96, 0x8b, 0xc6, 0xc9, 0x4c, 0x52, 0x0e, 0x73, 0x6f,
-	0x47, 0x4e, 0x4b, 0x4e, 0x48, 0xc6, 0xc8, 0xcc, 0xdf, 0x15, 0x69, 0xb7, 0x4b, 0xb7, 0x2b, 0xcf,
-	0xa4, 0x38, 0x70, 0xf1, 0x44, 0x1e, 0xda, 0x81, 0x55, 0x49, 0xdf, 0xae, 0xec, 0x77, 0x69, 0x65,
-	0x77, 0xf7, 0x44, 0x28, 0xe5, 0xb9, 0x52, 0x32, 0x53, 0xd3, 0xaa, 0xec, 0xee, 0x75, 0xe9, 0xee,
-	0xf6, 0xb6, 0xec, 0x6a, 0x3e, 0xa2, 0x15, 0x65, 0xb2, 0xd8, 0x92, 0x8c, 0xdd, 0xed, 0x4a, 0x97,
-	0x6e, 0x3f, 0xa9, 0x3c, 0x95, 0x6a, 0x05, 0xae, 0x36, 0x81, 0x8b, 0xf6, 0xe1, 0x8e, 0x32, 0xe3,
-	0x49, 0x65, 0xa7, 0x4b, 0xb7, 0x77, 0xb7, 0xf7, 0xa5, 0xe2, 0x02, 0x57, 0x9c, 0xc4, 0x2e, 0xbf,
-	0x54, 0xd9, 0xa4, 0xda, 0xef, 0xd3, 0xde, 0x31, 0x19, 0x04, 0xae, 0x28, 0x76, 0x6f, 0xb7, 0x4b,
-	0x4e, 0xbf, 0x9c, 0x86, 0xd5, 0x13, 0x67, 0x74, 0x4c, 0x06, 0x9a, 0x57, 0x1f, 0x9a, 0xbe, 0xc9,
-	0xb6, 0xae, 0x17, 0x64, 0x20, 0x37, 0x9b, 0x05, 0x2c, 0x1a, 0xec, 0x7b, 0xf8, 0xae, 0xe9, 0x78,
-	0x03, 0xdb, 0xf7, 0x89, 0x75, 0x5c, 0x7f, 0x75, 0xe4, 0x9a, 0x03, 0xa2, 0xbc, 0x3a, 0x91, 0xc7,
-	0x3c, 0x4e, 0xe5, 0xa5, 0x50, 0x41, 0x78, 0xfb, 0x38, 0x03, 0xed, 0x85, 0x19, 0xae, 0x6d, 0xbe,
-	0xed, 0x53, 0xd3, 0x12, 0xeb, 0x22, 0xf7, 0xfd, 0x5a, 0xba, 0x94, 0xc2, 0x89, 0x7c, 0xf4, 0x39,
-	0xdc, 0xd1, 0x7a, 0x8f, 0xa8, 0xce, 0x06, 0xaa, 0x93, 0x44, 0xd0, 0x13, 0x58, 0x26, 0x4e, 0xcf,
-	0x7d, 0x3b, 0x64, 0x69, 0xe2, 0x05, 0x79, 0xcb, 0xc3, 0x40, 0xc5, 0x45, 0x12, 0x0b, 0x7d, 0x06,
-	0xeb, 0xca, 0x0e, 0x63, 0x28, 0xa0, 0x8c, 0x33, 0x86, 0x65, 0xec, 0xed, 0xf0, 0x10, 0xc9, 0xe0,
-	0xb5, 0x24, 0x43, 0xf7, 0x76, 0xd0, 0xff, 0x85, 0xbb, 0x9a, 0x1d, 0xe3, 0xda, 0x59, 0xae, 0xbd,
-	0x3e, 0xc1, 0xd6, 0xbd, 0x9d, 0x72, 0x13, 0x96, 0x95, 0x03, 0xe8, 0x9f, 0xac, 0x04, 0x73, 0x26,
-	0xa3, 0x05, 0x1f, 0x4d, 0x35, 0xe3, 0xfb, 0x8b, 0x42, 0xb0, 0xbf, 0x28, 0xff, 0x79, 0x0a, 0xd6,
-	0xc6, 0x9d, 0x89, 0xc3, 0x1d, 0xc1, 0x02, 0x95, 0x9c, 0xa6, 0xc5, 0x56, 0x2c, 0xe9, 0x52, 0xf7,
-	0xb5, 0x94, 0x9c, 0x60, 0x06, 0x8e, 0x69, 0xa1, 0x1a, 0xe4, 0x2f, 0x84, 0x7f, 0x71, 0x90, 0xf4,
-	0xc3, 0xe9, 0x47, 0xf9, 0xca, 0xc3, 0x28, 0xc8, 0xb8, 0x03, 0x62, 0x5d, 0xa9, 0xfc, 0x2d, 0xdc,
-	0x9b, 0xe0, 0xf5, 0x32, 0x01, 0x7f, 0x03, 0x6b, 0x34, 0x71, 0x18, 0xa5, 0x14, 0xef, 0xef, 0xbd,
-	0x04, 0xa3, 0xa3, 0x82, 0x78, 0x02, 0x40, 0xf9, 0xc7, 0x50, 0x14, 0x7d, 0x1f, 0x11, 0x35, 0xce,
-	0x5b, 0x46, 0xd9, 0x3f, 0x4e, 0x43, 0x29, 0x0e, 0xa1, 0x2d, 0xff, 0x0b, 0x3d, 0xea, 0xb2, 0x15,
-	0x8a, 0x58, 0xe1, 0xe6, 0x50, 0xf8, 0x6b, 0x8c, 0x83, 0x2a, 0x80, 0x02, 0xca, 0x01, 0xb5, 0xc8,
-	0x57, 0xd4, 0xb5, 0xe4, 0x27, 0xe5, 0xf2, 0x09, 0x5c, 0xb6, 0x34, 0x9d, 0x93, 0x5e, 0x87, 0xf4,
-	0xa8, 0x63, 0xa9, 0xb8, 0xd3, 0x28, 0xac, 0x7f, 0x9f, 0xfa, 0x66, 0x3f, 0xc4, 0x0b, 0x43, 0x2d,
-	0xc6, 0x41, 0xcf, 0x61, 0x6d, 0xe4, 0xc8, 0x3e, 0xcc, 0xb3, 0x3e, 0x09, 0x75, 0xc2, 0x18, 0x9b,
-	0x20, 0x81, 0x9e, 0xc2, 0xda, 0x39, 0xe9, 0x19, 0x81, 0x85, 0xa1, 0xbf, 0x67, 0xb8, 0xbf, 0x2f,
-	0x9f, 0x93, 0xde, 0x41, 0x64, 0xb8, 0x7b, 0x3b, 0xe8, 0x73, 0xd8, 0x8c, 0x2a, 0xf5, 0xa8, 0x45,
-	0x8c, 0x9f, 0x33, 0xc0, 0x30, 0xce, 0xee, 0xe8, 0x9a, 0x41, 0x87, 0x7b, 0x3b, 0xe8, 0x53, 0x58,
-	0xe6, 0x03, 0x88, 0x69, 0x89, 0xf8, 0x2a, 0x46, 0xc7, 0xb6, 0xb7, 0x83, 0x7e, 0x08, 0x9b, 0x11,
-	0xdb, 0x63, 0x6a, 0x39, 0xae, 0x56, 0x4a, 0x1e, 0xde, 0xde, 0x4e, 0xf9, 0x58, 0x95, 0xc6, 0xe1,
-	0xc6, 0x5f, 0xa4, 0xe4, 0x3b, 0x30, 0x67, 0x3b, 0xfe, 0xb9, 0x21, 0xcf, 0x23, 0xe6, 0x70, 0x86,
-	0x35, 0x9b, 0x16, 0x5a, 0x85, 0x0c, 0x75, 0x46, 0x8c, 0x9e, 0xe6, 0xf4, 0x59, 0xea, 0x8c, 0x9a,
-	0x56, 0xf9, 0x8f, 0x52, 0xf0, 0x01, 0x43, 0x1a, 0xf4, 0x6c, 0xb5, 0xf3, 0xe0, 0xc9, 0xb1, 0xce,
-	0x3c, 0xd8, 0x22, 0x56, 0x7b, 0xf0, 0xce, 0xe7, 0x02, 0xe8, 0xae, 0x56, 0xcc, 0x73, 0x3f, 0x69,
-	0x4c, 0x85, 0xe5, 0x3c, 0x4b, 0xf2, 0x2e, 0xf1, 0x88, 0xcf, 0xdd, 0x22, 0x8b, 0x45, 0xa3, 0xb6,
-	0x00, 0xf3, 0xb6, 0x67, 0x8c, 0x1c, 0xdb, 0xb0, 0x79, 0xd1, 0x7f, 0x00, 0x4b, 0xc7, 0xc4, 0xc7,
-	0x57, 0x7c, 0x5b, 0xf8, 0x5d, 0x07, 0xf5, 0x52, 0x6c, 0xa6, 0xfb, 0x71, 0x9c, 0x7b, 0x00, 0xac,
-	0x0c, 0x33, 0xfa, 0xe6, 0x19, 0xe9, 0xcb, 0x11, 0xe4, 0x18, 0xe5, 0x25, 0x23, 0x28, 0x34, 0xcf,
-	0xe1, 0x68, 0x39, 0x8e, 0xd6, 0x71, 0xca, 0x3f, 0xe1, 0x25, 0x62, 0x9b, 0x3a, 0xac, 0xcc, 0x0c,
-	0x26, 0xfa, 0x3e, 0x84, 0x9a, 0x02, 0xaa, 0x31, 0xa5, 0x83, 0x95, 0x44, 0x09, 0xd9, 0x94, 0xa6,
-	0x35, 0xa6, 0xb0, 0x6c, 0xd7, 0x40, 0x14, 0x91, 0x3c, 0xd7, 0x50, 0x7e, 0x94, 0x12, 0x62, 0x87,
-	0xd5, 0xdb, 0x90, 0x3a, 0x2c, 0x23, 0xa9, 0xec, 0x2a, 0x9b, 0xe8, 0x47, 0xb0, 0xc0, 0x94, 0x99,
-	0xb8, 0xed, 0xf9, 0x76, 0xcf, 0x93, 0xe7, 0x5d, 0x6b, 0x5b, 0xf2, 0xc0, 0xac, 0x1d, 0xe1, 0xe2,
-	0x98, 0xb4, 0x1c, 0x4c, 0xab, 0xd5, 0xfc, 0x6f, 0x1b, 0x4c, 0x88, 0x1d, 0x0e, 0xc6, 0x71, 0x6c,
-	0x7d, 0x30, 0xb2, 0xf9, 0x6b, 0x0f, 0xa6, 0x09, 0xeb, 0x22, 0x0a, 0x78, 0x87, 0x47, 0x2e, 0x1d,
-	0xb0, 0x6f, 0x2e, 0xc7, 0xb4, 0x06, 0xd2, 0x4b, 0x62, 0x3e, 0xb3, 0x02, 0xc2, 0x4b, 0xa2, 0x2e,
-	0xf3, 0x67, 0x29, 0x7d, 0x73, 0xc2, 0x86, 0x23, 0xe1, 0x26, 0x6c, 0x4e, 0x22, 0xd5, 0x70, 0x3a,
-	0x5e, 0x0d, 0x6b, 0x6b, 0xe0, 0xf4, 0x35, 0x35, 0xf6, 0x4c, 0xbc, 0xc6, 0xd6, 0xaa, 0xf6, 0xd9,
-	0x48, 0xd5, 0x5e, 0x7e, 0xc1, 0xcd, 0xd3, 0x96, 0x3a, 0x65, 0xde, 0x3b, 0x2f, 0xc4, 0xa1, 0x11,
-	0xe5, 0xbf, 0x48, 0xc1, 0x03, 0x6d, 0x61, 0x8a, 0xce, 0x9e, 0xfc, 0x6a, 0x35, 0xc8, 0x9b, 0x63,
-	0xcb, 0xf1, 0xc3, 0x84, 0x95, 0x2d, 0x62, 0x0e, 0xd6, 0x95, 0x6e, 0xb3, 0x1a, 0x47, 0x30, 0xf4,
-	0xd5, 0xf8, 0x52, 0x1c, 0x73, 0xc4, 0xbf, 0xb1, 0xb4, 0xf2, 0x6b, 0x58, 0x32, 0xf5, 0x51, 0x48,
-	0x5b, 0x59, 0x3f, 0xdf, 0x4f, 0x5e, 0x85, 0x93, 0x60, 0xf0, 0x38, 0x48, 0xf9, 0x4f, 0x0a, 0xb0,
-	0x16, 0x4f, 0xb1, 0xb2, 0xd3, 0xf5, 0x58, 0x3a, 0x62, 0xe1, 0x20, 0x9d, 0xeb, 0x4e, 0x34, 0x21,
-	0x35, 0x52, 0xd2, 0xbf, 0xd0, 0x47, 0xcc, 0xd5, 0x3d, 0xdb, 0xb7, 0x2f, 0x89, 0x61, 0xb9, 0xf6,
-	0xb9, 0x48, 0x83, 0x99, 0x46, 0x1a, 0x17, 0x14, 0xfd, 0x90, 0x91, 0x99, 0xa0, 0x43, 0x2e, 0x4c,
-	0x4d, 0x70, 0x86, 0x0b, 0x4e, 0xe3, 0x82, 0xa2, 0x0b, 0xc1, 0xe7, 0x50, 0xb2, 0x48, 0xdf, 0x1e,
-	0xd8, 0x3e, 0x71, 0x8d, 0x81, 0xed, 0x79, 0x86, 0x45, 0x7c, 0x59, 0xcf, 0xce, 0x72, 0x95, 0x19,
-	0xbc, 0x16, 0x48, 0xbc, 0xb2, 0x3d, 0xef, 0x50, 0xf1, 0xd1, 0x03, 0x80, 0x33, 0x7b, 0x68, 0x90,
-	0x70, 0xe7, 0x99, 0x69, 0xcc, 0xe2, 0xdc, 0x99, 0x3d, 0x94, 0x3b, 0xce, 0x7b, 0xc0, 0x1a, 0x2c,
-	0x2f, 0xcb, 0x22, 0x2c, 0xd3, 0xc8, 0xe0, 0xec, 0x99, 0x3d, 0x3c, 0x65, 0x14, 0x56, 0xc0, 0x44,
-	0x97, 0x4a, 0xef, 0xed, 0xe0, 0x8c, 0xf6, 0x45, 0x11, 0x96, 0x69, 0xcc, 0x45, 0x17, 0xd8, 0x8e,
-	0x60, 0xb2, 0x42, 0x44, 0x68, 0x59, 0x44, 0x2c, 0x74, 0x81, 0xbe, 0x58, 0xef, 0x1a, 0x59, 0xbc,
-	0xca, 0xf5, 0x24, 0x3f, 0x00, 0x40, 0x3f, 0x56, 0x4b, 0xb3, 0xd2, 0x8c, 0x2c, 0x8c, 0xbc, 0x42,
-	0xcb, 0x34, 0x72, 0x78, 0x5d, 0xd7, 0x3e, 0xd5, 0x45, 0xd0, 0x07, 0x50, 0x88, 0x20, 0xf0, 0x02,
-	0x2d, 0xd3, 0x00, 0x3c, 0xaf, 0xeb, 0xb0, 0xbd, 0x79, 0x74, 0x60, 0x62, 0x06, 0xe6, 0xb9, 0x70,
-	0x1e, 0x2f, 0xe9, 0xc3, 0x12, 0x53, 0xf1, 0x08, 0x16, 0xaf, 0x2e, 0xc8, 0xc0, 0x78, 0x43, 0xde,
-	0xaa, 0xf9, 0x2c, 0x70, 0xe9, 0x79, 0x5c, 0x60, 0x8c, 0x70, 0x17, 0x7f, 0x0f, 0x72, 0x5c, 0xb2,
-	0x4f, 0x3d, 0x51, 0x79, 0x65, 0x1a, 0x05, 0x9c, 0x65, 0xa4, 0x97, 0xd4, 0xe3, 0x40, 0xee, 0x95,
-	0x31, 0xec, 0x53, 0x73, 0xe0, 0x09, 0xa4, 0xd2, 0x22, 0x17, 0x5a, 0xc0, 0x05, 0xf7, 0xaa, 0xcd,
-	0xe9, 0xe2, 0x4c, 0xff, 0x53, 0x40, 0xa1, 0xa4, 0x43, 0x1d, 0xc3, 0xb6, 0xfa, 0xa4, 0x54, 0xe4,
-	0xc2, 0x8b, 0x78, 0x51, 0x09, 0xb7, 0xa8, 0xd3, 0xb4, 0xfa, 0xdc, 0x5d, 0xdd, 0x2b, 0x83, 0x0e,
-	0x7a, 0x76, 0x69, 0x89, 0xcb, 0x14, 0x71, 0xc6, 0xbd, 0x62, 0x2b, 0x3e, 0x63, 0xf9, 0x92, 0x85,
-	0x38, 0x6b, 0x09, 0x67, 0x7c, 0xc1, 0x7a, 0x0e, 0xeb, 0x52, 0xcb, 0x90, 0xe5, 0xa1, 0xd1, 0x73,
-	0x7b, 0xd2, 0xb0, 0x65, 0x2e, 0x8c, 0xf0, 0xaa, 0xc0, 0x91, 0xe9, 0xeb, 0x40, 0x96, 0xf4, 0x68,
-	0x13, 0xb2, 0xee, 0x95, 0xd8, 0x73, 0x95, 0x56, 0xb8, 0xe8, 0x72, 0x98, 0x01, 0x1f, 0x00, 0x30,
-	0xeb, 0x65, 0x0a, 0x5c, 0xe5, 0xec, 0x15, 0x3d, 0x79, 0x6e, 0x42, 0xd6, 0x57, 0xda, 0x6b, 0x9c,
-	0xbd, 0x1a, 0x9e, 0x5e, 0x3e, 0x00, 0xf0, 0x43, 0xed, 0x3b, 0x9c, 0xbd, 0xa6, 0xa7, 0xd0, 0xef,
-	0xc1, 0xfc, 0x19, 0x71, 0x0d, 0x97, 0xc8, 0x9b, 0x92, 0x12, 0x17, 0xb9, 0x83, 0xf3, 0x67, 0x6c,
-	0x1f, 0x20, 0xef, 0x4a, 0xde, 0x83, 0x7c, 0xbf, 0x67, 0x5d, 0xa8, 0x0f, 0xb6, 0xce, 0x65, 0x4a,
-	0x18, 0x18, 0x51, 0x7e, 0x2d, 0x66, 0xa6, 0x65, 0x2b, 0x89, 0x0d, 0x2e, 0xb1, 0x8e, 0x73, 0xae,
-	0x65, 0x4b, 0x81, 0xfb, 0x90, 0xf3, 0xed, 0x01, 0xf1, 0x7c, 0x73, 0x30, 0x2c, 0x6d, 0xf2, 0x68,
-	0xdf, 0xc0, 0x21, 0x89, 0x01, 0xbc, 0x26, 0x3d, 0x05, 0x70, 0x97, 0x03, 0x6c, 0xe2, 0xdc, 0x6b,
-	0x22, 0x26, 0xc9, 0xab, 0xcd, 0x03, 0xd8, 0x9e, 0x21, 0x33, 0x49, 0x2d, 0x0f, 0x39, 0xdb, 0x33,
-	0x44, 0xf2, 0xa8, 0x2d, 0xc3, 0x92, 0xed, 0x19, 0xd1, 0x84, 0x21, 0x89, 0xd1, 0xe4, 0x50, 0xbb,
-	0x07, 0x9b, 0x36, 0x8b, 0xfc, 0xe4, 0x44, 0x50, 0x5b, 0x84, 0x82, 0xed, 0x19, 0x61, 0xac, 0xcb,
-	0xfd, 0x56, 0x10, 0xdb, 0xb5, 0x0d, 0x28, 0xd9, 0x9e, 0x91, 0x18, 0xcc, 0xb5, 0xbb, 0xb0, 0x11,
-	0xf0, 0xc6, 0x42, 0xb6, 0xf6, 0x10, 0xee, 0x8f, 0x71, 0x23, 0x61, 0x59, 0x43, 0x50, 0x8c, 0x4b,
-	0xd4, 0x4a, 0xb0, 0x36, 0xd6, 0x9f, 0xb0, 0x64, 0x05, 0x90, 0xed, 0x19, 0xb1, 0x58, 0x92, 0xf6,
-	0x06, 0x71, 0x23, 0xa5, 0x62, 0x81, 0x52, 0xbb, 0x03, 0xab, 0x11, 0xaa, 0x0a, 0x0a, 0x39, 0xc7,
-	0xd2, 0x91, 0x65, 0x4b, 0x7a, 0x7c, 0xed, 0x3e, 0xdc, 0x0d, 0x79, 0xe3, 0x4e, 0x5e, 0x2b, 0x40,
-	0x5e, 0xf0, 0xb9, 0x2b, 0xca, 0xa9, 0x0c, 0x5d, 0x57, 0xf2, 0xfd, 0x28, 0x3f, 0x74, 0xce, 0xda,
-	0x12, 0x2c, 0xb2, 0xa9, 0xd6, 0x9c, 0xb1, 0x56, 0x84, 0x05, 0xdb, 0x33, 0x34, 0xd7, 0x53, 0xa8,
-	0x81, 0xa7, 0xc9, 0x01, 0x07, 0x6e, 0x24, 0x05, 0x42, 0x4f, 0x2a, 0xff, 0xe1, 0x2c, 0x6c, 0x5e,
-	0xb3, 0x5d, 0x47, 0x0f, 0x20, 0x6f, 0xb9, 0x74, 0x68, 0x90, 0xf0, 0x7c, 0x30, 0x73, 0xcd, 0xf9,
-	0x60, 0x26, 0x38, 0x1f, 0x5c, 0x83, 0xcc, 0x79, 0x78, 0x60, 0x92, 0xc1, 0xb2, 0x85, 0x3e, 0xd6,
-	0x4e, 0x07, 0x0d, 0x29, 0xc1, 0xd7, 0x24, 0xbc, 0x18, 0xd0, 0x8f, 0x02, 0xd1, 0xe0, 0x10, 0x50,
-	0x89, 0xce, 0x0a, 0xd1, 0x80, 0x1e, 0x9c, 0xd4, 0xa0, 0x60, 0xaa, 0x89, 0xa5, 0x84, 0x45, 0x79,
-	0x56, 0x0c, 0x0f, 0x07, 0x43, 0xe0, 0xe0, 0x0c, 0x50, 0xc9, 0x8a, 0x82, 0x6c, 0x31, 0xa0, 0x4b,
-	0xd1, 0x8f, 0xc2, 0xa3, 0x41, 0x25, 0x29, 0x8a, 0xb0, 0x05, 0x45, 0x96, 0x82, 0x8f, 0xa0, 0x28,
-	0xf8, 0xc6, 0xde, 0x8e, 0xa1, 0x1d, 0x0d, 0x66, 0xf0, 0x82, 0xa0, 0xef, 0xed, 0x04, 0xe7, 0x75,
-	0x77, 0x94, 0xe4, 0xae, 0xe1, 0x53, 0x63, 0xbb, 0xf2, 0xcc, 0xd0, 0x0e, 0x07, 0x59, 0x3d, 0x29,
-	0x14, 0xc4, 0xd9, 0xe0, 0x89, 0x3a, 0xaf, 0x2b, 0x49, 0xad, 0xed, 0xca, 0x3e, 0x53, 0xab, 0xec,
-	0xee, 0x2a, 0x35, 0xbe, 0xfa, 0xe0, 0x15, 0xc1, 0x8f, 0x9d, 0x0e, 0x86, 0x7a, 0x95, 0xdd, 0x3d,
-	0xa6, 0xb7, 0xbb, 0xbd, 0x6d, 0x68, 0x07, 0x84, 0x81, 0x9e, 0x3a, 0x1f, 0x3c, 0x51, 0xe7, 0x7c,
-	0xeb, 0x52, 0x6f, 0x77, 0xbb, 0xc2, 0xcd, 0x7c, 0x52, 0x79, 0x6a, 0x68, 0x47, 0x84, 0x19, 0xbc,
-	0x2a, 0x04, 0x82, 0x13, 0x42, 0xa9, 0xf9, 0x1c, 0x36, 0x94, 0xa5, 0x4f, 0x2a, 0x3b, 0x5c, 0x75,
-	0x77, 0x7b, 0xdf, 0xd0, 0x0e, 0x09, 0x33, 0x78, 0x4d, 0xda, 0x1a, 0x9c, 0x11, 0x0a, 0xdd, 0xf2,
-	0xbf, 0xa4, 0xe1, 0xc3, 0x9b, 0x0a, 0xc8, 0x60, 0x4b, 0x99, 0x1d, 0x0d, 0x3d, 0xdf, 0x25, 0xe6,
-	0x40, 0xee, 0x27, 0xf5, 0xdb, 0xb3, 0xeb, 0x10, 0x02, 0x3d, 0x74, 0x04, 0x60, 0xd1, 0x9f, 0x3b,
-	0x12, 0x25, 0x7d, 0x2b, 0x14, 0x4d, 0x13, 0xfd, 0x22, 0x05, 0x1f, 0xf2, 0xb8, 0x27, 0x52, 0x58,
-	0xf8, 0x8a, 0x41, 0xa4, 0xb8, 0x31, 0x1c, 0x18, 0xe7, 0xd4, 0x1d, 0x98, 0xbe, 0xbc, 0xbd, 0xdd,
-	0x8f, 0x5d, 0x0e, 0xdc, 0x3c, 0xde, 0xad, 0x23, 0xae, 0x8f, 0xdf, 0xa3, 0x93, 0x65, 0x85, 0x48,
-	0xf9, 0x09, 0x64, 0xc4, 0x5f, 0xfc, 0x9e, 0xb5, 0xd1, 0xc4, 0xdd, 0x6f, 0x8c, 0xee, 0x57, 0x27,
-	0x46, 0xad, 0xd9, 0x15, 0x37, 0xbb, 0x9d, 0xe6, 0xd7, 0xdd, 0x6f, 0x8c, 0xa3, 0x93, 0x53, 0xcc,
-	0x69, 0xa9, 0xb2, 0x0f, 0x73, 0xb2, 0xb8, 0xd5, 0xca, 0xd6, 0x94, 0x56, 0xb6, 0xb2, 0x70, 0xf6,
-	0x7c, 0xd3, 0x1f, 0x79, 0xb2, 0x9a, 0x95, 0x2d, 0x96, 0x1f, 0xce, 0x4d, 0xbb, 0x6f, 0xb8, 0xc4,
-	0xf4, 0xa8, 0xc3, 0x47, 0x97, 0xc3, 0xc0, 0x48, 0x98, 0x53, 0xd0, 0x3a, 0x5f, 0xbd, 0xf9, 0x75,
-	0x10, 0x8f, 0xf3, 0x14, 0x5b, 0xbb, 0x79, 0x57, 0x65, 0x22, 0x8e, 0x1d, 0xb4, 0xc2, 0x5a, 0x7e,
-	0xda, 0x1b, 0x2a, 0xeb, 0x4f, 0x35, 0x48, 0x51, 0x05, 0x20, 0x6d, 0x3a, 0x15, 0x58, 0xd0, 0xcd,
-	0x9f, 0x8a, 0x5b, 0xd9, 0x78, 0x27, 0xb7, 0x3c, 0x06, 0xd0, 0x66, 0x60, 0xfa, 0xba, 0x19, 0x98,
-	0xb9, 0x76, 0x06, 0x66, 0xa3, 0x33, 0xf0, 0xff, 0x54, 0x39, 0xc2, 0x1c, 0xa0, 0x7b, 0x85, 0xaf,
-	0x22, 0x75, 0xf4, 0xed, 0x8e, 0xea, 0xfe, 0x79, 0x1a, 0x36, 0x13, 0xc1, 0xe4, 0x78, 0x3f, 0x86,
-	0xa5, 0x33, 0xd3, 0x23, 0x6c, 0x4d, 0x31, 0x5d, 0x95, 0xcb, 0x44, 0x91, 0xb7, 0xc0, 0x18, 0xdd,
-	0xab, 0xaa, 0x1b, 0xe4, 0x47, 0x21, 0xea, 0x5e, 0x19, 0xe6, 0x1b, 0x25, 0x9a, 0x0e, 0x45, 0xf1,
-	0x55, 0xf5, 0x8d, 0x14, 0xdd, 0x82, 0x15, 0x85, 0xea, 0x50, 0x0d, 0x78, 0x5a, 0x5e, 0xf8, 0x70,
-	0xe0, 0x16, 0x0d, 0xa0, 0x95, 0xbc, 0x2b, 0xe4, 0xdf, 0xe8, 0x4b, 0x80, 0x94, 0xc7, 0x4c, 0xfe,
-	0x4d, 0x90, 0x7f, 0x8b, 0xe4, 0xca, 0x8f, 0x1a, 0x2d, 0x2e, 0x88, 0x0a, 0xe4, 0xca, 0xd7, 0x6c,
-	0x96, 0x82, 0x11, 0x93, 0x33, 0x81, 0xa0, 0x66, 0xf1, 0x27, 0xb0, 0x2c, 0x11, 0x23, 0x06, 0x8b,
-	0xbb, 0xa1, 0x45, 0x0e, 0xaa, 0xd9, 0x2b, 0xa5, 0xe3, 0xe6, 0x66, 0x03, 0xe9, 0x88, 0xb5, 0xbb,
-	0x70, 0x47, 0xee, 0x07, 0x8c, 0x9e, 0xa8, 0xf3, 0x0c, 0x97, 0xf8, 0xae, 0x4d, 0xd4, 0x35, 0xd1,
-	0x8a, 0xd8, 0x0f, 0xcb, 0x22, 0x10, 0x0b, 0x1e, 0x7a, 0x06, 0xa5, 0xb8, 0x1a, 0x5b, 0xb2, 0xe9,
-	0x28, 0xb8, 0x2f, 0x5a, 0x8d, 0xe8, 0x75, 0x25, 0xb3, 0xfc, 0x4a, 0x1d, 0x2e, 0x33, 0x66, 0xb5,
-	0xc7, 0x76, 0x72, 0xfc, 0x85, 0xd2, 0x77, 0x74, 0xa1, 0xdf, 0x87, 0x1c, 0x57, 0xe7, 0x87, 0xe8,
-	0xeb, 0x90, 0xed, 0xf5, 0x4d, 0xcf, 0x53, 0x01, 0x52, 0xc0, 0x73, 0xbc, 0xdd, 0xb4, 0x98, 0xcb,
-	0xdb, 0x8e, 0x78, 0x8b, 0xa3, 0xc2, 0xa4, 0x80, 0x41, 0x91, 0x9a, 0x16, 0x42, 0x30, 0xe3, 0x98,
-	0x03, 0x22, 0x23, 0x85, 0xff, 0x8d, 0x1e, 0x42, 0xde, 0x22, 0x5e, 0xcf, 0xb5, 0xf9, 0x75, 0x84,
-	0x8c, 0x13, 0x9d, 0x54, 0xfe, 0xff, 0x70, 0x7f, 0xd2, 0x68, 0xa4, 0x0f, 0x7f, 0x06, 0x05, 0x93,
-	0xd3, 0x0d, 0xfe, 0xf2, 0xca, 0x93, 0xc5, 0xf9, 0x8a, 0x16, 0xfe, 0xc1, 0x00, 0xf0, 0xbc, 0xa9,
-	0x41, 0x94, 0x7f, 0x95, 0x82, 0xf7, 0x18, 0xfa, 0xf9, 0x79, 0x9f, 0x9a, 0x16, 0xb1, 0xaa, 0xc3,
-	0xa1, 0xa7, 0x1d, 0x06, 0xc9, 0xf9, 0x3a, 0x85, 0xac, 0xc7, 0x4b, 0x7a, 0xea, 0xca, 0x6b, 0xdc,
-	0xcf, 0x62, 0x99, 0xfa, 0x5a, 0xfd, 0x2d, 0x9d, 0x8d, 0x03, 0xa8, 0xf2, 0x11, 0xcc, 0xeb, 0x9c,
-	0xf8, 0x6d, 0x6e, 0x1e, 0xe6, 0xda, 0xed, 0x36, 0x25, 0xcd, 0xaa, 0x7c, 0x52, 0xd2, 0x38, 0x68,
-	0x5f, 0xee, 0xe0, 0x6a, 0x31, 0x1d, 0xb4, 0xf6, 0x70, 0xb5, 0x38, 0x5d, 0xfe, 0xc5, 0x1a, 0x94,
-	0xaf, 0x33, 0x42, 0x4e, 0x53, 0x0f, 0x0a, 0xd6, 0xeb, 0xde, 0xf0, 0x72, 0x07, 0x9b, 0x3c, 0x07,
-	0xc8, 0xaf, 0xff, 0x83, 0x77, 0x1c, 0x8a, 0x5c, 0x70, 0x94, 0x15, 0x1c, 0xa2, 0x31, 0x85, 0xa3,
-	0x98, 0x41, 0x27, 0x7b, 0xaa, 0x93, 0xf4, 0x77, 0xee, 0x64, 0x2f, 0xde, 0x89, 0xc2, 0x44, 0x3f,
-	0x83, 0xf9, 0xe1, 0x70, 0x48, 0x49, 0x53, 0xf6, 0x31, 0xcd, 0xfb, 0x78, 0x7e, 0xbb, 0x3e, 0xe4,
-	0xdc, 0xaa, 0x2e, 0x22, 0x88, 0x1b, 0xff, 0x31, 0x0b, 0x85, 0xc8, 0x48, 0xd9, 0xfe, 0xc5, 0x76,
-	0x8c, 0x33, 0xd3, 0x0a, 0x76, 0xf1, 0xe7, 0x2e, 0x1d, 0x18, 0xbd, 0xbe, 0x4d, 0x1c, 0x75, 0xe8,
-	0xb8, 0x66, 0x3b, 0x35, 0x53, 0xdd, 0x35, 0x1f, 0xb9, 0x74, 0x70, 0xc0, 0xb9, 0x93, 0x74, 0x3d,
-	0xe2, 0x5e, 0xca, 0xb7, 0x0e, 0x09, 0xba, 0x1d, 0xce, 0x45, 0x4f, 0x61, 0xcd, 0x76, 0x12, 0xfb,
-	0x14, 0xc9, 0x74, 0xd9, 0x76, 0xc6, 0x3b, 0x4c, 0x50, 0x92, 0x9d, 0xcd, 0x24, 0x28, 0xc9, 0x9e,
-	0xb6, 0x61, 0x95, 0x8e, 0xfc, 0x40, 0xcb, 0xa7, 0x4a, 0x47, 0x64, 0x56, 0x44, 0x47, 0xea, 0xd2,
-	0xbd, 0x4b, 0x27, 0xaa, 0x48, 0xdb, 0x32, 0xe3, 0x2a, 0xd2, 0xb4, 0x57, 0xf0, 0x3e, 0xe5, 0x81,
-	0x6d, 0xec, 0x57, 0x0c, 0xdb, 0xf1, 0x88, 0x2b, 0xee, 0x0c, 0xe3, 0x9d, 0x8a, 0xcc, 0xfb, 0x40,
-	0xc8, 0xee, 0x57, 0x9a, 0x52, 0x32, 0x6e, 0xc1, 0x0b, 0xf8, 0x5e, 0x08, 0xe7, 0x92, 0x01, 0xbd,
-	0x8c, 0xa2, 0x49, 0x7b, 0x44, 0x66, 0xbe, 0xaf, 0xd0, 0xb0, 0x10, 0x8c, 0xdb, 0x56, 0x87, 0x87,
-	0x21, 0x98, 0x43, 0xfd, 0xd0, 0xbe, 0xd0, 0x2e, 0x91, 0xb1, 0x37, 0x15, 0x52, 0x8b, 0xfa, 0xca,
-	0xb4, 0xc0, 0xa6, 0xdf, 0x83, 0xa2, 0x69, 0x59, 0xb6, 0x78, 0x37, 0x66, 0xf0, 0x70, 0x2f, 0x01,
-	0x4f, 0x49, 0xed, 0x5f, 0x23, 0xd6, 0xb6, 0xaa, 0x01, 0x26, 0x6f, 0xd7, 0x1d, 0xdf, 0x7d, 0x8b,
-	0x17, 0xcd, 0x28, 0x75, 0xa3, 0x06, 0x2b, 0x49, 0x82, 0xa8, 0x08, 0xd3, 0x6f, 0xc8, 0x5b, 0xb9,
-	0x6d, 0x62, 0x7f, 0xa2, 0x15, 0xfd, 0x05, 0x69, 0x4e, 0x3e, 0x13, 0x7d, 0x9e, 0xde, 0x4f, 0x6d,
-	0xfc, 0x6b, 0x46, 0x7a, 0xff, 0xde, 0xff, 0xb4, 0xf7, 0x87, 0xde, 0xb2, 0xfd, 0xec, 0x3a, 0x6f,
-	0x99, 0xd6, 0xbd, 0x65, 0xfb, 0xd9, 0xcd, 0xde, 0xb2, 0xfd, 0xec, 0x1a, 0x6f, 0x99, 0xd1, 0xbd,
-	0x65, 0xfb, 0xd9, 0x04, 0x6f, 0xd1, 0x6c, 0xdb, 0xbf, 0xce, 0xb6, 0xd9, 0x88, 0x6d, 0xfb, 0xef,
-	0x60, 0xdb, 0xfe, 0x35, 0xb6, 0x65, 0x22, 0xb6, 0xed, 0xdf, 0x68, 0xdb, 0xd3, 0x67, 0xef, 0x1c,
-	0x65, 0x4f, 0xdf, 0x61, 0xde, 0x9e, 0x3e, 0x7b, 0xd7, 0x28, 0x7b, 0x3a, 0x69, 0xde, 0xbe, 0x82,
-	0x8f, 0xe9, 0xc8, 0xbf, 0xa0, 0xb6, 0x73, 0x61, 0x0c, 0xfc, 0x91, 0x41, 0xae, 0x7a, 0x84, 0x58,
-	0x24, 0xd9, 0xb5, 0x44, 0xb8, 0xbd, 0xaf, 0x14, 0x5e, 0xf9, 0xa3, 0xba, 0x14, 0x1f, 0x77, 0xb4,
-	0xdf, 0x6c, 0xdc, 0xed, 0xfd, 0xf6, 0xe3, 0xee, 0x6f, 0x33, 0x30, 0xaf, 0x2f, 0x4b, 0xe8, 0x47,
-	0x70, 0xd7, 0x76, 0xc4, 0xf9, 0xc5, 0x35, 0x81, 0x57, 0xb2, 0x1d, 0xfd, 0x5d, 0xa3, 0x36, 0x23,
-	0x13, 0xf5, 0x23, 0xc1, 0x97, 0xa0, 0xff, 0xbf, 0x74, 0xf1, 0xf9, 0x19, 0x6c, 0x5d, 0x12, 0xc7,
-	0xa2, 0xae, 0xe1, 0x89, 0x87, 0xf5, 0x3d, 0xc3, 0x37, 0x2f, 0x6e, 0x0e, 0x90, 0x47, 0x42, 0x4b,
-	0xbe, 0xc6, 0xef, 0x75, 0xcd, 0x8b, 0x49, 0x91, 0xf2, 0x53, 0xf8, 0x34, 0xa9, 0x87, 0x9b, 0x62,
-	0xe6, 0xa3, 0xb1, 0x0e, 0x7e, 0xdb, 0xc1, 0xf3, 0xed, 0xc4, 0xe0, 0x39, 0xf9, 0xee, 0xfb, 0xaa,
-	0xdf, 0x5e, 0xec, 0xd4, 0xe6, 0x60, 0x96, 0x1b, 0x5d, 0xfe, 0xb7, 0x1c, 0x2c, 0x1e, 0x13, 0x9f,
-	0xff, 0xca, 0x41, 0x6d, 0xe0, 0x7f, 0x10, 0xfb, 0xd9, 0x40, 0xbe, 0x72, 0x2f, 0x3a, 0xa8, 0xd8,
-	0x0f, 0x14, 0x1a, 0x53, 0xe1, 0xef, 0x0a, 0xd0, 0x0f, 0x60, 0x6e, 0x24, 0x1e, 0xd1, 0xcb, 0xcd,
-	0xec, 0x83, 0xc9, 0x8f, 0xec, 0x95, 0xb6, 0xd2, 0x40, 0x55, 0xc8, 0x53, 0xf1, 0x7c, 0x9a, 0x03,
-	0x4c, 0x27, 0x75, 0x1e, 0x7b, 0x5f, 0xdd, 0x98, 0xc2, 0xba, 0x0e, 0x6a, 0xf2, 0x77, 0x4b, 0xda,
-	0x4b, 0x5b, 0x1e, 0x47, 0x49, 0x66, 0x44, 0x1f, 0xe4, 0x36, 0xa6, 0x70, 0x4c, 0x11, 0x61, 0x28,
-	0x10, 0xff, 0x75, 0xf8, 0xec, 0x93, 0x47, 0x57, 0xf4, 0x1a, 0xf3, 0x86, 0x17, 0xa2, 0x6c, 0x33,
-	0x1e, 0x81, 0x40, 0x3f, 0xe4, 0xef, 0x71, 0x24, 0x9b, 0xc7, 0x5e, 0xbe, 0xb2, 0x39, 0x06, 0x18,
-	0x3e, 0x14, 0x6a, 0x4c, 0x61, 0x4d, 0x01, 0xd5, 0x00, 0x28, 0xb7, 0x9c, 0x8f, 0x6c, 0x6e, 0xec,
-	0x0a, 0x38, 0xf1, 0x09, 0x0a, 0xc3, 0x08, 0xb5, 0xd0, 0x4b, 0x98, 0xa3, 0xce, 0x88, 0x03, 0x64,
-	0x39, 0xc0, 0x93, 0x5b, 0x1c, 0xa4, 0x05, 0x9f, 0x4c, 0x42, 0xa0, 0x7d, 0x50, 0x27, 0x31, 0x3c,
-	0x80, 0xf2, 0x95, 0xbb, 0x51, 0xb4, 0xe8, 0x83, 0x0f, 0xa6, 0x29, 0xc5, 0xd1, 0x0b, 0x98, 0xa7,
-	0xa2, 0x4e, 0xed, 0xc8, 0xf8, 0x61, 0xea, 0x1f, 0x8c, 0x8d, 0x26, 0xe9, 0x5c, 0x87, 0x95, 0x20,
-	0xba, 0x32, 0xaa, 0x02, 0xd0, 0xe0, 0x10, 0x8c, 0x1f, 0xe6, 0x8e, 0x7f, 0xf2, 0xfe, 0xb8, 0x31,
-	0x9a, 0x12, 0xea, 0xc2, 0x22, 0x75, 0x46, 0x7a, 0xcd, 0xcc, 0x0f, 0x77, 0xf3, 0x95, 0x47, 0x89,
-	0x26, 0x25, 0x1c, 0x15, 0x34, 0xa6, 0x70, 0x1c, 0x02, 0xfd, 0x14, 0x10, 0x8d, 0xe7, 0x00, 0x71,
-	0xf8, 0x9b, 0xaf, 0x7c, 0x72, 0x9b, 0xba, 0xb8, 0x31, 0x85, 0x13, 0x90, 0xd0, 0x29, 0x14, 0x69,
-	0xec, 0x2e, 0x9d, 0x9f, 0x0f, 0xe7, 0x2b, 0x1f, 0x8d, 0x99, 0x9d, 0xfc, 0x68, 0xb4, 0x31, 0x85,
-	0xc7, 0x20, 0x50, 0x9b, 0x4f, 0x86, 0x7e, 0x35, 0xcf, 0xef, 0x3e, 0xf3, 0x95, 0xf7, 0xc7, 0x50,
-	0x13, 0x9e, 0x7a, 0xc8, 0x89, 0xd0, 0x39, 0x41, 0x6c, 0x8b, 0x87, 0x35, 0xfc, 0x72, 0x74, 0x2c,
-	0xb6, 0x63, 0x4f, 0x7a, 0x82, 0xd8, 0x76, 0xd4, 0x47, 0x66, 0xcd, 0x96, 0x23, 0x1d, 0x66, 0x29,
-	0x09, 0x22, 0xf6, 0x90, 0x46, 0x42, 0x28, 0x9d, 0x5a, 0x0e, 0xe6, 0x5c, 0xc1, 0x29, 0xff, 0x53,
-	0x81, 0x3f, 0xed, 0x93, 0xa9, 0x4f, 0x96, 0xfd, 0xcf, 0x83, 0x13, 0x4a, 0x71, 0x74, 0x51, 0x8e,
-	0xa2, 0x47, 0x84, 0xb7, 0x3a, 0x5c, 0x32, 0x38, 0xc5, 0xac, 0x43, 0x8e, 0xb8, 0xae, 0x38, 0xb1,
-	0x94, 0x3f, 0x46, 0xf9, 0xe8, 0x3a, 0x75, 0xbe, 0x8d, 0x10, 0xe2, 0x38, 0xd4, 0x44, 0x9f, 0x6b,
-	0xe9, 0x77, 0x7a, 0xec, 0xcd, 0x65, 0xc2, 0xef, 0xbc, 0x22, 0xf9, 0xf7, 0xf3, 0x30, 0xff, 0xce,
-	0x4c, 0x48, 0x0f, 0xb1, 0x1f, 0x39, 0xe9, 0x09, 0xf8, 0x05, 0xcc, 0x0f, 0x45, 0x72, 0xf5, 0x1d,
-	0xe2, 0x7a, 0x32, 0xe3, 0x7d, 0x70, 0x6d, 0x06, 0xd6, 0x70, 0x22, 0xca, 0xe8, 0x8b, 0xb1, 0x54,
-	0x9c, 0x99, 0xe0, 0x98, 0xc9, 0xbf, 0x8d, 0x48, 0x48, 0xc9, 0x67, 0xb0, 0x14, 0xc9, 0xa7, 0x5a,
-	0x1a, 0xac, 0xbc, 0x7b, 0x5a, 0xd6, 0x3a, 0x18, 0x87, 0x43, 0xf5, 0x48, 0x8a, 0x16, 0x29, 0xf2,
-	0x7b, 0xd7, 0xa4, 0x68, 0x0d, 0x4d, 0x4f, 0xd5, 0x2f, 0xf8, 0xe8, 0xdb, 0xd4, 0x51, 0xf3, 0x24,
-	0xf3, 0xe3, 0x7b, 0xd7, 0xa4, 0xeb, 0xc8, 0xb8, 0x35, 0x55, 0x74, 0xca, 0x9f, 0xfa, 0x05, 0x48,
-	0x22, 0x55, 0x6e, 0xdf, 0xfa, 0x02, 0x84, 0x47, 0x43, 0x88, 0x83, 0x3e, 0x0b, 0x93, 0x77, 0x3e,
-	0x29, 0x98, 0x62, 0xe7, 0xfd, 0x7a, 0xf6, 0x7e, 0x19, 0xcb, 0xde, 0xf3, 0x63, 0x17, 0x3f, 0xd7,
-	0x1c, 0xa4, 0x8f, 0xa5, 0xef, 0x5a, 0x24, 0x7d, 0x17, 0x12, 0x1d, 0xb7, 0x9f, 0x60, 0x8e, 0x9e,
-	0xbf, 0x4f, 0xc7, 0xf3, 0xb7, 0x48, 0x84, 0x1f, 0xbf, 0x43, 0xfe, 0x0e, 0x10, 0xc7, 0x12, 0xb8,
-	0x91, 0x98, 0xc0, 0x45, 0x32, 0xfc, 0xf4, 0x56, 0x9b, 0xbd, 0x09, 0x19, 0xfc, 0x1c, 0x4a, 0xf1,
-	0xf4, 0xab, 0x34, 0x64, 0x96, 0x7c, 0x74, 0x73, 0x26, 0x0f, 0x7a, 0x98, 0x88, 0x85, 0x4c, 0xb8,
-	0x43, 0x93, 0x1f, 0x6d, 0xc9, 0x4c, 0xfa, 0xc1, 0x0d, 0xa9, 0x3d, 0xe8, 0x63, 0x12, 0x0e, 0xc2,
-	0xb0, 0xac, 0xe5, 0xeb, 0x00, 0x1e, 0x25, 0x65, 0xb1, 0xb8, 0x54, 0x63, 0x0a, 0x27, 0x29, 0x4b,
-	0x4c, 0x95, 0xc0, 0x03, 0xcc, 0xe5, 0x24, 0xcc, 0xf8, 0x4b, 0x47, 0x89, 0x19, 0x57, 0x2e, 0x6f,
-	0x43, 0x46, 0xe4, 0x6e, 0xb4, 0x02, 0xc5, 0x4e, 0xb7, 0xda, 0x3d, 0xed, 0x44, 0x7e, 0x9f, 0x98,
-	0x81, 0xf4, 0xc9, 0x8b, 0x62, 0x8a, 0xff, 0xe2, 0x18, 0xe3, 0x13, 0x5c, 0x4c, 0x97, 0xff, 0x2a,
-	0x05, 0x79, 0x2d, 0x61, 0x33, 0x45, 0x5c, 0xaf, 0x76, 0x4e, 0x5a, 0x11, 0xc5, 0x45, 0xc8, 0x9f,
-	0xb6, 0x3a, 0xa7, 0xed, 0xf6, 0x09, 0xee, 0xf2, 0x1f, 0x37, 0xae, 0xc2, 0x52, 0xb3, 0xf5, 0x65,
-	0xf5, 0x65, 0xf3, 0xd0, 0x38, 0xac, 0x7f, 0xd9, 0x3c, 0xa8, 0x1b, 0xcd, 0xc3, 0x62, 0x5a, 0x27,
-	0x33, 0x51, 0xa3, 0xfb, 0x4d, 0xbb, 0x5e, 0x9c, 0x46, 0x79, 0x98, 0xeb, 0x36, 0x5f, 0xd5, 0x4f,
-	0x4e, 0xbb, 0xc5, 0x19, 0xd6, 0x83, 0x92, 0xc1, 0xf5, 0x2f, 0x84, 0xc8, 0x2c, 0x42, 0xb0, 0xd0,
-	0x6c, 0x75, 0xeb, 0xb8, 0x55, 0x7d, 0x69, 0x08, 0xdb, 0x32, 0x82, 0xa6, 0x77, 0x52, 0x9c, 0xab,
-	0x01, 0x64, 0x5d, 0x35, 0xdc, 0xbf, 0x4c, 0x41, 0xb1, 0x3a, 0x1c, 0x4a, 0xf7, 0x14, 0xbf, 0x59,
-	0x45, 0x1f, 0xc2, 0x02, 0x71, 0xcc, 0xb3, 0x3e, 0x51, 0xe7, 0x66, 0x7c, 0xc5, 0xcb, 0xe2, 0x18,
-	0x35, 0x26, 0xb7, 0x87, 0xab, 0x7c, 0x69, 0x8b, 0xca, 0xed, 0xe1, 0x2a, 0x7a, 0x1f, 0x0a, 0x82,
-	0xc2, 0x4a, 0x9a, 0x7a, 0xb3, 0x2a, 0x5f, 0x15, 0x47, 0x89, 0xa8, 0x0c, 0xf3, 0x66, 0xaf, 0x47,
-	0x3c, 0xaf, 0x45, 0x2d, 0xd2, 0x3c, 0x94, 0x57, 0x18, 0x11, 0x5a, 0xf9, 0x3f, 0x53, 0xb0, 0x1c,
-	0x9a, 0xcb, 0x13, 0x24, 0xb7, 0xf8, 0xe6, 0xf7, 0xce, 0x2f, 0x00, 0x86, 0xc4, 0x95, 0xeb, 0x5b,
-	0x69, 0x96, 0x17, 0x64, 0xff, 0x47, 0xbf, 0xd8, 0x18, 0x47, 0xdd, 0x6a, 0x73, 0x05, 0xd1, 0xc0,
-	0x9a, 0xfa, 0xc6, 0x15, 0xcc, 0xeb, 0x3c, 0x36, 0x40, 0xf3, 0x82, 0x38, 0x3e, 0xab, 0x35, 0x7d,
-	0x66, 0xbb, 0xa8, 0xaa, 0xa2, 0x44, 0x36, 0x5d, 0x9c, 0x70, 0x60, 0xbb, 0xbd, 0x91, 0xed, 0x37,
-	0x0f, 0xe5, 0x05, 0x4e, 0x8c, 0x8a, 0x36, 0x20, 0x4b, 0xc5, 0x52, 0x6c, 0xa9, 0x9f, 0x81, 0xab,
-	0x76, 0xf9, 0xdf, 0x53, 0xb0, 0xd8, 0x89, 0x15, 0x65, 0xf1, 0x1f, 0xd5, 0xa7, 0xde, 0xf5, 0x47,
-	0xf5, 0xe8, 0x05, 0x20, 0x73, 0x38, 0x34, 0x64, 0xe6, 0x89, 0xfe, 0x28, 0x7f, 0x33, 0x71, 0x72,
-	0x02, 0x9c, 0xa2, 0x19, 0xf7, 0x9a, 0x53, 0x58, 0xd3, 0xc1, 0xa8, 0x33, 0x52, 0x80, 0xe3, 0x5b,
-	0x95, 0x84, 0xd9, 0x66, 0x01, 0x69, 0x8e, 0x93, 0xf5, 0x6d, 0xd9, 0xdf, 0xa5, 0xa1, 0xd8, 0xb9,
-	0xcd, 0xb6, 0xac, 0xf3, 0xeb, 0x6d, 0xcb, 0x3a, 0xef, 0xb6, 0x2d, 0xfb, 0x2e, 0x39, 0xe3, 0xdb,
-	0xdf, 0x64, 0xca, 0x58, 0x87, 0x55, 0x45, 0x3e, 0x69, 0x9d, 0x6a, 0xac, 0x69, 0x3d, 0xfe, 0x4f,
-	0x5b, 0x4d, 0x46, 0x9b, 0x29, 0xdb, 0xb0, 0xda, 0xb1, 0x9d, 0x8b, 0x3e, 0x89, 0x57, 0xf7, 0x1b,
-	0x90, 0xf5, 0x4d, 0xf7, 0x82, 0xf8, 0x41, 0x08, 0x05, 0x6d, 0xb4, 0x13, 0x7c, 0x06, 0xe9, 0x1f,
-	0x1b, 0x89, 0xfb, 0x57, 0x2e, 0x81, 0x83, 0x2f, 0xf6, 0x05, 0xac, 0xc5, 0xbb, 0x92, 0x9f, 0xed,
-	0x59, 0x98, 0x84, 0xa4, 0xc3, 0x6e, 0x5e, 0xb3, 0x21, 0xc6, 0x61, 0xc6, 0x0a, 0xac, 0xef, 0xfc,
-	0xa6, 0xac, 0xef, 0xdc, 0x68, 0x7d, 0xe7, 0x76, 0xd6, 0x77, 0x26, 0x5a, 0x5f, 0xf9, 0x65, 0x0a,
-	0x72, 0x75, 0x25, 0x88, 0x30, 0xe4, 0x8f, 0x89, 0x5f, 0xbf, 0x12, 0xe2, 0x48, 0xdf, 0xd6, 0x24,
-	0x7e, 0xa1, 0x8d, 0xf7, 0xae, 0x91, 0x08, 0x16, 0xc5, 0x7c, 0xe7, 0x5a, 0xcc, 0xce, 0x8d, 0x98,
-	0x71, 0xfb, 0x6b, 0x18, 0xee, 0x51, 0xf7, 0x62, 0x8b, 0x0e, 0x89, 0xd3, 0xa3, 0xae, 0xb5, 0x25,
-	0xfe, 0xf5, 0x8f, 0x50, 0xef, 0x27, 0xdb, 0x17, 0xb6, 0xff, 0x7a, 0x74, 0xb6, 0xd5, 0xa3, 0x83,
-	0xc7, 0x4a, 0xea, 0xb1, 0x90, 0xfa, 0x54, 0xfe, 0x1b, 0x21, 0x97, 0xbb, 0x8f, 0x2f, 0x68, 0xf8,
-	0x2f, 0x92, 0x9c, 0x65, 0x38, 0xfd, 0xe9, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x08, 0x90, 0xb8,
-	0x96, 0xb3, 0x44, 0x00, 0x00,
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_DHCPv4RAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
 }
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// ExtensionClient is the client API for Extension service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type ExtensionClient interface {
-	// Get a single attribute
-	GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error)
-	// Set a single attribute
-	SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-type extensionClient struct {
-	cc *grpc.ClientConn
-}
+func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoMessage() {}
 
-func NewExtensionClient(cc *grpc.ClientConn) ExtensionClient {
-	return &extensionClient{cc}
-}
-
-func (c *extensionClient) GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error) {
-	out := new(SingleGetValueResponse)
-	err := c.cc.Invoke(ctx, "/extension.Extension/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
 	}
-	return out, nil
+	return mi.MessageOf(x)
 }
 
-func (c *extensionClient) SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error) {
-	out := new(SingleSetValueResponse)
-	err := c.cc.Invoke(ctx, "/extension.Extension/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_DHCPv4RAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 0}
 }
 
-// ExtensionServer is the server API for Extension service.
-type ExtensionServer interface {
-	// Get a single attribute
-	GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error)
-	// Set a single attribute
-	SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromClient
+	}
+	return 0
 }
 
-// UnimplementedExtensionServer can be embedded to have forward compatible implementations.
-type UnimplementedExtensionServer struct {
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInBadPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromServer
+	}
+	return 0
 }
 
-func (*UnimplementedExtensionServer) GetExtValue(ctx context.Context, req *SingleGetValueRequest) (*SingleGetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedExtensionServer) SetExtValue(ctx context.Context, req *SingleSetValueRequest) (*SingleSetValueResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InPacketsFromClient
+	}
+	return 0
 }
 
-func RegisterExtensionServer(s *grpc.Server, srv ExtensionServer) {
-	s.RegisterService(&_Extension_serviceDesc, srv)
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetInPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InPacketsFromServer
+	}
+	return 0
 }
 
-func _Extension_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SingleGetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToServer() uint32 {
+	if x != nil {
+		return x.OutPacketsToServer
 	}
-	if interceptor == nil {
-		return srv.(ExtensionServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/extension.Extension/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ExtensionServer).GetExtValue(ctx, req.(*SingleGetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
+	return 0
 }
 
-func _Extension_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SingleSetValueRequest)
-	if err := dec(in); err != nil {
-		return nil, err
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOutPacketsToClient() uint32 {
+	if x != nil {
+		return x.OutPacketsToClient
 	}
-	if interceptor == nil {
-		return srv.(ExtensionServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/extension.Extension/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ExtensionServer).SetExtValue(ctx, req.(*SingleSetValueRequest))
-	}
-	return interceptor(ctx, in, info, handler)
+	return 0
 }
 
-var _Extension_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "extension.Extension",
-	HandlerType: (*ExtensionServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetExtValue",
-			Handler:    _Extension_GetExtValue_Handler,
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_82InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_82RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetOption_82NotInsertedToServer() uint32 {
+	if x != nil {
+		return x.Option_82NotInsertedToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv4RAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type GetOffloadedAppsStatisticsResponse_DHCPv6RAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-ldra.yang
+	InBadPacketsFromClient               uint32 `protobuf:"varint,1,opt,name=in_bad_packets_from_client,json=inBadPacketsFromClient,proto3" json:"in_bad_packets_from_client,omitempty"`
+	InBadPacketsFromServer               uint32 `protobuf:"varint,2,opt,name=in_bad_packets_from_server,json=inBadPacketsFromServer,proto3" json:"in_bad_packets_from_server,omitempty"`
+	Option_17InsertedPacketsToServer     uint32 `protobuf:"varint,3,opt,name=option_17_inserted_packets_to_server,json=option17InsertedPacketsToServer,proto3" json:"option_17_inserted_packets_to_server,omitempty"`
+	Option_17RemovedPacketsToClient      uint32 `protobuf:"varint,4,opt,name=option_17_removed_packets_to_client,json=option17RemovedPacketsToClient,proto3" json:"option_17_removed_packets_to_client,omitempty"`
+	Option_18InsertedPacketsToServer     uint32 `protobuf:"varint,5,opt,name=option_18_inserted_packets_to_server,json=option18InsertedPacketsToServer,proto3" json:"option_18_inserted_packets_to_server,omitempty"`
+	Option_18RemovedPacketsToClient      uint32 `protobuf:"varint,6,opt,name=option_18_removed_packets_to_client,json=option18RemovedPacketsToClient,proto3" json:"option_18_removed_packets_to_client,omitempty"`
+	Option_37InsertedPacketsToServer     uint32 `protobuf:"varint,7,opt,name=option_37_inserted_packets_to_server,json=option37InsertedPacketsToServer,proto3" json:"option_37_inserted_packets_to_server,omitempty"`
+	Option_37RemovedPacketsToClient      uint32 `protobuf:"varint,8,opt,name=option_37_removed_packets_to_client,json=option37RemovedPacketsToClient,proto3" json:"option_37_removed_packets_to_client,omitempty"`
+	OutgoingMtuExceededPacketsFromClient uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_DHCPv6RAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_DHCPv6RAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 1}
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetInBadPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InBadPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_17InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_17RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_17RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_18InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_18RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_18RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37InsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.Option_37InsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOption_37RemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.Option_37RemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
+	if x != nil {
+		return x.OutgoingMtuExceededPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_DHCPv6RAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type GetOffloadedAppsStatisticsResponse_PPPoeIAStats struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent.yang
+	InErrorPacketsFromClient                 uint32 `protobuf:"varint,1,opt,name=in_error_packets_from_client,json=inErrorPacketsFromClient,proto3" json:"in_error_packets_from_client,omitempty"`
+	InErrorPacketsFromServer                 uint32 `protobuf:"varint,2,opt,name=in_error_packets_from_server,json=inErrorPacketsFromServer,proto3" json:"in_error_packets_from_server,omitempty"`
+	InPacketsFromClient                      uint32 `protobuf:"varint,3,opt,name=in_packets_from_client,json=inPacketsFromClient,proto3" json:"in_packets_from_client,omitempty"`
+	InPacketsFromServer                      uint32 `protobuf:"varint,4,opt,name=in_packets_from_server,json=inPacketsFromServer,proto3" json:"in_packets_from_server,omitempty"`
+	OutPacketsToServer                       uint32 `protobuf:"varint,5,opt,name=out_packets_to_server,json=outPacketsToServer,proto3" json:"out_packets_to_server,omitempty"`
+	OutPacketsToClient                       uint32 `protobuf:"varint,6,opt,name=out_packets_to_client,json=outPacketsToClient,proto3" json:"out_packets_to_client,omitempty"`
+	VendorSpecificTagInsertedPacketsToServer uint32 `protobuf:"varint,7,opt,name=vendor_specific_tag_inserted_packets_to_server,json=vendorSpecificTagInsertedPacketsToServer,proto3" json:"vendor_specific_tag_inserted_packets_to_server,omitempty"`
+	VendorSpecificTagRemovedPacketsToClient  uint32 `protobuf:"varint,8,opt,name=vendor_specific_tag_removed_packets_to_client,json=vendorSpecificTagRemovedPacketsToClient,proto3" json:"vendor_specific_tag_removed_packets_to_client,omitempty"`
+	OutgoingMtuExceededPacketsFromClient     uint32 `protobuf:"varint,9,opt,name=outgoing_mtu_exceeded_packets_from_client,json=outgoingMtuExceededPacketsFromClient,proto3" json:"outgoing_mtu_exceeded_packets_from_client,omitempty"`
+	// Name value pairs that gives the flexibility to report different statistics that implementations may choose
+	AdditionalStats map[string]string `protobuf:"bytes,10,rep,name=additional_stats,json=additionalStats,proto3" json:"additional_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Reset() {
+	*x = GetOffloadedAppsStatisticsResponse_PPPoeIAStats{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoMessage() {}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetOffloadedAppsStatisticsResponse_PPPoeIAStats.ProtoReflect.Descriptor instead.
+func (*GetOffloadedAppsStatisticsResponse_PPPoeIAStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{46, 2}
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InErrorPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInErrorPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InErrorPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromClient() uint32 {
+	if x != nil {
+		return x.InPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetInPacketsFromServer() uint32 {
+	if x != nil {
+		return x.InPacketsFromServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToServer() uint32 {
+	if x != nil {
+		return x.OutPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutPacketsToClient() uint32 {
+	if x != nil {
+		return x.OutPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagInsertedPacketsToServer() uint32 {
+	if x != nil {
+		return x.VendorSpecificTagInsertedPacketsToServer
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetVendorSpecificTagRemovedPacketsToClient() uint32 {
+	if x != nil {
+		return x.VendorSpecificTagRemovedPacketsToClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetOutgoingMtuExceededPacketsFromClient() uint32 {
+	if x != nil {
+		return x.OutgoingMtuExceededPacketsFromClient
+	}
+	return 0
+}
+
+func (x *GetOffloadedAppsStatisticsResponse_PPPoeIAStats) GetAdditionalStats() map[string]string {
+	if x != nil {
+		return x.AdditionalStats
+	}
+	return nil
+}
+
+type AppOffloadOnuConfig_PerUniConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// As per the BBF Agent Remote Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
+	AgentRemoteID string `protobuf:"bytes,2,opt,name=agentRemoteID,proto3" json:"agentRemoteID,omitempty"`
+	// As per the BBF Agent Circuit Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
+	AgentCircuitID string `protobuf:"bytes,3,opt,name=agentCircuitID,proto3" json:"agentCircuitID,omitempty"`
+	// The id of the UNI on the Onu for which this configuration is relevant. The UNI ids are numbered from 0 to n depending on the number of UNI ports on the ONU.
+	OnuUniId      uint32 `protobuf:"varint,4,opt,name=onuUniId,proto3" json:"onuUniId,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) Reset() {
+	*x = AppOffloadOnuConfig_PerUniConfig{}
+	mi := &file_voltha_protos_extensions_proto_msgTypes[63]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppOffloadOnuConfig_PerUniConfig) ProtoMessage() {}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_extensions_proto_msgTypes[63]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppOffloadOnuConfig_PerUniConfig.ProtoReflect.Descriptor instead.
+func (*AppOffloadOnuConfig_PerUniConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_extensions_proto_rawDescGZIP(), []int{50, 0}
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetAgentRemoteID() string {
+	if x != nil {
+		return x.AgentRemoteID
+	}
+	return ""
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetAgentCircuitID() string {
+	if x != nil {
+		return x.AgentCircuitID
+	}
+	return ""
+}
+
+func (x *AppOffloadOnuConfig_PerUniConfig) GetOnuUniId() uint32 {
+	if x != nil {
+		return x.OnuUniId
+	}
+	return 0
+}
+
+var File_voltha_protos_extensions_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_extensions_proto_rawDesc = "" +
+	"\n" +
+	"\x1evoltha_protos/extensions.proto\x12\textension\x1a\x1evoltha_protos/ext_config.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\"]\n" +
+	"\bValueSet\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x128\n" +
+	"\falarm_config\x18\x02 \x01(\v2\x13.config.AlarmConfigH\x00R\valarmConfigB\a\n" +
+	"\x05value\",\n" +
+	"\tValueType\"\x1f\n" +
+	"\x04Type\x12\t\n" +
+	"\x05EMPTY\x10\x00\x12\f\n" +
+	"\bDISTANCE\x10\x01\"Q\n" +
+	"\x0eValueSpecifier\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12/\n" +
+	"\x05value\x18\x02 \x01(\x0e2\x19.extension.ValueType.TypeR\x05value\"t\n" +
+	"\fReturnValues\x12\x10\n" +
+	"\x03Set\x18\x01 \x01(\rR\x03Set\x12 \n" +
+	"\vUnsupported\x18\x02 \x01(\rR\vUnsupported\x12\x14\n" +
+	"\x05Error\x18\x03 \x01(\rR\x05Error\x12\x1a\n" +
+	"\bDistance\x18\x04 \x01(\rR\bDistance\"6\n" +
+	"\x12GetDistanceRequest\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\"1\n" +
+	"\x13GetDistanceResponse\x12\x1a\n" +
+	"\bdistance\x18\x01 \x01(\rR\bdistance\"2\n" +
+	"\x14GetOnuUniInfoRequest\x12\x1a\n" +
+	"\buniIndex\x18\x01 \x01(\rR\buniIndex\"\xe1\x04\n" +
+	"\x15GetOnuUniInfoResponse\x12P\n" +
+	"\badmState\x18\x01 \x01(\x0e24.extension.GetOnuUniInfoResponse.AdministrativeStateR\badmState\x12O\n" +
+	"\toperState\x18\x02 \x01(\x0e21.extension.GetOnuUniInfoResponse.OperationalStateR\toperState\x12O\n" +
+	"\tconfigInd\x18\x03 \x01(\x0e21.extension.GetOnuUniInfoResponse.ConfigurationIndR\tconfigInd\"\xc2\x01\n" +
+	"\x10ConfigurationInd\x12\n" +
+	"\n" +
+	"\x06UNKOWN\x10\x00\x12\x12\n" +
+	"\x0eTEN_BASE_T_FDX\x10\x01\x12\x16\n" +
+	"\x12HUNDRED_BASE_T_FDX\x10\x02\x12\x18\n" +
+	"\x14GIGABIT_ETHERNET_FDX\x10\x03\x12\x16\n" +
+	"\x12TEN_G_ETHERNET_FDX\x10\x04\x12\x12\n" +
+	"\x0eTEN_BASE_T_HDX\x10\x05\x12\x16\n" +
+	"\x12HUNDRED_BASE_T_HDX\x10\x06\x12\x18\n" +
+	"\x14GIGABIT_ETHERNET_HDX\x10\a\"G\n" +
+	"\x13AdministrativeState\x12\x16\n" +
+	"\x12ADMSTATE_UNDEFINED\x10\x00\x12\n" +
+	"\n" +
+	"\x06LOCKED\x10\x01\x12\f\n" +
+	"\bUNLOCKED\x10\x02\"F\n" +
+	"\x10OperationalState\x12\x17\n" +
+	"\x13OPERSTATE_UNDEFINED\x10\x00\x12\v\n" +
+	"\aENABLED\x10\x01\x12\f\n" +
+	"\bDISABLED\x10\x02\"\xb7\x01\n" +
+	"\x12GetOltPortCounters\x12\x16\n" +
+	"\x06portNo\x18\x01 \x01(\rR\x06portNo\x12B\n" +
+	"\bportType\x18\x02 \x01(\x0e2&.extension.GetOltPortCounters.PortTypeR\bportType\"E\n" +
+	"\bPortType\x12\x10\n" +
+	"\fPort_UNKNOWN\x10\x00\x12\x15\n" +
+	"\x11Port_ETHERNET_NNI\x10\x01\x12\x10\n" +
+	"\fPort_PON_OLT\x10\x02\"\xcc\x03\n" +
+	"\x1aGetOltPortCountersResponse\x12\x18\n" +
+	"\atxBytes\x18\x01 \x01(\x04R\atxBytes\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\x04R\arxBytes\x12\x1c\n" +
+	"\ttxPackets\x18\x03 \x01(\x04R\ttxPackets\x12\x1c\n" +
+	"\trxPackets\x18\x04 \x01(\x04R\trxPackets\x12&\n" +
+	"\x0etxErrorPackets\x18\x05 \x01(\x04R\x0etxErrorPackets\x12&\n" +
+	"\x0erxErrorPackets\x18\x06 \x01(\x04R\x0erxErrorPackets\x12&\n" +
+	"\x0etxBcastPackets\x18\a \x01(\x04R\x0etxBcastPackets\x12&\n" +
+	"\x0erxBcastPackets\x18\b \x01(\x04R\x0erxBcastPackets\x12&\n" +
+	"\x0etxUcastPackets\x18\t \x01(\x04R\x0etxUcastPackets\x12&\n" +
+	"\x0erxUcastPackets\x18\n" +
+	" \x01(\x04R\x0erxUcastPackets\x12&\n" +
+	"\x0etxMcastPackets\x18\v \x01(\x04R\x0etxMcastPackets\x12&\n" +
+	"\x0erxMcastPackets\x18\f \x01(\x04R\x0erxMcastPackets\"D\n" +
+	"\x14GetOnuPonOpticalInfo\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\x84\x02\n" +
+	"\x1cGetOnuPonOpticalInfoResponse\x12*\n" +
+	"\x10powerFeedVoltage\x18\x01 \x01(\x02R\x10powerFeedVoltage\x122\n" +
+	"\x14receivedOpticalPower\x18\x02 \x01(\x02R\x14receivedOpticalPower\x126\n" +
+	"\x16meanOpticalLaunchPower\x18\x03 \x01(\x02R\x16meanOpticalLaunchPower\x12*\n" +
+	"\x10laserBiasCurrent\x18\x04 \x01(\x02R\x10laserBiasCurrent\x12 \n" +
+	"\vtemperature\x18\x05 \x01(\x02R\vtemperature\"\xaf\x01\n" +
+	"\x1fGetOnuEthernetBridgePortHistory\x12R\n" +
+	"\tdirection\x18\x01 \x01(\x0e24.extension.GetOnuEthernetBridgePortHistory.DirectionR\tdirection\"8\n" +
+	"\tDirection\x12\r\n" +
+	"\tUNDEFINED\x10\x00\x12\f\n" +
+	"\bUPSTREAM\x10\x01\x12\x0e\n" +
+	"\n" +
+	"DOWNSTREAM\x10\x02\"\x93\x05\n" +
+	"'GetOnuEthernetBridgePortHistoryResponse\x12\x1e\n" +
+	"\n" +
+	"dropEvents\x18\x01 \x01(\rR\n" +
+	"dropEvents\x12\x16\n" +
+	"\x06octets\x18\x02 \x01(\rR\x06octets\x12\x18\n" +
+	"\apackets\x18\x03 \x01(\rR\apackets\x12*\n" +
+	"\x10broadcastPackets\x18\x04 \x01(\rR\x10broadcastPackets\x12*\n" +
+	"\x10multicastPackets\x18\x05 \x01(\rR\x10multicastPackets\x12,\n" +
+	"\x11crcErroredPackets\x18\x06 \x01(\rR\x11crcErroredPackets\x12*\n" +
+	"\x10undersizePackets\x18\a \x01(\rR\x10undersizePackets\x12(\n" +
+	"\x0foversizePackets\x18\b \x01(\rR\x0foversizePackets\x12(\n" +
+	"\x0fpackets64octets\x18\t \x01(\rR\x0fpackets64octets\x122\n" +
+	"\x14packets65To127octets\x18\n" +
+	" \x01(\rR\x14packets65To127octets\x124\n" +
+	"\x15packets128To255Octets\x18\v \x01(\rR\x15packets128To255Octets\x124\n" +
+	"\x15packets256To511octets\x18\f \x01(\rR\x15packets256To511octets\x126\n" +
+	"\x16packets512To1023octets\x18\r \x01(\rR\x16packets512To1023octets\x128\n" +
+	"\x17packets1024To1518octets\x18\x0e \x01(\rR\x17packets1024To1518octets\"L\n" +
+	"\x1cGetOnuAllocGemHistoryRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xb3\x03\n" +
+	"\x15OnuGemPortHistoryData\x12\x14\n" +
+	"\x05gemId\x18\x01 \x01(\rR\x05gemId\x122\n" +
+	"\x14transmittedGEMFrames\x18\x02 \x01(\rR\x14transmittedGEMFrames\x12,\n" +
+	"\x11receivedGEMFrames\x18\x03 \x01(\rR\x11receivedGEMFrames\x126\n" +
+	"\x14receivedPayloadBytes\x18\x04 \x01(\rB\x02\x18\x01R\x14receivedPayloadBytes\x12<\n" +
+	"\x17transmittedPayloadBytes\x18\x05 \x01(\rB\x02\x18\x01R\x17transmittedPayloadBytes\x120\n" +
+	"\x13encryptionKeyErrors\x18\x06 \x01(\rR\x13encryptionKeyErrors\x129\n" +
+	"\x19received_payload_bytes_64\x18\a \x01(\x06R\x16receivedPayloadBytes64\x12?\n" +
+	"\x1ctransmitted_payload_bytes_64\x18\b \x01(\x06R\x19transmittedPayloadBytes64\"I\n" +
+	"\x13OnuAllocHistoryData\x12\x18\n" +
+	"\aallocId\x18\x01 \x01(\rR\aallocId\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\rR\arxBytes\"\xa4\x01\n" +
+	"\x16OnuAllocGemHistoryData\x12F\n" +
+	"\x0eonuAllocIdInfo\x18\x01 \x01(\v2\x1e.extension.OnuAllocHistoryDataR\x0eonuAllocIdInfo\x12B\n" +
+	"\vgemPortInfo\x18\x02 \x03(\v2 .extension.OnuGemPortHistoryDataR\vgemPortInfo\"z\n" +
+	"\x1dGetOnuAllocGemHistoryResponse\x12Y\n" +
+	"\x16onuAllocGemHistoryData\x18\x01 \x03(\v2!.extension.OnuAllocGemHistoryDataR\x16onuAllocGemHistoryData\"@\n" +
+	"\x10GetOnuFecHistory\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xe3\x03\n" +
+	"\x18GetOnuFecHistoryResponse\x12*\n" +
+	"\x0ecorrectedBytes\x18\x01 \x01(\rB\x02\x18\x01R\x0ecorrectedBytes\x122\n" +
+	"\x12correctedCodeWords\x18\x02 \x01(\rB\x02\x18\x01R\x12correctedCodeWords\x12\x1e\n" +
+	"\n" +
+	"fecSeconds\x18\x03 \x01(\rR\n" +
+	"fecSeconds\x12*\n" +
+	"\x0etotalCodeWords\x18\x04 \x01(\rB\x02\x18\x01R\x0etotalCodeWords\x12:\n" +
+	"\x16uncorrectableCodeWords\x18\x05 \x01(\rB\x02\x18\x01R\x16uncorrectableCodeWords\x123\n" +
+	"\x16fec_corrected_bytes_64\x18\x06 \x01(\x06R\x13fecCorrectedBytes64\x12<\n" +
+	"\x1bfec_corrected_code_words_64\x18\a \x01(\x06R\x17fecCorrectedCodeWords64\x12-\n" +
+	"\x13total_code_words_64\x18\b \x01(\x06R\x10totalCodeWords64\x12=\n" +
+	"\x1buncorrectable_code_words_64\x18\t \x01(\x06R\x18uncorrectableCodeWords64\"G\n" +
+	"\x15GetOnuCountersRequest\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"\x8d\x01\n" +
+	"%GetOmciEthernetFrameExtendedPmRequest\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\x12\x1c\n" +
+	"\buniIndex\x18\x02 \x01(\rH\x00R\buniIndex\x12\x14\n" +
+	"\x05reset\x18\x03 \x01(\bR\x05resetB\x0e\n" +
+	"\fis_uni_index\"C\n" +
+	"\x11GetRxPowerRequest\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"L\n" +
+	"\x14GetOltRxPowerRequest\x12\x1d\n" +
+	"\n" +
+	"port_label\x18\x01 \x01(\tR\tportLabel\x12\x15\n" +
+	"\x06onu_sn\x18\x02 \x01(\tR\x05onuSn\"Z\n" +
+	"\x12GetPonStatsRequest\x12\x1e\n" +
+	"\tportLabel\x18\x01 \x01(\tH\x00R\tportLabel\x12\x18\n" +
+	"\x06portId\x18\x02 \x01(\aH\x00R\x06portIdB\n" +
+	"\n" +
+	"\bportInfo\"o\n" +
+	"\x13GetPonStatsResponse\x12\x18\n" +
+	"\aponPort\x18\x01 \x01(\rR\aponPort\x12>\n" +
+	"\x0eportStatistics\x18\x02 \x01(\v2\x16.common.PortStatisticsR\x0eportStatistics\"Z\n" +
+	"\x12GetNNIStatsRequest\x12\x1e\n" +
+	"\tportLabel\x18\x01 \x01(\tH\x00R\tportLabel\x12\x18\n" +
+	"\x06portId\x18\x02 \x01(\aH\x00R\x06portIdB\n" +
+	"\n" +
+	"\bportInfo\"o\n" +
+	"\x13GetNNIStatsResponse\x12\x18\n" +
+	"\anniPort\x18\x01 \x01(\rR\anniPort\x12>\n" +
+	"\x0eportStatistics\x18\x02 \x01(\v2\x16.common.PortStatisticsR\x0eportStatistics\"I\n" +
+	"\x19GetOnuStatsFromOltRequest\x12\x16\n" +
+	"\x06intfId\x18\x01 \x01(\aR\x06intfId\x12\x14\n" +
+	"\x05onuId\x18\x02 \x01(\aR\x05onuId\"\x9d\x01\n" +
+	"\x15OnuGemPortInfoFromOlt\x12\x14\n" +
+	"\x05gemId\x18\x01 \x01(\rR\x05gemId\x12\x1c\n" +
+	"\trxPackets\x18\x02 \x01(\x04R\trxPackets\x12\x18\n" +
+	"\arxBytes\x18\x03 \x01(\x04R\arxBytes\x12\x1c\n" +
+	"\ttxPackets\x18\x04 \x01(\x04R\ttxPackets\x12\x18\n" +
+	"\atxBytes\x18\x05 \x01(\x04R\atxBytes\"K\n" +
+	"\x15OnuAllocIdInfoFromOlt\x12\x18\n" +
+	"\aallocId\x18\x01 \x01(\rR\aallocId\x12\x18\n" +
+	"\arxBytes\x18\x02 \x01(\x04R\arxBytes\"\xa9\x01\n" +
+	"\x1fOnuAllocGemStatsFromOltResponse\x12B\n" +
+	"\vallocIdInfo\x18\x01 \x01(\v2 .extension.OnuAllocIdInfoFromOltR\vallocIdInfo\x12B\n" +
+	"\vgemPortInfo\x18\x02 \x03(\v2 .extension.OnuGemPortInfoFromOltR\vgemPortInfo\"v\n" +
+	"\x1aGetOnuStatsFromOltResponse\x12X\n" +
+	"\x11allocGemStatsInfo\x18\x01 \x03(\v2*.extension.OnuAllocGemStatsFromOltResponseR\x11allocGemStatsInfo\"\x96\r\n" +
+	"\x16GetOnuCountersResponse\x12\x19\n" +
+	"\aintf_id\x18\x01 \x01(\aH\x00R\x06intfId\x12\x17\n" +
+	"\x06onu_id\x18\x02 \x01(\aH\x01R\x05onuId\x12'\n" +
+	"\x0epositive_drift\x18\x03 \x01(\x06H\x02R\rpositiveDrift\x12'\n" +
+	"\x0enegative_drift\x18\x04 \x01(\x06H\x03R\rnegativeDrift\x12:\n" +
+	"\x18delimiter_miss_detection\x18\x05 \x01(\x06H\x04R\x16delimiterMissDetection\x12\x1f\n" +
+	"\n" +
+	"bip_errors\x18\x06 \x01(\x06H\x05R\tbipErrors\x12\x1d\n" +
+	"\tbip_units\x18\a \x01(\x06H\x06R\bbipUnits\x124\n" +
+	"\x15fec_corrected_symbols\x18\b \x01(\x06H\aR\x13fecCorrectedSymbols\x128\n" +
+	"\x17fec_codewords_corrected\x18\t \x01(\x06H\bR\x15fecCodewordsCorrected\x12@\n" +
+	"\x1bfec_codewords_uncorrectable\x18\n" +
+	" \x01(\x06H\tR\x19fecCodewordsUncorrectable\x12%\n" +
+	"\rfec_codewords\x18\v \x01(\x06H\n" +
+	"R\ffecCodewords\x120\n" +
+	"\x13fec_corrected_units\x18\f \x01(\x06H\vR\x11fecCorrectedUnits\x12(\n" +
+	"\x0fxgem_key_errors\x18\r \x01(\x06H\fR\rxgemKeyErrors\x12\x1d\n" +
+	"\txgem_loss\x18\x0e \x01(\x06H\rR\bxgemLoss\x12(\n" +
+	"\x0frx_ploams_error\x18\x0f \x01(\x06H\x0eR\rrxPloamsError\x12-\n" +
+	"\x12rx_ploams_non_idle\x18\x10 \x01(\x06H\x0fR\x0frxPloamsNonIdle\x12\x19\n" +
+	"\arx_omci\x18\x11 \x01(\x06H\x10R\x06rxOmci\x12\x19\n" +
+	"\atx_omci\x18\x12 \x01(\x06H\x11R\x06txOmci\x12:\n" +
+	"\x19rx_omci_packets_crc_error\x18\x13 \x01(\x06H\x12R\x15rxOmciPacketsCrcError\x12\x1b\n" +
+	"\brx_bytes\x18\x14 \x01(\x06H\x13R\arxBytes\x12\x1f\n" +
+	"\n" +
+	"rx_packets\x18\x15 \x01(\x06H\x14R\trxPackets\x12\x1b\n" +
+	"\btx_bytes\x18\x16 \x01(\x06H\x15R\atxBytes\x12\x1f\n" +
+	"\n" +
+	"tx_packets\x18\x17 \x01(\x06H\x16R\ttxPackets\x12#\n" +
+	"\fber_reported\x18\x18 \x01(\x06H\x17R\vberReported\x12!\n" +
+	"\vlcdg_errors\x18\x19 \x01(\x06H\x18R\n" +
+	"lcdgErrors\x12\x1f\n" +
+	"\n" +
+	"rdi_errors\x18\x1a \x01(\x06H\x19R\trdiErrors\x12\x1e\n" +
+	"\ttimestamp\x18\x1b \x01(\aH\x1aR\ttimestamp\x12\x1f\n" +
+	"\n" +
+	"hec_errors\x18\x1c \x01(\x06H\x1bR\thecErrorsB\f\n" +
+	"\n" +
+	"is_intf_idB\v\n" +
+	"\tis_onu_idB\x13\n" +
+	"\x11is_positive_driftB\x13\n" +
+	"\x11is_negative_driftB\x1d\n" +
+	"\x1bis_delimiter_miss_detectionB\x0f\n" +
+	"\ris_bip_errorsB\x0e\n" +
+	"\fis_bip_unitsB\x1a\n" +
+	"\x18is_fec_corrected_symbolsB\x1c\n" +
+	"\x1ais_fec_codewords_correctedB \n" +
+	"\x1eis_fec_codewords_uncorrectableB\x12\n" +
+	"\x10is_fec_codewordsB\x18\n" +
+	"\x16is_fec_corrected_unitsB\x14\n" +
+	"\x12is_xgem_key_errorsB\x0e\n" +
+	"\fis_xgem_lossB\x14\n" +
+	"\x12is_rx_ploams_errorB\x17\n" +
+	"\x15is_rx_ploams_non_idleB\f\n" +
+	"\n" +
+	"is_rx_omciB\f\n" +
+	"\n" +
+	"is_tx_omciB\x1e\n" +
+	"\x1cis_rx_omci_packets_crc_errorB\r\n" +
+	"\vis_rx_bytesB\x0f\n" +
+	"\ris_rx_packetsB\r\n" +
+	"\vis_tx_bytesB\x0f\n" +
+	"\ris_tx_packetsB\x11\n" +
+	"\x0fis_ber_reportedB\x10\n" +
+	"\x0eis_lcdg_errorsB\x0f\n" +
+	"\ris_rdi_errorsB\x0e\n" +
+	"\fis_timestampB\x0f\n" +
+	"\ris_hec_errors\"\x8c\x05\n" +
+	"\x1bOmciEthernetFrameExtendedPm\x12\x1f\n" +
+	"\vdrop_events\x18\x01 \x01(\x06R\n" +
+	"dropEvents\x12\x16\n" +
+	"\x06octets\x18\x02 \x01(\x06R\x06octets\x12\x16\n" +
+	"\x06frames\x18\x03 \x01(\x06R\x06frames\x12)\n" +
+	"\x10broadcast_frames\x18\x04 \x01(\x06R\x0fbroadcastFrames\x12)\n" +
+	"\x10multicast_frames\x18\x05 \x01(\x06R\x0fmulticastFrames\x12,\n" +
+	"\x12crc_errored_frames\x18\x06 \x01(\x06R\x10crcErroredFrames\x12)\n" +
+	"\x10undersize_frames\x18\a \x01(\x06R\x0fundersizeFrames\x12'\n" +
+	"\x0foversize_frames\x18\b \x01(\x06R\x0eoversizeFrames\x12(\n" +
+	"\x10frames_64_octets\x18\t \x01(\x06R\x0eframes64Octets\x124\n" +
+	"\x17frames_65_to_127_octets\x18\n" +
+	" \x01(\x06R\x13frames65To127Octets\x126\n" +
+	"\x18frames_128_to_255_octets\x18\v \x01(\x06R\x14frames128To255Octets\x126\n" +
+	"\x18frames_256_to_511_octets\x18\f \x01(\x06R\x14frames256To511Octets\x128\n" +
+	"\x19frames_512_to_1023_octets\x18\r \x01(\x06R\x15frames512To1023Octets\x12:\n" +
+	"\x1aframes_1024_to_1518_octets\x18\x0e \x01(\x06R\x16frames1024To1518Octets\"\xf4\x02\n" +
+	"&GetOmciEthernetFrameExtendedPmResponse\x12B\n" +
+	"\bupstream\x18\x01 \x01(\v2&.extension.OmciEthernetFrameExtendedPmR\bupstream\x12F\n" +
+	"\n" +
+	"downstream\x18\x02 \x01(\v2&.extension.OmciEthernetFrameExtendedPmR\n" +
+	"downstream\x12\x8b\x01\n" +
+	"&omci_ethernet_frame_extended_pm_format\x18\x03 \x01(\x0e28.extension.GetOmciEthernetFrameExtendedPmResponse.FormatR!omciEthernetFrameExtendedPmFormat\"0\n" +
+	"\x06Format\x12\x12\n" +
+	"\x0eTHIRTY_TWO_BIT\x10\x00\x12\x12\n" +
+	"\x0eSIXTY_FOUR_BIT\x10\x01\"t\n" +
+	"\aRxPower\x12\x15\n" +
+	"\x06onu_sn\x18\x01 \x01(\tR\x05onuSn\x12\x16\n" +
+	"\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" +
+	"\vfail_reason\x18\x03 \x01(\tR\n" +
+	"failReason\x12\x19\n" +
+	"\brx_power\x18\x04 \x01(\x01R\arxPower\"e\n" +
+	"\x15GetOltRxPowerResponse\x12\x1d\n" +
+	"\n" +
+	"port_label\x18\x01 \x01(\tR\tportLabel\x12-\n" +
+	"\brx_power\x18\x02 \x03(\v2\x12.extension.RxPowerR\arxPower\"\x98\x01\n" +
+	"\x12GetRxPowerResponse\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12\x1f\n" +
+	"\vfail_reason\x18\x04 \x01(\tR\n" +
+	"failReason\x12\x19\n" +
+	"\brx_power\x18\x05 \x01(\x01R\arxPower\"J\n" +
+	"\x1aGetOnuOmciTxRxStatsRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"\xf1\x03\n" +
+	"\x1bGetOnuOmciTxRxStatsResponse\x12)\n" +
+	"\x11base_tx_ar_frames\x18\x01 \x01(\rR\x0ebaseTxArFrames\x12)\n" +
+	"\x11base_rx_ak_frames\x18\x02 \x01(\rR\x0ebaseRxAkFrames\x12.\n" +
+	"\x14base_tx_no_ar_frames\x18\x03 \x01(\rR\x10baseTxNoArFrames\x12.\n" +
+	"\x14base_rx_no_ak_frames\x18\x04 \x01(\rR\x10baseRxNoAkFrames\x12'\n" +
+	"\x10ext_tx_ar_frames\x18\x05 \x01(\rR\rextTxArFrames\x12'\n" +
+	"\x10ext_rx_ak_frames\x18\x06 \x01(\rR\rextRxAkFrames\x12,\n" +
+	"\x13ext_tx_no_ar_frames\x18\a \x01(\rR\x0fextTxNoArFrames\x12,\n" +
+	"\x13ext_rx_no_ak_frames\x18\b \x01(\rR\x0fextRxNoAkFrames\x125\n" +
+	"\x17tx_omci_counter_retries\x18\t \x01(\rR\x14txOmciCounterRetries\x127\n" +
+	"\x18tx_omci_counter_timeouts\x18\n" +
+	" \x01(\rR\x15txOmciCounterTimeouts\"M\n" +
+	"\x1dGetOnuOmciActiveAlarmsRequest\x12,\n" +
+	"\x05empty\x18\x01 \x01(\v2\x16.google.protobuf.EmptyR\x05empty\"}\n" +
+	"\tAlarmData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x1f\n" +
+	"\vinstance_id\x18\x02 \x01(\rR\n" +
+	"instanceId\x12\x12\n" +
+	"\x04name\x18\x03 \x01(\tR\x04name\x12 \n" +
+	"\vdescription\x18\x04 \x01(\tR\vdescription\"[\n" +
+	"\x1eGetOnuOmciActiveAlarmsResponse\x129\n" +
+	"\ractive_alarms\x18\x01 \x03(\v2\x14.extension.AlarmDataR\factiveAlarms\"\xc2\x01\n" +
+	"!GetOffloadedAppsStatisticsRequest\x12U\n" +
+	"\bstatsFor\x18\x01 \x01(\x0e29.extension.GetOffloadedAppsStatisticsRequest.OffloadedAppR\bstatsFor\"F\n" +
+	"\fOffloadedApp\x12\r\n" +
+	"\tUNDEFINED\x10\x00\x12\v\n" +
+	"\aPPPoeIA\x10\x01\x12\f\n" +
+	"\bDHCPv4RA\x10\x02\x12\f\n" +
+	"\bDHCPv6RA\x10\x03\"\x8b\x16\n" +
+	"\"GetOffloadedAppsStatisticsResponse\x12c\n" +
+	"\rdhcpv4RaStats\x18\x01 \x01(\v2;.extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStatsH\x00R\rdhcpv4RaStats\x12c\n" +
+	"\rdhcpv6RaStats\x18\x02 \x01(\v2;.extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStatsH\x00R\rdhcpv6RaStats\x12`\n" +
+	"\fpppoeIaStats\x18\x03 \x01(\v2:.extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStatsH\x00R\fpppoeIaStats\x1a\xfb\x05\n" +
+	"\rDHCPv4RAStats\x12:\n" +
+	"\x1ain_bad_packets_from_client\x18\x01 \x01(\rR\x16inBadPacketsFromClient\x12:\n" +
+	"\x1ain_bad_packets_from_server\x18\x02 \x01(\rR\x16inBadPacketsFromServer\x123\n" +
+	"\x16in_packets_from_client\x18\x03 \x01(\rR\x13inPacketsFromClient\x123\n" +
+	"\x16in_packets_from_server\x18\x04 \x01(\rR\x13inPacketsFromServer\x121\n" +
+	"\x15out_packets_to_server\x18\x05 \x01(\rR\x12outPacketsToServer\x121\n" +
+	"\x15out_packets_to_client\x18\x06 \x01(\rR\x12outPacketsToClient\x12M\n" +
+	"$option_82_inserted_packets_to_server\x18\a \x01(\rR\x1foption82InsertedPacketsToServer\x12K\n" +
+	"#option_82_removed_packets_to_client\x18\b \x01(\rR\x1eoption82RemovedPacketsToClient\x12E\n" +
+	" option_82_not_inserted_to_server\x18\t \x01(\rR\x1boption82NotInsertedToServer\x12{\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2P.extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xf5\x06\n" +
+	"\rDHCPv6RAStats\x12:\n" +
+	"\x1ain_bad_packets_from_client\x18\x01 \x01(\rR\x16inBadPacketsFromClient\x12:\n" +
+	"\x1ain_bad_packets_from_server\x18\x02 \x01(\rR\x16inBadPacketsFromServer\x12M\n" +
+	"$option_17_inserted_packets_to_server\x18\x03 \x01(\rR\x1foption17InsertedPacketsToServer\x12K\n" +
+	"#option_17_removed_packets_to_client\x18\x04 \x01(\rR\x1eoption17RemovedPacketsToClient\x12M\n" +
+	"$option_18_inserted_packets_to_server\x18\x05 \x01(\rR\x1foption18InsertedPacketsToServer\x12K\n" +
+	"#option_18_removed_packets_to_client\x18\x06 \x01(\rR\x1eoption18RemovedPacketsToClient\x12M\n" +
+	"$option_37_inserted_packets_to_server\x18\a \x01(\rR\x1foption37InsertedPacketsToServer\x12K\n" +
+	"#option_37_removed_packets_to_client\x18\b \x01(\rR\x1eoption37RemovedPacketsToClient\x12W\n" +
+	")outgoing_mtu_exceeded_packets_from_client\x18\t \x01(\rR$outgoingMtuExceededPacketsFromClient\x12{\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2P.extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a\xb9\x06\n" +
+	"\fPPPoeIAStats\x12>\n" +
+	"\x1cin_error_packets_from_client\x18\x01 \x01(\rR\x18inErrorPacketsFromClient\x12>\n" +
+	"\x1cin_error_packets_from_server\x18\x02 \x01(\rR\x18inErrorPacketsFromServer\x123\n" +
+	"\x16in_packets_from_client\x18\x03 \x01(\rR\x13inPacketsFromClient\x123\n" +
+	"\x16in_packets_from_server\x18\x04 \x01(\rR\x13inPacketsFromServer\x121\n" +
+	"\x15out_packets_to_server\x18\x05 \x01(\rR\x12outPacketsToServer\x121\n" +
+	"\x15out_packets_to_client\x18\x06 \x01(\rR\x12outPacketsToClient\x12`\n" +
+	".vendor_specific_tag_inserted_packets_to_server\x18\a \x01(\rR(vendorSpecificTagInsertedPacketsToServer\x12^\n" +
+	"-vendor_specific_tag_removed_packets_to_client\x18\b \x01(\rR'vendorSpecificTagRemovedPacketsToClient\x12W\n" +
+	")outgoing_mtu_exceeded_packets_from_client\x18\t \x01(\rR$outgoingMtuExceededPacketsFromClient\x12z\n" +
+	"\x10additional_stats\x18\n" +
+	" \x03(\v2O.extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntryR\x0fadditionalStats\x1aB\n" +
+	"\x14AdditionalStatsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
+	"\x05stats\"\xf8\t\n" +
+	"\x0fGetValueRequest\x12;\n" +
+	"\bdistance\x18\x01 \x01(\v2\x1d.extension.GetDistanceRequestH\x00R\bdistance\x12;\n" +
+	"\auniInfo\x18\x02 \x01(\v2\x1f.extension.GetOnuUniInfoRequestH\x00R\auniInfo\x12A\n" +
+	"\voltPortInfo\x18\x03 \x01(\v2\x1d.extension.GetOltPortCountersH\x00R\voltPortInfo\x12I\n" +
+	"\x0eonuOpticalInfo\x18\x04 \x01(\v2\x1f.extension.GetOnuPonOpticalInfoH\x00R\x0eonuOpticalInfo\x12R\n" +
+	"\rethBridgePort\x18\x05 \x01(\v2*.extension.GetOnuEthernetBridgePortHistoryH\x00R\rethBridgePort\x12=\n" +
+	"\n" +
+	"fecHistory\x18\x06 \x01(\v2\x1b.extension.GetOnuFecHistoryH\x00R\n" +
+	"fecHistory\x12B\n" +
+	"\n" +
+	"onuPonInfo\x18\a \x01(\v2 .extension.GetOnuCountersRequestH\x00R\n" +
+	"onuPonInfo\x12L\n" +
+	"\aonuInfo\x18\b \x01(\v20.extension.GetOmciEthernetFrameExtendedPmRequestH\x00R\aonuInfo\x128\n" +
+	"\arxPower\x18\t \x01(\v2\x1c.extension.GetRxPowerRequestH\x00R\arxPower\x12K\n" +
+	"\fonuOmciStats\x18\n" +
+	" \x01(\v2%.extension.GetOnuOmciTxRxStatsRequestH\x00R\fonuOmciStats\x12A\n" +
+	"\n" +
+	"oltRxPower\x18\v \x01(\v2\x1f.extension.GetOltRxPowerRequestH\x00R\n" +
+	"oltRxPower\x12T\n" +
+	"\x0fonuActiveAlarms\x18\f \x01(\v2(.extension.GetOnuOmciActiveAlarmsRequestH\x00R\x0fonuActiveAlarms\x12^\n" +
+	"\x12offloadedAppsStats\x18\r \x01(\v2,.extension.GetOffloadedAppsStatisticsRequestH\x00R\x12offloadedAppsStats\x12U\n" +
+	"\x10onuAllocGemStats\x18\x0e \x01(\v2'.extension.GetOnuAllocGemHistoryRequestH\x00R\x10onuAllocGemStats\x12P\n" +
+	"\x0fonuStatsFromOlt\x18\x0f \x01(\v2$.extension.GetOnuStatsFromOltRequestH\x00R\x0fonuStatsFromOlt\x12A\n" +
+	"\voltPonStats\x18\x10 \x01(\v2\x1d.extension.GetPonStatsRequestH\x00R\voltPonStats\x12A\n" +
+	"\voltNniStats\x18\x11 \x01(\v2\x1d.extension.GetNNIStatsRequestH\x00R\voltNniStatsB\t\n" +
+	"\arequest\"\xe7\r\n" +
+	"\x10GetValueResponse\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".extension.GetValueResponse.StatusR\x06status\x12E\n" +
+	"\terrReason\x18\x02 \x01(\x0e2'.extension.GetValueResponse.ErrorReasonR\terrReason\x12<\n" +
+	"\bdistance\x18\x03 \x01(\v2\x1e.extension.GetDistanceResponseH\x00R\bdistance\x12<\n" +
+	"\auniInfo\x18\x04 \x01(\v2 .extension.GetOnuUniInfoResponseH\x00R\auniInfo\x12K\n" +
+	"\fportCoutners\x18\x05 \x01(\v2%.extension.GetOltPortCountersResponseH\x00R\fportCoutners\x12Q\n" +
+	"\x0eonuOpticalInfo\x18\x06 \x01(\v2'.extension.GetOnuPonOpticalInfoResponseH\x00R\x0eonuOpticalInfo\x12b\n" +
+	"\x11ethBridgePortInfo\x18\a \x01(\v22.extension.GetOnuEthernetBridgePortHistoryResponseH\x00R\x11ethBridgePortInfo\x12E\n" +
+	"\n" +
+	"fecHistory\x18\b \x01(\v2#.extension.GetOnuFecHistoryResponseH\x00R\n" +
+	"fecHistory\x12K\n" +
+	"\x0eonuPonCounters\x18\t \x01(\v2!.extension.GetOnuCountersResponseH\x00R\x0eonuPonCounters\x12U\n" +
+	"\vonuCounters\x18\n" +
+	" \x01(\v21.extension.GetOmciEthernetFrameExtendedPmResponseH\x00R\vonuCounters\x129\n" +
+	"\arxPower\x18\v \x01(\v2\x1d.extension.GetRxPowerResponseH\x00R\arxPower\x12L\n" +
+	"\fonuOmciStats\x18\f \x01(\v2&.extension.GetOnuOmciTxRxStatsResponseH\x00R\fonuOmciStats\x12B\n" +
+	"\n" +
+	"oltRxPower\x18\r \x01(\v2 .extension.GetOltRxPowerResponseH\x00R\n" +
+	"oltRxPower\x12U\n" +
+	"\x0fonuActiveAlarms\x18\x0e \x01(\v2).extension.GetOnuOmciActiveAlarmsResponseH\x00R\x0fonuActiveAlarms\x12_\n" +
+	"\x12offloadedAppsStats\x18\x0f \x01(\v2-.extension.GetOffloadedAppsStatisticsResponseH\x00R\x12offloadedAppsStats\x12f\n" +
+	"\x18onuAllocGemStatsResponse\x18\x10 \x01(\v2(.extension.GetOnuAllocGemHistoryResponseH\x00R\x18onuAllocGemStatsResponse\x12a\n" +
+	"\x17onuStatsFromOltResponse\x18\x11 \x01(\v2%.extension.GetOnuStatsFromOltResponseH\x00R\x17onuStatsFromOltResponse\x12R\n" +
+	"\x13oltPonStatsResponse\x18\x12 \x01(\v2\x1e.extension.GetPonStatsResponseH\x00R\x13oltPonStatsResponse\x12R\n" +
+	"\x13oltNniStatsResponse\x18\x13 \x01(\v2\x1e.extension.GetNNIStatsResponseH\x00R\x13oltNniStatsResponse\"1\n" +
+	"\x06Status\x12\x14\n" +
+	"\x10STATUS_UNDEFINED\x10\x00\x12\x06\n" +
+	"\x02OK\x10\x01\x12\t\n" +
+	"\x05ERROR\x10\x02\"\xad\x01\n" +
+	"\vErrorReason\x12\x14\n" +
+	"\x10REASON_UNDEFINED\x10\x00\x12\x0f\n" +
+	"\vUNSUPPORTED\x10\x01\x12\x15\n" +
+	"\x11INVALID_DEVICE_ID\x10\x02\x12\x15\n" +
+	"\x11INVALID_PORT_TYPE\x10\x03\x12\v\n" +
+	"\aTIMEOUT\x10\x04\x12\x14\n" +
+	"\x10INVALID_REQ_TYPE\x10\x05\x12\x12\n" +
+	"\x0eINTERNAL_ERROR\x10\x06\x12\x12\n" +
+	"\x0eINVALID_DEVICE\x10\aB\n" +
+	"\n" +
+	"\bresponse\"\xac\x01\n" +
+	"\x10AppOffloadConfig\x12&\n" +
+	"\x0eenableDHCPv4RA\x18\x01 \x01(\bR\x0eenableDHCPv4RA\x12&\n" +
+	"\x0eenableDHCPv6RA\x18\x02 \x01(\bR\x0eenableDHCPv6RA\x12$\n" +
+	"\renablePPPoEIA\x18\x03 \x01(\bR\renablePPPoEIA\x12\"\n" +
+	"\faccessNodeID\x18\x04 \x01(\tR\faccessNodeID\"\xfe\x01\n" +
+	"\x13AppOffloadOnuConfig\x12 \n" +
+	"\vonuDeviceId\x18\x01 \x01(\tR\vonuDeviceId\x12K\n" +
+	"\n" +
+	"perUniInfo\x18\x05 \x03(\v2+.extension.AppOffloadOnuConfig.PerUniConfigR\n" +
+	"perUniInfo\x1ax\n" +
+	"\fPerUniConfig\x12$\n" +
+	"\ragentRemoteID\x18\x02 \x01(\tR\ragentRemoteID\x12&\n" +
+	"\x0eagentCircuitID\x18\x03 \x01(\tR\x0eagentCircuitID\x12\x1a\n" +
+	"\bonuUniId\x18\x04 \x01(\rR\bonuUniId\"\xfa\x01\n" +
+	"\x0fSetValueRequest\x128\n" +
+	"\falarm_config\x18\x01 \x01(\v2\x13.config.AlarmConfigH\x00R\valarmConfig\x12K\n" +
+	"\x12app_offload_config\x18\x02 \x01(\v2\x1b.extension.AppOffloadConfigH\x00R\x10appOffloadConfig\x12U\n" +
+	"\x16app_offload_onu_config\x18\x03 \x01(\v2\x1e.extension.AppOffloadOnuConfigH\x00R\x13appOffloadOnuConfigB\t\n" +
+	"\arequest\"\xc4\x02\n" +
+	"\x10SetValueResponse\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".extension.SetValueResponse.StatusR\x06status\x12E\n" +
+	"\terrReason\x18\x02 \x01(\x0e2'.extension.SetValueResponse.ErrorReasonR\terrReason\"1\n" +
+	"\x06Status\x12\x14\n" +
+	"\x10STATUS_UNDEFINED\x10\x00\x12\x06\n" +
+	"\x02OK\x10\x01\x12\t\n" +
+	"\x05ERROR\x10\x02\"z\n" +
+	"\vErrorReason\x12\x14\n" +
+	"\x10REASON_UNDEFINED\x10\x00\x12\x0f\n" +
+	"\vUNSUPPORTED\x10\x01\x12\x15\n" +
+	"\x11INVALID_DEVICE_ID\x10\x02\x12\x19\n" +
+	"\x15INVALID_ONU_DEVICE_ID\x10\x03\x12\x12\n" +
+	"\x0eINVALID_UNI_ID\x10\x04\"i\n" +
+	"\x15SingleGetValueRequest\x12\x1a\n" +
+	"\btargetId\x18\x01 \x01(\tR\btargetId\x124\n" +
+	"\arequest\x18\x02 \x01(\v2\x1a.extension.GetValueRequestR\arequest\"Q\n" +
+	"\x16SingleGetValueResponse\x127\n" +
+	"\bresponse\x18\x01 \x01(\v2\x1b.extension.GetValueResponseR\bresponse\"i\n" +
+	"\x15SingleSetValueRequest\x12\x1a\n" +
+	"\btargetId\x18\x01 \x01(\tR\btargetId\x124\n" +
+	"\arequest\x18\x02 \x01(\v2\x1a.extension.SetValueRequestR\arequest\"Q\n" +
+	"\x16SingleSetValueResponse\x127\n" +
+	"\bresponse\x18\x01 \x01(\v2\x1b.extension.SetValueResponseR\bresponse2\xb3\x01\n" +
+	"\tExtension\x12R\n" +
+	"\vGetExtValue\x12 .extension.SingleGetValueRequest\x1a!.extension.SingleGetValueResponse\x12R\n" +
+	"\vSetExtValue\x12 .extension.SingleSetValueRequest\x1a!.extension.SingleSetValueResponseBR\n" +
+	"\x1dorg.opencord.voltha.extensionZ1github.com/opencord/voltha-protos/v5/go/extensionb\x06proto3"
+
+var (
+	file_voltha_protos_extensions_proto_rawDescOnce sync.Once
+	file_voltha_protos_extensions_proto_rawDescData []byte
+)
+
+func file_voltha_protos_extensions_proto_rawDescGZIP() []byte {
+	file_voltha_protos_extensions_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_extensions_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_extensions_proto_rawDesc), len(file_voltha_protos_extensions_proto_rawDesc)))
+	})
+	return file_voltha_protos_extensions_proto_rawDescData
+}
+
+var file_voltha_protos_extensions_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
+var file_voltha_protos_extensions_proto_msgTypes = make([]protoimpl.MessageInfo, 64)
+var file_voltha_protos_extensions_proto_goTypes = []any{
+	(ValueType_Type)(0),                                      // 0: extension.ValueType.Type
+	(GetOnuUniInfoResponse_ConfigurationInd)(0),              // 1: extension.GetOnuUniInfoResponse.ConfigurationInd
+	(GetOnuUniInfoResponse_AdministrativeState)(0),           // 2: extension.GetOnuUniInfoResponse.AdministrativeState
+	(GetOnuUniInfoResponse_OperationalState)(0),              // 3: extension.GetOnuUniInfoResponse.OperationalState
+	(GetOltPortCounters_PortType)(0),                         // 4: extension.GetOltPortCounters.PortType
+	(GetOnuEthernetBridgePortHistory_Direction)(0),           // 5: extension.GetOnuEthernetBridgePortHistory.Direction
+	(GetOmciEthernetFrameExtendedPmResponse_Format)(0),       // 6: extension.GetOmciEthernetFrameExtendedPmResponse.Format
+	(GetOffloadedAppsStatisticsRequest_OffloadedApp)(0),      // 7: extension.GetOffloadedAppsStatisticsRequest.OffloadedApp
+	(GetValueResponse_Status)(0),                             // 8: extension.GetValueResponse.Status
+	(GetValueResponse_ErrorReason)(0),                        // 9: extension.GetValueResponse.ErrorReason
+	(SetValueResponse_Status)(0),                             // 10: extension.SetValueResponse.Status
+	(SetValueResponse_ErrorReason)(0),                        // 11: extension.SetValueResponse.ErrorReason
+	(*ValueSet)(nil),                                         // 12: extension.ValueSet
+	(*ValueType)(nil),                                        // 13: extension.ValueType
+	(*ValueSpecifier)(nil),                                   // 14: extension.ValueSpecifier
+	(*ReturnValues)(nil),                                     // 15: extension.ReturnValues
+	(*GetDistanceRequest)(nil),                               // 16: extension.GetDistanceRequest
+	(*GetDistanceResponse)(nil),                              // 17: extension.GetDistanceResponse
+	(*GetOnuUniInfoRequest)(nil),                             // 18: extension.GetOnuUniInfoRequest
+	(*GetOnuUniInfoResponse)(nil),                            // 19: extension.GetOnuUniInfoResponse
+	(*GetOltPortCounters)(nil),                               // 20: extension.GetOltPortCounters
+	(*GetOltPortCountersResponse)(nil),                       // 21: extension.GetOltPortCountersResponse
+	(*GetOnuPonOpticalInfo)(nil),                             // 22: extension.GetOnuPonOpticalInfo
+	(*GetOnuPonOpticalInfoResponse)(nil),                     // 23: extension.GetOnuPonOpticalInfoResponse
+	(*GetOnuEthernetBridgePortHistory)(nil),                  // 24: extension.GetOnuEthernetBridgePortHistory
+	(*GetOnuEthernetBridgePortHistoryResponse)(nil),          // 25: extension.GetOnuEthernetBridgePortHistoryResponse
+	(*GetOnuAllocGemHistoryRequest)(nil),                     // 26: extension.GetOnuAllocGemHistoryRequest
+	(*OnuGemPortHistoryData)(nil),                            // 27: extension.OnuGemPortHistoryData
+	(*OnuAllocHistoryData)(nil),                              // 28: extension.OnuAllocHistoryData
+	(*OnuAllocGemHistoryData)(nil),                           // 29: extension.OnuAllocGemHistoryData
+	(*GetOnuAllocGemHistoryResponse)(nil),                    // 30: extension.GetOnuAllocGemHistoryResponse
+	(*GetOnuFecHistory)(nil),                                 // 31: extension.GetOnuFecHistory
+	(*GetOnuFecHistoryResponse)(nil),                         // 32: extension.GetOnuFecHistoryResponse
+	(*GetOnuCountersRequest)(nil),                            // 33: extension.GetOnuCountersRequest
+	(*GetOmciEthernetFrameExtendedPmRequest)(nil),            // 34: extension.GetOmciEthernetFrameExtendedPmRequest
+	(*GetRxPowerRequest)(nil),                                // 35: extension.GetRxPowerRequest
+	(*GetOltRxPowerRequest)(nil),                             // 36: extension.GetOltRxPowerRequest
+	(*GetPonStatsRequest)(nil),                               // 37: extension.GetPonStatsRequest
+	(*GetPonStatsResponse)(nil),                              // 38: extension.GetPonStatsResponse
+	(*GetNNIStatsRequest)(nil),                               // 39: extension.GetNNIStatsRequest
+	(*GetNNIStatsResponse)(nil),                              // 40: extension.GetNNIStatsResponse
+	(*GetOnuStatsFromOltRequest)(nil),                        // 41: extension.GetOnuStatsFromOltRequest
+	(*OnuGemPortInfoFromOlt)(nil),                            // 42: extension.OnuGemPortInfoFromOlt
+	(*OnuAllocIdInfoFromOlt)(nil),                            // 43: extension.OnuAllocIdInfoFromOlt
+	(*OnuAllocGemStatsFromOltResponse)(nil),                  // 44: extension.OnuAllocGemStatsFromOltResponse
+	(*GetOnuStatsFromOltResponse)(nil),                       // 45: extension.GetOnuStatsFromOltResponse
+	(*GetOnuCountersResponse)(nil),                           // 46: extension.GetOnuCountersResponse
+	(*OmciEthernetFrameExtendedPm)(nil),                      // 47: extension.OmciEthernetFrameExtendedPm
+	(*GetOmciEthernetFrameExtendedPmResponse)(nil),           // 48: extension.GetOmciEthernetFrameExtendedPmResponse
+	(*RxPower)(nil),                                          // 49: extension.RxPower
+	(*GetOltRxPowerResponse)(nil),                            // 50: extension.GetOltRxPowerResponse
+	(*GetRxPowerResponse)(nil),                               // 51: extension.GetRxPowerResponse
+	(*GetOnuOmciTxRxStatsRequest)(nil),                       // 52: extension.GetOnuOmciTxRxStatsRequest
+	(*GetOnuOmciTxRxStatsResponse)(nil),                      // 53: extension.GetOnuOmciTxRxStatsResponse
+	(*GetOnuOmciActiveAlarmsRequest)(nil),                    // 54: extension.GetOnuOmciActiveAlarmsRequest
+	(*AlarmData)(nil),                                        // 55: extension.AlarmData
+	(*GetOnuOmciActiveAlarmsResponse)(nil),                   // 56: extension.GetOnuOmciActiveAlarmsResponse
+	(*GetOffloadedAppsStatisticsRequest)(nil),                // 57: extension.GetOffloadedAppsStatisticsRequest
+	(*GetOffloadedAppsStatisticsResponse)(nil),               // 58: extension.GetOffloadedAppsStatisticsResponse
+	(*GetValueRequest)(nil),                                  // 59: extension.GetValueRequest
+	(*GetValueResponse)(nil),                                 // 60: extension.GetValueResponse
+	(*AppOffloadConfig)(nil),                                 // 61: extension.AppOffloadConfig
+	(*AppOffloadOnuConfig)(nil),                              // 62: extension.AppOffloadOnuConfig
+	(*SetValueRequest)(nil),                                  // 63: extension.SetValueRequest
+	(*SetValueResponse)(nil),                                 // 64: extension.SetValueResponse
+	(*SingleGetValueRequest)(nil),                            // 65: extension.SingleGetValueRequest
+	(*SingleGetValueResponse)(nil),                           // 66: extension.SingleGetValueResponse
+	(*SingleSetValueRequest)(nil),                            // 67: extension.SingleSetValueRequest
+	(*SingleSetValueResponse)(nil),                           // 68: extension.SingleSetValueResponse
+	(*GetOffloadedAppsStatisticsResponse_DHCPv4RAStats)(nil), // 69: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats
+	(*GetOffloadedAppsStatisticsResponse_DHCPv6RAStats)(nil), // 70: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats
+	(*GetOffloadedAppsStatisticsResponse_PPPoeIAStats)(nil),  // 71: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats
+	nil,                                      // 72: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry
+	nil,                                      // 73: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry
+	nil,                                      // 74: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry
+	(*AppOffloadOnuConfig_PerUniConfig)(nil), // 75: extension.AppOffloadOnuConfig.PerUniConfig
+	(*config.AlarmConfig)(nil),               // 76: config.AlarmConfig
+	(*emptypb.Empty)(nil),                    // 77: google.protobuf.Empty
+	(*common.PortStatistics)(nil),            // 78: common.PortStatistics
+}
+var file_voltha_protos_extensions_proto_depIdxs = []int32{
+	76, // 0: extension.ValueSet.alarm_config:type_name -> config.AlarmConfig
+	0,  // 1: extension.ValueSpecifier.value:type_name -> extension.ValueType.Type
+	2,  // 2: extension.GetOnuUniInfoResponse.admState:type_name -> extension.GetOnuUniInfoResponse.AdministrativeState
+	3,  // 3: extension.GetOnuUniInfoResponse.operState:type_name -> extension.GetOnuUniInfoResponse.OperationalState
+	1,  // 4: extension.GetOnuUniInfoResponse.configInd:type_name -> extension.GetOnuUniInfoResponse.ConfigurationInd
+	4,  // 5: extension.GetOltPortCounters.portType:type_name -> extension.GetOltPortCounters.PortType
+	77, // 6: extension.GetOnuPonOpticalInfo.empty:type_name -> google.protobuf.Empty
+	5,  // 7: extension.GetOnuEthernetBridgePortHistory.direction:type_name -> extension.GetOnuEthernetBridgePortHistory.Direction
+	77, // 8: extension.GetOnuAllocGemHistoryRequest.empty:type_name -> google.protobuf.Empty
+	28, // 9: extension.OnuAllocGemHistoryData.onuAllocIdInfo:type_name -> extension.OnuAllocHistoryData
+	27, // 10: extension.OnuAllocGemHistoryData.gemPortInfo:type_name -> extension.OnuGemPortHistoryData
+	29, // 11: extension.GetOnuAllocGemHistoryResponse.onuAllocGemHistoryData:type_name -> extension.OnuAllocGemHistoryData
+	77, // 12: extension.GetOnuFecHistory.empty:type_name -> google.protobuf.Empty
+	78, // 13: extension.GetPonStatsResponse.portStatistics:type_name -> common.PortStatistics
+	78, // 14: extension.GetNNIStatsResponse.portStatistics:type_name -> common.PortStatistics
+	43, // 15: extension.OnuAllocGemStatsFromOltResponse.allocIdInfo:type_name -> extension.OnuAllocIdInfoFromOlt
+	42, // 16: extension.OnuAllocGemStatsFromOltResponse.gemPortInfo:type_name -> extension.OnuGemPortInfoFromOlt
+	44, // 17: extension.GetOnuStatsFromOltResponse.allocGemStatsInfo:type_name -> extension.OnuAllocGemStatsFromOltResponse
+	47, // 18: extension.GetOmciEthernetFrameExtendedPmResponse.upstream:type_name -> extension.OmciEthernetFrameExtendedPm
+	47, // 19: extension.GetOmciEthernetFrameExtendedPmResponse.downstream:type_name -> extension.OmciEthernetFrameExtendedPm
+	6,  // 20: extension.GetOmciEthernetFrameExtendedPmResponse.omci_ethernet_frame_extended_pm_format:type_name -> extension.GetOmciEthernetFrameExtendedPmResponse.Format
+	49, // 21: extension.GetOltRxPowerResponse.rx_power:type_name -> extension.RxPower
+	77, // 22: extension.GetOnuOmciTxRxStatsRequest.empty:type_name -> google.protobuf.Empty
+	77, // 23: extension.GetOnuOmciActiveAlarmsRequest.empty:type_name -> google.protobuf.Empty
+	55, // 24: extension.GetOnuOmciActiveAlarmsResponse.active_alarms:type_name -> extension.AlarmData
+	7,  // 25: extension.GetOffloadedAppsStatisticsRequest.statsFor:type_name -> extension.GetOffloadedAppsStatisticsRequest.OffloadedApp
+	69, // 26: extension.GetOffloadedAppsStatisticsResponse.dhcpv4RaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats
+	70, // 27: extension.GetOffloadedAppsStatisticsResponse.dhcpv6RaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats
+	71, // 28: extension.GetOffloadedAppsStatisticsResponse.pppoeIaStats:type_name -> extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats
+	16, // 29: extension.GetValueRequest.distance:type_name -> extension.GetDistanceRequest
+	18, // 30: extension.GetValueRequest.uniInfo:type_name -> extension.GetOnuUniInfoRequest
+	20, // 31: extension.GetValueRequest.oltPortInfo:type_name -> extension.GetOltPortCounters
+	22, // 32: extension.GetValueRequest.onuOpticalInfo:type_name -> extension.GetOnuPonOpticalInfo
+	24, // 33: extension.GetValueRequest.ethBridgePort:type_name -> extension.GetOnuEthernetBridgePortHistory
+	31, // 34: extension.GetValueRequest.fecHistory:type_name -> extension.GetOnuFecHistory
+	33, // 35: extension.GetValueRequest.onuPonInfo:type_name -> extension.GetOnuCountersRequest
+	34, // 36: extension.GetValueRequest.onuInfo:type_name -> extension.GetOmciEthernetFrameExtendedPmRequest
+	35, // 37: extension.GetValueRequest.rxPower:type_name -> extension.GetRxPowerRequest
+	52, // 38: extension.GetValueRequest.onuOmciStats:type_name -> extension.GetOnuOmciTxRxStatsRequest
+	36, // 39: extension.GetValueRequest.oltRxPower:type_name -> extension.GetOltRxPowerRequest
+	54, // 40: extension.GetValueRequest.onuActiveAlarms:type_name -> extension.GetOnuOmciActiveAlarmsRequest
+	57, // 41: extension.GetValueRequest.offloadedAppsStats:type_name -> extension.GetOffloadedAppsStatisticsRequest
+	26, // 42: extension.GetValueRequest.onuAllocGemStats:type_name -> extension.GetOnuAllocGemHistoryRequest
+	41, // 43: extension.GetValueRequest.onuStatsFromOlt:type_name -> extension.GetOnuStatsFromOltRequest
+	37, // 44: extension.GetValueRequest.oltPonStats:type_name -> extension.GetPonStatsRequest
+	39, // 45: extension.GetValueRequest.oltNniStats:type_name -> extension.GetNNIStatsRequest
+	8,  // 46: extension.GetValueResponse.status:type_name -> extension.GetValueResponse.Status
+	9,  // 47: extension.GetValueResponse.errReason:type_name -> extension.GetValueResponse.ErrorReason
+	17, // 48: extension.GetValueResponse.distance:type_name -> extension.GetDistanceResponse
+	19, // 49: extension.GetValueResponse.uniInfo:type_name -> extension.GetOnuUniInfoResponse
+	21, // 50: extension.GetValueResponse.portCoutners:type_name -> extension.GetOltPortCountersResponse
+	23, // 51: extension.GetValueResponse.onuOpticalInfo:type_name -> extension.GetOnuPonOpticalInfoResponse
+	25, // 52: extension.GetValueResponse.ethBridgePortInfo:type_name -> extension.GetOnuEthernetBridgePortHistoryResponse
+	32, // 53: extension.GetValueResponse.fecHistory:type_name -> extension.GetOnuFecHistoryResponse
+	46, // 54: extension.GetValueResponse.onuPonCounters:type_name -> extension.GetOnuCountersResponse
+	48, // 55: extension.GetValueResponse.onuCounters:type_name -> extension.GetOmciEthernetFrameExtendedPmResponse
+	51, // 56: extension.GetValueResponse.rxPower:type_name -> extension.GetRxPowerResponse
+	53, // 57: extension.GetValueResponse.onuOmciStats:type_name -> extension.GetOnuOmciTxRxStatsResponse
+	50, // 58: extension.GetValueResponse.oltRxPower:type_name -> extension.GetOltRxPowerResponse
+	56, // 59: extension.GetValueResponse.onuActiveAlarms:type_name -> extension.GetOnuOmciActiveAlarmsResponse
+	58, // 60: extension.GetValueResponse.offloadedAppsStats:type_name -> extension.GetOffloadedAppsStatisticsResponse
+	30, // 61: extension.GetValueResponse.onuAllocGemStatsResponse:type_name -> extension.GetOnuAllocGemHistoryResponse
+	45, // 62: extension.GetValueResponse.onuStatsFromOltResponse:type_name -> extension.GetOnuStatsFromOltResponse
+	38, // 63: extension.GetValueResponse.oltPonStatsResponse:type_name -> extension.GetPonStatsResponse
+	40, // 64: extension.GetValueResponse.oltNniStatsResponse:type_name -> extension.GetNNIStatsResponse
+	75, // 65: extension.AppOffloadOnuConfig.perUniInfo:type_name -> extension.AppOffloadOnuConfig.PerUniConfig
+	76, // 66: extension.SetValueRequest.alarm_config:type_name -> config.AlarmConfig
+	61, // 67: extension.SetValueRequest.app_offload_config:type_name -> extension.AppOffloadConfig
+	62, // 68: extension.SetValueRequest.app_offload_onu_config:type_name -> extension.AppOffloadOnuConfig
+	10, // 69: extension.SetValueResponse.status:type_name -> extension.SetValueResponse.Status
+	11, // 70: extension.SetValueResponse.errReason:type_name -> extension.SetValueResponse.ErrorReason
+	59, // 71: extension.SingleGetValueRequest.request:type_name -> extension.GetValueRequest
+	60, // 72: extension.SingleGetValueResponse.response:type_name -> extension.GetValueResponse
+	63, // 73: extension.SingleSetValueRequest.request:type_name -> extension.SetValueRequest
+	64, // 74: extension.SingleSetValueResponse.response:type_name -> extension.SetValueResponse
+	72, // 75: extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv4RAStats.AdditionalStatsEntry
+	73, // 76: extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.DHCPv6RAStats.AdditionalStatsEntry
+	74, // 77: extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.additional_stats:type_name -> extension.GetOffloadedAppsStatisticsResponse.PPPoeIAStats.AdditionalStatsEntry
+	65, // 78: extension.Extension.GetExtValue:input_type -> extension.SingleGetValueRequest
+	67, // 79: extension.Extension.SetExtValue:input_type -> extension.SingleSetValueRequest
+	66, // 80: extension.Extension.GetExtValue:output_type -> extension.SingleGetValueResponse
+	68, // 81: extension.Extension.SetExtValue:output_type -> extension.SingleSetValueResponse
+	80, // [80:82] is the sub-list for method output_type
+	78, // [78:80] is the sub-list for method input_type
+	78, // [78:78] is the sub-list for extension type_name
+	78, // [78:78] is the sub-list for extension extendee
+	0,  // [0:78] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_extensions_proto_init() }
+func file_voltha_protos_extensions_proto_init() {
+	if File_voltha_protos_extensions_proto != nil {
+		return
+	}
+	file_voltha_protos_extensions_proto_msgTypes[0].OneofWrappers = []any{
+		(*ValueSet_AlarmConfig)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[22].OneofWrappers = []any{
+		(*GetOmciEthernetFrameExtendedPmRequest_UniIndex)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[25].OneofWrappers = []any{
+		(*GetPonStatsRequest_PortLabel)(nil),
+		(*GetPonStatsRequest_PortId)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[27].OneofWrappers = []any{
+		(*GetNNIStatsRequest_PortLabel)(nil),
+		(*GetNNIStatsRequest_PortId)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[34].OneofWrappers = []any{
+		(*GetOnuCountersResponse_IntfId)(nil),
+		(*GetOnuCountersResponse_OnuId)(nil),
+		(*GetOnuCountersResponse_PositiveDrift)(nil),
+		(*GetOnuCountersResponse_NegativeDrift)(nil),
+		(*GetOnuCountersResponse_DelimiterMissDetection)(nil),
+		(*GetOnuCountersResponse_BipErrors)(nil),
+		(*GetOnuCountersResponse_BipUnits)(nil),
+		(*GetOnuCountersResponse_FecCorrectedSymbols)(nil),
+		(*GetOnuCountersResponse_FecCodewordsCorrected)(nil),
+		(*GetOnuCountersResponse_FecCodewordsUncorrectable)(nil),
+		(*GetOnuCountersResponse_FecCodewords)(nil),
+		(*GetOnuCountersResponse_FecCorrectedUnits)(nil),
+		(*GetOnuCountersResponse_XgemKeyErrors)(nil),
+		(*GetOnuCountersResponse_XgemLoss)(nil),
+		(*GetOnuCountersResponse_RxPloamsError)(nil),
+		(*GetOnuCountersResponse_RxPloamsNonIdle)(nil),
+		(*GetOnuCountersResponse_RxOmci)(nil),
+		(*GetOnuCountersResponse_TxOmci)(nil),
+		(*GetOnuCountersResponse_RxOmciPacketsCrcError)(nil),
+		(*GetOnuCountersResponse_RxBytes)(nil),
+		(*GetOnuCountersResponse_RxPackets)(nil),
+		(*GetOnuCountersResponse_TxBytes)(nil),
+		(*GetOnuCountersResponse_TxPackets)(nil),
+		(*GetOnuCountersResponse_BerReported)(nil),
+		(*GetOnuCountersResponse_LcdgErrors)(nil),
+		(*GetOnuCountersResponse_RdiErrors)(nil),
+		(*GetOnuCountersResponse_Timestamp)(nil),
+		(*GetOnuCountersResponse_HecErrors)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[46].OneofWrappers = []any{
+		(*GetOffloadedAppsStatisticsResponse_Dhcpv4RaStats)(nil),
+		(*GetOffloadedAppsStatisticsResponse_Dhcpv6RaStats)(nil),
+		(*GetOffloadedAppsStatisticsResponse_PppoeIaStats)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[47].OneofWrappers = []any{
+		(*GetValueRequest_Distance)(nil),
+		(*GetValueRequest_UniInfo)(nil),
+		(*GetValueRequest_OltPortInfo)(nil),
+		(*GetValueRequest_OnuOpticalInfo)(nil),
+		(*GetValueRequest_EthBridgePort)(nil),
+		(*GetValueRequest_FecHistory)(nil),
+		(*GetValueRequest_OnuPonInfo)(nil),
+		(*GetValueRequest_OnuInfo)(nil),
+		(*GetValueRequest_RxPower)(nil),
+		(*GetValueRequest_OnuOmciStats)(nil),
+		(*GetValueRequest_OltRxPower)(nil),
+		(*GetValueRequest_OnuActiveAlarms)(nil),
+		(*GetValueRequest_OffloadedAppsStats)(nil),
+		(*GetValueRequest_OnuAllocGemStats)(nil),
+		(*GetValueRequest_OnuStatsFromOlt)(nil),
+		(*GetValueRequest_OltPonStats)(nil),
+		(*GetValueRequest_OltNniStats)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[48].OneofWrappers = []any{
+		(*GetValueResponse_Distance)(nil),
+		(*GetValueResponse_UniInfo)(nil),
+		(*GetValueResponse_PortCoutners)(nil),
+		(*GetValueResponse_OnuOpticalInfo)(nil),
+		(*GetValueResponse_EthBridgePortInfo)(nil),
+		(*GetValueResponse_FecHistory)(nil),
+		(*GetValueResponse_OnuPonCounters)(nil),
+		(*GetValueResponse_OnuCounters)(nil),
+		(*GetValueResponse_RxPower)(nil),
+		(*GetValueResponse_OnuOmciStats)(nil),
+		(*GetValueResponse_OltRxPower)(nil),
+		(*GetValueResponse_OnuActiveAlarms)(nil),
+		(*GetValueResponse_OffloadedAppsStats)(nil),
+		(*GetValueResponse_OnuAllocGemStatsResponse)(nil),
+		(*GetValueResponse_OnuStatsFromOltResponse)(nil),
+		(*GetValueResponse_OltPonStatsResponse)(nil),
+		(*GetValueResponse_OltNniStatsResponse)(nil),
+	}
+	file_voltha_protos_extensions_proto_msgTypes[51].OneofWrappers = []any{
+		(*SetValueRequest_AlarmConfig)(nil),
+		(*SetValueRequest_AppOffloadConfig)(nil),
+		(*SetValueRequest_AppOffloadOnuConfig)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_extensions_proto_rawDesc), len(file_voltha_protos_extensions_proto_rawDesc)),
+			NumEnums:      12,
+			NumMessages:   64,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _Extension_SetExtValue_Handler,
-		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "voltha_protos/extensions.proto",
+		GoTypes:           file_voltha_protos_extensions_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_extensions_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_extensions_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_extensions_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_extensions_proto = out.File
+	file_voltha_protos_extensions_proto_goTypes = nil
+	file_voltha_protos_extensions_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go
new file mode 100644
index 0000000..94626cc
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions_grpc.pb.go
@@ -0,0 +1,181 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/extensions.proto
+
+package extension
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	Extension_GetExtValue_FullMethodName = "/extension.Extension/GetExtValue"
+	Extension_SetExtValue_FullMethodName = "/extension.Extension/SetExtValue"
+)
+
+// ExtensionClient is the client API for Extension service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Extension is a service to get and set specific attributes
+type ExtensionClient interface {
+	// Get a single attribute
+	GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error)
+	// Set a single attribute
+	SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error)
+}
+
+type extensionClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewExtensionClient(cc grpc.ClientConnInterface) ExtensionClient {
+	return &extensionClient{cc}
+}
+
+func (c *extensionClient) GetExtValue(ctx context.Context, in *SingleGetValueRequest, opts ...grpc.CallOption) (*SingleGetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SingleGetValueResponse)
+	err := c.cc.Invoke(ctx, Extension_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *extensionClient) SetExtValue(ctx context.Context, in *SingleSetValueRequest, opts ...grpc.CallOption) (*SingleSetValueResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SingleSetValueResponse)
+	err := c.cc.Invoke(ctx, Extension_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// ExtensionServer is the server API for Extension service.
+// All implementations must embed UnimplementedExtensionServer
+// for forward compatibility.
+//
+// Extension is a service to get and set specific attributes
+type ExtensionServer interface {
+	// Get a single attribute
+	GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error)
+	// Set a single attribute
+	SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error)
+	mustEmbedUnimplementedExtensionServer()
+}
+
+// UnimplementedExtensionServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedExtensionServer struct{}
+
+func (UnimplementedExtensionServer) GetExtValue(context.Context, *SingleGetValueRequest) (*SingleGetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedExtensionServer) SetExtValue(context.Context, *SingleSetValueRequest) (*SingleSetValueResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedExtensionServer) mustEmbedUnimplementedExtensionServer() {}
+func (UnimplementedExtensionServer) testEmbeddedByValue()                   {}
+
+// UnsafeExtensionServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to ExtensionServer will
+// result in compilation errors.
+type UnsafeExtensionServer interface {
+	mustEmbedUnimplementedExtensionServer()
+}
+
+func RegisterExtensionServer(s grpc.ServiceRegistrar, srv ExtensionServer) {
+	// If the following call panics, it indicates UnimplementedExtensionServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&Extension_ServiceDesc, srv)
+}
+
+func _Extension_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SingleGetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ExtensionServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Extension_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ExtensionServer).GetExtValue(ctx, req.(*SingleGetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Extension_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SingleSetValueRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ExtensionServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Extension_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ExtensionServer).SetExtValue(ctx, req.(*SingleSetValueRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// Extension_ServiceDesc is the grpc.ServiceDesc for Extension service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Extension_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "extension.Extension",
+	HandlerType: (*ExtensionServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetExtValue",
+			Handler:    _Extension_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _Extension_SetExtValue_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "voltha_protos/extensions.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
index 8b26126..c9c77f3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/health/health.pb.go
@@ -1,208 +1,191 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/health.proto
 
 package health
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // Health states
 type HealthStatus_HealthState int32
 
 const (
-	HealthStatus_HEALTHY    HealthStatus_HealthState = 0
-	HealthStatus_OVERLOADED HealthStatus_HealthState = 1
-	HealthStatus_DYING      HealthStatus_HealthState = 2
+	HealthStatus_HEALTHY    HealthStatus_HealthState = 0 // The instance is healthy
+	HealthStatus_OVERLOADED HealthStatus_HealthState = 1 // The instance is overloaded, decrease query rate
+	HealthStatus_DYING      HealthStatus_HealthState = 2 // The instance is in a critical condition, do not use it
 )
 
-var HealthStatus_HealthState_name = map[int32]string{
-	0: "HEALTHY",
-	1: "OVERLOADED",
-	2: "DYING",
-}
+// Enum value maps for HealthStatus_HealthState.
+var (
+	HealthStatus_HealthState_name = map[int32]string{
+		0: "HEALTHY",
+		1: "OVERLOADED",
+		2: "DYING",
+	}
+	HealthStatus_HealthState_value = map[string]int32{
+		"HEALTHY":    0,
+		"OVERLOADED": 1,
+		"DYING":      2,
+	}
+)
 
-var HealthStatus_HealthState_value = map[string]int32{
-	"HEALTHY":    0,
-	"OVERLOADED": 1,
-	"DYING":      2,
+func (x HealthStatus_HealthState) Enum() *HealthStatus_HealthState {
+	p := new(HealthStatus_HealthState)
+	*p = x
+	return p
 }
 
 func (x HealthStatus_HealthState) String() string {
-	return proto.EnumName(HealthStatus_HealthState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (HealthStatus_HealthState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_health_proto_enumTypes[0].Descriptor()
+}
+
+func (HealthStatus_HealthState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_health_proto_enumTypes[0]
+}
+
+func (x HealthStatus_HealthState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use HealthStatus_HealthState.Descriptor instead.
 func (HealthStatus_HealthState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_dd1fc2b2d96d69b8, []int{0, 0}
+	return file_voltha_protos_health_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // Encode health status of a Voltha instance
 type HealthStatus struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Current state of health of this Voltha instance
-	State                HealthStatus_HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=health.HealthStatus_HealthState" json:"state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	State         HealthStatus_HealthState `protobuf:"varint,1,opt,name=state,proto3,enum=health.HealthStatus_HealthState" json:"state,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *HealthStatus) Reset()         { *m = HealthStatus{} }
-func (m *HealthStatus) String() string { return proto.CompactTextString(m) }
-func (*HealthStatus) ProtoMessage()    {}
+func (x *HealthStatus) Reset() {
+	*x = HealthStatus{}
+	mi := &file_voltha_protos_health_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *HealthStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HealthStatus) ProtoMessage() {}
+
+func (x *HealthStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_health_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HealthStatus.ProtoReflect.Descriptor instead.
 func (*HealthStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_dd1fc2b2d96d69b8, []int{0}
+	return file_voltha_protos_health_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *HealthStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HealthStatus.Unmarshal(m, b)
-}
-func (m *HealthStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HealthStatus.Marshal(b, m, deterministic)
-}
-func (m *HealthStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HealthStatus.Merge(m, src)
-}
-func (m *HealthStatus) XXX_Size() int {
-	return xxx_messageInfo_HealthStatus.Size(m)
-}
-func (m *HealthStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_HealthStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HealthStatus proto.InternalMessageInfo
-
-func (m *HealthStatus) GetState() HealthStatus_HealthState {
-	if m != nil {
-		return m.State
+func (x *HealthStatus) GetState() HealthStatus_HealthState {
+	if x != nil {
+		return x.State
 	}
 	return HealthStatus_HEALTHY
 }
 
-func init() {
-	proto.RegisterEnum("health.HealthStatus_HealthState", HealthStatus_HealthState_name, HealthStatus_HealthState_value)
-	proto.RegisterType((*HealthStatus)(nil), "health.HealthStatus")
+var File_voltha_protos_health_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_health_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/health.proto\x12\x06health\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\"}\n" +
+	"\fHealthStatus\x126\n" +
+	"\x05state\x18\x01 \x01(\x0e2 .health.HealthStatus.HealthStateR\x05state\"5\n" +
+	"\vHealthState\x12\v\n" +
+	"\aHEALTHY\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OVERLOADED\x10\x01\x12\t\n" +
+	"\x05DYING\x10\x022a\n" +
+	"\rHealthService\x12P\n" +
+	"\x0fGetHealthStatus\x12\x16.google.protobuf.Empty\x1a\x14.health.HealthStatus\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/healthBL\n" +
+	"\x1aorg.opencord.voltha.healthZ.github.com/opencord/voltha-protos/v5/go/healthb\x06proto3"
+
+var (
+	file_voltha_protos_health_proto_rawDescOnce sync.Once
+	file_voltha_protos_health_proto_rawDescData []byte
+)
+
+func file_voltha_protos_health_proto_rawDescGZIP() []byte {
+	file_voltha_protos_health_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_health_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_health_proto_rawDesc), len(file_voltha_protos_health_proto_rawDesc)))
+	})
+	return file_voltha_protos_health_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/health.proto", fileDescriptor_dd1fc2b2d96d69b8) }
-
-var fileDescriptor_dd1fc2b2d96d69b8 = []byte{
-	// 287 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0xcb, 0xcf, 0x29,
-	0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9,
-	0xd0, 0x03, 0xf3, 0x84, 0xd8, 0x20, 0x3c, 0x29, 0x99, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xfd,
-	0xc4, 0x82, 0x4c, 0xfd, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0x88,
-	0x2a, 0x29, 0x69, 0xa8, 0x2c, 0x98, 0x97, 0x54, 0x9a, 0xa6, 0x9f, 0x9a, 0x5b, 0x50, 0x52, 0x09,
-	0x91, 0x54, 0xaa, 0xe5, 0xe2, 0xf1, 0x00, 0x1b, 0x12, 0x5c, 0x92, 0x58, 0x52, 0x5a, 0x2c, 0x64,
-	0xc6, 0xc5, 0x5a, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x67, 0xa4, 0xa0,
-	0x07, 0xb5, 0x10, 0x59, 0x11, 0x12, 0x27, 0x35, 0x08, 0xa2, 0x5c, 0xc9, 0x94, 0x8b, 0x1b, 0x49,
-	0x54, 0x88, 0x9b, 0x8b, 0xdd, 0xc3, 0xd5, 0xd1, 0x27, 0xc4, 0x23, 0x52, 0x80, 0x41, 0x88, 0x8f,
-	0x8b, 0xcb, 0x3f, 0xcc, 0x35, 0xc8, 0xc7, 0xdf, 0xd1, 0xc5, 0xd5, 0x45, 0x80, 0x51, 0x88, 0x93,
-	0x8b, 0xd5, 0x25, 0xd2, 0xd3, 0xcf, 0x5d, 0x80, 0xc9, 0x28, 0x91, 0x8b, 0x17, 0xaa, 0x2d, 0xb5,
-	0xa8, 0x2c, 0x33, 0x39, 0x55, 0x28, 0x80, 0x8b, 0xdf, 0x3d, 0xb5, 0x04, 0xc5, 0x49, 0x62, 0x7a,
-	0x10, 0x0f, 0xe8, 0xc1, 0x3c, 0xa0, 0xe7, 0x0a, 0xf2, 0x80, 0x94, 0x08, 0x36, 0xb7, 0x29, 0xf1,
-	0x37, 0x5d, 0x7e, 0x32, 0x99, 0x89, 0x53, 0x88, 0x1d, 0x1a, 0x54, 0x4e, 0x3e, 0x5c, 0x52, 0xf9,
-	0x45, 0xe9, 0x7a, 0xf9, 0x05, 0xa9, 0x79, 0xc9, 0xf9, 0x45, 0x29, 0x7a, 0x90, 0xf0, 0x84, 0xea,
-	0x8d, 0xd2, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0x29, 0xd1,
-	0x87, 0x28, 0xd1, 0x85, 0x06, 0x79, 0x99, 0xa9, 0x7e, 0x7a, 0x3e, 0xd4, 0xb4, 0x24, 0x36, 0xb0,
-	0xa0, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x83, 0x1f, 0x28, 0x85, 0x97, 0x01, 0x00, 0x00,
+var file_voltha_protos_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_health_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_voltha_protos_health_proto_goTypes = []any{
+	(HealthStatus_HealthState)(0), // 0: health.HealthStatus.HealthState
+	(*HealthStatus)(nil),          // 1: health.HealthStatus
+	(*emptypb.Empty)(nil),         // 2: google.protobuf.Empty
+}
+var file_voltha_protos_health_proto_depIdxs = []int32{
+	0, // 0: health.HealthStatus.state:type_name -> health.HealthStatus.HealthState
+	2, // 1: health.HealthService.GetHealthStatus:input_type -> google.protobuf.Empty
+	1, // 2: health.HealthService.GetHealthStatus:output_type -> health.HealthStatus
+	2, // [2:3] is the sub-list for method output_type
+	1, // [1:2] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
 }
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// HealthServiceClient is the client API for HealthService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type HealthServiceClient interface {
-	// Return current health status of a Voltha instance
-	GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error)
-}
-
-type healthServiceClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewHealthServiceClient(cc *grpc.ClientConn) HealthServiceClient {
-	return &healthServiceClient{cc}
-}
-
-func (c *healthServiceClient) GetHealthStatus(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HealthStatus, error) {
-	out := new(HealthStatus)
-	err := c.cc.Invoke(ctx, "/health.HealthService/GetHealthStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_health_proto_init() }
+func file_voltha_protos_health_proto_init() {
+	if File_voltha_protos_health_proto != nil {
+		return
 	}
-	return out, nil
-}
-
-// HealthServiceServer is the server API for HealthService service.
-type HealthServiceServer interface {
-	// Return current health status of a Voltha instance
-	GetHealthStatus(context.Context, *empty.Empty) (*HealthStatus, error)
-}
-
-// UnimplementedHealthServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedHealthServiceServer struct {
-}
-
-func (*UnimplementedHealthServiceServer) GetHealthStatus(ctx context.Context, req *empty.Empty) (*HealthStatus, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
-}
-
-func RegisterHealthServiceServer(s *grpc.Server, srv HealthServiceServer) {
-	s.RegisterService(&_HealthService_serviceDesc, srv)
-}
-
-func _HealthService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(HealthServiceServer).GetHealthStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/health.HealthService/GetHealthStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(HealthServiceServer).GetHealthStatus(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _HealthService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "health.HealthService",
-	HandlerType: (*HealthServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetHealthStatus",
-			Handler:    _HealthService_GetHealthStatus_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_health_proto_rawDesc), len(file_voltha_protos_health_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "voltha_protos/health.proto",
+		GoTypes:           file_voltha_protos_health_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_health_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_health_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_health_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_health_proto = out.File
+	file_voltha_protos_health_proto_goTypes = nil
+	file_voltha_protos_health_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go
new file mode 100644
index 0000000..d4b6f89
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/health/health_grpc.pb.go
@@ -0,0 +1,128 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/health.proto
+
+package health
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	HealthService_GetHealthStatus_FullMethodName = "/health.HealthService/GetHealthStatus"
+)
+
+// HealthServiceClient is the client API for HealthService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Health related services
+type HealthServiceClient interface {
+	// Return current health status of a Voltha instance
+	GetHealthStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*HealthStatus, error)
+}
+
+type healthServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewHealthServiceClient(cc grpc.ClientConnInterface) HealthServiceClient {
+	return &healthServiceClient{cc}
+}
+
+func (c *healthServiceClient) GetHealthStatus(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*HealthStatus, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(HealthStatus)
+	err := c.cc.Invoke(ctx, HealthService_GetHealthStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// HealthServiceServer is the server API for HealthService service.
+// All implementations must embed UnimplementedHealthServiceServer
+// for forward compatibility.
+//
+// Health related services
+type HealthServiceServer interface {
+	// Return current health status of a Voltha instance
+	GetHealthStatus(context.Context, *emptypb.Empty) (*HealthStatus, error)
+	mustEmbedUnimplementedHealthServiceServer()
+}
+
+// UnimplementedHealthServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedHealthServiceServer struct{}
+
+func (UnimplementedHealthServiceServer) GetHealthStatus(context.Context, *emptypb.Empty) (*HealthStatus, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedHealthServiceServer) mustEmbedUnimplementedHealthServiceServer() {}
+func (UnimplementedHealthServiceServer) testEmbeddedByValue()                       {}
+
+// UnsafeHealthServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to HealthServiceServer will
+// result in compilation errors.
+type UnsafeHealthServiceServer interface {
+	mustEmbedUnimplementedHealthServiceServer()
+}
+
+func RegisterHealthServiceServer(s grpc.ServiceRegistrar, srv HealthServiceServer) {
+	// If the following call panics, it indicates UnimplementedHealthServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&HealthService_ServiceDesc, srv)
+}
+
+func _HealthService_GetHealthStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(HealthServiceServer).GetHealthStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: HealthService_GetHealthStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(HealthServiceServer).GetHealthStatus(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// HealthService_ServiceDesc is the grpc.ServiceDesc for HealthService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var HealthService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "health.HealthService",
+	HandlerType: (*HealthServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetHealthStatus",
+			Handler:    _HealthService_GetHealthStatus_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "voltha_protos/health.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/inter_adapter/inter_adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/inter_adapter/inter_adapter.pb.go
index fd76f67..901deb8 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/inter_adapter/inter_adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/inter_adapter/inter_adapter.pb.go
@@ -1,579 +1,673 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/inter_adapter.proto
 
 package inter_adapter
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	openolt "github.com/opencord/voltha-protos/v5/go/openolt"
 	tech_profile "github.com/opencord/voltha-protos/v5/go/tech_profile"
 	voltha "github.com/opencord/voltha-protos/v5/go/voltha"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type OmciMessage struct {
-	Message              []byte                      `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-	ConnectStatus        common.ConnectStatus_Types  `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
-	ProxyAddress         *voltha.Device_ProxyAddress `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
-	ParentDeviceId       string                      `protobuf:"bytes,4,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
-	ChildDeviceId        string                      `protobuf:"bytes,5,opt,name=child_device_id,json=childDeviceId,proto3" json:"child_device_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	state          protoimpl.MessageState      `protogen:"open.v1"`
+	Message        []byte                      `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+	ConnectStatus  common.ConnectStatus_Types  `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
+	ProxyAddress   *voltha.Device_ProxyAddress `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
+	ParentDeviceId string                      `protobuf:"bytes,4,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
+	ChildDeviceId  string                      `protobuf:"bytes,5,opt,name=child_device_id,json=childDeviceId,proto3" json:"child_device_id,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OmciMessage) Reset()         { *m = OmciMessage{} }
-func (m *OmciMessage) String() string { return proto.CompactTextString(m) }
-func (*OmciMessage) ProtoMessage()    {}
+func (x *OmciMessage) Reset() {
+	*x = OmciMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciMessage) ProtoMessage() {}
+
+func (x *OmciMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciMessage.ProtoReflect.Descriptor instead.
 func (*OmciMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{0}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OmciMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciMessage.Unmarshal(m, b)
-}
-func (m *OmciMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciMessage.Marshal(b, m, deterministic)
-}
-func (m *OmciMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciMessage.Merge(m, src)
-}
-func (m *OmciMessage) XXX_Size() int {
-	return xxx_messageInfo_OmciMessage.Size(m)
-}
-func (m *OmciMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciMessage proto.InternalMessageInfo
-
-func (m *OmciMessage) GetMessage() []byte {
-	if m != nil {
-		return m.Message
+func (x *OmciMessage) GetMessage() []byte {
+	if x != nil {
+		return x.Message
 	}
 	return nil
 }
 
-func (m *OmciMessage) GetConnectStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnectStatus
+func (x *OmciMessage) GetConnectStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnectStatus
 	}
-	return common.ConnectStatus_UNKNOWN
+	return common.ConnectStatus_Types(0)
 }
 
-func (m *OmciMessage) GetProxyAddress() *voltha.Device_ProxyAddress {
-	if m != nil {
-		return m.ProxyAddress
+func (x *OmciMessage) GetProxyAddress() *voltha.Device_ProxyAddress {
+	if x != nil {
+		return x.ProxyAddress
 	}
 	return nil
 }
 
-func (m *OmciMessage) GetParentDeviceId() string {
-	if m != nil {
-		return m.ParentDeviceId
+func (x *OmciMessage) GetParentDeviceId() string {
+	if x != nil {
+		return x.ParentDeviceId
 	}
 	return ""
 }
 
-func (m *OmciMessage) GetChildDeviceId() string {
-	if m != nil {
-		return m.ChildDeviceId
+func (x *OmciMessage) GetChildDeviceId() string {
+	if x != nil {
+		return x.ChildDeviceId
 	}
 	return ""
 }
 
 type OmciMessages struct {
-	Messages             [][]byte                    `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
-	ConnectStatus        common.ConnectStatus_Types  `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
-	ProxyAddress         *voltha.Device_ProxyAddress `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
-	ParentDeviceId       string                      `protobuf:"bytes,4,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
-	ChildDeviceId        string                      `protobuf:"bytes,5,opt,name=child_device_id,json=childDeviceId,proto3" json:"child_device_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
-	XXX_unrecognized     []byte                      `json:"-"`
-	XXX_sizecache        int32                       `json:"-"`
+	state          protoimpl.MessageState      `protogen:"open.v1"`
+	Messages       [][]byte                    `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
+	ConnectStatus  common.ConnectStatus_Types  `protobuf:"varint,2,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
+	ProxyAddress   *voltha.Device_ProxyAddress `protobuf:"bytes,3,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
+	ParentDeviceId string                      `protobuf:"bytes,4,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
+	ChildDeviceId  string                      `protobuf:"bytes,5,opt,name=child_device_id,json=childDeviceId,proto3" json:"child_device_id,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *OmciMessages) Reset()         { *m = OmciMessages{} }
-func (m *OmciMessages) String() string { return proto.CompactTextString(m) }
-func (*OmciMessages) ProtoMessage()    {}
+func (x *OmciMessages) Reset() {
+	*x = OmciMessages{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciMessages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciMessages) ProtoMessage() {}
+
+func (x *OmciMessages) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciMessages.ProtoReflect.Descriptor instead.
 func (*OmciMessages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{1}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *OmciMessages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciMessages.Unmarshal(m, b)
-}
-func (m *OmciMessages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciMessages.Marshal(b, m, deterministic)
-}
-func (m *OmciMessages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciMessages.Merge(m, src)
-}
-func (m *OmciMessages) XXX_Size() int {
-	return xxx_messageInfo_OmciMessages.Size(m)
-}
-func (m *OmciMessages) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciMessages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciMessages proto.InternalMessageInfo
-
-func (m *OmciMessages) GetMessages() [][]byte {
-	if m != nil {
-		return m.Messages
+func (x *OmciMessages) GetMessages() [][]byte {
+	if x != nil {
+		return x.Messages
 	}
 	return nil
 }
 
-func (m *OmciMessages) GetConnectStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnectStatus
+func (x *OmciMessages) GetConnectStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnectStatus
 	}
-	return common.ConnectStatus_UNKNOWN
+	return common.ConnectStatus_Types(0)
 }
 
-func (m *OmciMessages) GetProxyAddress() *voltha.Device_ProxyAddress {
-	if m != nil {
-		return m.ProxyAddress
+func (x *OmciMessages) GetProxyAddress() *voltha.Device_ProxyAddress {
+	if x != nil {
+		return x.ProxyAddress
 	}
 	return nil
 }
 
-func (m *OmciMessages) GetParentDeviceId() string {
-	if m != nil {
-		return m.ParentDeviceId
+func (x *OmciMessages) GetParentDeviceId() string {
+	if x != nil {
+		return x.ParentDeviceId
 	}
 	return ""
 }
 
-func (m *OmciMessages) GetChildDeviceId() string {
-	if m != nil {
-		return m.ChildDeviceId
+func (x *OmciMessages) GetChildDeviceId() string {
+	if x != nil {
+		return x.ChildDeviceId
 	}
 	return ""
 }
 
 type TechProfileDownloadMessage struct {
-	DeviceId       string `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	UniId          uint32 `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	TpInstancePath string `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId       string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	UniId          uint32                 `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	TpInstancePath string                 `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
 	// Types that are valid to be assigned to TechTpInstance:
+	//
 	//	*TechProfileDownloadMessage_TpInstance
 	//	*TechProfileDownloadMessage_EponTpInstance
-	TechTpInstance       isTechProfileDownloadMessage_TechTpInstance `protobuf_oneof:"tech_tp_instance"`
-	XXX_NoUnkeyedLiteral struct{}                                    `json:"-"`
-	XXX_unrecognized     []byte                                      `json:"-"`
-	XXX_sizecache        int32                                       `json:"-"`
+	TechTpInstance isTechProfileDownloadMessage_TechTpInstance `protobuf_oneof:"tech_tp_instance"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *TechProfileDownloadMessage) Reset()         { *m = TechProfileDownloadMessage{} }
-func (m *TechProfileDownloadMessage) String() string { return proto.CompactTextString(m) }
-func (*TechProfileDownloadMessage) ProtoMessage()    {}
+func (x *TechProfileDownloadMessage) Reset() {
+	*x = TechProfileDownloadMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TechProfileDownloadMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TechProfileDownloadMessage) ProtoMessage() {}
+
+func (x *TechProfileDownloadMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TechProfileDownloadMessage.ProtoReflect.Descriptor instead.
 func (*TechProfileDownloadMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{2}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *TechProfileDownloadMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TechProfileDownloadMessage.Unmarshal(m, b)
-}
-func (m *TechProfileDownloadMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TechProfileDownloadMessage.Marshal(b, m, deterministic)
-}
-func (m *TechProfileDownloadMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TechProfileDownloadMessage.Merge(m, src)
-}
-func (m *TechProfileDownloadMessage) XXX_Size() int {
-	return xxx_messageInfo_TechProfileDownloadMessage.Size(m)
-}
-func (m *TechProfileDownloadMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_TechProfileDownloadMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TechProfileDownloadMessage proto.InternalMessageInfo
-
-func (m *TechProfileDownloadMessage) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *TechProfileDownloadMessage) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *TechProfileDownloadMessage) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *TechProfileDownloadMessage) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func (m *TechProfileDownloadMessage) GetTpInstancePath() string {
-	if m != nil {
-		return m.TpInstancePath
+func (x *TechProfileDownloadMessage) GetTpInstancePath() string {
+	if x != nil {
+		return x.TpInstancePath
 	}
 	return ""
 }
 
+func (x *TechProfileDownloadMessage) GetTechTpInstance() isTechProfileDownloadMessage_TechTpInstance {
+	if x != nil {
+		return x.TechTpInstance
+	}
+	return nil
+}
+
+func (x *TechProfileDownloadMessage) GetTpInstance() *tech_profile.TechProfileInstance {
+	if x != nil {
+		if x, ok := x.TechTpInstance.(*TechProfileDownloadMessage_TpInstance); ok {
+			return x.TpInstance
+		}
+	}
+	return nil
+}
+
+func (x *TechProfileDownloadMessage) GetEponTpInstance() *tech_profile.EponTechProfileInstance {
+	if x != nil {
+		if x, ok := x.TechTpInstance.(*TechProfileDownloadMessage_EponTpInstance); ok {
+			return x.EponTpInstance
+		}
+	}
+	return nil
+}
+
 type isTechProfileDownloadMessage_TechTpInstance interface {
 	isTechProfileDownloadMessage_TechTpInstance()
 }
 
 type TechProfileDownloadMessage_TpInstance struct {
-	TpInstance *tech_profile.TechProfileInstance `protobuf:"bytes,4,opt,name=tp_instance,json=tpInstance,proto3,oneof"`
+	TpInstance *tech_profile.TechProfileInstance `protobuf:"bytes,4,opt,name=tp_instance,json=tpInstance,proto3,oneof"` // relevant for GPON, XGPON and XGS-PON technologies
 }
 
 type TechProfileDownloadMessage_EponTpInstance struct {
-	EponTpInstance *tech_profile.EponTechProfileInstance `protobuf:"bytes,5,opt,name=epon_tp_instance,json=eponTpInstance,proto3,oneof"`
+	EponTpInstance *tech_profile.EponTechProfileInstance `protobuf:"bytes,5,opt,name=epon_tp_instance,json=eponTpInstance,proto3,oneof"` // relevant for EPON technology
 }
 
 func (*TechProfileDownloadMessage_TpInstance) isTechProfileDownloadMessage_TechTpInstance() {}
 
 func (*TechProfileDownloadMessage_EponTpInstance) isTechProfileDownloadMessage_TechTpInstance() {}
 
-func (m *TechProfileDownloadMessage) GetTechTpInstance() isTechProfileDownloadMessage_TechTpInstance {
-	if m != nil {
-		return m.TechTpInstance
-	}
-	return nil
-}
-
-func (m *TechProfileDownloadMessage) GetTpInstance() *tech_profile.TechProfileInstance {
-	if x, ok := m.GetTechTpInstance().(*TechProfileDownloadMessage_TpInstance); ok {
-		return x.TpInstance
-	}
-	return nil
-}
-
-func (m *TechProfileDownloadMessage) GetEponTpInstance() *tech_profile.EponTechProfileInstance {
-	if x, ok := m.GetTechTpInstance().(*TechProfileDownloadMessage_EponTpInstance); ok {
-		return x.EponTpInstance
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*TechProfileDownloadMessage) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*TechProfileDownloadMessage_TpInstance)(nil),
-		(*TechProfileDownloadMessage_EponTpInstance)(nil),
-	}
-}
-
 type DeleteGemPortMessage struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	UniId                uint32   `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	TpInstancePath       string   `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
-	GemPortId            uint32   `protobuf:"varint,4,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId       string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	UniId          uint32                 `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	TpInstancePath string                 `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
+	GemPortId      uint32                 `protobuf:"varint,4,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *DeleteGemPortMessage) Reset()         { *m = DeleteGemPortMessage{} }
-func (m *DeleteGemPortMessage) String() string { return proto.CompactTextString(m) }
-func (*DeleteGemPortMessage) ProtoMessage()    {}
+func (x *DeleteGemPortMessage) Reset() {
+	*x = DeleteGemPortMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeleteGemPortMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteGemPortMessage) ProtoMessage() {}
+
+func (x *DeleteGemPortMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteGemPortMessage.ProtoReflect.Descriptor instead.
 func (*DeleteGemPortMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{3}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *DeleteGemPortMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteGemPortMessage.Unmarshal(m, b)
-}
-func (m *DeleteGemPortMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteGemPortMessage.Marshal(b, m, deterministic)
-}
-func (m *DeleteGemPortMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteGemPortMessage.Merge(m, src)
-}
-func (m *DeleteGemPortMessage) XXX_Size() int {
-	return xxx_messageInfo_DeleteGemPortMessage.Size(m)
-}
-func (m *DeleteGemPortMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteGemPortMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeleteGemPortMessage proto.InternalMessageInfo
-
-func (m *DeleteGemPortMessage) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeleteGemPortMessage) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeleteGemPortMessage) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *DeleteGemPortMessage) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func (m *DeleteGemPortMessage) GetTpInstancePath() string {
-	if m != nil {
-		return m.TpInstancePath
+func (x *DeleteGemPortMessage) GetTpInstancePath() string {
+	if x != nil {
+		return x.TpInstancePath
 	}
 	return ""
 }
 
-func (m *DeleteGemPortMessage) GetGemPortId() uint32 {
-	if m != nil {
-		return m.GemPortId
+func (x *DeleteGemPortMessage) GetGemPortId() uint32 {
+	if x != nil {
+		return x.GemPortId
 	}
 	return 0
 }
 
 type DeleteTcontMessage struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	UniId                uint32   `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	TpInstancePath       string   `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
-	AllocId              uint32   `protobuf:"varint,4,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId       string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	UniId          uint32                 `protobuf:"varint,2,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	TpInstancePath string                 `protobuf:"bytes,3,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
+	AllocId        uint32                 `protobuf:"varint,4,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *DeleteTcontMessage) Reset()         { *m = DeleteTcontMessage{} }
-func (m *DeleteTcontMessage) String() string { return proto.CompactTextString(m) }
-func (*DeleteTcontMessage) ProtoMessage()    {}
+func (x *DeleteTcontMessage) Reset() {
+	*x = DeleteTcontMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeleteTcontMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteTcontMessage) ProtoMessage() {}
+
+func (x *DeleteTcontMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeleteTcontMessage.ProtoReflect.Descriptor instead.
 func (*DeleteTcontMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{4}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *DeleteTcontMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeleteTcontMessage.Unmarshal(m, b)
-}
-func (m *DeleteTcontMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeleteTcontMessage.Marshal(b, m, deterministic)
-}
-func (m *DeleteTcontMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeleteTcontMessage.Merge(m, src)
-}
-func (m *DeleteTcontMessage) XXX_Size() int {
-	return xxx_messageInfo_DeleteTcontMessage.Size(m)
-}
-func (m *DeleteTcontMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeleteTcontMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeleteTcontMessage proto.InternalMessageInfo
-
-func (m *DeleteTcontMessage) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeleteTcontMessage) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeleteTcontMessage) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *DeleteTcontMessage) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func (m *DeleteTcontMessage) GetTpInstancePath() string {
-	if m != nil {
-		return m.TpInstancePath
+func (x *DeleteTcontMessage) GetTpInstancePath() string {
+	if x != nil {
+		return x.TpInstancePath
 	}
 	return ""
 }
 
-func (m *DeleteTcontMessage) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *DeleteTcontMessage) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
 type OnuIndicationMessage struct {
-	DeviceId             string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	OnuIndication        *openolt.OnuIndication `protobuf:"bytes,2,opt,name=onu_indication,json=onuIndication,proto3" json:"onu_indication,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	OnuIndication *openolt.OnuIndication `protobuf:"bytes,2,opt,name=onu_indication,json=onuIndication,proto3" json:"onu_indication,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuIndicationMessage) Reset()         { *m = OnuIndicationMessage{} }
-func (m *OnuIndicationMessage) String() string { return proto.CompactTextString(m) }
-func (*OnuIndicationMessage) ProtoMessage()    {}
+func (x *OnuIndicationMessage) Reset() {
+	*x = OnuIndicationMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuIndicationMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuIndicationMessage) ProtoMessage() {}
+
+func (x *OnuIndicationMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuIndicationMessage.ProtoReflect.Descriptor instead.
 func (*OnuIndicationMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{5}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *OnuIndicationMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuIndicationMessage.Unmarshal(m, b)
-}
-func (m *OnuIndicationMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuIndicationMessage.Marshal(b, m, deterministic)
-}
-func (m *OnuIndicationMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuIndicationMessage.Merge(m, src)
-}
-func (m *OnuIndicationMessage) XXX_Size() int {
-	return xxx_messageInfo_OnuIndicationMessage.Size(m)
-}
-func (m *OnuIndicationMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuIndicationMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuIndicationMessage proto.InternalMessageInfo
-
-func (m *OnuIndicationMessage) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *OnuIndicationMessage) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *OnuIndicationMessage) GetOnuIndication() *openolt.OnuIndication {
-	if m != nil {
-		return m.OnuIndication
+func (x *OnuIndicationMessage) GetOnuIndication() *openolt.OnuIndication {
+	if x != nil {
+		return x.OnuIndication
 	}
 	return nil
 }
 
 type TechProfileInstanceRequestMessage struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	TpInstancePath       string   `protobuf:"bytes,2,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"`
-	ParentDeviceId       string   `protobuf:"bytes,3,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
-	ParentPonPort        uint32   `protobuf:"varint,4,opt,name=parent_pon_port,json=parentPonPort,proto3" json:"parent_pon_port,omitempty"`
-	OnuId                uint32   `protobuf:"varint,5,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	UniId                uint32   `protobuf:"varint,6,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId       string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	TpInstancePath string                 `protobuf:"bytes,2,opt,name=tp_instance_path,json=tpInstancePath,proto3" json:"tp_instance_path,omitempty"` // technology profile instance path
+	ParentDeviceId string                 `protobuf:"bytes,3,opt,name=parent_device_id,json=parentDeviceId,proto3" json:"parent_device_id,omitempty"`
+	ParentPonPort  uint32                 `protobuf:"varint,4,opt,name=parent_pon_port,json=parentPonPort,proto3" json:"parent_pon_port,omitempty"`
+	OnuId          uint32                 `protobuf:"varint,5,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	UniId          uint32                 `protobuf:"varint,6,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *TechProfileInstanceRequestMessage) Reset()         { *m = TechProfileInstanceRequestMessage{} }
-func (m *TechProfileInstanceRequestMessage) String() string { return proto.CompactTextString(m) }
-func (*TechProfileInstanceRequestMessage) ProtoMessage()    {}
+func (x *TechProfileInstanceRequestMessage) Reset() {
+	*x = TechProfileInstanceRequestMessage{}
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TechProfileInstanceRequestMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TechProfileInstanceRequestMessage) ProtoMessage() {}
+
+func (x *TechProfileInstanceRequestMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_inter_adapter_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TechProfileInstanceRequestMessage.ProtoReflect.Descriptor instead.
 func (*TechProfileInstanceRequestMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a316e60f0a1fb837, []int{6}
+	return file_voltha_protos_inter_adapter_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *TechProfileInstanceRequestMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TechProfileInstanceRequestMessage.Unmarshal(m, b)
-}
-func (m *TechProfileInstanceRequestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TechProfileInstanceRequestMessage.Marshal(b, m, deterministic)
-}
-func (m *TechProfileInstanceRequestMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TechProfileInstanceRequestMessage.Merge(m, src)
-}
-func (m *TechProfileInstanceRequestMessage) XXX_Size() int {
-	return xxx_messageInfo_TechProfileInstanceRequestMessage.Size(m)
-}
-func (m *TechProfileInstanceRequestMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_TechProfileInstanceRequestMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TechProfileInstanceRequestMessage proto.InternalMessageInfo
-
-func (m *TechProfileInstanceRequestMessage) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *TechProfileInstanceRequestMessage) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *TechProfileInstanceRequestMessage) GetTpInstancePath() string {
-	if m != nil {
-		return m.TpInstancePath
+func (x *TechProfileInstanceRequestMessage) GetTpInstancePath() string {
+	if x != nil {
+		return x.TpInstancePath
 	}
 	return ""
 }
 
-func (m *TechProfileInstanceRequestMessage) GetParentDeviceId() string {
-	if m != nil {
-		return m.ParentDeviceId
+func (x *TechProfileInstanceRequestMessage) GetParentDeviceId() string {
+	if x != nil {
+		return x.ParentDeviceId
 	}
 	return ""
 }
 
-func (m *TechProfileInstanceRequestMessage) GetParentPonPort() uint32 {
-	if m != nil {
-		return m.ParentPonPort
+func (x *TechProfileInstanceRequestMessage) GetParentPonPort() uint32 {
+	if x != nil {
+		return x.ParentPonPort
 	}
 	return 0
 }
 
-func (m *TechProfileInstanceRequestMessage) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *TechProfileInstanceRequestMessage) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *TechProfileInstanceRequestMessage) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *TechProfileInstanceRequestMessage) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*OmciMessage)(nil), "inter_adapter.OmciMessage")
-	proto.RegisterType((*OmciMessages)(nil), "inter_adapter.OmciMessages")
-	proto.RegisterType((*TechProfileDownloadMessage)(nil), "inter_adapter.TechProfileDownloadMessage")
-	proto.RegisterType((*DeleteGemPortMessage)(nil), "inter_adapter.DeleteGemPortMessage")
-	proto.RegisterType((*DeleteTcontMessage)(nil), "inter_adapter.DeleteTcontMessage")
-	proto.RegisterType((*OnuIndicationMessage)(nil), "inter_adapter.OnuIndicationMessage")
-	proto.RegisterType((*TechProfileInstanceRequestMessage)(nil), "inter_adapter.TechProfileInstanceRequestMessage")
+var File_voltha_protos_inter_adapter_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_inter_adapter_proto_rawDesc = "" +
+	"\n" +
+	"!voltha_protos/inter_adapter.proto\x12\rinter_adapter\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/voltha.proto\x1a voltha_protos/tech_profile.proto\x1a\x1bvoltha_protos/openolt.proto\x1a\x1avoltha_protos/device.proto\"\xff\x01\n" +
+	"\vOmciMessage\x12\x18\n" +
+	"\amessage\x18\x01 \x01(\fR\amessage\x12B\n" +
+	"\x0econnect_status\x18\x02 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\rconnectStatus\x12@\n" +
+	"\rproxy_address\x18\x03 \x01(\v2\x1b.device.Device.ProxyAddressR\fproxyAddress\x12(\n" +
+	"\x10parent_device_id\x18\x04 \x01(\tR\x0eparentDeviceId\x12&\n" +
+	"\x0fchild_device_id\x18\x05 \x01(\tR\rchildDeviceId\"\x82\x02\n" +
+	"\fOmciMessages\x12\x1a\n" +
+	"\bmessages\x18\x01 \x03(\fR\bmessages\x12B\n" +
+	"\x0econnect_status\x18\x02 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\rconnectStatus\x12@\n" +
+	"\rproxy_address\x18\x03 \x01(\v2\x1b.device.Device.ProxyAddressR\fproxyAddress\x12(\n" +
+	"\x10parent_device_id\x18\x04 \x01(\tR\x0eparentDeviceId\x12&\n" +
+	"\x0fchild_device_id\x18\x05 \x01(\tR\rchildDeviceId\"\xa7\x02\n" +
+	"\x1aTechProfileDownloadMessage\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x15\n" +
+	"\x06uni_id\x18\x02 \x01(\rR\x05uniId\x12(\n" +
+	"\x10tp_instance_path\x18\x03 \x01(\tR\x0etpInstancePath\x12D\n" +
+	"\vtp_instance\x18\x04 \x01(\v2!.tech_profile.TechProfileInstanceH\x00R\n" +
+	"tpInstance\x12Q\n" +
+	"\x10epon_tp_instance\x18\x05 \x01(\v2%.tech_profile.EponTechProfileInstanceH\x00R\x0eeponTpInstanceB\x12\n" +
+	"\x10tech_tp_instance\"\x94\x01\n" +
+	"\x14DeleteGemPortMessage\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x15\n" +
+	"\x06uni_id\x18\x02 \x01(\rR\x05uniId\x12(\n" +
+	"\x10tp_instance_path\x18\x03 \x01(\tR\x0etpInstancePath\x12\x1e\n" +
+	"\vgem_port_id\x18\x04 \x01(\rR\tgemPortId\"\x8d\x01\n" +
+	"\x12DeleteTcontMessage\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x15\n" +
+	"\x06uni_id\x18\x02 \x01(\rR\x05uniId\x12(\n" +
+	"\x10tp_instance_path\x18\x03 \x01(\tR\x0etpInstancePath\x12\x19\n" +
+	"\balloc_id\x18\x04 \x01(\rR\aallocId\"r\n" +
+	"\x14OnuIndicationMessage\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12=\n" +
+	"\x0eonu_indication\x18\x02 \x01(\v2\x16.openolt.OnuIndicationR\ronuIndication\"\xea\x01\n" +
+	"!TechProfileInstanceRequestMessage\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12(\n" +
+	"\x10tp_instance_path\x18\x02 \x01(\tR\x0etpInstancePath\x12(\n" +
+	"\x10parent_device_id\x18\x03 \x01(\tR\x0eparentDeviceId\x12&\n" +
+	"\x0fparent_pon_port\x18\x04 \x01(\rR\rparentPonPort\x12\x15\n" +
+	"\x06onu_id\x18\x05 \x01(\rR\x05onuId\x12\x15\n" +
+	"\x06uni_id\x18\x06 \x01(\rR\x05uniIdBZ\n" +
+	"!org.opencord.voltha.inter_adapterZ5github.com/opencord/voltha-protos/v5/go/inter_adapterb\x06proto3"
+
+var (
+	file_voltha_protos_inter_adapter_proto_rawDescOnce sync.Once
+	file_voltha_protos_inter_adapter_proto_rawDescData []byte
+)
+
+func file_voltha_protos_inter_adapter_proto_rawDescGZIP() []byte {
+	file_voltha_protos_inter_adapter_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_inter_adapter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_inter_adapter_proto_rawDesc), len(file_voltha_protos_inter_adapter_proto_rawDesc)))
+	})
+	return file_voltha_protos_inter_adapter_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/inter_adapter.proto", fileDescriptor_a316e60f0a1fb837) }
+var file_voltha_protos_inter_adapter_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_voltha_protos_inter_adapter_proto_goTypes = []any{
+	(*OmciMessage)(nil),                          // 0: inter_adapter.OmciMessage
+	(*OmciMessages)(nil),                         // 1: inter_adapter.OmciMessages
+	(*TechProfileDownloadMessage)(nil),           // 2: inter_adapter.TechProfileDownloadMessage
+	(*DeleteGemPortMessage)(nil),                 // 3: inter_adapter.DeleteGemPortMessage
+	(*DeleteTcontMessage)(nil),                   // 4: inter_adapter.DeleteTcontMessage
+	(*OnuIndicationMessage)(nil),                 // 5: inter_adapter.OnuIndicationMessage
+	(*TechProfileInstanceRequestMessage)(nil),    // 6: inter_adapter.TechProfileInstanceRequestMessage
+	(common.ConnectStatus_Types)(0),              // 7: common.ConnectStatus.Types
+	(*voltha.Device_ProxyAddress)(nil),           // 8: device.Device.ProxyAddress
+	(*tech_profile.TechProfileInstance)(nil),     // 9: tech_profile.TechProfileInstance
+	(*tech_profile.EponTechProfileInstance)(nil), // 10: tech_profile.EponTechProfileInstance
+	(*openolt.OnuIndication)(nil),                // 11: openolt.OnuIndication
+}
+var file_voltha_protos_inter_adapter_proto_depIdxs = []int32{
+	7,  // 0: inter_adapter.OmciMessage.connect_status:type_name -> common.ConnectStatus.Types
+	8,  // 1: inter_adapter.OmciMessage.proxy_address:type_name -> device.Device.ProxyAddress
+	7,  // 2: inter_adapter.OmciMessages.connect_status:type_name -> common.ConnectStatus.Types
+	8,  // 3: inter_adapter.OmciMessages.proxy_address:type_name -> device.Device.ProxyAddress
+	9,  // 4: inter_adapter.TechProfileDownloadMessage.tp_instance:type_name -> tech_profile.TechProfileInstance
+	10, // 5: inter_adapter.TechProfileDownloadMessage.epon_tp_instance:type_name -> tech_profile.EponTechProfileInstance
+	11, // 6: inter_adapter.OnuIndicationMessage.onu_indication:type_name -> openolt.OnuIndication
+	7,  // [7:7] is the sub-list for method output_type
+	7,  // [7:7] is the sub-list for method input_type
+	7,  // [7:7] is the sub-list for extension type_name
+	7,  // [7:7] is the sub-list for extension extendee
+	0,  // [0:7] is the sub-list for field type_name
+}
 
-var fileDescriptor_a316e60f0a1fb837 = []byte{
-	// 632 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x55, 0xc1, 0x6e, 0xd3, 0x4c,
-	0x10, 0xfe, 0x9d, 0xfe, 0x69, 0x9b, 0x49, 0x1c, 0x2a, 0xab, 0xa0, 0x90, 0x48, 0x28, 0x89, 0x04,
-	0xca, 0x05, 0x57, 0x0a, 0xea, 0x11, 0x09, 0x4a, 0x10, 0xe4, 0x80, 0x1a, 0x4c, 0x4e, 0xbd, 0x58,
-	0xdb, 0xdd, 0x25, 0x5e, 0xc9, 0xd9, 0x59, 0xec, 0x75, 0xa1, 0x57, 0xee, 0xdc, 0x78, 0x07, 0xde,
-	0x8d, 0x97, 0x00, 0x79, 0xd7, 0x6e, 0x6c, 0x64, 0xa4, 0x9e, 0x7a, 0xe0, 0x14, 0xcf, 0xcc, 0x37,
-	0x5f, 0xbe, 0x99, 0xd9, 0xdd, 0x81, 0xc9, 0x15, 0xc6, 0x3a, 0x22, 0xa1, 0x4a, 0x50, 0x63, 0x7a,
-	0x22, 0xa4, 0xe6, 0x49, 0x48, 0x18, 0x51, 0x9a, 0x27, 0xbe, 0x71, 0x7a, 0x6e, 0xcd, 0x39, 0x1c,
-	0xd6, 0x33, 0x28, 0x6e, 0xb7, 0x28, 0x2d, 0xf4, 0xcf, 0x98, 0xb5, 0x8a, 0xd8, 0xb8, 0x1e, 0xd3,
-	0x9c, 0x46, 0xf9, 0xf7, 0x47, 0x11, 0xf3, 0x02, 0x31, 0xaa, 0x23, 0x50, 0x71, 0x89, 0xb1, 0x6e,
-	0xa6, 0x66, 0xfc, 0x4a, 0xd0, 0x22, 0x71, 0xfa, 0xcb, 0x81, 0xee, 0xf9, 0x96, 0x8a, 0x77, 0x3c,
-	0x4d, 0xc9, 0x86, 0x7b, 0x03, 0x38, 0xd8, 0xda, 0xcf, 0x81, 0x33, 0x76, 0x66, 0xbd, 0xa0, 0x34,
-	0xbd, 0x33, 0xe8, 0x53, 0x94, 0x92, 0x53, 0x1d, 0xa6, 0x9a, 0xe8, 0x2c, 0x1d, 0xb4, 0xc6, 0xce,
-	0xac, 0x3f, 0x1f, 0xf9, 0x45, 0x1d, 0xaf, 0x6c, 0xf4, 0x83, 0x09, 0xfa, 0xeb, 0x6b, 0xc5, 0xd3,
-	0xc0, 0xa5, 0x55, 0xa7, 0xf7, 0x02, 0x5c, 0x95, 0xe0, 0x97, 0xeb, 0x90, 0x30, 0x96, 0xf0, 0x34,
-	0x1d, 0xec, 0x8d, 0x9d, 0x59, 0x77, 0x3e, 0xf2, 0x0b, 0x4d, 0x0b, 0xfb, 0xb3, 0xca, 0x31, 0x2f,
-	0x2d, 0x24, 0xe8, 0xa9, 0x8a, 0xe5, 0xcd, 0xe0, 0x48, 0x91, 0x84, 0x4b, 0x1d, 0xda, 0x94, 0x50,
-	0xb0, 0xc1, 0xff, 0x63, 0x67, 0xd6, 0x09, 0xfa, 0xd6, 0x6f, 0x29, 0x96, 0xcc, 0x7b, 0x02, 0xf7,
-	0x68, 0x24, 0x62, 0x56, 0x01, 0xb6, 0x0d, 0xd0, 0x35, 0xee, 0x12, 0x37, 0xfd, 0xda, 0x82, 0x5e,
-	0xa5, 0x03, 0xa9, 0x37, 0x84, 0xc3, 0xa2, 0xe6, 0x74, 0xe0, 0x8c, 0xf7, 0x66, 0xbd, 0xe0, 0xc6,
-	0xfe, 0x67, 0x9b, 0xf0, 0xa3, 0x05, 0xc3, 0x35, 0xa7, 0xd1, 0xca, 0x9e, 0xaa, 0x05, 0x7e, 0x96,
-	0x31, 0x12, 0x56, 0x9e, 0x8a, 0x11, 0x74, 0x76, 0x04, 0x8e, 0x21, 0x38, 0x64, 0xe5, 0x7f, 0xdc,
-	0x87, 0xfd, 0x4c, 0x8a, 0x3c, 0x92, 0xf7, 0xc2, 0x0d, 0xda, 0x99, 0x14, 0x4b, 0x96, 0x8b, 0xd4,
-	0x2a, 0x14, 0x32, 0xd5, 0x44, 0x52, 0x1e, 0x2a, 0xa2, 0x23, 0x53, 0x69, 0x27, 0xe8, 0x6b, 0xb5,
-	0x2c, 0xdc, 0x2b, 0xa2, 0x23, 0x6f, 0x01, 0xdd, 0x0a, 0xd2, 0x54, 0xd2, 0x9d, 0x4f, 0xfc, 0xda,
-	0x31, 0xaf, 0x88, 0x2b, 0x73, 0xdf, 0xfe, 0x17, 0xc0, 0x8e, 0xc9, 0x7b, 0x0f, 0x47, 0x5c, 0xa1,
-	0x0c, 0xab, 0x54, 0x6d, 0x43, 0xf5, 0xb8, 0x4e, 0xf5, 0x5a, 0xa1, 0x6c, 0xa6, 0xeb, 0xe7, 0x04,
-	0xeb, 0x1b, 0xca, 0x33, 0x0f, 0x8e, 0x4c, 0x66, 0x85, 0x72, 0xfa, 0xdd, 0x81, 0xe3, 0x05, 0x8f,
-	0xb9, 0xe6, 0x6f, 0xf8, 0x76, 0x85, 0x89, 0xbe, 0x9b, 0x1e, 0x3d, 0x82, 0xee, 0x86, 0x6f, 0x43,
-	0x85, 0x89, 0x2e, 0xa7, 0xed, 0x06, 0x9d, 0x8d, 0x95, 0xb0, 0x64, 0xd3, 0x6f, 0x0e, 0x78, 0x56,
-	0xd6, 0x9a, 0xa2, 0xbc, 0x23, 0x51, 0x0f, 0xe1, 0x90, 0xc4, 0x31, 0xd2, 0x9d, 0xa2, 0x03, 0x63,
-	0x2f, 0xd9, 0x34, 0x81, 0xe3, 0x73, 0x99, 0x2d, 0x25, 0x13, 0x94, 0x68, 0x81, 0xf2, 0x56, 0x82,
-	0x9e, 0x43, 0x1f, 0x65, 0x16, 0x8a, 0x9b, 0x2c, 0x23, 0xac, 0x3b, 0x7f, 0xe0, 0x97, 0x0f, 0x5a,
-	0x8d, 0x33, 0x70, 0xb1, 0x6a, 0x4e, 0x7f, 0x3a, 0x30, 0x69, 0x18, 0x6c, 0xc0, 0x3f, 0x65, 0x3c,
-	0xbd, 0x5d, 0x4b, 0x9a, 0x6a, 0x6f, 0x35, 0xd6, 0xde, 0x74, 0x07, 0xf7, 0xfe, 0x76, 0x07, 0x0b,
-	0x64, 0x7e, 0x3c, 0xf3, 0x09, 0x16, 0xcd, 0x72, 0xad, 0x7b, 0x85, 0x32, 0x1f, 0x62, 0x3e, 0x0e,
-	0x53, 0xbd, 0xbd, 0xa2, 0x6e, 0xd0, 0xce, 0xab, 0xab, 0x4e, 0x69, 0xbf, 0x32, 0xa5, 0xb3, 0x0b,
-	0x98, 0x60, 0xb2, 0x31, 0x8d, 0xa1, 0x98, 0x30, 0xbf, 0x58, 0x18, 0xb5, 0x85, 0x73, 0x71, 0xba,
-	0x11, 0x3a, 0xca, 0x2e, 0xf3, 0xc7, 0xe9, 0xa4, 0x44, 0x16, 0xab, 0xe5, 0x69, 0xb9, 0x68, 0x4e,
-	0x4f, 0x36, 0x58, 0x5f, 0x5e, 0x97, 0xfb, 0x26, 0xf6, 0xec, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0xeb, 0x5f, 0xd8, 0xf3, 0xe2, 0x06, 0x00, 0x00,
+func init() { file_voltha_protos_inter_adapter_proto_init() }
+func file_voltha_protos_inter_adapter_proto_init() {
+	if File_voltha_protos_inter_adapter_proto != nil {
+		return
+	}
+	file_voltha_protos_inter_adapter_proto_msgTypes[2].OneofWrappers = []any{
+		(*TechProfileDownloadMessage_TpInstance)(nil),
+		(*TechProfileDownloadMessage_EponTpInstance)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_inter_adapter_proto_rawDesc), len(file_voltha_protos_inter_adapter_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   7,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_inter_adapter_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_inter_adapter_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_inter_adapter_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_inter_adapter_proto = out.File
+	file_voltha_protos_inter_adapter_proto_goTypes = nil
+	file_voltha_protos_inter_adapter_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
index 1e5c21c..1be5d31 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service.pb.go
@@ -1,284 +1,85 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/olt_inter_adapter_service.proto
 
 package olt_inter_adapter_service
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+var File_voltha_protos_olt_inter_adapter_service_proto protoreflect.FileDescriptor
 
-func init() {
-	proto.RegisterFile("voltha_protos/olt_inter_adapter_service.proto", fileDescriptor_3ddb40a5aae0f6e1)
+const file_voltha_protos_olt_inter_adapter_service_proto_rawDesc = "" +
+	"\n" +
+	"-voltha_protos/olt_inter_adapter_service.proto\x12\x19olt_inter_adapter_service\x1a\x1avoltha_protos/common.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a!voltha_protos/inter_adapter.proto\x1a\x1avoltha_protos/health.proto2\xe2\x02\n" +
+	"\x16OltInterAdapterService\x12?\n" +
+	"\x0fGetHealthStatus\x12\x12.common.Connection\x1a\x14.health.HealthStatus(\x010\x01\x12F\n" +
+	"\x10ProxyOmciRequest\x12\x1a.inter_adapter.OmciMessage\x1a\x16.google.protobuf.Empty\x12H\n" +
+	"\x11ProxyOmciRequests\x12\x1b.inter_adapter.OmciMessages\x1a\x16.google.protobuf.Empty\x12u\n" +
+	"\x16GetTechProfileInstance\x120.inter_adapter.TechProfileInstanceRequestMessage\x1a).inter_adapter.TechProfileDownloadMessageB\x90\x01\n" +
+	"-org.opencord.voltha.olt_inter_adapter_serviceB\x1cVolthaOltInterAdapterServiceZAgithub.com/opencord/voltha-protos/v5/go/olt_inter_adapter_serviceb\x06proto3"
+
+var file_voltha_protos_olt_inter_adapter_service_proto_goTypes = []any{
+	(*common.Connection)(nil),                               // 0: common.Connection
+	(*inter_adapter.OmciMessage)(nil),                       // 1: inter_adapter.OmciMessage
+	(*inter_adapter.OmciMessages)(nil),                      // 2: inter_adapter.OmciMessages
+	(*inter_adapter.TechProfileInstanceRequestMessage)(nil), // 3: inter_adapter.TechProfileInstanceRequestMessage
+	(*health.HealthStatus)(nil),                             // 4: health.HealthStatus
+	(*emptypb.Empty)(nil),                                   // 5: google.protobuf.Empty
+	(*inter_adapter.TechProfileDownloadMessage)(nil),        // 6: inter_adapter.TechProfileDownloadMessage
+}
+var file_voltha_protos_olt_inter_adapter_service_proto_depIdxs = []int32{
+	0, // 0: olt_inter_adapter_service.OltInterAdapterService.GetHealthStatus:input_type -> common.Connection
+	1, // 1: olt_inter_adapter_service.OltInterAdapterService.ProxyOmciRequest:input_type -> inter_adapter.OmciMessage
+	2, // 2: olt_inter_adapter_service.OltInterAdapterService.ProxyOmciRequests:input_type -> inter_adapter.OmciMessages
+	3, // 3: olt_inter_adapter_service.OltInterAdapterService.GetTechProfileInstance:input_type -> inter_adapter.TechProfileInstanceRequestMessage
+	4, // 4: olt_inter_adapter_service.OltInterAdapterService.GetHealthStatus:output_type -> health.HealthStatus
+	5, // 5: olt_inter_adapter_service.OltInterAdapterService.ProxyOmciRequest:output_type -> google.protobuf.Empty
+	5, // 6: olt_inter_adapter_service.OltInterAdapterService.ProxyOmciRequests:output_type -> google.protobuf.Empty
+	6, // 7: olt_inter_adapter_service.OltInterAdapterService.GetTechProfileInstance:output_type -> inter_adapter.TechProfileDownloadMessage
+	4, // [4:8] is the sub-list for method output_type
+	0, // [0:4] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
 }
 
-var fileDescriptor_3ddb40a5aae0f6e1 = []byte{
-	// 337 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x4e, 0xe3, 0x30,
-	0x10, 0x87, 0xd5, 0x3d, 0xec, 0xc1, 0x97, 0xdd, 0xb5, 0x56, 0x95, 0x48, 0xb9, 0x70, 0x83, 0x43,
-	0x9d, 0x0a, 0xc4, 0x19, 0xb5, 0xfc, 0x69, 0x7b, 0x40, 0xad, 0x28, 0xe2, 0xc0, 0xa5, 0x72, 0xdd,
-	0x69, 0x12, 0xc9, 0xf1, 0x04, 0x7b, 0x52, 0xe8, 0x5b, 0xf0, 0x8c, 0x3c, 0x09, 0x4a, 0xec, 0x4a,
-	0xa4, 0x6a, 0x4e, 0x51, 0x34, 0xdf, 0xef, 0xf3, 0x8c, 0x66, 0x58, 0x7f, 0x8b, 0x9a, 0x52, 0xb9,
-	0x2c, 0x2c, 0x12, 0xba, 0x18, 0x35, 0x2d, 0x33, 0x43, 0x60, 0x97, 0x72, 0x2d, 0x8b, 0xea, 0xeb,
-	0xc0, 0x6e, 0x33, 0x05, 0xa2, 0x06, 0xf8, 0x49, 0x2b, 0x10, 0x45, 0x4d, 0x93, 0xc2, 0x3c, 0x47,
-	0xe3, 0x63, 0x51, 0x2f, 0x41, 0x4c, 0x34, 0xc4, 0xf5, 0xdf, 0xaa, 0xdc, 0xc4, 0x90, 0x17, 0xb4,
-	0x0b, 0xc5, 0xb3, 0x66, 0xb0, 0x61, 0x0f, 0xc8, 0x81, 0x3b, 0x05, 0xa9, 0x29, 0xf5, 0xb5, 0xcb,
-	0xaf, 0x5f, 0xac, 0x3b, 0xd3, 0x34, 0xad, 0x62, 0x43, 0x9f, 0x5a, 0xf8, 0x96, 0xf8, 0x0d, 0xfb,
-	0x33, 0x06, 0x9a, 0xd4, 0xf4, 0x82, 0x24, 0x95, 0x8e, 0x73, 0x11, 0x1a, 0xbb, 0x45, 0x63, 0x40,
-	0x51, 0x86, 0x26, 0xfa, 0x2f, 0x82, 0xf0, 0x27, 0x79, 0xde, 0x19, 0x74, 0xf8, 0x03, 0xfb, 0x3b,
-	0xb7, 0xf8, 0xb1, 0x9b, 0xe5, 0x2a, 0x7b, 0x82, 0xb7, 0x12, 0x1c, 0xf1, 0x48, 0x34, 0x3b, 0xac,
-	0x6a, 0x8f, 0xe0, 0x9c, 0x4c, 0x20, 0xea, 0x0a, 0x3f, 0xa8, 0xd8, 0x0f, 0x2a, 0xee, 0xab, 0x41,
-	0xf9, 0x84, 0xfd, 0x3b, 0xf4, 0x38, 0xde, 0x6b, 0x17, 0xb9, 0x56, 0x53, 0xc9, 0xba, 0x63, 0xa0,
-	0x67, 0x50, 0xe9, 0xdc, 0xe2, 0x26, 0xd3, 0x30, 0x35, 0x8e, 0xa4, 0x51, 0xc0, 0x07, 0x07, 0xba,
-	0x23, 0x4c, 0x78, 0x7a, 0xdf, 0xed, 0x45, 0x7b, 0xe2, 0x0e, 0xdf, 0x8d, 0x46, 0xb9, 0x0e, 0xe8,
-	0xe8, 0xb3, 0xc3, 0xfa, 0x68, 0x13, 0x81, 0x05, 0x18, 0x85, 0x76, 0x2d, 0xfc, 0x42, 0x44, 0xeb,
-	0x39, 0x8c, 0x4e, 0x5f, 0x6a, 0xe2, 0xf8, 0x66, 0x5e, 0x87, 0x49, 0x46, 0x69, 0xb9, 0xaa, 0x96,
-	0x11, 0xef, 0x9d, 0xb1, 0x77, 0xf6, 0xc3, 0x92, 0xb7, 0xd7, 0x71, 0x82, 0xed, 0x07, 0xb9, 0xfa,
-	0x5d, 0x73, 0x57, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x9f, 0xd5, 0x8e, 0xc2, 0x02, 0x00,
-	0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// OltInterAdapterServiceClient is the client API for OltInterAdapterService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type OltInterAdapterServiceClient interface {
-	// GetHealthStatus is used by a OltInterAdapterService client to detect a connection
-	// lost with the gRPC server hosting the OltInterAdapterService service
-	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (OltInterAdapterService_GetHealthStatusClient, error)
-	ProxyOmciRequest(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	ProxyOmciRequests(ctx context.Context, in *inter_adapter.OmciMessages, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetTechProfileInstance(ctx context.Context, in *inter_adapter.TechProfileInstanceRequestMessage, opts ...grpc.CallOption) (*inter_adapter.TechProfileDownloadMessage, error)
-}
-
-type oltInterAdapterServiceClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewOltInterAdapterServiceClient(cc *grpc.ClientConn) OltInterAdapterServiceClient {
-	return &oltInterAdapterServiceClient{cc}
-}
-
-func (c *oltInterAdapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (OltInterAdapterService_GetHealthStatusClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_OltInterAdapterService_serviceDesc.Streams[0], "/olt_inter_adapter_service.OltInterAdapterService/GetHealthStatus", opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_olt_inter_adapter_service_proto_init() }
+func file_voltha_protos_olt_inter_adapter_service_proto_init() {
+	if File_voltha_protos_olt_inter_adapter_service_proto != nil {
+		return
 	}
-	x := &oltInterAdapterServiceGetHealthStatusClient{stream}
-	return x, nil
-}
-
-type OltInterAdapterService_GetHealthStatusClient interface {
-	Send(*common.Connection) error
-	Recv() (*health.HealthStatus, error)
-	grpc.ClientStream
-}
-
-type oltInterAdapterServiceGetHealthStatusClient struct {
-	grpc.ClientStream
-}
-
-func (x *oltInterAdapterServiceGetHealthStatusClient) Send(m *common.Connection) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *oltInterAdapterServiceGetHealthStatusClient) Recv() (*health.HealthStatus, error) {
-	m := new(health.HealthStatus)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *oltInterAdapterServiceClient) ProxyOmciRequest(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequest", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *oltInterAdapterServiceClient) ProxyOmciRequests(ctx context.Context, in *inter_adapter.OmciMessages, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequests", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *oltInterAdapterServiceClient) GetTechProfileInstance(ctx context.Context, in *inter_adapter.TechProfileInstanceRequestMessage, opts ...grpc.CallOption) (*inter_adapter.TechProfileDownloadMessage, error) {
-	out := new(inter_adapter.TechProfileDownloadMessage)
-	err := c.cc.Invoke(ctx, "/olt_inter_adapter_service.OltInterAdapterService/GetTechProfileInstance", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// OltInterAdapterServiceServer is the server API for OltInterAdapterService service.
-type OltInterAdapterServiceServer interface {
-	// GetHealthStatus is used by a OltInterAdapterService client to detect a connection
-	// lost with the gRPC server hosting the OltInterAdapterService service
-	GetHealthStatus(OltInterAdapterService_GetHealthStatusServer) error
-	ProxyOmciRequest(context.Context, *inter_adapter.OmciMessage) (*empty.Empty, error)
-	ProxyOmciRequests(context.Context, *inter_adapter.OmciMessages) (*empty.Empty, error)
-	GetTechProfileInstance(context.Context, *inter_adapter.TechProfileInstanceRequestMessage) (*inter_adapter.TechProfileDownloadMessage, error)
-}
-
-// UnimplementedOltInterAdapterServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedOltInterAdapterServiceServer struct {
-}
-
-func (*UnimplementedOltInterAdapterServiceServer) GetHealthStatus(srv OltInterAdapterService_GetHealthStatusServer) error {
-	return status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
-}
-func (*UnimplementedOltInterAdapterServiceServer) ProxyOmciRequest(ctx context.Context, req *inter_adapter.OmciMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ProxyOmciRequest not implemented")
-}
-func (*UnimplementedOltInterAdapterServiceServer) ProxyOmciRequests(ctx context.Context, req *inter_adapter.OmciMessages) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ProxyOmciRequests not implemented")
-}
-func (*UnimplementedOltInterAdapterServiceServer) GetTechProfileInstance(ctx context.Context, req *inter_adapter.TechProfileInstanceRequestMessage) (*inter_adapter.TechProfileDownloadMessage, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetTechProfileInstance not implemented")
-}
-
-func RegisterOltInterAdapterServiceServer(s *grpc.Server, srv OltInterAdapterServiceServer) {
-	s.RegisterService(&_OltInterAdapterService_serviceDesc, srv)
-}
-
-func _OltInterAdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(OltInterAdapterServiceServer).GetHealthStatus(&oltInterAdapterServiceGetHealthStatusServer{stream})
-}
-
-type OltInterAdapterService_GetHealthStatusServer interface {
-	Send(*health.HealthStatus) error
-	Recv() (*common.Connection, error)
-	grpc.ServerStream
-}
-
-type oltInterAdapterServiceGetHealthStatusServer struct {
-	grpc.ServerStream
-}
-
-func (x *oltInterAdapterServiceGetHealthStatusServer) Send(m *health.HealthStatus) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *oltInterAdapterServiceGetHealthStatusServer) Recv() (*common.Connection, error) {
-	m := new(common.Connection)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _OltInterAdapterService_ProxyOmciRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.OmciMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OltInterAdapterServiceServer).ProxyOmciRequest(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequest",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OltInterAdapterServiceServer).ProxyOmciRequest(ctx, req.(*inter_adapter.OmciMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OltInterAdapterService_ProxyOmciRequests_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.OmciMessages)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OltInterAdapterServiceServer).ProxyOmciRequests(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequests",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OltInterAdapterServiceServer).ProxyOmciRequests(ctx, req.(*inter_adapter.OmciMessages))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OltInterAdapterService_GetTechProfileInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.TechProfileInstanceRequestMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OltInterAdapterServiceServer).GetTechProfileInstance(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/olt_inter_adapter_service.OltInterAdapterService/GetTechProfileInstance",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OltInterAdapterServiceServer).GetTechProfileInstance(ctx, req.(*inter_adapter.TechProfileInstanceRequestMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _OltInterAdapterService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "olt_inter_adapter_service.OltInterAdapterService",
-	HandlerType: (*OltInterAdapterServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "ProxyOmciRequest",
-			Handler:    _OltInterAdapterService_ProxyOmciRequest_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_olt_inter_adapter_service_proto_rawDesc), len(file_voltha_protos_olt_inter_adapter_service_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "ProxyOmciRequests",
-			Handler:    _OltInterAdapterService_ProxyOmciRequests_Handler,
-		},
-		{
-			MethodName: "GetTechProfileInstance",
-			Handler:    _OltInterAdapterService_GetTechProfileInstance_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "GetHealthStatus",
-			Handler:       _OltInterAdapterService_GetHealthStatus_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "voltha_protos/olt_inter_adapter_service.proto",
+		GoTypes:           file_voltha_protos_olt_inter_adapter_service_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_olt_inter_adapter_service_proto_depIdxs,
+	}.Build()
+	File_voltha_protos_olt_inter_adapter_service_proto = out.File
+	file_voltha_protos_olt_inter_adapter_service_proto_goTypes = nil
+	file_voltha_protos_olt_inter_adapter_service_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service_grpc.pb.go
new file mode 100644
index 0000000..472b828
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/olt_inter_adapter_service/olt_inter_adapter_service_grpc.pb.go
@@ -0,0 +1,239 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/olt_inter_adapter_service.proto
+
+package olt_inter_adapter_service
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	health "github.com/opencord/voltha-protos/v5/go/health"
+	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	OltInterAdapterService_GetHealthStatus_FullMethodName        = "/olt_inter_adapter_service.OltInterAdapterService/GetHealthStatus"
+	OltInterAdapterService_ProxyOmciRequest_FullMethodName       = "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequest"
+	OltInterAdapterService_ProxyOmciRequests_FullMethodName      = "/olt_inter_adapter_service.OltInterAdapterService/ProxyOmciRequests"
+	OltInterAdapterService_GetTechProfileInstance_FullMethodName = "/olt_inter_adapter_service.OltInterAdapterService/GetTechProfileInstance"
+)
+
+// OltInterAdapterServiceClient is the client API for OltInterAdapterService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type OltInterAdapterServiceClient interface {
+	// GetHealthStatus is used by a OltInterAdapterService client to detect a connection
+	// lost with the gRPC server hosting the OltInterAdapterService service
+	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error)
+	ProxyOmciRequest(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	ProxyOmciRequests(ctx context.Context, in *inter_adapter.OmciMessages, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetTechProfileInstance(ctx context.Context, in *inter_adapter.TechProfileInstanceRequestMessage, opts ...grpc.CallOption) (*inter_adapter.TechProfileDownloadMessage, error)
+}
+
+type oltInterAdapterServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewOltInterAdapterServiceClient(cc grpc.ClientConnInterface) OltInterAdapterServiceClient {
+	return &oltInterAdapterServiceClient{cc}
+}
+
+func (c *oltInterAdapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &OltInterAdapterService_ServiceDesc.Streams[0], OltInterAdapterService_GetHealthStatus_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[common.Connection, health.HealthStatus]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type OltInterAdapterService_GetHealthStatusClient = grpc.BidiStreamingClient[common.Connection, health.HealthStatus]
+
+func (c *oltInterAdapterServiceClient) ProxyOmciRequest(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OltInterAdapterService_ProxyOmciRequest_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *oltInterAdapterServiceClient) ProxyOmciRequests(ctx context.Context, in *inter_adapter.OmciMessages, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OltInterAdapterService_ProxyOmciRequests_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *oltInterAdapterServiceClient) GetTechProfileInstance(ctx context.Context, in *inter_adapter.TechProfileInstanceRequestMessage, opts ...grpc.CallOption) (*inter_adapter.TechProfileDownloadMessage, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(inter_adapter.TechProfileDownloadMessage)
+	err := c.cc.Invoke(ctx, OltInterAdapterService_GetTechProfileInstance_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// OltInterAdapterServiceServer is the server API for OltInterAdapterService service.
+// All implementations must embed UnimplementedOltInterAdapterServiceServer
+// for forward compatibility.
+type OltInterAdapterServiceServer interface {
+	// GetHealthStatus is used by a OltInterAdapterService client to detect a connection
+	// lost with the gRPC server hosting the OltInterAdapterService service
+	GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error
+	ProxyOmciRequest(context.Context, *inter_adapter.OmciMessage) (*emptypb.Empty, error)
+	ProxyOmciRequests(context.Context, *inter_adapter.OmciMessages) (*emptypb.Empty, error)
+	GetTechProfileInstance(context.Context, *inter_adapter.TechProfileInstanceRequestMessage) (*inter_adapter.TechProfileDownloadMessage, error)
+	mustEmbedUnimplementedOltInterAdapterServiceServer()
+}
+
+// UnimplementedOltInterAdapterServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedOltInterAdapterServiceServer struct{}
+
+func (UnimplementedOltInterAdapterServiceServer) GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error {
+	return status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedOltInterAdapterServiceServer) ProxyOmciRequest(context.Context, *inter_adapter.OmciMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ProxyOmciRequest not implemented")
+}
+func (UnimplementedOltInterAdapterServiceServer) ProxyOmciRequests(context.Context, *inter_adapter.OmciMessages) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ProxyOmciRequests not implemented")
+}
+func (UnimplementedOltInterAdapterServiceServer) GetTechProfileInstance(context.Context, *inter_adapter.TechProfileInstanceRequestMessage) (*inter_adapter.TechProfileDownloadMessage, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetTechProfileInstance not implemented")
+}
+func (UnimplementedOltInterAdapterServiceServer) mustEmbedUnimplementedOltInterAdapterServiceServer() {
+}
+func (UnimplementedOltInterAdapterServiceServer) testEmbeddedByValue() {}
+
+// UnsafeOltInterAdapterServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to OltInterAdapterServiceServer will
+// result in compilation errors.
+type UnsafeOltInterAdapterServiceServer interface {
+	mustEmbedUnimplementedOltInterAdapterServiceServer()
+}
+
+func RegisterOltInterAdapterServiceServer(s grpc.ServiceRegistrar, srv OltInterAdapterServiceServer) {
+	// If the following call panics, it indicates UnimplementedOltInterAdapterServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&OltInterAdapterService_ServiceDesc, srv)
+}
+
+func _OltInterAdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(OltInterAdapterServiceServer).GetHealthStatus(&grpc.GenericServerStream[common.Connection, health.HealthStatus]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type OltInterAdapterService_GetHealthStatusServer = grpc.BidiStreamingServer[common.Connection, health.HealthStatus]
+
+func _OltInterAdapterService_ProxyOmciRequest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.OmciMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OltInterAdapterServiceServer).ProxyOmciRequest(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OltInterAdapterService_ProxyOmciRequest_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OltInterAdapterServiceServer).ProxyOmciRequest(ctx, req.(*inter_adapter.OmciMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OltInterAdapterService_ProxyOmciRequests_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.OmciMessages)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OltInterAdapterServiceServer).ProxyOmciRequests(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OltInterAdapterService_ProxyOmciRequests_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OltInterAdapterServiceServer).ProxyOmciRequests(ctx, req.(*inter_adapter.OmciMessages))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OltInterAdapterService_GetTechProfileInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.TechProfileInstanceRequestMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OltInterAdapterServiceServer).GetTechProfileInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OltInterAdapterService_GetTechProfileInstance_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OltInterAdapterServiceServer).GetTechProfileInstance(ctx, req.(*inter_adapter.TechProfileInstanceRequestMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// OltInterAdapterService_ServiceDesc is the grpc.ServiceDesc for OltInterAdapterService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var OltInterAdapterService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "olt_inter_adapter_service.OltInterAdapterService",
+	HandlerType: (*OltInterAdapterServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ProxyOmciRequest",
+			Handler:    _OltInterAdapterService_ProxyOmciRequest_Handler,
+		},
+		{
+			MethodName: "ProxyOmciRequests",
+			Handler:    _OltInterAdapterService_ProxyOmciRequests_Handler,
+		},
+		{
+			MethodName: "GetTechProfileInstance",
+			Handler:    _OltInterAdapterService_GetTechProfileInstance_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "GetHealthStatus",
+			Handler:       _OltInterAdapterService_GetHealthStatus_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/olt_inter_adapter_service.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
index b585bbb..ad59db3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_alarm_db.pb.go
@@ -1,512 +1,642 @@
+//
+// Copyright 2018 - present the original author or authors.
+//
+// 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.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_alarm_db.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AlarmOpenOmciEventType_OpenOmciEventType int32
 
 const (
-	AlarmOpenOmciEventType_state_change AlarmOpenOmciEventType_OpenOmciEventType = 0
+	AlarmOpenOmciEventType_state_change AlarmOpenOmciEventType_OpenOmciEventType = 0 // A state machine has transitioned to a new state
 )
 
-var AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
-	0: "state_change",
-}
+// Enum value maps for AlarmOpenOmciEventType_OpenOmciEventType.
+var (
+	AlarmOpenOmciEventType_OpenOmciEventType_name = map[int32]string{
+		0: "state_change",
+	}
+	AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
+		"state_change": 0,
+	}
+)
 
-var AlarmOpenOmciEventType_OpenOmciEventType_value = map[string]int32{
-	"state_change": 0,
+func (x AlarmOpenOmciEventType_OpenOmciEventType) Enum() *AlarmOpenOmciEventType_OpenOmciEventType {
+	p := new(AlarmOpenOmciEventType_OpenOmciEventType)
+	*p = x
+	return p
 }
 
 func (x AlarmOpenOmciEventType_OpenOmciEventType) String() string {
-	return proto.EnumName(AlarmOpenOmciEventType_OpenOmciEventType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AlarmOpenOmciEventType_OpenOmciEventType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_alarm_db_proto_enumTypes[0].Descriptor()
+}
+
+func (AlarmOpenOmciEventType_OpenOmciEventType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_alarm_db_proto_enumTypes[0]
+}
+
+func (x AlarmOpenOmciEventType_OpenOmciEventType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEventType_OpenOmciEventType.Descriptor instead.
 func (AlarmOpenOmciEventType_OpenOmciEventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{6, 0}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type AlarmAttributeData struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmAttributeData) Reset()         { *m = AlarmAttributeData{} }
-func (m *AlarmAttributeData) String() string { return proto.CompactTextString(m) }
-func (*AlarmAttributeData) ProtoMessage()    {}
+func (x *AlarmAttributeData) Reset() {
+	*x = AlarmAttributeData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmAttributeData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmAttributeData) ProtoMessage() {}
+
+func (x *AlarmAttributeData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmAttributeData.ProtoReflect.Descriptor instead.
 func (*AlarmAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{0}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AlarmAttributeData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmAttributeData.Unmarshal(m, b)
-}
-func (m *AlarmAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmAttributeData.Marshal(b, m, deterministic)
-}
-func (m *AlarmAttributeData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmAttributeData.Merge(m, src)
-}
-func (m *AlarmAttributeData) XXX_Size() int {
-	return xxx_messageInfo_AlarmAttributeData.Size(m)
-}
-func (m *AlarmAttributeData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmAttributeData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmAttributeData proto.InternalMessageInfo
-
-func (m *AlarmAttributeData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmAttributeData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *AlarmAttributeData) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *AlarmAttributeData) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type AlarmInstanceData struct {
-	InstanceId           uint32                `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Created              string                `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	Modified             string                `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
-	Attributes           []*AlarmAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    uint32                 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Created       string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	Modified      string                 `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+	Attributes    []*AlarmAttributeData  `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmInstanceData) Reset()         { *m = AlarmInstanceData{} }
-func (m *AlarmInstanceData) String() string { return proto.CompactTextString(m) }
-func (*AlarmInstanceData) ProtoMessage()    {}
+func (x *AlarmInstanceData) Reset() {
+	*x = AlarmInstanceData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmInstanceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmInstanceData) ProtoMessage() {}
+
+func (x *AlarmInstanceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmInstanceData.ProtoReflect.Descriptor instead.
 func (*AlarmInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{1}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *AlarmInstanceData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmInstanceData.Unmarshal(m, b)
-}
-func (m *AlarmInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmInstanceData.Marshal(b, m, deterministic)
-}
-func (m *AlarmInstanceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmInstanceData.Merge(m, src)
-}
-func (m *AlarmInstanceData) XXX_Size() int {
-	return xxx_messageInfo_AlarmInstanceData.Size(m)
-}
-func (m *AlarmInstanceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmInstanceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmInstanceData proto.InternalMessageInfo
-
-func (m *AlarmInstanceData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *AlarmInstanceData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *AlarmInstanceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *AlarmInstanceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *AlarmInstanceData) GetModified() string {
-	if m != nil {
-		return m.Modified
+func (x *AlarmInstanceData) GetModified() string {
+	if x != nil {
+		return x.Modified
 	}
 	return ""
 }
 
-func (m *AlarmInstanceData) GetAttributes() []*AlarmAttributeData {
-	if m != nil {
-		return m.Attributes
+func (x *AlarmInstanceData) GetAttributes() []*AlarmAttributeData {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
 type AlarmClassData struct {
-	ClassId              uint32               `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Instances            []*AlarmInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Instances     []*AlarmInstanceData   `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmClassData) Reset()         { *m = AlarmClassData{} }
-func (m *AlarmClassData) String() string { return proto.CompactTextString(m) }
-func (*AlarmClassData) ProtoMessage()    {}
+func (x *AlarmClassData) Reset() {
+	*x = AlarmClassData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmClassData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmClassData) ProtoMessage() {}
+
+func (x *AlarmClassData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmClassData.ProtoReflect.Descriptor instead.
 func (*AlarmClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{2}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *AlarmClassData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmClassData.Unmarshal(m, b)
-}
-func (m *AlarmClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmClassData.Marshal(b, m, deterministic)
-}
-func (m *AlarmClassData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmClassData.Merge(m, src)
-}
-func (m *AlarmClassData) XXX_Size() int {
-	return xxx_messageInfo_AlarmClassData.Size(m)
-}
-func (m *AlarmClassData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmClassData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmClassData proto.InternalMessageInfo
-
-func (m *AlarmClassData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmClassData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmClassData) GetInstances() []*AlarmInstanceData {
-	if m != nil {
-		return m.Instances
+func (x *AlarmClassData) GetInstances() []*AlarmInstanceData {
+	if x != nil {
+		return x.Instances
 	}
 	return nil
 }
 
 type AlarmManagedEntity struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmManagedEntity) Reset()         { *m = AlarmManagedEntity{} }
-func (m *AlarmManagedEntity) String() string { return proto.CompactTextString(m) }
-func (*AlarmManagedEntity) ProtoMessage()    {}
+func (x *AlarmManagedEntity) Reset() {
+	*x = AlarmManagedEntity{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmManagedEntity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmManagedEntity) ProtoMessage() {}
+
+func (x *AlarmManagedEntity) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmManagedEntity.ProtoReflect.Descriptor instead.
 func (*AlarmManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{3}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *AlarmManagedEntity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmManagedEntity.Unmarshal(m, b)
-}
-func (m *AlarmManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmManagedEntity.Marshal(b, m, deterministic)
-}
-func (m *AlarmManagedEntity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmManagedEntity.Merge(m, src)
-}
-func (m *AlarmManagedEntity) XXX_Size() int {
-	return xxx_messageInfo_AlarmManagedEntity.Size(m)
-}
-func (m *AlarmManagedEntity) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmManagedEntity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmManagedEntity proto.InternalMessageInfo
-
-func (m *AlarmManagedEntity) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *AlarmManagedEntity) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *AlarmManagedEntity) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *AlarmManagedEntity) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 type AlarmMessageType struct {
-	MessageType          uint32   `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MessageType   uint32                 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmMessageType) Reset()         { *m = AlarmMessageType{} }
-func (m *AlarmMessageType) String() string { return proto.CompactTextString(m) }
-func (*AlarmMessageType) ProtoMessage()    {}
+func (x *AlarmMessageType) Reset() {
+	*x = AlarmMessageType{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmMessageType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmMessageType) ProtoMessage() {}
+
+func (x *AlarmMessageType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmMessageType.ProtoReflect.Descriptor instead.
 func (*AlarmMessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{4}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *AlarmMessageType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmMessageType.Unmarshal(m, b)
-}
-func (m *AlarmMessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmMessageType.Marshal(b, m, deterministic)
-}
-func (m *AlarmMessageType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmMessageType.Merge(m, src)
-}
-func (m *AlarmMessageType) XXX_Size() int {
-	return xxx_messageInfo_AlarmMessageType.Size(m)
-}
-func (m *AlarmMessageType) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmMessageType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmMessageType proto.InternalMessageInfo
-
-func (m *AlarmMessageType) GetMessageType() uint32 {
-	if m != nil {
-		return m.MessageType
+func (x *AlarmMessageType) GetMessageType() uint32 {
+	if x != nil {
+		return x.MessageType
 	}
 	return 0
 }
 
 type AlarmDeviceData struct {
-	DeviceId             string                `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Created              string                `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	LastAlarmSequence    uint32                `protobuf:"varint,3,opt,name=last_alarm_sequence,json=lastAlarmSequence,proto3" json:"last_alarm_sequence,omitempty"`
-	LastSyncTime         string                `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
-	Version              uint32                `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
-	Classes              []*AlarmClassData     `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
-	ManagedEntities      []*AlarmManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
-	MessageTypes         []*AlarmMessageType   `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId          string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Created           string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	LastAlarmSequence uint32                 `protobuf:"varint,3,opt,name=last_alarm_sequence,json=lastAlarmSequence,proto3" json:"last_alarm_sequence,omitempty"`
+	LastSyncTime      string                 `protobuf:"bytes,4,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+	Version           uint32                 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+	Classes           []*AlarmClassData      `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+	ManagedEntities   []*AlarmManagedEntity  `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+	MessageTypes      []*AlarmMessageType    `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *AlarmDeviceData) Reset()         { *m = AlarmDeviceData{} }
-func (m *AlarmDeviceData) String() string { return proto.CompactTextString(m) }
-func (*AlarmDeviceData) ProtoMessage()    {}
+func (x *AlarmDeviceData) Reset() {
+	*x = AlarmDeviceData{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmDeviceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmDeviceData) ProtoMessage() {}
+
+func (x *AlarmDeviceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmDeviceData.ProtoReflect.Descriptor instead.
 func (*AlarmDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{5}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *AlarmDeviceData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmDeviceData.Unmarshal(m, b)
-}
-func (m *AlarmDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmDeviceData.Marshal(b, m, deterministic)
-}
-func (m *AlarmDeviceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmDeviceData.Merge(m, src)
-}
-func (m *AlarmDeviceData) XXX_Size() int {
-	return xxx_messageInfo_AlarmDeviceData.Size(m)
-}
-func (m *AlarmDeviceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmDeviceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmDeviceData proto.InternalMessageInfo
-
-func (m *AlarmDeviceData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *AlarmDeviceData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *AlarmDeviceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetLastAlarmSequence() uint32 {
-	if m != nil {
-		return m.LastAlarmSequence
+func (x *AlarmDeviceData) GetLastAlarmSequence() uint32 {
+	if x != nil {
+		return x.LastAlarmSequence
 	}
 	return 0
 }
 
-func (m *AlarmDeviceData) GetLastSyncTime() string {
-	if m != nil {
-		return m.LastSyncTime
+func (x *AlarmDeviceData) GetLastSyncTime() string {
+	if x != nil {
+		return x.LastSyncTime
 	}
 	return ""
 }
 
-func (m *AlarmDeviceData) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *AlarmDeviceData) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *AlarmDeviceData) GetClasses() []*AlarmClassData {
-	if m != nil {
-		return m.Classes
+func (x *AlarmDeviceData) GetClasses() []*AlarmClassData {
+	if x != nil {
+		return x.Classes
 	}
 	return nil
 }
 
-func (m *AlarmDeviceData) GetManagedEntities() []*AlarmManagedEntity {
-	if m != nil {
-		return m.ManagedEntities
+func (x *AlarmDeviceData) GetManagedEntities() []*AlarmManagedEntity {
+	if x != nil {
+		return x.ManagedEntities
 	}
 	return nil
 }
 
-func (m *AlarmDeviceData) GetMessageTypes() []*AlarmMessageType {
-	if m != nil {
-		return m.MessageTypes
+func (x *AlarmDeviceData) GetMessageTypes() []*AlarmMessageType {
+	if x != nil {
+		return x.MessageTypes
 	}
 	return nil
 }
 
 type AlarmOpenOmciEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmOpenOmciEventType) Reset()         { *m = AlarmOpenOmciEventType{} }
-func (m *AlarmOpenOmciEventType) String() string { return proto.CompactTextString(m) }
-func (*AlarmOpenOmciEventType) ProtoMessage()    {}
+func (x *AlarmOpenOmciEventType) Reset() {
+	*x = AlarmOpenOmciEventType{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmOpenOmciEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmOpenOmciEventType) ProtoMessage() {}
+
+func (x *AlarmOpenOmciEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEventType.ProtoReflect.Descriptor instead.
 func (*AlarmOpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{6}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *AlarmOpenOmciEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmOpenOmciEventType.Unmarshal(m, b)
-}
-func (m *AlarmOpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmOpenOmciEventType.Marshal(b, m, deterministic)
-}
-func (m *AlarmOpenOmciEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmOpenOmciEventType.Merge(m, src)
-}
-func (m *AlarmOpenOmciEventType) XXX_Size() int {
-	return xxx_messageInfo_AlarmOpenOmciEventType.Size(m)
-}
-func (m *AlarmOpenOmciEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmOpenOmciEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmOpenOmciEventType proto.InternalMessageInfo
-
 type AlarmOpenOmciEvent struct {
-	Type                 AlarmOpenOmciEventType_OpenOmciEventType `protobuf:"varint,1,opt,name=type,proto3,enum=omci.AlarmOpenOmciEventType_OpenOmciEventType" json:"type,omitempty"`
-	Data                 string                                   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
+	state         protoimpl.MessageState                   `protogen:"open.v1"`
+	Type          AlarmOpenOmciEventType_OpenOmciEventType `protobuf:"varint,1,opt,name=type,proto3,enum=omci.AlarmOpenOmciEventType_OpenOmciEventType" json:"type,omitempty"`
+	Data          string                                   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // associated data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmOpenOmciEvent) Reset()         { *m = AlarmOpenOmciEvent{} }
-func (m *AlarmOpenOmciEvent) String() string { return proto.CompactTextString(m) }
-func (*AlarmOpenOmciEvent) ProtoMessage()    {}
+func (x *AlarmOpenOmciEvent) Reset() {
+	*x = AlarmOpenOmciEvent{}
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmOpenOmciEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmOpenOmciEvent) ProtoMessage() {}
+
+func (x *AlarmOpenOmciEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_alarm_db_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmOpenOmciEvent.ProtoReflect.Descriptor instead.
 func (*AlarmOpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8d41f1e38aadb08d, []int{7}
+	return file_voltha_protos_omci_alarm_db_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *AlarmOpenOmciEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmOpenOmciEvent.Unmarshal(m, b)
-}
-func (m *AlarmOpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmOpenOmciEvent.Marshal(b, m, deterministic)
-}
-func (m *AlarmOpenOmciEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmOpenOmciEvent.Merge(m, src)
-}
-func (m *AlarmOpenOmciEvent) XXX_Size() int {
-	return xxx_messageInfo_AlarmOpenOmciEvent.Size(m)
-}
-func (m *AlarmOpenOmciEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmOpenOmciEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AlarmOpenOmciEvent proto.InternalMessageInfo
-
-func (m *AlarmOpenOmciEvent) GetType() AlarmOpenOmciEventType_OpenOmciEventType {
-	if m != nil {
-		return m.Type
+func (x *AlarmOpenOmciEvent) GetType() AlarmOpenOmciEventType_OpenOmciEventType {
+	if x != nil {
+		return x.Type
 	}
 	return AlarmOpenOmciEventType_state_change
 }
 
-func (m *AlarmOpenOmciEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *AlarmOpenOmciEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("omci.AlarmOpenOmciEventType_OpenOmciEventType", AlarmOpenOmciEventType_OpenOmciEventType_name, AlarmOpenOmciEventType_OpenOmciEventType_value)
-	proto.RegisterType((*AlarmAttributeData)(nil), "omci.AlarmAttributeData")
-	proto.RegisterType((*AlarmInstanceData)(nil), "omci.AlarmInstanceData")
-	proto.RegisterType((*AlarmClassData)(nil), "omci.AlarmClassData")
-	proto.RegisterType((*AlarmManagedEntity)(nil), "omci.AlarmManagedEntity")
-	proto.RegisterType((*AlarmMessageType)(nil), "omci.AlarmMessageType")
-	proto.RegisterType((*AlarmDeviceData)(nil), "omci.AlarmDeviceData")
-	proto.RegisterType((*AlarmOpenOmciEventType)(nil), "omci.AlarmOpenOmciEventType")
-	proto.RegisterType((*AlarmOpenOmciEvent)(nil), "omci.AlarmOpenOmciEvent")
+var File_voltha_protos_omci_alarm_db_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_alarm_db_proto_rawDesc = "" +
+	"\n" +
+	"!voltha_protos/omci_alarm_db.proto\x12\x04omci\">\n" +
+	"\x12AlarmAttributeData\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\xa4\x01\n" +
+	"\x11AlarmInstanceData\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\rR\n" +
+	"instanceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12\x1a\n" +
+	"\bmodified\x18\x03 \x01(\tR\bmodified\x128\n" +
+	"\n" +
+	"attributes\x18\x04 \x03(\v2\x18.omci.AlarmAttributeDataR\n" +
+	"attributes\"b\n" +
+	"\x0eAlarmClassData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x125\n" +
+	"\tinstances\x18\x02 \x03(\v2\x17.omci.AlarmInstanceDataR\tinstances\"C\n" +
+	"\x12AlarmManagedEntity\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\"5\n" +
+	"\x10AlarmMessageType\x12!\n" +
+	"\fmessage_type\x18\x01 \x01(\rR\vmessageType\"\xea\x02\n" +
+	"\x0fAlarmDeviceData\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12.\n" +
+	"\x13last_alarm_sequence\x18\x03 \x01(\rR\x11lastAlarmSequence\x12$\n" +
+	"\x0elast_sync_time\x18\x04 \x01(\tR\flastSyncTime\x12\x18\n" +
+	"\aversion\x18\x05 \x01(\rR\aversion\x12.\n" +
+	"\aclasses\x18\x06 \x03(\v2\x14.omci.AlarmClassDataR\aclasses\x12C\n" +
+	"\x10managed_entities\x18\a \x03(\v2\x18.omci.AlarmManagedEntityR\x0fmanagedEntities\x12;\n" +
+	"\rmessage_types\x18\b \x03(\v2\x16.omci.AlarmMessageTypeR\fmessageTypes\"?\n" +
+	"\x16AlarmOpenOmciEventType\"%\n" +
+	"\x11OpenOmciEventType\x12\x10\n" +
+	"\fstate_change\x10\x00\"l\n" +
+	"\x12AlarmOpenOmciEvent\x12B\n" +
+	"\x04type\x18\x01 \x01(\x0e2..omci.AlarmOpenOmciEventType.OpenOmciEventTypeR\x04type\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\tR\x04dataBH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_alarm_db_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_alarm_db_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_alarm_db_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_alarm_db_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_alarm_db_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_alarm_db_proto_rawDesc), len(file_voltha_protos_omci_alarm_db_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_alarm_db_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_8d41f1e38aadb08d) }
+var file_voltha_protos_omci_alarm_db_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_alarm_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_voltha_protos_omci_alarm_db_proto_goTypes = []any{
+	(AlarmOpenOmciEventType_OpenOmciEventType)(0), // 0: omci.AlarmOpenOmciEventType.OpenOmciEventType
+	(*AlarmAttributeData)(nil),                    // 1: omci.AlarmAttributeData
+	(*AlarmInstanceData)(nil),                     // 2: omci.AlarmInstanceData
+	(*AlarmClassData)(nil),                        // 3: omci.AlarmClassData
+	(*AlarmManagedEntity)(nil),                    // 4: omci.AlarmManagedEntity
+	(*AlarmMessageType)(nil),                      // 5: omci.AlarmMessageType
+	(*AlarmDeviceData)(nil),                       // 6: omci.AlarmDeviceData
+	(*AlarmOpenOmciEventType)(nil),                // 7: omci.AlarmOpenOmciEventType
+	(*AlarmOpenOmciEvent)(nil),                    // 8: omci.AlarmOpenOmciEvent
+}
+var file_voltha_protos_omci_alarm_db_proto_depIdxs = []int32{
+	1, // 0: omci.AlarmInstanceData.attributes:type_name -> omci.AlarmAttributeData
+	2, // 1: omci.AlarmClassData.instances:type_name -> omci.AlarmInstanceData
+	3, // 2: omci.AlarmDeviceData.classes:type_name -> omci.AlarmClassData
+	4, // 3: omci.AlarmDeviceData.managed_entities:type_name -> omci.AlarmManagedEntity
+	5, // 4: omci.AlarmDeviceData.message_types:type_name -> omci.AlarmMessageType
+	0, // 5: omci.AlarmOpenOmciEvent.type:type_name -> omci.AlarmOpenOmciEventType.OpenOmciEventType
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
+}
 
-var fileDescriptor_8d41f1e38aadb08d = []byte{
-	// 557 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x54, 0xc1, 0x6a, 0xdb, 0x40,
-	0x10, 0x6d, 0x1c, 0x27, 0xb1, 0x27, 0xb6, 0x63, 0x6f, 0x43, 0xba, 0x6d, 0x0f, 0x4d, 0x44, 0x0b,
-	0x39, 0xb4, 0x32, 0xa4, 0x18, 0x0a, 0x85, 0x96, 0xc4, 0x09, 0xd4, 0x87, 0x12, 0x50, 0x72, 0xea,
-	0x45, 0xac, 0xa5, 0xa9, 0xbc, 0xa0, 0xdd, 0x75, 0xb5, 0x6b, 0x81, 0xff, 0xa7, 0x5f, 0xd7, 0xaf,
-	0x28, 0x1a, 0x49, 0xb6, 0x82, 0x21, 0x37, 0xbd, 0xa7, 0xb7, 0x6f, 0x66, 0xdf, 0x0c, 0x0b, 0x17,
-	0xb9, 0x49, 0xdd, 0x42, 0x84, 0xcb, 0xcc, 0x38, 0x63, 0xc7, 0x46, 0x45, 0x32, 0x14, 0xa9, 0xc8,
-	0x54, 0x18, 0xcf, 0x7d, 0x22, 0x59, 0xbb, 0x20, 0xbd, 0x6f, 0xc0, 0xae, 0x0b, 0xfe, 0xda, 0xb9,
-	0x4c, 0xce, 0x57, 0x0e, 0x6f, 0x85, 0x13, 0x8c, 0x41, 0x5b, 0x0b, 0x85, 0x7c, 0xef, 0x7c, 0xef,
-	0xb2, 0x1b, 0xd0, 0x37, 0x3b, 0x85, 0x83, 0x5c, 0xa4, 0x2b, 0xe4, 0x2d, 0x22, 0x4b, 0xe0, 0xfd,
-	0xdd, 0x83, 0x11, 0x19, 0xcc, 0xb4, 0x75, 0x42, 0x47, 0xe5, 0xf9, 0x77, 0x70, 0x2c, 0x2b, 0x1c,
-	0xca, 0x98, 0x6c, 0xfa, 0x01, 0xd4, 0xd4, 0x2c, 0x66, 0x1c, 0x8e, 0xa2, 0x0c, 0x85, 0xc3, 0xb8,
-	0xb2, 0xab, 0x21, 0x7b, 0x03, 0x1d, 0x65, 0x62, 0xf9, 0x5b, 0x62, 0xcc, 0xf7, 0xe9, 0xd7, 0x06,
-	0xb3, 0x2f, 0x00, 0xa2, 0xee, 0xd3, 0xf2, 0xf6, 0xf9, 0xfe, 0xe5, 0xf1, 0x15, 0xf7, 0x8b, 0x7b,
-	0xf8, 0xbb, 0x97, 0x08, 0x1a, 0x5a, 0x6f, 0x0e, 0x03, 0x52, 0x4c, 0x53, 0x61, 0x2d, 0xb5, 0xf8,
-	0x1a, 0x3a, 0x51, 0x01, 0xb6, 0xfd, 0x1d, 0x11, 0x9e, 0xc5, 0x6c, 0x02, 0xdd, 0xba, 0x55, 0xcb,
-	0x5b, 0x54, 0xe5, 0x55, 0xa3, 0x4a, 0xf3, 0xa6, 0xc1, 0x56, 0xe9, 0x4d, 0xab, 0x28, 0x7f, 0x0a,
-	0x2d, 0x12, 0x8c, 0xef, 0xb4, 0x93, 0x6e, 0xfd, 0x5c, 0x9d, 0x3a, 0xe5, 0xd6, 0x36, 0x65, 0x6f,
-	0x02, 0xc3, 0xd2, 0x04, 0xad, 0x15, 0x09, 0x3e, 0xae, 0x97, 0xc8, 0x2e, 0xa0, 0xa7, 0x4a, 0x18,
-	0xba, 0xf5, 0x12, 0x2b, 0x9b, 0x63, 0xb5, 0x95, 0x78, 0xff, 0x5a, 0x70, 0x42, 0xe7, 0x6e, 0x31,
-	0x97, 0xd5, 0x10, 0xde, 0x42, 0x37, 0x26, 0x54, 0x97, 0xee, 0x06, 0x9d, 0x92, 0x78, 0x76, 0x00,
-	0x3e, 0xbc, 0x4c, 0x85, 0x75, 0xd5, 0xba, 0x58, 0xfc, 0xb3, 0x42, 0x1d, 0x21, 0xcd, 0xa2, 0x1f,
-	0x8c, 0x8a, 0x5f, 0x54, 0xe8, 0xa1, 0xfa, 0xc1, 0xde, 0xc3, 0x80, 0xf4, 0x76, 0xad, 0xa3, 0xd0,
-	0x49, 0x85, 0xbc, 0x4d, 0x86, 0xbd, 0x82, 0x7d, 0x58, 0xeb, 0xe8, 0x51, 0x2a, 0x2c, 0xea, 0xe5,
-	0x98, 0x59, 0x69, 0x34, 0x3f, 0x28, 0x53, 0xa8, 0x20, 0xf3, 0xa1, 0x0c, 0x04, 0x2d, 0x3f, 0xa4,
-	0xac, 0x4f, 0x1b, 0x59, 0x6f, 0xe6, 0x15, 0xd4, 0x22, 0x36, 0x85, 0xa1, 0x2a, 0x13, 0x0e, 0xb1,
-	0x88, 0x58, 0xa2, 0xe5, 0x47, 0x3b, 0xab, 0xf0, 0x64, 0x08, 0xc1, 0x89, 0x6a, 0x40, 0x89, 0x96,
-	0x7d, 0x85, 0x7e, 0x33, 0x52, 0xcb, 0x3b, 0xe4, 0x70, 0xd6, 0x74, 0xd8, 0xc6, 0x1b, 0xf4, 0x1a,
-	0x59, 0x5b, 0xef, 0x3b, 0x9c, 0x91, 0xe2, 0x7e, 0x89, 0xfa, 0x5e, 0x45, 0xf2, 0x2e, 0x47, 0xed,
-	0x68, 0x0c, 0x1f, 0x60, 0xb4, 0x43, 0xb2, 0x21, 0xf4, 0xac, 0x13, 0x0e, 0xc3, 0x68, 0x21, 0x74,
-	0x82, 0xc3, 0x17, 0x5e, 0x5a, 0x6d, 0xca, 0x13, 0x2d, 0xbb, 0x81, 0xf6, 0x66, 0xbc, 0x83, 0x2b,
-	0xbf, 0xd1, 0xca, 0x8e, 0xa7, 0xbf, 0xc3, 0x04, 0x74, 0xb6, 0x58, 0xa9, 0x58, 0x38, 0x51, 0xaf,
-	0x54, 0xf1, 0x7d, 0xf3, 0x03, 0xb8, 0xc9, 0x12, 0xdf, 0x2c, 0x51, 0x47, 0x26, 0x8b, 0xfd, 0xf2,
-	0x69, 0x20, 0xfb, 0x5f, 0x1f, 0x13, 0xe9, 0x16, 0xab, 0xb9, 0x1f, 0x19, 0x35, 0xae, 0x05, 0xe3,
-	0x52, 0xf0, 0xa9, 0x7a, 0x3b, 0xf2, 0xc9, 0x38, 0x31, 0xf4, 0x82, 0xcc, 0x0f, 0x89, 0xfa, 0xfc,
-	0x3f, 0x00, 0x00, 0xff, 0xff, 0x2f, 0xc0, 0x0c, 0x6c, 0x5e, 0x04, 0x00, 0x00,
+func init() { file_voltha_protos_omci_alarm_db_proto_init() }
+func file_voltha_protos_omci_alarm_db_proto_init() {
+	if File_voltha_protos_omci_alarm_db_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_alarm_db_proto_rawDesc), len(file_voltha_protos_omci_alarm_db_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_alarm_db_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_alarm_db_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_alarm_db_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_alarm_db_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_alarm_db_proto = out.File
+	file_voltha_protos_omci_alarm_db_proto_goTypes = nil
+	file_voltha_protos_omci_alarm_db_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
index 05b146a..fba1737 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_mib_db.pb.go
@@ -1,512 +1,642 @@
+//
+// Copyright 2018 - present the original author or authors.
+//
+// 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.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_mib_db.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type OpenOmciEventType_Types int32
 
 const (
-	OpenOmciEventType_state_change OpenOmciEventType_Types = 0
+	OpenOmciEventType_state_change OpenOmciEventType_Types = 0 // A state machine has transitioned to a new state
 )
 
-var OpenOmciEventType_Types_name = map[int32]string{
-	0: "state_change",
-}
+// Enum value maps for OpenOmciEventType_Types.
+var (
+	OpenOmciEventType_Types_name = map[int32]string{
+		0: "state_change",
+	}
+	OpenOmciEventType_Types_value = map[string]int32{
+		"state_change": 0,
+	}
+)
 
-var OpenOmciEventType_Types_value = map[string]int32{
-	"state_change": 0,
+func (x OpenOmciEventType_Types) Enum() *OpenOmciEventType_Types {
+	p := new(OpenOmciEventType_Types)
+	*p = x
+	return p
 }
 
 func (x OpenOmciEventType_Types) String() string {
-	return proto.EnumName(OpenOmciEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OpenOmciEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_mib_db_proto_enumTypes[0].Descriptor()
+}
+
+func (OpenOmciEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_mib_db_proto_enumTypes[0]
+}
+
+func (x OpenOmciEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OpenOmciEventType_Types.Descriptor instead.
 func (OpenOmciEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{6, 0}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type MibAttributeData struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Value         string                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibAttributeData) Reset()         { *m = MibAttributeData{} }
-func (m *MibAttributeData) String() string { return proto.CompactTextString(m) }
-func (*MibAttributeData) ProtoMessage()    {}
+func (x *MibAttributeData) Reset() {
+	*x = MibAttributeData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibAttributeData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibAttributeData) ProtoMessage() {}
+
+func (x *MibAttributeData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibAttributeData.ProtoReflect.Descriptor instead.
 func (*MibAttributeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{0}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *MibAttributeData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MibAttributeData.Unmarshal(m, b)
-}
-func (m *MibAttributeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MibAttributeData.Marshal(b, m, deterministic)
-}
-func (m *MibAttributeData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibAttributeData.Merge(m, src)
-}
-func (m *MibAttributeData) XXX_Size() int {
-	return xxx_messageInfo_MibAttributeData.Size(m)
-}
-func (m *MibAttributeData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibAttributeData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibAttributeData proto.InternalMessageInfo
-
-func (m *MibAttributeData) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *MibAttributeData) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *MibAttributeData) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *MibAttributeData) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type MibInstanceData struct {
-	InstanceId           uint32              `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Created              string              `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	Modified             string              `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
-	Attributes           []*MibAttributeData `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    uint32                 `protobuf:"varint,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Created       string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	Modified      string                 `protobuf:"bytes,3,opt,name=modified,proto3" json:"modified,omitempty"`
+	Attributes    []*MibAttributeData    `protobuf:"bytes,4,rep,name=attributes,proto3" json:"attributes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibInstanceData) Reset()         { *m = MibInstanceData{} }
-func (m *MibInstanceData) String() string { return proto.CompactTextString(m) }
-func (*MibInstanceData) ProtoMessage()    {}
+func (x *MibInstanceData) Reset() {
+	*x = MibInstanceData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibInstanceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibInstanceData) ProtoMessage() {}
+
+func (x *MibInstanceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibInstanceData.ProtoReflect.Descriptor instead.
 func (*MibInstanceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{1}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *MibInstanceData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MibInstanceData.Unmarshal(m, b)
-}
-func (m *MibInstanceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MibInstanceData.Marshal(b, m, deterministic)
-}
-func (m *MibInstanceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibInstanceData.Merge(m, src)
-}
-func (m *MibInstanceData) XXX_Size() int {
-	return xxx_messageInfo_MibInstanceData.Size(m)
-}
-func (m *MibInstanceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibInstanceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibInstanceData proto.InternalMessageInfo
-
-func (m *MibInstanceData) GetInstanceId() uint32 {
-	if m != nil {
-		return m.InstanceId
+func (x *MibInstanceData) GetInstanceId() uint32 {
+	if x != nil {
+		return x.InstanceId
 	}
 	return 0
 }
 
-func (m *MibInstanceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *MibInstanceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *MibInstanceData) GetModified() string {
-	if m != nil {
-		return m.Modified
+func (x *MibInstanceData) GetModified() string {
+	if x != nil {
+		return x.Modified
 	}
 	return ""
 }
 
-func (m *MibInstanceData) GetAttributes() []*MibAttributeData {
-	if m != nil {
-		return m.Attributes
+func (x *MibInstanceData) GetAttributes() []*MibAttributeData {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
 type MibClassData struct {
-	ClassId              uint32             `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Instances            []*MibInstanceData `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Instances     []*MibInstanceData     `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MibClassData) Reset()         { *m = MibClassData{} }
-func (m *MibClassData) String() string { return proto.CompactTextString(m) }
-func (*MibClassData) ProtoMessage()    {}
+func (x *MibClassData) Reset() {
+	*x = MibClassData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibClassData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibClassData) ProtoMessage() {}
+
+func (x *MibClassData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibClassData.ProtoReflect.Descriptor instead.
 func (*MibClassData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{2}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *MibClassData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MibClassData.Unmarshal(m, b)
-}
-func (m *MibClassData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MibClassData.Marshal(b, m, deterministic)
-}
-func (m *MibClassData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibClassData.Merge(m, src)
-}
-func (m *MibClassData) XXX_Size() int {
-	return xxx_messageInfo_MibClassData.Size(m)
-}
-func (m *MibClassData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibClassData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibClassData proto.InternalMessageInfo
-
-func (m *MibClassData) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *MibClassData) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *MibClassData) GetInstances() []*MibInstanceData {
-	if m != nil {
-		return m.Instances
+func (x *MibClassData) GetInstances() []*MibInstanceData {
+	if x != nil {
+		return x.Instances
 	}
 	return nil
 }
 
 type ManagedEntity struct {
-	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ClassId       uint32                 `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ManagedEntity) Reset()         { *m = ManagedEntity{} }
-func (m *ManagedEntity) String() string { return proto.CompactTextString(m) }
-func (*ManagedEntity) ProtoMessage()    {}
+func (x *ManagedEntity) Reset() {
+	*x = ManagedEntity{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ManagedEntity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ManagedEntity) ProtoMessage() {}
+
+func (x *ManagedEntity) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ManagedEntity.ProtoReflect.Descriptor instead.
 func (*ManagedEntity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{3}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ManagedEntity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ManagedEntity.Unmarshal(m, b)
-}
-func (m *ManagedEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ManagedEntity.Marshal(b, m, deterministic)
-}
-func (m *ManagedEntity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ManagedEntity.Merge(m, src)
-}
-func (m *ManagedEntity) XXX_Size() int {
-	return xxx_messageInfo_ManagedEntity.Size(m)
-}
-func (m *ManagedEntity) XXX_DiscardUnknown() {
-	xxx_messageInfo_ManagedEntity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ManagedEntity proto.InternalMessageInfo
-
-func (m *ManagedEntity) GetClassId() uint32 {
-	if m != nil {
-		return m.ClassId
+func (x *ManagedEntity) GetClassId() uint32 {
+	if x != nil {
+		return x.ClassId
 	}
 	return 0
 }
 
-func (m *ManagedEntity) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ManagedEntity) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 type MessageType struct {
-	MessageType          uint32   `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MessageType   uint32                 `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MessageType) Reset()         { *m = MessageType{} }
-func (m *MessageType) String() string { return proto.CompactTextString(m) }
-func (*MessageType) ProtoMessage()    {}
+func (x *MessageType) Reset() {
+	*x = MessageType{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MessageType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MessageType) ProtoMessage() {}
+
+func (x *MessageType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MessageType.ProtoReflect.Descriptor instead.
 func (*MessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{4}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *MessageType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageType.Unmarshal(m, b)
-}
-func (m *MessageType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageType.Marshal(b, m, deterministic)
-}
-func (m *MessageType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageType.Merge(m, src)
-}
-func (m *MessageType) XXX_Size() int {
-	return xxx_messageInfo_MessageType.Size(m)
-}
-func (m *MessageType) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageType proto.InternalMessageInfo
-
-func (m *MessageType) GetMessageType() uint32 {
-	if m != nil {
-		return m.MessageType
+func (x *MessageType) GetMessageType() uint32 {
+	if x != nil {
+		return x.MessageType
 	}
 	return 0
 }
 
 type MibDeviceData struct {
-	DeviceId             string           `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Created              string           `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
-	LastSyncTime         string           `protobuf:"bytes,3,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
-	MibDataSync          uint32           `protobuf:"varint,4,opt,name=mib_data_sync,json=mibDataSync,proto3" json:"mib_data_sync,omitempty"`
-	Version              uint32           `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
-	Classes              []*MibClassData  `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
-	ManagedEntities      []*ManagedEntity `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
-	MessageTypes         []*MessageType   `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId        string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	Created         string                 `protobuf:"bytes,2,opt,name=created,proto3" json:"created,omitempty"`
+	LastSyncTime    string                 `protobuf:"bytes,3,opt,name=last_sync_time,json=lastSyncTime,proto3" json:"last_sync_time,omitempty"`
+	MibDataSync     uint32                 `protobuf:"varint,4,opt,name=mib_data_sync,json=mibDataSync,proto3" json:"mib_data_sync,omitempty"`
+	Version         uint32                 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"`
+	Classes         []*MibClassData        `protobuf:"bytes,6,rep,name=classes,proto3" json:"classes,omitempty"`
+	ManagedEntities []*ManagedEntity       `protobuf:"bytes,7,rep,name=managed_entities,json=managedEntities,proto3" json:"managed_entities,omitempty"`
+	MessageTypes    []*MessageType         `protobuf:"bytes,8,rep,name=message_types,json=messageTypes,proto3" json:"message_types,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *MibDeviceData) Reset()         { *m = MibDeviceData{} }
-func (m *MibDeviceData) String() string { return proto.CompactTextString(m) }
-func (*MibDeviceData) ProtoMessage()    {}
+func (x *MibDeviceData) Reset() {
+	*x = MibDeviceData{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MibDeviceData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MibDeviceData) ProtoMessage() {}
+
+func (x *MibDeviceData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MibDeviceData.ProtoReflect.Descriptor instead.
 func (*MibDeviceData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{5}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *MibDeviceData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MibDeviceData.Unmarshal(m, b)
-}
-func (m *MibDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MibDeviceData.Marshal(b, m, deterministic)
-}
-func (m *MibDeviceData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MibDeviceData.Merge(m, src)
-}
-func (m *MibDeviceData) XXX_Size() int {
-	return xxx_messageInfo_MibDeviceData.Size(m)
-}
-func (m *MibDeviceData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MibDeviceData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MibDeviceData proto.InternalMessageInfo
-
-func (m *MibDeviceData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *MibDeviceData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetCreated() string {
-	if m != nil {
-		return m.Created
+func (x *MibDeviceData) GetCreated() string {
+	if x != nil {
+		return x.Created
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetLastSyncTime() string {
-	if m != nil {
-		return m.LastSyncTime
+func (x *MibDeviceData) GetLastSyncTime() string {
+	if x != nil {
+		return x.LastSyncTime
 	}
 	return ""
 }
 
-func (m *MibDeviceData) GetMibDataSync() uint32 {
-	if m != nil {
-		return m.MibDataSync
+func (x *MibDeviceData) GetMibDataSync() uint32 {
+	if x != nil {
+		return x.MibDataSync
 	}
 	return 0
 }
 
-func (m *MibDeviceData) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *MibDeviceData) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *MibDeviceData) GetClasses() []*MibClassData {
-	if m != nil {
-		return m.Classes
+func (x *MibDeviceData) GetClasses() []*MibClassData {
+	if x != nil {
+		return x.Classes
 	}
 	return nil
 }
 
-func (m *MibDeviceData) GetManagedEntities() []*ManagedEntity {
-	if m != nil {
-		return m.ManagedEntities
+func (x *MibDeviceData) GetManagedEntities() []*ManagedEntity {
+	if x != nil {
+		return x.ManagedEntities
 	}
 	return nil
 }
 
-func (m *MibDeviceData) GetMessageTypes() []*MessageType {
-	if m != nil {
-		return m.MessageTypes
+func (x *MibDeviceData) GetMessageTypes() []*MessageType {
+	if x != nil {
+		return x.MessageTypes
 	}
 	return nil
 }
 
 type OpenOmciEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OpenOmciEventType) Reset()         { *m = OpenOmciEventType{} }
-func (m *OpenOmciEventType) String() string { return proto.CompactTextString(m) }
-func (*OpenOmciEventType) ProtoMessage()    {}
+func (x *OpenOmciEventType) Reset() {
+	*x = OpenOmciEventType{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpenOmciEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpenOmciEventType) ProtoMessage() {}
+
+func (x *OpenOmciEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OpenOmciEventType.ProtoReflect.Descriptor instead.
 func (*OpenOmciEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{6}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *OpenOmciEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OpenOmciEventType.Unmarshal(m, b)
-}
-func (m *OpenOmciEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OpenOmciEventType.Marshal(b, m, deterministic)
-}
-func (m *OpenOmciEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OpenOmciEventType.Merge(m, src)
-}
-func (m *OpenOmciEventType) XXX_Size() int {
-	return xxx_messageInfo_OpenOmciEventType.Size(m)
-}
-func (m *OpenOmciEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_OpenOmciEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OpenOmciEventType proto.InternalMessageInfo
-
 type OpenOmciEvent struct {
-	Type                 OpenOmciEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=omci.OpenOmciEventType_Types" json:"type,omitempty"`
-	Data                 string                  `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state         protoimpl.MessageState  `protogen:"open.v1"`
+	Type          OpenOmciEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=omci.OpenOmciEventType_Types" json:"type,omitempty"`
+	Data          string                  `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // associated data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OpenOmciEvent) Reset()         { *m = OpenOmciEvent{} }
-func (m *OpenOmciEvent) String() string { return proto.CompactTextString(m) }
-func (*OpenOmciEvent) ProtoMessage()    {}
+func (x *OpenOmciEvent) Reset() {
+	*x = OpenOmciEvent{}
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OpenOmciEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpenOmciEvent) ProtoMessage() {}
+
+func (x *OpenOmciEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_mib_db_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OpenOmciEvent.ProtoReflect.Descriptor instead.
 func (*OpenOmciEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_4fa402a2df36dcc1, []int{7}
+	return file_voltha_protos_omci_mib_db_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *OpenOmciEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OpenOmciEvent.Unmarshal(m, b)
-}
-func (m *OpenOmciEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OpenOmciEvent.Marshal(b, m, deterministic)
-}
-func (m *OpenOmciEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OpenOmciEvent.Merge(m, src)
-}
-func (m *OpenOmciEvent) XXX_Size() int {
-	return xxx_messageInfo_OpenOmciEvent.Size(m)
-}
-func (m *OpenOmciEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_OpenOmciEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OpenOmciEvent proto.InternalMessageInfo
-
-func (m *OpenOmciEvent) GetType() OpenOmciEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *OpenOmciEvent) GetType() OpenOmciEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return OpenOmciEventType_state_change
 }
 
-func (m *OpenOmciEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *OpenOmciEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("omci.OpenOmciEventType_Types", OpenOmciEventType_Types_name, OpenOmciEventType_Types_value)
-	proto.RegisterType((*MibAttributeData)(nil), "omci.MibAttributeData")
-	proto.RegisterType((*MibInstanceData)(nil), "omci.MibInstanceData")
-	proto.RegisterType((*MibClassData)(nil), "omci.MibClassData")
-	proto.RegisterType((*ManagedEntity)(nil), "omci.ManagedEntity")
-	proto.RegisterType((*MessageType)(nil), "omci.MessageType")
-	proto.RegisterType((*MibDeviceData)(nil), "omci.MibDeviceData")
-	proto.RegisterType((*OpenOmciEventType)(nil), "omci.OpenOmciEventType")
-	proto.RegisterType((*OpenOmciEvent)(nil), "omci.OpenOmciEvent")
+var File_voltha_protos_omci_mib_db_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_mib_db_proto_rawDesc = "" +
+	"\n" +
+	"\x1fvoltha_protos/omci_mib_db.proto\x12\x04omci\"<\n" +
+	"\x10MibAttributeData\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\xa0\x01\n" +
+	"\x0fMibInstanceData\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\rR\n" +
+	"instanceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12\x1a\n" +
+	"\bmodified\x18\x03 \x01(\tR\bmodified\x126\n" +
+	"\n" +
+	"attributes\x18\x04 \x03(\v2\x16.omci.MibAttributeDataR\n" +
+	"attributes\"^\n" +
+	"\fMibClassData\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x123\n" +
+	"\tinstances\x18\x02 \x03(\v2\x15.omci.MibInstanceDataR\tinstances\">\n" +
+	"\rManagedEntity\x12\x19\n" +
+	"\bclass_id\x18\x01 \x01(\rR\aclassId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\"0\n" +
+	"\vMessageType\x12!\n" +
+	"\fmessage_type\x18\x01 \x01(\rR\vmessageType\"\xd0\x02\n" +
+	"\rMibDeviceData\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x18\n" +
+	"\acreated\x18\x02 \x01(\tR\acreated\x12$\n" +
+	"\x0elast_sync_time\x18\x03 \x01(\tR\flastSyncTime\x12\"\n" +
+	"\rmib_data_sync\x18\x04 \x01(\rR\vmibDataSync\x12\x18\n" +
+	"\aversion\x18\x05 \x01(\rR\aversion\x12,\n" +
+	"\aclasses\x18\x06 \x03(\v2\x12.omci.MibClassDataR\aclasses\x12>\n" +
+	"\x10managed_entities\x18\a \x03(\v2\x13.omci.ManagedEntityR\x0fmanagedEntities\x126\n" +
+	"\rmessage_types\x18\b \x03(\v2\x11.omci.MessageTypeR\fmessageTypes\".\n" +
+	"\x11OpenOmciEventType\"\x19\n" +
+	"\x05Types\x12\x10\n" +
+	"\fstate_change\x10\x00\"V\n" +
+	"\rOpenOmciEvent\x121\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1d.omci.OpenOmciEventType.TypesR\x04type\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\tR\x04dataBH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_mib_db_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_mib_db_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_mib_db_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_mib_db_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_mib_db_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_mib_db_proto_rawDesc), len(file_voltha_protos_omci_mib_db_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_mib_db_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_mib_db.proto", fileDescriptor_4fa402a2df36dcc1) }
+var file_voltha_protos_omci_mib_db_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_mib_db_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_voltha_protos_omci_mib_db_proto_goTypes = []any{
+	(OpenOmciEventType_Types)(0), // 0: omci.OpenOmciEventType.Types
+	(*MibAttributeData)(nil),     // 1: omci.MibAttributeData
+	(*MibInstanceData)(nil),      // 2: omci.MibInstanceData
+	(*MibClassData)(nil),         // 3: omci.MibClassData
+	(*ManagedEntity)(nil),        // 4: omci.ManagedEntity
+	(*MessageType)(nil),          // 5: omci.MessageType
+	(*MibDeviceData)(nil),        // 6: omci.MibDeviceData
+	(*OpenOmciEventType)(nil),    // 7: omci.OpenOmciEventType
+	(*OpenOmciEvent)(nil),        // 8: omci.OpenOmciEvent
+}
+var file_voltha_protos_omci_mib_db_proto_depIdxs = []int32{
+	1, // 0: omci.MibInstanceData.attributes:type_name -> omci.MibAttributeData
+	2, // 1: omci.MibClassData.instances:type_name -> omci.MibInstanceData
+	3, // 2: omci.MibDeviceData.classes:type_name -> omci.MibClassData
+	4, // 3: omci.MibDeviceData.managed_entities:type_name -> omci.ManagedEntity
+	5, // 4: omci.MibDeviceData.message_types:type_name -> omci.MessageType
+	0, // 5: omci.OpenOmciEvent.type:type_name -> omci.OpenOmciEventType.Types
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
+}
 
-var fileDescriptor_4fa402a2df36dcc1 = []byte{
-	// 548 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4d, 0x6f, 0xd3, 0x30,
-	0x18, 0xc7, 0x69, 0xd7, 0xae, 0xed, 0xd3, 0x66, 0xeb, 0xcc, 0x8b, 0x3c, 0x10, 0xda, 0x88, 0x38,
-	0xec, 0x30, 0x52, 0xd8, 0xc4, 0x4e, 0x68, 0x12, 0xb0, 0x49, 0xf4, 0x10, 0x4d, 0x0a, 0x13, 0x07,
-	0x0e, 0x44, 0x4e, 0xf2, 0x90, 0x5a, 0xaa, 0xed, 0x2a, 0x76, 0x23, 0xf5, 0xdb, 0xf0, 0x91, 0xf8,
-	0x48, 0xc8, 0x4e, 0xd2, 0x06, 0x90, 0x76, 0xcb, 0xff, 0xc9, 0xff, 0x79, 0xfb, 0xd9, 0x86, 0x93,
-	0x52, 0x2d, 0xcd, 0x82, 0xc5, 0xab, 0x42, 0x19, 0xa5, 0x67, 0x4a, 0xa4, 0x3c, 0x16, 0x3c, 0x89,
-	0xb3, 0x24, 0x70, 0x21, 0xd2, 0xb3, 0x21, 0xff, 0x03, 0x4c, 0x43, 0x9e, 0x7c, 0x34, 0xa6, 0xe0,
-	0xc9, 0xda, 0xe0, 0x0d, 0x33, 0x8c, 0x10, 0xe8, 0x49, 0x26, 0x90, 0x76, 0x4e, 0x3b, 0x67, 0xa3,
-	0xc8, 0x7d, 0x93, 0x27, 0xd0, 0x2f, 0xd9, 0x72, 0x8d, 0xb4, 0xeb, 0x82, 0x95, 0xf0, 0x7f, 0x75,
-	0xe0, 0x30, 0xe4, 0xc9, 0x5c, 0x6a, 0xc3, 0x64, 0x5a, 0x65, 0x9f, 0xc0, 0x98, 0xd7, 0x3a, 0xe6,
-	0x99, 0x2b, 0xe2, 0x45, 0xd0, 0x84, 0xe6, 0x19, 0xa1, 0x30, 0x48, 0x0b, 0x64, 0x06, 0xb3, 0xba,
-	0x58, 0x23, 0xc9, 0x73, 0x18, 0x0a, 0x95, 0xf1, 0x9f, 0x1c, 0x33, 0xba, 0xe7, 0x7e, 0x6d, 0x35,
-	0xb9, 0x02, 0x60, 0xcd, 0x94, 0x9a, 0xf6, 0x4e, 0xf7, 0xce, 0xc6, 0x17, 0xcf, 0x02, 0xbb, 0x43,
-	0xf0, 0xef, 0x02, 0x51, 0xcb, 0xe9, 0xff, 0x80, 0x49, 0xc8, 0x93, 0xcf, 0x4b, 0xa6, 0xb5, 0x1b,
-	0xef, 0x18, 0x86, 0xa9, 0x15, 0xbb, 0xd9, 0x06, 0x4e, 0xcf, 0x33, 0x72, 0x09, 0xa3, 0x66, 0x4c,
-	0x4d, 0xbb, 0xae, 0xc3, 0xd3, 0x6d, 0x87, 0xf6, 0x8e, 0xd1, 0xce, 0xe7, 0x5f, 0x83, 0x17, 0x32,
-	0xc9, 0x72, 0xcc, 0x6e, 0xa5, 0xe1, 0x66, 0xf3, 0x50, 0x83, 0x06, 0x6c, 0x77, 0x07, 0xd6, 0x7f,
-	0x0b, 0xe3, 0x10, 0xb5, 0x66, 0x39, 0xde, 0x6f, 0x56, 0x48, 0x5e, 0xc1, 0x44, 0x54, 0x32, 0x36,
-	0x9b, 0x15, 0xd6, 0x15, 0xc6, 0x62, 0x67, 0xf1, 0x7f, 0x77, 0xc1, 0x0b, 0x79, 0x72, 0x83, 0x25,
-	0xaf, 0x91, 0xbf, 0x80, 0x51, 0xe6, 0x54, 0xd3, 0x73, 0x14, 0x0d, 0xab, 0xc0, 0x83, 0xb8, 0x5f,
-	0xc3, 0xc1, 0x92, 0x69, 0x13, 0xeb, 0x8d, 0x4c, 0x63, 0xc3, 0x05, 0xd6, 0xd0, 0x27, 0x36, 0xfa,
-	0x75, 0x23, 0xd3, 0x7b, 0x2e, 0x90, 0xf8, 0xe0, 0xb9, 0x7b, 0xc3, 0x0c, 0x73, 0x4e, 0xda, 0xab,
-	0x47, 0xe2, 0x89, 0x6d, 0x6e, 0x7d, 0xb6, 0x47, 0x89, 0x85, 0xe6, 0x4a, 0xd2, 0x7e, 0xb5, 0x72,
-	0x2d, 0xc9, 0x39, 0x54, 0xdb, 0xa3, 0xa6, 0xfb, 0x8e, 0x28, 0xd9, 0x12, 0xdd, 0x9e, 0x49, 0xd4,
-	0x58, 0xc8, 0x35, 0x4c, 0x45, 0x05, 0x33, 0x46, 0x4b, 0x93, 0xa3, 0xa6, 0x03, 0x97, 0xf6, 0xb8,
-	0x4e, 0x6b, 0xa3, 0x8e, 0x0e, 0x45, 0x4b, 0x72, 0xd4, 0xe4, 0x0a, 0xbc, 0x36, 0x3d, 0x4d, 0x87,
-	0x2e, 0xf9, 0xa8, 0x4e, 0xde, 0x41, 0x8c, 0x26, 0x2d, 0xa2, 0xda, 0x0f, 0xe0, 0xe8, 0x6e, 0x85,
-	0xf2, 0x4e, 0xa4, 0xfc, 0xb6, 0x44, 0x69, 0x1c, 0xe7, 0x63, 0xe8, 0xbb, 0xbf, 0x64, 0x0a, 0x13,
-	0x6d, 0x98, 0xc1, 0x38, 0x5d, 0x30, 0x99, 0xe3, 0xf4, 0x91, 0xff, 0x0d, 0xbc, 0xbf, 0xfc, 0xe4,
-	0x1d, 0xf4, 0xb6, 0xc7, 0x75, 0x70, 0xf1, 0xb2, 0xea, 0xf7, 0x5f, 0xc9, 0xc0, 0xd5, 0x8b, 0x9c,
-	0xd5, 0x5e, 0x06, 0xcb, 0xb4, 0xb9, 0x0c, 0xf6, 0xfb, 0xd3, 0x17, 0xa0, 0xaa, 0xc8, 0x03, 0xb5,
-	0x42, 0x99, 0xaa, 0x22, 0x0b, 0xaa, 0x37, 0xec, 0xaa, 0x7d, 0x3f, 0xcf, 0xb9, 0x59, 0xac, 0x93,
-	0x20, 0x55, 0x62, 0xd6, 0x18, 0x66, 0x95, 0xe1, 0x4d, 0xfd, 0xc8, 0xcb, 0xf7, 0xb3, 0x5c, 0xb9,
-	0xa7, 0x9e, 0xec, 0xbb, 0xd0, 0xe5, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc6, 0x6b, 0x99, 0x13,
-	0x07, 0x04, 0x00, 0x00,
+func init() { file_voltha_protos_omci_mib_db_proto_init() }
+func file_voltha_protos_omci_mib_db_proto_init() {
+	if File_voltha_protos_omci_mib_db_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_mib_db_proto_rawDesc), len(file_voltha_protos_omci_mib_db_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_mib_db_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_mib_db_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_mib_db_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_mib_db_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_mib_db_proto = out.File
+	file_voltha_protos_omci_mib_db_proto_goTypes = nil
+	file_voltha_protos_omci_mib_db_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
index 6d32ae0..15c7e0b 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/omci/omci_test.pb.go
@@ -1,24 +1,25 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/omci_test.proto
 
 package omci
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type TestResponse_TestResponseResult int32
 
@@ -27,133 +28,205 @@
 	TestResponse_FAILURE TestResponse_TestResponseResult = 1
 )
 
-var TestResponse_TestResponseResult_name = map[int32]string{
-	0: "SUCCESS",
-	1: "FAILURE",
-}
+// Enum value maps for TestResponse_TestResponseResult.
+var (
+	TestResponse_TestResponseResult_name = map[int32]string{
+		0: "SUCCESS",
+		1: "FAILURE",
+	}
+	TestResponse_TestResponseResult_value = map[string]int32{
+		"SUCCESS": 0,
+		"FAILURE": 1,
+	}
+)
 
-var TestResponse_TestResponseResult_value = map[string]int32{
-	"SUCCESS": 0,
-	"FAILURE": 1,
+func (x TestResponse_TestResponseResult) Enum() *TestResponse_TestResponseResult {
+	p := new(TestResponse_TestResponseResult)
+	*p = x
+	return p
 }
 
 func (x TestResponse_TestResponseResult) String() string {
-	return proto.EnumName(TestResponse_TestResponseResult_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (TestResponse_TestResponseResult) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_omci_test_proto_enumTypes[0].Descriptor()
+}
+
+func (TestResponse_TestResponseResult) Type() protoreflect.EnumType {
+	return &file_voltha_protos_omci_test_proto_enumTypes[0]
+}
+
+func (x TestResponse_TestResponseResult) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use TestResponse_TestResponseResult.Descriptor instead.
 func (TestResponse_TestResponseResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{1, 0}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type OmciTestRequest struct {
-	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Uuid                 string   `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Uuid          string                 `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OmciTestRequest) Reset()         { *m = OmciTestRequest{} }
-func (m *OmciTestRequest) String() string { return proto.CompactTextString(m) }
-func (*OmciTestRequest) ProtoMessage()    {}
+func (x *OmciTestRequest) Reset() {
+	*x = OmciTestRequest{}
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciTestRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciTestRequest) ProtoMessage() {}
+
+func (x *OmciTestRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciTestRequest.ProtoReflect.Descriptor instead.
 func (*OmciTestRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{0}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OmciTestRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciTestRequest.Unmarshal(m, b)
-}
-func (m *OmciTestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciTestRequest.Marshal(b, m, deterministic)
-}
-func (m *OmciTestRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciTestRequest.Merge(m, src)
-}
-func (m *OmciTestRequest) XXX_Size() int {
-	return xxx_messageInfo_OmciTestRequest.Size(m)
-}
-func (m *OmciTestRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciTestRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciTestRequest proto.InternalMessageInfo
-
-func (m *OmciTestRequest) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *OmciTestRequest) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *OmciTestRequest) GetUuid() string {
-	if m != nil {
-		return m.Uuid
+func (x *OmciTestRequest) GetUuid() string {
+	if x != nil {
+		return x.Uuid
 	}
 	return ""
 }
 
 type TestResponse struct {
-	Result               TestResponse_TestResponseResult `protobuf:"varint,1,opt,name=result,proto3,enum=omci.TestResponse_TestResponseResult" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	state         protoimpl.MessageState          `protogen:"open.v1"`
+	Result        TestResponse_TestResponseResult `protobuf:"varint,1,opt,name=result,proto3,enum=omci.TestResponse_TestResponseResult" json:"result,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TestResponse) Reset()         { *m = TestResponse{} }
-func (m *TestResponse) String() string { return proto.CompactTextString(m) }
-func (*TestResponse) ProtoMessage()    {}
+func (x *TestResponse) Reset() {
+	*x = TestResponse{}
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TestResponse) ProtoMessage() {}
+
+func (x *TestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_omci_test_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TestResponse.ProtoReflect.Descriptor instead.
 func (*TestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_146dc5f97baf9397, []int{1}
+	return file_voltha_protos_omci_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *TestResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TestResponse.Unmarshal(m, b)
-}
-func (m *TestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TestResponse.Marshal(b, m, deterministic)
-}
-func (m *TestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TestResponse.Merge(m, src)
-}
-func (m *TestResponse) XXX_Size() int {
-	return xxx_messageInfo_TestResponse.Size(m)
-}
-func (m *TestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_TestResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TestResponse proto.InternalMessageInfo
-
-func (m *TestResponse) GetResult() TestResponse_TestResponseResult {
-	if m != nil {
-		return m.Result
+func (x *TestResponse) GetResult() TestResponse_TestResponseResult {
+	if x != nil {
+		return x.Result
 	}
 	return TestResponse_SUCCESS
 }
 
-func init() {
-	proto.RegisterEnum("omci.TestResponse_TestResponseResult", TestResponse_TestResponseResult_name, TestResponse_TestResponseResult_value)
-	proto.RegisterType((*OmciTestRequest)(nil), "omci.OmciTestRequest")
-	proto.RegisterType((*TestResponse)(nil), "omci.TestResponse")
+var File_voltha_protos_omci_test_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_omci_test_proto_rawDesc = "" +
+	"\n" +
+	"\x1dvoltha_protos/omci_test.proto\x12\x04omci\"5\n" +
+	"\x0fOmciTestRequest\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04uuid\x18\x02 \x01(\tR\x04uuid\"}\n" +
+	"\fTestResponse\x12=\n" +
+	"\x06result\x18\x01 \x01(\x0e2%.omci.TestResponse.TestResponseResultR\x06result\".\n" +
+	"\x12TestResponseResult\x12\v\n" +
+	"\aSUCCESS\x10\x00\x12\v\n" +
+	"\aFAILURE\x10\x01BH\n" +
+	"\x18org.opencord.voltha.omciZ,github.com/opencord/voltha-protos/v5/go/omcib\x06proto3"
+
+var (
+	file_voltha_protos_omci_test_proto_rawDescOnce sync.Once
+	file_voltha_protos_omci_test_proto_rawDescData []byte
+)
+
+func file_voltha_protos_omci_test_proto_rawDescGZIP() []byte {
+	file_voltha_protos_omci_test_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_omci_test_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_test_proto_rawDesc), len(file_voltha_protos_omci_test_proto_rawDesc)))
+	})
+	return file_voltha_protos_omci_test_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/omci_test.proto", fileDescriptor_146dc5f97baf9397) }
+var file_voltha_protos_omci_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_voltha_protos_omci_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_voltha_protos_omci_test_proto_goTypes = []any{
+	(TestResponse_TestResponseResult)(0), // 0: omci.TestResponse.TestResponseResult
+	(*OmciTestRequest)(nil),              // 1: omci.OmciTestRequest
+	(*TestResponse)(nil),                 // 2: omci.TestResponse
+}
+var file_voltha_protos_omci_test_proto_depIdxs = []int32{
+	0, // 0: omci.TestResponse.result:type_name -> omci.TestResponse.TestResponseResult
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
+}
 
-var fileDescriptor_146dc5f97baf9397 = []byte{
-	// 230 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2d, 0xcb, 0xcf, 0x29,
-	0xc9, 0x48, 0x8c, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6, 0xcf, 0xcf, 0x4d, 0xce, 0x8c, 0x2f,
-	0x49, 0x2d, 0x2e, 0xd1, 0x03, 0x0b, 0x08, 0xb1, 0x80, 0x04, 0x94, 0x4c, 0xb9, 0xf8, 0xfd, 0x73,
-	0x93, 0x33, 0x43, 0x52, 0x8b, 0x4b, 0x82, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0xf8, 0xb8,
-	0x98, 0x32, 0x53, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x98, 0x32, 0x53, 0x84, 0x84, 0xb8,
-	0x58, 0x4a, 0x4b, 0x33, 0x53, 0x24, 0x98, 0xc0, 0x22, 0x60, 0xb6, 0x52, 0x2d, 0x17, 0x0f, 0x44,
-	0x4b, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, 0x90, 0x2d, 0x17, 0x5b, 0x51, 0x6a, 0x71, 0x69, 0x4e,
-	0x09, 0x58, 0x1f, 0x9f, 0x91, 0xaa, 0x1e, 0xc8, 0x74, 0x3d, 0x64, 0x35, 0x28, 0x9c, 0x20, 0xb0,
-	0xe2, 0x20, 0xa8, 0x26, 0x25, 0x3d, 0x2e, 0x21, 0x4c, 0x59, 0x21, 0x6e, 0x2e, 0xf6, 0xe0, 0x50,
-	0x67, 0x67, 0xd7, 0xe0, 0x60, 0x01, 0x06, 0x10, 0xc7, 0xcd, 0xd1, 0xd3, 0x27, 0x34, 0xc8, 0x55,
-	0x80, 0xd1, 0xc9, 0x83, 0x4b, 0x22, 0xbf, 0x28, 0x5d, 0x2f, 0xbf, 0x20, 0x35, 0x2f, 0x39, 0xbf,
-	0x28, 0x45, 0x0f, 0xe2, 0x53, 0xb0, 0x9d, 0x51, 0x3a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a,
-	0xc9, 0xf9, 0xb9, 0xfa, 0x30, 0x05, 0xfa, 0x10, 0x05, 0xba, 0xd0, 0xa0, 0x28, 0x33, 0xd5, 0x4f,
-	0xcf, 0x07, 0x07, 0x48, 0x12, 0x1b, 0x58, 0xc8, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x85, 0xc9,
-	0x07, 0x50, 0x2d, 0x01, 0x00, 0x00,
+func init() { file_voltha_protos_omci_test_proto_init() }
+func file_voltha_protos_omci_test_proto_init() {
+	if File_voltha_protos_omci_test_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_omci_test_proto_rawDesc), len(file_voltha_protos_omci_test_proto_rawDesc)),
+			NumEnums:      1,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_omci_test_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_omci_test_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_omci_test_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_omci_test_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_omci_test_proto = out.File
+	file_voltha_protos_omci_test_proto_goTypes = nil
+	file_voltha_protos_omci_test_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
index 9094c10..e3a9798 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service.pb.go
@@ -1,357 +1,92 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/onu_inter_adapter_service.proto
 
 package onu_inter_adapter_service
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+var File_voltha_protos_onu_inter_adapter_service_proto protoreflect.FileDescriptor
 
-func init() {
-	proto.RegisterFile("voltha_protos/onu_inter_adapter_service.proto", fileDescriptor_f951f30caeee9ccd)
+const file_voltha_protos_onu_inter_adapter_service_proto_rawDesc = "" +
+	"\n" +
+	"-voltha_protos/onu_inter_adapter_service.proto\x12\x19onu_inter_adapter_service\x1a\x1avoltha_protos/common.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a!voltha_protos/inter_adapter.proto\x1a\x1avoltha_protos/health.proto2\xdf\x03\n" +
+	"\x16OnuInterAdapterService\x12?\n" +
+	"\x0fGetHealthStatus\x12\x12.common.Connection\x1a\x14.health.HealthStatus(\x010\x01\x12L\n" +
+	"\rOnuIndication\x12#.inter_adapter.OnuIndicationMessage\x1a\x16.google.protobuf.Empty\x12D\n" +
+	"\x0eOmciIndication\x12\x1a.inter_adapter.OmciMessage\x1a\x16.google.protobuf.Empty\x12X\n" +
+	"\x13DownloadTechProfile\x12).inter_adapter.TechProfileDownloadMessage\x1a\x16.google.protobuf.Empty\x12L\n" +
+	"\rDeleteGemPort\x12#.inter_adapter.DeleteGemPortMessage\x1a\x16.google.protobuf.Empty\x12H\n" +
+	"\vDeleteTCont\x12!.inter_adapter.DeleteTcontMessage\x1a\x16.google.protobuf.EmptyB\x90\x01\n" +
+	"-org.opencord.voltha.onu_inter_adapter_serviceB\x1cVolthaOnuInterAdapterServiceZAgithub.com/opencord/voltha-protos/v5/go/onu_inter_adapter_serviceb\x06proto3"
+
+var file_voltha_protos_onu_inter_adapter_service_proto_goTypes = []any{
+	(*common.Connection)(nil),                        // 0: common.Connection
+	(*inter_adapter.OnuIndicationMessage)(nil),       // 1: inter_adapter.OnuIndicationMessage
+	(*inter_adapter.OmciMessage)(nil),                // 2: inter_adapter.OmciMessage
+	(*inter_adapter.TechProfileDownloadMessage)(nil), // 3: inter_adapter.TechProfileDownloadMessage
+	(*inter_adapter.DeleteGemPortMessage)(nil),       // 4: inter_adapter.DeleteGemPortMessage
+	(*inter_adapter.DeleteTcontMessage)(nil),         // 5: inter_adapter.DeleteTcontMessage
+	(*health.HealthStatus)(nil),                      // 6: health.HealthStatus
+	(*emptypb.Empty)(nil),                            // 7: google.protobuf.Empty
+}
+var file_voltha_protos_onu_inter_adapter_service_proto_depIdxs = []int32{
+	0, // 0: onu_inter_adapter_service.OnuInterAdapterService.GetHealthStatus:input_type -> common.Connection
+	1, // 1: onu_inter_adapter_service.OnuInterAdapterService.OnuIndication:input_type -> inter_adapter.OnuIndicationMessage
+	2, // 2: onu_inter_adapter_service.OnuInterAdapterService.OmciIndication:input_type -> inter_adapter.OmciMessage
+	3, // 3: onu_inter_adapter_service.OnuInterAdapterService.DownloadTechProfile:input_type -> inter_adapter.TechProfileDownloadMessage
+	4, // 4: onu_inter_adapter_service.OnuInterAdapterService.DeleteGemPort:input_type -> inter_adapter.DeleteGemPortMessage
+	5, // 5: onu_inter_adapter_service.OnuInterAdapterService.DeleteTCont:input_type -> inter_adapter.DeleteTcontMessage
+	6, // 6: onu_inter_adapter_service.OnuInterAdapterService.GetHealthStatus:output_type -> health.HealthStatus
+	7, // 7: onu_inter_adapter_service.OnuInterAdapterService.OnuIndication:output_type -> google.protobuf.Empty
+	7, // 8: onu_inter_adapter_service.OnuInterAdapterService.OmciIndication:output_type -> google.protobuf.Empty
+	7, // 9: onu_inter_adapter_service.OnuInterAdapterService.DownloadTechProfile:output_type -> google.protobuf.Empty
+	7, // 10: onu_inter_adapter_service.OnuInterAdapterService.DeleteGemPort:output_type -> google.protobuf.Empty
+	7, // 11: onu_inter_adapter_service.OnuInterAdapterService.DeleteTCont:output_type -> google.protobuf.Empty
+	6, // [6:12] is the sub-list for method output_type
+	0, // [0:6] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
 }
 
-var fileDescriptor_f951f30caeee9ccd = []byte{
-	// 354 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xcf, 0x4a, 0xc3, 0x40,
-	0x10, 0xc6, 0x29, 0x82, 0x87, 0x95, 0x2a, 0xac, 0x52, 0x30, 0x7a, 0x29, 0x5e, 0xf4, 0xd0, 0x8d,
-	0x28, 0x9e, 0xa5, 0x7f, 0xa4, 0x15, 0x2a, 0x2d, 0xb4, 0x88, 0x78, 0x29, 0xdb, 0xcd, 0x34, 0x59,
-	0x48, 0x76, 0x42, 0x32, 0xa9, 0xf8, 0x16, 0xbe, 0xa1, 0xaf, 0x22, 0xc9, 0xa6, 0xd0, 0xd4, 0x96,
-	0x9c, 0x42, 0xf8, 0x7e, 0xf3, 0x63, 0x06, 0xbe, 0x65, 0x9d, 0x35, 0x86, 0x14, 0xc8, 0x45, 0x9c,
-	0x20, 0x61, 0xea, 0xa2, 0xc9, 0x16, 0xda, 0x10, 0x24, 0x0b, 0xe9, 0xc9, 0x38, 0xff, 0xa6, 0x90,
-	0xac, 0xb5, 0x02, 0x51, 0x00, 0xfc, 0xf2, 0x20, 0xe0, 0x38, 0x55, 0x93, 0xc2, 0x28, 0x42, 0x63,
-	0xc7, 0x9c, 0x2b, 0x1f, 0xd1, 0x0f, 0xc1, 0x2d, 0xfe, 0x96, 0xd9, 0xca, 0x85, 0x28, 0xa6, 0xef,
-	0x32, 0x6c, 0x57, 0x07, 0x2b, 0xf6, 0x12, 0xd9, 0x71, 0x07, 0x20, 0x43, 0x0a, 0x6c, 0xf6, 0xf0,
-	0x7b, 0xc4, 0x5a, 0x13, 0x93, 0xbd, 0xe6, 0x63, 0x5d, 0x3b, 0x35, 0xb3, 0x2b, 0xf1, 0x67, 0x76,
-	0x36, 0x04, 0x1a, 0x15, 0xf4, 0x8c, 0x24, 0x65, 0x29, 0xe7, 0xa2, 0x5c, 0xac, 0x8f, 0xc6, 0x80,
-	0x22, 0x8d, 0xc6, 0xb9, 0x10, 0xa5, 0x70, 0x9b, 0xbc, 0x6d, 0xdc, 0x37, 0xf8, 0x98, 0x35, 0x0b,
-	0xb5, 0xa7, 0x95, 0xcc, 0x51, 0x7e, 0x23, 0xaa, 0xeb, 0x55, 0xd2, 0x37, 0x48, 0x53, 0xe9, 0x83,
-	0xd3, 0x12, 0xf6, 0x5c, 0xb1, 0x39, 0x57, 0xbc, 0xe4, 0xe7, 0xf2, 0x01, 0x3b, 0x9d, 0x44, 0x4a,
-	0x6f, 0xe9, 0x9c, 0x5d, 0x5d, 0xa4, 0x74, 0x9d, 0xe5, 0x83, 0x9d, 0x0f, 0xf0, 0xcb, 0x84, 0x28,
-	0xbd, 0x39, 0xa8, 0x60, 0x9a, 0xe0, 0x4a, 0x87, 0xc0, 0xef, 0x76, 0x54, 0x5b, 0xd9, 0x06, 0xaf,
-	0x33, 0x8f, 0x59, 0x73, 0x00, 0x21, 0x10, 0x0c, 0x21, 0x9a, 0x62, 0x42, 0xff, 0xae, 0xad, 0xa4,
-	0x75, 0xb6, 0x11, 0x3b, 0xb1, 0xfc, 0xbc, 0x8f, 0x86, 0x78, 0x7b, 0xaf, 0x6b, 0xae, 0xd0, 0xd4,
-	0x99, 0x7a, 0x3f, 0x0d, 0xd6, 0xc1, 0xc4, 0x17, 0x18, 0x83, 0x51, 0x98, 0x78, 0xc2, 0xb6, 0x41,
-	0x1c, 0xec, 0x62, 0xef, 0xfa, 0xbd, 0x20, 0xf6, 0xd7, 0xe2, 0xb3, 0xeb, 0x6b, 0x0a, 0xb2, 0x65,
-	0xde, 0x04, 0x77, 0xe3, 0x74, 0xad, 0xb3, 0x53, 0x36, 0x6c, 0xfd, 0xe4, 0xfa, 0x78, 0xf8, 0x35,
-	0x2c, 0x8f, 0x0b, 0xee, 0xf1, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xc4, 0x5f, 0x8c, 0x88, 0x3f, 0x03,
-	0x00, 0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// OnuInterAdapterServiceClient is the client API for OnuInterAdapterService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type OnuInterAdapterServiceClient interface {
-	// GetHealthStatus is used by a OnuInterAdapterService client to detect a connection
-	// lost with the gRPC server hosting the OnuInterAdapterService service
-	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (OnuInterAdapterService_GetHealthStatusClient, error)
-	OnuIndication(ctx context.Context, in *inter_adapter.OnuIndicationMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	OmciIndication(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	DownloadTechProfile(ctx context.Context, in *inter_adapter.TechProfileDownloadMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeleteGemPort(ctx context.Context, in *inter_adapter.DeleteGemPortMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-	DeleteTCont(ctx context.Context, in *inter_adapter.DeleteTcontMessage, opts ...grpc.CallOption) (*empty.Empty, error)
-}
-
-type onuInterAdapterServiceClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewOnuInterAdapterServiceClient(cc *grpc.ClientConn) OnuInterAdapterServiceClient {
-	return &onuInterAdapterServiceClient{cc}
-}
-
-func (c *onuInterAdapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (OnuInterAdapterService_GetHealthStatusClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_OnuInterAdapterService_serviceDesc.Streams[0], "/onu_inter_adapter_service.OnuInterAdapterService/GetHealthStatus", opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_onu_inter_adapter_service_proto_init() }
+func file_voltha_protos_onu_inter_adapter_service_proto_init() {
+	if File_voltha_protos_onu_inter_adapter_service_proto != nil {
+		return
 	}
-	x := &onuInterAdapterServiceGetHealthStatusClient{stream}
-	return x, nil
-}
-
-type OnuInterAdapterService_GetHealthStatusClient interface {
-	Send(*common.Connection) error
-	Recv() (*health.HealthStatus, error)
-	grpc.ClientStream
-}
-
-type onuInterAdapterServiceGetHealthStatusClient struct {
-	grpc.ClientStream
-}
-
-func (x *onuInterAdapterServiceGetHealthStatusClient) Send(m *common.Connection) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *onuInterAdapterServiceGetHealthStatusClient) Recv() (*health.HealthStatus, error) {
-	m := new(health.HealthStatus)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *onuInterAdapterServiceClient) OnuIndication(ctx context.Context, in *inter_adapter.OnuIndicationMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/OnuIndication", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *onuInterAdapterServiceClient) OmciIndication(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/OmciIndication", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *onuInterAdapterServiceClient) DownloadTechProfile(ctx context.Context, in *inter_adapter.TechProfileDownloadMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/DownloadTechProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *onuInterAdapterServiceClient) DeleteGemPort(ctx context.Context, in *inter_adapter.DeleteGemPortMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/DeleteGemPort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *onuInterAdapterServiceClient) DeleteTCont(ctx context.Context, in *inter_adapter.DeleteTcontMessage, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/onu_inter_adapter_service.OnuInterAdapterService/DeleteTCont", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// OnuInterAdapterServiceServer is the server API for OnuInterAdapterService service.
-type OnuInterAdapterServiceServer interface {
-	// GetHealthStatus is used by a OnuInterAdapterService client to detect a connection
-	// lost with the gRPC server hosting the OnuInterAdapterService service
-	GetHealthStatus(OnuInterAdapterService_GetHealthStatusServer) error
-	OnuIndication(context.Context, *inter_adapter.OnuIndicationMessage) (*empty.Empty, error)
-	OmciIndication(context.Context, *inter_adapter.OmciMessage) (*empty.Empty, error)
-	DownloadTechProfile(context.Context, *inter_adapter.TechProfileDownloadMessage) (*empty.Empty, error)
-	DeleteGemPort(context.Context, *inter_adapter.DeleteGemPortMessage) (*empty.Empty, error)
-	DeleteTCont(context.Context, *inter_adapter.DeleteTcontMessage) (*empty.Empty, error)
-}
-
-// UnimplementedOnuInterAdapterServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedOnuInterAdapterServiceServer struct {
-}
-
-func (*UnimplementedOnuInterAdapterServiceServer) GetHealthStatus(srv OnuInterAdapterService_GetHealthStatusServer) error {
-	return status.Errorf(codes.Unimplemented, "method GetHealthStatus not implemented")
-}
-func (*UnimplementedOnuInterAdapterServiceServer) OnuIndication(ctx context.Context, req *inter_adapter.OnuIndicationMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method OnuIndication not implemented")
-}
-func (*UnimplementedOnuInterAdapterServiceServer) OmciIndication(ctx context.Context, req *inter_adapter.OmciMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method OmciIndication not implemented")
-}
-func (*UnimplementedOnuInterAdapterServiceServer) DownloadTechProfile(ctx context.Context, req *inter_adapter.TechProfileDownloadMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadTechProfile not implemented")
-}
-func (*UnimplementedOnuInterAdapterServiceServer) DeleteGemPort(ctx context.Context, req *inter_adapter.DeleteGemPortMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteGemPort not implemented")
-}
-func (*UnimplementedOnuInterAdapterServiceServer) DeleteTCont(ctx context.Context, req *inter_adapter.DeleteTcontMessage) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteTCont not implemented")
-}
-
-func RegisterOnuInterAdapterServiceServer(s *grpc.Server, srv OnuInterAdapterServiceServer) {
-	s.RegisterService(&_OnuInterAdapterService_serviceDesc, srv)
-}
-
-func _OnuInterAdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(OnuInterAdapterServiceServer).GetHealthStatus(&onuInterAdapterServiceGetHealthStatusServer{stream})
-}
-
-type OnuInterAdapterService_GetHealthStatusServer interface {
-	Send(*health.HealthStatus) error
-	Recv() (*common.Connection, error)
-	grpc.ServerStream
-}
-
-type onuInterAdapterServiceGetHealthStatusServer struct {
-	grpc.ServerStream
-}
-
-func (x *onuInterAdapterServiceGetHealthStatusServer) Send(m *health.HealthStatus) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *onuInterAdapterServiceGetHealthStatusServer) Recv() (*common.Connection, error) {
-	m := new(common.Connection)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _OnuInterAdapterService_OnuIndication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.OnuIndicationMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OnuInterAdapterServiceServer).OnuIndication(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/OnuIndication",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).OnuIndication(ctx, req.(*inter_adapter.OnuIndicationMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OnuInterAdapterService_OmciIndication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.OmciMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OnuInterAdapterServiceServer).OmciIndication(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/OmciIndication",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).OmciIndication(ctx, req.(*inter_adapter.OmciMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OnuInterAdapterService_DownloadTechProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.TechProfileDownloadMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OnuInterAdapterServiceServer).DownloadTechProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/DownloadTechProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).DownloadTechProfile(ctx, req.(*inter_adapter.TechProfileDownloadMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OnuInterAdapterService_DeleteGemPort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.DeleteGemPortMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OnuInterAdapterServiceServer).DeleteGemPort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/DeleteGemPort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).DeleteGemPort(ctx, req.(*inter_adapter.DeleteGemPortMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _OnuInterAdapterService_DeleteTCont_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(inter_adapter.DeleteTcontMessage)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OnuInterAdapterServiceServer).DeleteTCont(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/onu_inter_adapter_service.OnuInterAdapterService/DeleteTCont",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OnuInterAdapterServiceServer).DeleteTCont(ctx, req.(*inter_adapter.DeleteTcontMessage))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _OnuInterAdapterService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "onu_inter_adapter_service.OnuInterAdapterService",
-	HandlerType: (*OnuInterAdapterServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "OnuIndication",
-			Handler:    _OnuInterAdapterService_OnuIndication_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_onu_inter_adapter_service_proto_rawDesc), len(file_voltha_protos_onu_inter_adapter_service_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "OmciIndication",
-			Handler:    _OnuInterAdapterService_OmciIndication_Handler,
-		},
-		{
-			MethodName: "DownloadTechProfile",
-			Handler:    _OnuInterAdapterService_DownloadTechProfile_Handler,
-		},
-		{
-			MethodName: "DeleteGemPort",
-			Handler:    _OnuInterAdapterService_DeleteGemPort_Handler,
-		},
-		{
-			MethodName: "DeleteTCont",
-			Handler:    _OnuInterAdapterService_DeleteTCont_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "GetHealthStatus",
-			Handler:       _OnuInterAdapterService_GetHealthStatus_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "voltha_protos/onu_inter_adapter_service.proto",
+		GoTypes:           file_voltha_protos_onu_inter_adapter_service_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_onu_inter_adapter_service_proto_depIdxs,
+	}.Build()
+	File_voltha_protos_onu_inter_adapter_service_proto = out.File
+	file_voltha_protos_onu_inter_adapter_service_proto_goTypes = nil
+	file_voltha_protos_onu_inter_adapter_service_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service_grpc.pb.go
new file mode 100644
index 0000000..393563d
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/onu_inter_adapter_service/onu_inter_adapter_service_grpc.pb.go
@@ -0,0 +1,315 @@
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/onu_inter_adapter_service.proto
+
+package onu_inter_adapter_service
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	health "github.com/opencord/voltha-protos/v5/go/health"
+	inter_adapter "github.com/opencord/voltha-protos/v5/go/inter_adapter"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	OnuInterAdapterService_GetHealthStatus_FullMethodName     = "/onu_inter_adapter_service.OnuInterAdapterService/GetHealthStatus"
+	OnuInterAdapterService_OnuIndication_FullMethodName       = "/onu_inter_adapter_service.OnuInterAdapterService/OnuIndication"
+	OnuInterAdapterService_OmciIndication_FullMethodName      = "/onu_inter_adapter_service.OnuInterAdapterService/OmciIndication"
+	OnuInterAdapterService_DownloadTechProfile_FullMethodName = "/onu_inter_adapter_service.OnuInterAdapterService/DownloadTechProfile"
+	OnuInterAdapterService_DeleteGemPort_FullMethodName       = "/onu_inter_adapter_service.OnuInterAdapterService/DeleteGemPort"
+	OnuInterAdapterService_DeleteTCont_FullMethodName         = "/onu_inter_adapter_service.OnuInterAdapterService/DeleteTCont"
+)
+
+// OnuInterAdapterServiceClient is the client API for OnuInterAdapterService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type OnuInterAdapterServiceClient interface {
+	// GetHealthStatus is used by a OnuInterAdapterService client to detect a connection
+	// lost with the gRPC server hosting the OnuInterAdapterService service
+	GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error)
+	OnuIndication(ctx context.Context, in *inter_adapter.OnuIndicationMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	OmciIndication(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DownloadTechProfile(ctx context.Context, in *inter_adapter.TechProfileDownloadMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeleteGemPort(ctx context.Context, in *inter_adapter.DeleteGemPortMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DeleteTCont(ctx context.Context, in *inter_adapter.DeleteTcontMessage, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type onuInterAdapterServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewOnuInterAdapterServiceClient(cc grpc.ClientConnInterface) OnuInterAdapterServiceClient {
+	return &onuInterAdapterServiceClient{cc}
+}
+
+func (c *onuInterAdapterServiceClient) GetHealthStatus(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[common.Connection, health.HealthStatus], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &OnuInterAdapterService_ServiceDesc.Streams[0], OnuInterAdapterService_GetHealthStatus_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[common.Connection, health.HealthStatus]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type OnuInterAdapterService_GetHealthStatusClient = grpc.BidiStreamingClient[common.Connection, health.HealthStatus]
+
+func (c *onuInterAdapterServiceClient) OnuIndication(ctx context.Context, in *inter_adapter.OnuIndicationMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OnuInterAdapterService_OnuIndication_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *onuInterAdapterServiceClient) OmciIndication(ctx context.Context, in *inter_adapter.OmciMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OnuInterAdapterService_OmciIndication_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *onuInterAdapterServiceClient) DownloadTechProfile(ctx context.Context, in *inter_adapter.TechProfileDownloadMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OnuInterAdapterService_DownloadTechProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *onuInterAdapterServiceClient) DeleteGemPort(ctx context.Context, in *inter_adapter.DeleteGemPortMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OnuInterAdapterService_DeleteGemPort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *onuInterAdapterServiceClient) DeleteTCont(ctx context.Context, in *inter_adapter.DeleteTcontMessage, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, OnuInterAdapterService_DeleteTCont_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// OnuInterAdapterServiceServer is the server API for OnuInterAdapterService service.
+// All implementations must embed UnimplementedOnuInterAdapterServiceServer
+// for forward compatibility.
+type OnuInterAdapterServiceServer interface {
+	// GetHealthStatus is used by a OnuInterAdapterService client to detect a connection
+	// lost with the gRPC server hosting the OnuInterAdapterService service
+	GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error
+	OnuIndication(context.Context, *inter_adapter.OnuIndicationMessage) (*emptypb.Empty, error)
+	OmciIndication(context.Context, *inter_adapter.OmciMessage) (*emptypb.Empty, error)
+	DownloadTechProfile(context.Context, *inter_adapter.TechProfileDownloadMessage) (*emptypb.Empty, error)
+	DeleteGemPort(context.Context, *inter_adapter.DeleteGemPortMessage) (*emptypb.Empty, error)
+	DeleteTCont(context.Context, *inter_adapter.DeleteTcontMessage) (*emptypb.Empty, error)
+	mustEmbedUnimplementedOnuInterAdapterServiceServer()
+}
+
+// UnimplementedOnuInterAdapterServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedOnuInterAdapterServiceServer struct{}
+
+func (UnimplementedOnuInterAdapterServiceServer) GetHealthStatus(grpc.BidiStreamingServer[common.Connection, health.HealthStatus]) error {
+	return status.Error(codes.Unimplemented, "method GetHealthStatus not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) OnuIndication(context.Context, *inter_adapter.OnuIndicationMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method OnuIndication not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) OmciIndication(context.Context, *inter_adapter.OmciMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method OmciIndication not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) DownloadTechProfile(context.Context, *inter_adapter.TechProfileDownloadMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadTechProfile not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) DeleteGemPort(context.Context, *inter_adapter.DeleteGemPortMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteGemPort not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) DeleteTCont(context.Context, *inter_adapter.DeleteTcontMessage) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteTCont not implemented")
+}
+func (UnimplementedOnuInterAdapterServiceServer) mustEmbedUnimplementedOnuInterAdapterServiceServer() {
+}
+func (UnimplementedOnuInterAdapterServiceServer) testEmbeddedByValue() {}
+
+// UnsafeOnuInterAdapterServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to OnuInterAdapterServiceServer will
+// result in compilation errors.
+type UnsafeOnuInterAdapterServiceServer interface {
+	mustEmbedUnimplementedOnuInterAdapterServiceServer()
+}
+
+func RegisterOnuInterAdapterServiceServer(s grpc.ServiceRegistrar, srv OnuInterAdapterServiceServer) {
+	// If the following call panics, it indicates UnimplementedOnuInterAdapterServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&OnuInterAdapterService_ServiceDesc, srv)
+}
+
+func _OnuInterAdapterService_GetHealthStatus_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(OnuInterAdapterServiceServer).GetHealthStatus(&grpc.GenericServerStream[common.Connection, health.HealthStatus]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type OnuInterAdapterService_GetHealthStatusServer = grpc.BidiStreamingServer[common.Connection, health.HealthStatus]
+
+func _OnuInterAdapterService_OnuIndication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.OnuIndicationMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnuInterAdapterServiceServer).OnuIndication(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OnuInterAdapterService_OnuIndication_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnuInterAdapterServiceServer).OnuIndication(ctx, req.(*inter_adapter.OnuIndicationMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OnuInterAdapterService_OmciIndication_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.OmciMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnuInterAdapterServiceServer).OmciIndication(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OnuInterAdapterService_OmciIndication_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnuInterAdapterServiceServer).OmciIndication(ctx, req.(*inter_adapter.OmciMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OnuInterAdapterService_DownloadTechProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.TechProfileDownloadMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnuInterAdapterServiceServer).DownloadTechProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OnuInterAdapterService_DownloadTechProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnuInterAdapterServiceServer).DownloadTechProfile(ctx, req.(*inter_adapter.TechProfileDownloadMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OnuInterAdapterService_DeleteGemPort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.DeleteGemPortMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnuInterAdapterServiceServer).DeleteGemPort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OnuInterAdapterService_DeleteGemPort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnuInterAdapterServiceServer).DeleteGemPort(ctx, req.(*inter_adapter.DeleteGemPortMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _OnuInterAdapterService_DeleteTCont_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(inter_adapter.DeleteTcontMessage)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OnuInterAdapterServiceServer).DeleteTCont(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: OnuInterAdapterService_DeleteTCont_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OnuInterAdapterServiceServer).DeleteTCont(ctx, req.(*inter_adapter.DeleteTcontMessage))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// OnuInterAdapterService_ServiceDesc is the grpc.ServiceDesc for OnuInterAdapterService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var OnuInterAdapterService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "onu_inter_adapter_service.OnuInterAdapterService",
+	HandlerType: (*OnuInterAdapterServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "OnuIndication",
+			Handler:    _OnuInterAdapterService_OnuIndication_Handler,
+		},
+		{
+			MethodName: "OmciIndication",
+			Handler:    _OnuInterAdapterService_OmciIndication_Handler,
+		},
+		{
+			MethodName: "DownloadTechProfile",
+			Handler:    _OnuInterAdapterService_DownloadTechProfile_Handler,
+		},
+		{
+			MethodName: "DeleteGemPort",
+			Handler:    _OnuInterAdapterService_DeleteGemPort_Handler,
+		},
+		{
+			MethodName: "DeleteTCont",
+			Handler:    _OnuInterAdapterService_DeleteTCont_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "GetHealthStatus",
+			Handler:       _OnuInterAdapterService_GetHealthStatus_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/onu_inter_adapter_service.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
index 18505f0..4c107e9 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openflow_13/openflow_13.pb.go
@@ -1,25 +1,82 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford
+// Junior University
+// Copyright 2011-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// We are making the OpenFlow specification and associated documentation
+// (Software) available for public use and benefit with the expectation
+// that others will use, modify and enhance the Software and contribute
+// those enhancements back to the community. However, since we would
+// like to make the Software available for broadest use, with as few
+// restrictions as possible permission is hereby granted, free of
+// charge, to any person obtaining a copy of this Software to deal in
+// the Software under the copyrights without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+// The name and trademarks of copyright holder(s) may NOT be used in
+// advertising or publicity pertaining to the Software or any
+// derivatives without specific, written prior permission.
+
+// OpenFlow: protocol between controller and datapath.
+
+//
+// This is a relatively straightforward rendering of OpenFlow message
+// definitions into protocol buffer messages. We preserved the snake
+// case syntax, and made the following changes:
+// - all pad fields dropped
+// - for each enum value above 0x7fffffff the MSB is dropped. For example,
+//   0xffffffff is now 0x7fffffff.
+// - '<type> thing[...]' is replaced with 'repeated <type> thing'
+// - 'char thing[...]' is replaced with 'string thing'
+// - 'uint8_t data[...]' is replaced with 'bytes data'
+// - the following systematic changes are done to various integer types:
+//   uint8_t  -> uint32
+//   uint16_t -> uint32
+//   uint32_t -> uint32
+//   uint64_t -> uint64
+// - removed most length, len, size fields where these values can be determined
+//   from the explicitly encoded length of "repeated" protobuf fields.
+// - explicit use of enum types whereever it is unambigous (and not used as
+//   bitmask/flags value.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/openflow_13.proto
 
 package openflow_13
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // Port numbering. Ports are numbered starting from 1.
 type OfpPortNo int32
@@ -31,165 +88,207 @@
 	// Reserved OpenFlow Port (fake output "ports").
 	OfpPortNo_OFPP_IN_PORT    OfpPortNo = 2147483640
 	OfpPortNo_OFPP_TABLE      OfpPortNo = 2147483641
-	OfpPortNo_OFPP_NORMAL     OfpPortNo = 2147483642
-	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643
-	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644
-	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645
-	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646
+	OfpPortNo_OFPP_NORMAL     OfpPortNo = 2147483642 // Forward using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_FLOOD      OfpPortNo = 2147483643 // Flood using non-OpenFlow pipeline.
+	OfpPortNo_OFPP_ALL        OfpPortNo = 2147483644 // All standard ports except input port.
+	OfpPortNo_OFPP_CONTROLLER OfpPortNo = 2147483645 // Send to controller.
+	OfpPortNo_OFPP_LOCAL      OfpPortNo = 2147483646 // Local openflow "port".
 	OfpPortNo_OFPP_ANY        OfpPortNo = 2147483647
 )
 
-var OfpPortNo_name = map[int32]string{
-	0:          "OFPP_INVALID",
-	2147483392: "OFPP_MAX",
-	2147483640: "OFPP_IN_PORT",
-	2147483641: "OFPP_TABLE",
-	2147483642: "OFPP_NORMAL",
-	2147483643: "OFPP_FLOOD",
-	2147483644: "OFPP_ALL",
-	2147483645: "OFPP_CONTROLLER",
-	2147483646: "OFPP_LOCAL",
-	2147483647: "OFPP_ANY",
-}
+// Enum value maps for OfpPortNo.
+var (
+	OfpPortNo_name = map[int32]string{
+		0:          "OFPP_INVALID",
+		2147483392: "OFPP_MAX",
+		2147483640: "OFPP_IN_PORT",
+		2147483641: "OFPP_TABLE",
+		2147483642: "OFPP_NORMAL",
+		2147483643: "OFPP_FLOOD",
+		2147483644: "OFPP_ALL",
+		2147483645: "OFPP_CONTROLLER",
+		2147483646: "OFPP_LOCAL",
+		2147483647: "OFPP_ANY",
+	}
+	OfpPortNo_value = map[string]int32{
+		"OFPP_INVALID":    0,
+		"OFPP_MAX":        2147483392,
+		"OFPP_IN_PORT":    2147483640,
+		"OFPP_TABLE":      2147483641,
+		"OFPP_NORMAL":     2147483642,
+		"OFPP_FLOOD":      2147483643,
+		"OFPP_ALL":        2147483644,
+		"OFPP_CONTROLLER": 2147483645,
+		"OFPP_LOCAL":      2147483646,
+		"OFPP_ANY":        2147483647,
+	}
+)
 
-var OfpPortNo_value = map[string]int32{
-	"OFPP_INVALID":    0,
-	"OFPP_MAX":        2147483392,
-	"OFPP_IN_PORT":    2147483640,
-	"OFPP_TABLE":      2147483641,
-	"OFPP_NORMAL":     2147483642,
-	"OFPP_FLOOD":      2147483643,
-	"OFPP_ALL":        2147483644,
-	"OFPP_CONTROLLER": 2147483645,
-	"OFPP_LOCAL":      2147483646,
-	"OFPP_ANY":        2147483647,
+func (x OfpPortNo) Enum() *OfpPortNo {
+	p := new(OfpPortNo)
+	*p = x
+	return p
 }
 
 func (x OfpPortNo) String() string {
-	return proto.EnumName(OfpPortNo_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortNo) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[0].Descriptor()
+}
+
+func (OfpPortNo) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[0]
+}
+
+func (x OfpPortNo) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortNo.Descriptor instead.
 func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{0}
 }
 
 type OfpType int32
 
 const (
 	// Immutable messages.
-	OfpType_OFPT_HELLO        OfpType = 0
-	OfpType_OFPT_ERROR        OfpType = 1
-	OfpType_OFPT_ECHO_REQUEST OfpType = 2
-	OfpType_OFPT_ECHO_REPLY   OfpType = 3
-	OfpType_OFPT_EXPERIMENTER OfpType = 4
+	OfpType_OFPT_HELLO        OfpType = 0 // Symmetric message
+	OfpType_OFPT_ERROR        OfpType = 1 // Symmetric message
+	OfpType_OFPT_ECHO_REQUEST OfpType = 2 // Symmetric message
+	OfpType_OFPT_ECHO_REPLY   OfpType = 3 // Symmetric message
+	OfpType_OFPT_EXPERIMENTER OfpType = 4 // Symmetric message
 	// Switch configuration messages.
-	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5
-	OfpType_OFPT_FEATURES_REPLY     OfpType = 6
-	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7
-	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8
-	OfpType_OFPT_SET_CONFIG         OfpType = 9
+	OfpType_OFPT_FEATURES_REQUEST   OfpType = 5 // Controller/switch message
+	OfpType_OFPT_FEATURES_REPLY     OfpType = 6 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REQUEST OfpType = 7 // Controller/switch message
+	OfpType_OFPT_GET_CONFIG_REPLY   OfpType = 8 // Controller/switch message
+	OfpType_OFPT_SET_CONFIG         OfpType = 9 // Controller/switch message
 	// Asynchronous messages.
-	OfpType_OFPT_PACKET_IN    OfpType = 10
-	OfpType_OFPT_FLOW_REMOVED OfpType = 11
-	OfpType_OFPT_PORT_STATUS  OfpType = 12
+	OfpType_OFPT_PACKET_IN    OfpType = 10 // Async message
+	OfpType_OFPT_FLOW_REMOVED OfpType = 11 // Async message
+	OfpType_OFPT_PORT_STATUS  OfpType = 12 // Async message
 	// Controller command messages.
-	OfpType_OFPT_PACKET_OUT OfpType = 13
-	OfpType_OFPT_FLOW_MOD   OfpType = 14
-	OfpType_OFPT_GROUP_MOD  OfpType = 15
-	OfpType_OFPT_PORT_MOD   OfpType = 16
-	OfpType_OFPT_TABLE_MOD  OfpType = 17
+	OfpType_OFPT_PACKET_OUT OfpType = 13 // Controller/switch message
+	OfpType_OFPT_FLOW_MOD   OfpType = 14 // Controller/switch message
+	OfpType_OFPT_GROUP_MOD  OfpType = 15 // Controller/switch message
+	OfpType_OFPT_PORT_MOD   OfpType = 16 // Controller/switch message
+	OfpType_OFPT_TABLE_MOD  OfpType = 17 // Controller/switch message
 	// Multipart messages.
-	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18
-	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19
+	OfpType_OFPT_MULTIPART_REQUEST OfpType = 18 // Controller/switch message
+	OfpType_OFPT_MULTIPART_REPLY   OfpType = 19 // Controller/switch message
 	// Barrier messages.
-	OfpType_OFPT_BARRIER_REQUEST OfpType = 20
-	OfpType_OFPT_BARRIER_REPLY   OfpType = 21
+	OfpType_OFPT_BARRIER_REQUEST OfpType = 20 // Controller/switch message
+	OfpType_OFPT_BARRIER_REPLY   OfpType = 21 // Controller/switch message
 	// Queue Configuration messages.
-	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22
-	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23
+	OfpType_OFPT_QUEUE_GET_CONFIG_REQUEST OfpType = 22 // Controller/switch message
+	OfpType_OFPT_QUEUE_GET_CONFIG_REPLY   OfpType = 23 // Controller/switch message
 	// Controller role change request messages.
-	OfpType_OFPT_ROLE_REQUEST OfpType = 24
-	OfpType_OFPT_ROLE_REPLY   OfpType = 25
+	OfpType_OFPT_ROLE_REQUEST OfpType = 24 // Controller/switch message
+	OfpType_OFPT_ROLE_REPLY   OfpType = 25 // Controller/switch message
 	// Asynchronous message configuration.
-	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26
-	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27
-	OfpType_OFPT_SET_ASYNC         OfpType = 28
+	OfpType_OFPT_GET_ASYNC_REQUEST OfpType = 26 // Controller/switch message
+	OfpType_OFPT_GET_ASYNC_REPLY   OfpType = 27 // Controller/switch message
+	OfpType_OFPT_SET_ASYNC         OfpType = 28 // Controller/switch message
 	// Meters and rate limiters configuration messages.
-	OfpType_OFPT_METER_MOD OfpType = 29
+	OfpType_OFPT_METER_MOD OfpType = 29 // Controller/switch message
 )
 
-var OfpType_name = map[int32]string{
-	0:  "OFPT_HELLO",
-	1:  "OFPT_ERROR",
-	2:  "OFPT_ECHO_REQUEST",
-	3:  "OFPT_ECHO_REPLY",
-	4:  "OFPT_EXPERIMENTER",
-	5:  "OFPT_FEATURES_REQUEST",
-	6:  "OFPT_FEATURES_REPLY",
-	7:  "OFPT_GET_CONFIG_REQUEST",
-	8:  "OFPT_GET_CONFIG_REPLY",
-	9:  "OFPT_SET_CONFIG",
-	10: "OFPT_PACKET_IN",
-	11: "OFPT_FLOW_REMOVED",
-	12: "OFPT_PORT_STATUS",
-	13: "OFPT_PACKET_OUT",
-	14: "OFPT_FLOW_MOD",
-	15: "OFPT_GROUP_MOD",
-	16: "OFPT_PORT_MOD",
-	17: "OFPT_TABLE_MOD",
-	18: "OFPT_MULTIPART_REQUEST",
-	19: "OFPT_MULTIPART_REPLY",
-	20: "OFPT_BARRIER_REQUEST",
-	21: "OFPT_BARRIER_REPLY",
-	22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
-	23: "OFPT_QUEUE_GET_CONFIG_REPLY",
-	24: "OFPT_ROLE_REQUEST",
-	25: "OFPT_ROLE_REPLY",
-	26: "OFPT_GET_ASYNC_REQUEST",
-	27: "OFPT_GET_ASYNC_REPLY",
-	28: "OFPT_SET_ASYNC",
-	29: "OFPT_METER_MOD",
-}
+// Enum value maps for OfpType.
+var (
+	OfpType_name = map[int32]string{
+		0:  "OFPT_HELLO",
+		1:  "OFPT_ERROR",
+		2:  "OFPT_ECHO_REQUEST",
+		3:  "OFPT_ECHO_REPLY",
+		4:  "OFPT_EXPERIMENTER",
+		5:  "OFPT_FEATURES_REQUEST",
+		6:  "OFPT_FEATURES_REPLY",
+		7:  "OFPT_GET_CONFIG_REQUEST",
+		8:  "OFPT_GET_CONFIG_REPLY",
+		9:  "OFPT_SET_CONFIG",
+		10: "OFPT_PACKET_IN",
+		11: "OFPT_FLOW_REMOVED",
+		12: "OFPT_PORT_STATUS",
+		13: "OFPT_PACKET_OUT",
+		14: "OFPT_FLOW_MOD",
+		15: "OFPT_GROUP_MOD",
+		16: "OFPT_PORT_MOD",
+		17: "OFPT_TABLE_MOD",
+		18: "OFPT_MULTIPART_REQUEST",
+		19: "OFPT_MULTIPART_REPLY",
+		20: "OFPT_BARRIER_REQUEST",
+		21: "OFPT_BARRIER_REPLY",
+		22: "OFPT_QUEUE_GET_CONFIG_REQUEST",
+		23: "OFPT_QUEUE_GET_CONFIG_REPLY",
+		24: "OFPT_ROLE_REQUEST",
+		25: "OFPT_ROLE_REPLY",
+		26: "OFPT_GET_ASYNC_REQUEST",
+		27: "OFPT_GET_ASYNC_REPLY",
+		28: "OFPT_SET_ASYNC",
+		29: "OFPT_METER_MOD",
+	}
+	OfpType_value = map[string]int32{
+		"OFPT_HELLO":                    0,
+		"OFPT_ERROR":                    1,
+		"OFPT_ECHO_REQUEST":             2,
+		"OFPT_ECHO_REPLY":               3,
+		"OFPT_EXPERIMENTER":             4,
+		"OFPT_FEATURES_REQUEST":         5,
+		"OFPT_FEATURES_REPLY":           6,
+		"OFPT_GET_CONFIG_REQUEST":       7,
+		"OFPT_GET_CONFIG_REPLY":         8,
+		"OFPT_SET_CONFIG":               9,
+		"OFPT_PACKET_IN":                10,
+		"OFPT_FLOW_REMOVED":             11,
+		"OFPT_PORT_STATUS":              12,
+		"OFPT_PACKET_OUT":               13,
+		"OFPT_FLOW_MOD":                 14,
+		"OFPT_GROUP_MOD":                15,
+		"OFPT_PORT_MOD":                 16,
+		"OFPT_TABLE_MOD":                17,
+		"OFPT_MULTIPART_REQUEST":        18,
+		"OFPT_MULTIPART_REPLY":          19,
+		"OFPT_BARRIER_REQUEST":          20,
+		"OFPT_BARRIER_REPLY":            21,
+		"OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
+		"OFPT_QUEUE_GET_CONFIG_REPLY":   23,
+		"OFPT_ROLE_REQUEST":             24,
+		"OFPT_ROLE_REPLY":               25,
+		"OFPT_GET_ASYNC_REQUEST":        26,
+		"OFPT_GET_ASYNC_REPLY":          27,
+		"OFPT_SET_ASYNC":                28,
+		"OFPT_METER_MOD":                29,
+	}
+)
 
-var OfpType_value = map[string]int32{
-	"OFPT_HELLO":                    0,
-	"OFPT_ERROR":                    1,
-	"OFPT_ECHO_REQUEST":             2,
-	"OFPT_ECHO_REPLY":               3,
-	"OFPT_EXPERIMENTER":             4,
-	"OFPT_FEATURES_REQUEST":         5,
-	"OFPT_FEATURES_REPLY":           6,
-	"OFPT_GET_CONFIG_REQUEST":       7,
-	"OFPT_GET_CONFIG_REPLY":         8,
-	"OFPT_SET_CONFIG":               9,
-	"OFPT_PACKET_IN":                10,
-	"OFPT_FLOW_REMOVED":             11,
-	"OFPT_PORT_STATUS":              12,
-	"OFPT_PACKET_OUT":               13,
-	"OFPT_FLOW_MOD":                 14,
-	"OFPT_GROUP_MOD":                15,
-	"OFPT_PORT_MOD":                 16,
-	"OFPT_TABLE_MOD":                17,
-	"OFPT_MULTIPART_REQUEST":        18,
-	"OFPT_MULTIPART_REPLY":          19,
-	"OFPT_BARRIER_REQUEST":          20,
-	"OFPT_BARRIER_REPLY":            21,
-	"OFPT_QUEUE_GET_CONFIG_REQUEST": 22,
-	"OFPT_QUEUE_GET_CONFIG_REPLY":   23,
-	"OFPT_ROLE_REQUEST":             24,
-	"OFPT_ROLE_REPLY":               25,
-	"OFPT_GET_ASYNC_REQUEST":        26,
-	"OFPT_GET_ASYNC_REPLY":          27,
-	"OFPT_SET_ASYNC":                28,
-	"OFPT_METER_MOD":                29,
+func (x OfpType) Enum() *OfpType {
+	p := new(OfpType)
+	*p = x
+	return p
 }
 
 func (x OfpType) String() string {
-	return proto.EnumName(OfpType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[1].Descriptor()
+}
+
+func (OfpType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[1]
+}
+
+func (x OfpType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpType.Descriptor instead.
 func (OfpType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
 // Hello elements types.
@@ -197,57 +296,99 @@
 
 const (
 	OfpHelloElemType_OFPHET_INVALID       OfpHelloElemType = 0
-	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1
+	OfpHelloElemType_OFPHET_VERSIONBITMAP OfpHelloElemType = 1 // Bitmap of version supported.
 )
 
-var OfpHelloElemType_name = map[int32]string{
-	0: "OFPHET_INVALID",
-	1: "OFPHET_VERSIONBITMAP",
-}
+// Enum value maps for OfpHelloElemType.
+var (
+	OfpHelloElemType_name = map[int32]string{
+		0: "OFPHET_INVALID",
+		1: "OFPHET_VERSIONBITMAP",
+	}
+	OfpHelloElemType_value = map[string]int32{
+		"OFPHET_INVALID":       0,
+		"OFPHET_VERSIONBITMAP": 1,
+	}
+)
 
-var OfpHelloElemType_value = map[string]int32{
-	"OFPHET_INVALID":       0,
-	"OFPHET_VERSIONBITMAP": 1,
+func (x OfpHelloElemType) Enum() *OfpHelloElemType {
+	p := new(OfpHelloElemType)
+	*p = x
+	return p
 }
 
 func (x OfpHelloElemType) String() string {
-	return proto.EnumName(OfpHelloElemType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloElemType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[2].Descriptor()
+}
+
+func (OfpHelloElemType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[2]
+}
+
+func (x OfpHelloElemType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloElemType.Descriptor instead.
 func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{2}
 }
 
 type OfpConfigFlags int32
 
 const (
 	// Handling of IP fragments.
-	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0
-	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1
-	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2
-	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3
+	OfpConfigFlags_OFPC_FRAG_NORMAL OfpConfigFlags = 0 // No special handling for fragments.
+	OfpConfigFlags_OFPC_FRAG_DROP   OfpConfigFlags = 1 // Drop fragments.
+	OfpConfigFlags_OFPC_FRAG_REASM  OfpConfigFlags = 2 // Reassemble (only if OFPC_IP_REASM set).
+	OfpConfigFlags_OFPC_FRAG_MASK   OfpConfigFlags = 3 // Bitmask of flags dealing with frag.
 )
 
-var OfpConfigFlags_name = map[int32]string{
-	0: "OFPC_FRAG_NORMAL",
-	1: "OFPC_FRAG_DROP",
-	2: "OFPC_FRAG_REASM",
-	3: "OFPC_FRAG_MASK",
-}
+// Enum value maps for OfpConfigFlags.
+var (
+	OfpConfigFlags_name = map[int32]string{
+		0: "OFPC_FRAG_NORMAL",
+		1: "OFPC_FRAG_DROP",
+		2: "OFPC_FRAG_REASM",
+		3: "OFPC_FRAG_MASK",
+	}
+	OfpConfigFlags_value = map[string]int32{
+		"OFPC_FRAG_NORMAL": 0,
+		"OFPC_FRAG_DROP":   1,
+		"OFPC_FRAG_REASM":  2,
+		"OFPC_FRAG_MASK":   3,
+	}
+)
 
-var OfpConfigFlags_value = map[string]int32{
-	"OFPC_FRAG_NORMAL": 0,
-	"OFPC_FRAG_DROP":   1,
-	"OFPC_FRAG_REASM":  2,
-	"OFPC_FRAG_MASK":   3,
+func (x OfpConfigFlags) Enum() *OfpConfigFlags {
+	p := new(OfpConfigFlags)
+	*p = x
+	return p
 }
 
 func (x OfpConfigFlags) String() string {
-	return proto.EnumName(OfpConfigFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpConfigFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[3].Descriptor()
+}
+
+func (OfpConfigFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[3]
+}
+
+func (x OfpConfigFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpConfigFlags.Descriptor instead.
 func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
 // Flags to configure the table. Reserved for future use.
@@ -255,25 +396,46 @@
 
 const (
 	OfpTableConfig_OFPTC_INVALID         OfpTableConfig = 0
-	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3
+	OfpTableConfig_OFPTC_DEPRECATED_MASK OfpTableConfig = 3 // Deprecated bits
 )
 
-var OfpTableConfig_name = map[int32]string{
-	0: "OFPTC_INVALID",
-	3: "OFPTC_DEPRECATED_MASK",
-}
+// Enum value maps for OfpTableConfig.
+var (
+	OfpTableConfig_name = map[int32]string{
+		0: "OFPTC_INVALID",
+		3: "OFPTC_DEPRECATED_MASK",
+	}
+	OfpTableConfig_value = map[string]int32{
+		"OFPTC_INVALID":         0,
+		"OFPTC_DEPRECATED_MASK": 3,
+	}
+)
 
-var OfpTableConfig_value = map[string]int32{
-	"OFPTC_INVALID":         0,
-	"OFPTC_DEPRECATED_MASK": 3,
+func (x OfpTableConfig) Enum() *OfpTableConfig {
+	p := new(OfpTableConfig)
+	*p = x
+	return p
 }
 
 func (x OfpTableConfig) String() string {
-	return proto.EnumName(OfpTableConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[4].Descriptor()
+}
+
+func (OfpTableConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[4]
+}
+
+func (x OfpTableConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableConfig.Descriptor instead.
 func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
 // Table numbering. Tables can use any number up to OFPT_MAX.
@@ -287,24 +449,45 @@
 	OfpTable_OFPTT_ALL OfpTable = 255
 )
 
-var OfpTable_name = map[int32]string{
-	0:   "OFPTT_INVALID",
-	254: "OFPTT_MAX",
-	255: "OFPTT_ALL",
-}
+// Enum value maps for OfpTable.
+var (
+	OfpTable_name = map[int32]string{
+		0:   "OFPTT_INVALID",
+		254: "OFPTT_MAX",
+		255: "OFPTT_ALL",
+	}
+	OfpTable_value = map[string]int32{
+		"OFPTT_INVALID": 0,
+		"OFPTT_MAX":     254,
+		"OFPTT_ALL":     255,
+	}
+)
 
-var OfpTable_value = map[string]int32{
-	"OFPTT_INVALID": 0,
-	"OFPTT_MAX":     254,
-	"OFPTT_ALL":     255,
+func (x OfpTable) Enum() *OfpTable {
+	p := new(OfpTable)
+	*p = x
+	return p
 }
 
 func (x OfpTable) String() string {
-	return proto.EnumName(OfpTable_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTable) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[5].Descriptor()
+}
+
+func (OfpTable) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[5]
+}
+
+func (x OfpTable) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTable.Descriptor instead.
 func (OfpTable) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
 // Capabilities supported by the datapath.
@@ -312,43 +495,64 @@
 
 const (
 	OfpCapabilities_OFPC_INVALID      OfpCapabilities = 0
-	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1
-	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2
-	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4
-	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8
-	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32
-	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64
-	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256
+	OfpCapabilities_OFPC_FLOW_STATS   OfpCapabilities = 1   // Flow statistics.
+	OfpCapabilities_OFPC_TABLE_STATS  OfpCapabilities = 2   // Table statistics.
+	OfpCapabilities_OFPC_PORT_STATS   OfpCapabilities = 4   // Port statistics.
+	OfpCapabilities_OFPC_GROUP_STATS  OfpCapabilities = 8   // Group statistics.
+	OfpCapabilities_OFPC_IP_REASM     OfpCapabilities = 32  // Can reassemble IP fragments.
+	OfpCapabilities_OFPC_QUEUE_STATS  OfpCapabilities = 64  // Queue statistics.
+	OfpCapabilities_OFPC_PORT_BLOCKED OfpCapabilities = 256 // Switch will block looping ports.
 )
 
-var OfpCapabilities_name = map[int32]string{
-	0:   "OFPC_INVALID",
-	1:   "OFPC_FLOW_STATS",
-	2:   "OFPC_TABLE_STATS",
-	4:   "OFPC_PORT_STATS",
-	8:   "OFPC_GROUP_STATS",
-	32:  "OFPC_IP_REASM",
-	64:  "OFPC_QUEUE_STATS",
-	256: "OFPC_PORT_BLOCKED",
-}
+// Enum value maps for OfpCapabilities.
+var (
+	OfpCapabilities_name = map[int32]string{
+		0:   "OFPC_INVALID",
+		1:   "OFPC_FLOW_STATS",
+		2:   "OFPC_TABLE_STATS",
+		4:   "OFPC_PORT_STATS",
+		8:   "OFPC_GROUP_STATS",
+		32:  "OFPC_IP_REASM",
+		64:  "OFPC_QUEUE_STATS",
+		256: "OFPC_PORT_BLOCKED",
+	}
+	OfpCapabilities_value = map[string]int32{
+		"OFPC_INVALID":      0,
+		"OFPC_FLOW_STATS":   1,
+		"OFPC_TABLE_STATS":  2,
+		"OFPC_PORT_STATS":   4,
+		"OFPC_GROUP_STATS":  8,
+		"OFPC_IP_REASM":     32,
+		"OFPC_QUEUE_STATS":  64,
+		"OFPC_PORT_BLOCKED": 256,
+	}
+)
 
-var OfpCapabilities_value = map[string]int32{
-	"OFPC_INVALID":      0,
-	"OFPC_FLOW_STATS":   1,
-	"OFPC_TABLE_STATS":  2,
-	"OFPC_PORT_STATS":   4,
-	"OFPC_GROUP_STATS":  8,
-	"OFPC_IP_REASM":     32,
-	"OFPC_QUEUE_STATS":  64,
-	"OFPC_PORT_BLOCKED": 256,
+func (x OfpCapabilities) Enum() *OfpCapabilities {
+	p := new(OfpCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpCapabilities) String() string {
-	return proto.EnumName(OfpCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[6].Descriptor()
+}
+
+func (OfpCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[6]
+}
+
+func (x OfpCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpCapabilities.Descriptor instead.
 func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
 // Flags to indicate behavior of the physical port.  These flags are
@@ -358,34 +562,55 @@
 
 const (
 	OfpPortConfig_OFPPC_INVALID      OfpPortConfig = 0
-	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1
-	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4
-	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32
-	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64
+	OfpPortConfig_OFPPC_PORT_DOWN    OfpPortConfig = 1  // Port is administratively down.
+	OfpPortConfig_OFPPC_NO_RECV      OfpPortConfig = 4  // Drop all packets received by port.
+	OfpPortConfig_OFPPC_NO_FWD       OfpPortConfig = 32 // Drop packets forwarded to port.
+	OfpPortConfig_OFPPC_NO_PACKET_IN OfpPortConfig = 64 // Do not send packet-in msgs for port.
 )
 
-var OfpPortConfig_name = map[int32]string{
-	0:  "OFPPC_INVALID",
-	1:  "OFPPC_PORT_DOWN",
-	4:  "OFPPC_NO_RECV",
-	32: "OFPPC_NO_FWD",
-	64: "OFPPC_NO_PACKET_IN",
-}
+// Enum value maps for OfpPortConfig.
+var (
+	OfpPortConfig_name = map[int32]string{
+		0:  "OFPPC_INVALID",
+		1:  "OFPPC_PORT_DOWN",
+		4:  "OFPPC_NO_RECV",
+		32: "OFPPC_NO_FWD",
+		64: "OFPPC_NO_PACKET_IN",
+	}
+	OfpPortConfig_value = map[string]int32{
+		"OFPPC_INVALID":      0,
+		"OFPPC_PORT_DOWN":    1,
+		"OFPPC_NO_RECV":      4,
+		"OFPPC_NO_FWD":       32,
+		"OFPPC_NO_PACKET_IN": 64,
+	}
+)
 
-var OfpPortConfig_value = map[string]int32{
-	"OFPPC_INVALID":      0,
-	"OFPPC_PORT_DOWN":    1,
-	"OFPPC_NO_RECV":      4,
-	"OFPPC_NO_FWD":       32,
-	"OFPPC_NO_PACKET_IN": 64,
+func (x OfpPortConfig) Enum() *OfpPortConfig {
+	p := new(OfpPortConfig)
+	*p = x
+	return p
 }
 
 func (x OfpPortConfig) String() string {
-	return proto.EnumName(OfpPortConfig_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortConfig) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[7].Descriptor()
+}
+
+func (OfpPortConfig) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[7]
+}
+
+func (x OfpPortConfig) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortConfig.Descriptor instead.
 func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
 // Current state of the physical port.  These are not configurable from
@@ -394,31 +619,52 @@
 
 const (
 	OfpPortState_OFPPS_INVALID   OfpPortState = 0
-	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1
-	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2
-	OfpPortState_OFPPS_LIVE      OfpPortState = 4
+	OfpPortState_OFPPS_LINK_DOWN OfpPortState = 1 // No physical link present.
+	OfpPortState_OFPPS_BLOCKED   OfpPortState = 2 // Port is blocked
+	OfpPortState_OFPPS_LIVE      OfpPortState = 4 // Live for Fast Failover Group.
 )
 
-var OfpPortState_name = map[int32]string{
-	0: "OFPPS_INVALID",
-	1: "OFPPS_LINK_DOWN",
-	2: "OFPPS_BLOCKED",
-	4: "OFPPS_LIVE",
-}
+// Enum value maps for OfpPortState.
+var (
+	OfpPortState_name = map[int32]string{
+		0: "OFPPS_INVALID",
+		1: "OFPPS_LINK_DOWN",
+		2: "OFPPS_BLOCKED",
+		4: "OFPPS_LIVE",
+	}
+	OfpPortState_value = map[string]int32{
+		"OFPPS_INVALID":   0,
+		"OFPPS_LINK_DOWN": 1,
+		"OFPPS_BLOCKED":   2,
+		"OFPPS_LIVE":      4,
+	}
+)
 
-var OfpPortState_value = map[string]int32{
-	"OFPPS_INVALID":   0,
-	"OFPPS_LINK_DOWN": 1,
-	"OFPPS_BLOCKED":   2,
-	"OFPPS_LIVE":      4,
+func (x OfpPortState) Enum() *OfpPortState {
+	p := new(OfpPortState)
+	*p = x
+	return p
 }
 
 func (x OfpPortState) String() string {
-	return proto.EnumName(OfpPortState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[8].Descriptor()
+}
+
+func (OfpPortState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[8]
+}
+
+func (x OfpPortState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortState.Descriptor instead.
 func (OfpPortState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
 // Features of ports available in a datapath.
@@ -426,125 +672,188 @@
 
 const (
 	OfpPortFeatures_OFPPF_INVALID    OfpPortFeatures = 0
-	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1
-	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2
-	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4
-	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8
-	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16
-	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32
-	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64
-	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128
-	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256
-	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512
-	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024
-	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048
-	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096
-	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192
-	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384
-	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768
+	OfpPortFeatures_OFPPF_10MB_HD    OfpPortFeatures = 1     // 10 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_10MB_FD    OfpPortFeatures = 2     // 10 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_HD   OfpPortFeatures = 4     // 100 Mb half-duplex rate support.
+	OfpPortFeatures_OFPPF_100MB_FD   OfpPortFeatures = 8     // 100 Mb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_HD     OfpPortFeatures = 16    // 1 Gb half-duplex rate support.
+	OfpPortFeatures_OFPPF_1GB_FD     OfpPortFeatures = 32    // 1 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_10GB_FD    OfpPortFeatures = 64    // 10 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_40GB_FD    OfpPortFeatures = 128   // 40 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_100GB_FD   OfpPortFeatures = 256   // 100 Gb full-duplex rate support.
+	OfpPortFeatures_OFPPF_1TB_FD     OfpPortFeatures = 512   // 1 Tb full-duplex rate support.
+	OfpPortFeatures_OFPPF_OTHER      OfpPortFeatures = 1024  // Other rate, not in the list.
+	OfpPortFeatures_OFPPF_COPPER     OfpPortFeatures = 2048  // Copper medium.
+	OfpPortFeatures_OFPPF_FIBER      OfpPortFeatures = 4096  // Fiber medium.
+	OfpPortFeatures_OFPPF_AUTONEG    OfpPortFeatures = 8192  // Auto-negotiation.
+	OfpPortFeatures_OFPPF_PAUSE      OfpPortFeatures = 16384 // Pause.
+	OfpPortFeatures_OFPPF_PAUSE_ASYM OfpPortFeatures = 32768 // Asymmetric pause.
 )
 
-var OfpPortFeatures_name = map[int32]string{
-	0:     "OFPPF_INVALID",
-	1:     "OFPPF_10MB_HD",
-	2:     "OFPPF_10MB_FD",
-	4:     "OFPPF_100MB_HD",
-	8:     "OFPPF_100MB_FD",
-	16:    "OFPPF_1GB_HD",
-	32:    "OFPPF_1GB_FD",
-	64:    "OFPPF_10GB_FD",
-	128:   "OFPPF_40GB_FD",
-	256:   "OFPPF_100GB_FD",
-	512:   "OFPPF_1TB_FD",
-	1024:  "OFPPF_OTHER",
-	2048:  "OFPPF_COPPER",
-	4096:  "OFPPF_FIBER",
-	8192:  "OFPPF_AUTONEG",
-	16384: "OFPPF_PAUSE",
-	32768: "OFPPF_PAUSE_ASYM",
-}
+// Enum value maps for OfpPortFeatures.
+var (
+	OfpPortFeatures_name = map[int32]string{
+		0:     "OFPPF_INVALID",
+		1:     "OFPPF_10MB_HD",
+		2:     "OFPPF_10MB_FD",
+		4:     "OFPPF_100MB_HD",
+		8:     "OFPPF_100MB_FD",
+		16:    "OFPPF_1GB_HD",
+		32:    "OFPPF_1GB_FD",
+		64:    "OFPPF_10GB_FD",
+		128:   "OFPPF_40GB_FD",
+		256:   "OFPPF_100GB_FD",
+		512:   "OFPPF_1TB_FD",
+		1024:  "OFPPF_OTHER",
+		2048:  "OFPPF_COPPER",
+		4096:  "OFPPF_FIBER",
+		8192:  "OFPPF_AUTONEG",
+		16384: "OFPPF_PAUSE",
+		32768: "OFPPF_PAUSE_ASYM",
+	}
+	OfpPortFeatures_value = map[string]int32{
+		"OFPPF_INVALID":    0,
+		"OFPPF_10MB_HD":    1,
+		"OFPPF_10MB_FD":    2,
+		"OFPPF_100MB_HD":   4,
+		"OFPPF_100MB_FD":   8,
+		"OFPPF_1GB_HD":     16,
+		"OFPPF_1GB_FD":     32,
+		"OFPPF_10GB_FD":    64,
+		"OFPPF_40GB_FD":    128,
+		"OFPPF_100GB_FD":   256,
+		"OFPPF_1TB_FD":     512,
+		"OFPPF_OTHER":      1024,
+		"OFPPF_COPPER":     2048,
+		"OFPPF_FIBER":      4096,
+		"OFPPF_AUTONEG":    8192,
+		"OFPPF_PAUSE":      16384,
+		"OFPPF_PAUSE_ASYM": 32768,
+	}
+)
 
-var OfpPortFeatures_value = map[string]int32{
-	"OFPPF_INVALID":    0,
-	"OFPPF_10MB_HD":    1,
-	"OFPPF_10MB_FD":    2,
-	"OFPPF_100MB_HD":   4,
-	"OFPPF_100MB_FD":   8,
-	"OFPPF_1GB_HD":     16,
-	"OFPPF_1GB_FD":     32,
-	"OFPPF_10GB_FD":    64,
-	"OFPPF_40GB_FD":    128,
-	"OFPPF_100GB_FD":   256,
-	"OFPPF_1TB_FD":     512,
-	"OFPPF_OTHER":      1024,
-	"OFPPF_COPPER":     2048,
-	"OFPPF_FIBER":      4096,
-	"OFPPF_AUTONEG":    8192,
-	"OFPPF_PAUSE":      16384,
-	"OFPPF_PAUSE_ASYM": 32768,
+func (x OfpPortFeatures) Enum() *OfpPortFeatures {
+	p := new(OfpPortFeatures)
+	*p = x
+	return p
 }
 
 func (x OfpPortFeatures) String() string {
-	return proto.EnumName(OfpPortFeatures_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortFeatures) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[9].Descriptor()
+}
+
+func (OfpPortFeatures) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[9]
+}
+
+func (x OfpPortFeatures) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortFeatures.Descriptor instead.
 func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{9}
 }
 
 // What changed about the physical port
 type OfpPortReason int32
 
 const (
-	OfpPortReason_OFPPR_ADD    OfpPortReason = 0
-	OfpPortReason_OFPPR_DELETE OfpPortReason = 1
-	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2
+	OfpPortReason_OFPPR_ADD    OfpPortReason = 0 // The port was added.
+	OfpPortReason_OFPPR_DELETE OfpPortReason = 1 // The port was removed.
+	OfpPortReason_OFPPR_MODIFY OfpPortReason = 2 // Some attribute of the port has changed.
 )
 
-var OfpPortReason_name = map[int32]string{
-	0: "OFPPR_ADD",
-	1: "OFPPR_DELETE",
-	2: "OFPPR_MODIFY",
-}
+// Enum value maps for OfpPortReason.
+var (
+	OfpPortReason_name = map[int32]string{
+		0: "OFPPR_ADD",
+		1: "OFPPR_DELETE",
+		2: "OFPPR_MODIFY",
+	}
+	OfpPortReason_value = map[string]int32{
+		"OFPPR_ADD":    0,
+		"OFPPR_DELETE": 1,
+		"OFPPR_MODIFY": 2,
+	}
+)
 
-var OfpPortReason_value = map[string]int32{
-	"OFPPR_ADD":    0,
-	"OFPPR_DELETE": 1,
-	"OFPPR_MODIFY": 2,
+func (x OfpPortReason) Enum() *OfpPortReason {
+	p := new(OfpPortReason)
+	*p = x
+	return p
 }
 
 func (x OfpPortReason) String() string {
-	return proto.EnumName(OfpPortReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[10].Descriptor()
+}
+
+func (OfpPortReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[10]
+}
+
+func (x OfpPortReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortReason.Descriptor instead.
 func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
 // What changed about the physical device
 type OfpDeviceConnection int32
 
 const (
-	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0
-	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1
+	OfpDeviceConnection_OFPDEV_CONNECTED    OfpDeviceConnection = 0 // The device connected.
+	OfpDeviceConnection_OFPDEV_DISCONNECTED OfpDeviceConnection = 1 // The device disconnected.
 )
 
-var OfpDeviceConnection_name = map[int32]string{
-	0: "OFPDEV_CONNECTED",
-	1: "OFPDEV_DISCONNECTED",
-}
+// Enum value maps for OfpDeviceConnection.
+var (
+	OfpDeviceConnection_name = map[int32]string{
+		0: "OFPDEV_CONNECTED",
+		1: "OFPDEV_DISCONNECTED",
+	}
+	OfpDeviceConnection_value = map[string]int32{
+		"OFPDEV_CONNECTED":    0,
+		"OFPDEV_DISCONNECTED": 1,
+	}
+)
 
-var OfpDeviceConnection_value = map[string]int32{
-	"OFPDEV_CONNECTED":    0,
-	"OFPDEV_DISCONNECTED": 1,
+func (x OfpDeviceConnection) Enum() *OfpDeviceConnection {
+	p := new(OfpDeviceConnection)
+	*p = x
+	return p
 }
 
 func (x OfpDeviceConnection) String() string {
-	return proto.EnumName(OfpDeviceConnection_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpDeviceConnection) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[11].Descriptor()
+}
+
+func (OfpDeviceConnection) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[11]
+}
+
+func (x OfpDeviceConnection) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpDeviceConnection.Descriptor instead.
 func (OfpDeviceConnection) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
 // The match type indicates the match structure (set of fields that compose the
@@ -556,26 +865,47 @@
 type OfpMatchType int32
 
 const (
-	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0
-	OfpMatchType_OFPMT_OXM      OfpMatchType = 1
+	OfpMatchType_OFPMT_STANDARD OfpMatchType = 0 // Deprecated.
+	OfpMatchType_OFPMT_OXM      OfpMatchType = 1 // OpenFlow Extensible Match
 )
 
-var OfpMatchType_name = map[int32]string{
-	0: "OFPMT_STANDARD",
-	1: "OFPMT_OXM",
-}
+// Enum value maps for OfpMatchType.
+var (
+	OfpMatchType_name = map[int32]string{
+		0: "OFPMT_STANDARD",
+		1: "OFPMT_OXM",
+	}
+	OfpMatchType_value = map[string]int32{
+		"OFPMT_STANDARD": 0,
+		"OFPMT_OXM":      1,
+	}
+)
 
-var OfpMatchType_value = map[string]int32{
-	"OFPMT_STANDARD": 0,
-	"OFPMT_OXM":      1,
+func (x OfpMatchType) Enum() *OfpMatchType {
+	p := new(OfpMatchType)
+	*p = x
+	return p
 }
 
 func (x OfpMatchType) String() string {
-	return proto.EnumName(OfpMatchType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMatchType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[12].Descriptor()
+}
+
+func (OfpMatchType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[12]
+}
+
+func (x OfpMatchType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMatchType.Descriptor instead.
 func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
 // OXM Class IDs.
@@ -585,172 +915,214 @@
 type OfpOxmClass int32
 
 const (
-	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0
-	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1
-	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768
-	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535
+	OfpOxmClass_OFPXMC_NXM_0          OfpOxmClass = 0     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_NXM_1          OfpOxmClass = 1     // Backward compatibility with NXM
+	OfpOxmClass_OFPXMC_OPENFLOW_BASIC OfpOxmClass = 32768 // Basic class for OpenFlow
+	OfpOxmClass_OFPXMC_EXPERIMENTER   OfpOxmClass = 65535 // Experimenter class
 )
 
-var OfpOxmClass_name = map[int32]string{
-	0:     "OFPXMC_NXM_0",
-	1:     "OFPXMC_NXM_1",
-	32768: "OFPXMC_OPENFLOW_BASIC",
-	65535: "OFPXMC_EXPERIMENTER",
-}
+// Enum value maps for OfpOxmClass.
+var (
+	OfpOxmClass_name = map[int32]string{
+		0:     "OFPXMC_NXM_0",
+		1:     "OFPXMC_NXM_1",
+		32768: "OFPXMC_OPENFLOW_BASIC",
+		65535: "OFPXMC_EXPERIMENTER",
+	}
+	OfpOxmClass_value = map[string]int32{
+		"OFPXMC_NXM_0":          0,
+		"OFPXMC_NXM_1":          1,
+		"OFPXMC_OPENFLOW_BASIC": 32768,
+		"OFPXMC_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpOxmClass_value = map[string]int32{
-	"OFPXMC_NXM_0":          0,
-	"OFPXMC_NXM_1":          1,
-	"OFPXMC_OPENFLOW_BASIC": 32768,
-	"OFPXMC_EXPERIMENTER":   65535,
+func (x OfpOxmClass) Enum() *OfpOxmClass {
+	p := new(OfpOxmClass)
+	*p = x
+	return p
 }
 
 func (x OfpOxmClass) String() string {
-	return proto.EnumName(OfpOxmClass_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpOxmClass) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[13].Descriptor()
+}
+
+func (OfpOxmClass) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[13]
+}
+
+func (x OfpOxmClass) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpOxmClass.Descriptor instead.
 func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
 // OXM Flow field types for OpenFlow basic class.
 type OxmOfbFieldTypes int32
 
 const (
-	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0
-	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1
-	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4
-	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5
-	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6
-	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9
-	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12
-	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13
-	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14
-	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15
-	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16
-	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17
-	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24
-	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29
-	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35
-	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36
-	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37
-	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38
-	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT        OxmOfbFieldTypes = 0  // Switch input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_IN_PHY_PORT    OxmOfbFieldTypes = 1  // Switch physical input port.
+	OxmOfbFieldTypes_OFPXMT_OFB_METADATA       OxmOfbFieldTypes = 2  // Metadata passed between tables.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_DST        OxmOfbFieldTypes = 3  // Ethernet destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_SRC        OxmOfbFieldTypes = 4  // Ethernet source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ETH_TYPE       OxmOfbFieldTypes = 5  // Ethernet frame type.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID       OxmOfbFieldTypes = 6  // VLAN id.
+	OxmOfbFieldTypes_OFPXMT_OFB_VLAN_PCP       OxmOfbFieldTypes = 7  // VLAN priority.
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_DSCP        OxmOfbFieldTypes = 8  // IP DSCP (6 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_ECN         OxmOfbFieldTypes = 9  // IP ECN (2 bits in ToS field).
+	OxmOfbFieldTypes_OFPXMT_OFB_IP_PROTO       OxmOfbFieldTypes = 10 // IP protocol.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_SRC       OxmOfbFieldTypes = 11 // IPv4 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV4_DST       OxmOfbFieldTypes = 12 // IPv4 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_SRC        OxmOfbFieldTypes = 13 // TCP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_TCP_DST        OxmOfbFieldTypes = 14 // TCP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_SRC        OxmOfbFieldTypes = 15 // UDP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_UDP_DST        OxmOfbFieldTypes = 16 // UDP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_SRC       OxmOfbFieldTypes = 17 // SCTP source port.
+	OxmOfbFieldTypes_OFPXMT_OFB_SCTP_DST       OxmOfbFieldTypes = 18 // SCTP destination port.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_TYPE    OxmOfbFieldTypes = 19 // ICMP type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV4_CODE    OxmOfbFieldTypes = 20 // ICMP code.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_OP         OxmOfbFieldTypes = 21 // ARP opcode.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SPA        OxmOfbFieldTypes = 22 // ARP source IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_TPA        OxmOfbFieldTypes = 23 // ARP target IPv4 address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_SHA        OxmOfbFieldTypes = 24 // ARP source hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_ARP_THA        OxmOfbFieldTypes = 25 // ARP target hardware address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_SRC       OxmOfbFieldTypes = 26 // IPv6 source address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_DST       OxmOfbFieldTypes = 27 // IPv6 destination address.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_FLABEL    OxmOfbFieldTypes = 28 // IPv6 Flow Label
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_TYPE    OxmOfbFieldTypes = 29 // ICMPv6 type.
+	OxmOfbFieldTypes_OFPXMT_OFB_ICMPV6_CODE    OxmOfbFieldTypes = 30 // ICMPv6 code.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TARGET OxmOfbFieldTypes = 31 // Target address for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_SLL    OxmOfbFieldTypes = 32 // Source link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_ND_TLL    OxmOfbFieldTypes = 33 // Target link-layer for ND.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_LABEL     OxmOfbFieldTypes = 34 // MPLS label.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_TC        OxmOfbFieldTypes = 35 // MPLS TC.
+	OxmOfbFieldTypes_OFPXMT_OFB_MPLS_BOS       OxmOfbFieldTypes = 36 // MPLS BoS bit.
+	OxmOfbFieldTypes_OFPXMT_OFB_PBB_ISID       OxmOfbFieldTypes = 37 // PBB I-SID.
+	OxmOfbFieldTypes_OFPXMT_OFB_TUNNEL_ID      OxmOfbFieldTypes = 38 // Logical Port Metadata.
+	OxmOfbFieldTypes_OFPXMT_OFB_IPV6_EXTHDR    OxmOfbFieldTypes = 39 // IPv6 Extension Header pseudo-field
 )
 
-var OxmOfbFieldTypes_name = map[int32]string{
-	0:  "OFPXMT_OFB_IN_PORT",
-	1:  "OFPXMT_OFB_IN_PHY_PORT",
-	2:  "OFPXMT_OFB_METADATA",
-	3:  "OFPXMT_OFB_ETH_DST",
-	4:  "OFPXMT_OFB_ETH_SRC",
-	5:  "OFPXMT_OFB_ETH_TYPE",
-	6:  "OFPXMT_OFB_VLAN_VID",
-	7:  "OFPXMT_OFB_VLAN_PCP",
-	8:  "OFPXMT_OFB_IP_DSCP",
-	9:  "OFPXMT_OFB_IP_ECN",
-	10: "OFPXMT_OFB_IP_PROTO",
-	11: "OFPXMT_OFB_IPV4_SRC",
-	12: "OFPXMT_OFB_IPV4_DST",
-	13: "OFPXMT_OFB_TCP_SRC",
-	14: "OFPXMT_OFB_TCP_DST",
-	15: "OFPXMT_OFB_UDP_SRC",
-	16: "OFPXMT_OFB_UDP_DST",
-	17: "OFPXMT_OFB_SCTP_SRC",
-	18: "OFPXMT_OFB_SCTP_DST",
-	19: "OFPXMT_OFB_ICMPV4_TYPE",
-	20: "OFPXMT_OFB_ICMPV4_CODE",
-	21: "OFPXMT_OFB_ARP_OP",
-	22: "OFPXMT_OFB_ARP_SPA",
-	23: "OFPXMT_OFB_ARP_TPA",
-	24: "OFPXMT_OFB_ARP_SHA",
-	25: "OFPXMT_OFB_ARP_THA",
-	26: "OFPXMT_OFB_IPV6_SRC",
-	27: "OFPXMT_OFB_IPV6_DST",
-	28: "OFPXMT_OFB_IPV6_FLABEL",
-	29: "OFPXMT_OFB_ICMPV6_TYPE",
-	30: "OFPXMT_OFB_ICMPV6_CODE",
-	31: "OFPXMT_OFB_IPV6_ND_TARGET",
-	32: "OFPXMT_OFB_IPV6_ND_SLL",
-	33: "OFPXMT_OFB_IPV6_ND_TLL",
-	34: "OFPXMT_OFB_MPLS_LABEL",
-	35: "OFPXMT_OFB_MPLS_TC",
-	36: "OFPXMT_OFB_MPLS_BOS",
-	37: "OFPXMT_OFB_PBB_ISID",
-	38: "OFPXMT_OFB_TUNNEL_ID",
-	39: "OFPXMT_OFB_IPV6_EXTHDR",
-}
+// Enum value maps for OxmOfbFieldTypes.
+var (
+	OxmOfbFieldTypes_name = map[int32]string{
+		0:  "OFPXMT_OFB_IN_PORT",
+		1:  "OFPXMT_OFB_IN_PHY_PORT",
+		2:  "OFPXMT_OFB_METADATA",
+		3:  "OFPXMT_OFB_ETH_DST",
+		4:  "OFPXMT_OFB_ETH_SRC",
+		5:  "OFPXMT_OFB_ETH_TYPE",
+		6:  "OFPXMT_OFB_VLAN_VID",
+		7:  "OFPXMT_OFB_VLAN_PCP",
+		8:  "OFPXMT_OFB_IP_DSCP",
+		9:  "OFPXMT_OFB_IP_ECN",
+		10: "OFPXMT_OFB_IP_PROTO",
+		11: "OFPXMT_OFB_IPV4_SRC",
+		12: "OFPXMT_OFB_IPV4_DST",
+		13: "OFPXMT_OFB_TCP_SRC",
+		14: "OFPXMT_OFB_TCP_DST",
+		15: "OFPXMT_OFB_UDP_SRC",
+		16: "OFPXMT_OFB_UDP_DST",
+		17: "OFPXMT_OFB_SCTP_SRC",
+		18: "OFPXMT_OFB_SCTP_DST",
+		19: "OFPXMT_OFB_ICMPV4_TYPE",
+		20: "OFPXMT_OFB_ICMPV4_CODE",
+		21: "OFPXMT_OFB_ARP_OP",
+		22: "OFPXMT_OFB_ARP_SPA",
+		23: "OFPXMT_OFB_ARP_TPA",
+		24: "OFPXMT_OFB_ARP_SHA",
+		25: "OFPXMT_OFB_ARP_THA",
+		26: "OFPXMT_OFB_IPV6_SRC",
+		27: "OFPXMT_OFB_IPV6_DST",
+		28: "OFPXMT_OFB_IPV6_FLABEL",
+		29: "OFPXMT_OFB_ICMPV6_TYPE",
+		30: "OFPXMT_OFB_ICMPV6_CODE",
+		31: "OFPXMT_OFB_IPV6_ND_TARGET",
+		32: "OFPXMT_OFB_IPV6_ND_SLL",
+		33: "OFPXMT_OFB_IPV6_ND_TLL",
+		34: "OFPXMT_OFB_MPLS_LABEL",
+		35: "OFPXMT_OFB_MPLS_TC",
+		36: "OFPXMT_OFB_MPLS_BOS",
+		37: "OFPXMT_OFB_PBB_ISID",
+		38: "OFPXMT_OFB_TUNNEL_ID",
+		39: "OFPXMT_OFB_IPV6_EXTHDR",
+	}
+	OxmOfbFieldTypes_value = map[string]int32{
+		"OFPXMT_OFB_IN_PORT":        0,
+		"OFPXMT_OFB_IN_PHY_PORT":    1,
+		"OFPXMT_OFB_METADATA":       2,
+		"OFPXMT_OFB_ETH_DST":        3,
+		"OFPXMT_OFB_ETH_SRC":        4,
+		"OFPXMT_OFB_ETH_TYPE":       5,
+		"OFPXMT_OFB_VLAN_VID":       6,
+		"OFPXMT_OFB_VLAN_PCP":       7,
+		"OFPXMT_OFB_IP_DSCP":        8,
+		"OFPXMT_OFB_IP_ECN":         9,
+		"OFPXMT_OFB_IP_PROTO":       10,
+		"OFPXMT_OFB_IPV4_SRC":       11,
+		"OFPXMT_OFB_IPV4_DST":       12,
+		"OFPXMT_OFB_TCP_SRC":        13,
+		"OFPXMT_OFB_TCP_DST":        14,
+		"OFPXMT_OFB_UDP_SRC":        15,
+		"OFPXMT_OFB_UDP_DST":        16,
+		"OFPXMT_OFB_SCTP_SRC":       17,
+		"OFPXMT_OFB_SCTP_DST":       18,
+		"OFPXMT_OFB_ICMPV4_TYPE":    19,
+		"OFPXMT_OFB_ICMPV4_CODE":    20,
+		"OFPXMT_OFB_ARP_OP":         21,
+		"OFPXMT_OFB_ARP_SPA":        22,
+		"OFPXMT_OFB_ARP_TPA":        23,
+		"OFPXMT_OFB_ARP_SHA":        24,
+		"OFPXMT_OFB_ARP_THA":        25,
+		"OFPXMT_OFB_IPV6_SRC":       26,
+		"OFPXMT_OFB_IPV6_DST":       27,
+		"OFPXMT_OFB_IPV6_FLABEL":    28,
+		"OFPXMT_OFB_ICMPV6_TYPE":    29,
+		"OFPXMT_OFB_ICMPV6_CODE":    30,
+		"OFPXMT_OFB_IPV6_ND_TARGET": 31,
+		"OFPXMT_OFB_IPV6_ND_SLL":    32,
+		"OFPXMT_OFB_IPV6_ND_TLL":    33,
+		"OFPXMT_OFB_MPLS_LABEL":     34,
+		"OFPXMT_OFB_MPLS_TC":        35,
+		"OFPXMT_OFB_MPLS_BOS":       36,
+		"OFPXMT_OFB_PBB_ISID":       37,
+		"OFPXMT_OFB_TUNNEL_ID":      38,
+		"OFPXMT_OFB_IPV6_EXTHDR":    39,
+	}
+)
 
-var OxmOfbFieldTypes_value = map[string]int32{
-	"OFPXMT_OFB_IN_PORT":        0,
-	"OFPXMT_OFB_IN_PHY_PORT":    1,
-	"OFPXMT_OFB_METADATA":       2,
-	"OFPXMT_OFB_ETH_DST":        3,
-	"OFPXMT_OFB_ETH_SRC":        4,
-	"OFPXMT_OFB_ETH_TYPE":       5,
-	"OFPXMT_OFB_VLAN_VID":       6,
-	"OFPXMT_OFB_VLAN_PCP":       7,
-	"OFPXMT_OFB_IP_DSCP":        8,
-	"OFPXMT_OFB_IP_ECN":         9,
-	"OFPXMT_OFB_IP_PROTO":       10,
-	"OFPXMT_OFB_IPV4_SRC":       11,
-	"OFPXMT_OFB_IPV4_DST":       12,
-	"OFPXMT_OFB_TCP_SRC":        13,
-	"OFPXMT_OFB_TCP_DST":        14,
-	"OFPXMT_OFB_UDP_SRC":        15,
-	"OFPXMT_OFB_UDP_DST":        16,
-	"OFPXMT_OFB_SCTP_SRC":       17,
-	"OFPXMT_OFB_SCTP_DST":       18,
-	"OFPXMT_OFB_ICMPV4_TYPE":    19,
-	"OFPXMT_OFB_ICMPV4_CODE":    20,
-	"OFPXMT_OFB_ARP_OP":         21,
-	"OFPXMT_OFB_ARP_SPA":        22,
-	"OFPXMT_OFB_ARP_TPA":        23,
-	"OFPXMT_OFB_ARP_SHA":        24,
-	"OFPXMT_OFB_ARP_THA":        25,
-	"OFPXMT_OFB_IPV6_SRC":       26,
-	"OFPXMT_OFB_IPV6_DST":       27,
-	"OFPXMT_OFB_IPV6_FLABEL":    28,
-	"OFPXMT_OFB_ICMPV6_TYPE":    29,
-	"OFPXMT_OFB_ICMPV6_CODE":    30,
-	"OFPXMT_OFB_IPV6_ND_TARGET": 31,
-	"OFPXMT_OFB_IPV6_ND_SLL":    32,
-	"OFPXMT_OFB_IPV6_ND_TLL":    33,
-	"OFPXMT_OFB_MPLS_LABEL":     34,
-	"OFPXMT_OFB_MPLS_TC":        35,
-	"OFPXMT_OFB_MPLS_BOS":       36,
-	"OFPXMT_OFB_PBB_ISID":       37,
-	"OFPXMT_OFB_TUNNEL_ID":      38,
-	"OFPXMT_OFB_IPV6_EXTHDR":    39,
+func (x OxmOfbFieldTypes) Enum() *OxmOfbFieldTypes {
+	p := new(OxmOfbFieldTypes)
+	*p = x
+	return p
 }
 
 func (x OxmOfbFieldTypes) String() string {
-	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OxmOfbFieldTypes) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[14].Descriptor()
+}
+
+func (OxmOfbFieldTypes) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[14]
+}
+
+func (x OxmOfbFieldTypes) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OxmOfbFieldTypes.Descriptor instead.
 func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
 }
 
 // The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
@@ -758,26 +1130,47 @@
 type OfpVlanId int32
 
 const (
-	OfpVlanId_OFPVID_NONE    OfpVlanId = 0
-	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096
+	OfpVlanId_OFPVID_NONE    OfpVlanId = 0    // No VLAN id was set.
+	OfpVlanId_OFPVID_PRESENT OfpVlanId = 4096 // Bit that indicate that a VLAN id is set
 )
 
-var OfpVlanId_name = map[int32]string{
-	0:    "OFPVID_NONE",
-	4096: "OFPVID_PRESENT",
-}
+// Enum value maps for OfpVlanId.
+var (
+	OfpVlanId_name = map[int32]string{
+		0:    "OFPVID_NONE",
+		4096: "OFPVID_PRESENT",
+	}
+	OfpVlanId_value = map[string]int32{
+		"OFPVID_NONE":    0,
+		"OFPVID_PRESENT": 4096,
+	}
+)
 
-var OfpVlanId_value = map[string]int32{
-	"OFPVID_NONE":    0,
-	"OFPVID_PRESENT": 4096,
+func (x OfpVlanId) Enum() *OfpVlanId {
+	p := new(OfpVlanId)
+	*p = x
+	return p
 }
 
 func (x OfpVlanId) String() string {
-	return proto.EnumName(OfpVlanId_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpVlanId) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[15].Descriptor()
+}
+
+func (OfpVlanId) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[15]
+}
+
+func (x OfpVlanId) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpVlanId.Descriptor instead.
 func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
 }
 
 // Bit definitions for IPv6 Extension Header pseudo-field.
@@ -785,119 +1178,161 @@
 
 const (
 	OfpIpv6ExthdrFlags_OFPIEH_INVALID OfpIpv6ExthdrFlags = 0
-	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1
-	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2
-	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4
-	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8
-	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16
-	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32
-	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64
-	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128
-	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256
+	OfpIpv6ExthdrFlags_OFPIEH_NONEXT  OfpIpv6ExthdrFlags = 1   // "No next header" encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_ESP     OfpIpv6ExthdrFlags = 2   // Encrypted Sec Payload header present.
+	OfpIpv6ExthdrFlags_OFPIEH_AUTH    OfpIpv6ExthdrFlags = 4   // Authentication header present.
+	OfpIpv6ExthdrFlags_OFPIEH_DEST    OfpIpv6ExthdrFlags = 8   // 1 or 2 dest headers present.
+	OfpIpv6ExthdrFlags_OFPIEH_FRAG    OfpIpv6ExthdrFlags = 16  // Fragment header present.
+	OfpIpv6ExthdrFlags_OFPIEH_ROUTER  OfpIpv6ExthdrFlags = 32  // Router header present.
+	OfpIpv6ExthdrFlags_OFPIEH_HOP     OfpIpv6ExthdrFlags = 64  // Hop-by-hop header present.
+	OfpIpv6ExthdrFlags_OFPIEH_UNREP   OfpIpv6ExthdrFlags = 128 // Unexpected repeats encountered.
+	OfpIpv6ExthdrFlags_OFPIEH_UNSEQ   OfpIpv6ExthdrFlags = 256 // Unexpected sequencing encountered.
 )
 
-var OfpIpv6ExthdrFlags_name = map[int32]string{
-	0:   "OFPIEH_INVALID",
-	1:   "OFPIEH_NONEXT",
-	2:   "OFPIEH_ESP",
-	4:   "OFPIEH_AUTH",
-	8:   "OFPIEH_DEST",
-	16:  "OFPIEH_FRAG",
-	32:  "OFPIEH_ROUTER",
-	64:  "OFPIEH_HOP",
-	128: "OFPIEH_UNREP",
-	256: "OFPIEH_UNSEQ",
-}
+// Enum value maps for OfpIpv6ExthdrFlags.
+var (
+	OfpIpv6ExthdrFlags_name = map[int32]string{
+		0:   "OFPIEH_INVALID",
+		1:   "OFPIEH_NONEXT",
+		2:   "OFPIEH_ESP",
+		4:   "OFPIEH_AUTH",
+		8:   "OFPIEH_DEST",
+		16:  "OFPIEH_FRAG",
+		32:  "OFPIEH_ROUTER",
+		64:  "OFPIEH_HOP",
+		128: "OFPIEH_UNREP",
+		256: "OFPIEH_UNSEQ",
+	}
+	OfpIpv6ExthdrFlags_value = map[string]int32{
+		"OFPIEH_INVALID": 0,
+		"OFPIEH_NONEXT":  1,
+		"OFPIEH_ESP":     2,
+		"OFPIEH_AUTH":    4,
+		"OFPIEH_DEST":    8,
+		"OFPIEH_FRAG":    16,
+		"OFPIEH_ROUTER":  32,
+		"OFPIEH_HOP":     64,
+		"OFPIEH_UNREP":   128,
+		"OFPIEH_UNSEQ":   256,
+	}
+)
 
-var OfpIpv6ExthdrFlags_value = map[string]int32{
-	"OFPIEH_INVALID": 0,
-	"OFPIEH_NONEXT":  1,
-	"OFPIEH_ESP":     2,
-	"OFPIEH_AUTH":    4,
-	"OFPIEH_DEST":    8,
-	"OFPIEH_FRAG":    16,
-	"OFPIEH_ROUTER":  32,
-	"OFPIEH_HOP":     64,
-	"OFPIEH_UNREP":   128,
-	"OFPIEH_UNSEQ":   256,
+func (x OfpIpv6ExthdrFlags) Enum() *OfpIpv6ExthdrFlags {
+	p := new(OfpIpv6ExthdrFlags)
+	*p = x
+	return p
 }
 
 func (x OfpIpv6ExthdrFlags) String() string {
-	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpIpv6ExthdrFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[16].Descriptor()
+}
+
+func (OfpIpv6ExthdrFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[16]
+}
+
+func (x OfpIpv6ExthdrFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpIpv6ExthdrFlags.Descriptor instead.
 func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
 }
 
 type OfpActionType int32
 
 const (
-	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0
+	OfpActionType_OFPAT_OUTPUT       OfpActionType = 0 // Output to switch port.
 	OfpActionType_OFPAT_COPY_TTL_OUT OfpActionType = 11
 	OfpActionType_OFPAT_COPY_TTL_IN  OfpActionType = 12
-	OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15
-	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16
-	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17
-	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18
-	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19
-	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20
-	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21
-	OfpActionType_OFPAT_GROUP        OfpActionType = 22
-	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23
-	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24
-	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25
-	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26
-	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27
+	OfpActionType_OFPAT_SET_MPLS_TTL OfpActionType = 15 // MPLS TTL
+	OfpActionType_OFPAT_DEC_MPLS_TTL OfpActionType = 16 // Decrement MPLS TTL
+	OfpActionType_OFPAT_PUSH_VLAN    OfpActionType = 17 // Push a new VLAN tag
+	OfpActionType_OFPAT_POP_VLAN     OfpActionType = 18 // Pop the outer VLAN tag
+	OfpActionType_OFPAT_PUSH_MPLS    OfpActionType = 19 // Push a new MPLS tag
+	OfpActionType_OFPAT_POP_MPLS     OfpActionType = 20 // Pop the outer MPLS tag
+	OfpActionType_OFPAT_SET_QUEUE    OfpActionType = 21 // Set queue id when outputting to a port
+	OfpActionType_OFPAT_GROUP        OfpActionType = 22 // Apply group.
+	OfpActionType_OFPAT_SET_NW_TTL   OfpActionType = 23 // IP TTL.
+	OfpActionType_OFPAT_DEC_NW_TTL   OfpActionType = 24 // Decrement IP TTL.
+	OfpActionType_OFPAT_SET_FIELD    OfpActionType = 25 // Set a header field using OXM TLV format.
+	OfpActionType_OFPAT_PUSH_PBB     OfpActionType = 26 // Push a new PBB service tag (I-TAG)
+	OfpActionType_OFPAT_POP_PBB      OfpActionType = 27 // Pop the outer PBB service tag (I-TAG)
 	OfpActionType_OFPAT_EXPERIMENTER OfpActionType = 65535
 )
 
-var OfpActionType_name = map[int32]string{
-	0:     "OFPAT_OUTPUT",
-	11:    "OFPAT_COPY_TTL_OUT",
-	12:    "OFPAT_COPY_TTL_IN",
-	15:    "OFPAT_SET_MPLS_TTL",
-	16:    "OFPAT_DEC_MPLS_TTL",
-	17:    "OFPAT_PUSH_VLAN",
-	18:    "OFPAT_POP_VLAN",
-	19:    "OFPAT_PUSH_MPLS",
-	20:    "OFPAT_POP_MPLS",
-	21:    "OFPAT_SET_QUEUE",
-	22:    "OFPAT_GROUP",
-	23:    "OFPAT_SET_NW_TTL",
-	24:    "OFPAT_DEC_NW_TTL",
-	25:    "OFPAT_SET_FIELD",
-	26:    "OFPAT_PUSH_PBB",
-	27:    "OFPAT_POP_PBB",
-	65535: "OFPAT_EXPERIMENTER",
-}
+// Enum value maps for OfpActionType.
+var (
+	OfpActionType_name = map[int32]string{
+		0:     "OFPAT_OUTPUT",
+		11:    "OFPAT_COPY_TTL_OUT",
+		12:    "OFPAT_COPY_TTL_IN",
+		15:    "OFPAT_SET_MPLS_TTL",
+		16:    "OFPAT_DEC_MPLS_TTL",
+		17:    "OFPAT_PUSH_VLAN",
+		18:    "OFPAT_POP_VLAN",
+		19:    "OFPAT_PUSH_MPLS",
+		20:    "OFPAT_POP_MPLS",
+		21:    "OFPAT_SET_QUEUE",
+		22:    "OFPAT_GROUP",
+		23:    "OFPAT_SET_NW_TTL",
+		24:    "OFPAT_DEC_NW_TTL",
+		25:    "OFPAT_SET_FIELD",
+		26:    "OFPAT_PUSH_PBB",
+		27:    "OFPAT_POP_PBB",
+		65535: "OFPAT_EXPERIMENTER",
+	}
+	OfpActionType_value = map[string]int32{
+		"OFPAT_OUTPUT":       0,
+		"OFPAT_COPY_TTL_OUT": 11,
+		"OFPAT_COPY_TTL_IN":  12,
+		"OFPAT_SET_MPLS_TTL": 15,
+		"OFPAT_DEC_MPLS_TTL": 16,
+		"OFPAT_PUSH_VLAN":    17,
+		"OFPAT_POP_VLAN":     18,
+		"OFPAT_PUSH_MPLS":    19,
+		"OFPAT_POP_MPLS":     20,
+		"OFPAT_SET_QUEUE":    21,
+		"OFPAT_GROUP":        22,
+		"OFPAT_SET_NW_TTL":   23,
+		"OFPAT_DEC_NW_TTL":   24,
+		"OFPAT_SET_FIELD":    25,
+		"OFPAT_PUSH_PBB":     26,
+		"OFPAT_POP_PBB":      27,
+		"OFPAT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpActionType_value = map[string]int32{
-	"OFPAT_OUTPUT":       0,
-	"OFPAT_COPY_TTL_OUT": 11,
-	"OFPAT_COPY_TTL_IN":  12,
-	"OFPAT_SET_MPLS_TTL": 15,
-	"OFPAT_DEC_MPLS_TTL": 16,
-	"OFPAT_PUSH_VLAN":    17,
-	"OFPAT_POP_VLAN":     18,
-	"OFPAT_PUSH_MPLS":    19,
-	"OFPAT_POP_MPLS":     20,
-	"OFPAT_SET_QUEUE":    21,
-	"OFPAT_GROUP":        22,
-	"OFPAT_SET_NW_TTL":   23,
-	"OFPAT_DEC_NW_TTL":   24,
-	"OFPAT_SET_FIELD":    25,
-	"OFPAT_PUSH_PBB":     26,
-	"OFPAT_POP_PBB":      27,
-	"OFPAT_EXPERIMENTER": 65535,
+func (x OfpActionType) Enum() *OfpActionType {
+	p := new(OfpActionType)
+	*p = x
+	return p
 }
 
 func (x OfpActionType) String() string {
-	return proto.EnumName(OfpActionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpActionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[17].Descriptor()
+}
+
+func (OfpActionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[17]
+}
+
+func (x OfpActionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpActionType.Descriptor instead.
 func (OfpActionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
 }
 
 type OfpControllerMaxLen int32
@@ -908,24 +1343,45 @@
 	OfpControllerMaxLen_OFPCML_NO_BUFFER OfpControllerMaxLen = 65535
 )
 
-var OfpControllerMaxLen_name = map[int32]string{
-	0:     "OFPCML_INVALID",
-	65509: "OFPCML_MAX",
-	65535: "OFPCML_NO_BUFFER",
-}
+// Enum value maps for OfpControllerMaxLen.
+var (
+	OfpControllerMaxLen_name = map[int32]string{
+		0:     "OFPCML_INVALID",
+		65509: "OFPCML_MAX",
+		65535: "OFPCML_NO_BUFFER",
+	}
+	OfpControllerMaxLen_value = map[string]int32{
+		"OFPCML_INVALID":   0,
+		"OFPCML_MAX":       65509,
+		"OFPCML_NO_BUFFER": 65535,
+	}
+)
 
-var OfpControllerMaxLen_value = map[string]int32{
-	"OFPCML_INVALID":   0,
-	"OFPCML_MAX":       65509,
-	"OFPCML_NO_BUFFER": 65535,
+func (x OfpControllerMaxLen) Enum() *OfpControllerMaxLen {
+	p := new(OfpControllerMaxLen)
+	*p = x
+	return p
 }
 
 func (x OfpControllerMaxLen) String() string {
-	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerMaxLen) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[18].Descriptor()
+}
+
+func (OfpControllerMaxLen) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[18]
+}
+
+func (x OfpControllerMaxLen) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerMaxLen.Descriptor instead.
 func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
 }
 
 type OfpInstructionType int32
@@ -935,74 +1391,116 @@
 	OfpInstructionType_OFPIT_GOTO_TABLE     OfpInstructionType = 1
 	OfpInstructionType_OFPIT_WRITE_METADATA OfpInstructionType = 2
 	OfpInstructionType_OFPIT_WRITE_ACTIONS  OfpInstructionType = 3
-	OfpInstructionType_OFPIT_APPLY_ACTIONS  OfpInstructionType = 4
+	OfpInstructionType_OFPIT_APPLY_ACTIONS  OfpInstructionType = 4 // Applies the action(s) immediately
 	OfpInstructionType_OFPIT_CLEAR_ACTIONS  OfpInstructionType = 5
-	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6
-	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535
+	OfpInstructionType_OFPIT_METER          OfpInstructionType = 6     // Apply meter (rate limiter)
+	OfpInstructionType_OFPIT_EXPERIMENTER   OfpInstructionType = 65535 // Experimenter instruction
 )
 
-var OfpInstructionType_name = map[int32]string{
-	0:     "OFPIT_INVALID",
-	1:     "OFPIT_GOTO_TABLE",
-	2:     "OFPIT_WRITE_METADATA",
-	3:     "OFPIT_WRITE_ACTIONS",
-	4:     "OFPIT_APPLY_ACTIONS",
-	5:     "OFPIT_CLEAR_ACTIONS",
-	6:     "OFPIT_METER",
-	65535: "OFPIT_EXPERIMENTER",
-}
+// Enum value maps for OfpInstructionType.
+var (
+	OfpInstructionType_name = map[int32]string{
+		0:     "OFPIT_INVALID",
+		1:     "OFPIT_GOTO_TABLE",
+		2:     "OFPIT_WRITE_METADATA",
+		3:     "OFPIT_WRITE_ACTIONS",
+		4:     "OFPIT_APPLY_ACTIONS",
+		5:     "OFPIT_CLEAR_ACTIONS",
+		6:     "OFPIT_METER",
+		65535: "OFPIT_EXPERIMENTER",
+	}
+	OfpInstructionType_value = map[string]int32{
+		"OFPIT_INVALID":        0,
+		"OFPIT_GOTO_TABLE":     1,
+		"OFPIT_WRITE_METADATA": 2,
+		"OFPIT_WRITE_ACTIONS":  3,
+		"OFPIT_APPLY_ACTIONS":  4,
+		"OFPIT_CLEAR_ACTIONS":  5,
+		"OFPIT_METER":          6,
+		"OFPIT_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpInstructionType_value = map[string]int32{
-	"OFPIT_INVALID":        0,
-	"OFPIT_GOTO_TABLE":     1,
-	"OFPIT_WRITE_METADATA": 2,
-	"OFPIT_WRITE_ACTIONS":  3,
-	"OFPIT_APPLY_ACTIONS":  4,
-	"OFPIT_CLEAR_ACTIONS":  5,
-	"OFPIT_METER":          6,
-	"OFPIT_EXPERIMENTER":   65535,
+func (x OfpInstructionType) Enum() *OfpInstructionType {
+	p := new(OfpInstructionType)
+	*p = x
+	return p
 }
 
 func (x OfpInstructionType) String() string {
-	return proto.EnumName(OfpInstructionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpInstructionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[19].Descriptor()
+}
+
+func (OfpInstructionType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[19]
+}
+
+func (x OfpInstructionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpInstructionType.Descriptor instead.
 func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
 }
 
 type OfpFlowModCommand int32
 
 const (
-	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0
-	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1
+	OfpFlowModCommand_OFPFC_ADD           OfpFlowModCommand = 0 // New flow.
+	OfpFlowModCommand_OFPFC_MODIFY        OfpFlowModCommand = 1 // Modify all matching flows.
 	OfpFlowModCommand_OFPFC_MODIFY_STRICT OfpFlowModCommand = 2
-	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3
+	OfpFlowModCommand_OFPFC_DELETE        OfpFlowModCommand = 3 // Delete all matching flows.
 	OfpFlowModCommand_OFPFC_DELETE_STRICT OfpFlowModCommand = 4
 )
 
-var OfpFlowModCommand_name = map[int32]string{
-	0: "OFPFC_ADD",
-	1: "OFPFC_MODIFY",
-	2: "OFPFC_MODIFY_STRICT",
-	3: "OFPFC_DELETE",
-	4: "OFPFC_DELETE_STRICT",
-}
+// Enum value maps for OfpFlowModCommand.
+var (
+	OfpFlowModCommand_name = map[int32]string{
+		0: "OFPFC_ADD",
+		1: "OFPFC_MODIFY",
+		2: "OFPFC_MODIFY_STRICT",
+		3: "OFPFC_DELETE",
+		4: "OFPFC_DELETE_STRICT",
+	}
+	OfpFlowModCommand_value = map[string]int32{
+		"OFPFC_ADD":           0,
+		"OFPFC_MODIFY":        1,
+		"OFPFC_MODIFY_STRICT": 2,
+		"OFPFC_DELETE":        3,
+		"OFPFC_DELETE_STRICT": 4,
+	}
+)
 
-var OfpFlowModCommand_value = map[string]int32{
-	"OFPFC_ADD":           0,
-	"OFPFC_MODIFY":        1,
-	"OFPFC_MODIFY_STRICT": 2,
-	"OFPFC_DELETE":        3,
-	"OFPFC_DELETE_STRICT": 4,
+func (x OfpFlowModCommand) Enum() *OfpFlowModCommand {
+	p := new(OfpFlowModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModCommand) String() string {
-	return proto.EnumName(OfpFlowModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[20].Descriptor()
+}
+
+func (OfpFlowModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[20]
+}
+
+func (x OfpFlowModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModCommand.Descriptor instead.
 func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
 }
 
 type OfpFlowModFlags int32
@@ -1010,36 +1508,57 @@
 const (
 	OfpFlowModFlags_OFPFF_INVALID       OfpFlowModFlags = 0
 	OfpFlowModFlags_OFPFF_SEND_FLOW_REM OfpFlowModFlags = 1
-	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2
-	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4
-	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8
-	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16
+	OfpFlowModFlags_OFPFF_CHECK_OVERLAP OfpFlowModFlags = 2  // Check for overlapping entries first.
+	OfpFlowModFlags_OFPFF_RESET_COUNTS  OfpFlowModFlags = 4  // Reset flow packet and byte counts.
+	OfpFlowModFlags_OFPFF_NO_PKT_COUNTS OfpFlowModFlags = 8  // Don't keep track of packet count.
+	OfpFlowModFlags_OFPFF_NO_BYT_COUNTS OfpFlowModFlags = 16 // Don't keep track of byte count.
 )
 
-var OfpFlowModFlags_name = map[int32]string{
-	0:  "OFPFF_INVALID",
-	1:  "OFPFF_SEND_FLOW_REM",
-	2:  "OFPFF_CHECK_OVERLAP",
-	4:  "OFPFF_RESET_COUNTS",
-	8:  "OFPFF_NO_PKT_COUNTS",
-	16: "OFPFF_NO_BYT_COUNTS",
-}
+// Enum value maps for OfpFlowModFlags.
+var (
+	OfpFlowModFlags_name = map[int32]string{
+		0:  "OFPFF_INVALID",
+		1:  "OFPFF_SEND_FLOW_REM",
+		2:  "OFPFF_CHECK_OVERLAP",
+		4:  "OFPFF_RESET_COUNTS",
+		8:  "OFPFF_NO_PKT_COUNTS",
+		16: "OFPFF_NO_BYT_COUNTS",
+	}
+	OfpFlowModFlags_value = map[string]int32{
+		"OFPFF_INVALID":       0,
+		"OFPFF_SEND_FLOW_REM": 1,
+		"OFPFF_CHECK_OVERLAP": 2,
+		"OFPFF_RESET_COUNTS":  4,
+		"OFPFF_NO_PKT_COUNTS": 8,
+		"OFPFF_NO_BYT_COUNTS": 16,
+	}
+)
 
-var OfpFlowModFlags_value = map[string]int32{
-	"OFPFF_INVALID":       0,
-	"OFPFF_SEND_FLOW_REM": 1,
-	"OFPFF_CHECK_OVERLAP": 2,
-	"OFPFF_RESET_COUNTS":  4,
-	"OFPFF_NO_PKT_COUNTS": 8,
-	"OFPFF_NO_BYT_COUNTS": 16,
+func (x OfpFlowModFlags) Enum() *OfpFlowModFlags {
+	p := new(OfpFlowModFlags)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFlags) String() string {
-	return proto.EnumName(OfpFlowModFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[21].Descriptor()
+}
+
+func (OfpFlowModFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[21]
+}
+
+func (x OfpFlowModFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFlags.Descriptor instead.
 func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
 }
 
 // Group numbering. Groups can use any number up to OFPG_MAX.
@@ -1051,58 +1570,100 @@
 	OfpGroup_OFPG_MAX OfpGroup = 2147483392
 	// Fake groups.
 	OfpGroup_OFPG_ALL OfpGroup = 2147483644
-	OfpGroup_OFPG_ANY OfpGroup = 2147483647
+	OfpGroup_OFPG_ANY OfpGroup = 2147483647 // Special wildcard: no group specified.
 )
 
-var OfpGroup_name = map[int32]string{
-	0:          "OFPG_INVALID",
-	2147483392: "OFPG_MAX",
-	2147483644: "OFPG_ALL",
-	2147483647: "OFPG_ANY",
-}
+// Enum value maps for OfpGroup.
+var (
+	OfpGroup_name = map[int32]string{
+		0:          "OFPG_INVALID",
+		2147483392: "OFPG_MAX",
+		2147483644: "OFPG_ALL",
+		2147483647: "OFPG_ANY",
+	}
+	OfpGroup_value = map[string]int32{
+		"OFPG_INVALID": 0,
+		"OFPG_MAX":     2147483392,
+		"OFPG_ALL":     2147483644,
+		"OFPG_ANY":     2147483647,
+	}
+)
 
-var OfpGroup_value = map[string]int32{
-	"OFPG_INVALID": 0,
-	"OFPG_MAX":     2147483392,
-	"OFPG_ALL":     2147483644,
-	"OFPG_ANY":     2147483647,
+func (x OfpGroup) Enum() *OfpGroup {
+	p := new(OfpGroup)
+	*p = x
+	return p
 }
 
 func (x OfpGroup) String() string {
-	return proto.EnumName(OfpGroup_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroup) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[22].Descriptor()
+}
+
+func (OfpGroup) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[22]
+}
+
+func (x OfpGroup) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroup.Descriptor instead.
 func (OfpGroup) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
 }
 
 // Group commands
 type OfpGroupModCommand int32
 
 const (
-	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0
-	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1
-	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2
+	OfpGroupModCommand_OFPGC_ADD    OfpGroupModCommand = 0 // New group.
+	OfpGroupModCommand_OFPGC_MODIFY OfpGroupModCommand = 1 // Modify all matching groups.
+	OfpGroupModCommand_OFPGC_DELETE OfpGroupModCommand = 2 // Delete all matching groups.
 )
 
-var OfpGroupModCommand_name = map[int32]string{
-	0: "OFPGC_ADD",
-	1: "OFPGC_MODIFY",
-	2: "OFPGC_DELETE",
-}
+// Enum value maps for OfpGroupModCommand.
+var (
+	OfpGroupModCommand_name = map[int32]string{
+		0: "OFPGC_ADD",
+		1: "OFPGC_MODIFY",
+		2: "OFPGC_DELETE",
+	}
+	OfpGroupModCommand_value = map[string]int32{
+		"OFPGC_ADD":    0,
+		"OFPGC_MODIFY": 1,
+		"OFPGC_DELETE": 2,
+	}
+)
 
-var OfpGroupModCommand_value = map[string]int32{
-	"OFPGC_ADD":    0,
-	"OFPGC_MODIFY": 1,
-	"OFPGC_DELETE": 2,
+func (x OfpGroupModCommand) Enum() *OfpGroupModCommand {
+	p := new(OfpGroupModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModCommand) String() string {
-	return proto.EnumName(OfpGroupModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[23].Descriptor()
+}
+
+func (OfpGroupModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[23]
+}
+
+func (x OfpGroupModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModCommand.Descriptor instead.
 func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
 }
 
 // Group types.  Values in the range [128; 255] are reserved for experimental
@@ -1110,96 +1671,159 @@
 type OfpGroupType int32
 
 const (
-	OfpGroupType_OFPGT_ALL      OfpGroupType = 0
-	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1
-	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2
-	OfpGroupType_OFPGT_FF       OfpGroupType = 3
+	OfpGroupType_OFPGT_ALL      OfpGroupType = 0 // All (multicast/broadcast) group.
+	OfpGroupType_OFPGT_SELECT   OfpGroupType = 1 // Select group.
+	OfpGroupType_OFPGT_INDIRECT OfpGroupType = 2 // Indirect group.
+	OfpGroupType_OFPGT_FF       OfpGroupType = 3 // Fast failover group.
 )
 
-var OfpGroupType_name = map[int32]string{
-	0: "OFPGT_ALL",
-	1: "OFPGT_SELECT",
-	2: "OFPGT_INDIRECT",
-	3: "OFPGT_FF",
-}
+// Enum value maps for OfpGroupType.
+var (
+	OfpGroupType_name = map[int32]string{
+		0: "OFPGT_ALL",
+		1: "OFPGT_SELECT",
+		2: "OFPGT_INDIRECT",
+		3: "OFPGT_FF",
+	}
+	OfpGroupType_value = map[string]int32{
+		"OFPGT_ALL":      0,
+		"OFPGT_SELECT":   1,
+		"OFPGT_INDIRECT": 2,
+		"OFPGT_FF":       3,
+	}
+)
 
-var OfpGroupType_value = map[string]int32{
-	"OFPGT_ALL":      0,
-	"OFPGT_SELECT":   1,
-	"OFPGT_INDIRECT": 2,
-	"OFPGT_FF":       3,
+func (x OfpGroupType) Enum() *OfpGroupType {
+	p := new(OfpGroupType)
+	*p = x
+	return p
 }
 
 func (x OfpGroupType) String() string {
-	return proto.EnumName(OfpGroupType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[24].Descriptor()
+}
+
+func (OfpGroupType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[24]
+}
+
+func (x OfpGroupType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupType.Descriptor instead.
 func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
 }
 
 // Why is this packet being sent to the controller?
 type OfpPacketInReason int32
 
 const (
-	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0
-	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1
-	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2
+	OfpPacketInReason_OFPR_NO_MATCH    OfpPacketInReason = 0 // No matching flow (table-miss flow entry).
+	OfpPacketInReason_OFPR_ACTION      OfpPacketInReason = 1 // Action explicitly output to controller.
+	OfpPacketInReason_OFPR_INVALID_TTL OfpPacketInReason = 2 // Packet has invalid TTL
 )
 
-var OfpPacketInReason_name = map[int32]string{
-	0: "OFPR_NO_MATCH",
-	1: "OFPR_ACTION",
-	2: "OFPR_INVALID_TTL",
-}
+// Enum value maps for OfpPacketInReason.
+var (
+	OfpPacketInReason_name = map[int32]string{
+		0: "OFPR_NO_MATCH",
+		1: "OFPR_ACTION",
+		2: "OFPR_INVALID_TTL",
+	}
+	OfpPacketInReason_value = map[string]int32{
+		"OFPR_NO_MATCH":    0,
+		"OFPR_ACTION":      1,
+		"OFPR_INVALID_TTL": 2,
+	}
+)
 
-var OfpPacketInReason_value = map[string]int32{
-	"OFPR_NO_MATCH":    0,
-	"OFPR_ACTION":      1,
-	"OFPR_INVALID_TTL": 2,
+func (x OfpPacketInReason) Enum() *OfpPacketInReason {
+	p := new(OfpPacketInReason)
+	*p = x
+	return p
 }
 
 func (x OfpPacketInReason) String() string {
-	return proto.EnumName(OfpPacketInReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPacketInReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[25].Descriptor()
+}
+
+func (OfpPacketInReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[25]
+}
+
+func (x OfpPacketInReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPacketInReason.Descriptor instead.
 func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
 }
 
 // Why was this flow removed?
 type OfpFlowRemovedReason int32
 
 const (
-	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0
-	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1
-	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2
-	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3
-	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4
+	OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT OfpFlowRemovedReason = 0 // Flow idle time exceeded idle_timeout.
+	OfpFlowRemovedReason_OFPRR_HARD_TIMEOUT OfpFlowRemovedReason = 1 // Time exceeded hard_timeout.
+	OfpFlowRemovedReason_OFPRR_DELETE       OfpFlowRemovedReason = 2 // Evicted by a DELETE flow mod.
+	OfpFlowRemovedReason_OFPRR_GROUP_DELETE OfpFlowRemovedReason = 3 // Group was removed.
+	OfpFlowRemovedReason_OFPRR_METER_DELETE OfpFlowRemovedReason = 4 // Meter was removed
 )
 
-var OfpFlowRemovedReason_name = map[int32]string{
-	0: "OFPRR_IDLE_TIMEOUT",
-	1: "OFPRR_HARD_TIMEOUT",
-	2: "OFPRR_DELETE",
-	3: "OFPRR_GROUP_DELETE",
-	4: "OFPRR_METER_DELETE",
-}
+// Enum value maps for OfpFlowRemovedReason.
+var (
+	OfpFlowRemovedReason_name = map[int32]string{
+		0: "OFPRR_IDLE_TIMEOUT",
+		1: "OFPRR_HARD_TIMEOUT",
+		2: "OFPRR_DELETE",
+		3: "OFPRR_GROUP_DELETE",
+		4: "OFPRR_METER_DELETE",
+	}
+	OfpFlowRemovedReason_value = map[string]int32{
+		"OFPRR_IDLE_TIMEOUT": 0,
+		"OFPRR_HARD_TIMEOUT": 1,
+		"OFPRR_DELETE":       2,
+		"OFPRR_GROUP_DELETE": 3,
+		"OFPRR_METER_DELETE": 4,
+	}
+)
 
-var OfpFlowRemovedReason_value = map[string]int32{
-	"OFPRR_IDLE_TIMEOUT": 0,
-	"OFPRR_HARD_TIMEOUT": 1,
-	"OFPRR_DELETE":       2,
-	"OFPRR_GROUP_DELETE": 3,
-	"OFPRR_METER_DELETE": 4,
+func (x OfpFlowRemovedReason) Enum() *OfpFlowRemovedReason {
+	p := new(OfpFlowRemovedReason)
+	*p = x
+	return p
 }
 
 func (x OfpFlowRemovedReason) String() string {
-	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowRemovedReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[26].Descriptor()
+}
+
+func (OfpFlowRemovedReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[26]
+}
+
+func (x OfpFlowRemovedReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowRemovedReason.Descriptor instead.
 func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
 }
 
 // Meter numbering. Flow meters can use any number up to OFPM_MAX.
@@ -1210,33 +1834,54 @@
 	// Last usable meter.
 	OfpMeter_OFPM_MAX OfpMeter = 2147418112
 	// Virtual meters.
-	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645
-	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646
+	OfpMeter_OFPM_SLOWPATH   OfpMeter = 2147483645 // Meter for slow datapath.
+	OfpMeter_OFPM_CONTROLLER OfpMeter = 2147483646 // Meter for controller connection.
 	OfpMeter_OFPM_ALL        OfpMeter = 2147483647
 )
 
-var OfpMeter_name = map[int32]string{
-	0:          "OFPM_ZERO",
-	2147418112: "OFPM_MAX",
-	2147483645: "OFPM_SLOWPATH",
-	2147483646: "OFPM_CONTROLLER",
-	2147483647: "OFPM_ALL",
-}
+// Enum value maps for OfpMeter.
+var (
+	OfpMeter_name = map[int32]string{
+		0:          "OFPM_ZERO",
+		2147418112: "OFPM_MAX",
+		2147483645: "OFPM_SLOWPATH",
+		2147483646: "OFPM_CONTROLLER",
+		2147483647: "OFPM_ALL",
+	}
+	OfpMeter_value = map[string]int32{
+		"OFPM_ZERO":       0,
+		"OFPM_MAX":        2147418112,
+		"OFPM_SLOWPATH":   2147483645,
+		"OFPM_CONTROLLER": 2147483646,
+		"OFPM_ALL":        2147483647,
+	}
+)
 
-var OfpMeter_value = map[string]int32{
-	"OFPM_ZERO":       0,
-	"OFPM_MAX":        2147418112,
-	"OFPM_SLOWPATH":   2147483645,
-	"OFPM_CONTROLLER": 2147483646,
-	"OFPM_ALL":        2147483647,
+func (x OfpMeter) Enum() *OfpMeter {
+	p := new(OfpMeter)
+	*p = x
+	return p
 }
 
 func (x OfpMeter) String() string {
-	return proto.EnumName(OfpMeter_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeter) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[27].Descriptor()
+}
+
+func (OfpMeter) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[27]
+}
+
+func (x OfpMeter) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeter.Descriptor instead.
 func (OfpMeter) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
 }
 
 // Meter band types
@@ -1244,60 +1889,102 @@
 
 const (
 	OfpMeterBandType_OFPMBT_INVALID      OfpMeterBandType = 0
-	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1
-	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2
-	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535
+	OfpMeterBandType_OFPMBT_DROP         OfpMeterBandType = 1     // Drop packet.
+	OfpMeterBandType_OFPMBT_DSCP_REMARK  OfpMeterBandType = 2     // Remark DSCP in the IP header.
+	OfpMeterBandType_OFPMBT_EXPERIMENTER OfpMeterBandType = 65535 // Experimenter meter band.
 )
 
-var OfpMeterBandType_name = map[int32]string{
-	0:     "OFPMBT_INVALID",
-	1:     "OFPMBT_DROP",
-	2:     "OFPMBT_DSCP_REMARK",
-	65535: "OFPMBT_EXPERIMENTER",
-}
+// Enum value maps for OfpMeterBandType.
+var (
+	OfpMeterBandType_name = map[int32]string{
+		0:     "OFPMBT_INVALID",
+		1:     "OFPMBT_DROP",
+		2:     "OFPMBT_DSCP_REMARK",
+		65535: "OFPMBT_EXPERIMENTER",
+	}
+	OfpMeterBandType_value = map[string]int32{
+		"OFPMBT_INVALID":      0,
+		"OFPMBT_DROP":         1,
+		"OFPMBT_DSCP_REMARK":  2,
+		"OFPMBT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpMeterBandType_value = map[string]int32{
-	"OFPMBT_INVALID":      0,
-	"OFPMBT_DROP":         1,
-	"OFPMBT_DSCP_REMARK":  2,
-	"OFPMBT_EXPERIMENTER": 65535,
+func (x OfpMeterBandType) Enum() *OfpMeterBandType {
+	p := new(OfpMeterBandType)
+	*p = x
+	return p
 }
 
 func (x OfpMeterBandType) String() string {
-	return proto.EnumName(OfpMeterBandType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterBandType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[28].Descriptor()
+}
+
+func (OfpMeterBandType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[28]
+}
+
+func (x OfpMeterBandType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterBandType.Descriptor instead.
 func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
 }
 
 // Meter commands
 type OfpMeterModCommand int32
 
 const (
-	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0
-	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1
-	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2
+	OfpMeterModCommand_OFPMC_ADD    OfpMeterModCommand = 0 // New meter.
+	OfpMeterModCommand_OFPMC_MODIFY OfpMeterModCommand = 1 // Modify specified meter.
+	OfpMeterModCommand_OFPMC_DELETE OfpMeterModCommand = 2 // Delete specified meter.
 )
 
-var OfpMeterModCommand_name = map[int32]string{
-	0: "OFPMC_ADD",
-	1: "OFPMC_MODIFY",
-	2: "OFPMC_DELETE",
-}
+// Enum value maps for OfpMeterModCommand.
+var (
+	OfpMeterModCommand_name = map[int32]string{
+		0: "OFPMC_ADD",
+		1: "OFPMC_MODIFY",
+		2: "OFPMC_DELETE",
+	}
+	OfpMeterModCommand_value = map[string]int32{
+		"OFPMC_ADD":    0,
+		"OFPMC_MODIFY": 1,
+		"OFPMC_DELETE": 2,
+	}
+)
 
-var OfpMeterModCommand_value = map[string]int32{
-	"OFPMC_ADD":    0,
-	"OFPMC_MODIFY": 1,
-	"OFPMC_DELETE": 2,
+func (x OfpMeterModCommand) Enum() *OfpMeterModCommand {
+	p := new(OfpMeterModCommand)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModCommand) String() string {
-	return proto.EnumName(OfpMeterModCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[29].Descriptor()
+}
+
+func (OfpMeterModCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[29]
+}
+
+func (x OfpMeterModCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModCommand.Descriptor instead.
 func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
 }
 
 // Meter configuration flags
@@ -1305,34 +1992,55 @@
 
 const (
 	OfpMeterFlags_OFPMF_INVALID OfpMeterFlags = 0
-	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1
-	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2
-	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4
-	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8
+	OfpMeterFlags_OFPMF_KBPS    OfpMeterFlags = 1 // Rate value in kb/s (kilo-bit per second).
+	OfpMeterFlags_OFPMF_PKTPS   OfpMeterFlags = 2 // Rate value in packet/sec.
+	OfpMeterFlags_OFPMF_BURST   OfpMeterFlags = 4 // Do burst size.
+	OfpMeterFlags_OFPMF_STATS   OfpMeterFlags = 8 // Collect statistics.
 )
 
-var OfpMeterFlags_name = map[int32]string{
-	0: "OFPMF_INVALID",
-	1: "OFPMF_KBPS",
-	2: "OFPMF_PKTPS",
-	4: "OFPMF_BURST",
-	8: "OFPMF_STATS",
-}
+// Enum value maps for OfpMeterFlags.
+var (
+	OfpMeterFlags_name = map[int32]string{
+		0: "OFPMF_INVALID",
+		1: "OFPMF_KBPS",
+		2: "OFPMF_PKTPS",
+		4: "OFPMF_BURST",
+		8: "OFPMF_STATS",
+	}
+	OfpMeterFlags_value = map[string]int32{
+		"OFPMF_INVALID": 0,
+		"OFPMF_KBPS":    1,
+		"OFPMF_PKTPS":   2,
+		"OFPMF_BURST":   4,
+		"OFPMF_STATS":   8,
+	}
+)
 
-var OfpMeterFlags_value = map[string]int32{
-	"OFPMF_INVALID": 0,
-	"OFPMF_KBPS":    1,
-	"OFPMF_PKTPS":   2,
-	"OFPMF_BURST":   4,
-	"OFPMF_STATS":   8,
+func (x OfpMeterFlags) Enum() *OfpMeterFlags {
+	p := new(OfpMeterFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMeterFlags) String() string {
-	return proto.EnumName(OfpMeterFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[30].Descriptor()
+}
+
+func (OfpMeterFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[30]
+}
+
+func (x OfpMeterFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterFlags.Descriptor instead.
 func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
 }
 
 // Values for 'type' in ofp_error_message.  These values are immutable: they
@@ -1341,65 +2049,86 @@
 type OfpErrorType int32
 
 const (
-	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0
-	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1
-	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2
-	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3
-	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4
-	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5
-	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6
-	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7
-	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8
-	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9
-	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10
-	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11
-	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12
-	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13
-	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535
+	OfpErrorType_OFPET_HELLO_FAILED          OfpErrorType = 0     // Hello protocol failed.
+	OfpErrorType_OFPET_BAD_REQUEST           OfpErrorType = 1     // Request was not understood.
+	OfpErrorType_OFPET_BAD_ACTION            OfpErrorType = 2     // Error in action description.
+	OfpErrorType_OFPET_BAD_INSTRUCTION       OfpErrorType = 3     // Error in instruction list.
+	OfpErrorType_OFPET_BAD_MATCH             OfpErrorType = 4     // Error in match.
+	OfpErrorType_OFPET_FLOW_MOD_FAILED       OfpErrorType = 5     // Problem modifying flow entry.
+	OfpErrorType_OFPET_GROUP_MOD_FAILED      OfpErrorType = 6     // Problem modifying group entry.
+	OfpErrorType_OFPET_PORT_MOD_FAILED       OfpErrorType = 7     // Port mod request failed.
+	OfpErrorType_OFPET_TABLE_MOD_FAILED      OfpErrorType = 8     // Table mod request failed.
+	OfpErrorType_OFPET_QUEUE_OP_FAILED       OfpErrorType = 9     // Queue operation failed.
+	OfpErrorType_OFPET_SWITCH_CONFIG_FAILED  OfpErrorType = 10    // Switch config request failed.
+	OfpErrorType_OFPET_ROLE_REQUEST_FAILED   OfpErrorType = 11    // Controller Role request failed.
+	OfpErrorType_OFPET_METER_MOD_FAILED      OfpErrorType = 12    // Error in meter.
+	OfpErrorType_OFPET_TABLE_FEATURES_FAILED OfpErrorType = 13    // Setting table features failed.
+	OfpErrorType_OFPET_EXPERIMENTER          OfpErrorType = 65535 // Experimenter error messages.
 )
 
-var OfpErrorType_name = map[int32]string{
-	0:     "OFPET_HELLO_FAILED",
-	1:     "OFPET_BAD_REQUEST",
-	2:     "OFPET_BAD_ACTION",
-	3:     "OFPET_BAD_INSTRUCTION",
-	4:     "OFPET_BAD_MATCH",
-	5:     "OFPET_FLOW_MOD_FAILED",
-	6:     "OFPET_GROUP_MOD_FAILED",
-	7:     "OFPET_PORT_MOD_FAILED",
-	8:     "OFPET_TABLE_MOD_FAILED",
-	9:     "OFPET_QUEUE_OP_FAILED",
-	10:    "OFPET_SWITCH_CONFIG_FAILED",
-	11:    "OFPET_ROLE_REQUEST_FAILED",
-	12:    "OFPET_METER_MOD_FAILED",
-	13:    "OFPET_TABLE_FEATURES_FAILED",
-	65535: "OFPET_EXPERIMENTER",
-}
+// Enum value maps for OfpErrorType.
+var (
+	OfpErrorType_name = map[int32]string{
+		0:     "OFPET_HELLO_FAILED",
+		1:     "OFPET_BAD_REQUEST",
+		2:     "OFPET_BAD_ACTION",
+		3:     "OFPET_BAD_INSTRUCTION",
+		4:     "OFPET_BAD_MATCH",
+		5:     "OFPET_FLOW_MOD_FAILED",
+		6:     "OFPET_GROUP_MOD_FAILED",
+		7:     "OFPET_PORT_MOD_FAILED",
+		8:     "OFPET_TABLE_MOD_FAILED",
+		9:     "OFPET_QUEUE_OP_FAILED",
+		10:    "OFPET_SWITCH_CONFIG_FAILED",
+		11:    "OFPET_ROLE_REQUEST_FAILED",
+		12:    "OFPET_METER_MOD_FAILED",
+		13:    "OFPET_TABLE_FEATURES_FAILED",
+		65535: "OFPET_EXPERIMENTER",
+	}
+	OfpErrorType_value = map[string]int32{
+		"OFPET_HELLO_FAILED":          0,
+		"OFPET_BAD_REQUEST":           1,
+		"OFPET_BAD_ACTION":            2,
+		"OFPET_BAD_INSTRUCTION":       3,
+		"OFPET_BAD_MATCH":             4,
+		"OFPET_FLOW_MOD_FAILED":       5,
+		"OFPET_GROUP_MOD_FAILED":      6,
+		"OFPET_PORT_MOD_FAILED":       7,
+		"OFPET_TABLE_MOD_FAILED":      8,
+		"OFPET_QUEUE_OP_FAILED":       9,
+		"OFPET_SWITCH_CONFIG_FAILED":  10,
+		"OFPET_ROLE_REQUEST_FAILED":   11,
+		"OFPET_METER_MOD_FAILED":      12,
+		"OFPET_TABLE_FEATURES_FAILED": 13,
+		"OFPET_EXPERIMENTER":          65535,
+	}
+)
 
-var OfpErrorType_value = map[string]int32{
-	"OFPET_HELLO_FAILED":          0,
-	"OFPET_BAD_REQUEST":           1,
-	"OFPET_BAD_ACTION":            2,
-	"OFPET_BAD_INSTRUCTION":       3,
-	"OFPET_BAD_MATCH":             4,
-	"OFPET_FLOW_MOD_FAILED":       5,
-	"OFPET_GROUP_MOD_FAILED":      6,
-	"OFPET_PORT_MOD_FAILED":       7,
-	"OFPET_TABLE_MOD_FAILED":      8,
-	"OFPET_QUEUE_OP_FAILED":       9,
-	"OFPET_SWITCH_CONFIG_FAILED":  10,
-	"OFPET_ROLE_REQUEST_FAILED":   11,
-	"OFPET_METER_MOD_FAILED":      12,
-	"OFPET_TABLE_FEATURES_FAILED": 13,
-	"OFPET_EXPERIMENTER":          65535,
+func (x OfpErrorType) Enum() *OfpErrorType {
+	p := new(OfpErrorType)
+	*p = x
+	return p
 }
 
 func (x OfpErrorType) String() string {
-	return proto.EnumName(OfpErrorType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpErrorType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[31].Descriptor()
+}
+
+func (OfpErrorType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[31]
+}
+
+func (x OfpErrorType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpErrorType.Descriptor instead.
 func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
 }
 
 // ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
@@ -1407,26 +2136,47 @@
 type OfpHelloFailedCode int32
 
 const (
-	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0
-	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1
+	OfpHelloFailedCode_OFPHFC_INCOMPATIBLE OfpHelloFailedCode = 0 // No compatible version.
+	OfpHelloFailedCode_OFPHFC_EPERM        OfpHelloFailedCode = 1 // Permissions error.
 )
 
-var OfpHelloFailedCode_name = map[int32]string{
-	0: "OFPHFC_INCOMPATIBLE",
-	1: "OFPHFC_EPERM",
-}
+// Enum value maps for OfpHelloFailedCode.
+var (
+	OfpHelloFailedCode_name = map[int32]string{
+		0: "OFPHFC_INCOMPATIBLE",
+		1: "OFPHFC_EPERM",
+	}
+	OfpHelloFailedCode_value = map[string]int32{
+		"OFPHFC_INCOMPATIBLE": 0,
+		"OFPHFC_EPERM":        1,
+	}
+)
 
-var OfpHelloFailedCode_value = map[string]int32{
-	"OFPHFC_INCOMPATIBLE": 0,
-	"OFPHFC_EPERM":        1,
+func (x OfpHelloFailedCode) Enum() *OfpHelloFailedCode {
+	p := new(OfpHelloFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpHelloFailedCode) String() string {
-	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpHelloFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[32].Descriptor()
+}
+
+func (OfpHelloFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[32]
+}
+
+func (x OfpHelloFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpHelloFailedCode.Descriptor instead.
 func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
@@ -1434,62 +2184,83 @@
 type OfpBadRequestCode int32
 
 const (
-	OfpBadRequestCode_OFPBRC_BAD_VERSION               OfpBadRequestCode = 0
-	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1
-	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2
+	OfpBadRequestCode_OFPBRC_BAD_VERSION               OfpBadRequestCode = 0 // ofp_header.version not supported.
+	OfpBadRequestCode_OFPBRC_BAD_TYPE                  OfpBadRequestCode = 1 // ofp_header.type not supported.
+	OfpBadRequestCode_OFPBRC_BAD_MULTIPART             OfpBadRequestCode = 2 // ofp_multipart_request.type not supported.
 	OfpBadRequestCode_OFPBRC_BAD_EXPERIMENTER          OfpBadRequestCode = 3
-	OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE              OfpBadRequestCode = 4
-	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5
-	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6
-	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7
-	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8
+	OfpBadRequestCode_OFPBRC_BAD_EXP_TYPE              OfpBadRequestCode = 4 // Experimenter type not supported.
+	OfpBadRequestCode_OFPBRC_EPERM                     OfpBadRequestCode = 5 // Permissions error.
+	OfpBadRequestCode_OFPBRC_BAD_LEN                   OfpBadRequestCode = 6 // Wrong request length for type.
+	OfpBadRequestCode_OFPBRC_BUFFER_EMPTY              OfpBadRequestCode = 7 // Specified buffer has already been used.
+	OfpBadRequestCode_OFPBRC_BUFFER_UNKNOWN            OfpBadRequestCode = 8 // Specified buffer does not exist.
 	OfpBadRequestCode_OFPBRC_BAD_TABLE_ID              OfpBadRequestCode = 9
-	OfpBadRequestCode_OFPBRC_IS_SLAVE                  OfpBadRequestCode = 10
-	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11
-	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12
+	OfpBadRequestCode_OFPBRC_IS_SLAVE                  OfpBadRequestCode = 10 // Denied because controller is slave.
+	OfpBadRequestCode_OFPBRC_BAD_PORT                  OfpBadRequestCode = 11 // Invalid port.
+	OfpBadRequestCode_OFPBRC_BAD_PACKET                OfpBadRequestCode = 12 // Invalid packet in packet-out.
 	OfpBadRequestCode_OFPBRC_MULTIPART_BUFFER_OVERFLOW OfpBadRequestCode = 13
 )
 
-var OfpBadRequestCode_name = map[int32]string{
-	0:  "OFPBRC_BAD_VERSION",
-	1:  "OFPBRC_BAD_TYPE",
-	2:  "OFPBRC_BAD_MULTIPART",
-	3:  "OFPBRC_BAD_EXPERIMENTER",
-	4:  "OFPBRC_BAD_EXP_TYPE",
-	5:  "OFPBRC_EPERM",
-	6:  "OFPBRC_BAD_LEN",
-	7:  "OFPBRC_BUFFER_EMPTY",
-	8:  "OFPBRC_BUFFER_UNKNOWN",
-	9:  "OFPBRC_BAD_TABLE_ID",
-	10: "OFPBRC_IS_SLAVE",
-	11: "OFPBRC_BAD_PORT",
-	12: "OFPBRC_BAD_PACKET",
-	13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
-}
+// Enum value maps for OfpBadRequestCode.
+var (
+	OfpBadRequestCode_name = map[int32]string{
+		0:  "OFPBRC_BAD_VERSION",
+		1:  "OFPBRC_BAD_TYPE",
+		2:  "OFPBRC_BAD_MULTIPART",
+		3:  "OFPBRC_BAD_EXPERIMENTER",
+		4:  "OFPBRC_BAD_EXP_TYPE",
+		5:  "OFPBRC_EPERM",
+		6:  "OFPBRC_BAD_LEN",
+		7:  "OFPBRC_BUFFER_EMPTY",
+		8:  "OFPBRC_BUFFER_UNKNOWN",
+		9:  "OFPBRC_BAD_TABLE_ID",
+		10: "OFPBRC_IS_SLAVE",
+		11: "OFPBRC_BAD_PORT",
+		12: "OFPBRC_BAD_PACKET",
+		13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
+	}
+	OfpBadRequestCode_value = map[string]int32{
+		"OFPBRC_BAD_VERSION":               0,
+		"OFPBRC_BAD_TYPE":                  1,
+		"OFPBRC_BAD_MULTIPART":             2,
+		"OFPBRC_BAD_EXPERIMENTER":          3,
+		"OFPBRC_BAD_EXP_TYPE":              4,
+		"OFPBRC_EPERM":                     5,
+		"OFPBRC_BAD_LEN":                   6,
+		"OFPBRC_BUFFER_EMPTY":              7,
+		"OFPBRC_BUFFER_UNKNOWN":            8,
+		"OFPBRC_BAD_TABLE_ID":              9,
+		"OFPBRC_IS_SLAVE":                  10,
+		"OFPBRC_BAD_PORT":                  11,
+		"OFPBRC_BAD_PACKET":                12,
+		"OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
+	}
+)
 
-var OfpBadRequestCode_value = map[string]int32{
-	"OFPBRC_BAD_VERSION":               0,
-	"OFPBRC_BAD_TYPE":                  1,
-	"OFPBRC_BAD_MULTIPART":             2,
-	"OFPBRC_BAD_EXPERIMENTER":          3,
-	"OFPBRC_BAD_EXP_TYPE":              4,
-	"OFPBRC_EPERM":                     5,
-	"OFPBRC_BAD_LEN":                   6,
-	"OFPBRC_BUFFER_EMPTY":              7,
-	"OFPBRC_BUFFER_UNKNOWN":            8,
-	"OFPBRC_BAD_TABLE_ID":              9,
-	"OFPBRC_IS_SLAVE":                  10,
-	"OFPBRC_BAD_PORT":                  11,
-	"OFPBRC_BAD_PACKET":                12,
-	"OFPBRC_MULTIPART_BUFFER_OVERFLOW": 13,
+func (x OfpBadRequestCode) Enum() *OfpBadRequestCode {
+	p := new(OfpBadRequestCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadRequestCode) String() string {
-	return proto.EnumName(OfpBadRequestCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadRequestCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[33].Descriptor()
+}
+
+func (OfpBadRequestCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[33]
+}
+
+func (x OfpBadRequestCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadRequestCode.Descriptor instead.
 func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
@@ -1497,68 +2268,89 @@
 type OfpBadActionCode int32
 
 const (
-	OfpBadActionCode_OFPBAC_BAD_TYPE           OfpBadActionCode = 0
-	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1
-	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2
-	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3
-	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4
-	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5
-	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6
-	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7
-	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8
-	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9
+	OfpBadActionCode_OFPBAC_BAD_TYPE           OfpBadActionCode = 0 // Unknown or unsupported action type.
+	OfpBadActionCode_OFPBAC_BAD_LEN            OfpBadActionCode = 1 // Length problem in actions.
+	OfpBadActionCode_OFPBAC_BAD_EXPERIMENTER   OfpBadActionCode = 2 // Unknown experimenter id specified.
+	OfpBadActionCode_OFPBAC_BAD_EXP_TYPE       OfpBadActionCode = 3 // Unknown action for experimenter id.
+	OfpBadActionCode_OFPBAC_BAD_OUT_PORT       OfpBadActionCode = 4 // Problem validating output port.
+	OfpBadActionCode_OFPBAC_BAD_ARGUMENT       OfpBadActionCode = 5 // Bad action argument.
+	OfpBadActionCode_OFPBAC_EPERM              OfpBadActionCode = 6 // Permissions error.
+	OfpBadActionCode_OFPBAC_TOO_MANY           OfpBadActionCode = 7 // Can't handle this many actions.
+	OfpBadActionCode_OFPBAC_BAD_QUEUE          OfpBadActionCode = 8 // Problem validating output queue.
+	OfpBadActionCode_OFPBAC_BAD_OUT_GROUP      OfpBadActionCode = 9 // Invalid group id in forward action.
 	OfpBadActionCode_OFPBAC_MATCH_INCONSISTENT OfpBadActionCode = 10
 	OfpBadActionCode_OFPBAC_UNSUPPORTED_ORDER  OfpBadActionCode = 11
 	OfpBadActionCode_OFPBAC_BAD_TAG            OfpBadActionCode = 12
-	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13
-	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14
-	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15
+	OfpBadActionCode_OFPBAC_BAD_SET_TYPE       OfpBadActionCode = 13 // Unsupported type in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_LEN        OfpBadActionCode = 14 // Length problem in SET_FIELD action.
+	OfpBadActionCode_OFPBAC_BAD_SET_ARGUMENT   OfpBadActionCode = 15 // Bad argument in SET_FIELD action.
 )
 
-var OfpBadActionCode_name = map[int32]string{
-	0:  "OFPBAC_BAD_TYPE",
-	1:  "OFPBAC_BAD_LEN",
-	2:  "OFPBAC_BAD_EXPERIMENTER",
-	3:  "OFPBAC_BAD_EXP_TYPE",
-	4:  "OFPBAC_BAD_OUT_PORT",
-	5:  "OFPBAC_BAD_ARGUMENT",
-	6:  "OFPBAC_EPERM",
-	7:  "OFPBAC_TOO_MANY",
-	8:  "OFPBAC_BAD_QUEUE",
-	9:  "OFPBAC_BAD_OUT_GROUP",
-	10: "OFPBAC_MATCH_INCONSISTENT",
-	11: "OFPBAC_UNSUPPORTED_ORDER",
-	12: "OFPBAC_BAD_TAG",
-	13: "OFPBAC_BAD_SET_TYPE",
-	14: "OFPBAC_BAD_SET_LEN",
-	15: "OFPBAC_BAD_SET_ARGUMENT",
-}
+// Enum value maps for OfpBadActionCode.
+var (
+	OfpBadActionCode_name = map[int32]string{
+		0:  "OFPBAC_BAD_TYPE",
+		1:  "OFPBAC_BAD_LEN",
+		2:  "OFPBAC_BAD_EXPERIMENTER",
+		3:  "OFPBAC_BAD_EXP_TYPE",
+		4:  "OFPBAC_BAD_OUT_PORT",
+		5:  "OFPBAC_BAD_ARGUMENT",
+		6:  "OFPBAC_EPERM",
+		7:  "OFPBAC_TOO_MANY",
+		8:  "OFPBAC_BAD_QUEUE",
+		9:  "OFPBAC_BAD_OUT_GROUP",
+		10: "OFPBAC_MATCH_INCONSISTENT",
+		11: "OFPBAC_UNSUPPORTED_ORDER",
+		12: "OFPBAC_BAD_TAG",
+		13: "OFPBAC_BAD_SET_TYPE",
+		14: "OFPBAC_BAD_SET_LEN",
+		15: "OFPBAC_BAD_SET_ARGUMENT",
+	}
+	OfpBadActionCode_value = map[string]int32{
+		"OFPBAC_BAD_TYPE":           0,
+		"OFPBAC_BAD_LEN":            1,
+		"OFPBAC_BAD_EXPERIMENTER":   2,
+		"OFPBAC_BAD_EXP_TYPE":       3,
+		"OFPBAC_BAD_OUT_PORT":       4,
+		"OFPBAC_BAD_ARGUMENT":       5,
+		"OFPBAC_EPERM":              6,
+		"OFPBAC_TOO_MANY":           7,
+		"OFPBAC_BAD_QUEUE":          8,
+		"OFPBAC_BAD_OUT_GROUP":      9,
+		"OFPBAC_MATCH_INCONSISTENT": 10,
+		"OFPBAC_UNSUPPORTED_ORDER":  11,
+		"OFPBAC_BAD_TAG":            12,
+		"OFPBAC_BAD_SET_TYPE":       13,
+		"OFPBAC_BAD_SET_LEN":        14,
+		"OFPBAC_BAD_SET_ARGUMENT":   15,
+	}
+)
 
-var OfpBadActionCode_value = map[string]int32{
-	"OFPBAC_BAD_TYPE":           0,
-	"OFPBAC_BAD_LEN":            1,
-	"OFPBAC_BAD_EXPERIMENTER":   2,
-	"OFPBAC_BAD_EXP_TYPE":       3,
-	"OFPBAC_BAD_OUT_PORT":       4,
-	"OFPBAC_BAD_ARGUMENT":       5,
-	"OFPBAC_EPERM":              6,
-	"OFPBAC_TOO_MANY":           7,
-	"OFPBAC_BAD_QUEUE":          8,
-	"OFPBAC_BAD_OUT_GROUP":      9,
-	"OFPBAC_MATCH_INCONSISTENT": 10,
-	"OFPBAC_UNSUPPORTED_ORDER":  11,
-	"OFPBAC_BAD_TAG":            12,
-	"OFPBAC_BAD_SET_TYPE":       13,
-	"OFPBAC_BAD_SET_LEN":        14,
-	"OFPBAC_BAD_SET_ARGUMENT":   15,
+func (x OfpBadActionCode) Enum() *OfpBadActionCode {
+	p := new(OfpBadActionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadActionCode) String() string {
-	return proto.EnumName(OfpBadActionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadActionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[34].Descriptor()
+}
+
+func (OfpBadActionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[34]
+}
+
+func (x OfpBadActionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadActionCode.Descriptor instead.
 func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
@@ -1566,47 +2358,68 @@
 type OfpBadInstructionCode int32
 
 const (
-	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0
+	OfpBadInstructionCode_OFPBIC_UNKNOWN_INST        OfpBadInstructionCode = 0 // Unknown instruction.
 	OfpBadInstructionCode_OFPBIC_UNSUP_INST          OfpBadInstructionCode = 1
-	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2
-	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3
+	OfpBadInstructionCode_OFPBIC_BAD_TABLE_ID        OfpBadInstructionCode = 2 // Invalid Table-ID specified.
+	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA      OfpBadInstructionCode = 3 // Metadata value unsupported by datapath.
 	OfpBadInstructionCode_OFPBIC_UNSUP_METADATA_MASK OfpBadInstructionCode = 4
-	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5
-	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6
-	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7
-	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8
+	OfpBadInstructionCode_OFPBIC_BAD_EXPERIMENTER    OfpBadInstructionCode = 5 // Unknown experimenter id specified.
+	OfpBadInstructionCode_OFPBIC_BAD_EXP_TYPE        OfpBadInstructionCode = 6 // Unknown instruction for experimenter id.
+	OfpBadInstructionCode_OFPBIC_BAD_LEN             OfpBadInstructionCode = 7 // Length problem in instructions.
+	OfpBadInstructionCode_OFPBIC_EPERM               OfpBadInstructionCode = 8 // Permissions error.
 )
 
-var OfpBadInstructionCode_name = map[int32]string{
-	0: "OFPBIC_UNKNOWN_INST",
-	1: "OFPBIC_UNSUP_INST",
-	2: "OFPBIC_BAD_TABLE_ID",
-	3: "OFPBIC_UNSUP_METADATA",
-	4: "OFPBIC_UNSUP_METADATA_MASK",
-	5: "OFPBIC_BAD_EXPERIMENTER",
-	6: "OFPBIC_BAD_EXP_TYPE",
-	7: "OFPBIC_BAD_LEN",
-	8: "OFPBIC_EPERM",
-}
+// Enum value maps for OfpBadInstructionCode.
+var (
+	OfpBadInstructionCode_name = map[int32]string{
+		0: "OFPBIC_UNKNOWN_INST",
+		1: "OFPBIC_UNSUP_INST",
+		2: "OFPBIC_BAD_TABLE_ID",
+		3: "OFPBIC_UNSUP_METADATA",
+		4: "OFPBIC_UNSUP_METADATA_MASK",
+		5: "OFPBIC_BAD_EXPERIMENTER",
+		6: "OFPBIC_BAD_EXP_TYPE",
+		7: "OFPBIC_BAD_LEN",
+		8: "OFPBIC_EPERM",
+	}
+	OfpBadInstructionCode_value = map[string]int32{
+		"OFPBIC_UNKNOWN_INST":        0,
+		"OFPBIC_UNSUP_INST":          1,
+		"OFPBIC_BAD_TABLE_ID":        2,
+		"OFPBIC_UNSUP_METADATA":      3,
+		"OFPBIC_UNSUP_METADATA_MASK": 4,
+		"OFPBIC_BAD_EXPERIMENTER":    5,
+		"OFPBIC_BAD_EXP_TYPE":        6,
+		"OFPBIC_BAD_LEN":             7,
+		"OFPBIC_EPERM":               8,
+	}
+)
 
-var OfpBadInstructionCode_value = map[string]int32{
-	"OFPBIC_UNKNOWN_INST":        0,
-	"OFPBIC_UNSUP_INST":          1,
-	"OFPBIC_BAD_TABLE_ID":        2,
-	"OFPBIC_UNSUP_METADATA":      3,
-	"OFPBIC_UNSUP_METADATA_MASK": 4,
-	"OFPBIC_BAD_EXPERIMENTER":    5,
-	"OFPBIC_BAD_EXP_TYPE":        6,
-	"OFPBIC_BAD_LEN":             7,
-	"OFPBIC_EPERM":               8,
+func (x OfpBadInstructionCode) Enum() *OfpBadInstructionCode {
+	p := new(OfpBadInstructionCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadInstructionCode) String() string {
-	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadInstructionCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[35].Descriptor()
+}
+
+func (OfpBadInstructionCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[35]
+}
+
+func (x OfpBadInstructionCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadInstructionCode.Descriptor instead.
 func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
@@ -1615,55 +2428,76 @@
 
 const (
 	OfpBadMatchCode_OFPBMC_BAD_TYPE         OfpBadMatchCode = 0
-	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1
-	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2
+	OfpBadMatchCode_OFPBMC_BAD_LEN          OfpBadMatchCode = 1 // Length problem in match.
+	OfpBadMatchCode_OFPBMC_BAD_TAG          OfpBadMatchCode = 2 // Match uses an unsupported tag/encap.
 	OfpBadMatchCode_OFPBMC_BAD_DL_ADDR_MASK OfpBadMatchCode = 3
 	OfpBadMatchCode_OFPBMC_BAD_NW_ADDR_MASK OfpBadMatchCode = 4
 	OfpBadMatchCode_OFPBMC_BAD_WILDCARDS    OfpBadMatchCode = 5
-	OfpBadMatchCode_OFPBMC_BAD_FIELD        OfpBadMatchCode = 6
-	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7
+	OfpBadMatchCode_OFPBMC_BAD_FIELD        OfpBadMatchCode = 6 // Unsupported field type in the match.
+	OfpBadMatchCode_OFPBMC_BAD_VALUE        OfpBadMatchCode = 7 // Unsupported value in a match field.
 	OfpBadMatchCode_OFPBMC_BAD_MASK         OfpBadMatchCode = 8
-	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9
-	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10
-	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11
+	OfpBadMatchCode_OFPBMC_BAD_PREREQ       OfpBadMatchCode = 9  // A prerequisite was not met.
+	OfpBadMatchCode_OFPBMC_DUP_FIELD        OfpBadMatchCode = 10 // A field type was duplicated.
+	OfpBadMatchCode_OFPBMC_EPERM            OfpBadMatchCode = 11 // Permissions error.
 )
 
-var OfpBadMatchCode_name = map[int32]string{
-	0:  "OFPBMC_BAD_TYPE",
-	1:  "OFPBMC_BAD_LEN",
-	2:  "OFPBMC_BAD_TAG",
-	3:  "OFPBMC_BAD_DL_ADDR_MASK",
-	4:  "OFPBMC_BAD_NW_ADDR_MASK",
-	5:  "OFPBMC_BAD_WILDCARDS",
-	6:  "OFPBMC_BAD_FIELD",
-	7:  "OFPBMC_BAD_VALUE",
-	8:  "OFPBMC_BAD_MASK",
-	9:  "OFPBMC_BAD_PREREQ",
-	10: "OFPBMC_DUP_FIELD",
-	11: "OFPBMC_EPERM",
-}
+// Enum value maps for OfpBadMatchCode.
+var (
+	OfpBadMatchCode_name = map[int32]string{
+		0:  "OFPBMC_BAD_TYPE",
+		1:  "OFPBMC_BAD_LEN",
+		2:  "OFPBMC_BAD_TAG",
+		3:  "OFPBMC_BAD_DL_ADDR_MASK",
+		4:  "OFPBMC_BAD_NW_ADDR_MASK",
+		5:  "OFPBMC_BAD_WILDCARDS",
+		6:  "OFPBMC_BAD_FIELD",
+		7:  "OFPBMC_BAD_VALUE",
+		8:  "OFPBMC_BAD_MASK",
+		9:  "OFPBMC_BAD_PREREQ",
+		10: "OFPBMC_DUP_FIELD",
+		11: "OFPBMC_EPERM",
+	}
+	OfpBadMatchCode_value = map[string]int32{
+		"OFPBMC_BAD_TYPE":         0,
+		"OFPBMC_BAD_LEN":          1,
+		"OFPBMC_BAD_TAG":          2,
+		"OFPBMC_BAD_DL_ADDR_MASK": 3,
+		"OFPBMC_BAD_NW_ADDR_MASK": 4,
+		"OFPBMC_BAD_WILDCARDS":    5,
+		"OFPBMC_BAD_FIELD":        6,
+		"OFPBMC_BAD_VALUE":        7,
+		"OFPBMC_BAD_MASK":         8,
+		"OFPBMC_BAD_PREREQ":       9,
+		"OFPBMC_DUP_FIELD":        10,
+		"OFPBMC_EPERM":            11,
+	}
+)
 
-var OfpBadMatchCode_value = map[string]int32{
-	"OFPBMC_BAD_TYPE":         0,
-	"OFPBMC_BAD_LEN":          1,
-	"OFPBMC_BAD_TAG":          2,
-	"OFPBMC_BAD_DL_ADDR_MASK": 3,
-	"OFPBMC_BAD_NW_ADDR_MASK": 4,
-	"OFPBMC_BAD_WILDCARDS":    5,
-	"OFPBMC_BAD_FIELD":        6,
-	"OFPBMC_BAD_VALUE":        7,
-	"OFPBMC_BAD_MASK":         8,
-	"OFPBMC_BAD_PREREQ":       9,
-	"OFPBMC_DUP_FIELD":        10,
-	"OFPBMC_EPERM":            11,
+func (x OfpBadMatchCode) Enum() *OfpBadMatchCode {
+	p := new(OfpBadMatchCode)
+	*p = x
+	return p
 }
 
 func (x OfpBadMatchCode) String() string {
-	return proto.EnumName(OfpBadMatchCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpBadMatchCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[36].Descriptor()
+}
+
+func (OfpBadMatchCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[36]
+}
+
+func (x OfpBadMatchCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpBadMatchCode.Descriptor instead.
 func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
 }
 
 // ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
@@ -1671,44 +2505,65 @@
 type OfpFlowModFailedCode int32
 
 const (
-	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0
-	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1
-	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2
+	OfpFlowModFailedCode_OFPFMFC_UNKNOWN      OfpFlowModFailedCode = 0 // Unspecified error.
+	OfpFlowModFailedCode_OFPFMFC_TABLE_FULL   OfpFlowModFailedCode = 1 // Flow not added because table was full.
+	OfpFlowModFailedCode_OFPFMFC_BAD_TABLE_ID OfpFlowModFailedCode = 2 // Table does not exist
 	OfpFlowModFailedCode_OFPFMFC_OVERLAP      OfpFlowModFailedCode = 3
-	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4
+	OfpFlowModFailedCode_OFPFMFC_EPERM        OfpFlowModFailedCode = 4 // Permissions error.
 	OfpFlowModFailedCode_OFPFMFC_BAD_TIMEOUT  OfpFlowModFailedCode = 5
-	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6
-	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7
+	OfpFlowModFailedCode_OFPFMFC_BAD_COMMAND  OfpFlowModFailedCode = 6 // Unsupported or unknown command.
+	OfpFlowModFailedCode_OFPFMFC_BAD_FLAGS    OfpFlowModFailedCode = 7 // Unsupported or unknown flags.
 )
 
-var OfpFlowModFailedCode_name = map[int32]string{
-	0: "OFPFMFC_UNKNOWN",
-	1: "OFPFMFC_TABLE_FULL",
-	2: "OFPFMFC_BAD_TABLE_ID",
-	3: "OFPFMFC_OVERLAP",
-	4: "OFPFMFC_EPERM",
-	5: "OFPFMFC_BAD_TIMEOUT",
-	6: "OFPFMFC_BAD_COMMAND",
-	7: "OFPFMFC_BAD_FLAGS",
-}
+// Enum value maps for OfpFlowModFailedCode.
+var (
+	OfpFlowModFailedCode_name = map[int32]string{
+		0: "OFPFMFC_UNKNOWN",
+		1: "OFPFMFC_TABLE_FULL",
+		2: "OFPFMFC_BAD_TABLE_ID",
+		3: "OFPFMFC_OVERLAP",
+		4: "OFPFMFC_EPERM",
+		5: "OFPFMFC_BAD_TIMEOUT",
+		6: "OFPFMFC_BAD_COMMAND",
+		7: "OFPFMFC_BAD_FLAGS",
+	}
+	OfpFlowModFailedCode_value = map[string]int32{
+		"OFPFMFC_UNKNOWN":      0,
+		"OFPFMFC_TABLE_FULL":   1,
+		"OFPFMFC_BAD_TABLE_ID": 2,
+		"OFPFMFC_OVERLAP":      3,
+		"OFPFMFC_EPERM":        4,
+		"OFPFMFC_BAD_TIMEOUT":  5,
+		"OFPFMFC_BAD_COMMAND":  6,
+		"OFPFMFC_BAD_FLAGS":    7,
+	}
+)
 
-var OfpFlowModFailedCode_value = map[string]int32{
-	"OFPFMFC_UNKNOWN":      0,
-	"OFPFMFC_TABLE_FULL":   1,
-	"OFPFMFC_BAD_TABLE_ID": 2,
-	"OFPFMFC_OVERLAP":      3,
-	"OFPFMFC_EPERM":        4,
-	"OFPFMFC_BAD_TIMEOUT":  5,
-	"OFPFMFC_BAD_COMMAND":  6,
-	"OFPFMFC_BAD_FLAGS":    7,
+func (x OfpFlowModFailedCode) Enum() *OfpFlowModFailedCode {
+	p := new(OfpFlowModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpFlowModFailedCode) String() string {
-	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpFlowModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[37].Descriptor()
+}
+
+func (OfpFlowModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[37]
+}
+
+func (x OfpFlowModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpFlowModFailedCode.Descriptor instead.
 func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
 }
 
 // ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
@@ -1719,62 +2574,83 @@
 	OfpGroupModFailedCode_OFPGMFC_GROUP_EXISTS         OfpGroupModFailedCode = 0
 	OfpGroupModFailedCode_OFPGMFC_INVALID_GROUP        OfpGroupModFailedCode = 1
 	OfpGroupModFailedCode_OFPGMFC_WEIGHT_UNSUPPORTED   OfpGroupModFailedCode = 2
-	OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS        OfpGroupModFailedCode = 3
+	OfpGroupModFailedCode_OFPGMFC_OUT_OF_GROUPS        OfpGroupModFailedCode = 3 // The group table is full.
 	OfpGroupModFailedCode_OFPGMFC_OUT_OF_BUCKETS       OfpGroupModFailedCode = 4
 	OfpGroupModFailedCode_OFPGMFC_CHAINING_UNSUPPORTED OfpGroupModFailedCode = 5
 	OfpGroupModFailedCode_OFPGMFC_WATCH_UNSUPPORTED    OfpGroupModFailedCode = 6
-	OfpGroupModFailedCode_OFPGMFC_LOOP                 OfpGroupModFailedCode = 7
+	OfpGroupModFailedCode_OFPGMFC_LOOP                 OfpGroupModFailedCode = 7 // Group entry would cause a loop.
 	OfpGroupModFailedCode_OFPGMFC_UNKNOWN_GROUP        OfpGroupModFailedCode = 8
 	OfpGroupModFailedCode_OFPGMFC_CHAINED_GROUP        OfpGroupModFailedCode = 9
-	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10
-	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11
-	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12
-	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13
-	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14
+	OfpGroupModFailedCode_OFPGMFC_BAD_TYPE             OfpGroupModFailedCode = 10 // Unsupported or unknown group type.
+	OfpGroupModFailedCode_OFPGMFC_BAD_COMMAND          OfpGroupModFailedCode = 11 // Unsupported or unknown command.
+	OfpGroupModFailedCode_OFPGMFC_BAD_BUCKET           OfpGroupModFailedCode = 12 // Error in bucket.
+	OfpGroupModFailedCode_OFPGMFC_BAD_WATCH            OfpGroupModFailedCode = 13 // Error in watch port/group.
+	OfpGroupModFailedCode_OFPGMFC_EPERM                OfpGroupModFailedCode = 14 // Permissions error.
 )
 
-var OfpGroupModFailedCode_name = map[int32]string{
-	0:  "OFPGMFC_GROUP_EXISTS",
-	1:  "OFPGMFC_INVALID_GROUP",
-	2:  "OFPGMFC_WEIGHT_UNSUPPORTED",
-	3:  "OFPGMFC_OUT_OF_GROUPS",
-	4:  "OFPGMFC_OUT_OF_BUCKETS",
-	5:  "OFPGMFC_CHAINING_UNSUPPORTED",
-	6:  "OFPGMFC_WATCH_UNSUPPORTED",
-	7:  "OFPGMFC_LOOP",
-	8:  "OFPGMFC_UNKNOWN_GROUP",
-	9:  "OFPGMFC_CHAINED_GROUP",
-	10: "OFPGMFC_BAD_TYPE",
-	11: "OFPGMFC_BAD_COMMAND",
-	12: "OFPGMFC_BAD_BUCKET",
-	13: "OFPGMFC_BAD_WATCH",
-	14: "OFPGMFC_EPERM",
-}
+// Enum value maps for OfpGroupModFailedCode.
+var (
+	OfpGroupModFailedCode_name = map[int32]string{
+		0:  "OFPGMFC_GROUP_EXISTS",
+		1:  "OFPGMFC_INVALID_GROUP",
+		2:  "OFPGMFC_WEIGHT_UNSUPPORTED",
+		3:  "OFPGMFC_OUT_OF_GROUPS",
+		4:  "OFPGMFC_OUT_OF_BUCKETS",
+		5:  "OFPGMFC_CHAINING_UNSUPPORTED",
+		6:  "OFPGMFC_WATCH_UNSUPPORTED",
+		7:  "OFPGMFC_LOOP",
+		8:  "OFPGMFC_UNKNOWN_GROUP",
+		9:  "OFPGMFC_CHAINED_GROUP",
+		10: "OFPGMFC_BAD_TYPE",
+		11: "OFPGMFC_BAD_COMMAND",
+		12: "OFPGMFC_BAD_BUCKET",
+		13: "OFPGMFC_BAD_WATCH",
+		14: "OFPGMFC_EPERM",
+	}
+	OfpGroupModFailedCode_value = map[string]int32{
+		"OFPGMFC_GROUP_EXISTS":         0,
+		"OFPGMFC_INVALID_GROUP":        1,
+		"OFPGMFC_WEIGHT_UNSUPPORTED":   2,
+		"OFPGMFC_OUT_OF_GROUPS":        3,
+		"OFPGMFC_OUT_OF_BUCKETS":       4,
+		"OFPGMFC_CHAINING_UNSUPPORTED": 5,
+		"OFPGMFC_WATCH_UNSUPPORTED":    6,
+		"OFPGMFC_LOOP":                 7,
+		"OFPGMFC_UNKNOWN_GROUP":        8,
+		"OFPGMFC_CHAINED_GROUP":        9,
+		"OFPGMFC_BAD_TYPE":             10,
+		"OFPGMFC_BAD_COMMAND":          11,
+		"OFPGMFC_BAD_BUCKET":           12,
+		"OFPGMFC_BAD_WATCH":            13,
+		"OFPGMFC_EPERM":                14,
+	}
+)
 
-var OfpGroupModFailedCode_value = map[string]int32{
-	"OFPGMFC_GROUP_EXISTS":         0,
-	"OFPGMFC_INVALID_GROUP":        1,
-	"OFPGMFC_WEIGHT_UNSUPPORTED":   2,
-	"OFPGMFC_OUT_OF_GROUPS":        3,
-	"OFPGMFC_OUT_OF_BUCKETS":       4,
-	"OFPGMFC_CHAINING_UNSUPPORTED": 5,
-	"OFPGMFC_WATCH_UNSUPPORTED":    6,
-	"OFPGMFC_LOOP":                 7,
-	"OFPGMFC_UNKNOWN_GROUP":        8,
-	"OFPGMFC_CHAINED_GROUP":        9,
-	"OFPGMFC_BAD_TYPE":             10,
-	"OFPGMFC_BAD_COMMAND":          11,
-	"OFPGMFC_BAD_BUCKET":           12,
-	"OFPGMFC_BAD_WATCH":            13,
-	"OFPGMFC_EPERM":                14,
+func (x OfpGroupModFailedCode) Enum() *OfpGroupModFailedCode {
+	p := new(OfpGroupModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpGroupModFailedCode) String() string {
-	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[38].Descriptor()
+}
+
+func (OfpGroupModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[38]
+}
+
+func (x OfpGroupModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupModFailedCode.Descriptor instead.
 func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
 }
 
 // ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
@@ -1782,35 +2658,56 @@
 type OfpPortModFailedCode int32
 
 const (
-	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0
+	OfpPortModFailedCode_OFPPMFC_BAD_PORT      OfpPortModFailedCode = 0 // Specified port number does not exist.
 	OfpPortModFailedCode_OFPPMFC_BAD_HW_ADDR   OfpPortModFailedCode = 1
-	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2
-	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3
-	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4
+	OfpPortModFailedCode_OFPPMFC_BAD_CONFIG    OfpPortModFailedCode = 2 // Specified config is invalid.
+	OfpPortModFailedCode_OFPPMFC_BAD_ADVERTISE OfpPortModFailedCode = 3 // Specified advertise is invalid.
+	OfpPortModFailedCode_OFPPMFC_EPERM         OfpPortModFailedCode = 4 // Permissions error.
 )
 
-var OfpPortModFailedCode_name = map[int32]string{
-	0: "OFPPMFC_BAD_PORT",
-	1: "OFPPMFC_BAD_HW_ADDR",
-	2: "OFPPMFC_BAD_CONFIG",
-	3: "OFPPMFC_BAD_ADVERTISE",
-	4: "OFPPMFC_EPERM",
-}
+// Enum value maps for OfpPortModFailedCode.
+var (
+	OfpPortModFailedCode_name = map[int32]string{
+		0: "OFPPMFC_BAD_PORT",
+		1: "OFPPMFC_BAD_HW_ADDR",
+		2: "OFPPMFC_BAD_CONFIG",
+		3: "OFPPMFC_BAD_ADVERTISE",
+		4: "OFPPMFC_EPERM",
+	}
+	OfpPortModFailedCode_value = map[string]int32{
+		"OFPPMFC_BAD_PORT":      0,
+		"OFPPMFC_BAD_HW_ADDR":   1,
+		"OFPPMFC_BAD_CONFIG":    2,
+		"OFPPMFC_BAD_ADVERTISE": 3,
+		"OFPPMFC_EPERM":         4,
+	}
+)
 
-var OfpPortModFailedCode_value = map[string]int32{
-	"OFPPMFC_BAD_PORT":      0,
-	"OFPPMFC_BAD_HW_ADDR":   1,
-	"OFPPMFC_BAD_CONFIG":    2,
-	"OFPPMFC_BAD_ADVERTISE": 3,
-	"OFPPMFC_EPERM":         4,
+func (x OfpPortModFailedCode) Enum() *OfpPortModFailedCode {
+	p := new(OfpPortModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpPortModFailedCode) String() string {
-	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpPortModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[39].Descriptor()
+}
+
+func (OfpPortModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[39]
+}
+
+func (x OfpPortModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpPortModFailedCode.Descriptor instead.
 func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
@@ -1818,29 +2715,50 @@
 type OfpTableModFailedCode int32
 
 const (
-	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0
-	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1
-	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2
+	OfpTableModFailedCode_OFPTMFC_BAD_TABLE  OfpTableModFailedCode = 0 // Specified table does not exist.
+	OfpTableModFailedCode_OFPTMFC_BAD_CONFIG OfpTableModFailedCode = 1 // Specified config is invalid.
+	OfpTableModFailedCode_OFPTMFC_EPERM      OfpTableModFailedCode = 2 // Permissions error.
 )
 
-var OfpTableModFailedCode_name = map[int32]string{
-	0: "OFPTMFC_BAD_TABLE",
-	1: "OFPTMFC_BAD_CONFIG",
-	2: "OFPTMFC_EPERM",
-}
+// Enum value maps for OfpTableModFailedCode.
+var (
+	OfpTableModFailedCode_name = map[int32]string{
+		0: "OFPTMFC_BAD_TABLE",
+		1: "OFPTMFC_BAD_CONFIG",
+		2: "OFPTMFC_EPERM",
+	}
+	OfpTableModFailedCode_value = map[string]int32{
+		"OFPTMFC_BAD_TABLE":  0,
+		"OFPTMFC_BAD_CONFIG": 1,
+		"OFPTMFC_EPERM":      2,
+	}
+)
 
-var OfpTableModFailedCode_value = map[string]int32{
-	"OFPTMFC_BAD_TABLE":  0,
-	"OFPTMFC_BAD_CONFIG": 1,
-	"OFPTMFC_EPERM":      2,
+func (x OfpTableModFailedCode) Enum() *OfpTableModFailedCode {
+	p := new(OfpTableModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableModFailedCode) String() string {
-	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[40].Descriptor()
+}
+
+func (OfpTableModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[40]
+}
+
+func (x OfpTableModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableModFailedCode.Descriptor instead.
 func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
 }
 
 // ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
@@ -1848,29 +2766,50 @@
 type OfpQueueOpFailedCode int32
 
 const (
-	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0
-	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1
-	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2
+	OfpQueueOpFailedCode_OFPQOFC_BAD_PORT  OfpQueueOpFailedCode = 0 // Invalid port (or port does not exist).
+	OfpQueueOpFailedCode_OFPQOFC_BAD_QUEUE OfpQueueOpFailedCode = 1 // Queue does not exist.
+	OfpQueueOpFailedCode_OFPQOFC_EPERM     OfpQueueOpFailedCode = 2 // Permissions error.
 )
 
-var OfpQueueOpFailedCode_name = map[int32]string{
-	0: "OFPQOFC_BAD_PORT",
-	1: "OFPQOFC_BAD_QUEUE",
-	2: "OFPQOFC_EPERM",
-}
+// Enum value maps for OfpQueueOpFailedCode.
+var (
+	OfpQueueOpFailedCode_name = map[int32]string{
+		0: "OFPQOFC_BAD_PORT",
+		1: "OFPQOFC_BAD_QUEUE",
+		2: "OFPQOFC_EPERM",
+	}
+	OfpQueueOpFailedCode_value = map[string]int32{
+		"OFPQOFC_BAD_PORT":  0,
+		"OFPQOFC_BAD_QUEUE": 1,
+		"OFPQOFC_EPERM":     2,
+	}
+)
 
-var OfpQueueOpFailedCode_value = map[string]int32{
-	"OFPQOFC_BAD_PORT":  0,
-	"OFPQOFC_BAD_QUEUE": 1,
-	"OFPQOFC_EPERM":     2,
+func (x OfpQueueOpFailedCode) Enum() *OfpQueueOpFailedCode {
+	p := new(OfpQueueOpFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpQueueOpFailedCode) String() string {
-	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueOpFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[41].Descriptor()
+}
+
+func (OfpQueueOpFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[41]
+}
+
+func (x OfpQueueOpFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueOpFailedCode.Descriptor instead.
 func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
 }
 
 // ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
@@ -1878,29 +2817,50 @@
 type OfpSwitchConfigFailedCode int32
 
 const (
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0
-	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1
-	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_FLAGS OfpSwitchConfigFailedCode = 0 // Specified flags is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_BAD_LEN   OfpSwitchConfigFailedCode = 1 // Specified len is invalid.
+	OfpSwitchConfigFailedCode_OFPSCFC_EPERM     OfpSwitchConfigFailedCode = 2 // Permissions error.
 )
 
-var OfpSwitchConfigFailedCode_name = map[int32]string{
-	0: "OFPSCFC_BAD_FLAGS",
-	1: "OFPSCFC_BAD_LEN",
-	2: "OFPSCFC_EPERM",
-}
+// Enum value maps for OfpSwitchConfigFailedCode.
+var (
+	OfpSwitchConfigFailedCode_name = map[int32]string{
+		0: "OFPSCFC_BAD_FLAGS",
+		1: "OFPSCFC_BAD_LEN",
+		2: "OFPSCFC_EPERM",
+	}
+	OfpSwitchConfigFailedCode_value = map[string]int32{
+		"OFPSCFC_BAD_FLAGS": 0,
+		"OFPSCFC_BAD_LEN":   1,
+		"OFPSCFC_EPERM":     2,
+	}
+)
 
-var OfpSwitchConfigFailedCode_value = map[string]int32{
-	"OFPSCFC_BAD_FLAGS": 0,
-	"OFPSCFC_BAD_LEN":   1,
-	"OFPSCFC_EPERM":     2,
+func (x OfpSwitchConfigFailedCode) Enum() *OfpSwitchConfigFailedCode {
+	p := new(OfpSwitchConfigFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpSwitchConfigFailedCode) String() string {
-	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpSwitchConfigFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[42].Descriptor()
+}
+
+func (OfpSwitchConfigFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[42]
+}
+
+func (x OfpSwitchConfigFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpSwitchConfigFailedCode.Descriptor instead.
 func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
 }
 
 // ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
@@ -1908,29 +2868,50 @@
 type OfpRoleRequestFailedCode int32
 
 const (
-	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0
-	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1
-	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2
+	OfpRoleRequestFailedCode_OFPRRFC_STALE    OfpRoleRequestFailedCode = 0 // Stale Message: old generation_id.
+	OfpRoleRequestFailedCode_OFPRRFC_UNSUP    OfpRoleRequestFailedCode = 1 // Controller role change unsupported.
+	OfpRoleRequestFailedCode_OFPRRFC_BAD_ROLE OfpRoleRequestFailedCode = 2 // Invalid role.
 )
 
-var OfpRoleRequestFailedCode_name = map[int32]string{
-	0: "OFPRRFC_STALE",
-	1: "OFPRRFC_UNSUP",
-	2: "OFPRRFC_BAD_ROLE",
-}
+// Enum value maps for OfpRoleRequestFailedCode.
+var (
+	OfpRoleRequestFailedCode_name = map[int32]string{
+		0: "OFPRRFC_STALE",
+		1: "OFPRRFC_UNSUP",
+		2: "OFPRRFC_BAD_ROLE",
+	}
+	OfpRoleRequestFailedCode_value = map[string]int32{
+		"OFPRRFC_STALE":    0,
+		"OFPRRFC_UNSUP":    1,
+		"OFPRRFC_BAD_ROLE": 2,
+	}
+)
 
-var OfpRoleRequestFailedCode_value = map[string]int32{
-	"OFPRRFC_STALE":    0,
-	"OFPRRFC_UNSUP":    1,
-	"OFPRRFC_BAD_ROLE": 2,
+func (x OfpRoleRequestFailedCode) Enum() *OfpRoleRequestFailedCode {
+	p := new(OfpRoleRequestFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpRoleRequestFailedCode) String() string {
-	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpRoleRequestFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[43].Descriptor()
+}
+
+func (OfpRoleRequestFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[43]
+}
+
+func (x OfpRoleRequestFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpRoleRequestFailedCode.Descriptor instead.
 func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
 }
 
 // ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
@@ -1938,56 +2919,77 @@
 type OfpMeterModFailedCode int32
 
 const (
-	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0
+	OfpMeterModFailedCode_OFPMMFC_UNKNOWN         OfpMeterModFailedCode = 0 // Unspecified error.
 	OfpMeterModFailedCode_OFPMMFC_METER_EXISTS    OfpMeterModFailedCode = 1
 	OfpMeterModFailedCode_OFPMMFC_INVALID_METER   OfpMeterModFailedCode = 2
 	OfpMeterModFailedCode_OFPMMFC_UNKNOWN_METER   OfpMeterModFailedCode = 3
-	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND     OfpMeterModFailedCode = 4
-	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS       OfpMeterModFailedCode = 5
-	OfpMeterModFailedCode_OFPMMFC_BAD_RATE        OfpMeterModFailedCode = 6
-	OfpMeterModFailedCode_OFPMMFC_BAD_BURST       OfpMeterModFailedCode = 7
-	OfpMeterModFailedCode_OFPMMFC_BAD_BAND        OfpMeterModFailedCode = 8
-	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9
-	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10
+	OfpMeterModFailedCode_OFPMMFC_BAD_COMMAND     OfpMeterModFailedCode = 4  // Unsupported or unknown command.
+	OfpMeterModFailedCode_OFPMMFC_BAD_FLAGS       OfpMeterModFailedCode = 5  // Flag configuration unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_RATE        OfpMeterModFailedCode = 6  // Rate unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BURST       OfpMeterModFailedCode = 7  // Burst size unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND        OfpMeterModFailedCode = 8  // Band unsupported.
+	OfpMeterModFailedCode_OFPMMFC_BAD_BAND_DETAIL OfpMeterModFailedCode = 9  // Band value unsupported.
+	OfpMeterModFailedCode_OFPMMFC_OUT_OF_METERS   OfpMeterModFailedCode = 10 // No more meters available.
 	OfpMeterModFailedCode_OFPMMFC_OUT_OF_BANDS    OfpMeterModFailedCode = 11
 )
 
-var OfpMeterModFailedCode_name = map[int32]string{
-	0:  "OFPMMFC_UNKNOWN",
-	1:  "OFPMMFC_METER_EXISTS",
-	2:  "OFPMMFC_INVALID_METER",
-	3:  "OFPMMFC_UNKNOWN_METER",
-	4:  "OFPMMFC_BAD_COMMAND",
-	5:  "OFPMMFC_BAD_FLAGS",
-	6:  "OFPMMFC_BAD_RATE",
-	7:  "OFPMMFC_BAD_BURST",
-	8:  "OFPMMFC_BAD_BAND",
-	9:  "OFPMMFC_BAD_BAND_DETAIL",
-	10: "OFPMMFC_OUT_OF_METERS",
-	11: "OFPMMFC_OUT_OF_BANDS",
-}
+// Enum value maps for OfpMeterModFailedCode.
+var (
+	OfpMeterModFailedCode_name = map[int32]string{
+		0:  "OFPMMFC_UNKNOWN",
+		1:  "OFPMMFC_METER_EXISTS",
+		2:  "OFPMMFC_INVALID_METER",
+		3:  "OFPMMFC_UNKNOWN_METER",
+		4:  "OFPMMFC_BAD_COMMAND",
+		5:  "OFPMMFC_BAD_FLAGS",
+		6:  "OFPMMFC_BAD_RATE",
+		7:  "OFPMMFC_BAD_BURST",
+		8:  "OFPMMFC_BAD_BAND",
+		9:  "OFPMMFC_BAD_BAND_DETAIL",
+		10: "OFPMMFC_OUT_OF_METERS",
+		11: "OFPMMFC_OUT_OF_BANDS",
+	}
+	OfpMeterModFailedCode_value = map[string]int32{
+		"OFPMMFC_UNKNOWN":         0,
+		"OFPMMFC_METER_EXISTS":    1,
+		"OFPMMFC_INVALID_METER":   2,
+		"OFPMMFC_UNKNOWN_METER":   3,
+		"OFPMMFC_BAD_COMMAND":     4,
+		"OFPMMFC_BAD_FLAGS":       5,
+		"OFPMMFC_BAD_RATE":        6,
+		"OFPMMFC_BAD_BURST":       7,
+		"OFPMMFC_BAD_BAND":        8,
+		"OFPMMFC_BAD_BAND_DETAIL": 9,
+		"OFPMMFC_OUT_OF_METERS":   10,
+		"OFPMMFC_OUT_OF_BANDS":    11,
+	}
+)
 
-var OfpMeterModFailedCode_value = map[string]int32{
-	"OFPMMFC_UNKNOWN":         0,
-	"OFPMMFC_METER_EXISTS":    1,
-	"OFPMMFC_INVALID_METER":   2,
-	"OFPMMFC_UNKNOWN_METER":   3,
-	"OFPMMFC_BAD_COMMAND":     4,
-	"OFPMMFC_BAD_FLAGS":       5,
-	"OFPMMFC_BAD_RATE":        6,
-	"OFPMMFC_BAD_BURST":       7,
-	"OFPMMFC_BAD_BAND":        8,
-	"OFPMMFC_BAD_BAND_DETAIL": 9,
-	"OFPMMFC_OUT_OF_METERS":   10,
-	"OFPMMFC_OUT_OF_BANDS":    11,
+func (x OfpMeterModFailedCode) Enum() *OfpMeterModFailedCode {
+	p := new(OfpMeterModFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpMeterModFailedCode) String() string {
-	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMeterModFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[44].Descriptor()
+}
+
+func (OfpMeterModFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[44]
+}
+
+func (x OfpMeterModFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMeterModFailedCode.Descriptor instead.
 func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
@@ -1995,38 +2997,59 @@
 type OfpTableFeaturesFailedCode int32
 
 const (
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3
-	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4
-	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TABLE    OfpTableFeaturesFailedCode = 0 // Specified table does not exist.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_METADATA OfpTableFeaturesFailedCode = 1 // Invalid metadata mask.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_TYPE     OfpTableFeaturesFailedCode = 2 // Unknown property type.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_LEN      OfpTableFeaturesFailedCode = 3 // Length problem in properties.
+	OfpTableFeaturesFailedCode_OFPTFFC_BAD_ARGUMENT OfpTableFeaturesFailedCode = 4 // Unsupported property value.
+	OfpTableFeaturesFailedCode_OFPTFFC_EPERM        OfpTableFeaturesFailedCode = 5 // Permissions error.
 )
 
-var OfpTableFeaturesFailedCode_name = map[int32]string{
-	0: "OFPTFFC_BAD_TABLE",
-	1: "OFPTFFC_BAD_METADATA",
-	2: "OFPTFFC_BAD_TYPE",
-	3: "OFPTFFC_BAD_LEN",
-	4: "OFPTFFC_BAD_ARGUMENT",
-	5: "OFPTFFC_EPERM",
-}
+// Enum value maps for OfpTableFeaturesFailedCode.
+var (
+	OfpTableFeaturesFailedCode_name = map[int32]string{
+		0: "OFPTFFC_BAD_TABLE",
+		1: "OFPTFFC_BAD_METADATA",
+		2: "OFPTFFC_BAD_TYPE",
+		3: "OFPTFFC_BAD_LEN",
+		4: "OFPTFFC_BAD_ARGUMENT",
+		5: "OFPTFFC_EPERM",
+	}
+	OfpTableFeaturesFailedCode_value = map[string]int32{
+		"OFPTFFC_BAD_TABLE":    0,
+		"OFPTFFC_BAD_METADATA": 1,
+		"OFPTFFC_BAD_TYPE":     2,
+		"OFPTFFC_BAD_LEN":      3,
+		"OFPTFFC_BAD_ARGUMENT": 4,
+		"OFPTFFC_EPERM":        5,
+	}
+)
 
-var OfpTableFeaturesFailedCode_value = map[string]int32{
-	"OFPTFFC_BAD_TABLE":    0,
-	"OFPTFFC_BAD_METADATA": 1,
-	"OFPTFFC_BAD_TYPE":     2,
-	"OFPTFFC_BAD_LEN":      3,
-	"OFPTFFC_BAD_ARGUMENT": 4,
-	"OFPTFFC_EPERM":        5,
+func (x OfpTableFeaturesFailedCode) Enum() *OfpTableFeaturesFailedCode {
+	p := new(OfpTableFeaturesFailedCode)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturesFailedCode) String() string {
-	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturesFailedCode) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[45].Descriptor()
+}
+
+func (OfpTableFeaturesFailedCode) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[45]
+}
+
+func (x OfpTableFeaturesFailedCode) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturesFailedCode.Descriptor instead.
 func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
 }
 
 type OfpMultipartType int32
@@ -2098,98 +3121,161 @@
 	OfpMultipartType_OFPMP_EXPERIMENTER OfpMultipartType = 65535
 )
 
-var OfpMultipartType_name = map[int32]string{
-	0:     "OFPMP_DESC",
-	1:     "OFPMP_FLOW",
-	2:     "OFPMP_AGGREGATE",
-	3:     "OFPMP_TABLE",
-	4:     "OFPMP_PORT_STATS",
-	5:     "OFPMP_QUEUE",
-	6:     "OFPMP_GROUP",
-	7:     "OFPMP_GROUP_DESC",
-	8:     "OFPMP_GROUP_FEATURES",
-	9:     "OFPMP_METER",
-	10:    "OFPMP_METER_CONFIG",
-	11:    "OFPMP_METER_FEATURES",
-	12:    "OFPMP_TABLE_FEATURES",
-	13:    "OFPMP_PORT_DESC",
-	65535: "OFPMP_EXPERIMENTER",
-}
+// Enum value maps for OfpMultipartType.
+var (
+	OfpMultipartType_name = map[int32]string{
+		0:     "OFPMP_DESC",
+		1:     "OFPMP_FLOW",
+		2:     "OFPMP_AGGREGATE",
+		3:     "OFPMP_TABLE",
+		4:     "OFPMP_PORT_STATS",
+		5:     "OFPMP_QUEUE",
+		6:     "OFPMP_GROUP",
+		7:     "OFPMP_GROUP_DESC",
+		8:     "OFPMP_GROUP_FEATURES",
+		9:     "OFPMP_METER",
+		10:    "OFPMP_METER_CONFIG",
+		11:    "OFPMP_METER_FEATURES",
+		12:    "OFPMP_TABLE_FEATURES",
+		13:    "OFPMP_PORT_DESC",
+		65535: "OFPMP_EXPERIMENTER",
+	}
+	OfpMultipartType_value = map[string]int32{
+		"OFPMP_DESC":           0,
+		"OFPMP_FLOW":           1,
+		"OFPMP_AGGREGATE":      2,
+		"OFPMP_TABLE":          3,
+		"OFPMP_PORT_STATS":     4,
+		"OFPMP_QUEUE":          5,
+		"OFPMP_GROUP":          6,
+		"OFPMP_GROUP_DESC":     7,
+		"OFPMP_GROUP_FEATURES": 8,
+		"OFPMP_METER":          9,
+		"OFPMP_METER_CONFIG":   10,
+		"OFPMP_METER_FEATURES": 11,
+		"OFPMP_TABLE_FEATURES": 12,
+		"OFPMP_PORT_DESC":      13,
+		"OFPMP_EXPERIMENTER":   65535,
+	}
+)
 
-var OfpMultipartType_value = map[string]int32{
-	"OFPMP_DESC":           0,
-	"OFPMP_FLOW":           1,
-	"OFPMP_AGGREGATE":      2,
-	"OFPMP_TABLE":          3,
-	"OFPMP_PORT_STATS":     4,
-	"OFPMP_QUEUE":          5,
-	"OFPMP_GROUP":          6,
-	"OFPMP_GROUP_DESC":     7,
-	"OFPMP_GROUP_FEATURES": 8,
-	"OFPMP_METER":          9,
-	"OFPMP_METER_CONFIG":   10,
-	"OFPMP_METER_FEATURES": 11,
-	"OFPMP_TABLE_FEATURES": 12,
-	"OFPMP_PORT_DESC":      13,
-	"OFPMP_EXPERIMENTER":   65535,
+func (x OfpMultipartType) Enum() *OfpMultipartType {
+	p := new(OfpMultipartType)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartType) String() string {
-	return proto.EnumName(OfpMultipartType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[46].Descriptor()
+}
+
+func (OfpMultipartType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[46]
+}
+
+func (x OfpMultipartType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartType.Descriptor instead.
 func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
 }
 
 type OfpMultipartRequestFlags int32
 
 const (
 	OfpMultipartRequestFlags_OFPMPF_REQ_INVALID OfpMultipartRequestFlags = 0
-	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1
+	OfpMultipartRequestFlags_OFPMPF_REQ_MORE    OfpMultipartRequestFlags = 1 // More requests to follow.
 )
 
-var OfpMultipartRequestFlags_name = map[int32]string{
-	0: "OFPMPF_REQ_INVALID",
-	1: "OFPMPF_REQ_MORE",
-}
+// Enum value maps for OfpMultipartRequestFlags.
+var (
+	OfpMultipartRequestFlags_name = map[int32]string{
+		0: "OFPMPF_REQ_INVALID",
+		1: "OFPMPF_REQ_MORE",
+	}
+	OfpMultipartRequestFlags_value = map[string]int32{
+		"OFPMPF_REQ_INVALID": 0,
+		"OFPMPF_REQ_MORE":    1,
+	}
+)
 
-var OfpMultipartRequestFlags_value = map[string]int32{
-	"OFPMPF_REQ_INVALID": 0,
-	"OFPMPF_REQ_MORE":    1,
+func (x OfpMultipartRequestFlags) Enum() *OfpMultipartRequestFlags {
+	p := new(OfpMultipartRequestFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartRequestFlags) String() string {
-	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartRequestFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[47].Descriptor()
+}
+
+func (OfpMultipartRequestFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[47]
+}
+
+func (x OfpMultipartRequestFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartRequestFlags.Descriptor instead.
 func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
 }
 
 type OfpMultipartReplyFlags int32
 
 const (
 	OfpMultipartReplyFlags_OFPMPF_REPLY_INVALID OfpMultipartReplyFlags = 0
-	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1
+	OfpMultipartReplyFlags_OFPMPF_REPLY_MORE    OfpMultipartReplyFlags = 1 // More replies to follow.
 )
 
-var OfpMultipartReplyFlags_name = map[int32]string{
-	0: "OFPMPF_REPLY_INVALID",
-	1: "OFPMPF_REPLY_MORE",
-}
+// Enum value maps for OfpMultipartReplyFlags.
+var (
+	OfpMultipartReplyFlags_name = map[int32]string{
+		0: "OFPMPF_REPLY_INVALID",
+		1: "OFPMPF_REPLY_MORE",
+	}
+	OfpMultipartReplyFlags_value = map[string]int32{
+		"OFPMPF_REPLY_INVALID": 0,
+		"OFPMPF_REPLY_MORE":    1,
+	}
+)
 
-var OfpMultipartReplyFlags_value = map[string]int32{
-	"OFPMPF_REPLY_INVALID": 0,
-	"OFPMPF_REPLY_MORE":    1,
+func (x OfpMultipartReplyFlags) Enum() *OfpMultipartReplyFlags {
+	p := new(OfpMultipartReplyFlags)
+	*p = x
+	return p
 }
 
 func (x OfpMultipartReplyFlags) String() string {
-	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpMultipartReplyFlags) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[48].Descriptor()
+}
+
+func (OfpMultipartReplyFlags) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[48]
+}
+
+func (x OfpMultipartReplyFlags) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpMultipartReplyFlags.Descriptor instead.
 func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
 }
 
 // Table Feature property types.
@@ -2198,68 +3284,89 @@
 type OfpTableFeaturePropType int32
 
 const (
-	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0
-	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1
-	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2
-	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3
-	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4
-	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5
-	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6
-	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7
-	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8
-	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10
-	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12
-	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13
-	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14
-	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15
-	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534
-	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS        OfpTableFeaturePropType = 0     // Instructions property.
+	OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS_MISS   OfpTableFeaturePropType = 1     // Instructions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES         OfpTableFeaturePropType = 2     // Next Table property.
+	OfpTableFeaturePropType_OFPTFPT_NEXT_TABLES_MISS    OfpTableFeaturePropType = 3     // Next Table for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS       OfpTableFeaturePropType = 4     // Write Actions property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_ACTIONS_MISS  OfpTableFeaturePropType = 5     // Write Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS       OfpTableFeaturePropType = 6     // Apply Actions property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_ACTIONS_MISS  OfpTableFeaturePropType = 7     // Apply Actions for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_MATCH               OfpTableFeaturePropType = 8     // Match property.
+	OfpTableFeaturePropType_OFPTFPT_WILDCARDS           OfpTableFeaturePropType = 10    // Wildcards property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD      OfpTableFeaturePropType = 12    // Write Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_WRITE_SETFIELD_MISS OfpTableFeaturePropType = 13    // Write Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD      OfpTableFeaturePropType = 14    // Apply Set-Field property.
+	OfpTableFeaturePropType_OFPTFPT_APPLY_SETFIELD_MISS OfpTableFeaturePropType = 15    // Apply Set-Field for table-miss.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER        OfpTableFeaturePropType = 65534 // Experimenter property.
+	OfpTableFeaturePropType_OFPTFPT_EXPERIMENTER_MISS   OfpTableFeaturePropType = 65535 // Experimenter for table-miss.
 )
 
-var OfpTableFeaturePropType_name = map[int32]string{
-	0:     "OFPTFPT_INSTRUCTIONS",
-	1:     "OFPTFPT_INSTRUCTIONS_MISS",
-	2:     "OFPTFPT_NEXT_TABLES",
-	3:     "OFPTFPT_NEXT_TABLES_MISS",
-	4:     "OFPTFPT_WRITE_ACTIONS",
-	5:     "OFPTFPT_WRITE_ACTIONS_MISS",
-	6:     "OFPTFPT_APPLY_ACTIONS",
-	7:     "OFPTFPT_APPLY_ACTIONS_MISS",
-	8:     "OFPTFPT_MATCH",
-	10:    "OFPTFPT_WILDCARDS",
-	12:    "OFPTFPT_WRITE_SETFIELD",
-	13:    "OFPTFPT_WRITE_SETFIELD_MISS",
-	14:    "OFPTFPT_APPLY_SETFIELD",
-	15:    "OFPTFPT_APPLY_SETFIELD_MISS",
-	65534: "OFPTFPT_EXPERIMENTER",
-	65535: "OFPTFPT_EXPERIMENTER_MISS",
-}
+// Enum value maps for OfpTableFeaturePropType.
+var (
+	OfpTableFeaturePropType_name = map[int32]string{
+		0:     "OFPTFPT_INSTRUCTIONS",
+		1:     "OFPTFPT_INSTRUCTIONS_MISS",
+		2:     "OFPTFPT_NEXT_TABLES",
+		3:     "OFPTFPT_NEXT_TABLES_MISS",
+		4:     "OFPTFPT_WRITE_ACTIONS",
+		5:     "OFPTFPT_WRITE_ACTIONS_MISS",
+		6:     "OFPTFPT_APPLY_ACTIONS",
+		7:     "OFPTFPT_APPLY_ACTIONS_MISS",
+		8:     "OFPTFPT_MATCH",
+		10:    "OFPTFPT_WILDCARDS",
+		12:    "OFPTFPT_WRITE_SETFIELD",
+		13:    "OFPTFPT_WRITE_SETFIELD_MISS",
+		14:    "OFPTFPT_APPLY_SETFIELD",
+		15:    "OFPTFPT_APPLY_SETFIELD_MISS",
+		65534: "OFPTFPT_EXPERIMENTER",
+		65535: "OFPTFPT_EXPERIMENTER_MISS",
+	}
+	OfpTableFeaturePropType_value = map[string]int32{
+		"OFPTFPT_INSTRUCTIONS":        0,
+		"OFPTFPT_INSTRUCTIONS_MISS":   1,
+		"OFPTFPT_NEXT_TABLES":         2,
+		"OFPTFPT_NEXT_TABLES_MISS":    3,
+		"OFPTFPT_WRITE_ACTIONS":       4,
+		"OFPTFPT_WRITE_ACTIONS_MISS":  5,
+		"OFPTFPT_APPLY_ACTIONS":       6,
+		"OFPTFPT_APPLY_ACTIONS_MISS":  7,
+		"OFPTFPT_MATCH":               8,
+		"OFPTFPT_WILDCARDS":           10,
+		"OFPTFPT_WRITE_SETFIELD":      12,
+		"OFPTFPT_WRITE_SETFIELD_MISS": 13,
+		"OFPTFPT_APPLY_SETFIELD":      14,
+		"OFPTFPT_APPLY_SETFIELD_MISS": 15,
+		"OFPTFPT_EXPERIMENTER":        65534,
+		"OFPTFPT_EXPERIMENTER_MISS":   65535,
+	}
+)
 
-var OfpTableFeaturePropType_value = map[string]int32{
-	"OFPTFPT_INSTRUCTIONS":        0,
-	"OFPTFPT_INSTRUCTIONS_MISS":   1,
-	"OFPTFPT_NEXT_TABLES":         2,
-	"OFPTFPT_NEXT_TABLES_MISS":    3,
-	"OFPTFPT_WRITE_ACTIONS":       4,
-	"OFPTFPT_WRITE_ACTIONS_MISS":  5,
-	"OFPTFPT_APPLY_ACTIONS":       6,
-	"OFPTFPT_APPLY_ACTIONS_MISS":  7,
-	"OFPTFPT_MATCH":               8,
-	"OFPTFPT_WILDCARDS":           10,
-	"OFPTFPT_WRITE_SETFIELD":      12,
-	"OFPTFPT_WRITE_SETFIELD_MISS": 13,
-	"OFPTFPT_APPLY_SETFIELD":      14,
-	"OFPTFPT_APPLY_SETFIELD_MISS": 15,
-	"OFPTFPT_EXPERIMENTER":        65534,
-	"OFPTFPT_EXPERIMENTER_MISS":   65535,
+func (x OfpTableFeaturePropType) Enum() *OfpTableFeaturePropType {
+	p := new(OfpTableFeaturePropType)
+	*p = x
+	return p
 }
 
 func (x OfpTableFeaturePropType) String() string {
-	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpTableFeaturePropType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[49].Descriptor()
+}
+
+func (OfpTableFeaturePropType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[49]
+}
+
+func (x OfpTableFeaturePropType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropType.Descriptor instead.
 func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
 }
 
 // Group configuration flags
@@ -2267,198 +3374,288 @@
 
 const (
 	OfpGroupCapabilities_OFPGFC_INVALID         OfpGroupCapabilities = 0
-	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1
-	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2
-	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4
-	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8
+	OfpGroupCapabilities_OFPGFC_SELECT_WEIGHT   OfpGroupCapabilities = 1 // Support weight for select groups
+	OfpGroupCapabilities_OFPGFC_SELECT_LIVENESS OfpGroupCapabilities = 2 // Support liveness for select groups
+	OfpGroupCapabilities_OFPGFC_CHAINING        OfpGroupCapabilities = 4 // Support chaining groups
+	OfpGroupCapabilities_OFPGFC_CHAINING_CHECKS OfpGroupCapabilities = 8 // Check chaining for loops and delete
 )
 
-var OfpGroupCapabilities_name = map[int32]string{
-	0: "OFPGFC_INVALID",
-	1: "OFPGFC_SELECT_WEIGHT",
-	2: "OFPGFC_SELECT_LIVENESS",
-	4: "OFPGFC_CHAINING",
-	8: "OFPGFC_CHAINING_CHECKS",
-}
+// Enum value maps for OfpGroupCapabilities.
+var (
+	OfpGroupCapabilities_name = map[int32]string{
+		0: "OFPGFC_INVALID",
+		1: "OFPGFC_SELECT_WEIGHT",
+		2: "OFPGFC_SELECT_LIVENESS",
+		4: "OFPGFC_CHAINING",
+		8: "OFPGFC_CHAINING_CHECKS",
+	}
+	OfpGroupCapabilities_value = map[string]int32{
+		"OFPGFC_INVALID":         0,
+		"OFPGFC_SELECT_WEIGHT":   1,
+		"OFPGFC_SELECT_LIVENESS": 2,
+		"OFPGFC_CHAINING":        4,
+		"OFPGFC_CHAINING_CHECKS": 8,
+	}
+)
 
-var OfpGroupCapabilities_value = map[string]int32{
-	"OFPGFC_INVALID":         0,
-	"OFPGFC_SELECT_WEIGHT":   1,
-	"OFPGFC_SELECT_LIVENESS": 2,
-	"OFPGFC_CHAINING":        4,
-	"OFPGFC_CHAINING_CHECKS": 8,
+func (x OfpGroupCapabilities) Enum() *OfpGroupCapabilities {
+	p := new(OfpGroupCapabilities)
+	*p = x
+	return p
 }
 
 func (x OfpGroupCapabilities) String() string {
-	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpGroupCapabilities) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[50].Descriptor()
+}
+
+func (OfpGroupCapabilities) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[50]
+}
+
+func (x OfpGroupCapabilities) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpGroupCapabilities.Descriptor instead.
 func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
 }
 
 type OfpQueueProperties int32
 
 const (
 	OfpQueueProperties_OFPQT_INVALID      OfpQueueProperties = 0
-	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1
-	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2
-	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535
+	OfpQueueProperties_OFPQT_MIN_RATE     OfpQueueProperties = 1     // Minimum datarate guaranteed.
+	OfpQueueProperties_OFPQT_MAX_RATE     OfpQueueProperties = 2     // Maximum datarate.
+	OfpQueueProperties_OFPQT_EXPERIMENTER OfpQueueProperties = 65535 // Experimenter defined property.
 )
 
-var OfpQueueProperties_name = map[int32]string{
-	0:     "OFPQT_INVALID",
-	1:     "OFPQT_MIN_RATE",
-	2:     "OFPQT_MAX_RATE",
-	65535: "OFPQT_EXPERIMENTER",
-}
+// Enum value maps for OfpQueueProperties.
+var (
+	OfpQueueProperties_name = map[int32]string{
+		0:     "OFPQT_INVALID",
+		1:     "OFPQT_MIN_RATE",
+		2:     "OFPQT_MAX_RATE",
+		65535: "OFPQT_EXPERIMENTER",
+	}
+	OfpQueueProperties_value = map[string]int32{
+		"OFPQT_INVALID":      0,
+		"OFPQT_MIN_RATE":     1,
+		"OFPQT_MAX_RATE":     2,
+		"OFPQT_EXPERIMENTER": 65535,
+	}
+)
 
-var OfpQueueProperties_value = map[string]int32{
-	"OFPQT_INVALID":      0,
-	"OFPQT_MIN_RATE":     1,
-	"OFPQT_MAX_RATE":     2,
-	"OFPQT_EXPERIMENTER": 65535,
+func (x OfpQueueProperties) Enum() *OfpQueueProperties {
+	p := new(OfpQueueProperties)
+	*p = x
+	return p
 }
 
 func (x OfpQueueProperties) String() string {
-	return proto.EnumName(OfpQueueProperties_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpQueueProperties) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[51].Descriptor()
+}
+
+func (OfpQueueProperties) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[51]
+}
+
+func (x OfpQueueProperties) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpQueueProperties.Descriptor instead.
 func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
 }
 
 // Controller roles.
 type OfpControllerRole int32
 
 const (
-	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0
-	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1
-	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2
-	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3
+	OfpControllerRole_OFPCR_ROLE_NOCHANGE OfpControllerRole = 0 // Don't change current role.
+	OfpControllerRole_OFPCR_ROLE_EQUAL    OfpControllerRole = 1 // Default role, full access.
+	OfpControllerRole_OFPCR_ROLE_MASTER   OfpControllerRole = 2 // Full access, at most one master.
+	OfpControllerRole_OFPCR_ROLE_SLAVE    OfpControllerRole = 3 // Read-only access.
 )
 
-var OfpControllerRole_name = map[int32]string{
-	0: "OFPCR_ROLE_NOCHANGE",
-	1: "OFPCR_ROLE_EQUAL",
-	2: "OFPCR_ROLE_MASTER",
-	3: "OFPCR_ROLE_SLAVE",
-}
+// Enum value maps for OfpControllerRole.
+var (
+	OfpControllerRole_name = map[int32]string{
+		0: "OFPCR_ROLE_NOCHANGE",
+		1: "OFPCR_ROLE_EQUAL",
+		2: "OFPCR_ROLE_MASTER",
+		3: "OFPCR_ROLE_SLAVE",
+	}
+	OfpControllerRole_value = map[string]int32{
+		"OFPCR_ROLE_NOCHANGE": 0,
+		"OFPCR_ROLE_EQUAL":    1,
+		"OFPCR_ROLE_MASTER":   2,
+		"OFPCR_ROLE_SLAVE":    3,
+	}
+)
 
-var OfpControllerRole_value = map[string]int32{
-	"OFPCR_ROLE_NOCHANGE": 0,
-	"OFPCR_ROLE_EQUAL":    1,
-	"OFPCR_ROLE_MASTER":   2,
-	"OFPCR_ROLE_SLAVE":    3,
+func (x OfpControllerRole) Enum() *OfpControllerRole {
+	p := new(OfpControllerRole)
+	*p = x
+	return p
 }
 
 func (x OfpControllerRole) String() string {
-	return proto.EnumName(OfpControllerRole_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OfpControllerRole) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openflow_13_proto_enumTypes[52].Descriptor()
+}
+
+func (OfpControllerRole) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openflow_13_proto_enumTypes[52]
+}
+
+func (x OfpControllerRole) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OfpControllerRole.Descriptor instead.
 func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
 }
 
 // Header on all OpenFlow packets.
 type OfpHeader struct {
-	Version              uint32   `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
-	Type                 OfpType  `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"`
-	Xid                  uint32   `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Version       uint32                 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`                    // OFP_VERSION.
+	Type          OfpType                `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpType" json:"type,omitempty"` // One of the OFPT_ constants.
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHeader) Reset()         { *m = OfpHeader{} }
-func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHeader) ProtoMessage()    {}
+func (x *OfpHeader) Reset() {
+	*x = OfpHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHeader) ProtoMessage() {}
+
+func (x *OfpHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHeader.ProtoReflect.Descriptor instead.
 func (*OfpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{0}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *OfpHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHeader.Unmarshal(m, b)
-}
-func (m *OfpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHeader.Merge(m, src)
-}
-func (m *OfpHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHeader.Size(m)
-}
-func (m *OfpHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHeader proto.InternalMessageInfo
-
-func (m *OfpHeader) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *OfpHeader) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *OfpHeader) GetType() OfpType {
-	if m != nil {
-		return m.Type
+func (x *OfpHeader) GetType() OfpType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpType_OFPT_HELLO
 }
 
-func (m *OfpHeader) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
+func (x *OfpHeader) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
 	}
 	return 0
 }
 
 // Common header for all Hello Elements
 type OfpHelloElemHeader struct {
-	Type OfpHelloElemType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpHelloElemType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpHelloElemType" json:"type,omitempty"` // One of OFPHET_*.
 	// Types that are valid to be assigned to Element:
+	//
 	//	*OfpHelloElemHeader_Versionbitmap
-	Element              isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	Element       isOfpHelloElemHeader_Element `protobuf_oneof:"element"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemHeader) Reset()         { *m = OfpHelloElemHeader{} }
-func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemHeader) ProtoMessage()    {}
+func (x *OfpHelloElemHeader) Reset() {
+	*x = OfpHelloElemHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemHeader) ProtoMessage() {}
+
+func (x *OfpHelloElemHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemHeader.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{1}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *OfpHelloElemHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemHeader.Unmarshal(m, b)
-}
-func (m *OfpHelloElemHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemHeader.Merge(m, src)
-}
-func (m *OfpHelloElemHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemHeader.Size(m)
-}
-func (m *OfpHelloElemHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemHeader proto.InternalMessageInfo
-
-func (m *OfpHelloElemHeader) GetType() OfpHelloElemType {
-	if m != nil {
-		return m.Type
+func (x *OfpHelloElemHeader) GetType() OfpHelloElemType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpHelloElemType_OFPHET_INVALID
 }
 
+func (x *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
+	if x != nil {
+		return x.Element
+	}
+	return nil
+}
+
+func (x *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
+	if x != nil {
+		if x, ok := x.Element.(*OfpHelloElemHeader_Versionbitmap); ok {
+			return x.Versionbitmap
+		}
+	}
+	return nil
+}
+
 type isOfpHelloElemHeader_Element interface {
 	isOfpHelloElemHeader_Element()
 }
@@ -2469,63 +3666,47 @@
 
 func (*OfpHelloElemHeader_Versionbitmap) isOfpHelloElemHeader_Element() {}
 
-func (m *OfpHelloElemHeader) GetElement() isOfpHelloElemHeader_Element {
-	if m != nil {
-		return m.Element
-	}
-	return nil
-}
-
-func (m *OfpHelloElemHeader) GetVersionbitmap() *OfpHelloElemVersionbitmap {
-	if x, ok := m.GetElement().(*OfpHelloElemHeader_Versionbitmap); ok {
-		return x.Versionbitmap
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpHelloElemHeader_Versionbitmap)(nil),
-	}
-}
-
 // Version bitmap Hello Element
 type OfpHelloElemVersionbitmap struct {
-	Bitmaps              []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Bitmaps       []uint32               `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"` // List of bitmaps - supported versions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHelloElemVersionbitmap) Reset()         { *m = OfpHelloElemVersionbitmap{} }
-func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
-func (*OfpHelloElemVersionbitmap) ProtoMessage()    {}
+func (x *OfpHelloElemVersionbitmap) Reset() {
+	*x = OfpHelloElemVersionbitmap{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHelloElemVersionbitmap) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHelloElemVersionbitmap) ProtoMessage() {}
+
+func (x *OfpHelloElemVersionbitmap) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHelloElemVersionbitmap.ProtoReflect.Descriptor instead.
 func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{2}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *OfpHelloElemVersionbitmap) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Unmarshal(m, b)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Marshal(b, m, deterministic)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(m, src)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_Size() int {
-	return xxx_messageInfo_OfpHelloElemVersionbitmap.Size(m)
-}
-func (m *OfpHelloElemVersionbitmap) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHelloElemVersionbitmap proto.InternalMessageInfo
-
-func (m *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
-	if m != nil {
-		return m.Bitmaps
+func (x *OfpHelloElemVersionbitmap) GetBitmaps() []uint32 {
+	if x != nil {
+		return x.Bitmaps
 	}
 	return nil
 }
@@ -2534,604 +3715,681 @@
 // variable size. Unknown elements types must be ignored/skipped, to allow
 // for future extensions.
 type OfpHello struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Hello element list
-	Elements             []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Elements      []*OfpHelloElemHeader `protobuf:"bytes,1,rep,name=elements,proto3" json:"elements,omitempty"` // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpHello) Reset()         { *m = OfpHello{} }
-func (m *OfpHello) String() string { return proto.CompactTextString(m) }
-func (*OfpHello) ProtoMessage()    {}
+func (x *OfpHello) Reset() {
+	*x = OfpHello{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpHello) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpHello) ProtoMessage() {}
+
+func (x *OfpHello) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpHello.ProtoReflect.Descriptor instead.
 func (*OfpHello) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{3}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *OfpHello) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpHello.Unmarshal(m, b)
-}
-func (m *OfpHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpHello.Marshal(b, m, deterministic)
-}
-func (m *OfpHello) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHello.Merge(m, src)
-}
-func (m *OfpHello) XXX_Size() int {
-	return xxx_messageInfo_OfpHello.Size(m)
-}
-func (m *OfpHello) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpHello.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpHello proto.InternalMessageInfo
-
-func (m *OfpHello) GetElements() []*OfpHelloElemHeader {
-	if m != nil {
-		return m.Elements
+func (x *OfpHello) GetElements() []*OfpHelloElemHeader {
+	if x != nil {
+		return x.Elements
 	}
 	return nil
 }
 
 // Switch configuration.
 type OfpSwitchConfig struct {
-	//ofp_header header;
-	Flags                uint32   `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
-	MissSendLen          uint32   `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Flags         uint32 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"` // Bitmap of OFPC_* flags.
+	MissSendLen   uint32 `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchConfig) Reset()         { *m = OfpSwitchConfig{} }
-func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchConfig) ProtoMessage()    {}
+func (x *OfpSwitchConfig) Reset() {
+	*x = OfpSwitchConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchConfig) ProtoMessage() {}
+
+func (x *OfpSwitchConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchConfig.ProtoReflect.Descriptor instead.
 func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{4}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *OfpSwitchConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchConfig.Unmarshal(m, b)
-}
-func (m *OfpSwitchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchConfig.Merge(m, src)
-}
-func (m *OfpSwitchConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchConfig.Size(m)
-}
-func (m *OfpSwitchConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchConfig proto.InternalMessageInfo
-
-func (m *OfpSwitchConfig) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
+func (x *OfpSwitchConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
 	}
 	return 0
 }
 
-func (m *OfpSwitchConfig) GetMissSendLen() uint32 {
-	if m != nil {
-		return m.MissSendLen
+func (x *OfpSwitchConfig) GetMissSendLen() uint32 {
+	if x != nil {
+		return x.MissSendLen
 	}
 	return 0
 }
 
 // Configure/Modify behavior of a flow table
 type OfpTableMod struct {
-	//ofp_header header;
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Config               uint32   `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // ID of the table, OFPTT_ALL indicates all tables
+	Config        uint32 `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`                  // Bitmap of OFPTC_* flags
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpTableMod) Reset()         { *m = OfpTableMod{} }
-func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
-func (*OfpTableMod) ProtoMessage()    {}
+func (x *OfpTableMod) Reset() {
+	*x = OfpTableMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableMod) ProtoMessage() {}
+
+func (x *OfpTableMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableMod.ProtoReflect.Descriptor instead.
 func (*OfpTableMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{5}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *OfpTableMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableMod.Unmarshal(m, b)
-}
-func (m *OfpTableMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableMod.Marshal(b, m, deterministic)
-}
-func (m *OfpTableMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableMod.Merge(m, src)
-}
-func (m *OfpTableMod) XXX_Size() int {
-	return xxx_messageInfo_OfpTableMod.Size(m)
-}
-func (m *OfpTableMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableMod proto.InternalMessageInfo
-
-func (m *OfpTableMod) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
+func (x *OfpTableMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
 	}
 	return 0
 }
 
-func (m *OfpTableMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpTableMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
 // Description of a port
 type OfpPort struct {
-	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
-	Name   string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
-	Config uint32   `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`
-	State  uint32   `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`
+	state  protoimpl.MessageState `protogen:"open.v1"`
+	PortNo uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	HwAddr []uint32               `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` // [OFP_ETH_ALEN];
+	Name   string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`                           // Null-terminated
+	Config uint32                 `protobuf:"varint,4,opt,name=config,proto3" json:"config,omitempty"`                      // Bitmap of OFPPC_* flags.
+	State  uint32                 `protobuf:"varint,5,opt,name=state,proto3" json:"state,omitempty"`                        // Bitmap of OFPPS_* flags.
 	// Bitmaps of OFPPF_* that describe features.  All bits zeroed if
 	// unsupported or unavailable.
-	Curr                 uint32   `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`
-	Advertised           uint32   `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`
-	Supported            uint32   `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`
-	Peer                 uint32   `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`
-	CurrSpeed            uint32   `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"`
-	MaxSpeed             uint32   `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Curr          uint32 `protobuf:"varint,6,opt,name=curr,proto3" json:"curr,omitempty"`                             // Current features.
+	Advertised    uint32 `protobuf:"varint,7,opt,name=advertised,proto3" json:"advertised,omitempty"`                 // Features being advertised by the port.
+	Supported     uint32 `protobuf:"varint,8,opt,name=supported,proto3" json:"supported,omitempty"`                   // Features supported by the port.
+	Peer          uint32 `protobuf:"varint,9,opt,name=peer,proto3" json:"peer,omitempty"`                             // Features advertised by peer.
+	CurrSpeed     uint32 `protobuf:"varint,10,opt,name=curr_speed,json=currSpeed,proto3" json:"curr_speed,omitempty"` // Current port bitrate in kbps.
+	MaxSpeed      uint32 `protobuf:"varint,11,opt,name=max_speed,json=maxSpeed,proto3" json:"max_speed,omitempty"`    // Max port bitrate in kbps
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPort) Reset()         { *m = OfpPort{} }
-func (m *OfpPort) String() string { return proto.CompactTextString(m) }
-func (*OfpPort) ProtoMessage()    {}
+func (x *OfpPort) Reset() {
+	*x = OfpPort{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPort) ProtoMessage() {}
+
+func (x *OfpPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPort.ProtoReflect.Descriptor instead.
 func (*OfpPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{6}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *OfpPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPort.Unmarshal(m, b)
-}
-func (m *OfpPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPort.Marshal(b, m, deterministic)
-}
-func (m *OfpPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPort.Merge(m, src)
-}
-func (m *OfpPort) XXX_Size() int {
-	return xxx_messageInfo_OfpPort.Size(m)
-}
-func (m *OfpPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPort proto.InternalMessageInfo
-
-func (m *OfpPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPort) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPort) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPort) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *OfpPort) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *OfpPort) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPort) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPort) GetState() uint32 {
-	if m != nil {
-		return m.State
+func (x *OfpPort) GetState() uint32 {
+	if x != nil {
+		return x.State
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurr() uint32 {
-	if m != nil {
-		return m.Curr
+func (x *OfpPort) GetCurr() uint32 {
+	if x != nil {
+		return x.Curr
 	}
 	return 0
 }
 
-func (m *OfpPort) GetAdvertised() uint32 {
-	if m != nil {
-		return m.Advertised
+func (x *OfpPort) GetAdvertised() uint32 {
+	if x != nil {
+		return x.Advertised
 	}
 	return 0
 }
 
-func (m *OfpPort) GetSupported() uint32 {
-	if m != nil {
-		return m.Supported
+func (x *OfpPort) GetSupported() uint32 {
+	if x != nil {
+		return x.Supported
 	}
 	return 0
 }
 
-func (m *OfpPort) GetPeer() uint32 {
-	if m != nil {
-		return m.Peer
+func (x *OfpPort) GetPeer() uint32 {
+	if x != nil {
+		return x.Peer
 	}
 	return 0
 }
 
-func (m *OfpPort) GetCurrSpeed() uint32 {
-	if m != nil {
-		return m.CurrSpeed
+func (x *OfpPort) GetCurrSpeed() uint32 {
+	if x != nil {
+		return x.CurrSpeed
 	}
 	return 0
 }
 
-func (m *OfpPort) GetMaxSpeed() uint32 {
-	if m != nil {
-		return m.MaxSpeed
+func (x *OfpPort) GetMaxSpeed() uint32 {
+	if x != nil {
+		return x.MaxSpeed
 	}
 	return 0
 }
 
 // Switch features.
 type OfpSwitchFeatures struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	DatapathId  uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
-	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`
-	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`
-	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"`
+	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`          // Max packets buffered at once.
+	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`             // Number of tables supported by datapath.
+	AuxiliaryId uint32 `protobuf:"varint,4,opt,name=auxiliary_id,json=auxiliaryId,proto3" json:"auxiliary_id,omitempty"` // Identify auxiliary connections
 	// Features.
-	Capabilities         uint32   `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Capabilities  uint32 `protobuf:"varint,5,opt,name=capabilities,proto3" json:"capabilities,omitempty"` // Bitmap of support "ofp_capabilities".
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpSwitchFeatures) Reset()         { *m = OfpSwitchFeatures{} }
-func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpSwitchFeatures) ProtoMessage()    {}
+func (x *OfpSwitchFeatures) Reset() {
+	*x = OfpSwitchFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpSwitchFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpSwitchFeatures) ProtoMessage() {}
+
+func (x *OfpSwitchFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpSwitchFeatures.ProtoReflect.Descriptor instead.
 func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{7}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *OfpSwitchFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpSwitchFeatures.Unmarshal(m, b)
-}
-func (m *OfpSwitchFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpSwitchFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchFeatures.Merge(m, src)
-}
-func (m *OfpSwitchFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpSwitchFeatures.Size(m)
-}
-func (m *OfpSwitchFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpSwitchFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpSwitchFeatures proto.InternalMessageInfo
-
-func (m *OfpSwitchFeatures) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *OfpSwitchFeatures) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNBuffers() uint32 {
-	if m != nil {
-		return m.NBuffers
+func (x *OfpSwitchFeatures) GetNBuffers() uint32 {
+	if x != nil {
+		return x.NBuffers
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetNTables() uint32 {
-	if m != nil {
-		return m.NTables
+func (x *OfpSwitchFeatures) GetNTables() uint32 {
+	if x != nil {
+		return x.NTables
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
-	if m != nil {
-		return m.AuxiliaryId
+func (x *OfpSwitchFeatures) GetAuxiliaryId() uint32 {
+	if x != nil {
+		return x.AuxiliaryId
 	}
 	return 0
 }
 
-func (m *OfpSwitchFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
+func (x *OfpSwitchFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
 	}
 	return 0
 }
 
 // A physical port has changed in the datapath
 type OfpPortStatus struct {
-	//ofp_header header;
-	Reason               OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
-	Desc                 *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Reason        OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"` // One of OFPPR_*.
+	Desc          *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortStatus) Reset()         { *m = OfpPortStatus{} }
-func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatus) ProtoMessage()    {}
+func (x *OfpPortStatus) Reset() {
+	*x = OfpPortStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatus) ProtoMessage() {}
+
+func (x *OfpPortStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatus.ProtoReflect.Descriptor instead.
 func (*OfpPortStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{8}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *OfpPortStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatus.Unmarshal(m, b)
-}
-func (m *OfpPortStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatus.Merge(m, src)
-}
-func (m *OfpPortStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatus.Size(m)
-}
-func (m *OfpPortStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatus proto.InternalMessageInfo
-
-func (m *OfpPortStatus) GetReason() OfpPortReason {
-	if m != nil {
-		return m.Reason
+func (x *OfpPortStatus) GetReason() OfpPortReason {
+	if x != nil {
+		return x.Reason
 	}
 	return OfpPortReason_OFPPR_ADD
 }
 
-func (m *OfpPortStatus) GetDesc() *OfpPort {
-	if m != nil {
-		return m.Desc
+func (x *OfpPortStatus) GetDesc() *OfpPort {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
 // A physical device has changed in the datapath
 type OfpDeviceStatus struct {
-	//ofp_header header;
-	Status               OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Status        OfpDeviceConnection `protobuf:"varint,1,opt,name=status,proto3,enum=openflow_13.OfpDeviceConnection" json:"status,omitempty"` // One of OFPDEV_*.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpDeviceStatus) Reset()         { *m = OfpDeviceStatus{} }
-func (m *OfpDeviceStatus) String() string { return proto.CompactTextString(m) }
-func (*OfpDeviceStatus) ProtoMessage()    {}
+func (x *OfpDeviceStatus) Reset() {
+	*x = OfpDeviceStatus{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDeviceStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDeviceStatus) ProtoMessage() {}
+
+func (x *OfpDeviceStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDeviceStatus.ProtoReflect.Descriptor instead.
 func (*OfpDeviceStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{9}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OfpDeviceStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDeviceStatus.Unmarshal(m, b)
-}
-func (m *OfpDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDeviceStatus.Marshal(b, m, deterministic)
-}
-func (m *OfpDeviceStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDeviceStatus.Merge(m, src)
-}
-func (m *OfpDeviceStatus) XXX_Size() int {
-	return xxx_messageInfo_OfpDeviceStatus.Size(m)
-}
-func (m *OfpDeviceStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDeviceStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDeviceStatus proto.InternalMessageInfo
-
-func (m *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
-	if m != nil {
-		return m.Status
+func (x *OfpDeviceStatus) GetStatus() OfpDeviceConnection {
+	if x != nil {
+		return x.Status
 	}
 	return OfpDeviceConnection_OFPDEV_CONNECTED
 }
 
 // Modify behavior of the physical port
 type OfpPortMod struct {
-	//ofp_header header;
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
 	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
+	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"` //[OFP_ETH_ALEN];
 	// The hardware address is not
-	//configurable.  This is used to
-	//sanity-check the request, so it must
-	//be the same as returned in an
-	//ofp_port struct.
-	Config               uint32   `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"`
-	Mask                 uint32   `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`
-	Advertise            uint32   `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// configurable.  This is used to
+	// sanity-check the request, so it must
+	// be the same as returned in an
+	// ofp_port struct.
+	Config        uint32 `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"` // Bitmap of OFPPC_* flags.
+	Mask          uint32 `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`     // Bitmap of OFPPC_* flags to be changed.
+	Advertise     uint32 `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpPortMod) Reset()         { *m = OfpPortMod{} }
-func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
-func (*OfpPortMod) ProtoMessage()    {}
+func (x *OfpPortMod) Reset() {
+	*x = OfpPortMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortMod) ProtoMessage() {}
+
+func (x *OfpPortMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortMod.ProtoReflect.Descriptor instead.
 func (*OfpPortMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{10}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OfpPortMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortMod.Unmarshal(m, b)
-}
-func (m *OfpPortMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortMod.Marshal(b, m, deterministic)
-}
-func (m *OfpPortMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortMod.Merge(m, src)
-}
-func (m *OfpPortMod) XXX_Size() int {
-	return xxx_messageInfo_OfpPortMod.Size(m)
-}
-func (m *OfpPortMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortMod proto.InternalMessageInfo
-
-func (m *OfpPortMod) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *OfpPortMod) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetHwAddr() []uint32 {
-	if m != nil {
-		return m.HwAddr
+func (x *OfpPortMod) GetHwAddr() []uint32 {
+	if x != nil {
+		return x.HwAddr
 	}
 	return nil
 }
 
-func (m *OfpPortMod) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
+func (x *OfpPortMod) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetMask() uint32 {
-	if m != nil {
-		return m.Mask
+func (x *OfpPortMod) GetMask() uint32 {
+	if x != nil {
+		return x.Mask
 	}
 	return 0
 }
 
-func (m *OfpPortMod) GetAdvertise() uint32 {
-	if m != nil {
-		return m.Advertise
+func (x *OfpPortMod) GetAdvertise() uint32 {
+	if x != nil {
+		return x.Advertise
 	}
 	return 0
 }
 
 // Fields to match against flows
 type OfpMatch struct {
-	Type                 OfpMatchType   `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"`
-	OxmFields            []*OfpOxmField `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpMatchType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMatchType" json:"type,omitempty"` // One of OFPMT_*
+	OxmFields     []*OfpOxmField         `protobuf:"bytes,2,rep,name=oxm_fields,json=oxmFields,proto3" json:"oxm_fields,omitempty"`     // 0 or more
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpMatch) Reset()         { *m = OfpMatch{} }
-func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
-func (*OfpMatch) ProtoMessage()    {}
+func (x *OfpMatch) Reset() {
+	*x = OfpMatch{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMatch) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMatch) ProtoMessage() {}
+
+func (x *OfpMatch) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMatch.ProtoReflect.Descriptor instead.
 func (*OfpMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{11}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *OfpMatch) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMatch.Unmarshal(m, b)
-}
-func (m *OfpMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMatch.Marshal(b, m, deterministic)
-}
-func (m *OfpMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMatch.Merge(m, src)
-}
-func (m *OfpMatch) XXX_Size() int {
-	return xxx_messageInfo_OfpMatch.Size(m)
-}
-func (m *OfpMatch) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMatch.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMatch proto.InternalMessageInfo
-
-func (m *OfpMatch) GetType() OfpMatchType {
-	if m != nil {
-		return m.Type
+func (x *OfpMatch) GetType() OfpMatchType {
+	if x != nil {
+		return x.Type
 	}
 	return OfpMatchType_OFPMT_STANDARD
 }
 
-func (m *OfpMatch) GetOxmFields() []*OfpOxmField {
-	if m != nil {
-		return m.OxmFields
+func (x *OfpMatch) GetOxmFields() []*OfpOxmField {
+	if x != nil {
+		return x.OxmFields
 	}
 	return nil
 }
 
 // OXM Flow match fields
 type OfpOxmField struct {
-	OxmClass OfpOxmClass `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
+	state    protoimpl.MessageState `protogen:"open.v1"`
+	OxmClass OfpOxmClass            `protobuf:"varint,1,opt,name=oxm_class,json=oxmClass,proto3,enum=openflow_13.OfpOxmClass" json:"oxm_class,omitempty"`
 	// Types that are valid to be assigned to Field:
+	//
 	//	*OfpOxmField_OfbField
 	//	*OfpOxmField_ExperimenterField
-	Field                isOfpOxmField_Field `protobuf_oneof:"field"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	Field         isOfpOxmField_Field `protobuf_oneof:"field"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmField) Reset()         { *m = OfpOxmField{} }
-func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmField) ProtoMessage()    {}
+func (x *OfpOxmField) Reset() {
+	*x = OfpOxmField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmField) ProtoMessage() {}
+
+func (x *OfpOxmField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmField.ProtoReflect.Descriptor instead.
 func (*OfpOxmField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{12}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *OfpOxmField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmField.Unmarshal(m, b)
-}
-func (m *OfpOxmField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmField.Merge(m, src)
-}
-func (m *OfpOxmField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmField.Size(m)
-}
-func (m *OfpOxmField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmField proto.InternalMessageInfo
-
-func (m *OfpOxmField) GetOxmClass() OfpOxmClass {
-	if m != nil {
-		return m.OxmClass
+func (x *OfpOxmField) GetOxmClass() OfpOxmClass {
+	if x != nil {
+		return x.OxmClass
 	}
 	return OfpOxmClass_OFPXMC_NXM_0
 }
 
+func (x *OfpOxmField) GetField() isOfpOxmField_Field {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetOfbField() *OfpOxmOfbField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_OfbField); ok {
+			return x.OfbField
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
+	if x != nil {
+		if x, ok := x.Field.(*OfpOxmField_ExperimenterField); ok {
+			return x.ExperimenterField
+		}
+	}
+	return nil
+}
+
 type isOfpOxmField_Field interface {
 	isOfpOxmField_Field()
 }
 
 type OfpOxmField_OfbField struct {
+	// 2 and 3 reserved for NXM_0 and NXM-1 OXM classes
 	OfbField *OfpOxmOfbField `protobuf:"bytes,4,opt,name=ofb_field,json=ofbField,proto3,oneof"`
 }
 
@@ -3143,40 +4401,13 @@
 
 func (*OfpOxmField_ExperimenterField) isOfpOxmField_Field() {}
 
-func (m *OfpOxmField) GetField() isOfpOxmField_Field {
-	if m != nil {
-		return m.Field
-	}
-	return nil
-}
-
-func (m *OfpOxmField) GetOfbField() *OfpOxmOfbField {
-	if x, ok := m.GetField().(*OfpOxmField_OfbField); ok {
-		return x.OfbField
-	}
-	return nil
-}
-
-func (m *OfpOxmField) GetExperimenterField() *OfpOxmExperimenterField {
-	if x, ok := m.GetField().(*OfpOxmField_ExperimenterField); ok {
-		return x.ExperimenterField
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OfpOxmField_OfbField)(nil),
-		(*OfpOxmField_ExperimenterField)(nil),
-	}
-}
-
 // OXM OpenFlow Basic Match Field
 type OfpOxmOfbField struct {
-	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
-	HasMask bool             `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
+	state   protoimpl.MessageState `protogen:"open.v1"`
+	Type    OxmOfbFieldTypes       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
+	HasMask bool                   `protobuf:"varint,2,opt,name=has_mask,json=hasMask,proto3" json:"has_mask,omitempty"`
 	// Types that are valid to be assigned to Value:
+	//
 	//	*OfpOxmOfbField_Port
 	//	*OfpOxmOfbField_PhysicalPort
 	//	*OfpOxmOfbField_TableMetadata
@@ -3219,8 +4450,8 @@
 	//	*OfpOxmOfbField_Ipv6Exthdr
 	Value isOfpOxmOfbField_Value `protobuf_oneof:"value"`
 	// Optional mask values (must be present when has_mask is true
-	//
 	// Types that are valid to be assigned to Mask:
+	//
 	//	*OfpOxmOfbField_TableMetadataMask
 	//	*OfpOxmOfbField_EthDstMask
 	//	*OfpOxmOfbField_EthSrcMask
@@ -3235,213 +4466,774 @@
 	//	*OfpOxmOfbField_PbbIsidMask
 	//	*OfpOxmOfbField_TunnelIdMask
 	//	*OfpOxmOfbField_Ipv6ExthdrMask
-	Mask                 isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Mask          isOfpOxmOfbField_Mask `protobuf_oneof:"mask"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OfpOxmOfbField) Reset()         { *m = OfpOxmOfbField{} }
-func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmOfbField) ProtoMessage()    {}
+func (x *OfpOxmOfbField) Reset() {
+	*x = OfpOxmOfbField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmOfbField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmOfbField) ProtoMessage() {}
+
+func (x *OfpOxmOfbField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmOfbField.ProtoReflect.Descriptor instead.
 func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{13}
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *OfpOxmOfbField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmOfbField.Unmarshal(m, b)
-}
-func (m *OfpOxmOfbField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmOfbField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmOfbField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmOfbField.Merge(m, src)
-}
-func (m *OfpOxmOfbField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmOfbField.Size(m)
-}
-func (m *OfpOxmOfbField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmOfbField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmOfbField proto.InternalMessageInfo
-
-func (m *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
-	if m != nil {
-		return m.Type
+func (x *OfpOxmOfbField) GetType() OxmOfbFieldTypes {
+	if x != nil {
+		return x.Type
 	}
 	return OxmOfbFieldTypes_OFPXMT_OFB_IN_PORT
 }
 
-func (m *OfpOxmOfbField) GetHasMask() bool {
-	if m != nil {
-		return m.HasMask
+func (x *OfpOxmOfbField) GetHasMask() bool {
+	if x != nil {
+		return x.HasMask
 	}
 	return false
 }
 
+func (x *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Port); ok {
+			return x.Port
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPhysicalPort() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PhysicalPort); ok {
+			return x.PhysicalPort
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTableMetadata() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TableMetadata); ok {
+			return x.TableMetadata
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthDst); ok {
+			return x.EthDst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrc() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthSrc); ok {
+			return x.EthSrc
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthType() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_EthType); ok {
+			return x.EthType
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanVid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanVid); ok {
+			return x.VlanVid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetVlanPcp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_VlanPcp); ok {
+			return x.VlanPcp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpDscp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpDscp); ok {
+			return x.IpDscp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpEcn() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpEcn); ok {
+			return x.IpEcn
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpProto() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_IpProto); ok {
+			return x.IpProto
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Src() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Src); ok {
+			return x.Ipv4Src
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4Dst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv4Dst); ok {
+			return x.Ipv4Dst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpSrc); ok {
+			return x.TcpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTcpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TcpDst); ok {
+			return x.TcpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpSrc); ok {
+			return x.UdpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetUdpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_UdpDst); ok {
+			return x.UdpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpSrc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpSrc); ok {
+			return x.SctpSrc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetSctpDst() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_SctpDst); ok {
+			return x.SctpDst
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Type); ok {
+			return x.Icmpv4Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv4Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv4Code); ok {
+			return x.Icmpv4Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpOp() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpOp); ok {
+			return x.ArpOp
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSpa); ok {
+			return x.ArpSpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpa() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTpa); ok {
+			return x.ArpTpa
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpSha); ok {
+			return x.ArpSha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetArpTha() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_ArpTha); ok {
+			return x.ArpTha
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Src() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Src); ok {
+			return x.Ipv6Src
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Dst() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Dst); ok {
+			return x.Ipv6Dst
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6Flabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Flabel); ok {
+			return x.Ipv6Flabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Type() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Type); ok {
+			return x.Icmpv6Type
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIcmpv6Code() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Icmpv6Code); ok {
+			return x.Icmpv6Code
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTarget() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTarget); ok {
+			return x.Ipv6NdTarget
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdSsl() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdSsl); ok {
+			return x.Ipv6NdSsl
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6NdTll() []byte {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6NdTll); ok {
+			return x.Ipv6NdTll
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetMplsLabel() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsLabel); ok {
+			return x.MplsLabel
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsTc() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsTc); ok {
+			return x.MplsTc
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMplsBos() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_MplsBos); ok {
+			return x.MplsBos
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsid() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_PbbIsid); ok {
+			return x.PbbIsid
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelId() uint64 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_TunnelId); ok {
+			return x.TunnelId
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
+	if x != nil {
+		if x, ok := x.Value.(*OfpOxmOfbField_Ipv6Exthdr); ok {
+			return x.Ipv6Exthdr
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
+	if x != nil {
+		return x.Mask
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetTableMetadataMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TableMetadataMask); ok {
+			return x.TableMetadataMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetEthDstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthDstMask); ok {
+			return x.EthDstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetEthSrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_EthSrcMask); ok {
+			return x.EthSrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetVlanVidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_VlanVidMask); ok {
+			return x.VlanVidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4SrcMask); ok {
+			return x.Ipv4SrcMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv4DstMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv4DstMask); ok {
+			return x.Ipv4DstMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpSpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpSpaMask); ok {
+			return x.ArpSpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetArpTpaMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_ArpTpaMask); ok {
+			return x.ArpTpaMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6SrcMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6SrcMask); ok {
+			return x.Ipv6SrcMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6DstMask() []byte {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6DstMask); ok {
+			return x.Ipv6DstMask
+		}
+	}
+	return nil
+}
+
+func (x *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6FlabelMask); ok {
+			return x.Ipv6FlabelMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetPbbIsidMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_PbbIsidMask); ok {
+			return x.PbbIsidMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetTunnelIdMask() uint64 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_TunnelIdMask); ok {
+			return x.TunnelIdMask
+		}
+	}
+	return 0
+}
+
+func (x *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
+	if x != nil {
+		if x, ok := x.Mask.(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
+			return x.Ipv6ExthdrMask
+		}
+	}
+	return 0
+}
+
 type isOfpOxmOfbField_Value interface {
 	isOfpOxmOfbField_Value()
 }
 
 type OfpOxmOfbField_Port struct {
-	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"`
+	// #define OXM_OF_IN_PORT    OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PORT, 4)
+	Port uint32 `protobuf:"varint,3,opt,name=port,proto3,oneof"` // Used for OFPXMT_OFB_IN_PORT
 }
 
 type OfpOxmOfbField_PhysicalPort struct {
-	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"`
+	// #define OXM_OF_IN_PHY_PORT OXM_HEADER  (0x8000, OFPXMT_OFB_IN_PHY_PORT, 4)
+	PhysicalPort uint32 `protobuf:"varint,4,opt,name=physical_port,json=physicalPort,proto3,oneof"` // Used for OFPXMT_OF_IN_PHY_PORT
 }
 
 type OfpOxmOfbField_TableMetadata struct {
-	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"`
+	// #define OXM_OF_METADATA   OXM_HEADER  (0x8000, OFPXMT_OFB_METADATA, 8)
+	// #define OXM_OF_METADATA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_METADATA, 8)
+	TableMetadata uint64 `protobuf:"varint,5,opt,name=table_metadata,json=tableMetadata,proto3,oneof"` // Used for OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDst struct {
-	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"`
+	// #define OXM_OF_ETH_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_DST, 6)
+	// #define OXM_OF_ETH_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	// #define OXM_OF_ETH_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_SRC, 6)
+	EthDst []byte `protobuf:"bytes,6,opt,name=eth_dst,json=ethDst,proto3,oneof"` // Used for OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrc struct {
-	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"`
+	EthSrc []byte `protobuf:"bytes,7,opt,name=eth_src,json=ethSrc,proto3,oneof"` // Used for OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthType struct {
-	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"`
+	// #define OXM_OF_ETH_TYPE   OXM_HEADER  (0x8000, OFPXMT_OFB_ETH_TYPE,2)
+	EthType uint32 `protobuf:"varint,8,opt,name=eth_type,json=ethType,proto3,oneof"` // Used for OFPXMT_OFB_ETH_TYPE
 }
 
 type OfpOxmOfbField_VlanVid struct {
-	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"`
+	// #define OXM_OF_VLAN_VID   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	// #define OXM_OF_VLAN_VID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_VLAN_VID, 2)
+	VlanVid uint32 `protobuf:"varint,9,opt,name=vlan_vid,json=vlanVid,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_VlanPcp struct {
-	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"`
+	// #define OXM_OF_VLAN_PCP   OXM_HEADER  (0x8000, OFPXMT_OFB_VLAN_PCP, 1)
+	VlanPcp uint32 `protobuf:"varint,10,opt,name=vlan_pcp,json=vlanPcp,proto3,oneof"` // Used for OFPXMT_OFB_VLAN_PCP
 }
 
 type OfpOxmOfbField_IpDscp struct {
-	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"`
+	// #define OXM_OF_IP_DSCP     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_DSCP, 1)
+	IpDscp uint32 `protobuf:"varint,11,opt,name=ip_dscp,json=ipDscp,proto3,oneof"` // Used for OFPXMT_OFB_IP_DSCP
 }
 
 type OfpOxmOfbField_IpEcn struct {
-	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"`
+	// #define OXM_OF_IP_ECN     OXM_HEADER  (0x8000, OFPXMT_OFB_IP_ECN, 1)
+	IpEcn uint32 `protobuf:"varint,12,opt,name=ip_ecn,json=ipEcn,proto3,oneof"` // Used for OFPXMT_OFB_IP_ECN
 }
 
 type OfpOxmOfbField_IpProto struct {
-	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"`
+	// #define OXM_OF_IP_PROTO   OXM_HEADER  (0x8000, OFPXMT_OFB_IP_PROTO, 1)
+	IpProto uint32 `protobuf:"varint,13,opt,name=ip_proto,json=ipProto,proto3,oneof"` // Used for OFPXMT_OFB_IP_PROTO
 }
 
 type OfpOxmOfbField_Ipv4Src struct {
-	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"`
+	// #define OXM_OF_IPV4_SRC     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_SRC_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_SRC, 4)
+	// #define OXM_OF_IPV4_DST     OXM_HEADER  (0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	// #define OXM_OF_IPV4_DST_W   OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_DST, 4)
+	Ipv4Src uint32 `protobuf:"varint,14,opt,name=ipv4_src,json=ipv4Src,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4Dst struct {
-	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"`
+	Ipv4Dst uint32 `protobuf:"varint,15,opt,name=ipv4_dst,json=ipv4Dst,proto3,oneof"` // Used for OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_TcpSrc struct {
-	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"`
+	// #define OXM_OF_TCP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_SRC, 2)
+	// #define OXM_OF_TCP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_TCP_DST, 2)
+	TcpSrc uint32 `protobuf:"varint,16,opt,name=tcp_src,json=tcpSrc,proto3,oneof"` // Used for OFPXMT_OFB_TCP_SRC
 }
 
 type OfpOxmOfbField_TcpDst struct {
-	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"`
+	TcpDst uint32 `protobuf:"varint,17,opt,name=tcp_dst,json=tcpDst,proto3,oneof"` // Used for OFPXMT_OFB_TCP_DST
 }
 
 type OfpOxmOfbField_UdpSrc struct {
-	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"`
+	// #define OXM_OF_UDP_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_SRC, 2)
+	// #define OXM_OF_UDP_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_UDP_DST, 2)
+	UdpSrc uint32 `protobuf:"varint,18,opt,name=udp_src,json=udpSrc,proto3,oneof"` // Used for OFPXMT_OFB_UDP_SRC
 }
 
 type OfpOxmOfbField_UdpDst struct {
-	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"`
+	UdpDst uint32 `protobuf:"varint,19,opt,name=udp_dst,json=udpDst,proto3,oneof"` // Used for OFPXMT_OFB_UDP_DST
 }
 
 type OfpOxmOfbField_SctpSrc struct {
-	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"`
+	// #define OXM_OF_SCTP_SRC   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_SRC, 2)
+	// #define OXM_OF_SCTP_DST   OXM_HEADER  (0x8000, OFPXMT_OFB_SCTP_DST, 2)
+	SctpSrc uint32 `protobuf:"varint,20,opt,name=sctp_src,json=sctpSrc,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_SRC
 }
 
 type OfpOxmOfbField_SctpDst struct {
-	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"`
+	SctpDst uint32 `protobuf:"varint,21,opt,name=sctp_dst,json=sctpDst,proto3,oneof"` // Used for OFPXMT_OFB_SCTP_DST
 }
 
 type OfpOxmOfbField_Icmpv4Type struct {
-	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV4_TYPE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_TYPE, 1)
+	// #define OXM_OF_ICMPV4_CODE  OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV4_CODE, 1)
+	Icmpv4Type uint32 `protobuf:"varint,22,opt,name=icmpv4_type,json=icmpv4Type,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_TYPE
 }
 
 type OfpOxmOfbField_Icmpv4Code struct {
-	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"`
+	Icmpv4Code uint32 `protobuf:"varint,23,opt,name=icmpv4_code,json=icmpv4Code,proto3,oneof"` // Used for OFPXMT_OFB_ICMPV4_CODE
 }
 
 type OfpOxmOfbField_ArpOp struct {
-	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"`
+	// #define OXM_OF_ARP_OP     OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_OP, 2)
+	ArpOp uint32 `protobuf:"varint,24,opt,name=arp_op,json=arpOp,proto3,oneof"` // Used for OFPXMT_OFB_ARP_OP
 }
 
 type OfpOxmOfbField_ArpSpa struct {
-	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"`
+	// #define OXM_OF_ARP_SPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_SPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_SPA, 4)
+	// #define OXM_OF_ARP_TPA    OXM_HEADER  (0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	// #define OXM_OF_ARP_TPA_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_TPA, 4)
+	ArpSpa uint32 `protobuf:"varint,25,opt,name=arp_spa,json=arpSpa,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpa struct {
-	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"`
+	ArpTpa uint32 `protobuf:"varint,26,opt,name=arp_tpa,json=arpTpa,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_ArpSha struct {
-	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"`
+	// #define OXM_OF_ARP_SHA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_SHA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_SHA, 6)
+	// #define OXM_OF_ARP_THA    OXM_HEADER   (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	// #define OXM_OF_ARP_THA_W  OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_THA, 6)
+	ArpSha []byte `protobuf:"bytes,27,opt,name=arp_sha,json=arpSha,proto3,oneof"` // For OFPXMT_OFB_ARP_SHA (6 bytes)
 }
 
 type OfpOxmOfbField_ArpTha struct {
-	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"`
+	ArpTha []byte `protobuf:"bytes,28,opt,name=arp_tha,json=arpTha,proto3,oneof"` // For OFPXMT_OFB_ARP_THA (6 bytes)
 }
 
 type OfpOxmOfbField_Ipv6Src struct {
-	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"`
+	// #define OXM_OF_IPV6_SRC    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_SRC_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_SRC, 16)
+	// #define OXM_OF_IPV6_DST    OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	// #define OXM_OF_IPV6_DST_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_DST, 16)
+	Ipv6Src []byte `protobuf:"bytes,29,opt,name=ipv6_src,json=ipv6Src,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6Dst struct {
-	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"`
+	Ipv6Dst []byte `protobuf:"bytes,30,opt,name=ipv6_dst,json=ipv6Dst,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6Flabel struct {
-	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"`
+	// #define OXM_OF_IPV6_FLABEL   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	// #define OXM_OF_IPV6_FLABEL_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
+	Ipv6Flabel uint32 `protobuf:"varint,31,opt,name=ipv6_flabel,json=ipv6Flabel,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_Icmpv6Type struct {
-	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"`
+	// #define OXM_OF_ICMPV6_TYPE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_TYPE, 1)
+	// #define OXM_OF_ICMPV6_CODE OXM_HEADER  (0x8000, OFPXMT_OFB_ICMPV6_CODE, 1)
+	Icmpv6Type uint32 `protobuf:"varint,32,opt,name=icmpv6_type,json=icmpv6Type,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_TYPE
 }
 
 type OfpOxmOfbField_Icmpv6Code struct {
-	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"`
+	Icmpv6Code uint32 `protobuf:"varint,33,opt,name=icmpv6_code,json=icmpv6Code,proto3,oneof"` // For OFPXMT_OFB_ICMPV6_CODE
 }
 
 type OfpOxmOfbField_Ipv6NdTarget struct {
-	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"`
+	//	#define OXM_OF_IPV6_ND_TARGET OXM_HEADER \
+	//	   (0x8000, OFPXMT_OFB_IPV6_ND_TARGET, 16)
+	Ipv6NdTarget []byte `protobuf:"bytes,34,opt,name=ipv6_nd_target,json=ipv6NdTarget,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TARGET
 }
 
 type OfpOxmOfbField_Ipv6NdSsl struct {
-	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_SLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_SLL, 6)
+	Ipv6NdSsl []byte `protobuf:"bytes,35,opt,name=ipv6_nd_ssl,json=ipv6NdSsl,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_SLL
 }
 
 type OfpOxmOfbField_Ipv6NdTll struct {
-	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"`
+	// #define OXM_OF_IPV6_ND_TLL  OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_ND_TLL, 6)
+	Ipv6NdTll []byte `protobuf:"bytes,36,opt,name=ipv6_nd_tll,json=ipv6NdTll,proto3,oneof"` // For OFPXMT_OFB_IPV6_ND_TLL
 }
 
 type OfpOxmOfbField_MplsLabel struct {
-	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"`
+	// #define OXM_OF_MPLS_LABEL  OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_LABEL, 4)
+	MplsLabel uint32 `protobuf:"varint,37,opt,name=mpls_label,json=mplsLabel,proto3,oneof"` // For OFPXMT_OFB_MPLS_LABEL
 }
 
 type OfpOxmOfbField_MplsTc struct {
-	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"`
+	// #define OXM_OF_MPLS_TC     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_TC, 1)
+	MplsTc uint32 `protobuf:"varint,38,opt,name=mpls_tc,json=mplsTc,proto3,oneof"` // For OFPXMT_OFB_MPLS_TC
 }
 
 type OfpOxmOfbField_MplsBos struct {
-	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"`
+	// #define OXM_OF_MPLS_BOS     OXM_HEADER  (0x8000, OFPXMT_OFB_MPLS_BOS, 1)
+	MplsBos uint32 `protobuf:"varint,39,opt,name=mpls_bos,json=mplsBos,proto3,oneof"` // For OFPXMT_OFB_MPLS_BOS
 }
 
 type OfpOxmOfbField_PbbIsid struct {
-	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"`
+	// #define OXM_OF_PBB_ISID   OXM_HEADER  (0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	// #define OXM_OF_PBB_ISID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_PBB_ISID, 3)
+	PbbIsid uint32 `protobuf:"varint,40,opt,name=pbb_isid,json=pbbIsid,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelId struct {
-	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"`
+	// #define OXM_OF_TUNNEL_ID    OXM_HEADER  (0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	// #define OXM_OF_TUNNEL_ID_W  OXM_HEADER_W(0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
+	TunnelId uint64 `protobuf:"varint,41,opt,name=tunnel_id,json=tunnelId,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6Exthdr struct {
-	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"`
+	// #define OXM_OF_IPV6_EXTHDR   OXM_HEADER  (0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	// #define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
+	Ipv6Exthdr uint32 `protobuf:"varint,42,opt,name=ipv6_exthdr,json=ipv6Exthdr,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_Port) isOfpOxmOfbField_Value() {}
@@ -3524,351 +5316,64 @@
 
 func (*OfpOxmOfbField_Ipv6Exthdr) isOfpOxmOfbField_Value() {}
 
-func (m *OfpOxmOfbField) GetValue() isOfpOxmOfbField_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetPort() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Port); ok {
-		return x.Port
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetPhysicalPort() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_PhysicalPort); ok {
-		return x.PhysicalPort
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTableMetadata() uint64 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TableMetadata); ok {
-		return x.TableMetadata
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetEthDst() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthDst); ok {
-		return x.EthDst
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetEthSrc() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthSrc); ok {
-		return x.EthSrc
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetEthType() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_EthType); ok {
-		return x.EthType
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetVlanVid() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanVid); ok {
-		return x.VlanVid
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetVlanPcp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_VlanPcp); ok {
-		return x.VlanPcp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpDscp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpDscp); ok {
-		return x.IpDscp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpEcn() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpEcn); ok {
-		return x.IpEcn
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpProto() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_IpProto); ok {
-		return x.IpProto
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4Src() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Src); ok {
-		return x.Ipv4Src
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4Dst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv4Dst); ok {
-		return x.Ipv4Dst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTcpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpSrc); ok {
-		return x.TcpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTcpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TcpDst); ok {
-		return x.TcpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetUdpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpSrc); ok {
-		return x.UdpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetUdpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_UdpDst); ok {
-		return x.UdpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetSctpSrc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpSrc); ok {
-		return x.SctpSrc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetSctpDst() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_SctpDst); ok {
-		return x.SctpDst
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv4Type() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Type); ok {
-		return x.Icmpv4Type
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv4Code() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv4Code); ok {
-		return x.Icmpv4Code
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpOp() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpOp); ok {
-		return x.ArpOp
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSpa() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSpa); ok {
-		return x.ArpSpa
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpTpa() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTpa); ok {
-		return x.ArpTpa
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSha() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpSha); ok {
-		return x.ArpSha
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetArpTha() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_ArpTha); ok {
-		return x.ArpTha
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Src() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Src); ok {
-		return x.Ipv6Src
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Dst() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Dst); ok {
-		return x.Ipv6Dst
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6Flabel() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Flabel); ok {
-		return x.Ipv6Flabel
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv6Type() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Type); ok {
-		return x.Icmpv6Type
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIcmpv6Code() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Icmpv6Code); ok {
-		return x.Icmpv6Code
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdTarget() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTarget); ok {
-		return x.Ipv6NdTarget
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdSsl() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdSsl); ok {
-		return x.Ipv6NdSsl
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetIpv6NdTll() []byte {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6NdTll); ok {
-		return x.Ipv6NdTll
-	}
-	return nil
-}
-
-func (m *OfpOxmOfbField) GetMplsLabel() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsLabel); ok {
-		return x.MplsLabel
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetMplsTc() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsTc); ok {
-		return x.MplsTc
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetMplsBos() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_MplsBos); ok {
-		return x.MplsBos
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetPbbIsid() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_PbbIsid); ok {
-		return x.PbbIsid
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetTunnelId() uint64 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_TunnelId); ok {
-		return x.TunnelId
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6Exthdr() uint32 {
-	if x, ok := m.GetValue().(*OfpOxmOfbField_Ipv6Exthdr); ok {
-		return x.Ipv6Exthdr
-	}
-	return 0
-}
-
 type isOfpOxmOfbField_Mask interface {
 	isOfpOxmOfbField_Mask()
 }
 
 type OfpOxmOfbField_TableMetadataMask struct {
-	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"`
+	TableMetadataMask uint64 `protobuf:"varint,105,opt,name=table_metadata_mask,json=tableMetadataMask,proto3,oneof"` // For OFPXMT_OFB_METADATA
 }
 
 type OfpOxmOfbField_EthDstMask struct {
-	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"`
+	EthDstMask []byte `protobuf:"bytes,106,opt,name=eth_dst_mask,json=ethDstMask,proto3,oneof"` // For OFPXMT_OFB_ETH_DST (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_EthSrcMask struct {
-	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"`
+	EthSrcMask []byte `protobuf:"bytes,107,opt,name=eth_src_mask,json=ethSrcMask,proto3,oneof"` // For OFPXMT_OFB_ETH_SRC (exactly 6 bytes)
 }
 
 type OfpOxmOfbField_VlanVidMask struct {
-	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"`
+	VlanVidMask uint32 `protobuf:"varint,109,opt,name=vlan_vid_mask,json=vlanVidMask,proto3,oneof"` // For OFPXMT_OFB_VLAN_VID
 }
 
 type OfpOxmOfbField_Ipv4SrcMask struct {
-	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"`
+	Ipv4SrcMask uint32 `protobuf:"varint,114,opt,name=ipv4_src_mask,json=ipv4SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_SRC
 }
 
 type OfpOxmOfbField_Ipv4DstMask struct {
-	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"`
+	Ipv4DstMask uint32 `protobuf:"varint,115,opt,name=ipv4_dst_mask,json=ipv4DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV4_DST
 }
 
 type OfpOxmOfbField_ArpSpaMask struct {
-	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"`
+	ArpSpaMask uint32 `protobuf:"varint,125,opt,name=arp_spa_mask,json=arpSpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_SPA
 }
 
 type OfpOxmOfbField_ArpTpaMask struct {
-	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"`
+	ArpTpaMask uint32 `protobuf:"varint,126,opt,name=arp_tpa_mask,json=arpTpaMask,proto3,oneof"` // For OFPXMT_OFB_ARP_TPA
 }
 
 type OfpOxmOfbField_Ipv6SrcMask struct {
-	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"`
+	Ipv6SrcMask []byte `protobuf:"bytes,129,opt,name=ipv6_src_mask,json=ipv6SrcMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_SRC
 }
 
 type OfpOxmOfbField_Ipv6DstMask struct {
-	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"`
+	Ipv6DstMask []byte `protobuf:"bytes,130,opt,name=ipv6_dst_mask,json=ipv6DstMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_DST
 }
 
 type OfpOxmOfbField_Ipv6FlabelMask struct {
-	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"`
+	Ipv6FlabelMask uint32 `protobuf:"varint,131,opt,name=ipv6_flabel_mask,json=ipv6FlabelMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_FLABEL
 }
 
 type OfpOxmOfbField_PbbIsidMask struct {
-	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"`
+	PbbIsidMask uint32 `protobuf:"varint,140,opt,name=pbb_isid_mask,json=pbbIsidMask,proto3,oneof"` // For OFPXMT_OFB_PBB_ISID
 }
 
 type OfpOxmOfbField_TunnelIdMask struct {
-	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"`
+	TunnelIdMask uint64 `protobuf:"varint,141,opt,name=tunnel_id_mask,json=tunnelIdMask,proto3,oneof"` // For OFPXMT_OFB_TUNNEL_ID
 }
 
 type OfpOxmOfbField_Ipv6ExthdrMask struct {
-	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"`
+	Ipv6ExthdrMask uint32 `protobuf:"varint,142,opt,name=ipv6_exthdr_mask,json=ipv6ExthdrMask,proto3,oneof"` // For OFPXMT_OFB_IPV6_EXTHDR
 }
 
 func (*OfpOxmOfbField_TableMetadataMask) isOfpOxmOfbField_Mask() {}
@@ -3899,114 +5404,6977 @@
 
 func (*OfpOxmOfbField_Ipv6ExthdrMask) isOfpOxmOfbField_Mask() {}
 
-func (m *OfpOxmOfbField) GetMask() isOfpOxmOfbField_Mask {
-	if m != nil {
-		return m.Mask
+// Header for OXM experimenter match fields.
+// The experimenter class should not use OXM_HEADER() macros for defining
+// fields due to this extra header.
+type OfpOxmExperimenterField struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OxmHeader     uint32                 `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"` // oxm_class = OFPXMC_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpOxmExperimenterField) Reset() {
+	*x = OfpOxmExperimenterField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpOxmExperimenterField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpOxmExperimenterField) ProtoMessage() {}
+
+func (x *OfpOxmExperimenterField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpOxmExperimenterField.ProtoReflect.Descriptor instead.
+func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *OfpOxmExperimenterField) GetOxmHeader() uint32 {
+	if x != nil {
+		return x.OxmHeader
+	}
+	return 0
+}
+
+func (x *OfpOxmExperimenterField) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+// Action header that is common to all actions.  The length includes the
+// header and any padding used to make the action 64-bit aligned.
+// NB: The length of an action *must* always be a multiple of eight.
+type OfpAction struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  OfpActionType          `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"` // One of OFPAT_*.
+	// Types that are valid to be assigned to Action:
+	//
+	//	*OfpAction_Output
+	//	*OfpAction_MplsTtl
+	//	*OfpAction_Push
+	//	*OfpAction_PopMpls
+	//	*OfpAction_Group
+	//	*OfpAction_NwTtl
+	//	*OfpAction_SetField
+	//	*OfpAction_Experimenter
+	Action        isOfpAction_Action `protobuf_oneof:"action"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAction) Reset() {
+	*x = OfpAction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAction) ProtoMessage() {}
+
+func (x *OfpAction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAction.ProtoReflect.Descriptor instead.
+func (*OfpAction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *OfpAction) GetType() OfpActionType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpActionType_OFPAT_OUTPUT
+}
+
+func (x *OfpAction) GetAction() isOfpAction_Action {
+	if x != nil {
+		return x.Action
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetTableMetadataMask() uint64 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_TableMetadataMask); ok {
-		return x.TableMetadataMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetEthDstMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_EthDstMask); ok {
-		return x.EthDstMask
+func (x *OfpAction) GetOutput() *OfpActionOutput {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Output); ok {
+			return x.Output
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetEthSrcMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_EthSrcMask); ok {
-		return x.EthSrcMask
+func (x *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_MplsTtl); ok {
+			return x.MplsTtl
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetVlanVidMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_VlanVidMask); ok {
-		return x.VlanVidMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4SrcMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4SrcMask); ok {
-		return x.Ipv4SrcMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv4DstMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv4DstMask); ok {
-		return x.Ipv4DstMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpSpaMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpSpaMask); ok {
-		return x.ArpSpaMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetArpTpaMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_ArpTpaMask); ok {
-		return x.ArpTpaMask
-	}
-	return 0
-}
-
-func (m *OfpOxmOfbField) GetIpv6SrcMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6SrcMask); ok {
-		return x.Ipv6SrcMask
+func (x *OfpAction) GetPush() *OfpActionPush {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Push); ok {
+			return x.Push
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6DstMask() []byte {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6DstMask); ok {
-		return x.Ipv6DstMask
+func (x *OfpAction) GetPopMpls() *OfpActionPopMpls {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_PopMpls); ok {
+			return x.PopMpls
+		}
 	}
 	return nil
 }
 
-func (m *OfpOxmOfbField) GetIpv6FlabelMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6FlabelMask); ok {
-		return x.Ipv6FlabelMask
+func (x *OfpAction) GetGroup() *OfpActionGroup {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Group); ok {
+			return x.Group
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetNwTtl() *OfpActionNwTtl {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_NwTtl); ok {
+			return x.NwTtl
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetSetField() *OfpActionSetField {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_SetField); ok {
+			return x.SetField
+		}
+	}
+	return nil
+}
+
+func (x *OfpAction) GetExperimenter() *OfpActionExperimenter {
+	if x != nil {
+		if x, ok := x.Action.(*OfpAction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpAction_Action interface {
+	isOfpAction_Action()
+}
+
+type OfpAction_Output struct {
+	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
+}
+
+type OfpAction_MplsTtl struct {
+	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
+}
+
+type OfpAction_Push struct {
+	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
+}
+
+type OfpAction_PopMpls struct {
+	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
+}
+
+type OfpAction_Group struct {
+	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
+}
+
+type OfpAction_NwTtl struct {
+	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
+}
+
+type OfpAction_SetField struct {
+	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
+}
+
+type OfpAction_Experimenter struct {
+	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpAction_Output) isOfpAction_Action() {}
+
+func (*OfpAction_MplsTtl) isOfpAction_Action() {}
+
+func (*OfpAction_Push) isOfpAction_Action() {}
+
+func (*OfpAction_PopMpls) isOfpAction_Action() {}
+
+func (*OfpAction_Group) isOfpAction_Action() {}
+
+func (*OfpAction_NwTtl) isOfpAction_Action() {}
+
+func (*OfpAction_SetField) isOfpAction_Action() {}
+
+func (*OfpAction_Experimenter) isOfpAction_Action() {}
+
+// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
+// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
+// number of bytes to send.  A 'max_len' of zero means no bytes of the
+// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
+// the packet is not buffered and the complete packet is to be sent to
+// the controller.
+type OfpActionOutput struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Port          uint32                 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`                   // Output port.
+	MaxLen        uint32                 `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"` // Max length to send to controller.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionOutput) Reset() {
+	*x = OfpActionOutput{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionOutput) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionOutput) ProtoMessage() {}
+
+func (x *OfpActionOutput) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionOutput.ProtoReflect.Descriptor instead.
+func (*OfpActionOutput) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *OfpActionOutput) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetPbbIsidMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_PbbIsidMask); ok {
-		return x.PbbIsidMask
+func (x *OfpActionOutput) GetMaxLen() uint32 {
+	if x != nil {
+		return x.MaxLen
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetTunnelIdMask() uint64 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_TunnelIdMask); ok {
-		return x.TunnelIdMask
+// Action structure for OFPAT_SET_MPLS_TTL.
+type OfpActionMplsTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MplsTtl       uint32                 `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"` // MPLS TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionMplsTtl) Reset() {
+	*x = OfpActionMplsTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionMplsTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionMplsTtl) ProtoMessage() {}
+
+func (x *OfpActionMplsTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionMplsTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *OfpActionMplsTtl) GetMplsTtl() uint32 {
+	if x != nil {
+		return x.MplsTtl
 	}
 	return 0
 }
 
-func (m *OfpOxmOfbField) GetIpv6ExthdrMask() uint32 {
-	if x, ok := m.GetMask().(*OfpOxmOfbField_Ipv6ExthdrMask); ok {
-		return x.Ipv6ExthdrMask
+// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
+type OfpActionPush struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPush) Reset() {
+	*x = OfpActionPush{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPush) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPush) ProtoMessage() {}
+
+func (x *OfpActionPush) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPush.ProtoReflect.Descriptor instead.
+func (*OfpActionPush) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *OfpActionPush) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
 	}
 	return 0
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+// Action structure for OFPAT_POP_MPLS.
+type OfpActionPopMpls struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Ethertype     uint32                 `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"` // Ethertype
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionPopMpls) Reset() {
+	*x = OfpActionPopMpls{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionPopMpls) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionPopMpls) ProtoMessage() {}
+
+func (x *OfpActionPopMpls) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionPopMpls.ProtoReflect.Descriptor instead.
+func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *OfpActionPopMpls) GetEthertype() uint32 {
+	if x != nil {
+		return x.Ethertype
+	}
+	return 0
+}
+
+// Action structure for OFPAT_GROUP.
+type OfpActionGroup struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionGroup) Reset() {
+	*x = OfpActionGroup{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionGroup) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionGroup) ProtoMessage() {}
+
+func (x *OfpActionGroup) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionGroup.ProtoReflect.Descriptor instead.
+func (*OfpActionGroup) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *OfpActionGroup) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_NW_TTL.
+type OfpActionNwTtl struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	NwTtl         uint32                 `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"` // IP TTL
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionNwTtl) Reset() {
+	*x = OfpActionNwTtl{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionNwTtl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionNwTtl) ProtoMessage() {}
+
+func (x *OfpActionNwTtl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionNwTtl.ProtoReflect.Descriptor instead.
+func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *OfpActionNwTtl) GetNwTtl() uint32 {
+	if x != nil {
+		return x.NwTtl
+	}
+	return 0
+}
+
+// Action structure for OFPAT_SET_FIELD.
+type OfpActionSetField struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Field         *OfpOxmField           `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetField) Reset() {
+	*x = OfpActionSetField{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetField) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetField) ProtoMessage() {}
+
+func (x *OfpActionSetField) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetField.ProtoReflect.Descriptor instead.
+func (*OfpActionSetField) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *OfpActionSetField) GetField() *OfpOxmField {
+	if x != nil {
+		return x.Field
+	}
+	return nil
+}
+
+// Action header for OFPAT_EXPERIMENTER.
+// The rest of the body is experimenter-defined.
+type OfpActionExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionExperimenter) Reset() {
+	*x = OfpActionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionExperimenter) ProtoMessage() {}
+
+func (x *OfpActionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *OfpActionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpActionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Instruction header that is common to all instructions.  The length includes
+// the header and any padding used to make the instruction 64-bit aligned.
+// NB: The length of an instruction *must* always be a multiple of eight.
+type OfpInstruction struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Type  uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` // Instruction type
+	// Types that are valid to be assigned to Data:
+	//
+	//	*OfpInstruction_GotoTable
+	//	*OfpInstruction_WriteMetadata
+	//	*OfpInstruction_Actions
+	//	*OfpInstruction_Meter
+	//	*OfpInstruction_Experimenter
+	Data          isOfpInstruction_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstruction) Reset() {
+	*x = OfpInstruction{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstruction) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstruction) ProtoMessage() {}
+
+func (x *OfpInstruction) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstruction.ProtoReflect.Descriptor instead.
+func (*OfpInstruction) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *OfpInstruction) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpInstruction) GetData() isOfpInstruction_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_GotoTable); ok {
+			return x.GotoTable
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_WriteMetadata); ok {
+			return x.WriteMetadata
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetActions() *OfpInstructionActions {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetMeter() *OfpInstructionMeter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Meter); ok {
+			return x.Meter
+		}
+	}
+	return nil
+}
+
+func (x *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpInstruction_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpInstruction_Data interface {
+	isOfpInstruction_Data()
+}
+
+type OfpInstruction_GotoTable struct {
+	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
+}
+
+type OfpInstruction_WriteMetadata struct {
+	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
+}
+
+type OfpInstruction_Actions struct {
+	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpInstruction_Meter struct {
+	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
+}
+
+type OfpInstruction_Experimenter struct {
+	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpInstruction_GotoTable) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Actions) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Meter) isOfpInstruction_Data() {}
+
+func (*OfpInstruction_Experimenter) isOfpInstruction_Data() {}
+
+// Instruction structure for OFPIT_GOTO_TABLE
+type OfpInstructionGotoTable struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"` // Set next table in the lookup pipeline
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionGotoTable) Reset() {
+	*x = OfpInstructionGotoTable{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionGotoTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionGotoTable) ProtoMessage() {}
+
+func (x *OfpInstructionGotoTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionGotoTable.ProtoReflect.Descriptor instead.
+func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *OfpInstructionGotoTable) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE_METADATA
+type OfpInstructionWriteMetadata struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      uint64                 `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`                             // Metadata value to write
+	MetadataMask  uint64                 `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"` // Metadata write bitmask
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionWriteMetadata) Reset() {
+	*x = OfpInstructionWriteMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionWriteMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionWriteMetadata) ProtoMessage() {}
+
+func (x *OfpInstructionWriteMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionWriteMetadata.ProtoReflect.Descriptor instead.
+func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadata() uint64 {
+	if x != nil {
+		return x.Metadata
+	}
+	return 0
+}
+
+func (x *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
+	if x != nil {
+		return x.MetadataMask
+	}
+	return 0
+}
+
+// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
+type OfpInstructionActions struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Actions       []*OfpAction           `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionActions) Reset() {
+	*x = OfpInstructionActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionActions) ProtoMessage() {}
+
+func (x *OfpInstructionActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionActions.ProtoReflect.Descriptor instead.
+func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *OfpInstructionActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Instruction structure for OFPIT_METER
+type OfpInstructionMeter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionMeter) Reset() {
+	*x = OfpInstructionMeter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionMeter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionMeter) ProtoMessage() {}
+
+func (x *OfpInstructionMeter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionMeter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *OfpInstructionMeter) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Instruction structure for experimental instructions
+type OfpInstructionExperimenter struct {
+	state        protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	// Experimenter-defined arbitrary additional data.
+	Data          []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpInstructionExperimenter) Reset() {
+	*x = OfpInstructionExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpInstructionExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpInstructionExperimenter) ProtoMessage() {}
+
+func (x *OfpInstructionExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpInstructionExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *OfpInstructionExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpInstructionExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow setup and teardown (controller -> datapath).
+type OfpFlowMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"` // Opaque controller-issued identifier.
+	CookieMask    uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Command       OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"` // One of OFPFC_*.
+	IdleTimeout   uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`         // Idle time before discarding (seconds).
+	HardTimeout   uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`         // Max time before discarding (seconds).
+	Priority      uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`                                  // Priority level of flow entry.
+	BufferId      uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	OutPort       uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Flags         uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`              // Bitmap of OFPFF_* flags.
+	Match         *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`               // Fields to match. Variable size.
+	Instructions  []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"` // 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowMod) Reset() {
+	*x = OfpFlowMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowMod) ProtoMessage() {}
+
+func (x *OfpFlowMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowMod.ProtoReflect.Descriptor instead.
+func (*OfpFlowMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *OfpFlowMod) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetCommand() OfpFlowModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpFlowModCommand_OFPFC_ADD
+}
+
+func (x *OfpFlowMod) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowMod) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowMod) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Bucket for use in groups.
+type OfpBucket struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Weight        uint32                 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
+	WatchPort     uint32                 `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
+	WatchGroup    uint32                 `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
+	Actions       []*OfpAction           `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucket) Reset() {
+	*x = OfpBucket{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucket) ProtoMessage() {}
+
+func (x *OfpBucket) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucket.ProtoReflect.Descriptor instead.
+func (*OfpBucket) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *OfpBucket) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchPort() uint32 {
+	if x != nil {
+		return x.WatchPort
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetWatchGroup() uint32 {
+	if x != nil {
+		return x.WatchGroup
+	}
+	return 0
+}
+
+func (x *OfpBucket) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Group setup and teardown (controller -> datapath).
+type OfpGroupMod struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Command       OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"` // One of OFPGC_*.
+	Type          OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`             // One of OFPGT_*.
+	GroupId       uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`                      // Group identifier.
+	Buckets       []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupMod) Reset() {
+	*x = OfpGroupMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupMod) ProtoMessage() {}
+
+func (x *OfpGroupMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupMod.ProtoReflect.Descriptor instead.
+func (*OfpGroupMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *OfpGroupMod) GetCommand() OfpGroupModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpGroupModCommand_OFPGC_ADD
+}
+
+func (x *OfpGroupMod) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupMod) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupMod) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+// Send packet (controller -> datapath).
+type OfpPacketOut struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
+	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"` // Packet's input port or OFPP_CONTROLLER.
+	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`              // Action list - 0 or more.
+	// The variable size action list is optionally followed by packet data.
+	// This data is only present and meaningful if buffer_id == -1.
+	Data          []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` // Packet data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketOut) Reset() {
+	*x = OfpPacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketOut) ProtoMessage() {}
+
+func (x *OfpPacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketOut.ProtoReflect.Descriptor instead.
+func (*OfpPacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *OfpPacketOut) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetInPort() uint32 {
+	if x != nil {
+		return x.InPort
+	}
+	return 0
+}
+
+func (x *OfpPacketOut) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+func (x *OfpPacketOut) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Packet received on port (datapath -> controller).
+type OfpPacketIn struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	BufferId      uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`                // ID assigned by datapath.
+	Reason        OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"` // Reason packet is being sent
+	TableId       uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                   // ID of the table that was looked up
+	Cookie        uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`                                    // Cookie of the flow entry that was looked up.
+	Match         *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`                                       // Packet metadata. Variable size.
+	Data          []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`                                         // Ethernet frame
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketIn) Reset() {
+	*x = OfpPacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketIn) ProtoMessage() {}
+
+func (x *OfpPacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketIn.ProtoReflect.Descriptor instead.
+func (*OfpPacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *OfpPacketIn) GetBufferId() uint32 {
+	if x != nil {
+		return x.BufferId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetReason() OfpPacketInReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpPacketInReason_OFPR_NO_MATCH
+}
+
+func (x *OfpPacketIn) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpPacketIn) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpPacketIn) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Flow removed (datapath -> controller).
+type OfpFlowRemoved struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Cookie        uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`                                       // Opaque controller-issued identifier.
+	Priority      uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`                                   // Priority level of flow entry.
+	Reason        OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"` // One of OFPRR_*.
+	TableId       uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`                      // ID of the table
+	DurationSec   uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`          // Time flow was alive in seconds.
+	DurationNsec  uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	IdleTimeout   uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Idle timeout from original flow mod.
+	HardTimeout   uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Hard timeout from original flow mod.
+	PacketCount   uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
+	ByteCount     uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
+	Match         *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"` // Description of fields. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowRemoved) Reset() {
+	*x = OfpFlowRemoved{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowRemoved) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowRemoved) ProtoMessage() {}
+
+func (x *OfpFlowRemoved) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowRemoved.ProtoReflect.Descriptor instead.
+func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *OfpFlowRemoved) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
+	if x != nil {
+		return x.Reason
+	}
+	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
+}
+
+func (x *OfpFlowRemoved) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowRemoved) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Common header for all meter bands
+type OfpMeterBandHeader struct {
+	state     protoimpl.MessageState `protogen:"open.v1"`
+	Type      OfpMeterBandType       `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"` // One of OFPMBT_*.
+	Rate      uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                                   // Rate for this band.
+	BurstSize uint32                 `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`        // Size of bursts.
+	// Types that are valid to be assigned to Data:
+	//
+	//	*OfpMeterBandHeader_Drop
+	//	*OfpMeterBandHeader_DscpRemark
+	//	*OfpMeterBandHeader_Experimenter
+	Data          isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandHeader) Reset() {
+	*x = OfpMeterBandHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandHeader) ProtoMessage() {}
+
+func (x *OfpMeterBandHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandHeader.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *OfpMeterBandHeader) GetType() OfpMeterBandType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMeterBandType_OFPMBT_INVALID
+}
+
+func (x *OfpMeterBandHeader) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetBurstSize() uint32 {
+	if x != nil {
+		return x.BurstSize
+	}
+	return 0
+}
+
+func (x *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Drop); ok {
+			return x.Drop
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_DscpRemark); ok {
+			return x.DscpRemark
+		}
+	}
+	return nil
+}
+
+func (x *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
+	if x != nil {
+		if x, ok := x.Data.(*OfpMeterBandHeader_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpMeterBandHeader_Data interface {
+	isOfpMeterBandHeader_Data()
+}
+
+type OfpMeterBandHeader_Drop struct {
+	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_DscpRemark struct {
+	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
+}
+
+type OfpMeterBandHeader_Experimenter struct {
+	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
+
+func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
+
+// OFPMBT_DROP band - drop packets
+type OfpMeterBandDrop struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDrop) Reset() {
+	*x = OfpMeterBandDrop{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDrop) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDrop) ProtoMessage() {}
+
+func (x *OfpMeterBandDrop) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDrop.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{37}
+}
+
+// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
+type OfpMeterBandDscpRemark struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PrecLevel     uint32                 `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"` // Number of drop precedence level to add.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandDscpRemark) Reset() {
+	*x = OfpMeterBandDscpRemark{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandDscpRemark) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandDscpRemark) ProtoMessage() {}
+
+func (x *OfpMeterBandDscpRemark) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandDscpRemark.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
+	if x != nil {
+		return x.PrecLevel
+	}
+	return 0
+}
+
+// OFPMBT_EXPERIMENTER band - Experimenter type.
+// The rest of the band is experimenter-defined.
+type OfpMeterBandExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandExperimenter) Reset() {
+	*x = OfpMeterBandExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandExperimenter) ProtoMessage() {}
+
+func (x *OfpMeterBandExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *OfpMeterBandExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+// Meter configuration. OFPT_METER_MOD.
+type OfpMeterMod struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Command       OfpMeterModCommand     `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"` // One of OFPMC_*.
+	Flags         uint32                 `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                         // Bitmap of OFPMF_* flags.
+	MeterId       uint32                 `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                      // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMod) Reset() {
+	*x = OfpMeterMod{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMod) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMod) ProtoMessage() {}
+
+func (x *OfpMeterMod) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMod.ProtoReflect.Descriptor instead.
+func (*OfpMeterMod) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *OfpMeterMod) GetCommand() OfpMeterModCommand {
+	if x != nil {
+		return x.Command
+	}
+	return OfpMeterModCommand_OFPMC_ADD
+}
+
+func (x *OfpMeterMod) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// OFPT_ERROR: Error message (datapath -> controller).
+type OfpErrorMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Header        *OfpHeader             `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
+	Type          uint32                 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
+	Code          uint32                 `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorMsg) Reset() {
+	*x = OfpErrorMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorMsg) ProtoMessage() {}
+
+func (x *OfpErrorMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *OfpErrorMsg) GetHeader() *OfpHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
+}
+
+func (x *OfpErrorMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetCode() uint32 {
+	if x != nil {
+		return x.Code
+	}
+	return 0
+}
+
+func (x *OfpErrorMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// OFPET_EXPERIMENTER: Error message (datapath -> controller).
+type OfpErrorExperimenterMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPET_EXPERIMENTER.
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Experimenter  uint32                 `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpErrorExperimenterMsg) Reset() {
+	*x = OfpErrorExperimenterMsg{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpErrorExperimenterMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpErrorExperimenterMsg) ProtoMessage() {}
+
+func (x *OfpErrorExperimenterMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpErrorExperimenterMsg.ProtoReflect.Descriptor instead.
+func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *OfpErrorExperimenterMsg) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpErrorExperimenterMsg) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+type OfpMultipartRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REQ_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the request. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartRequest) Reset() {
+	*x = OfpMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *OfpMultipartRequest) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartRequest) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartRequest) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+type OfpMultipartReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Type          OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"` // One of the OFPMP_* constants.
+	Flags         uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`                                 // OFPMPF_REPLY_* flags.
+	Body          []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`                                    // Body of the reply. 0 or more bytes.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMultipartReply) Reset() {
+	*x = OfpMultipartReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMultipartReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMultipartReply) ProtoMessage() {}
+
+func (x *OfpMultipartReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMultipartReply.ProtoReflect.Descriptor instead.
+func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *OfpMultipartReply) GetType() OfpMultipartType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpMultipartType_OFPMP_DESC
+}
+
+func (x *OfpMultipartReply) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMultipartReply) GetBody() []byte {
+	if x != nil {
+		return x.Body
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
+// ASCII string.
+type OfpDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MfrDesc       string                 `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`       // Manufacturer description.
+	HwDesc        string                 `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`          // Hardware description.
+	SwDesc        string                 `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`          // Software description.
+	SerialNum     string                 `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"` // Serial number.
+	DpDesc        string                 `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`          // Human readable description of datapath.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpDesc) Reset() {
+	*x = OfpDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpDesc) ProtoMessage() {}
+
+func (x *OfpDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpDesc.ProtoReflect.Descriptor instead.
+func (*OfpDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *OfpDesc) GetMfrDesc() string {
+	if x != nil {
+		return x.MfrDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetHwDesc() string {
+	if x != nil {
+		return x.HwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSwDesc() string {
+	if x != nil {
+		return x.SwDesc
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetSerialNum() string {
+	if x != nil {
+		return x.SerialNum
+	}
+	return ""
+}
+
+func (x *OfpDesc) GetDpDesc() string {
+	if x != nil {
+		return x.DpDesc
+	}
+	return ""
+}
+
+// Body for ofp_multipart_request of type OFPMP_FLOW.
+type OfpFlowStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStatsRequest) Reset() {
+	*x = OfpFlowStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStatsRequest) ProtoMessage() {}
+
+func (x *OfpFlowStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *OfpFlowStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpFlowStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_FLOW request.
+type OfpFlowStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            uint64                 `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`                                     // Unique ID of flow within device.
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`             // ID of table flow came from.
+	DurationSec   uint32                 `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time flow has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	Priority      uint32                 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`                          // Priority of the entry.
+	IdleTimeout   uint32                 `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` // Number of seconds idle before expiration.
+	HardTimeout   uint32                 `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"` // Number of seconds before expiration.
+	Flags         uint32                 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`                                // Bitmap of OFPFF_* flags.
+	Cookie        uint64                 `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`                              // Opaque controller-issued identifier.
+	PacketCount   uint64                 `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flow.
+	ByteCount     uint64                 `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`      // Number of bytes in flow.
+	Match         *OfpMatch              `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`                                // Description of fields. Variable size.
+	Instructions  []*OfpInstruction      `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpFlowStats) Reset() {
+	*x = OfpFlowStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpFlowStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpFlowStats) ProtoMessage() {}
+
+func (x *OfpFlowStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpFlowStats.ProtoReflect.Descriptor instead.
+func (*OfpFlowStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *OfpFlowStats) GetId() uint64 {
+	if x != nil {
+		return x.Id
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetIdleTimeout() uint32 {
+	if x != nil {
+		return x.IdleTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetHardTimeout() uint32 {
+	if x != nil {
+		return x.HardTimeout
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpFlowStats) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+func (x *OfpFlowStats) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
+type OfpAggregateStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	OutPort       uint32                 `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
+	OutGroup      uint32                 `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
+	Cookie        uint64                 `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	CookieMask    uint64                 `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
+	Match         *OfpMatch              `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"` // Fields to match. Variable size.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsRequest) Reset() {
+	*x = OfpAggregateStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsRequest) ProtoMessage() {}
+
+func (x *OfpAggregateStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *OfpAggregateStatsRequest) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutPort() uint32 {
+	if x != nil {
+		return x.OutPort
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetOutGroup() uint32 {
+	if x != nil {
+		return x.OutGroup
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetCookieMask() uint64 {
+	if x != nil {
+		return x.CookieMask
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
+	if x != nil {
+		return x.Match
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_AGGREGATE request.
+type OfpAggregateStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets in flows.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes in flows.
+	FlowCount     uint32                 `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`       // Number of flows.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpAggregateStatsReply) Reset() {
+	*x = OfpAggregateStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAggregateStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAggregateStatsReply) ProtoMessage() {}
+
+func (x *OfpAggregateStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAggregateStatsReply.ProtoReflect.Descriptor instead.
+func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *OfpAggregateStatsReply) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpAggregateStatsReply) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+// Common header for all Table Feature Properties
+type OfpTableFeatureProperty struct {
+	state protoimpl.MessageState  `protogen:"open.v1"`
+	Type  OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"` // One of OFPTFPT_*.
+	// Types that are valid to be assigned to Value:
+	//
+	//	*OfpTableFeatureProperty_Instructions
+	//	*OfpTableFeatureProperty_NextTables
+	//	*OfpTableFeatureProperty_Actions
+	//	*OfpTableFeatureProperty_Oxm
+	//	*OfpTableFeatureProperty_Experimenter
+	Value         isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatureProperty) Reset() {
+	*x = OfpTableFeatureProperty{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatureProperty) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatureProperty) ProtoMessage() {}
+
+func (x *OfpTableFeatureProperty) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatureProperty.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
+}
+
+func (x *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Instructions); ok {
+			return x.Instructions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_NextTables); ok {
+			return x.NextTables
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Actions); ok {
+			return x.Actions
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Oxm); ok {
+			return x.Oxm
+		}
+	}
+	return nil
+}
+
+func (x *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
+	if x != nil {
+		if x, ok := x.Value.(*OfpTableFeatureProperty_Experimenter); ok {
+			return x.Experimenter
+		}
+	}
+	return nil
+}
+
+type isOfpTableFeatureProperty_Value interface {
+	isOfpTableFeatureProperty_Value()
+}
+
+type OfpTableFeatureProperty_Instructions struct {
+	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_NextTables struct {
+	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Actions struct {
+	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Oxm struct {
+	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
+}
+
+type OfpTableFeatureProperty_Experimenter struct {
+	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
+}
+
+func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value() {}
+
+func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}
+
+// Instructions property
+type OfpTableFeaturePropInstructions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_INSTRUCTIONS,
+	// OFPTFPT_INSTRUCTIONS_MISS.
+	Instructions  []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"` // List of instructions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropInstructions) Reset() {
+	*x = OfpTableFeaturePropInstructions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropInstructions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropInstructions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropInstructions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropInstructions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
+	if x != nil {
+		return x.Instructions
+	}
+	return nil
+}
+
+// Next Tables property
+type OfpTableFeaturePropNextTables struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_NEXT_TABLES,
+	// OFPTFPT_NEXT_TABLES_MISS.
+	NextTableIds  []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"` // List of table ids.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropNextTables) Reset() {
+	*x = OfpTableFeaturePropNextTables{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropNextTables) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropNextTables) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropNextTables) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropNextTables.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{52}
+}
+
+func (x *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
+	if x != nil {
+		return x.NextTableIds
+	}
+	return nil
+}
+
+// Actions property
+type OfpTableFeaturePropActions struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_WRITE_ACTIONS,
+	// OFPTFPT_WRITE_ACTIONS_MISS,
+	// OFPTFPT_APPLY_ACTIONS,
+	// OFPTFPT_APPLY_ACTIONS_MISS.
+	Actions       []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"` // List of actions
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropActions) Reset() {
+	*x = OfpTableFeaturePropActions{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropActions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropActions) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropActions) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropActions.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *OfpTableFeaturePropActions) GetActions() []*OfpAction {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Match, Wildcard or Set-Field property
+type OfpTableFeaturePropOxm struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// TODO is this a uint32???
+	OxmIds        []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"` // Array of OXM headers
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropOxm) Reset() {
+	*x = OfpTableFeaturePropOxm{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropOxm) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropOxm) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropOxm) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropOxm.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
+	if x != nil {
+		return x.OxmIds
+	}
+	return nil
+}
+
+// Experimenter table feature property
+type OfpTableFeaturePropExperimenter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// One of OFPTFPT_EXPERIMENTER,
+	// OFPTFPT_EXPERIMENTER_MISS.
+	Experimenter     uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType          uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	ExperimenterData []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
+}
+
+func (x *OfpTableFeaturePropExperimenter) Reset() {
+	*x = OfpTableFeaturePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeaturePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeaturePropExperimenter) ProtoMessage() {}
+
+func (x *OfpTableFeaturePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeaturePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
+	if x != nil {
+		return x.ExperimenterData
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
+// Body of reply to OFPMP_TABLE_FEATURES request.
+type OfpTableFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	MetadataMatch uint64                 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` // Bits of metadata table can match.
+	MetadataWrite uint64                 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"` // Bits of metadata table can write.
+	Config        uint32                 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`                                    // Bitmap of OFPTC_* values
+	MaxEntries    uint32                 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`          // Max number of entries supported.
+	// Table Feature Property list
+	Properties    []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableFeatures) Reset() {
+	*x = OfpTableFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableFeatures) ProtoMessage() {}
+
+func (x *OfpTableFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableFeatures.ProtoReflect.Descriptor instead.
+func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{56}
+}
+
+func (x *OfpTableFeatures) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *OfpTableFeatures) GetMetadataMatch() uint64 {
+	if x != nil {
+		return x.MetadataMatch
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMetadataWrite() uint64 {
+	if x != nil {
+		return x.MetadataWrite
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetConfig() uint32 {
+	if x != nil {
+		return x.Config
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetMaxEntries() uint32 {
+	if x != nil {
+		return x.MaxEntries
+	}
+	return 0
+}
+
+func (x *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_TABLE request.
+type OfpTableStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	TableId       uint32                 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
+	ActiveCount   uint32                 `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`    // Number of active entries.
+	LookupCount   uint64                 `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`    // Number of packets looked up in table.
+	MatchedCount  uint64                 `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"` // Number of packets that hit table.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpTableStats) Reset() {
+	*x = OfpTableStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpTableStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpTableStats) ProtoMessage() {}
+
+func (x *OfpTableStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpTableStats.ProtoReflect.Descriptor instead.
+func (*OfpTableStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{57}
+}
+
+func (x *OfpTableStats) GetTableId() uint32 {
+	if x != nil {
+		return x.TableId
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetActiveCount() uint32 {
+	if x != nil {
+		return x.ActiveCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetLookupCount() uint64 {
+	if x != nil {
+		return x.LookupCount
+	}
+	return 0
+}
+
+func (x *OfpTableStats) GetMatchedCount() uint64 {
+	if x != nil {
+		return x.MatchedCount
+	}
+	return 0
+}
+
+// Body for ofp_multipart_request of type OFPMP_PORT.
+type OfpPortStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStatsRequest) Reset() {
+	*x = OfpPortStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStatsRequest) ProtoMessage() {}
+
+func (x *OfpPortStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{58}
+}
+
+func (x *OfpPortStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
+// the field to all ones.
+type OfpPortStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	RxPackets     uint64                 `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"` // Number of received packets.
+	TxPackets     uint64                 `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"` // Number of transmitted packets.
+	RxBytes       uint64                 `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`       // Number of received bytes.
+	TxBytes       uint64                 `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`       // Number of transmitted bytes.
+	RxDropped     uint64                 `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"` // Number of packets dropped by RX.
+	TxDropped     uint64                 `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"` // Number of packets dropped by TX.
+	RxErrors      uint64                 `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
+	TxErrors      uint64                 `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
+	RxFrameErr    uint64                 `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`  // Number of frame alignment errors.
+	RxOverErr     uint64                 `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`     // Number of packets with RX overrun.
+	RxCrcErr      uint64                 `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`        // Number of CRC errors.
+	Collisions    uint64                 `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`                      // Number of collisions.
+	DurationSec   uint32                 `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time port has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPortStats) Reset() {
+	*x = OfpPortStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPortStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPortStats) ProtoMessage() {}
+
+func (x *OfpPortStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPortStats.ProtoReflect.Descriptor instead.
+func (*OfpPortStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{59}
+}
+
+func (x *OfpPortStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxDropped() uint64 {
+	if x != nil {
+		return x.RxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxDropped() uint64 {
+	if x != nil {
+		return x.TxDropped
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxFrameErr() uint64 {
+	if x != nil {
+		return x.RxFrameErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxOverErr() uint64 {
+	if x != nil {
+		return x.RxOverErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetRxCrcErr() uint64 {
+	if x != nil {
+		return x.RxCrcErr
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetCollisions() uint64 {
+	if x != nil {
+		return x.Collisions
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpPortStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Body of OFPMP_GROUP request.
+type OfpGroupStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // All groups if OFPG_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStatsRequest) Reset() {
+	*x = OfpGroupStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStatsRequest) ProtoMessage() {}
+
+func (x *OfpGroupStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[60]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{60}
+}
+
+func (x *OfpGroupStatsRequest) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+// Used in group stats replies.
+type OfpBucketCounter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PacketCount   uint64                 `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by bucket.
+	ByteCount     uint64                 `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by bucket.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpBucketCounter) Reset() {
+	*x = OfpBucketCounter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpBucketCounter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpBucketCounter) ProtoMessage() {}
+
+func (x *OfpBucketCounter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[61]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpBucketCounter.ProtoReflect.Descriptor instead.
+func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{61}
+}
+
+func (x *OfpBucketCounter) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpBucketCounter) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_GROUP request.
+type OfpGroupStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupId       uint32                 `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` // Group identifier.
+	RefCount      uint32                 `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
+	PacketCount   uint64                 `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"` // Number of packets processed by group.
+	ByteCount     uint64                 `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`       // Number of bytes processed by group.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time group has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BucketStats   []*OfpBucketCounter    `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupStats) Reset() {
+	*x = OfpGroupStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupStats) ProtoMessage() {}
+
+func (x *OfpGroupStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[62]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupStats.ProtoReflect.Descriptor instead.
+func (*OfpGroupStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{62}
+}
+
+func (x *OfpGroupStats) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetRefCount() uint32 {
+	if x != nil {
+		return x.RefCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetPacketCount() uint64 {
+	if x != nil {
+		return x.PacketCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetByteCount() uint64 {
+	if x != nil {
+		return x.ByteCount
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
+	if x != nil {
+		return x.BucketStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_DESC request.
+type OfpGroupDesc struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          OfpGroupType           `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"` // One of OFPGT_*.
+	GroupId       uint32                 `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`          // Group identifier.
+	Buckets       []*OfpBucket           `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`                          // List of buckets - 0 or more.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupDesc) Reset() {
+	*x = OfpGroupDesc{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupDesc) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupDesc) ProtoMessage() {}
+
+func (x *OfpGroupDesc) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[63]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupDesc.ProtoReflect.Descriptor instead.
+func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{63}
+}
+
+func (x *OfpGroupDesc) GetType() OfpGroupType {
+	if x != nil {
+		return x.Type
+	}
+	return OfpGroupType_OFPGT_ALL
+}
+
+func (x *OfpGroupDesc) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *OfpGroupDesc) GetBuckets() []*OfpBucket {
+	if x != nil {
+		return x.Buckets
+	}
+	return nil
+}
+
+type OfpGroupEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Desc          *OfpGroupDesc          `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
+	Stats         *OfpGroupStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupEntry) Reset() {
+	*x = OfpGroupEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupEntry) ProtoMessage() {}
+
+func (x *OfpGroupEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[64]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupEntry.ProtoReflect.Descriptor instead.
+func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{64}
+}
+
+func (x *OfpGroupEntry) GetDesc() *OfpGroupDesc {
+	if x != nil {
+		return x.Desc
+	}
+	return nil
+}
+
+func (x *OfpGroupEntry) GetStats() *OfpGroupStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
+type OfpGroupFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Types         uint32                 `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`                                 // Bitmap of (1 << OFPGT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`                   // Bitmap of OFPGFC_* capability supported.
+	MaxGroups     []uint32               `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"` // Maximum number of groups for each type.
+	Actions       []uint32               `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpGroupFeatures) Reset() {
+	*x = OfpGroupFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpGroupFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpGroupFeatures) ProtoMessage() {}
+
+func (x *OfpGroupFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[65]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpGroupFeatures.ProtoReflect.Descriptor instead.
+func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{65}
+}
+
+func (x *OfpGroupFeatures) GetTypes() uint32 {
+	if x != nil {
+		return x.Types
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpGroupFeatures) GetMaxGroups() []uint32 {
+	if x != nil {
+		return x.MaxGroups
+	}
+	return nil
+}
+
+func (x *OfpGroupFeatures) GetActions() []uint32 {
+	if x != nil {
+		return x.Actions
+	}
+	return nil
+}
+
+// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
+type OfpMeterMultipartRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance, or OFPM_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterMultipartRequest) Reset() {
+	*x = OfpMeterMultipartRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterMultipartRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterMultipartRequest) ProtoMessage() {}
+
+func (x *OfpMeterMultipartRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[66]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterMultipartRequest.ProtoReflect.Descriptor instead.
+func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *OfpMeterMultipartRequest) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+// Statistics for each meter band
+type OfpMeterBandStats struct {
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	PacketBandCount uint64                 `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"` // Number of packets in band.
+	ByteBandCount   uint64                 `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`       // Number of bytes in band.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpMeterBandStats) Reset() {
+	*x = OfpMeterBandStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterBandStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterBandStats) ProtoMessage() {}
+
+func (x *OfpMeterBandStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[67]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterBandStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{67}
+}
+
+func (x *OfpMeterBandStats) GetPacketBandCount() uint64 {
+	if x != nil {
+		return x.PacketBandCount
+	}
+	return 0
+}
+
+func (x *OfpMeterBandStats) GetByteBandCount() uint64 {
+	if x != nil {
+		return x.ByteBandCount
+	}
+	return 0
+}
+
+// Body of reply to OFPMP_METER request. Meter statistics.
+type OfpMeterStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterId       uint32                 `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`                     // Meter instance.
+	FlowCount     uint32                 `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`               // Number of flows bound to meter.
+	PacketInCount uint64                 `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"` // Number of packets in input.
+	ByteInCount   uint64                 `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`       // Number of bytes in input.
+	DurationSec   uint32                 `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`         // Time meter has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	BandStats     []*OfpMeterBandStats   `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterStats) Reset() {
+	*x = OfpMeterStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterStats) ProtoMessage() {}
+
+func (x *OfpMeterStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[68]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterStats.ProtoReflect.Descriptor instead.
+func (*OfpMeterStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{68}
+}
+
+func (x *OfpMeterStats) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetFlowCount() uint32 {
+	if x != nil {
+		return x.FlowCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetPacketInCount() uint64 {
+	if x != nil {
+		return x.PacketInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetByteInCount() uint64 {
+	if x != nil {
+		return x.ByteInCount
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+func (x *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
+	if x != nil {
+		return x.BandStats
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
+type OfpMeterConfig struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Flags         uint32                 `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`                    // All OFPMF_* that apply.
+	MeterId       uint32                 `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"` // Meter instance.
+	Bands         []*OfpMeterBandHeader  `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterConfig) Reset() {
+	*x = OfpMeterConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterConfig) ProtoMessage() {}
+
+func (x *OfpMeterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[69]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterConfig.ProtoReflect.Descriptor instead.
+func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{69}
+}
+
+func (x *OfpMeterConfig) GetFlags() uint32 {
+	if x != nil {
+		return x.Flags
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetMeterId() uint32 {
+	if x != nil {
+		return x.MeterId
+	}
+	return 0
+}
+
+func (x *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
+	if x != nil {
+		return x.Bands
+	}
+	return nil
+}
+
+// Body of reply to OFPMP_METER_FEATURES request. Meter features.
+type OfpMeterFeatures struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MaxMeter      uint32                 `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`    // Maximum number of meters.
+	BandTypes     uint32                 `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"` // Bitmaps of (1 << OFPMBT_*) values supported.
+	Capabilities  uint32                 `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`            // Bitmaps of "ofp_meter_flags".
+	MaxBands      uint32                 `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`    // Maximum bands per meters
+	MaxColor      uint32                 `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`    // Maximum color value
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterFeatures) Reset() {
+	*x = OfpMeterFeatures{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterFeatures) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterFeatures) ProtoMessage() {}
+
+func (x *OfpMeterFeatures) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[70]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterFeatures.ProtoReflect.Descriptor instead.
+func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{70}
+}
+
+func (x *OfpMeterFeatures) GetMaxMeter() uint32 {
+	if x != nil {
+		return x.MaxMeter
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetBandTypes() uint32 {
+	if x != nil {
+		return x.BandTypes
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetCapabilities() uint32 {
+	if x != nil {
+		return x.Capabilities
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxBands() uint32 {
+	if x != nil {
+		return x.MaxBands
+	}
+	return 0
+}
+
+func (x *OfpMeterFeatures) GetMaxColor() uint32 {
+	if x != nil {
+		return x.MaxColor
+	}
+	return 0
+}
+
+type OfpMeterEntry struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Config        *OfpMeterConfig        `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
+	Stats         *OfpMeterStats         `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpMeterEntry) Reset() {
+	*x = OfpMeterEntry{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpMeterEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpMeterEntry) ProtoMessage() {}
+
+func (x *OfpMeterEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[71]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpMeterEntry.ProtoReflect.Descriptor instead.
+func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{71}
+}
+
+func (x *OfpMeterEntry) GetConfig() *OfpMeterConfig {
+	if x != nil {
+		return x.Config
+	}
+	return nil
+}
+
+func (x *OfpMeterEntry) GetStats() *OfpMeterStats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
+type OfpExperimenterMultipartHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Experimenter  uint32                 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32                 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterMultipartHeader) Reset() {
+	*x = OfpExperimenterMultipartHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterMultipartHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterMultipartHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterMultipartHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[72]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterMultipartHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{72}
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterMultipartHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Experimenter extension.
+type OfpExperimenterHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
+	Experimenter  uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	ExpType       uint32 `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"` // Experimenter defined.
+	Data          []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`                       // Experimenter-defined arbitrary additional data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpExperimenterHeader) Reset() {
+	*x = OfpExperimenterHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpExperimenterHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpExperimenterHeader) ProtoMessage() {}
+
+func (x *OfpExperimenterHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[73]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpExperimenterHeader.ProtoReflect.Descriptor instead.
+func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{73}
+}
+
+func (x *OfpExperimenterHeader) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetExpType() uint32 {
+	if x != nil {
+		return x.ExpType
+	}
+	return 0
+}
+
+func (x *OfpExperimenterHeader) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Common description for a queue.
+type OfpQueuePropHeader struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Property      uint32                 `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"` // One of OFPQT_.
+	Len           uint32                 `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`           // Length of property, including this header.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropHeader) Reset() {
+	*x = OfpQueuePropHeader{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropHeader) ProtoMessage() {}
+
+func (x *OfpQueuePropHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[74]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropHeader.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{74}
+}
+
+func (x *OfpQueuePropHeader) GetProperty() uint32 {
+	if x != nil {
+		return x.Property
+	}
+	return 0
+}
+
+func (x *OfpQueuePropHeader) GetLen() uint32 {
+	if x != nil {
+		return x.Len
+	}
+	return 0
+}
+
+// Min-Rate queue property description.
+type OfpQueuePropMinRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MIN, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMinRate) Reset() {
+	*x = OfpQueuePropMinRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMinRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMinRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMinRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[75]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMinRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{75}
+}
+
+func (x *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMinRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Max-Rate queue property description.
+type OfpQueuePropMaxRate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_MAX, len: 16.
+	Rate          uint32                 `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`                              // In 1/10 of a percent = 0;>1000 -> disabled.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropMaxRate) Reset() {
+	*x = OfpQueuePropMaxRate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropMaxRate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropMaxRate) ProtoMessage() {}
+
+func (x *OfpQueuePropMaxRate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[76]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropMaxRate.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{76}
+}
+
+func (x *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropMaxRate) GetRate() uint32 {
+	if x != nil {
+		return x.Rate
+	}
+	return 0
+}
+
+// Experimenter queue property description.
+type OfpQueuePropExperimenter struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PropHeader    *OfpQueuePropHeader    `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"` // prop: OFPQT_EXPERIMENTER
+	Experimenter  uint32                 `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
+	Data          []byte                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // Experimenter defined data.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueuePropExperimenter) Reset() {
+	*x = OfpQueuePropExperimenter{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueuePropExperimenter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueuePropExperimenter) ProtoMessage() {}
+
+func (x *OfpQueuePropExperimenter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[77]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueuePropExperimenter.ProtoReflect.Descriptor instead.
+func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{77}
+}
+
+func (x *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
+	if x != nil {
+		return x.PropHeader
+	}
+	return nil
+}
+
+func (x *OfpQueuePropExperimenter) GetExperimenter() uint32 {
+	if x != nil {
+		return x.Experimenter
+	}
+	return 0
+}
+
+func (x *OfpQueuePropExperimenter) GetData() []byte {
+	if x != nil {
+		return x.Data
+	}
+	return nil
+}
+
+// Full description for a queue.
+type OfpPacketQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	QueueId       uint32                 `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // id for the specific queue.
+	Port          uint32                 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`                      // Port this queue is attached to.
+	Properties    []*OfpQueuePropHeader  `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`           // List of properties.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpPacketQueue) Reset() {
+	*x = OfpPacketQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpPacketQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpPacketQueue) ProtoMessage() {}
+
+func (x *OfpPacketQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[78]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpPacketQueue.ProtoReflect.Descriptor instead.
+func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{78}
+}
+
+func (x *OfpPacketQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
+	if x != nil {
+		return x.Properties
+	}
+	return nil
+}
+
+// Query for port queue configuration.
+type OfpQueueGetConfigRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigRequest) Reset() {
+	*x = OfpQueueGetConfigRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigRequest) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[79]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{79}
+}
+
+func (x *OfpQueueGetConfigRequest) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+// Queue configuration for a given port.
+type OfpQueueGetConfigReply struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;
+	Port          uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
+	Queues        []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"` // List of configured queues.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueGetConfigReply) Reset() {
+	*x = OfpQueueGetConfigReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueGetConfigReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueGetConfigReply) ProtoMessage() {}
+
+func (x *OfpQueueGetConfigReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[80]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueGetConfigReply.ProtoReflect.Descriptor instead.
+func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{80}
+}
+
+func (x *OfpQueueGetConfigReply) GetPort() uint32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+func (x *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
+	if x != nil {
+		return x.Queues
+	}
+	return nil
+}
+
+// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
+type OfpActionSetQueue struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          uint32                 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`                      // OFPAT_SET_QUEUE.
+	QueueId       uint32                 `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // Queue id for the packets.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpActionSetQueue) Reset() {
+	*x = OfpActionSetQueue{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpActionSetQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpActionSetQueue) ProtoMessage() {}
+
+func (x *OfpActionSetQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[81]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpActionSetQueue.ProtoReflect.Descriptor instead.
+func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{81}
+}
+
+func (x *OfpActionSetQueue) GetType() uint32 {
+	if x != nil {
+		return x.Type
+	}
+	return 0
+}
+
+func (x *OfpActionSetQueue) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStatsRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`    // All ports if OFPP_ANY.
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"` // All queues if OFPQ_ALL.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStatsRequest) Reset() {
+	*x = OfpQueueStatsRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStatsRequest) ProtoMessage() {}
+
+func (x *OfpQueueStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[82]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStatsRequest.ProtoReflect.Descriptor instead.
+func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{82}
+}
+
+func (x *OfpQueueStatsRequest) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStatsRequest) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+type OfpQueueStats struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PortNo        uint32                 `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	QueueId       uint32                 `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`             // Queue i.d
+	TxBytes       uint64                 `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`             // Number of transmitted bytes.
+	TxPackets     uint64                 `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`       // Number of transmitted packets.
+	TxErrors      uint64                 `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`          // Number of packets dropped due to overrun.
+	DurationSec   uint32                 `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"` // Time queue has been alive in seconds.
+	DurationNsec  uint32                 `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpQueueStats) Reset() {
+	*x = OfpQueueStats{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpQueueStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpQueueStats) ProtoMessage() {}
+
+func (x *OfpQueueStats) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[83]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpQueueStats.ProtoReflect.Descriptor instead.
+func (*OfpQueueStats) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{83}
+}
+
+func (x *OfpQueueStats) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetQueueId() uint32 {
+	if x != nil {
+		return x.QueueId
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationSec() uint32 {
+	if x != nil {
+		return x.DurationSec
+	}
+	return 0
+}
+
+func (x *OfpQueueStats) GetDurationNsec() uint32 {
+	if x != nil {
+		return x.DurationNsec
+	}
+	return 0
+}
+
+// Role request and reply message.
+type OfpRoleRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+	Role          OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`  // One of OFPCR_ROLE_*.
+	GenerationId  uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"` // Master Election Generation Id
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OfpRoleRequest) Reset() {
+	*x = OfpRoleRequest{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpRoleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpRoleRequest) ProtoMessage() {}
+
+func (x *OfpRoleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[84]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpRoleRequest.ProtoReflect.Descriptor instead.
+func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{84}
+}
+
+func (x *OfpRoleRequest) GetRole() OfpControllerRole {
+	if x != nil {
+		return x.Role
+	}
+	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
+}
+
+func (x *OfpRoleRequest) GetGenerationId() uint64 {
+	if x != nil {
+		return x.GenerationId
+	}
+	return 0
+}
+
+// Asynchronous message configuration.
+type OfpAsyncConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+	PacketInMask    []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`          // Bitmasks of OFPR_* values.
+	PortStatusMask  []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`    // Bitmasks of OFPPR_* values.
+	FlowRemovedMask []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"` // Bitmasks of OFPRR_* values.
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *OfpAsyncConfig) Reset() {
+	*x = OfpAsyncConfig{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OfpAsyncConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OfpAsyncConfig) ProtoMessage() {}
+
+func (x *OfpAsyncConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[85]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OfpAsyncConfig.ProtoReflect.Descriptor instead.
+func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{85}
+}
+
+func (x *OfpAsyncConfig) GetPacketInMask() []uint32 {
+	if x != nil {
+		return x.PacketInMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetPortStatusMask() []uint32 {
+	if x != nil {
+		return x.PortStatusMask
+	}
+	return nil
+}
+
+func (x *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
+	if x != nil {
+		return x.FlowRemovedMask
+	}
+	return nil
+}
+
+type MeterModUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	MeterMod      *OfpMeterMod           `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterModUpdate) Reset() {
+	*x = MeterModUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterModUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterModUpdate) ProtoMessage() {}
+
+func (x *MeterModUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[86]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterModUpdate.ProtoReflect.Descriptor instead.
+func (*MeterModUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{86}
+}
+
+func (x *MeterModUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *MeterModUpdate) GetMeterMod() *OfpMeterMod {
+	if x != nil {
+		return x.MeterMod
+	}
+	return nil
+}
+
+func (x *MeterModUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type MeterStatsReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	MeterStats    []*OfpMeterStats       `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *MeterStatsReply) Reset() {
+	*x = MeterStatsReply{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MeterStatsReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeterStatsReply) ProtoMessage() {}
+
+func (x *MeterStatsReply) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[87]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeterStatsReply.ProtoReflect.Descriptor instead.
+func (*MeterStatsReply) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{87}
+}
+
+func (x *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
+	if x != nil {
+		return x.MeterStats
+	}
+	return nil
+}
+
+type FlowTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	FlowMod       *OfpFlowMod            `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowTableUpdate) Reset() {
+	*x = FlowTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowTableUpdate) ProtoMessage() {}
+
+func (x *FlowTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[88]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{88}
+}
+
+func (x *FlowTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
+	if x != nil {
+		return x.FlowMod
+	}
+	return nil
+}
+
+func (x *FlowTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type FlowGroupTableUpdate struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Device.id or LogicalDevice.id
+	GroupMod      *OfpGroupMod           `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
+	Xid           uint32                 `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"` //Transaction id associated with this request.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupTableUpdate) Reset() {
+	*x = FlowGroupTableUpdate{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupTableUpdate) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupTableUpdate) ProtoMessage() {}
+
+func (x *FlowGroupTableUpdate) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[89]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupTableUpdate.ProtoReflect.Descriptor instead.
+func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{89}
+}
+
+func (x *FlowGroupTableUpdate) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
+	if x != nil {
+		return x.GroupMod
+	}
+	return nil
+}
+
+func (x *FlowGroupTableUpdate) GetXid() uint32 {
+	if x != nil {
+		return x.Xid
+	}
+	return 0
+}
+
+type Flows struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpFlowStats        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Flows) Reset() {
+	*x = Flows{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Flows) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Flows) ProtoMessage() {}
+
+func (x *Flows) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[90]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Flows.ProtoReflect.Descriptor instead.
+func (*Flows) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{90}
+}
+
+func (x *Flows) GetItems() []*OfpFlowStats {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type Meters struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpMeterEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Meters) Reset() {
+	*x = Meters{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Meters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Meters) ProtoMessage() {}
+
+func (x *Meters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[91]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Meters.ProtoReflect.Descriptor instead.
+func (*Meters) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{91}
+}
+
+func (x *Meters) GetItems() []*OfpMeterEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowGroups struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OfpGroupEntry       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroups) Reset() {
+	*x = FlowGroups{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroups) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroups) ProtoMessage() {}
+
+func (x *FlowGroups) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[92]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroups.ProtoReflect.Descriptor instead.
+func (*FlowGroups) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{92}
+}
+
+func (x *FlowGroups) GetItems() []*OfpGroupEntry {
+	if x != nil {
+		return x.Items
+	}
+	return nil
+}
+
+type FlowChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *Flows                 `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *Flows                 `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowChanges) Reset() {
+	*x = FlowChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowChanges) ProtoMessage() {}
+
+func (x *FlowChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[93]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowChanges.ProtoReflect.Descriptor instead.
+func (*FlowChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{93}
+}
+
+func (x *FlowChanges) GetToAdd() *Flows {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowChanges) GetToRemove() *Flows {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+type FlowGroupChanges struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ToAdd         *FlowGroups            `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
+	ToRemove      *FlowGroups            `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
+	ToUpdate      *FlowGroups            `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowGroupChanges) Reset() {
+	*x = FlowGroupChanges{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowGroupChanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowGroupChanges) ProtoMessage() {}
+
+func (x *FlowGroupChanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[94]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowGroupChanges.ProtoReflect.Descriptor instead.
+func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{94}
+}
+
+func (x *FlowGroupChanges) GetToAdd() *FlowGroups {
+	if x != nil {
+		return x.ToAdd
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToRemove() *FlowGroups {
+	if x != nil {
+		return x.ToRemove
+	}
+	return nil
+}
+
+func (x *FlowGroupChanges) GetToUpdate() *FlowGroups {
+	if x != nil {
+		return x.ToUpdate
+	}
+	return nil
+}
+
+type PacketIn struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketIn      *OfpPacketIn           `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketIn) Reset() {
+	*x = PacketIn{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketIn) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketIn) ProtoMessage() {}
+
+func (x *PacketIn) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[95]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketIn.ProtoReflect.Descriptor instead.
+func (*PacketIn) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{95}
+}
+
+func (x *PacketIn) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketIn) GetPacketIn() *OfpPacketIn {
+	if x != nil {
+		return x.PacketIn
+	}
+	return nil
+}
+
+type PacketOut struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	PacketOut     *OfpPacketOut          `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketOut) Reset() {
+	*x = PacketOut{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketOut) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketOut) ProtoMessage() {}
+
+func (x *PacketOut) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[96]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketOut.ProtoReflect.Descriptor instead.
+func (*PacketOut) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{96}
+}
+
+func (x *PacketOut) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *PacketOut) GetPacketOut() *OfpPacketOut {
+	if x != nil {
+		return x.PacketOut
+	}
+	return nil
+}
+
+type ChangeEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // LogicalDevice.id
+	// Types that are valid to be assigned to Event:
+	//
+	//	*ChangeEvent_PortStatus
+	//	*ChangeEvent_Error
+	//	*ChangeEvent_DeviceStatus
+	Event         isChangeEvent_Event `protobuf_oneof:"event"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ChangeEvent) Reset() {
+	*x = ChangeEvent{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ChangeEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeEvent) ProtoMessage() {}
+
+func (x *ChangeEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[97]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangeEvent.ProtoReflect.Descriptor instead.
+func (*ChangeEvent) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{97}
+}
+
+func (x *ChangeEvent) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *ChangeEvent) GetEvent() isChangeEvent_Event {
+	if x != nil {
+		return x.Event
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetPortStatus() *OfpPortStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_PortStatus); ok {
+			return x.PortStatus
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetError() *OfpErrorMsg {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_Error); ok {
+			return x.Error
+		}
+	}
+	return nil
+}
+
+func (x *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
+	if x != nil {
+		if x, ok := x.Event.(*ChangeEvent_DeviceStatus); ok {
+			return x.DeviceStatus
+		}
+	}
+	return nil
+}
+
+type isChangeEvent_Event interface {
+	isChangeEvent_Event()
+}
+
+type ChangeEvent_PortStatus struct {
+	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
+}
+
+type ChangeEvent_Error struct {
+	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
+}
+
+type ChangeEvent_DeviceStatus struct {
+	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
+}
+
+func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
+
+func (*ChangeEvent_Error) isChangeEvent_Event() {}
+
+func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
+
+// Additional information required to process flow at device adapters
+type FlowMetadata struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Meters associated with flow-update to adapter
+	Meters        []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowMetadata) Reset() {
+	*x = FlowMetadata{}
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowMetadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowMetadata) ProtoMessage() {}
+
+func (x *FlowMetadata) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openflow_13_proto_msgTypes[98]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowMetadata.ProtoReflect.Descriptor instead.
+func (*FlowMetadata) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openflow_13_proto_rawDescGZIP(), []int{98}
+}
+
+func (x *FlowMetadata) GetMeters() []*OfpMeterConfig {
+	if x != nil {
+		return x.Meters
+	}
+	return nil
+}
+
+var File_voltha_protos_openflow_13_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_openflow_13_proto_rawDesc = "" +
+	"\n" +
+	"\x1fvoltha_protos/openflow_13.proto\x12\vopenflow_13\x1a\x1cgoogle/api/annotations.proto\"c\n" +
+	"\n" +
+	"ofp_header\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\rR\aversion\x12)\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x15.openflow_13.ofp_typeR\x04type\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"\xab\x01\n" +
+	"\x15ofp_hello_elem_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_hello_elem_typeR\x04type\x12Q\n" +
+	"\rversionbitmap\x18\x02 \x01(\v2).openflow_13.ofp_hello_elem_versionbitmapH\x00R\rversionbitmapB\t\n" +
+	"\aelement\"8\n" +
+	"\x1cofp_hello_elem_versionbitmap\x12\x18\n" +
+	"\abitmaps\x18\x02 \x03(\rR\abitmaps\"K\n" +
+	"\tofp_hello\x12>\n" +
+	"\belements\x18\x01 \x03(\v2\".openflow_13.ofp_hello_elem_headerR\belements\"M\n" +
+	"\x11ofp_switch_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\"\n" +
+	"\rmiss_send_len\x18\x02 \x01(\rR\vmissSendLen\"B\n" +
+	"\rofp_table_mod\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x16\n" +
+	"\x06config\x18\x02 \x01(\rR\x06config\"\xa0\x02\n" +
+	"\bofp_port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x12\n" +
+	"\x04name\x18\x03 \x01(\tR\x04name\x12\x16\n" +
+	"\x06config\x18\x04 \x01(\rR\x06config\x12\x14\n" +
+	"\x05state\x18\x05 \x01(\rR\x05state\x12\x12\n" +
+	"\x04curr\x18\x06 \x01(\rR\x04curr\x12\x1e\n" +
+	"\n" +
+	"advertised\x18\a \x01(\rR\n" +
+	"advertised\x12\x1c\n" +
+	"\tsupported\x18\b \x01(\rR\tsupported\x12\x12\n" +
+	"\x04peer\x18\t \x01(\rR\x04peer\x12\x1d\n" +
+	"\n" +
+	"curr_speed\x18\n" +
+	" \x01(\rR\tcurrSpeed\x12\x1b\n" +
+	"\tmax_speed\x18\v \x01(\rR\bmaxSpeed\"\xb5\x01\n" +
+	"\x13ofp_switch_features\x12\x1f\n" +
+	"\vdatapath_id\x18\x01 \x01(\x04R\n" +
+	"datapathId\x12\x1b\n" +
+	"\tn_buffers\x18\x02 \x01(\rR\bnBuffers\x12\x19\n" +
+	"\bn_tables\x18\x03 \x01(\rR\anTables\x12!\n" +
+	"\fauxiliary_id\x18\x04 \x01(\rR\vauxiliaryId\x12\"\n" +
+	"\fcapabilities\x18\x05 \x01(\rR\fcapabilities\"r\n" +
+	"\x0fofp_port_status\x124\n" +
+	"\x06reason\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_port_reasonR\x06reason\x12)\n" +
+	"\x04desc\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\x04desc\"O\n" +
+	"\x11ofp_device_status\x12:\n" +
+	"\x06status\x18\x01 \x01(\x0e2\".openflow_13.ofp_device_connectionR\x06status\"\x8a\x01\n" +
+	"\fofp_port_mod\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x17\n" +
+	"\ahw_addr\x18\x02 \x03(\rR\x06hwAddr\x12\x16\n" +
+	"\x06config\x18\x03 \x01(\rR\x06config\x12\x12\n" +
+	"\x04mask\x18\x04 \x01(\rR\x04mask\x12\x1c\n" +
+	"\tadvertise\x18\x05 \x01(\rR\tadvertise\"w\n" +
+	"\tofp_match\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_match_typeR\x04type\x129\n" +
+	"\n" +
+	"oxm_fields\x18\x02 \x03(\v2\x1a.openflow_13.ofp_oxm_fieldR\toxmFields\"\xea\x01\n" +
+	"\rofp_oxm_field\x127\n" +
+	"\toxm_class\x18\x01 \x01(\x0e2\x1a.openflow_13.ofp_oxm_classR\boxmClass\x12=\n" +
+	"\tofb_field\x18\x04 \x01(\v2\x1e.openflow_13.ofp_oxm_ofb_fieldH\x00R\bofbField\x12X\n" +
+	"\x12experimenter_field\x18\x05 \x01(\v2'.openflow_13.ofp_oxm_experimenter_fieldH\x00R\x11experimenterFieldB\a\n" +
+	"\x05field\"\xd7\x0e\n" +
+	"\x11ofp_oxm_ofb_field\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.oxm_ofb_field_typesR\x04type\x12\x19\n" +
+	"\bhas_mask\x18\x02 \x01(\bR\ahasMask\x12\x14\n" +
+	"\x04port\x18\x03 \x01(\rH\x00R\x04port\x12%\n" +
+	"\rphysical_port\x18\x04 \x01(\rH\x00R\fphysicalPort\x12'\n" +
+	"\x0etable_metadata\x18\x05 \x01(\x04H\x00R\rtableMetadata\x12\x19\n" +
+	"\aeth_dst\x18\x06 \x01(\fH\x00R\x06ethDst\x12\x19\n" +
+	"\aeth_src\x18\a \x01(\fH\x00R\x06ethSrc\x12\x1b\n" +
+	"\beth_type\x18\b \x01(\rH\x00R\aethType\x12\x1b\n" +
+	"\bvlan_vid\x18\t \x01(\rH\x00R\avlanVid\x12\x1b\n" +
+	"\bvlan_pcp\x18\n" +
+	" \x01(\rH\x00R\avlanPcp\x12\x19\n" +
+	"\aip_dscp\x18\v \x01(\rH\x00R\x06ipDscp\x12\x17\n" +
+	"\x06ip_ecn\x18\f \x01(\rH\x00R\x05ipEcn\x12\x1b\n" +
+	"\bip_proto\x18\r \x01(\rH\x00R\aipProto\x12\x1b\n" +
+	"\bipv4_src\x18\x0e \x01(\rH\x00R\aipv4Src\x12\x1b\n" +
+	"\bipv4_dst\x18\x0f \x01(\rH\x00R\aipv4Dst\x12\x19\n" +
+	"\atcp_src\x18\x10 \x01(\rH\x00R\x06tcpSrc\x12\x19\n" +
+	"\atcp_dst\x18\x11 \x01(\rH\x00R\x06tcpDst\x12\x19\n" +
+	"\audp_src\x18\x12 \x01(\rH\x00R\x06udpSrc\x12\x19\n" +
+	"\audp_dst\x18\x13 \x01(\rH\x00R\x06udpDst\x12\x1b\n" +
+	"\bsctp_src\x18\x14 \x01(\rH\x00R\asctpSrc\x12\x1b\n" +
+	"\bsctp_dst\x18\x15 \x01(\rH\x00R\asctpDst\x12!\n" +
+	"\vicmpv4_type\x18\x16 \x01(\rH\x00R\n" +
+	"icmpv4Type\x12!\n" +
+	"\vicmpv4_code\x18\x17 \x01(\rH\x00R\n" +
+	"icmpv4Code\x12\x17\n" +
+	"\x06arp_op\x18\x18 \x01(\rH\x00R\x05arpOp\x12\x19\n" +
+	"\aarp_spa\x18\x19 \x01(\rH\x00R\x06arpSpa\x12\x19\n" +
+	"\aarp_tpa\x18\x1a \x01(\rH\x00R\x06arpTpa\x12\x19\n" +
+	"\aarp_sha\x18\x1b \x01(\fH\x00R\x06arpSha\x12\x19\n" +
+	"\aarp_tha\x18\x1c \x01(\fH\x00R\x06arpTha\x12\x1b\n" +
+	"\bipv6_src\x18\x1d \x01(\fH\x00R\aipv6Src\x12\x1b\n" +
+	"\bipv6_dst\x18\x1e \x01(\fH\x00R\aipv6Dst\x12!\n" +
+	"\vipv6_flabel\x18\x1f \x01(\rH\x00R\n" +
+	"ipv6Flabel\x12!\n" +
+	"\vicmpv6_type\x18  \x01(\rH\x00R\n" +
+	"icmpv6Type\x12!\n" +
+	"\vicmpv6_code\x18! \x01(\rH\x00R\n" +
+	"icmpv6Code\x12&\n" +
+	"\x0eipv6_nd_target\x18\" \x01(\fH\x00R\fipv6NdTarget\x12 \n" +
+	"\vipv6_nd_ssl\x18# \x01(\fH\x00R\tipv6NdSsl\x12 \n" +
+	"\vipv6_nd_tll\x18$ \x01(\fH\x00R\tipv6NdTll\x12\x1f\n" +
+	"\n" +
+	"mpls_label\x18% \x01(\rH\x00R\tmplsLabel\x12\x19\n" +
+	"\ampls_tc\x18& \x01(\rH\x00R\x06mplsTc\x12\x1b\n" +
+	"\bmpls_bos\x18' \x01(\rH\x00R\amplsBos\x12\x1b\n" +
+	"\bpbb_isid\x18( \x01(\rH\x00R\apbbIsid\x12\x1d\n" +
+	"\ttunnel_id\x18) \x01(\x04H\x00R\btunnelId\x12!\n" +
+	"\vipv6_exthdr\x18* \x01(\rH\x00R\n" +
+	"ipv6Exthdr\x120\n" +
+	"\x13table_metadata_mask\x18i \x01(\x04H\x01R\x11tableMetadataMask\x12\"\n" +
+	"\feth_dst_mask\x18j \x01(\fH\x01R\n" +
+	"ethDstMask\x12\"\n" +
+	"\feth_src_mask\x18k \x01(\fH\x01R\n" +
+	"ethSrcMask\x12$\n" +
+	"\rvlan_vid_mask\x18m \x01(\rH\x01R\vvlanVidMask\x12$\n" +
+	"\ripv4_src_mask\x18r \x01(\rH\x01R\vipv4SrcMask\x12$\n" +
+	"\ripv4_dst_mask\x18s \x01(\rH\x01R\vipv4DstMask\x12\"\n" +
+	"\farp_spa_mask\x18} \x01(\rH\x01R\n" +
+	"arpSpaMask\x12\"\n" +
+	"\farp_tpa_mask\x18~ \x01(\rH\x01R\n" +
+	"arpTpaMask\x12%\n" +
+	"\ripv6_src_mask\x18\x81\x01 \x01(\fH\x01R\vipv6SrcMask\x12%\n" +
+	"\ripv6_dst_mask\x18\x82\x01 \x01(\fH\x01R\vipv6DstMask\x12+\n" +
+	"\x10ipv6_flabel_mask\x18\x83\x01 \x01(\rH\x01R\x0eipv6FlabelMask\x12%\n" +
+	"\rpbb_isid_mask\x18\x8c\x01 \x01(\rH\x01R\vpbbIsidMask\x12'\n" +
+	"\x0etunnel_id_mask\x18\x8d\x01 \x01(\x04H\x01R\ftunnelIdMask\x12+\n" +
+	"\x10ipv6_exthdr_mask\x18\x8e\x01 \x01(\rH\x01R\x0eipv6ExthdrMaskB\a\n" +
+	"\x05valueB\x06\n" +
+	"\x04mask\"_\n" +
+	"\x1aofp_oxm_experimenter_field\x12\x1d\n" +
+	"\n" +
+	"oxm_header\x18\x01 \x01(\rR\toxmHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\"\xb2\x04\n" +
+	"\n" +
+	"ofp_action\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.openflow_13.ofp_action_typeR\x04type\x128\n" +
+	"\x06output\x18\x02 \x01(\v2\x1e.openflow_13.ofp_action_outputH\x00R\x06output\x12=\n" +
+	"\bmpls_ttl\x18\x03 \x01(\v2 .openflow_13.ofp_action_mpls_ttlH\x00R\amplsTtl\x122\n" +
+	"\x04push\x18\x04 \x01(\v2\x1c.openflow_13.ofp_action_pushH\x00R\x04push\x12=\n" +
+	"\bpop_mpls\x18\x05 \x01(\v2 .openflow_13.ofp_action_pop_mplsH\x00R\apopMpls\x125\n" +
+	"\x05group\x18\x06 \x01(\v2\x1d.openflow_13.ofp_action_groupH\x00R\x05group\x127\n" +
+	"\x06nw_ttl\x18\a \x01(\v2\x1e.openflow_13.ofp_action_nw_ttlH\x00R\x05nwTtl\x12@\n" +
+	"\tset_field\x18\b \x01(\v2!.openflow_13.ofp_action_set_fieldH\x00R\bsetField\x12J\n" +
+	"\fexperimenter\x18\t \x01(\v2$.openflow_13.ofp_action_experimenterH\x00R\fexperimenterB\b\n" +
+	"\x06action\"@\n" +
+	"\x11ofp_action_output\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x12\x17\n" +
+	"\amax_len\x18\x02 \x01(\rR\x06maxLen\"0\n" +
+	"\x13ofp_action_mpls_ttl\x12\x19\n" +
+	"\bmpls_ttl\x18\x01 \x01(\rR\amplsTtl\"/\n" +
+	"\x0fofp_action_push\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"3\n" +
+	"\x13ofp_action_pop_mpls\x12\x1c\n" +
+	"\tethertype\x18\x01 \x01(\rR\tethertype\"-\n" +
+	"\x10ofp_action_group\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"*\n" +
+	"\x11ofp_action_nw_ttl\x12\x15\n" +
+	"\x06nw_ttl\x18\x01 \x01(\rR\x05nwTtl\"H\n" +
+	"\x14ofp_action_set_field\x120\n" +
+	"\x05field\x18\x01 \x01(\v2\x1a.openflow_13.ofp_oxm_fieldR\x05field\"Q\n" +
+	"\x17ofp_action_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\x9c\x03\n" +
+	"\x0fofp_instruction\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12H\n" +
+	"\n" +
+	"goto_table\x18\x02 \x01(\v2'.openflow_13.ofp_instruction_goto_tableH\x00R\tgotoTable\x12T\n" +
+	"\x0ewrite_metadata\x18\x03 \x01(\v2+.openflow_13.ofp_instruction_write_metadataH\x00R\rwriteMetadata\x12@\n" +
+	"\aactions\x18\x04 \x01(\v2$.openflow_13.ofp_instruction_actionsH\x00R\aactions\x12:\n" +
+	"\x05meter\x18\x05 \x01(\v2\".openflow_13.ofp_instruction_meterH\x00R\x05meter\x12O\n" +
+	"\fexperimenter\x18\x06 \x01(\v2).openflow_13.ofp_instruction_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"7\n" +
+	"\x1aofp_instruction_goto_table\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\"a\n" +
+	"\x1eofp_instruction_write_metadata\x12\x1a\n" +
+	"\bmetadata\x18\x01 \x01(\x04R\bmetadata\x12#\n" +
+	"\rmetadata_mask\x18\x02 \x01(\x04R\fmetadataMask\"L\n" +
+	"\x17ofp_instruction_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"2\n" +
+	"\x15ofp_instruction_meter\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"V\n" +
+	"\x1cofp_instruction_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x02 \x01(\fR\x04data\"\xdc\x03\n" +
+	"\fofp_flow_mod\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x02 \x01(\x04R\n" +
+	"cookieMask\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12;\n" +
+	"\acommand\x18\x04 \x01(\x0e2!.openflow_13.ofp_flow_mod_commandR\acommand\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x1a\n" +
+	"\bpriority\x18\a \x01(\rR\bpriority\x12\x1b\n" +
+	"\tbuffer_id\x18\b \x01(\rR\bbufferId\x12\x19\n" +
+	"\bout_port\x18\t \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\n" +
+	" \x01(\rR\boutGroup\x12\x14\n" +
+	"\x05flags\x18\v \x01(\rR\x05flags\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\x97\x01\n" +
+	"\n" +
+	"ofp_bucket\x12\x16\n" +
+	"\x06weight\x18\x01 \x01(\rR\x06weight\x12\x1d\n" +
+	"\n" +
+	"watch_port\x18\x02 \x01(\rR\twatchPort\x12\x1f\n" +
+	"\vwatch_group\x18\x03 \x01(\rR\n" +
+	"watchGroup\x121\n" +
+	"\aactions\x18\x04 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"\xcc\x01\n" +
+	"\rofp_group_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_group_mod_commandR\acommand\x12/\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x03 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x04 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"\x8d\x01\n" +
+	"\x0eofp_packet_out\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x12\x17\n" +
+	"\ain_port\x18\x02 \x01(\rR\x06inPort\x121\n" +
+	"\aactions\x18\x03 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\xdc\x01\n" +
+	"\rofp_packet_in\x12\x1b\n" +
+	"\tbuffer_id\x18\x01 \x01(\rR\bbufferId\x129\n" +
+	"\x06reason\x18\x02 \x01(\x0e2!.openflow_13.ofp_packet_in_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x03 \x01(\rR\atableId\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12,\n" +
+	"\x05match\x18\x05 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12\x12\n" +
+	"\x04data\x18\x06 \x01(\fR\x04data\"\x9d\x03\n" +
+	"\x10ofp_flow_removed\x12\x16\n" +
+	"\x06cookie\x18\x01 \x01(\x04R\x06cookie\x12\x1a\n" +
+	"\bpriority\x18\x02 \x01(\rR\bpriority\x12<\n" +
+	"\x06reason\x18\x03 \x01(\x0e2$.openflow_13.ofp_flow_removed_reasonR\x06reason\x12\x19\n" +
+	"\btable_id\x18\x04 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12!\n" +
+	"\fidle_timeout\x18\a \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\b \x01(\rR\vhardTimeout\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18y \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xdc\x02\n" +
+	"\x15ofp_meter_band_header\x124\n" +
+	"\x04type\x18\x01 \x01(\x0e2 .openflow_13.ofp_meter_band_typeR\x04type\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\x12\x1d\n" +
+	"\n" +
+	"burst_size\x18\x03 \x01(\rR\tburstSize\x126\n" +
+	"\x04drop\x18\x04 \x01(\v2 .openflow_13.ofp_meter_band_dropH\x00R\x04drop\x12J\n" +
+	"\vdscp_remark\x18\x05 \x01(\v2'.openflow_13.ofp_meter_band_dscp_remarkH\x00R\n" +
+	"dscpRemark\x12N\n" +
+	"\fexperimenter\x18\x06 \x01(\v2(.openflow_13.ofp_meter_band_experimenterH\x00R\fexperimenterB\x06\n" +
+	"\x04data\"\x15\n" +
+	"\x13ofp_meter_band_drop\";\n" +
+	"\x1aofp_meter_band_dscp_remark\x12\x1d\n" +
+	"\n" +
+	"prec_level\x18\x01 \x01(\rR\tprecLevel\"A\n" +
+	"\x1bofp_meter_band_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\"\xb8\x01\n" +
+	"\rofp_meter_mod\x12<\n" +
+	"\acommand\x18\x01 \x01(\x0e2\".openflow_13.ofp_meter_mod_commandR\acommand\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x03 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x04 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"|\n" +
+	"\rofp_error_msg\x12/\n" +
+	"\x06header\x18\x01 \x01(\v2\x17.openflow_13.ofp_headerR\x06header\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\rR\x04type\x12\x12\n" +
+	"\x04code\x18\x03 \x01(\rR\x04code\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"\x83\x01\n" +
+	"\x1aofp_error_experimenter_msg\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\"\n" +
+	"\fexperimenter\x18\x03 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x04 \x01(\fR\x04data\"v\n" +
+	"\x15ofp_multipart_request\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"t\n" +
+	"\x13ofp_multipart_reply\x123\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1f.openflow_13.ofp_multipart_typeR\x04type\x12\x14\n" +
+	"\x05flags\x18\x02 \x01(\rR\x05flags\x12\x12\n" +
+	"\x04body\x18\x03 \x01(\fR\x04body\"\x8f\x01\n" +
+	"\bofp_desc\x12\x19\n" +
+	"\bmfr_desc\x18\x01 \x01(\tR\amfrDesc\x12\x17\n" +
+	"\ahw_desc\x18\x02 \x01(\tR\x06hwDesc\x12\x17\n" +
+	"\asw_desc\x18\x03 \x01(\tR\x06swDesc\x12\x1d\n" +
+	"\n" +
+	"serial_num\x18\x04 \x01(\tR\tserialNum\x12\x17\n" +
+	"\adp_desc\x18\x05 \x01(\tR\x06dpDesc\"\xd2\x01\n" +
+	"\x16ofp_flow_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"\xc5\x03\n" +
+	"\x0eofp_flow_stats\x12\x0e\n" +
+	"\x02id\x18\x0e \x01(\x04R\x02id\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\fduration_sec\x18\x02 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x03 \x01(\rR\fdurationNsec\x12\x1a\n" +
+	"\bpriority\x18\x04 \x01(\rR\bpriority\x12!\n" +
+	"\fidle_timeout\x18\x05 \x01(\rR\vidleTimeout\x12!\n" +
+	"\fhard_timeout\x18\x06 \x01(\rR\vhardTimeout\x12\x14\n" +
+	"\x05flags\x18\a \x01(\rR\x05flags\x12\x16\n" +
+	"\x06cookie\x18\b \x01(\x04R\x06cookie\x12!\n" +
+	"\fpacket_count\x18\t \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\n" +
+	" \x01(\x04R\tbyteCount\x12,\n" +
+	"\x05match\x18\f \x01(\v2\x16.openflow_13.ofp_matchR\x05match\x12@\n" +
+	"\finstructions\x18\r \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"\xd7\x01\n" +
+	"\x1bofp_aggregate_stats_request\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x19\n" +
+	"\bout_port\x18\x02 \x01(\rR\aoutPort\x12\x1b\n" +
+	"\tout_group\x18\x03 \x01(\rR\boutGroup\x12\x16\n" +
+	"\x06cookie\x18\x04 \x01(\x04R\x06cookie\x12\x1f\n" +
+	"\vcookie_mask\x18\x05 \x01(\x04R\n" +
+	"cookieMask\x12,\n" +
+	"\x05match\x18\x06 \x01(\v2\x16.openflow_13.ofp_matchR\x05match\"|\n" +
+	"\x19ofp_aggregate_stats_reply\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x03 \x01(\rR\tflowCount\"\xed\x03\n" +
+	"\x1aofp_table_feature_property\x12<\n" +
+	"\x04type\x18\x01 \x01(\x0e2(.openflow_13.ofp_table_feature_prop_typeR\x04type\x12V\n" +
+	"\finstructions\x18\x02 \x01(\v20.openflow_13.ofp_table_feature_prop_instructionsH\x00R\finstructions\x12R\n" +
+	"\vnext_tables\x18\x03 \x01(\v2/.openflow_13.ofp_table_feature_prop_next_tablesH\x00R\n" +
+	"nextTables\x12G\n" +
+	"\aactions\x18\x04 \x01(\v2+.openflow_13.ofp_table_feature_prop_actionsH\x00R\aactions\x12;\n" +
+	"\x03oxm\x18\x05 \x01(\v2'.openflow_13.ofp_table_feature_prop_oxmH\x00R\x03oxm\x12V\n" +
+	"\fexperimenter\x18\x06 \x01(\v20.openflow_13.ofp_table_feature_prop_experimenterH\x00R\fexperimenterB\a\n" +
+	"\x05value\"g\n" +
+	"#ofp_table_feature_prop_instructions\x12@\n" +
+	"\finstructions\x18\x01 \x03(\v2\x1c.openflow_13.ofp_instructionR\finstructions\"J\n" +
+	"\"ofp_table_feature_prop_next_tables\x12$\n" +
+	"\x0enext_table_ids\x18\x01 \x03(\rR\fnextTableIds\"S\n" +
+	"\x1eofp_table_feature_prop_actions\x121\n" +
+	"\aactions\x18\x01 \x03(\v2\x17.openflow_13.ofp_actionR\aactions\"5\n" +
+	"\x1aofp_table_feature_prop_oxm\x12\x17\n" +
+	"\aoxm_ids\x18\x03 \x03(\rR\x06oxmIds\"\x91\x01\n" +
+	"#ofp_table_feature_prop_experimenter\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x03 \x01(\rR\aexpType\x12+\n" +
+	"\x11experimenter_data\x18\x04 \x03(\rR\x10experimenterData\"\x93\x02\n" +
+	"\x12ofp_table_features\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12%\n" +
+	"\x0emetadata_match\x18\x03 \x01(\x04R\rmetadataMatch\x12%\n" +
+	"\x0emetadata_write\x18\x04 \x01(\x04R\rmetadataWrite\x12\x16\n" +
+	"\x06config\x18\x05 \x01(\rR\x06config\x12\x1f\n" +
+	"\vmax_entries\x18\x06 \x01(\rR\n" +
+	"maxEntries\x12G\n" +
+	"\n" +
+	"properties\x18\a \x03(\v2'.openflow_13.ofp_table_feature_propertyR\n" +
+	"properties\"\x97\x01\n" +
+	"\x0fofp_table_stats\x12\x19\n" +
+	"\btable_id\x18\x01 \x01(\rR\atableId\x12!\n" +
+	"\factive_count\x18\x02 \x01(\rR\vactiveCount\x12!\n" +
+	"\flookup_count\x18\x03 \x01(\x04R\vlookupCount\x12#\n" +
+	"\rmatched_count\x18\x04 \x01(\x04R\fmatchedCount\"1\n" +
+	"\x16ofp_port_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\"\xdd\x03\n" +
+	"\x0eofp_port_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x02 \x01(\x04R\trxPackets\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x03 \x01(\x04R\ttxPackets\x12\x19\n" +
+	"\brx_bytes\x18\x04 \x01(\x04R\arxBytes\x12\x19\n" +
+	"\btx_bytes\x18\x05 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"rx_dropped\x18\x06 \x01(\x04R\trxDropped\x12\x1d\n" +
+	"\n" +
+	"tx_dropped\x18\a \x01(\x04R\ttxDropped\x12\x1b\n" +
+	"\trx_errors\x18\b \x01(\x04R\brxErrors\x12\x1b\n" +
+	"\ttx_errors\x18\t \x01(\x04R\btxErrors\x12 \n" +
+	"\frx_frame_err\x18\n" +
+	" \x01(\x04R\n" +
+	"rxFrameErr\x12\x1e\n" +
+	"\vrx_over_err\x18\v \x01(\x04R\trxOverErr\x12\x1c\n" +
+	"\n" +
+	"rx_crc_err\x18\f \x01(\x04R\brxCrcErr\x12\x1e\n" +
+	"\n" +
+	"collisions\x18\r \x01(\x04R\n" +
+	"collisions\x12!\n" +
+	"\fduration_sec\x18\x0e \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x0f \x01(\rR\fdurationNsec\"4\n" +
+	"\x17ofp_group_stats_request\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\"V\n" +
+	"\x12ofp_bucket_counter\x12!\n" +
+	"\fpacket_count\x18\x01 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x02 \x01(\x04R\tbyteCount\"\x97\x02\n" +
+	"\x0fofp_group_stats\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\x12\x1b\n" +
+	"\tref_count\x18\x02 \x01(\rR\brefCount\x12!\n" +
+	"\fpacket_count\x18\x03 \x01(\x04R\vpacketCount\x12\x1d\n" +
+	"\n" +
+	"byte_count\x18\x04 \x01(\x04R\tbyteCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12B\n" +
+	"\fbucket_stats\x18\a \x03(\v2\x1f.openflow_13.ofp_bucket_counterR\vbucketStats\"\x8f\x01\n" +
+	"\x0eofp_group_desc\x12/\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1b.openflow_13.ofp_group_typeR\x04type\x12\x19\n" +
+	"\bgroup_id\x18\x02 \x01(\rR\agroupId\x121\n" +
+	"\abuckets\x18\x03 \x03(\v2\x17.openflow_13.ofp_bucketR\abuckets\"v\n" +
+	"\x0fofp_group_entry\x12/\n" +
+	"\x04desc\x18\x01 \x01(\v2\x1b.openflow_13.ofp_group_descR\x04desc\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_group_statsR\x05stats\"\x87\x01\n" +
+	"\x12ofp_group_features\x12\x14\n" +
+	"\x05types\x18\x01 \x01(\rR\x05types\x12\"\n" +
+	"\fcapabilities\x18\x02 \x01(\rR\fcapabilities\x12\x1d\n" +
+	"\n" +
+	"max_groups\x18\x03 \x03(\rR\tmaxGroups\x12\x18\n" +
+	"\aactions\x18\x04 \x03(\rR\aactions\"8\n" +
+	"\x1bofp_meter_multipart_request\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\"j\n" +
+	"\x14ofp_meter_band_stats\x12*\n" +
+	"\x11packet_band_count\x18\x01 \x01(\x04R\x0fpacketBandCount\x12&\n" +
+	"\x0fbyte_band_count\x18\x02 \x01(\x04R\rbyteBandCount\"\xa1\x02\n" +
+	"\x0fofp_meter_stats\x12\x19\n" +
+	"\bmeter_id\x18\x01 \x01(\rR\ameterId\x12\x1d\n" +
+	"\n" +
+	"flow_count\x18\x02 \x01(\rR\tflowCount\x12&\n" +
+	"\x0fpacket_in_count\x18\x03 \x01(\x04R\rpacketInCount\x12\"\n" +
+	"\rbyte_in_count\x18\x04 \x01(\x04R\vbyteInCount\x12!\n" +
+	"\fduration_sec\x18\x05 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\x06 \x01(\rR\fdurationNsec\x12@\n" +
+	"\n" +
+	"band_stats\x18\a \x03(\v2!.openflow_13.ofp_meter_band_statsR\tbandStats\"}\n" +
+	"\x10ofp_meter_config\x12\x14\n" +
+	"\x05flags\x18\x01 \x01(\rR\x05flags\x12\x19\n" +
+	"\bmeter_id\x18\x02 \x01(\rR\ameterId\x128\n" +
+	"\x05bands\x18\x03 \x03(\v2\".openflow_13.ofp_meter_band_headerR\x05bands\"\xae\x01\n" +
+	"\x12ofp_meter_features\x12\x1b\n" +
+	"\tmax_meter\x18\x01 \x01(\rR\bmaxMeter\x12\x1d\n" +
+	"\n" +
+	"band_types\x18\x02 \x01(\rR\tbandTypes\x12\"\n" +
+	"\fcapabilities\x18\x03 \x01(\rR\fcapabilities\x12\x1b\n" +
+	"\tmax_bands\x18\x04 \x01(\rR\bmaxBands\x12\x1b\n" +
+	"\tmax_color\x18\x05 \x01(\rR\bmaxColor\"|\n" +
+	"\x0fofp_meter_entry\x125\n" +
+	"\x06config\x18\x01 \x01(\v2\x1d.openflow_13.ofp_meter_configR\x06config\x122\n" +
+	"\x05stats\x18\x02 \x01(\v2\x1c.openflow_13.ofp_meter_statsR\x05stats\"v\n" +
+	"!ofp_experimenter_multipart_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"l\n" +
+	"\x17ofp_experimenter_header\x12\"\n" +
+	"\fexperimenter\x18\x01 \x01(\rR\fexperimenter\x12\x19\n" +
+	"\bexp_type\x18\x02 \x01(\rR\aexpType\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"E\n" +
+	"\x15ofp_queue_prop_header\x12\x1a\n" +
+	"\bproperty\x18\x01 \x01(\rR\bproperty\x12\x10\n" +
+	"\x03len\x18\x02 \x01(\rR\x03len\"r\n" +
+	"\x17ofp_queue_prop_min_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"r\n" +
+	"\x17ofp_queue_prop_max_rate\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\x12\n" +
+	"\x04rate\x18\x02 \x01(\rR\x04rate\"\x9a\x01\n" +
+	"\x1bofp_queue_prop_experimenter\x12C\n" +
+	"\vprop_header\x18\x01 \x01(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"propHeader\x12\"\n" +
+	"\fexperimenter\x18\x02 \x01(\rR\fexperimenter\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\fR\x04data\"\x85\x01\n" +
+	"\x10ofp_packet_queue\x12\x19\n" +
+	"\bqueue_id\x18\x01 \x01(\rR\aqueueId\x12\x12\n" +
+	"\x04port\x18\x02 \x01(\rR\x04port\x12B\n" +
+	"\n" +
+	"properties\x18\x04 \x03(\v2\".openflow_13.ofp_queue_prop_headerR\n" +
+	"properties\"2\n" +
+	"\x1cofp_queue_get_config_request\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\"g\n" +
+	"\x1aofp_queue_get_config_reply\x12\x12\n" +
+	"\x04port\x18\x01 \x01(\rR\x04port\x125\n" +
+	"\x06queues\x18\x02 \x03(\v2\x1d.openflow_13.ofp_packet_queueR\x06queues\"E\n" +
+	"\x14ofp_action_set_queue\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\rR\x04type\x12\x19\n" +
+	"\bqueue_id\x18\x03 \x01(\rR\aqueueId\"M\n" +
+	"\x17ofp_queue_stats_request\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\"\xe4\x01\n" +
+	"\x0fofp_queue_stats\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x19\n" +
+	"\bqueue_id\x18\x02 \x01(\rR\aqueueId\x12\x19\n" +
+	"\btx_bytes\x18\x03 \x01(\x04R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x04 \x01(\x04R\ttxPackets\x12\x1b\n" +
+	"\ttx_errors\x18\x05 \x01(\x04R\btxErrors\x12!\n" +
+	"\fduration_sec\x18\x06 \x01(\rR\vdurationSec\x12#\n" +
+	"\rduration_nsec\x18\a \x01(\rR\fdurationNsec\"m\n" +
+	"\x10ofp_role_request\x124\n" +
+	"\x04role\x18\x01 \x01(\x0e2 .openflow_13.ofp_controller_roleR\x04role\x12#\n" +
+	"\rgeneration_id\x18\x02 \x01(\x04R\fgenerationId\"\x8e\x01\n" +
+	"\x10ofp_async_config\x12$\n" +
+	"\x0epacket_in_mask\x18\x01 \x03(\rR\fpacketInMask\x12(\n" +
+	"\x10port_status_mask\x18\x02 \x03(\rR\x0eportStatusMask\x12*\n" +
+	"\x11flow_removed_mask\x18\x03 \x03(\rR\x0fflowRemovedMask\"k\n" +
+	"\x0eMeterModUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tmeter_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_meter_modR\bmeterMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"P\n" +
+	"\x0fMeterStatsReply\x12=\n" +
+	"\vmeter_stats\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_statsR\n" +
+	"meterStats\"i\n" +
+	"\x0fFlowTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x124\n" +
+	"\bflow_mod\x18\x02 \x01(\v2\x19.openflow_13.ofp_flow_modR\aflowMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\"q\n" +
+	"\x14FlowGroupTableUpdate\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tgroup_mod\x18\x02 \x01(\v2\x1a.openflow_13.ofp_group_modR\bgroupMod\x12\x10\n" +
+	"\x03xid\x18\x03 \x01(\rR\x03xid\":\n" +
+	"\x05Flows\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.openflow_13.ofp_flow_statsR\x05items\"<\n" +
+	"\x06Meters\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_meter_entryR\x05items\"@\n" +
+	"\n" +
+	"FlowGroups\x122\n" +
+	"\x05items\x18\x01 \x03(\v2\x1c.openflow_13.ofp_group_entryR\x05items\"i\n" +
+	"\vFlowChanges\x12)\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x12.openflow_13.FlowsR\x05toAdd\x12/\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x12.openflow_13.FlowsR\btoRemove\"\xae\x01\n" +
+	"\x10FlowGroupChanges\x12.\n" +
+	"\x06to_add\x18\x01 \x01(\v2\x17.openflow_13.FlowGroupsR\x05toAdd\x124\n" +
+	"\tto_remove\x18\x02 \x01(\v2\x17.openflow_13.FlowGroupsR\btoRemove\x124\n" +
+	"\tto_update\x18\x03 \x01(\v2\x17.openflow_13.FlowGroupsR\btoUpdate\"S\n" +
+	"\bPacketIn\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x127\n" +
+	"\tpacket_in\x18\x02 \x01(\v2\x1a.openflow_13.ofp_packet_inR\bpacketIn\"W\n" +
+	"\tPacketOut\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12:\n" +
+	"\n" +
+	"packet_out\x18\x02 \x01(\v2\x1b.openflow_13.ofp_packet_outR\tpacketOut\"\xe2\x01\n" +
+	"\vChangeEvent\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12?\n" +
+	"\vport_status\x18\x02 \x01(\v2\x1c.openflow_13.ofp_port_statusH\x00R\n" +
+	"portStatus\x122\n" +
+	"\x05error\x18\x03 \x01(\v2\x1a.openflow_13.ofp_error_msgH\x00R\x05error\x12E\n" +
+	"\rdevice_status\x18\x04 \x01(\v2\x1e.openflow_13.ofp_device_statusH\x00R\fdeviceStatusB\a\n" +
+	"\x05event\"E\n" +
+	"\fFlowMetadata\x125\n" +
+	"\x06meters\x18\x01 \x03(\v2\x1d.openflow_13.ofp_meter_configR\x06meters*\xd5\x01\n" +
+	"\vofp_port_no\x12\x10\n" +
+	"\fOFPP_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPP_MAX\x10\x80\xfe\xff\xff\a\x12\x14\n" +
+	"\fOFPP_IN_PORT\x10\xf8\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_TABLE\x10\xf9\xff\xff\xff\a\x12\x13\n" +
+	"\vOFPP_NORMAL\x10\xfa\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_FLOOD\x10\xfb\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ALL\x10\xfc\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPP_CONTROLLER\x10\xfd\xff\xff\xff\a\x12\x12\n" +
+	"\n" +
+	"OFPP_LOCAL\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPP_ANY\x10\xff\xff\xff\xff\a*\xc8\x05\n" +
+	"\bofp_type\x12\x0e\n" +
+	"\n" +
+	"OFPT_HELLO\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPT_ERROR\x10\x01\x12\x15\n" +
+	"\x11OFPT_ECHO_REQUEST\x10\x02\x12\x13\n" +
+	"\x0fOFPT_ECHO_REPLY\x10\x03\x12\x15\n" +
+	"\x11OFPT_EXPERIMENTER\x10\x04\x12\x19\n" +
+	"\x15OFPT_FEATURES_REQUEST\x10\x05\x12\x17\n" +
+	"\x13OFPT_FEATURES_REPLY\x10\x06\x12\x1b\n" +
+	"\x17OFPT_GET_CONFIG_REQUEST\x10\a\x12\x19\n" +
+	"\x15OFPT_GET_CONFIG_REPLY\x10\b\x12\x13\n" +
+	"\x0fOFPT_SET_CONFIG\x10\t\x12\x12\n" +
+	"\x0eOFPT_PACKET_IN\x10\n" +
+	"\x12\x15\n" +
+	"\x11OFPT_FLOW_REMOVED\x10\v\x12\x14\n" +
+	"\x10OFPT_PORT_STATUS\x10\f\x12\x13\n" +
+	"\x0fOFPT_PACKET_OUT\x10\r\x12\x11\n" +
+	"\rOFPT_FLOW_MOD\x10\x0e\x12\x12\n" +
+	"\x0eOFPT_GROUP_MOD\x10\x0f\x12\x11\n" +
+	"\rOFPT_PORT_MOD\x10\x10\x12\x12\n" +
+	"\x0eOFPT_TABLE_MOD\x10\x11\x12\x1a\n" +
+	"\x16OFPT_MULTIPART_REQUEST\x10\x12\x12\x18\n" +
+	"\x14OFPT_MULTIPART_REPLY\x10\x13\x12\x18\n" +
+	"\x14OFPT_BARRIER_REQUEST\x10\x14\x12\x16\n" +
+	"\x12OFPT_BARRIER_REPLY\x10\x15\x12!\n" +
+	"\x1dOFPT_QUEUE_GET_CONFIG_REQUEST\x10\x16\x12\x1f\n" +
+	"\x1bOFPT_QUEUE_GET_CONFIG_REPLY\x10\x17\x12\x15\n" +
+	"\x11OFPT_ROLE_REQUEST\x10\x18\x12\x13\n" +
+	"\x0fOFPT_ROLE_REPLY\x10\x19\x12\x1a\n" +
+	"\x16OFPT_GET_ASYNC_REQUEST\x10\x1a\x12\x18\n" +
+	"\x14OFPT_GET_ASYNC_REPLY\x10\x1b\x12\x12\n" +
+	"\x0eOFPT_SET_ASYNC\x10\x1c\x12\x12\n" +
+	"\x0eOFPT_METER_MOD\x10\x1d*C\n" +
+	"\x13ofp_hello_elem_type\x12\x12\n" +
+	"\x0eOFPHET_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPHET_VERSIONBITMAP\x10\x01*e\n" +
+	"\x10ofp_config_flags\x12\x14\n" +
+	"\x10OFPC_FRAG_NORMAL\x10\x00\x12\x12\n" +
+	"\x0eOFPC_FRAG_DROP\x10\x01\x12\x13\n" +
+	"\x0fOFPC_FRAG_REASM\x10\x02\x12\x12\n" +
+	"\x0eOFPC_FRAG_MASK\x10\x03*@\n" +
+	"\x10ofp_table_config\x12\x11\n" +
+	"\rOFPTC_INVALID\x10\x00\x12\x19\n" +
+	"\x15OFPTC_DEPRECATED_MASK\x10\x03*>\n" +
+	"\tofp_table\x12\x11\n" +
+	"\rOFPTT_INVALID\x10\x00\x12\x0e\n" +
+	"\tOFPTT_MAX\x10\xfe\x01\x12\x0e\n" +
+	"\tOFPTT_ALL\x10\xff\x01*\xbb\x01\n" +
+	"\x10ofp_capabilities\x12\x10\n" +
+	"\fOFPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPC_FLOW_STATS\x10\x01\x12\x14\n" +
+	"\x10OFPC_TABLE_STATS\x10\x02\x12\x13\n" +
+	"\x0fOFPC_PORT_STATS\x10\x04\x12\x14\n" +
+	"\x10OFPC_GROUP_STATS\x10\b\x12\x11\n" +
+	"\rOFPC_IP_REASM\x10 \x12\x14\n" +
+	"\x10OFPC_QUEUE_STATS\x10@\x12\x16\n" +
+	"\x11OFPC_PORT_BLOCKED\x10\x80\x02*v\n" +
+	"\x0fofp_port_config\x12\x11\n" +
+	"\rOFPPC_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPC_PORT_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPC_NO_RECV\x10\x04\x12\x10\n" +
+	"\fOFPPC_NO_FWD\x10 \x12\x16\n" +
+	"\x12OFPPC_NO_PACKET_IN\x10@*[\n" +
+	"\x0eofp_port_state\x12\x11\n" +
+	"\rOFPPS_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPPS_LINK_DOWN\x10\x01\x12\x11\n" +
+	"\rOFPPS_BLOCKED\x10\x02\x12\x0e\n" +
+	"\n" +
+	"OFPPS_LIVE\x10\x04*\xdd\x02\n" +
+	"\x11ofp_port_features\x12\x11\n" +
+	"\rOFPPF_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPPF_10MB_HD\x10\x01\x12\x11\n" +
+	"\rOFPPF_10MB_FD\x10\x02\x12\x12\n" +
+	"\x0eOFPPF_100MB_HD\x10\x04\x12\x12\n" +
+	"\x0eOFPPF_100MB_FD\x10\b\x12\x10\n" +
+	"\fOFPPF_1GB_HD\x10\x10\x12\x10\n" +
+	"\fOFPPF_1GB_FD\x10 \x12\x11\n" +
+	"\rOFPPF_10GB_FD\x10@\x12\x12\n" +
+	"\rOFPPF_40GB_FD\x10\x80\x01\x12\x13\n" +
+	"\x0eOFPPF_100GB_FD\x10\x80\x02\x12\x11\n" +
+	"\fOFPPF_1TB_FD\x10\x80\x04\x12\x10\n" +
+	"\vOFPPF_OTHER\x10\x80\b\x12\x11\n" +
+	"\fOFPPF_COPPER\x10\x80\x10\x12\x10\n" +
+	"\vOFPPF_FIBER\x10\x80 \x12\x12\n" +
+	"\rOFPPF_AUTONEG\x10\x80@\x12\x11\n" +
+	"\vOFPPF_PAUSE\x10\x80\x80\x01\x12\x16\n" +
+	"\x10OFPPF_PAUSE_ASYM\x10\x80\x80\x02*D\n" +
+	"\x0fofp_port_reason\x12\r\n" +
+	"\tOFPPR_ADD\x10\x00\x12\x10\n" +
+	"\fOFPPR_DELETE\x10\x01\x12\x10\n" +
+	"\fOFPPR_MODIFY\x10\x02*F\n" +
+	"\x15ofp_device_connection\x12\x14\n" +
+	"\x10OFPDEV_CONNECTED\x10\x00\x12\x17\n" +
+	"\x13OFPDEV_DISCONNECTED\x10\x01*3\n" +
+	"\x0eofp_match_type\x12\x12\n" +
+	"\x0eOFPMT_STANDARD\x10\x00\x12\r\n" +
+	"\tOFPMT_OXM\x10\x01*k\n" +
+	"\rofp_oxm_class\x12\x10\n" +
+	"\fOFPXMC_NXM_0\x10\x00\x12\x10\n" +
+	"\fOFPXMC_NXM_1\x10\x01\x12\x1b\n" +
+	"\x15OFPXMC_OPENFLOW_BASIC\x10\x80\x80\x02\x12\x19\n" +
+	"\x13OFPXMC_EXPERIMENTER\x10\xff\xff\x03*\x90\b\n" +
+	"\x13oxm_ofb_field_types\x12\x16\n" +
+	"\x12OFPXMT_OFB_IN_PORT\x10\x00\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IN_PHY_PORT\x10\x01\x12\x17\n" +
+	"\x13OFPXMT_OFB_METADATA\x10\x02\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_DST\x10\x03\x12\x16\n" +
+	"\x12OFPXMT_OFB_ETH_SRC\x10\x04\x12\x17\n" +
+	"\x13OFPXMT_OFB_ETH_TYPE\x10\x05\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_VID\x10\x06\x12\x17\n" +
+	"\x13OFPXMT_OFB_VLAN_PCP\x10\a\x12\x16\n" +
+	"\x12OFPXMT_OFB_IP_DSCP\x10\b\x12\x15\n" +
+	"\x11OFPXMT_OFB_IP_ECN\x10\t\x12\x17\n" +
+	"\x13OFPXMT_OFB_IP_PROTO\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_SRC\x10\v\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV4_DST\x10\f\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_SRC\x10\r\x12\x16\n" +
+	"\x12OFPXMT_OFB_TCP_DST\x10\x0e\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_SRC\x10\x0f\x12\x16\n" +
+	"\x12OFPXMT_OFB_UDP_DST\x10\x10\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_SRC\x10\x11\x12\x17\n" +
+	"\x13OFPXMT_OFB_SCTP_DST\x10\x12\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_TYPE\x10\x13\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV4_CODE\x10\x14\x12\x15\n" +
+	"\x11OFPXMT_OFB_ARP_OP\x10\x15\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SPA\x10\x16\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_TPA\x10\x17\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_SHA\x10\x18\x12\x16\n" +
+	"\x12OFPXMT_OFB_ARP_THA\x10\x19\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_SRC\x10\x1a\x12\x17\n" +
+	"\x13OFPXMT_OFB_IPV6_DST\x10\x1b\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_FLABEL\x10\x1c\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_TYPE\x10\x1d\x12\x1a\n" +
+	"\x16OFPXMT_OFB_ICMPV6_CODE\x10\x1e\x12\x1d\n" +
+	"\x19OFPXMT_OFB_IPV6_ND_TARGET\x10\x1f\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_SLL\x10 \x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_ND_TLL\x10!\x12\x19\n" +
+	"\x15OFPXMT_OFB_MPLS_LABEL\x10\"\x12\x16\n" +
+	"\x12OFPXMT_OFB_MPLS_TC\x10#\x12\x17\n" +
+	"\x13OFPXMT_OFB_MPLS_BOS\x10$\x12\x17\n" +
+	"\x13OFPXMT_OFB_PBB_ISID\x10%\x12\x18\n" +
+	"\x14OFPXMT_OFB_TUNNEL_ID\x10&\x12\x1a\n" +
+	"\x16OFPXMT_OFB_IPV6_EXTHDR\x10'*3\n" +
+	"\vofp_vlan_id\x12\x0f\n" +
+	"\vOFPVID_NONE\x10\x00\x12\x13\n" +
+	"\x0eOFPVID_PRESENT\x10\x80 *\xc9\x01\n" +
+	"\x14ofp_ipv6exthdr_flags\x12\x12\n" +
+	"\x0eOFPIEH_INVALID\x10\x00\x12\x11\n" +
+	"\rOFPIEH_NONEXT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"OFPIEH_ESP\x10\x02\x12\x0f\n" +
+	"\vOFPIEH_AUTH\x10\x04\x12\x0f\n" +
+	"\vOFPIEH_DEST\x10\b\x12\x0f\n" +
+	"\vOFPIEH_FRAG\x10\x10\x12\x11\n" +
+	"\rOFPIEH_ROUTER\x10 \x12\x0e\n" +
+	"\n" +
+	"OFPIEH_HOP\x10@\x12\x11\n" +
+	"\fOFPIEH_UNREP\x10\x80\x01\x12\x11\n" +
+	"\fOFPIEH_UNSEQ\x10\x80\x02*\xfc\x02\n" +
+	"\x0fofp_action_type\x12\x10\n" +
+	"\fOFPAT_OUTPUT\x10\x00\x12\x16\n" +
+	"\x12OFPAT_COPY_TTL_OUT\x10\v\x12\x15\n" +
+	"\x11OFPAT_COPY_TTL_IN\x10\f\x12\x16\n" +
+	"\x12OFPAT_SET_MPLS_TTL\x10\x0f\x12\x16\n" +
+	"\x12OFPAT_DEC_MPLS_TTL\x10\x10\x12\x13\n" +
+	"\x0fOFPAT_PUSH_VLAN\x10\x11\x12\x12\n" +
+	"\x0eOFPAT_POP_VLAN\x10\x12\x12\x13\n" +
+	"\x0fOFPAT_PUSH_MPLS\x10\x13\x12\x12\n" +
+	"\x0eOFPAT_POP_MPLS\x10\x14\x12\x13\n" +
+	"\x0fOFPAT_SET_QUEUE\x10\x15\x12\x0f\n" +
+	"\vOFPAT_GROUP\x10\x16\x12\x14\n" +
+	"\x10OFPAT_SET_NW_TTL\x10\x17\x12\x14\n" +
+	"\x10OFPAT_DEC_NW_TTL\x10\x18\x12\x13\n" +
+	"\x0fOFPAT_SET_FIELD\x10\x19\x12\x12\n" +
+	"\x0eOFPAT_PUSH_PBB\x10\x1a\x12\x11\n" +
+	"\rOFPAT_POP_PBB\x10\x1b\x12\x18\n" +
+	"\x12OFPAT_EXPERIMENTER\x10\xff\xff\x03*V\n" +
+	"\x16ofp_controller_max_len\x12\x12\n" +
+	"\x0eOFPCML_INVALID\x10\x00\x12\x10\n" +
+	"\n" +
+	"OFPCML_MAX\x10\xe5\xff\x03\x12\x16\n" +
+	"\x10OFPCML_NO_BUFFER\x10\xff\xff\x03*\xcf\x01\n" +
+	"\x14ofp_instruction_type\x12\x11\n" +
+	"\rOFPIT_INVALID\x10\x00\x12\x14\n" +
+	"\x10OFPIT_GOTO_TABLE\x10\x01\x12\x18\n" +
+	"\x14OFPIT_WRITE_METADATA\x10\x02\x12\x17\n" +
+	"\x13OFPIT_WRITE_ACTIONS\x10\x03\x12\x17\n" +
+	"\x13OFPIT_APPLY_ACTIONS\x10\x04\x12\x17\n" +
+	"\x13OFPIT_CLEAR_ACTIONS\x10\x05\x12\x0f\n" +
+	"\vOFPIT_METER\x10\x06\x12\x18\n" +
+	"\x12OFPIT_EXPERIMENTER\x10\xff\xff\x03*{\n" +
+	"\x14ofp_flow_mod_command\x12\r\n" +
+	"\tOFPFC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPFC_MODIFY\x10\x01\x12\x17\n" +
+	"\x13OFPFC_MODIFY_STRICT\x10\x02\x12\x10\n" +
+	"\fOFPFC_DELETE\x10\x03\x12\x17\n" +
+	"\x13OFPFC_DELETE_STRICT\x10\x04*\xa3\x01\n" +
+	"\x12ofp_flow_mod_flags\x12\x11\n" +
+	"\rOFPFF_INVALID\x10\x00\x12\x17\n" +
+	"\x13OFPFF_SEND_FLOW_REM\x10\x01\x12\x17\n" +
+	"\x13OFPFF_CHECK_OVERLAP\x10\x02\x12\x16\n" +
+	"\x12OFPFF_RESET_COUNTS\x10\x04\x12\x17\n" +
+	"\x13OFPFF_NO_PKT_COUNTS\x10\b\x12\x17\n" +
+	"\x13OFPFF_NO_BYT_COUNTS\x10\x10*S\n" +
+	"\tofp_group\x12\x10\n" +
+	"\fOFPG_INVALID\x10\x00\x12\x10\n" +
+	"\bOFPG_MAX\x10\x80\xfe\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ALL\x10\xfc\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPG_ANY\x10\xff\xff\xff\xff\a*J\n" +
+	"\x15ofp_group_mod_command\x12\r\n" +
+	"\tOFPGC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPGC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPGC_DELETE\x10\x02*S\n" +
+	"\x0eofp_group_type\x12\r\n" +
+	"\tOFPGT_ALL\x10\x00\x12\x10\n" +
+	"\fOFPGT_SELECT\x10\x01\x12\x12\n" +
+	"\x0eOFPGT_INDIRECT\x10\x02\x12\f\n" +
+	"\bOFPGT_FF\x10\x03*P\n" +
+	"\x14ofp_packet_in_reason\x12\x11\n" +
+	"\rOFPR_NO_MATCH\x10\x00\x12\x0f\n" +
+	"\vOFPR_ACTION\x10\x01\x12\x14\n" +
+	"\x10OFPR_INVALID_TTL\x10\x02*\x8b\x01\n" +
+	"\x17ofp_flow_removed_reason\x12\x16\n" +
+	"\x12OFPRR_IDLE_TIMEOUT\x10\x00\x12\x16\n" +
+	"\x12OFPRR_HARD_TIMEOUT\x10\x01\x12\x10\n" +
+	"\fOFPRR_DELETE\x10\x02\x12\x16\n" +
+	"\x12OFPRR_GROUP_DELETE\x10\x03\x12\x16\n" +
+	"\x12OFPRR_METER_DELETE\x10\x04*n\n" +
+	"\tofp_meter\x12\r\n" +
+	"\tOFPM_ZERO\x10\x00\x12\x10\n" +
+	"\bOFPM_MAX\x10\x80\x80\xfc\xff\a\x12\x15\n" +
+	"\rOFPM_SLOWPATH\x10\xfd\xff\xff\xff\a\x12\x17\n" +
+	"\x0fOFPM_CONTROLLER\x10\xfe\xff\xff\xff\a\x12\x10\n" +
+	"\bOFPM_ALL\x10\xff\xff\xff\xff\a*m\n" +
+	"\x13ofp_meter_band_type\x12\x12\n" +
+	"\x0eOFPMBT_INVALID\x10\x00\x12\x0f\n" +
+	"\vOFPMBT_DROP\x10\x01\x12\x16\n" +
+	"\x12OFPMBT_DSCP_REMARK\x10\x02\x12\x19\n" +
+	"\x13OFPMBT_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x15ofp_meter_mod_command\x12\r\n" +
+	"\tOFPMC_ADD\x10\x00\x12\x10\n" +
+	"\fOFPMC_MODIFY\x10\x01\x12\x10\n" +
+	"\fOFPMC_DELETE\x10\x02*g\n" +
+	"\x0fofp_meter_flags\x12\x11\n" +
+	"\rOFPMF_INVALID\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMF_KBPS\x10\x01\x12\x0f\n" +
+	"\vOFPMF_PKTPS\x10\x02\x12\x0f\n" +
+	"\vOFPMF_BURST\x10\x04\x12\x0f\n" +
+	"\vOFPMF_STATS\x10\b*\xa4\x03\n" +
+	"\x0eofp_error_type\x12\x16\n" +
+	"\x12OFPET_HELLO_FAILED\x10\x00\x12\x15\n" +
+	"\x11OFPET_BAD_REQUEST\x10\x01\x12\x14\n" +
+	"\x10OFPET_BAD_ACTION\x10\x02\x12\x19\n" +
+	"\x15OFPET_BAD_INSTRUCTION\x10\x03\x12\x13\n" +
+	"\x0fOFPET_BAD_MATCH\x10\x04\x12\x19\n" +
+	"\x15OFPET_FLOW_MOD_FAILED\x10\x05\x12\x1a\n" +
+	"\x16OFPET_GROUP_MOD_FAILED\x10\x06\x12\x19\n" +
+	"\x15OFPET_PORT_MOD_FAILED\x10\a\x12\x1a\n" +
+	"\x16OFPET_TABLE_MOD_FAILED\x10\b\x12\x19\n" +
+	"\x15OFPET_QUEUE_OP_FAILED\x10\t\x12\x1e\n" +
+	"\x1aOFPET_SWITCH_CONFIG_FAILED\x10\n" +
+	"\x12\x1d\n" +
+	"\x19OFPET_ROLE_REQUEST_FAILED\x10\v\x12\x1a\n" +
+	"\x16OFPET_METER_MOD_FAILED\x10\f\x12\x1f\n" +
+	"\x1bOFPET_TABLE_FEATURES_FAILED\x10\r\x12\x18\n" +
+	"\x12OFPET_EXPERIMENTER\x10\xff\xff\x03*B\n" +
+	"\x15ofp_hello_failed_code\x12\x17\n" +
+	"\x13OFPHFC_INCOMPATIBLE\x10\x00\x12\x10\n" +
+	"\fOFPHFC_EPERM\x10\x01*\xed\x02\n" +
+	"\x14ofp_bad_request_code\x12\x16\n" +
+	"\x12OFPBRC_BAD_VERSION\x10\x00\x12\x13\n" +
+	"\x0fOFPBRC_BAD_TYPE\x10\x01\x12\x18\n" +
+	"\x14OFPBRC_BAD_MULTIPART\x10\x02\x12\x1b\n" +
+	"\x17OFPBRC_BAD_EXPERIMENTER\x10\x03\x12\x17\n" +
+	"\x13OFPBRC_BAD_EXP_TYPE\x10\x04\x12\x10\n" +
+	"\fOFPBRC_EPERM\x10\x05\x12\x12\n" +
+	"\x0eOFPBRC_BAD_LEN\x10\x06\x12\x17\n" +
+	"\x13OFPBRC_BUFFER_EMPTY\x10\a\x12\x19\n" +
+	"\x15OFPBRC_BUFFER_UNKNOWN\x10\b\x12\x17\n" +
+	"\x13OFPBRC_BAD_TABLE_ID\x10\t\x12\x13\n" +
+	"\x0fOFPBRC_IS_SLAVE\x10\n" +
+	"\x12\x13\n" +
+	"\x0fOFPBRC_BAD_PORT\x10\v\x12\x15\n" +
+	"\x11OFPBRC_BAD_PACKET\x10\f\x12$\n" +
+	" OFPBRC_MULTIPART_BUFFER_OVERFLOW\x10\r*\x9c\x03\n" +
+	"\x13ofp_bad_action_code\x12\x13\n" +
+	"\x0fOFPBAC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBAC_BAD_LEN\x10\x01\x12\x1b\n" +
+	"\x17OFPBAC_BAD_EXPERIMENTER\x10\x02\x12\x17\n" +
+	"\x13OFPBAC_BAD_EXP_TYPE\x10\x03\x12\x17\n" +
+	"\x13OFPBAC_BAD_OUT_PORT\x10\x04\x12\x17\n" +
+	"\x13OFPBAC_BAD_ARGUMENT\x10\x05\x12\x10\n" +
+	"\fOFPBAC_EPERM\x10\x06\x12\x13\n" +
+	"\x0fOFPBAC_TOO_MANY\x10\a\x12\x14\n" +
+	"\x10OFPBAC_BAD_QUEUE\x10\b\x12\x18\n" +
+	"\x14OFPBAC_BAD_OUT_GROUP\x10\t\x12\x1d\n" +
+	"\x19OFPBAC_MATCH_INCONSISTENT\x10\n" +
+	"\x12\x1c\n" +
+	"\x18OFPBAC_UNSUPPORTED_ORDER\x10\v\x12\x12\n" +
+	"\x0eOFPBAC_BAD_TAG\x10\f\x12\x17\n" +
+	"\x13OFPBAC_BAD_SET_TYPE\x10\r\x12\x16\n" +
+	"\x12OFPBAC_BAD_SET_LEN\x10\x0e\x12\x1b\n" +
+	"\x17OFPBAC_BAD_SET_ARGUMENT\x10\x0f*\xfa\x01\n" +
+	"\x18ofp_bad_instruction_code\x12\x17\n" +
+	"\x13OFPBIC_UNKNOWN_INST\x10\x00\x12\x15\n" +
+	"\x11OFPBIC_UNSUP_INST\x10\x01\x12\x17\n" +
+	"\x13OFPBIC_BAD_TABLE_ID\x10\x02\x12\x19\n" +
+	"\x15OFPBIC_UNSUP_METADATA\x10\x03\x12\x1e\n" +
+	"\x1aOFPBIC_UNSUP_METADATA_MASK\x10\x04\x12\x1b\n" +
+	"\x17OFPBIC_BAD_EXPERIMENTER\x10\x05\x12\x17\n" +
+	"\x13OFPBIC_BAD_EXP_TYPE\x10\x06\x12\x12\n" +
+	"\x0eOFPBIC_BAD_LEN\x10\a\x12\x10\n" +
+	"\fOFPBIC_EPERM\x10\b*\xa5\x02\n" +
+	"\x12ofp_bad_match_code\x12\x13\n" +
+	"\x0fOFPBMC_BAD_TYPE\x10\x00\x12\x12\n" +
+	"\x0eOFPBMC_BAD_LEN\x10\x01\x12\x12\n" +
+	"\x0eOFPBMC_BAD_TAG\x10\x02\x12\x1b\n" +
+	"\x17OFPBMC_BAD_DL_ADDR_MASK\x10\x03\x12\x1b\n" +
+	"\x17OFPBMC_BAD_NW_ADDR_MASK\x10\x04\x12\x18\n" +
+	"\x14OFPBMC_BAD_WILDCARDS\x10\x05\x12\x14\n" +
+	"\x10OFPBMC_BAD_FIELD\x10\x06\x12\x14\n" +
+	"\x10OFPBMC_BAD_VALUE\x10\a\x12\x13\n" +
+	"\x0fOFPBMC_BAD_MASK\x10\b\x12\x15\n" +
+	"\x11OFPBMC_BAD_PREREQ\x10\t\x12\x14\n" +
+	"\x10OFPBMC_DUP_FIELD\x10\n" +
+	"\x12\x10\n" +
+	"\fOFPBMC_EPERM\x10\v*\xd2\x01\n" +
+	"\x18ofp_flow_mod_failed_code\x12\x13\n" +
+	"\x0fOFPFMFC_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12OFPFMFC_TABLE_FULL\x10\x01\x12\x18\n" +
+	"\x14OFPFMFC_BAD_TABLE_ID\x10\x02\x12\x13\n" +
+	"\x0fOFPFMFC_OVERLAP\x10\x03\x12\x11\n" +
+	"\rOFPFMFC_EPERM\x10\x04\x12\x17\n" +
+	"\x13OFPFMFC_BAD_TIMEOUT\x10\x05\x12\x17\n" +
+	"\x13OFPFMFC_BAD_COMMAND\x10\x06\x12\x15\n" +
+	"\x11OFPFMFC_BAD_FLAGS\x10\a*\xa1\x03\n" +
+	"\x19ofp_group_mod_failed_code\x12\x18\n" +
+	"\x14OFPGMFC_GROUP_EXISTS\x10\x00\x12\x19\n" +
+	"\x15OFPGMFC_INVALID_GROUP\x10\x01\x12\x1e\n" +
+	"\x1aOFPGMFC_WEIGHT_UNSUPPORTED\x10\x02\x12\x19\n" +
+	"\x15OFPGMFC_OUT_OF_GROUPS\x10\x03\x12\x1a\n" +
+	"\x16OFPGMFC_OUT_OF_BUCKETS\x10\x04\x12 \n" +
+	"\x1cOFPGMFC_CHAINING_UNSUPPORTED\x10\x05\x12\x1d\n" +
+	"\x19OFPGMFC_WATCH_UNSUPPORTED\x10\x06\x12\x10\n" +
+	"\fOFPGMFC_LOOP\x10\a\x12\x19\n" +
+	"\x15OFPGMFC_UNKNOWN_GROUP\x10\b\x12\x19\n" +
+	"\x15OFPGMFC_CHAINED_GROUP\x10\t\x12\x14\n" +
+	"\x10OFPGMFC_BAD_TYPE\x10\n" +
+	"\x12\x17\n" +
+	"\x13OFPGMFC_BAD_COMMAND\x10\v\x12\x16\n" +
+	"\x12OFPGMFC_BAD_BUCKET\x10\f\x12\x15\n" +
+	"\x11OFPGMFC_BAD_WATCH\x10\r\x12\x11\n" +
+	"\rOFPGMFC_EPERM\x10\x0e*\x8f\x01\n" +
+	"\x18ofp_port_mod_failed_code\x12\x14\n" +
+	"\x10OFPPMFC_BAD_PORT\x10\x00\x12\x17\n" +
+	"\x13OFPPMFC_BAD_HW_ADDR\x10\x01\x12\x16\n" +
+	"\x12OFPPMFC_BAD_CONFIG\x10\x02\x12\x19\n" +
+	"\x15OFPPMFC_BAD_ADVERTISE\x10\x03\x12\x11\n" +
+	"\rOFPPMFC_EPERM\x10\x04*]\n" +
+	"\x19ofp_table_mod_failed_code\x12\x15\n" +
+	"\x11OFPTMFC_BAD_TABLE\x10\x00\x12\x16\n" +
+	"\x12OFPTMFC_BAD_CONFIG\x10\x01\x12\x11\n" +
+	"\rOFPTMFC_EPERM\x10\x02*Z\n" +
+	"\x18ofp_queue_op_failed_code\x12\x14\n" +
+	"\x10OFPQOFC_BAD_PORT\x10\x00\x12\x15\n" +
+	"\x11OFPQOFC_BAD_QUEUE\x10\x01\x12\x11\n" +
+	"\rOFPQOFC_EPERM\x10\x02*^\n" +
+	"\x1dofp_switch_config_failed_code\x12\x15\n" +
+	"\x11OFPSCFC_BAD_FLAGS\x10\x00\x12\x13\n" +
+	"\x0fOFPSCFC_BAD_LEN\x10\x01\x12\x11\n" +
+	"\rOFPSCFC_EPERM\x10\x02*Z\n" +
+	"\x1cofp_role_request_failed_code\x12\x11\n" +
+	"\rOFPRRFC_STALE\x10\x00\x12\x11\n" +
+	"\rOFPRRFC_UNSUP\x10\x01\x12\x14\n" +
+	"\x10OFPRRFC_BAD_ROLE\x10\x02*\xc5\x02\n" +
+	"\x19ofp_meter_mod_failed_code\x12\x13\n" +
+	"\x0fOFPMMFC_UNKNOWN\x10\x00\x12\x18\n" +
+	"\x14OFPMMFC_METER_EXISTS\x10\x01\x12\x19\n" +
+	"\x15OFPMMFC_INVALID_METER\x10\x02\x12\x19\n" +
+	"\x15OFPMMFC_UNKNOWN_METER\x10\x03\x12\x17\n" +
+	"\x13OFPMMFC_BAD_COMMAND\x10\x04\x12\x15\n" +
+	"\x11OFPMMFC_BAD_FLAGS\x10\x05\x12\x14\n" +
+	"\x10OFPMMFC_BAD_RATE\x10\x06\x12\x15\n" +
+	"\x11OFPMMFC_BAD_BURST\x10\a\x12\x14\n" +
+	"\x10OFPMMFC_BAD_BAND\x10\b\x12\x1b\n" +
+	"\x17OFPMMFC_BAD_BAND_DETAIL\x10\t\x12\x19\n" +
+	"\x15OFPMMFC_OUT_OF_METERS\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMMFC_OUT_OF_BANDS\x10\v*\xa9\x01\n" +
+	"\x1eofp_table_features_failed_code\x12\x15\n" +
+	"\x11OFPTFFC_BAD_TABLE\x10\x00\x12\x18\n" +
+	"\x14OFPTFFC_BAD_METADATA\x10\x01\x12\x14\n" +
+	"\x10OFPTFFC_BAD_TYPE\x10\x02\x12\x13\n" +
+	"\x0fOFPTFFC_BAD_LEN\x10\x03\x12\x18\n" +
+	"\x14OFPTFFC_BAD_ARGUMENT\x10\x04\x12\x11\n" +
+	"\rOFPTFFC_EPERM\x10\x05*\xce\x02\n" +
+	"\x12ofp_multipart_type\x12\x0e\n" +
+	"\n" +
+	"OFPMP_DESC\x10\x00\x12\x0e\n" +
+	"\n" +
+	"OFPMP_FLOW\x10\x01\x12\x13\n" +
+	"\x0fOFPMP_AGGREGATE\x10\x02\x12\x0f\n" +
+	"\vOFPMP_TABLE\x10\x03\x12\x14\n" +
+	"\x10OFPMP_PORT_STATS\x10\x04\x12\x0f\n" +
+	"\vOFPMP_QUEUE\x10\x05\x12\x0f\n" +
+	"\vOFPMP_GROUP\x10\x06\x12\x14\n" +
+	"\x10OFPMP_GROUP_DESC\x10\a\x12\x18\n" +
+	"\x14OFPMP_GROUP_FEATURES\x10\b\x12\x0f\n" +
+	"\vOFPMP_METER\x10\t\x12\x16\n" +
+	"\x12OFPMP_METER_CONFIG\x10\n" +
+	"\x12\x18\n" +
+	"\x14OFPMP_METER_FEATURES\x10\v\x12\x18\n" +
+	"\x14OFPMP_TABLE_FEATURES\x10\f\x12\x13\n" +
+	"\x0fOFPMP_PORT_DESC\x10\r\x12\x18\n" +
+	"\x12OFPMP_EXPERIMENTER\x10\xff\xff\x03*J\n" +
+	"\x1bofp_multipart_request_flags\x12\x16\n" +
+	"\x12OFPMPF_REQ_INVALID\x10\x00\x12\x13\n" +
+	"\x0fOFPMPF_REQ_MORE\x10\x01*L\n" +
+	"\x19ofp_multipart_reply_flags\x12\x18\n" +
+	"\x14OFPMPF_REPLY_INVALID\x10\x00\x12\x15\n" +
+	"\x11OFPMPF_REPLY_MORE\x10\x01*\xe4\x03\n" +
+	"\x1bofp_table_feature_prop_type\x12\x18\n" +
+	"\x14OFPTFPT_INSTRUCTIONS\x10\x00\x12\x1d\n" +
+	"\x19OFPTFPT_INSTRUCTIONS_MISS\x10\x01\x12\x17\n" +
+	"\x13OFPTFPT_NEXT_TABLES\x10\x02\x12\x1c\n" +
+	"\x18OFPTFPT_NEXT_TABLES_MISS\x10\x03\x12\x19\n" +
+	"\x15OFPTFPT_WRITE_ACTIONS\x10\x04\x12\x1e\n" +
+	"\x1aOFPTFPT_WRITE_ACTIONS_MISS\x10\x05\x12\x19\n" +
+	"\x15OFPTFPT_APPLY_ACTIONS\x10\x06\x12\x1e\n" +
+	"\x1aOFPTFPT_APPLY_ACTIONS_MISS\x10\a\x12\x11\n" +
+	"\rOFPTFPT_MATCH\x10\b\x12\x15\n" +
+	"\x11OFPTFPT_WILDCARDS\x10\n" +
+	"\x12\x1a\n" +
+	"\x16OFPTFPT_WRITE_SETFIELD\x10\f\x12\x1f\n" +
+	"\x1bOFPTFPT_WRITE_SETFIELD_MISS\x10\r\x12\x1a\n" +
+	"\x16OFPTFPT_APPLY_SETFIELD\x10\x0e\x12\x1f\n" +
+	"\x1bOFPTFPT_APPLY_SETFIELD_MISS\x10\x0f\x12\x1a\n" +
+	"\x14OFPTFPT_EXPERIMENTER\x10\xfe\xff\x03\x12\x1f\n" +
+	"\x19OFPTFPT_EXPERIMENTER_MISS\x10\xff\xff\x03*\x93\x01\n" +
+	"\x16ofp_group_capabilities\x12\x12\n" +
+	"\x0eOFPGFC_INVALID\x10\x00\x12\x18\n" +
+	"\x14OFPGFC_SELECT_WEIGHT\x10\x01\x12\x1a\n" +
+	"\x16OFPGFC_SELECT_LIVENESS\x10\x02\x12\x13\n" +
+	"\x0fOFPGFC_CHAINING\x10\x04\x12\x1a\n" +
+	"\x16OFPGFC_CHAINING_CHECKS\x10\b*k\n" +
+	"\x14ofp_queue_properties\x12\x11\n" +
+	"\rOFPQT_INVALID\x10\x00\x12\x12\n" +
+	"\x0eOFPQT_MIN_RATE\x10\x01\x12\x12\n" +
+	"\x0eOFPQT_MAX_RATE\x10\x02\x12\x18\n" +
+	"\x12OFPQT_EXPERIMENTER\x10\xff\xff\x03*q\n" +
+	"\x13ofp_controller_role\x12\x17\n" +
+	"\x13OFPCR_ROLE_NOCHANGE\x10\x00\x12\x14\n" +
+	"\x10OFPCR_ROLE_EQUAL\x10\x01\x12\x15\n" +
+	"\x11OFPCR_ROLE_MASTER\x10\x02\x12\x14\n" +
+	"\x10OFPCR_ROLE_SLAVE\x10\x03BU\n" +
+	"\x1eorg.opencord.voltha.openflow13Z3github.com/opencord/voltha-protos/v5/go/openflow_13b\x06proto3"
+
+var (
+	file_voltha_protos_openflow_13_proto_rawDescOnce sync.Once
+	file_voltha_protos_openflow_13_proto_rawDescData []byte
+)
+
+func file_voltha_protos_openflow_13_proto_rawDescGZIP() []byte {
+	file_voltha_protos_openflow_13_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_openflow_13_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)))
+	})
+	return file_voltha_protos_openflow_13_proto_rawDescData
+}
+
+var file_voltha_protos_openflow_13_proto_enumTypes = make([]protoimpl.EnumInfo, 53)
+var file_voltha_protos_openflow_13_proto_msgTypes = make([]protoimpl.MessageInfo, 99)
+var file_voltha_protos_openflow_13_proto_goTypes = []any{
+	(OfpPortNo)(0),                          // 0: openflow_13.ofp_port_no
+	(OfpType)(0),                            // 1: openflow_13.ofp_type
+	(OfpHelloElemType)(0),                   // 2: openflow_13.ofp_hello_elem_type
+	(OfpConfigFlags)(0),                     // 3: openflow_13.ofp_config_flags
+	(OfpTableConfig)(0),                     // 4: openflow_13.ofp_table_config
+	(OfpTable)(0),                           // 5: openflow_13.ofp_table
+	(OfpCapabilities)(0),                    // 6: openflow_13.ofp_capabilities
+	(OfpPortConfig)(0),                      // 7: openflow_13.ofp_port_config
+	(OfpPortState)(0),                       // 8: openflow_13.ofp_port_state
+	(OfpPortFeatures)(0),                    // 9: openflow_13.ofp_port_features
+	(OfpPortReason)(0),                      // 10: openflow_13.ofp_port_reason
+	(OfpDeviceConnection)(0),                // 11: openflow_13.ofp_device_connection
+	(OfpMatchType)(0),                       // 12: openflow_13.ofp_match_type
+	(OfpOxmClass)(0),                        // 13: openflow_13.ofp_oxm_class
+	(OxmOfbFieldTypes)(0),                   // 14: openflow_13.oxm_ofb_field_types
+	(OfpVlanId)(0),                          // 15: openflow_13.ofp_vlan_id
+	(OfpIpv6ExthdrFlags)(0),                 // 16: openflow_13.ofp_ipv6exthdr_flags
+	(OfpActionType)(0),                      // 17: openflow_13.ofp_action_type
+	(OfpControllerMaxLen)(0),                // 18: openflow_13.ofp_controller_max_len
+	(OfpInstructionType)(0),                 // 19: openflow_13.ofp_instruction_type
+	(OfpFlowModCommand)(0),                  // 20: openflow_13.ofp_flow_mod_command
+	(OfpFlowModFlags)(0),                    // 21: openflow_13.ofp_flow_mod_flags
+	(OfpGroup)(0),                           // 22: openflow_13.ofp_group
+	(OfpGroupModCommand)(0),                 // 23: openflow_13.ofp_group_mod_command
+	(OfpGroupType)(0),                       // 24: openflow_13.ofp_group_type
+	(OfpPacketInReason)(0),                  // 25: openflow_13.ofp_packet_in_reason
+	(OfpFlowRemovedReason)(0),               // 26: openflow_13.ofp_flow_removed_reason
+	(OfpMeter)(0),                           // 27: openflow_13.ofp_meter
+	(OfpMeterBandType)(0),                   // 28: openflow_13.ofp_meter_band_type
+	(OfpMeterModCommand)(0),                 // 29: openflow_13.ofp_meter_mod_command
+	(OfpMeterFlags)(0),                      // 30: openflow_13.ofp_meter_flags
+	(OfpErrorType)(0),                       // 31: openflow_13.ofp_error_type
+	(OfpHelloFailedCode)(0),                 // 32: openflow_13.ofp_hello_failed_code
+	(OfpBadRequestCode)(0),                  // 33: openflow_13.ofp_bad_request_code
+	(OfpBadActionCode)(0),                   // 34: openflow_13.ofp_bad_action_code
+	(OfpBadInstructionCode)(0),              // 35: openflow_13.ofp_bad_instruction_code
+	(OfpBadMatchCode)(0),                    // 36: openflow_13.ofp_bad_match_code
+	(OfpFlowModFailedCode)(0),               // 37: openflow_13.ofp_flow_mod_failed_code
+	(OfpGroupModFailedCode)(0),              // 38: openflow_13.ofp_group_mod_failed_code
+	(OfpPortModFailedCode)(0),               // 39: openflow_13.ofp_port_mod_failed_code
+	(OfpTableModFailedCode)(0),              // 40: openflow_13.ofp_table_mod_failed_code
+	(OfpQueueOpFailedCode)(0),               // 41: openflow_13.ofp_queue_op_failed_code
+	(OfpSwitchConfigFailedCode)(0),          // 42: openflow_13.ofp_switch_config_failed_code
+	(OfpRoleRequestFailedCode)(0),           // 43: openflow_13.ofp_role_request_failed_code
+	(OfpMeterModFailedCode)(0),              // 44: openflow_13.ofp_meter_mod_failed_code
+	(OfpTableFeaturesFailedCode)(0),         // 45: openflow_13.ofp_table_features_failed_code
+	(OfpMultipartType)(0),                   // 46: openflow_13.ofp_multipart_type
+	(OfpMultipartRequestFlags)(0),           // 47: openflow_13.ofp_multipart_request_flags
+	(OfpMultipartReplyFlags)(0),             // 48: openflow_13.ofp_multipart_reply_flags
+	(OfpTableFeaturePropType)(0),            // 49: openflow_13.ofp_table_feature_prop_type
+	(OfpGroupCapabilities)(0),               // 50: openflow_13.ofp_group_capabilities
+	(OfpQueueProperties)(0),                 // 51: openflow_13.ofp_queue_properties
+	(OfpControllerRole)(0),                  // 52: openflow_13.ofp_controller_role
+	(*OfpHeader)(nil),                       // 53: openflow_13.ofp_header
+	(*OfpHelloElemHeader)(nil),              // 54: openflow_13.ofp_hello_elem_header
+	(*OfpHelloElemVersionbitmap)(nil),       // 55: openflow_13.ofp_hello_elem_versionbitmap
+	(*OfpHello)(nil),                        // 56: openflow_13.ofp_hello
+	(*OfpSwitchConfig)(nil),                 // 57: openflow_13.ofp_switch_config
+	(*OfpTableMod)(nil),                     // 58: openflow_13.ofp_table_mod
+	(*OfpPort)(nil),                         // 59: openflow_13.ofp_port
+	(*OfpSwitchFeatures)(nil),               // 60: openflow_13.ofp_switch_features
+	(*OfpPortStatus)(nil),                   // 61: openflow_13.ofp_port_status
+	(*OfpDeviceStatus)(nil),                 // 62: openflow_13.ofp_device_status
+	(*OfpPortMod)(nil),                      // 63: openflow_13.ofp_port_mod
+	(*OfpMatch)(nil),                        // 64: openflow_13.ofp_match
+	(*OfpOxmField)(nil),                     // 65: openflow_13.ofp_oxm_field
+	(*OfpOxmOfbField)(nil),                  // 66: openflow_13.ofp_oxm_ofb_field
+	(*OfpOxmExperimenterField)(nil),         // 67: openflow_13.ofp_oxm_experimenter_field
+	(*OfpAction)(nil),                       // 68: openflow_13.ofp_action
+	(*OfpActionOutput)(nil),                 // 69: openflow_13.ofp_action_output
+	(*OfpActionMplsTtl)(nil),                // 70: openflow_13.ofp_action_mpls_ttl
+	(*OfpActionPush)(nil),                   // 71: openflow_13.ofp_action_push
+	(*OfpActionPopMpls)(nil),                // 72: openflow_13.ofp_action_pop_mpls
+	(*OfpActionGroup)(nil),                  // 73: openflow_13.ofp_action_group
+	(*OfpActionNwTtl)(nil),                  // 74: openflow_13.ofp_action_nw_ttl
+	(*OfpActionSetField)(nil),               // 75: openflow_13.ofp_action_set_field
+	(*OfpActionExperimenter)(nil),           // 76: openflow_13.ofp_action_experimenter
+	(*OfpInstruction)(nil),                  // 77: openflow_13.ofp_instruction
+	(*OfpInstructionGotoTable)(nil),         // 78: openflow_13.ofp_instruction_goto_table
+	(*OfpInstructionWriteMetadata)(nil),     // 79: openflow_13.ofp_instruction_write_metadata
+	(*OfpInstructionActions)(nil),           // 80: openflow_13.ofp_instruction_actions
+	(*OfpInstructionMeter)(nil),             // 81: openflow_13.ofp_instruction_meter
+	(*OfpInstructionExperimenter)(nil),      // 82: openflow_13.ofp_instruction_experimenter
+	(*OfpFlowMod)(nil),                      // 83: openflow_13.ofp_flow_mod
+	(*OfpBucket)(nil),                       // 84: openflow_13.ofp_bucket
+	(*OfpGroupMod)(nil),                     // 85: openflow_13.ofp_group_mod
+	(*OfpPacketOut)(nil),                    // 86: openflow_13.ofp_packet_out
+	(*OfpPacketIn)(nil),                     // 87: openflow_13.ofp_packet_in
+	(*OfpFlowRemoved)(nil),                  // 88: openflow_13.ofp_flow_removed
+	(*OfpMeterBandHeader)(nil),              // 89: openflow_13.ofp_meter_band_header
+	(*OfpMeterBandDrop)(nil),                // 90: openflow_13.ofp_meter_band_drop
+	(*OfpMeterBandDscpRemark)(nil),          // 91: openflow_13.ofp_meter_band_dscp_remark
+	(*OfpMeterBandExperimenter)(nil),        // 92: openflow_13.ofp_meter_band_experimenter
+	(*OfpMeterMod)(nil),                     // 93: openflow_13.ofp_meter_mod
+	(*OfpErrorMsg)(nil),                     // 94: openflow_13.ofp_error_msg
+	(*OfpErrorExperimenterMsg)(nil),         // 95: openflow_13.ofp_error_experimenter_msg
+	(*OfpMultipartRequest)(nil),             // 96: openflow_13.ofp_multipart_request
+	(*OfpMultipartReply)(nil),               // 97: openflow_13.ofp_multipart_reply
+	(*OfpDesc)(nil),                         // 98: openflow_13.ofp_desc
+	(*OfpFlowStatsRequest)(nil),             // 99: openflow_13.ofp_flow_stats_request
+	(*OfpFlowStats)(nil),                    // 100: openflow_13.ofp_flow_stats
+	(*OfpAggregateStatsRequest)(nil),        // 101: openflow_13.ofp_aggregate_stats_request
+	(*OfpAggregateStatsReply)(nil),          // 102: openflow_13.ofp_aggregate_stats_reply
+	(*OfpTableFeatureProperty)(nil),         // 103: openflow_13.ofp_table_feature_property
+	(*OfpTableFeaturePropInstructions)(nil), // 104: openflow_13.ofp_table_feature_prop_instructions
+	(*OfpTableFeaturePropNextTables)(nil),   // 105: openflow_13.ofp_table_feature_prop_next_tables
+	(*OfpTableFeaturePropActions)(nil),      // 106: openflow_13.ofp_table_feature_prop_actions
+	(*OfpTableFeaturePropOxm)(nil),          // 107: openflow_13.ofp_table_feature_prop_oxm
+	(*OfpTableFeaturePropExperimenter)(nil), // 108: openflow_13.ofp_table_feature_prop_experimenter
+	(*OfpTableFeatures)(nil),                // 109: openflow_13.ofp_table_features
+	(*OfpTableStats)(nil),                   // 110: openflow_13.ofp_table_stats
+	(*OfpPortStatsRequest)(nil),             // 111: openflow_13.ofp_port_stats_request
+	(*OfpPortStats)(nil),                    // 112: openflow_13.ofp_port_stats
+	(*OfpGroupStatsRequest)(nil),            // 113: openflow_13.ofp_group_stats_request
+	(*OfpBucketCounter)(nil),                // 114: openflow_13.ofp_bucket_counter
+	(*OfpGroupStats)(nil),                   // 115: openflow_13.ofp_group_stats
+	(*OfpGroupDesc)(nil),                    // 116: openflow_13.ofp_group_desc
+	(*OfpGroupEntry)(nil),                   // 117: openflow_13.ofp_group_entry
+	(*OfpGroupFeatures)(nil),                // 118: openflow_13.ofp_group_features
+	(*OfpMeterMultipartRequest)(nil),        // 119: openflow_13.ofp_meter_multipart_request
+	(*OfpMeterBandStats)(nil),               // 120: openflow_13.ofp_meter_band_stats
+	(*OfpMeterStats)(nil),                   // 121: openflow_13.ofp_meter_stats
+	(*OfpMeterConfig)(nil),                  // 122: openflow_13.ofp_meter_config
+	(*OfpMeterFeatures)(nil),                // 123: openflow_13.ofp_meter_features
+	(*OfpMeterEntry)(nil),                   // 124: openflow_13.ofp_meter_entry
+	(*OfpExperimenterMultipartHeader)(nil),  // 125: openflow_13.ofp_experimenter_multipart_header
+	(*OfpExperimenterHeader)(nil),           // 126: openflow_13.ofp_experimenter_header
+	(*OfpQueuePropHeader)(nil),              // 127: openflow_13.ofp_queue_prop_header
+	(*OfpQueuePropMinRate)(nil),             // 128: openflow_13.ofp_queue_prop_min_rate
+	(*OfpQueuePropMaxRate)(nil),             // 129: openflow_13.ofp_queue_prop_max_rate
+	(*OfpQueuePropExperimenter)(nil),        // 130: openflow_13.ofp_queue_prop_experimenter
+	(*OfpPacketQueue)(nil),                  // 131: openflow_13.ofp_packet_queue
+	(*OfpQueueGetConfigRequest)(nil),        // 132: openflow_13.ofp_queue_get_config_request
+	(*OfpQueueGetConfigReply)(nil),          // 133: openflow_13.ofp_queue_get_config_reply
+	(*OfpActionSetQueue)(nil),               // 134: openflow_13.ofp_action_set_queue
+	(*OfpQueueStatsRequest)(nil),            // 135: openflow_13.ofp_queue_stats_request
+	(*OfpQueueStats)(nil),                   // 136: openflow_13.ofp_queue_stats
+	(*OfpRoleRequest)(nil),                  // 137: openflow_13.ofp_role_request
+	(*OfpAsyncConfig)(nil),                  // 138: openflow_13.ofp_async_config
+	(*MeterModUpdate)(nil),                  // 139: openflow_13.MeterModUpdate
+	(*MeterStatsReply)(nil),                 // 140: openflow_13.MeterStatsReply
+	(*FlowTableUpdate)(nil),                 // 141: openflow_13.FlowTableUpdate
+	(*FlowGroupTableUpdate)(nil),            // 142: openflow_13.FlowGroupTableUpdate
+	(*Flows)(nil),                           // 143: openflow_13.Flows
+	(*Meters)(nil),                          // 144: openflow_13.Meters
+	(*FlowGroups)(nil),                      // 145: openflow_13.FlowGroups
+	(*FlowChanges)(nil),                     // 146: openflow_13.FlowChanges
+	(*FlowGroupChanges)(nil),                // 147: openflow_13.FlowGroupChanges
+	(*PacketIn)(nil),                        // 148: openflow_13.PacketIn
+	(*PacketOut)(nil),                       // 149: openflow_13.PacketOut
+	(*ChangeEvent)(nil),                     // 150: openflow_13.ChangeEvent
+	(*FlowMetadata)(nil),                    // 151: openflow_13.FlowMetadata
+}
+var file_voltha_protos_openflow_13_proto_depIdxs = []int32{
+	1,   // 0: openflow_13.ofp_header.type:type_name -> openflow_13.ofp_type
+	2,   // 1: openflow_13.ofp_hello_elem_header.type:type_name -> openflow_13.ofp_hello_elem_type
+	55,  // 2: openflow_13.ofp_hello_elem_header.versionbitmap:type_name -> openflow_13.ofp_hello_elem_versionbitmap
+	54,  // 3: openflow_13.ofp_hello.elements:type_name -> openflow_13.ofp_hello_elem_header
+	10,  // 4: openflow_13.ofp_port_status.reason:type_name -> openflow_13.ofp_port_reason
+	59,  // 5: openflow_13.ofp_port_status.desc:type_name -> openflow_13.ofp_port
+	11,  // 6: openflow_13.ofp_device_status.status:type_name -> openflow_13.ofp_device_connection
+	12,  // 7: openflow_13.ofp_match.type:type_name -> openflow_13.ofp_match_type
+	65,  // 8: openflow_13.ofp_match.oxm_fields:type_name -> openflow_13.ofp_oxm_field
+	13,  // 9: openflow_13.ofp_oxm_field.oxm_class:type_name -> openflow_13.ofp_oxm_class
+	66,  // 10: openflow_13.ofp_oxm_field.ofb_field:type_name -> openflow_13.ofp_oxm_ofb_field
+	67,  // 11: openflow_13.ofp_oxm_field.experimenter_field:type_name -> openflow_13.ofp_oxm_experimenter_field
+	14,  // 12: openflow_13.ofp_oxm_ofb_field.type:type_name -> openflow_13.oxm_ofb_field_types
+	17,  // 13: openflow_13.ofp_action.type:type_name -> openflow_13.ofp_action_type
+	69,  // 14: openflow_13.ofp_action.output:type_name -> openflow_13.ofp_action_output
+	70,  // 15: openflow_13.ofp_action.mpls_ttl:type_name -> openflow_13.ofp_action_mpls_ttl
+	71,  // 16: openflow_13.ofp_action.push:type_name -> openflow_13.ofp_action_push
+	72,  // 17: openflow_13.ofp_action.pop_mpls:type_name -> openflow_13.ofp_action_pop_mpls
+	73,  // 18: openflow_13.ofp_action.group:type_name -> openflow_13.ofp_action_group
+	74,  // 19: openflow_13.ofp_action.nw_ttl:type_name -> openflow_13.ofp_action_nw_ttl
+	75,  // 20: openflow_13.ofp_action.set_field:type_name -> openflow_13.ofp_action_set_field
+	76,  // 21: openflow_13.ofp_action.experimenter:type_name -> openflow_13.ofp_action_experimenter
+	65,  // 22: openflow_13.ofp_action_set_field.field:type_name -> openflow_13.ofp_oxm_field
+	78,  // 23: openflow_13.ofp_instruction.goto_table:type_name -> openflow_13.ofp_instruction_goto_table
+	79,  // 24: openflow_13.ofp_instruction.write_metadata:type_name -> openflow_13.ofp_instruction_write_metadata
+	80,  // 25: openflow_13.ofp_instruction.actions:type_name -> openflow_13.ofp_instruction_actions
+	81,  // 26: openflow_13.ofp_instruction.meter:type_name -> openflow_13.ofp_instruction_meter
+	82,  // 27: openflow_13.ofp_instruction.experimenter:type_name -> openflow_13.ofp_instruction_experimenter
+	68,  // 28: openflow_13.ofp_instruction_actions.actions:type_name -> openflow_13.ofp_action
+	20,  // 29: openflow_13.ofp_flow_mod.command:type_name -> openflow_13.ofp_flow_mod_command
+	64,  // 30: openflow_13.ofp_flow_mod.match:type_name -> openflow_13.ofp_match
+	77,  // 31: openflow_13.ofp_flow_mod.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 32: openflow_13.ofp_bucket.actions:type_name -> openflow_13.ofp_action
+	23,  // 33: openflow_13.ofp_group_mod.command:type_name -> openflow_13.ofp_group_mod_command
+	24,  // 34: openflow_13.ofp_group_mod.type:type_name -> openflow_13.ofp_group_type
+	84,  // 35: openflow_13.ofp_group_mod.buckets:type_name -> openflow_13.ofp_bucket
+	68,  // 36: openflow_13.ofp_packet_out.actions:type_name -> openflow_13.ofp_action
+	25,  // 37: openflow_13.ofp_packet_in.reason:type_name -> openflow_13.ofp_packet_in_reason
+	64,  // 38: openflow_13.ofp_packet_in.match:type_name -> openflow_13.ofp_match
+	26,  // 39: openflow_13.ofp_flow_removed.reason:type_name -> openflow_13.ofp_flow_removed_reason
+	64,  // 40: openflow_13.ofp_flow_removed.match:type_name -> openflow_13.ofp_match
+	28,  // 41: openflow_13.ofp_meter_band_header.type:type_name -> openflow_13.ofp_meter_band_type
+	90,  // 42: openflow_13.ofp_meter_band_header.drop:type_name -> openflow_13.ofp_meter_band_drop
+	91,  // 43: openflow_13.ofp_meter_band_header.dscp_remark:type_name -> openflow_13.ofp_meter_band_dscp_remark
+	92,  // 44: openflow_13.ofp_meter_band_header.experimenter:type_name -> openflow_13.ofp_meter_band_experimenter
+	29,  // 45: openflow_13.ofp_meter_mod.command:type_name -> openflow_13.ofp_meter_mod_command
+	89,  // 46: openflow_13.ofp_meter_mod.bands:type_name -> openflow_13.ofp_meter_band_header
+	53,  // 47: openflow_13.ofp_error_msg.header:type_name -> openflow_13.ofp_header
+	46,  // 48: openflow_13.ofp_multipart_request.type:type_name -> openflow_13.ofp_multipart_type
+	46,  // 49: openflow_13.ofp_multipart_reply.type:type_name -> openflow_13.ofp_multipart_type
+	64,  // 50: openflow_13.ofp_flow_stats_request.match:type_name -> openflow_13.ofp_match
+	64,  // 51: openflow_13.ofp_flow_stats.match:type_name -> openflow_13.ofp_match
+	77,  // 52: openflow_13.ofp_flow_stats.instructions:type_name -> openflow_13.ofp_instruction
+	64,  // 53: openflow_13.ofp_aggregate_stats_request.match:type_name -> openflow_13.ofp_match
+	49,  // 54: openflow_13.ofp_table_feature_property.type:type_name -> openflow_13.ofp_table_feature_prop_type
+	104, // 55: openflow_13.ofp_table_feature_property.instructions:type_name -> openflow_13.ofp_table_feature_prop_instructions
+	105, // 56: openflow_13.ofp_table_feature_property.next_tables:type_name -> openflow_13.ofp_table_feature_prop_next_tables
+	106, // 57: openflow_13.ofp_table_feature_property.actions:type_name -> openflow_13.ofp_table_feature_prop_actions
+	107, // 58: openflow_13.ofp_table_feature_property.oxm:type_name -> openflow_13.ofp_table_feature_prop_oxm
+	108, // 59: openflow_13.ofp_table_feature_property.experimenter:type_name -> openflow_13.ofp_table_feature_prop_experimenter
+	77,  // 60: openflow_13.ofp_table_feature_prop_instructions.instructions:type_name -> openflow_13.ofp_instruction
+	68,  // 61: openflow_13.ofp_table_feature_prop_actions.actions:type_name -> openflow_13.ofp_action
+	103, // 62: openflow_13.ofp_table_features.properties:type_name -> openflow_13.ofp_table_feature_property
+	114, // 63: openflow_13.ofp_group_stats.bucket_stats:type_name -> openflow_13.ofp_bucket_counter
+	24,  // 64: openflow_13.ofp_group_desc.type:type_name -> openflow_13.ofp_group_type
+	84,  // 65: openflow_13.ofp_group_desc.buckets:type_name -> openflow_13.ofp_bucket
+	116, // 66: openflow_13.ofp_group_entry.desc:type_name -> openflow_13.ofp_group_desc
+	115, // 67: openflow_13.ofp_group_entry.stats:type_name -> openflow_13.ofp_group_stats
+	120, // 68: openflow_13.ofp_meter_stats.band_stats:type_name -> openflow_13.ofp_meter_band_stats
+	89,  // 69: openflow_13.ofp_meter_config.bands:type_name -> openflow_13.ofp_meter_band_header
+	122, // 70: openflow_13.ofp_meter_entry.config:type_name -> openflow_13.ofp_meter_config
+	121, // 71: openflow_13.ofp_meter_entry.stats:type_name -> openflow_13.ofp_meter_stats
+	127, // 72: openflow_13.ofp_queue_prop_min_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 73: openflow_13.ofp_queue_prop_max_rate.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 74: openflow_13.ofp_queue_prop_experimenter.prop_header:type_name -> openflow_13.ofp_queue_prop_header
+	127, // 75: openflow_13.ofp_packet_queue.properties:type_name -> openflow_13.ofp_queue_prop_header
+	131, // 76: openflow_13.ofp_queue_get_config_reply.queues:type_name -> openflow_13.ofp_packet_queue
+	52,  // 77: openflow_13.ofp_role_request.role:type_name -> openflow_13.ofp_controller_role
+	93,  // 78: openflow_13.MeterModUpdate.meter_mod:type_name -> openflow_13.ofp_meter_mod
+	121, // 79: openflow_13.MeterStatsReply.meter_stats:type_name -> openflow_13.ofp_meter_stats
+	83,  // 80: openflow_13.FlowTableUpdate.flow_mod:type_name -> openflow_13.ofp_flow_mod
+	85,  // 81: openflow_13.FlowGroupTableUpdate.group_mod:type_name -> openflow_13.ofp_group_mod
+	100, // 82: openflow_13.Flows.items:type_name -> openflow_13.ofp_flow_stats
+	124, // 83: openflow_13.Meters.items:type_name -> openflow_13.ofp_meter_entry
+	117, // 84: openflow_13.FlowGroups.items:type_name -> openflow_13.ofp_group_entry
+	143, // 85: openflow_13.FlowChanges.to_add:type_name -> openflow_13.Flows
+	143, // 86: openflow_13.FlowChanges.to_remove:type_name -> openflow_13.Flows
+	145, // 87: openflow_13.FlowGroupChanges.to_add:type_name -> openflow_13.FlowGroups
+	145, // 88: openflow_13.FlowGroupChanges.to_remove:type_name -> openflow_13.FlowGroups
+	145, // 89: openflow_13.FlowGroupChanges.to_update:type_name -> openflow_13.FlowGroups
+	87,  // 90: openflow_13.PacketIn.packet_in:type_name -> openflow_13.ofp_packet_in
+	86,  // 91: openflow_13.PacketOut.packet_out:type_name -> openflow_13.ofp_packet_out
+	61,  // 92: openflow_13.ChangeEvent.port_status:type_name -> openflow_13.ofp_port_status
+	94,  // 93: openflow_13.ChangeEvent.error:type_name -> openflow_13.ofp_error_msg
+	62,  // 94: openflow_13.ChangeEvent.device_status:type_name -> openflow_13.ofp_device_status
+	122, // 95: openflow_13.FlowMetadata.meters:type_name -> openflow_13.ofp_meter_config
+	96,  // [96:96] is the sub-list for method output_type
+	96,  // [96:96] is the sub-list for method input_type
+	96,  // [96:96] is the sub-list for extension type_name
+	96,  // [96:96] is the sub-list for extension extendee
+	0,   // [0:96] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_openflow_13_proto_init() }
+func file_voltha_protos_openflow_13_proto_init() {
+	if File_voltha_protos_openflow_13_proto != nil {
+		return
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[1].OneofWrappers = []any{
+		(*OfpHelloElemHeader_Versionbitmap)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[12].OneofWrappers = []any{
+		(*OfpOxmField_OfbField)(nil),
+		(*OfpOxmField_ExperimenterField)(nil),
+	}
+	file_voltha_protos_openflow_13_proto_msgTypes[13].OneofWrappers = []any{
 		(*OfpOxmOfbField_Port)(nil),
 		(*OfpOxmOfbField_PhysicalPort)(nil),
 		(*OfpOxmOfbField_TableMetadata)(nil),
@@ -4062,228 +12430,7 @@
 		(*OfpOxmOfbField_TunnelIdMask)(nil),
 		(*OfpOxmOfbField_Ipv6ExthdrMask)(nil),
 	}
-}
-
-// Header for OXM experimenter match fields.
-// The experimenter class should not use OXM_HEADER() macros for defining
-// fields due to this extra header.
-type OfpOxmExperimenterField struct {
-	OxmHeader            uint32   `protobuf:"varint,1,opt,name=oxm_header,json=oxmHeader,proto3" json:"oxm_header,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpOxmExperimenterField) Reset()         { *m = OfpOxmExperimenterField{} }
-func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
-func (*OfpOxmExperimenterField) ProtoMessage()    {}
-func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{14}
-}
-
-func (m *OfpOxmExperimenterField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpOxmExperimenterField.Unmarshal(m, b)
-}
-func (m *OfpOxmExperimenterField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpOxmExperimenterField.Marshal(b, m, deterministic)
-}
-func (m *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmExperimenterField.Merge(m, src)
-}
-func (m *OfpOxmExperimenterField) XXX_Size() int {
-	return xxx_messageInfo_OfpOxmExperimenterField.Size(m)
-}
-func (m *OfpOxmExperimenterField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpOxmExperimenterField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpOxmExperimenterField proto.InternalMessageInfo
-
-func (m *OfpOxmExperimenterField) GetOxmHeader() uint32 {
-	if m != nil {
-		return m.OxmHeader
-	}
-	return 0
-}
-
-func (m *OfpOxmExperimenterField) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-// Action header that is common to all actions.  The length includes the
-// header and any padding used to make the action 64-bit aligned.
-// NB: The length of an action *must* always be a multiple of eight.
-type OfpAction struct {
-	Type OfpActionType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpActionType" json:"type,omitempty"`
-	// Types that are valid to be assigned to Action:
-	//	*OfpAction_Output
-	//	*OfpAction_MplsTtl
-	//	*OfpAction_Push
-	//	*OfpAction_PopMpls
-	//	*OfpAction_Group
-	//	*OfpAction_NwTtl
-	//	*OfpAction_SetField
-	//	*OfpAction_Experimenter
-	Action               isOfpAction_Action `protobuf_oneof:"action"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpAction) Reset()         { *m = OfpAction{} }
-func (m *OfpAction) String() string { return proto.CompactTextString(m) }
-func (*OfpAction) ProtoMessage()    {}
-func (*OfpAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{15}
-}
-
-func (m *OfpAction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAction.Unmarshal(m, b)
-}
-func (m *OfpAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAction.Marshal(b, m, deterministic)
-}
-func (m *OfpAction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAction.Merge(m, src)
-}
-func (m *OfpAction) XXX_Size() int {
-	return xxx_messageInfo_OfpAction.Size(m)
-}
-func (m *OfpAction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAction proto.InternalMessageInfo
-
-func (m *OfpAction) GetType() OfpActionType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpActionType_OFPAT_OUTPUT
-}
-
-type isOfpAction_Action interface {
-	isOfpAction_Action()
-}
-
-type OfpAction_Output struct {
-	Output *OfpActionOutput `protobuf:"bytes,2,opt,name=output,proto3,oneof"`
-}
-
-type OfpAction_MplsTtl struct {
-	MplsTtl *OfpActionMplsTtl `protobuf:"bytes,3,opt,name=mpls_ttl,json=mplsTtl,proto3,oneof"`
-}
-
-type OfpAction_Push struct {
-	Push *OfpActionPush `protobuf:"bytes,4,opt,name=push,proto3,oneof"`
-}
-
-type OfpAction_PopMpls struct {
-	PopMpls *OfpActionPopMpls `protobuf:"bytes,5,opt,name=pop_mpls,json=popMpls,proto3,oneof"`
-}
-
-type OfpAction_Group struct {
-	Group *OfpActionGroup `protobuf:"bytes,6,opt,name=group,proto3,oneof"`
-}
-
-type OfpAction_NwTtl struct {
-	NwTtl *OfpActionNwTtl `protobuf:"bytes,7,opt,name=nw_ttl,json=nwTtl,proto3,oneof"`
-}
-
-type OfpAction_SetField struct {
-	SetField *OfpActionSetField `protobuf:"bytes,8,opt,name=set_field,json=setField,proto3,oneof"`
-}
-
-type OfpAction_Experimenter struct {
-	Experimenter *OfpActionExperimenter `protobuf:"bytes,9,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpAction_Output) isOfpAction_Action() {}
-
-func (*OfpAction_MplsTtl) isOfpAction_Action() {}
-
-func (*OfpAction_Push) isOfpAction_Action() {}
-
-func (*OfpAction_PopMpls) isOfpAction_Action() {}
-
-func (*OfpAction_Group) isOfpAction_Action() {}
-
-func (*OfpAction_NwTtl) isOfpAction_Action() {}
-
-func (*OfpAction_SetField) isOfpAction_Action() {}
-
-func (*OfpAction_Experimenter) isOfpAction_Action() {}
-
-func (m *OfpAction) GetAction() isOfpAction_Action {
-	if m != nil {
-		return m.Action
-	}
-	return nil
-}
-
-func (m *OfpAction) GetOutput() *OfpActionOutput {
-	if x, ok := m.GetAction().(*OfpAction_Output); ok {
-		return x.Output
-	}
-	return nil
-}
-
-func (m *OfpAction) GetMplsTtl() *OfpActionMplsTtl {
-	if x, ok := m.GetAction().(*OfpAction_MplsTtl); ok {
-		return x.MplsTtl
-	}
-	return nil
-}
-
-func (m *OfpAction) GetPush() *OfpActionPush {
-	if x, ok := m.GetAction().(*OfpAction_Push); ok {
-		return x.Push
-	}
-	return nil
-}
-
-func (m *OfpAction) GetPopMpls() *OfpActionPopMpls {
-	if x, ok := m.GetAction().(*OfpAction_PopMpls); ok {
-		return x.PopMpls
-	}
-	return nil
-}
-
-func (m *OfpAction) GetGroup() *OfpActionGroup {
-	if x, ok := m.GetAction().(*OfpAction_Group); ok {
-		return x.Group
-	}
-	return nil
-}
-
-func (m *OfpAction) GetNwTtl() *OfpActionNwTtl {
-	if x, ok := m.GetAction().(*OfpAction_NwTtl); ok {
-		return x.NwTtl
-	}
-	return nil
-}
-
-func (m *OfpAction) GetSetField() *OfpActionSetField {
-	if x, ok := m.GetAction().(*OfpAction_SetField); ok {
-		return x.SetField
-	}
-	return nil
-}
-
-func (m *OfpAction) GetExperimenter() *OfpActionExperimenter {
-	if x, ok := m.GetAction().(*OfpAction_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpAction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[15].OneofWrappers = []any{
 		(*OfpAction_Output)(nil),
 		(*OfpAction_MplsTtl)(nil),
 		(*OfpAction_Push)(nil),
@@ -4293,5703 +12440,46 @@
 		(*OfpAction_SetField)(nil),
 		(*OfpAction_Experimenter)(nil),
 	}
-}
-
-// Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
-// When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
-// number of bytes to send.  A 'max_len' of zero means no bytes of the
-// packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
-// the packet is not buffered and the complete packet is to be sent to
-// the controller.
-type OfpActionOutput struct {
-	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	MaxLen               uint32   `protobuf:"varint,2,opt,name=max_len,json=maxLen,proto3" json:"max_len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionOutput) Reset()         { *m = OfpActionOutput{} }
-func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
-func (*OfpActionOutput) ProtoMessage()    {}
-func (*OfpActionOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{16}
-}
-
-func (m *OfpActionOutput) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionOutput.Unmarshal(m, b)
-}
-func (m *OfpActionOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionOutput.Marshal(b, m, deterministic)
-}
-func (m *OfpActionOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionOutput.Merge(m, src)
-}
-func (m *OfpActionOutput) XXX_Size() int {
-	return xxx_messageInfo_OfpActionOutput.Size(m)
-}
-func (m *OfpActionOutput) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionOutput.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionOutput proto.InternalMessageInfo
-
-func (m *OfpActionOutput) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpActionOutput) GetMaxLen() uint32 {
-	if m != nil {
-		return m.MaxLen
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_MPLS_TTL.
-type OfpActionMplsTtl struct {
-	MplsTtl              uint32   `protobuf:"varint,1,opt,name=mpls_ttl,json=mplsTtl,proto3" json:"mpls_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionMplsTtl) Reset()         { *m = OfpActionMplsTtl{} }
-func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionMplsTtl) ProtoMessage()    {}
-func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{17}
-}
-
-func (m *OfpActionMplsTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionMplsTtl.Unmarshal(m, b)
-}
-func (m *OfpActionMplsTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionMplsTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionMplsTtl.Merge(m, src)
-}
-func (m *OfpActionMplsTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionMplsTtl.Size(m)
-}
-func (m *OfpActionMplsTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionMplsTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionMplsTtl proto.InternalMessageInfo
-
-func (m *OfpActionMplsTtl) GetMplsTtl() uint32 {
-	if m != nil {
-		return m.MplsTtl
-	}
-	return 0
-}
-
-// Action structure for OFPAT_PUSH_VLAN/MPLS/PBB.
-type OfpActionPush struct {
-	Ethertype            uint32   `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPush) Reset()         { *m = OfpActionPush{} }
-func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPush) ProtoMessage()    {}
-func (*OfpActionPush) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{18}
-}
-
-func (m *OfpActionPush) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPush.Unmarshal(m, b)
-}
-func (m *OfpActionPush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPush.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPush) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPush.Merge(m, src)
-}
-func (m *OfpActionPush) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPush.Size(m)
-}
-func (m *OfpActionPush) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPush.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPush proto.InternalMessageInfo
-
-func (m *OfpActionPush) GetEthertype() uint32 {
-	if m != nil {
-		return m.Ethertype
-	}
-	return 0
-}
-
-// Action structure for OFPAT_POP_MPLS.
-type OfpActionPopMpls struct {
-	Ethertype            uint32   `protobuf:"varint,1,opt,name=ethertype,proto3" json:"ethertype,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionPopMpls) Reset()         { *m = OfpActionPopMpls{} }
-func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
-func (*OfpActionPopMpls) ProtoMessage()    {}
-func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{19}
-}
-
-func (m *OfpActionPopMpls) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionPopMpls.Unmarshal(m, b)
-}
-func (m *OfpActionPopMpls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionPopMpls.Marshal(b, m, deterministic)
-}
-func (m *OfpActionPopMpls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPopMpls.Merge(m, src)
-}
-func (m *OfpActionPopMpls) XXX_Size() int {
-	return xxx_messageInfo_OfpActionPopMpls.Size(m)
-}
-func (m *OfpActionPopMpls) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionPopMpls.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionPopMpls proto.InternalMessageInfo
-
-func (m *OfpActionPopMpls) GetEthertype() uint32 {
-	if m != nil {
-		return m.Ethertype
-	}
-	return 0
-}
-
-// Action structure for OFPAT_GROUP.
-type OfpActionGroup struct {
-	GroupId              uint32   `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionGroup) Reset()         { *m = OfpActionGroup{} }
-func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
-func (*OfpActionGroup) ProtoMessage()    {}
-func (*OfpActionGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{20}
-}
-
-func (m *OfpActionGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionGroup.Unmarshal(m, b)
-}
-func (m *OfpActionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionGroup.Marshal(b, m, deterministic)
-}
-func (m *OfpActionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionGroup.Merge(m, src)
-}
-func (m *OfpActionGroup) XXX_Size() int {
-	return xxx_messageInfo_OfpActionGroup.Size(m)
-}
-func (m *OfpActionGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionGroup proto.InternalMessageInfo
-
-func (m *OfpActionGroup) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_NW_TTL.
-type OfpActionNwTtl struct {
-	NwTtl                uint32   `protobuf:"varint,1,opt,name=nw_ttl,json=nwTtl,proto3" json:"nw_ttl,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionNwTtl) Reset()         { *m = OfpActionNwTtl{} }
-func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
-func (*OfpActionNwTtl) ProtoMessage()    {}
-func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{21}
-}
-
-func (m *OfpActionNwTtl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionNwTtl.Unmarshal(m, b)
-}
-func (m *OfpActionNwTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionNwTtl.Marshal(b, m, deterministic)
-}
-func (m *OfpActionNwTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionNwTtl.Merge(m, src)
-}
-func (m *OfpActionNwTtl) XXX_Size() int {
-	return xxx_messageInfo_OfpActionNwTtl.Size(m)
-}
-func (m *OfpActionNwTtl) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionNwTtl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionNwTtl proto.InternalMessageInfo
-
-func (m *OfpActionNwTtl) GetNwTtl() uint32 {
-	if m != nil {
-		return m.NwTtl
-	}
-	return 0
-}
-
-// Action structure for OFPAT_SET_FIELD.
-type OfpActionSetField struct {
-	Field                *OfpOxmField `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpActionSetField) Reset()         { *m = OfpActionSetField{} }
-func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetField) ProtoMessage()    {}
-func (*OfpActionSetField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{22}
-}
-
-func (m *OfpActionSetField) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetField.Unmarshal(m, b)
-}
-func (m *OfpActionSetField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetField.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetField.Merge(m, src)
-}
-func (m *OfpActionSetField) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetField.Size(m)
-}
-func (m *OfpActionSetField) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetField.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetField proto.InternalMessageInfo
-
-func (m *OfpActionSetField) GetField() *OfpOxmField {
-	if m != nil {
-		return m.Field
-	}
-	return nil
-}
-
-// Action header for OFPAT_EXPERIMENTER.
-// The rest of the body is experimenter-defined.
-type OfpActionExperimenter struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionExperimenter) Reset()         { *m = OfpActionExperimenter{} }
-func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpActionExperimenter) ProtoMessage()    {}
-func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{23}
-}
-
-func (m *OfpActionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpActionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpActionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionExperimenter.Merge(m, src)
-}
-func (m *OfpActionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpActionExperimenter.Size(m)
-}
-func (m *OfpActionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionExperimenter proto.InternalMessageInfo
-
-func (m *OfpActionExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpActionExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Instruction header that is common to all instructions.  The length includes
-// the header and any padding used to make the instruction 64-bit aligned.
-// NB: The length of an instruction *must* always be a multiple of eight.
-type OfpInstruction struct {
-	Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	// Types that are valid to be assigned to Data:
-	//	*OfpInstruction_GotoTable
-	//	*OfpInstruction_WriteMetadata
-	//	*OfpInstruction_Actions
-	//	*OfpInstruction_Meter
-	//	*OfpInstruction_Experimenter
-	Data                 isOfpInstruction_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpInstruction) Reset()         { *m = OfpInstruction{} }
-func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
-func (*OfpInstruction) ProtoMessage()    {}
-func (*OfpInstruction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{24}
-}
-
-func (m *OfpInstruction) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstruction.Unmarshal(m, b)
-}
-func (m *OfpInstruction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstruction.Marshal(b, m, deterministic)
-}
-func (m *OfpInstruction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstruction.Merge(m, src)
-}
-func (m *OfpInstruction) XXX_Size() int {
-	return xxx_messageInfo_OfpInstruction.Size(m)
-}
-func (m *OfpInstruction) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstruction.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstruction proto.InternalMessageInfo
-
-func (m *OfpInstruction) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-type isOfpInstruction_Data interface {
-	isOfpInstruction_Data()
-}
-
-type OfpInstruction_GotoTable struct {
-	GotoTable *OfpInstructionGotoTable `protobuf:"bytes,2,opt,name=goto_table,json=gotoTable,proto3,oneof"`
-}
-
-type OfpInstruction_WriteMetadata struct {
-	WriteMetadata *OfpInstructionWriteMetadata `protobuf:"bytes,3,opt,name=write_metadata,json=writeMetadata,proto3,oneof"`
-}
-
-type OfpInstruction_Actions struct {
-	Actions *OfpInstructionActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpInstruction_Meter struct {
-	Meter *OfpInstructionMeter `protobuf:"bytes,5,opt,name=meter,proto3,oneof"`
-}
-
-type OfpInstruction_Experimenter struct {
-	Experimenter *OfpInstructionExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpInstruction_GotoTable) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_WriteMetadata) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Actions) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Meter) isOfpInstruction_Data() {}
-
-func (*OfpInstruction_Experimenter) isOfpInstruction_Data() {}
-
-func (m *OfpInstruction) GetData() isOfpInstruction_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetGotoTable() *OfpInstructionGotoTable {
-	if x, ok := m.GetData().(*OfpInstruction_GotoTable); ok {
-		return x.GotoTable
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetWriteMetadata() *OfpInstructionWriteMetadata {
-	if x, ok := m.GetData().(*OfpInstruction_WriteMetadata); ok {
-		return x.WriteMetadata
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetActions() *OfpInstructionActions {
-	if x, ok := m.GetData().(*OfpInstruction_Actions); ok {
-		return x.Actions
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetMeter() *OfpInstructionMeter {
-	if x, ok := m.GetData().(*OfpInstruction_Meter); ok {
-		return x.Meter
-	}
-	return nil
-}
-
-func (m *OfpInstruction) GetExperimenter() *OfpInstructionExperimenter {
-	if x, ok := m.GetData().(*OfpInstruction_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[24].OneofWrappers = []any{
 		(*OfpInstruction_GotoTable)(nil),
 		(*OfpInstruction_WriteMetadata)(nil),
 		(*OfpInstruction_Actions)(nil),
 		(*OfpInstruction_Meter)(nil),
 		(*OfpInstruction_Experimenter)(nil),
 	}
-}
-
-// Instruction structure for OFPIT_GOTO_TABLE
-type OfpInstructionGotoTable struct {
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionGotoTable) Reset()         { *m = OfpInstructionGotoTable{} }
-func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionGotoTable) ProtoMessage()    {}
-func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{25}
-}
-
-func (m *OfpInstructionGotoTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionGotoTable.Unmarshal(m, b)
-}
-func (m *OfpInstructionGotoTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionGotoTable.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionGotoTable.Merge(m, src)
-}
-func (m *OfpInstructionGotoTable) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionGotoTable.Size(m)
-}
-func (m *OfpInstructionGotoTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionGotoTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionGotoTable proto.InternalMessageInfo
-
-func (m *OfpInstructionGotoTable) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-// Instruction structure for OFPIT_WRITE_METADATA
-type OfpInstructionWriteMetadata struct {
-	Metadata             uint64   `protobuf:"varint,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	MetadataMask         uint64   `protobuf:"varint,2,opt,name=metadata_mask,json=metadataMask,proto3" json:"metadata_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionWriteMetadata) Reset()         { *m = OfpInstructionWriteMetadata{} }
-func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionWriteMetadata) ProtoMessage()    {}
-func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{26}
-}
-
-func (m *OfpInstructionWriteMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Unmarshal(m, b)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(m, src)
-}
-func (m *OfpInstructionWriteMetadata) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionWriteMetadata.Size(m)
-}
-func (m *OfpInstructionWriteMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionWriteMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionWriteMetadata proto.InternalMessageInfo
-
-func (m *OfpInstructionWriteMetadata) GetMetadata() uint64 {
-	if m != nil {
-		return m.Metadata
-	}
-	return 0
-}
-
-func (m *OfpInstructionWriteMetadata) GetMetadataMask() uint64 {
-	if m != nil {
-		return m.MetadataMask
-	}
-	return 0
-}
-
-// Instruction structure for OFPIT_WRITE/APPLY/CLEAR_ACTIONS
-type OfpInstructionActions struct {
-	Actions              []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpInstructionActions) Reset()         { *m = OfpInstructionActions{} }
-func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionActions) ProtoMessage()    {}
-func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{27}
-}
-
-func (m *OfpInstructionActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionActions.Unmarshal(m, b)
-}
-func (m *OfpInstructionActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionActions.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionActions.Merge(m, src)
-}
-func (m *OfpInstructionActions) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionActions.Size(m)
-}
-func (m *OfpInstructionActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionActions proto.InternalMessageInfo
-
-func (m *OfpInstructionActions) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Instruction structure for OFPIT_METER
-type OfpInstructionMeter struct {
-	MeterId              uint32   `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionMeter) Reset()         { *m = OfpInstructionMeter{} }
-func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionMeter) ProtoMessage()    {}
-func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{28}
-}
-
-func (m *OfpInstructionMeter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionMeter.Unmarshal(m, b)
-}
-func (m *OfpInstructionMeter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionMeter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionMeter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionMeter.Merge(m, src)
-}
-func (m *OfpInstructionMeter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionMeter.Size(m)
-}
-func (m *OfpInstructionMeter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionMeter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionMeter proto.InternalMessageInfo
-
-func (m *OfpInstructionMeter) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-// Instruction structure for experimental instructions
-type OfpInstructionExperimenter struct {
-	Experimenter uint32 `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	// Experimenter-defined arbitrary additional data.
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpInstructionExperimenter) Reset()         { *m = OfpInstructionExperimenter{} }
-func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpInstructionExperimenter) ProtoMessage()    {}
-func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{29}
-}
-
-func (m *OfpInstructionExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpInstructionExperimenter.Unmarshal(m, b)
-}
-func (m *OfpInstructionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpInstructionExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionExperimenter.Merge(m, src)
-}
-func (m *OfpInstructionExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpInstructionExperimenter.Size(m)
-}
-func (m *OfpInstructionExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpInstructionExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpInstructionExperimenter proto.InternalMessageInfo
-
-func (m *OfpInstructionExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpInstructionExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Flow setup and teardown (controller -> datapath).
-type OfpFlowMod struct {
-	//ofp_header header;
-	Cookie               uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Command              OfpFlowModCommand `protobuf:"varint,4,opt,name=command,proto3,enum=openflow_13.OfpFlowModCommand" json:"command,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Priority             uint32            `protobuf:"varint,7,opt,name=priority,proto3" json:"priority,omitempty"`
-	BufferId             uint32            `protobuf:"varint,8,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	OutPort              uint32            `protobuf:"varint,9,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32            `protobuf:"varint,10,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Flags                uint32            `protobuf:"varint,11,opt,name=flags,proto3" json:"flags,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowMod) Reset()         { *m = OfpFlowMod{} }
-func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowMod) ProtoMessage()    {}
-func (*OfpFlowMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{30}
-}
-
-func (m *OfpFlowMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowMod.Unmarshal(m, b)
-}
-func (m *OfpFlowMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowMod.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowMod.Merge(m, src)
-}
-func (m *OfpFlowMod) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowMod.Size(m)
-}
-func (m *OfpFlowMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowMod proto.InternalMessageInfo
-
-func (m *OfpFlowMod) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetCommand() OfpFlowModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpFlowModCommand_OFPFC_ADD
-}
-
-func (m *OfpFlowMod) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpFlowMod) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpFlowMod) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Bucket for use in groups.
-type OfpBucket struct {
-	Weight               uint32       `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
-	WatchPort            uint32       `protobuf:"varint,2,opt,name=watch_port,json=watchPort,proto3" json:"watch_port,omitempty"`
-	WatchGroup           uint32       `protobuf:"varint,3,opt,name=watch_group,json=watchGroup,proto3" json:"watch_group,omitempty"`
-	Actions              []*OfpAction `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpBucket) Reset()         { *m = OfpBucket{} }
-func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
-func (*OfpBucket) ProtoMessage()    {}
-func (*OfpBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{31}
-}
-
-func (m *OfpBucket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucket.Unmarshal(m, b)
-}
-func (m *OfpBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucket.Marshal(b, m, deterministic)
-}
-func (m *OfpBucket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucket.Merge(m, src)
-}
-func (m *OfpBucket) XXX_Size() int {
-	return xxx_messageInfo_OfpBucket.Size(m)
-}
-func (m *OfpBucket) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucket proto.InternalMessageInfo
-
-func (m *OfpBucket) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetWatchPort() uint32 {
-	if m != nil {
-		return m.WatchPort
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetWatchGroup() uint32 {
-	if m != nil {
-		return m.WatchGroup
-	}
-	return 0
-}
-
-func (m *OfpBucket) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Group setup and teardown (controller -> datapath).
-type OfpGroupMod struct {
-	//ofp_header header;
-	Command              OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
-	Type                 OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket       `protobuf:"bytes,4,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *OfpGroupMod) Reset()         { *m = OfpGroupMod{} }
-func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupMod) ProtoMessage()    {}
-func (*OfpGroupMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{32}
-}
-
-func (m *OfpGroupMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupMod.Unmarshal(m, b)
-}
-func (m *OfpGroupMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupMod.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupMod.Merge(m, src)
-}
-func (m *OfpGroupMod) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupMod.Size(m)
-}
-func (m *OfpGroupMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupMod proto.InternalMessageInfo
-
-func (m *OfpGroupMod) GetCommand() OfpGroupModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpGroupModCommand_OFPGC_ADD
-}
-
-func (m *OfpGroupMod) GetType() OfpGroupType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpGroupType_OFPGT_ALL
-}
-
-func (m *OfpGroupMod) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupMod) GetBuckets() []*OfpBucket {
-	if m != nil {
-		return m.Buckets
-	}
-	return nil
-}
-
-// Send packet (controller -> datapath).
-type OfpPacketOut struct {
-	//ofp_header header;
-	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"`
-	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
-	// The variable size action list is optionally followed by packet data.
-	// This data is only present and meaningful if buffer_id == -1.
-	Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPacketOut) Reset()         { *m = OfpPacketOut{} }
-func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketOut) ProtoMessage()    {}
-func (*OfpPacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{33}
-}
-
-func (m *OfpPacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketOut.Unmarshal(m, b)
-}
-func (m *OfpPacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketOut.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketOut.Merge(m, src)
-}
-func (m *OfpPacketOut) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketOut.Size(m)
-}
-func (m *OfpPacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketOut proto.InternalMessageInfo
-
-func (m *OfpPacketOut) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpPacketOut) GetInPort() uint32 {
-	if m != nil {
-		return m.InPort
-	}
-	return 0
-}
-
-func (m *OfpPacketOut) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-func (m *OfpPacketOut) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Packet received on port (datapath -> controller).
-type OfpPacketIn struct {
-	//ofp_header header;
-	BufferId             uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
-	Reason               OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
-	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Cookie               uint64            `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,5,opt,name=match,proto3" json:"match,omitempty"`
-	Data                 []byte            `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpPacketIn) Reset()         { *m = OfpPacketIn{} }
-func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketIn) ProtoMessage()    {}
-func (*OfpPacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{34}
-}
-
-func (m *OfpPacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketIn.Unmarshal(m, b)
-}
-func (m *OfpPacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketIn.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketIn.Merge(m, src)
-}
-func (m *OfpPacketIn) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketIn.Size(m)
-}
-func (m *OfpPacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketIn proto.InternalMessageInfo
-
-func (m *OfpPacketIn) GetBufferId() uint32 {
-	if m != nil {
-		return m.BufferId
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetReason() OfpPacketInReason {
-	if m != nil {
-		return m.Reason
-	}
-	return OfpPacketInReason_OFPR_NO_MATCH
-}
-
-func (m *OfpPacketIn) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpPacketIn) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpPacketIn) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Flow removed (datapath -> controller).
-type OfpFlowRemoved struct {
-	//ofp_header header;
-	Cookie               uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Priority             uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
-	Reason               OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
-	TableId              uint32               `protobuf:"varint,4,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	IdleTimeout          uint32               `protobuf:"varint,7,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32               `protobuf:"varint,8,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	PacketCount          uint64               `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64               `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch            `protobuf:"bytes,121,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpFlowRemoved) Reset()         { *m = OfpFlowRemoved{} }
-func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowRemoved) ProtoMessage()    {}
-func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{35}
-}
-
-func (m *OfpFlowRemoved) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowRemoved.Unmarshal(m, b)
-}
-func (m *OfpFlowRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowRemoved.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowRemoved) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowRemoved.Merge(m, src)
-}
-func (m *OfpFlowRemoved) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowRemoved.Size(m)
-}
-func (m *OfpFlowRemoved) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowRemoved.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowRemoved proto.InternalMessageInfo
-
-func (m *OfpFlowRemoved) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetReason() OfpFlowRemovedReason {
-	if m != nil {
-		return m.Reason
-	}
-	return OfpFlowRemovedReason_OFPRR_IDLE_TIMEOUT
-}
-
-func (m *OfpFlowRemoved) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpFlowRemoved) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Common header for all meter bands
-type OfpMeterBandHeader struct {
-	Type      OfpMeterBandType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMeterBandType" json:"type,omitempty"`
-	Rate      uint32           `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	BurstSize uint32           `protobuf:"varint,3,opt,name=burst_size,json=burstSize,proto3" json:"burst_size,omitempty"`
-	// Types that are valid to be assigned to Data:
-	//	*OfpMeterBandHeader_Drop
-	//	*OfpMeterBandHeader_DscpRemark
-	//	*OfpMeterBandHeader_Experimenter
-	Data                 isOfpMeterBandHeader_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
-
-func (m *OfpMeterBandHeader) Reset()         { *m = OfpMeterBandHeader{} }
-func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandHeader) ProtoMessage()    {}
-func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{36}
-}
-
-func (m *OfpMeterBandHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandHeader.Unmarshal(m, b)
-}
-func (m *OfpMeterBandHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandHeader.Merge(m, src)
-}
-func (m *OfpMeterBandHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandHeader.Size(m)
-}
-func (m *OfpMeterBandHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandHeader proto.InternalMessageInfo
-
-func (m *OfpMeterBandHeader) GetType() OfpMeterBandType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMeterBandType_OFPMBT_INVALID
-}
-
-func (m *OfpMeterBandHeader) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-func (m *OfpMeterBandHeader) GetBurstSize() uint32 {
-	if m != nil {
-		return m.BurstSize
-	}
-	return 0
-}
-
-type isOfpMeterBandHeader_Data interface {
-	isOfpMeterBandHeader_Data()
-}
-
-type OfpMeterBandHeader_Drop struct {
-	Drop *OfpMeterBandDrop `protobuf:"bytes,4,opt,name=drop,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_DscpRemark struct {
-	DscpRemark *OfpMeterBandDscpRemark `protobuf:"bytes,5,opt,name=dscp_remark,json=dscpRemark,proto3,oneof"`
-}
-
-type OfpMeterBandHeader_Experimenter struct {
-	Experimenter *OfpMeterBandExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpMeterBandHeader_Drop) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_DscpRemark) isOfpMeterBandHeader_Data() {}
-
-func (*OfpMeterBandHeader_Experimenter) isOfpMeterBandHeader_Data() {}
-
-func (m *OfpMeterBandHeader) GetData() isOfpMeterBandHeader_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDrop() *OfpMeterBandDrop {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Drop); ok {
-		return x.Drop
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetDscpRemark() *OfpMeterBandDscpRemark {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_DscpRemark); ok {
-		return x.DscpRemark
-	}
-	return nil
-}
-
-func (m *OfpMeterBandHeader) GetExperimenter() *OfpMeterBandExperimenter {
-	if x, ok := m.GetData().(*OfpMeterBandHeader_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[36].OneofWrappers = []any{
 		(*OfpMeterBandHeader_Drop)(nil),
 		(*OfpMeterBandHeader_DscpRemark)(nil),
 		(*OfpMeterBandHeader_Experimenter)(nil),
 	}
-}
-
-// OFPMBT_DROP band - drop packets
-type OfpMeterBandDrop struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDrop) Reset()         { *m = OfpMeterBandDrop{} }
-func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDrop) ProtoMessage()    {}
-func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{37}
-}
-
-func (m *OfpMeterBandDrop) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDrop.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDrop.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDrop.Merge(m, src)
-}
-func (m *OfpMeterBandDrop) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDrop.Size(m)
-}
-func (m *OfpMeterBandDrop) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDrop.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDrop proto.InternalMessageInfo
-
-// OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header
-type OfpMeterBandDscpRemark struct {
-	PrecLevel            uint32   `protobuf:"varint,1,opt,name=prec_level,json=precLevel,proto3" json:"prec_level,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandDscpRemark) Reset()         { *m = OfpMeterBandDscpRemark{} }
-func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandDscpRemark) ProtoMessage()    {}
-func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{38}
-}
-
-func (m *OfpMeterBandDscpRemark) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Unmarshal(m, b)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(m, src)
-}
-func (m *OfpMeterBandDscpRemark) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandDscpRemark.Size(m)
-}
-func (m *OfpMeterBandDscpRemark) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandDscpRemark.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandDscpRemark proto.InternalMessageInfo
-
-func (m *OfpMeterBandDscpRemark) GetPrecLevel() uint32 {
-	if m != nil {
-		return m.PrecLevel
-	}
-	return 0
-}
-
-// OFPMBT_EXPERIMENTER band - Experimenter type.
-// The rest of the band is experimenter-defined.
-type OfpMeterBandExperimenter struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandExperimenter) Reset()         { *m = OfpMeterBandExperimenter{} }
-func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandExperimenter) ProtoMessage()    {}
-func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{39}
-}
-
-func (m *OfpMeterBandExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Unmarshal(m, b)
-}
-func (m *OfpMeterBandExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandExperimenter.Merge(m, src)
-}
-func (m *OfpMeterBandExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandExperimenter.Size(m)
-}
-func (m *OfpMeterBandExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandExperimenter proto.InternalMessageInfo
-
-func (m *OfpMeterBandExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-// Meter configuration. OFPT_METER_MOD.
-type OfpMeterMod struct {
-	Command              OfpMeterModCommand    `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpMeterModCommand" json:"command,omitempty"`
-	Flags                uint32                `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,3,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,4,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterMod) Reset()         { *m = OfpMeterMod{} }
-func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMod) ProtoMessage()    {}
-func (*OfpMeterMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{40}
-}
-
-func (m *OfpMeterMod) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMod.Unmarshal(m, b)
-}
-func (m *OfpMeterMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMod.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMod.Merge(m, src)
-}
-func (m *OfpMeterMod) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMod.Size(m)
-}
-func (m *OfpMeterMod) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMod.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMod proto.InternalMessageInfo
-
-func (m *OfpMeterMod) GetCommand() OfpMeterModCommand {
-	if m != nil {
-		return m.Command
-	}
-	return OfpMeterModCommand_OFPMC_ADD
-}
-
-func (m *OfpMeterMod) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMeterMod) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterMod) GetBands() []*OfpMeterBandHeader {
-	if m != nil {
-		return m.Bands
-	}
-	return nil
-}
-
-// OFPT_ERROR: Error message (datapath -> controller).
-type OfpErrorMsg struct {
-	Header               *OfpHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
-	Type                 uint32     `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
-	Code                 uint32     `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
-	Data                 []byte     `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *OfpErrorMsg) Reset()         { *m = OfpErrorMsg{} }
-func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorMsg) ProtoMessage()    {}
-func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{41}
-}
-
-func (m *OfpErrorMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorMsg.Merge(m, src)
-}
-func (m *OfpErrorMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorMsg.Size(m)
-}
-func (m *OfpErrorMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorMsg proto.InternalMessageInfo
-
-func (m *OfpErrorMsg) GetHeader() *OfpHeader {
-	if m != nil {
-		return m.Header
-	}
-	return nil
-}
-
-func (m *OfpErrorMsg) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpErrorMsg) GetCode() uint32 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *OfpErrorMsg) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// OFPET_EXPERIMENTER: Error message (datapath -> controller).
-type OfpErrorExperimenterMsg struct {
-	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Experimenter         uint32   `protobuf:"varint,3,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpErrorExperimenterMsg) Reset()         { *m = OfpErrorExperimenterMsg{} }
-func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
-func (*OfpErrorExperimenterMsg) ProtoMessage()    {}
-func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{42}
-}
-
-func (m *OfpErrorExperimenterMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Unmarshal(m, b)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Marshal(b, m, deterministic)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(m, src)
-}
-func (m *OfpErrorExperimenterMsg) XXX_Size() int {
-	return xxx_messageInfo_OfpErrorExperimenterMsg.Size(m)
-}
-func (m *OfpErrorExperimenterMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpErrorExperimenterMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpErrorExperimenterMsg proto.InternalMessageInfo
-
-func (m *OfpErrorExperimenterMsg) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpErrorExperimenterMsg) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-type OfpMultipartRequest struct {
-	//ofp_header header;
-	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartRequest) Reset()         { *m = OfpMultipartRequest{} }
-func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartRequest) ProtoMessage()    {}
-func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{43}
-}
-
-func (m *OfpMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartRequest.Merge(m, src)
-}
-func (m *OfpMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartRequest.Size(m)
-}
-func (m *OfpMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartRequest proto.InternalMessageInfo
-
-func (m *OfpMultipartRequest) GetType() OfpMultipartType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMultipartType_OFPMP_DESC
-}
-
-func (m *OfpMultipartRequest) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMultipartRequest) GetBody() []byte {
-	if m != nil {
-		return m.Body
-	}
-	return nil
-}
-
-type OfpMultipartReply struct {
-	//ofp_header header;
-	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
-	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
-	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OfpMultipartReply) Reset()         { *m = OfpMultipartReply{} }
-func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
-func (*OfpMultipartReply) ProtoMessage()    {}
-func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{44}
-}
-
-func (m *OfpMultipartReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMultipartReply.Unmarshal(m, b)
-}
-func (m *OfpMultipartReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMultipartReply.Marshal(b, m, deterministic)
-}
-func (m *OfpMultipartReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartReply.Merge(m, src)
-}
-func (m *OfpMultipartReply) XXX_Size() int {
-	return xxx_messageInfo_OfpMultipartReply.Size(m)
-}
-func (m *OfpMultipartReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMultipartReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMultipartReply proto.InternalMessageInfo
-
-func (m *OfpMultipartReply) GetType() OfpMultipartType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpMultipartType_OFPMP_DESC
-}
-
-func (m *OfpMultipartReply) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMultipartReply) GetBody() []byte {
-	if m != nil {
-		return m.Body
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_DESC request.  Each entry is a NULL-terminated
-// ASCII string.
-type OfpDesc struct {
-	MfrDesc              string   `protobuf:"bytes,1,opt,name=mfr_desc,json=mfrDesc,proto3" json:"mfr_desc,omitempty"`
-	HwDesc               string   `protobuf:"bytes,2,opt,name=hw_desc,json=hwDesc,proto3" json:"hw_desc,omitempty"`
-	SwDesc               string   `protobuf:"bytes,3,opt,name=sw_desc,json=swDesc,proto3" json:"sw_desc,omitempty"`
-	SerialNum            string   `protobuf:"bytes,4,opt,name=serial_num,json=serialNum,proto3" json:"serial_num,omitempty"`
-	DpDesc               string   `protobuf:"bytes,5,opt,name=dp_desc,json=dpDesc,proto3" json:"dp_desc,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpDesc) Reset()         { *m = OfpDesc{} }
-func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpDesc) ProtoMessage()    {}
-func (*OfpDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{45}
-}
-
-func (m *OfpDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpDesc.Unmarshal(m, b)
-}
-func (m *OfpDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDesc.Merge(m, src)
-}
-func (m *OfpDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpDesc.Size(m)
-}
-func (m *OfpDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpDesc proto.InternalMessageInfo
-
-func (m *OfpDesc) GetMfrDesc() string {
-	if m != nil {
-		return m.MfrDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetHwDesc() string {
-	if m != nil {
-		return m.HwDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetSwDesc() string {
-	if m != nil {
-		return m.SwDesc
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetSerialNum() string {
-	if m != nil {
-		return m.SerialNum
-	}
-	return ""
-}
-
-func (m *OfpDesc) GetDpDesc() string {
-	if m != nil {
-		return m.DpDesc
-	}
-	return ""
-}
-
-// Body for ofp_multipart_request of type OFPMP_FLOW.
-type OfpFlowStatsRequest struct {
-	TableId              uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpFlowStatsRequest) Reset()         { *m = OfpFlowStatsRequest{} }
-func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStatsRequest) ProtoMessage()    {}
-func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{46}
-}
-
-func (m *OfpFlowStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpFlowStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStatsRequest.Merge(m, src)
-}
-func (m *OfpFlowStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStatsRequest.Size(m)
-}
-func (m *OfpFlowStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStatsRequest proto.InternalMessageInfo
-
-func (m *OfpFlowStatsRequest) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpFlowStatsRequest) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_FLOW request.
-type OfpFlowStats struct {
-	Id                   uint64            `protobuf:"varint,14,opt,name=id,proto3" json:"id,omitempty"`
-	TableId              uint32            `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	DurationSec          uint32            `protobuf:"varint,2,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32            `protobuf:"varint,3,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	Priority             uint32            `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
-	IdleTimeout          uint32            `protobuf:"varint,5,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"`
-	HardTimeout          uint32            `protobuf:"varint,6,opt,name=hard_timeout,json=hardTimeout,proto3" json:"hard_timeout,omitempty"`
-	Flags                uint32            `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
-	Cookie               uint64            `protobuf:"varint,8,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	PacketCount          uint64            `protobuf:"varint,9,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64            `protobuf:"varint,10,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	Match                *OfpMatch         `protobuf:"bytes,12,opt,name=match,proto3" json:"match,omitempty"`
-	Instructions         []*OfpInstruction `protobuf:"bytes,13,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpFlowStats) Reset()         { *m = OfpFlowStats{} }
-func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
-func (*OfpFlowStats) ProtoMessage()    {}
-func (*OfpFlowStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{47}
-}
-
-func (m *OfpFlowStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpFlowStats.Unmarshal(m, b)
-}
-func (m *OfpFlowStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpFlowStats.Marshal(b, m, deterministic)
-}
-func (m *OfpFlowStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStats.Merge(m, src)
-}
-func (m *OfpFlowStats) XXX_Size() int {
-	return xxx_messageInfo_OfpFlowStats.Size(m)
-}
-func (m *OfpFlowStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpFlowStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpFlowStats proto.InternalMessageInfo
-
-func (m *OfpFlowStats) GetId() uint64 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetIdleTimeout() uint32 {
-	if m != nil {
-		return m.IdleTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetHardTimeout() uint32 {
-	if m != nil {
-		return m.HardTimeout
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpFlowStats) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-func (m *OfpFlowStats) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request of type OFPMP_AGGREGATE.
-type OfpAggregateStatsRequest struct {
-	TableId              uint32    `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	OutPort              uint32    `protobuf:"varint,2,opt,name=out_port,json=outPort,proto3" json:"out_port,omitempty"`
-	OutGroup             uint32    `protobuf:"varint,3,opt,name=out_group,json=outGroup,proto3" json:"out_group,omitempty"`
-	Cookie               uint64    `protobuf:"varint,4,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	CookieMask           uint64    `protobuf:"varint,5,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
-	Match                *OfpMatch `protobuf:"bytes,6,opt,name=match,proto3" json:"match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *OfpAggregateStatsRequest) Reset()         { *m = OfpAggregateStatsRequest{} }
-func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsRequest) ProtoMessage()    {}
-func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{48}
-}
-
-func (m *OfpAggregateStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsRequest.Merge(m, src)
-}
-func (m *OfpAggregateStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsRequest.Size(m)
-}
-func (m *OfpAggregateStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsRequest proto.InternalMessageInfo
-
-func (m *OfpAggregateStatsRequest) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetOutPort() uint32 {
-	if m != nil {
-		return m.OutPort
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetOutGroup() uint32 {
-	if m != nil {
-		return m.OutGroup
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetCookieMask() uint64 {
-	if m != nil {
-		return m.CookieMask
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsRequest) GetMatch() *OfpMatch {
-	if m != nil {
-		return m.Match
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_AGGREGATE request.
-type OfpAggregateStatsReply struct {
-	PacketCount          uint64   `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	FlowCount            uint32   `protobuf:"varint,3,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAggregateStatsReply) Reset()         { *m = OfpAggregateStatsReply{} }
-func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
-func (*OfpAggregateStatsReply) ProtoMessage()    {}
-func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{49}
-}
-
-func (m *OfpAggregateStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAggregateStatsReply.Unmarshal(m, b)
-}
-func (m *OfpAggregateStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAggregateStatsReply.Marshal(b, m, deterministic)
-}
-func (m *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsReply.Merge(m, src)
-}
-func (m *OfpAggregateStatsReply) XXX_Size() int {
-	return xxx_messageInfo_OfpAggregateStatsReply.Size(m)
-}
-func (m *OfpAggregateStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAggregateStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAggregateStatsReply proto.InternalMessageInfo
-
-func (m *OfpAggregateStatsReply) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsReply) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpAggregateStatsReply) GetFlowCount() uint32 {
-	if m != nil {
-		return m.FlowCount
-	}
-	return 0
-}
-
-// Common header for all Table Feature Properties
-type OfpTableFeatureProperty struct {
-	Type OfpTableFeaturePropType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpTableFeaturePropType" json:"type,omitempty"`
-	// Types that are valid to be assigned to Value:
-	//	*OfpTableFeatureProperty_Instructions
-	//	*OfpTableFeatureProperty_NextTables
-	//	*OfpTableFeatureProperty_Actions
-	//	*OfpTableFeatureProperty_Oxm
-	//	*OfpTableFeatureProperty_Experimenter
-	Value                isOfpTableFeatureProperty_Value `protobuf_oneof:"value"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
-}
-
-func (m *OfpTableFeatureProperty) Reset()         { *m = OfpTableFeatureProperty{} }
-func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatureProperty) ProtoMessage()    {}
-func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{50}
-}
-
-func (m *OfpTableFeatureProperty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatureProperty.Unmarshal(m, b)
-}
-func (m *OfpTableFeatureProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatureProperty.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatureProperty.Merge(m, src)
-}
-func (m *OfpTableFeatureProperty) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatureProperty.Size(m)
-}
-func (m *OfpTableFeatureProperty) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatureProperty.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatureProperty proto.InternalMessageInfo
-
-func (m *OfpTableFeatureProperty) GetType() OfpTableFeaturePropType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpTableFeaturePropType_OFPTFPT_INSTRUCTIONS
-}
-
-type isOfpTableFeatureProperty_Value interface {
-	isOfpTableFeatureProperty_Value()
-}
-
-type OfpTableFeatureProperty_Instructions struct {
-	Instructions *OfpTableFeaturePropInstructions `protobuf:"bytes,2,opt,name=instructions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_NextTables struct {
-	NextTables *OfpTableFeaturePropNextTables `protobuf:"bytes,3,opt,name=next_tables,json=nextTables,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Actions struct {
-	Actions *OfpTableFeaturePropActions `protobuf:"bytes,4,opt,name=actions,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Oxm struct {
-	Oxm *OfpTableFeaturePropOxm `protobuf:"bytes,5,opt,name=oxm,proto3,oneof"`
-}
-
-type OfpTableFeatureProperty_Experimenter struct {
-	Experimenter *OfpTableFeaturePropExperimenter `protobuf:"bytes,6,opt,name=experimenter,proto3,oneof"`
-}
-
-func (*OfpTableFeatureProperty_Instructions) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_NextTables) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Actions) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Oxm) isOfpTableFeatureProperty_Value() {}
-
-func (*OfpTableFeatureProperty_Experimenter) isOfpTableFeatureProperty_Value() {}
-
-func (m *OfpTableFeatureProperty) GetValue() isOfpTableFeatureProperty_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetInstructions() *OfpTableFeaturePropInstructions {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Instructions); ok {
-		return x.Instructions
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetNextTables() *OfpTableFeaturePropNextTables {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_NextTables); ok {
-		return x.NextTables
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetActions() *OfpTableFeaturePropActions {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Actions); ok {
-		return x.Actions
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetOxm() *OfpTableFeaturePropOxm {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Oxm); ok {
-		return x.Oxm
-	}
-	return nil
-}
-
-func (m *OfpTableFeatureProperty) GetExperimenter() *OfpTableFeaturePropExperimenter {
-	if x, ok := m.GetValue().(*OfpTableFeatureProperty_Experimenter); ok {
-		return x.Experimenter
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[50].OneofWrappers = []any{
 		(*OfpTableFeatureProperty_Instructions)(nil),
 		(*OfpTableFeatureProperty_NextTables)(nil),
 		(*OfpTableFeatureProperty_Actions)(nil),
 		(*OfpTableFeatureProperty_Oxm)(nil),
 		(*OfpTableFeatureProperty_Experimenter)(nil),
 	}
-}
-
-// Instructions property
-type OfpTableFeaturePropInstructions struct {
-	// One of OFPTFPT_INSTRUCTIONS,
-	//OFPTFPT_INSTRUCTIONS_MISS.
-	Instructions         []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpTableFeaturePropInstructions) Reset()         { *m = OfpTableFeaturePropInstructions{} }
-func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
-func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{51}
-}
-
-func (m *OfpTableFeaturePropInstructions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropInstructions.Size(m)
-}
-func (m *OfpTableFeaturePropInstructions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropInstructions proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropInstructions) GetInstructions() []*OfpInstruction {
-	if m != nil {
-		return m.Instructions
-	}
-	return nil
-}
-
-// Next Tables property
-type OfpTableFeaturePropNextTables struct {
-	// One of OFPTFPT_NEXT_TABLES,
-	//OFPTFPT_NEXT_TABLES_MISS.
-	NextTableIds         []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropNextTables) Reset()         { *m = OfpTableFeaturePropNextTables{} }
-func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropNextTables) ProtoMessage()    {}
-func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{52}
-}
-
-func (m *OfpTableFeaturePropNextTables) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(m, src)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropNextTables.Size(m)
-}
-func (m *OfpTableFeaturePropNextTables) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropNextTables proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropNextTables) GetNextTableIds() []uint32 {
-	if m != nil {
-		return m.NextTableIds
-	}
-	return nil
-}
-
-// Actions property
-type OfpTableFeaturePropActions struct {
-	// One of OFPTFPT_WRITE_ACTIONS,
-	//OFPTFPT_WRITE_ACTIONS_MISS,
-	//OFPTFPT_APPLY_ACTIONS,
-	//OFPTFPT_APPLY_ACTIONS_MISS.
-	Actions              []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpTableFeaturePropActions) Reset()         { *m = OfpTableFeaturePropActions{} }
-func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropActions) ProtoMessage()    {}
-func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{53}
-}
-
-func (m *OfpTableFeaturePropActions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropActions.Merge(m, src)
-}
-func (m *OfpTableFeaturePropActions) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropActions.Size(m)
-}
-func (m *OfpTableFeaturePropActions) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropActions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropActions proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropActions) GetActions() []*OfpAction {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Match, Wildcard or Set-Field property
-type OfpTableFeaturePropOxm struct {
-	// TODO is this a uint32???
-	OxmIds               []uint32 `protobuf:"varint,3,rep,packed,name=oxm_ids,json=oxmIds,proto3" json:"oxm_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropOxm) Reset()         { *m = OfpTableFeaturePropOxm{} }
-func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropOxm) ProtoMessage()    {}
-func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{54}
-}
-
-func (m *OfpTableFeaturePropOxm) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(m, src)
-}
-func (m *OfpTableFeaturePropOxm) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropOxm.Size(m)
-}
-func (m *OfpTableFeaturePropOxm) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropOxm.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropOxm proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropOxm) GetOxmIds() []uint32 {
-	if m != nil {
-		return m.OxmIds
-	}
-	return nil
-}
-
-// Experimenter table feature property
-type OfpTableFeaturePropExperimenter struct {
-	// One of OFPTFPT_EXPERIMENTER,
-	//OFPTFPT_EXPERIMENTER_MISS.
-	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	ExperimenterData     []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableFeaturePropExperimenter) Reset()         { *m = OfpTableFeaturePropExperimenter{} }
-func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
-func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{55}
-}
-
-func (m *OfpTableFeaturePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(m, src)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Size(m)
-}
-func (m *OfpTableFeaturePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeaturePropExperimenter proto.InternalMessageInfo
-
-func (m *OfpTableFeaturePropExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpTableFeaturePropExperimenter) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpTableFeaturePropExperimenter) GetExperimenterData() []uint32 {
-	if m != nil {
-		return m.ExperimenterData
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES./
-// Body of reply to OFPMP_TABLE_FEATURES request.
-type OfpTableFeatures struct {
-	TableId       uint32 `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	Name          string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	MetadataMatch uint64 `protobuf:"varint,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"`
-	MetadataWrite uint64 `protobuf:"varint,4,opt,name=metadata_write,json=metadataWrite,proto3" json:"metadata_write,omitempty"`
-	Config        uint32 `protobuf:"varint,5,opt,name=config,proto3" json:"config,omitempty"`
-	MaxEntries    uint32 `protobuf:"varint,6,opt,name=max_entries,json=maxEntries,proto3" json:"max_entries,omitempty"`
-	// Table Feature Property list
-	Properties           []*OfpTableFeatureProperty `protobuf:"bytes,7,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
-	XXX_unrecognized     []byte                     `json:"-"`
-	XXX_sizecache        int32                      `json:"-"`
-}
-
-func (m *OfpTableFeatures) Reset()         { *m = OfpTableFeatures{} }
-func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpTableFeatures) ProtoMessage()    {}
-func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{56}
-}
-
-func (m *OfpTableFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableFeatures.Unmarshal(m, b)
-}
-func (m *OfpTableFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpTableFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatures.Merge(m, src)
-}
-func (m *OfpTableFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpTableFeatures.Size(m)
-}
-func (m *OfpTableFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableFeatures proto.InternalMessageInfo
-
-func (m *OfpTableFeatures) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *OfpTableFeatures) GetMetadataMatch() uint64 {
-	if m != nil {
-		return m.MetadataMatch
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetMetadataWrite() uint64 {
-	if m != nil {
-		return m.MetadataWrite
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetConfig() uint32 {
-	if m != nil {
-		return m.Config
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetMaxEntries() uint32 {
-	if m != nil {
-		return m.MaxEntries
-	}
-	return 0
-}
-
-func (m *OfpTableFeatures) GetProperties() []*OfpTableFeatureProperty {
-	if m != nil {
-		return m.Properties
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_TABLE request.
-type OfpTableStats struct {
-	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
-	ActiveCount          uint32   `protobuf:"varint,2,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`
-	LookupCount          uint64   `protobuf:"varint,3,opt,name=lookup_count,json=lookupCount,proto3" json:"lookup_count,omitempty"`
-	MatchedCount         uint64   `protobuf:"varint,4,opt,name=matched_count,json=matchedCount,proto3" json:"matched_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpTableStats) Reset()         { *m = OfpTableStats{} }
-func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
-func (*OfpTableStats) ProtoMessage()    {}
-func (*OfpTableStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{57}
-}
-
-func (m *OfpTableStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpTableStats.Unmarshal(m, b)
-}
-func (m *OfpTableStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpTableStats.Marshal(b, m, deterministic)
-}
-func (m *OfpTableStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableStats.Merge(m, src)
-}
-func (m *OfpTableStats) XXX_Size() int {
-	return xxx_messageInfo_OfpTableStats.Size(m)
-}
-func (m *OfpTableStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpTableStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpTableStats proto.InternalMessageInfo
-
-func (m *OfpTableStats) GetTableId() uint32 {
-	if m != nil {
-		return m.TableId
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetActiveCount() uint32 {
-	if m != nil {
-		return m.ActiveCount
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetLookupCount() uint64 {
-	if m != nil {
-		return m.LookupCount
-	}
-	return 0
-}
-
-func (m *OfpTableStats) GetMatchedCount() uint64 {
-	if m != nil {
-		return m.MatchedCount
-	}
-	return 0
-}
-
-// Body for ofp_multipart_request of type OFPMP_PORT.
-type OfpPortStatsRequest struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStatsRequest) Reset()         { *m = OfpPortStatsRequest{} }
-func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStatsRequest) ProtoMessage()    {}
-func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{58}
-}
-
-func (m *OfpPortStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpPortStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatsRequest.Merge(m, src)
-}
-func (m *OfpPortStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStatsRequest.Size(m)
-}
-func (m *OfpPortStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStatsRequest proto.InternalMessageInfo
-
-func (m *OfpPortStatsRequest) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_PORT request. If a counter is unsupported, set
-// the field to all ones.
-type OfpPortStats struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	RxPackets            uint64   `protobuf:"varint,2,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,3,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	RxBytes              uint64   `protobuf:"varint,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,5,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	RxDropped            uint64   `protobuf:"varint,6,opt,name=rx_dropped,json=rxDropped,proto3" json:"rx_dropped,omitempty"`
-	TxDropped            uint64   `protobuf:"varint,7,opt,name=tx_dropped,json=txDropped,proto3" json:"tx_dropped,omitempty"`
-	RxErrors             uint64   `protobuf:"varint,8,opt,name=rx_errors,json=rxErrors,proto3" json:"rx_errors,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,9,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	RxFrameErr           uint64   `protobuf:"varint,10,opt,name=rx_frame_err,json=rxFrameErr,proto3" json:"rx_frame_err,omitempty"`
-	RxOverErr            uint64   `protobuf:"varint,11,opt,name=rx_over_err,json=rxOverErr,proto3" json:"rx_over_err,omitempty"`
-	RxCrcErr             uint64   `protobuf:"varint,12,opt,name=rx_crc_err,json=rxCrcErr,proto3" json:"rx_crc_err,omitempty"`
-	Collisions           uint64   `protobuf:"varint,13,opt,name=collisions,proto3" json:"collisions,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,14,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,15,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpPortStats) Reset()         { *m = OfpPortStats{} }
-func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
-func (*OfpPortStats) ProtoMessage()    {}
-func (*OfpPortStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{59}
-}
-
-func (m *OfpPortStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPortStats.Unmarshal(m, b)
-}
-func (m *OfpPortStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPortStats.Marshal(b, m, deterministic)
-}
-func (m *OfpPortStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStats.Merge(m, src)
-}
-func (m *OfpPortStats) XXX_Size() int {
-	return xxx_messageInfo_OfpPortStats.Size(m)
-}
-func (m *OfpPortStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPortStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPortStats proto.InternalMessageInfo
-
-func (m *OfpPortStats) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxDropped() uint64 {
-	if m != nil {
-		return m.RxDropped
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxDropped() uint64 {
-	if m != nil {
-		return m.TxDropped
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxErrors() uint64 {
-	if m != nil {
-		return m.RxErrors
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxFrameErr() uint64 {
-	if m != nil {
-		return m.RxFrameErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxOverErr() uint64 {
-	if m != nil {
-		return m.RxOverErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetRxCrcErr() uint64 {
-	if m != nil {
-		return m.RxCrcErr
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetCollisions() uint64 {
-	if m != nil {
-		return m.Collisions
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpPortStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-// Body of OFPMP_GROUP request.
-type OfpGroupStatsRequest struct {
-	GroupId              uint32   `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupStatsRequest) Reset()         { *m = OfpGroupStatsRequest{} }
-func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStatsRequest) ProtoMessage()    {}
-func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{60}
-}
-
-func (m *OfpGroupStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpGroupStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStatsRequest.Merge(m, src)
-}
-func (m *OfpGroupStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStatsRequest.Size(m)
-}
-func (m *OfpGroupStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStatsRequest proto.InternalMessageInfo
-
-func (m *OfpGroupStatsRequest) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-// Used in group stats replies.
-type OfpBucketCounter struct {
-	PacketCount          uint64   `protobuf:"varint,1,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64   `protobuf:"varint,2,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpBucketCounter) Reset()         { *m = OfpBucketCounter{} }
-func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
-func (*OfpBucketCounter) ProtoMessage()    {}
-func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{61}
-}
-
-func (m *OfpBucketCounter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpBucketCounter.Unmarshal(m, b)
-}
-func (m *OfpBucketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpBucketCounter.Marshal(b, m, deterministic)
-}
-func (m *OfpBucketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucketCounter.Merge(m, src)
-}
-func (m *OfpBucketCounter) XXX_Size() int {
-	return xxx_messageInfo_OfpBucketCounter.Size(m)
-}
-func (m *OfpBucketCounter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpBucketCounter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpBucketCounter proto.InternalMessageInfo
-
-func (m *OfpBucketCounter) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpBucketCounter) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_GROUP request.
-type OfpGroupStats struct {
-	GroupId              uint32              `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	RefCount             uint32              `protobuf:"varint,2,opt,name=ref_count,json=refCount,proto3" json:"ref_count,omitempty"`
-	PacketCount          uint64              `protobuf:"varint,3,opt,name=packet_count,json=packetCount,proto3" json:"packet_count,omitempty"`
-	ByteCount            uint64              `protobuf:"varint,4,opt,name=byte_count,json=byteCount,proto3" json:"byte_count,omitempty"`
-	DurationSec          uint32              `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32              `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BucketStats          []*OfpBucketCounter `protobuf:"bytes,7,rep,name=bucket_stats,json=bucketStats,proto3" json:"bucket_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpGroupStats) Reset()         { *m = OfpGroupStats{} }
-func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupStats) ProtoMessage()    {}
-func (*OfpGroupStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{62}
-}
-
-func (m *OfpGroupStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupStats.Unmarshal(m, b)
-}
-func (m *OfpGroupStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupStats.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStats.Merge(m, src)
-}
-func (m *OfpGroupStats) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupStats.Size(m)
-}
-func (m *OfpGroupStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupStats proto.InternalMessageInfo
-
-func (m *OfpGroupStats) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetRefCount() uint32 {
-	if m != nil {
-		return m.RefCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetPacketCount() uint64 {
-	if m != nil {
-		return m.PacketCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetByteCount() uint64 {
-	if m != nil {
-		return m.ByteCount
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpGroupStats) GetBucketStats() []*OfpBucketCounter {
-	if m != nil {
-		return m.BucketStats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_GROUP_DESC request.
-type OfpGroupDesc struct {
-	Type                 OfpGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
-	GroupId              uint32       `protobuf:"varint,2,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
-	Buckets              []*OfpBucket `protobuf:"bytes,3,rep,name=buckets,proto3" json:"buckets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *OfpGroupDesc) Reset()         { *m = OfpGroupDesc{} }
-func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupDesc) ProtoMessage()    {}
-func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{63}
-}
-
-func (m *OfpGroupDesc) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupDesc.Unmarshal(m, b)
-}
-func (m *OfpGroupDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupDesc.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupDesc.Merge(m, src)
-}
-func (m *OfpGroupDesc) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupDesc.Size(m)
-}
-func (m *OfpGroupDesc) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupDesc.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupDesc proto.InternalMessageInfo
-
-func (m *OfpGroupDesc) GetType() OfpGroupType {
-	if m != nil {
-		return m.Type
-	}
-	return OfpGroupType_OFPGT_ALL
-}
-
-func (m *OfpGroupDesc) GetGroupId() uint32 {
-	if m != nil {
-		return m.GroupId
-	}
-	return 0
-}
-
-func (m *OfpGroupDesc) GetBuckets() []*OfpBucket {
-	if m != nil {
-		return m.Buckets
-	}
-	return nil
-}
-
-type OfpGroupEntry struct {
-	Desc                 *OfpGroupDesc  `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
-	Stats                *OfpGroupStats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *OfpGroupEntry) Reset()         { *m = OfpGroupEntry{} }
-func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupEntry) ProtoMessage()    {}
-func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{64}
-}
-
-func (m *OfpGroupEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupEntry.Unmarshal(m, b)
-}
-func (m *OfpGroupEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupEntry.Merge(m, src)
-}
-func (m *OfpGroupEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupEntry.Size(m)
-}
-func (m *OfpGroupEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupEntry proto.InternalMessageInfo
-
-func (m *OfpGroupEntry) GetDesc() *OfpGroupDesc {
-	if m != nil {
-		return m.Desc
-	}
-	return nil
-}
-
-func (m *OfpGroupEntry) GetStats() *OfpGroupStats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_GROUP_FEATURES request. Group features.
-type OfpGroupFeatures struct {
-	Types                uint32   `protobuf:"varint,1,opt,name=types,proto3" json:"types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxGroups            []uint32 `protobuf:"varint,3,rep,packed,name=max_groups,json=maxGroups,proto3" json:"max_groups,omitempty"`
-	Actions              []uint32 `protobuf:"varint,4,rep,packed,name=actions,proto3" json:"actions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpGroupFeatures) Reset()         { *m = OfpGroupFeatures{} }
-func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpGroupFeatures) ProtoMessage()    {}
-func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{65}
-}
-
-func (m *OfpGroupFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpGroupFeatures.Unmarshal(m, b)
-}
-func (m *OfpGroupFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpGroupFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpGroupFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupFeatures.Merge(m, src)
-}
-func (m *OfpGroupFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpGroupFeatures.Size(m)
-}
-func (m *OfpGroupFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpGroupFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpGroupFeatures proto.InternalMessageInfo
-
-func (m *OfpGroupFeatures) GetTypes() uint32 {
-	if m != nil {
-		return m.Types
-	}
-	return 0
-}
-
-func (m *OfpGroupFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
-	}
-	return 0
-}
-
-func (m *OfpGroupFeatures) GetMaxGroups() []uint32 {
-	if m != nil {
-		return m.MaxGroups
-	}
-	return nil
-}
-
-func (m *OfpGroupFeatures) GetActions() []uint32 {
-	if m != nil {
-		return m.Actions
-	}
-	return nil
-}
-
-// Body of OFPMP_METER and OFPMP_METER_CONFIG requests.
-type OfpMeterMultipartRequest struct {
-	MeterId              uint32   `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterMultipartRequest) Reset()         { *m = OfpMeterMultipartRequest{} }
-func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterMultipartRequest) ProtoMessage()    {}
-func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{66}
-}
-
-func (m *OfpMeterMultipartRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Unmarshal(m, b)
-}
-func (m *OfpMeterMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMultipartRequest.Merge(m, src)
-}
-func (m *OfpMeterMultipartRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterMultipartRequest.Size(m)
-}
-func (m *OfpMeterMultipartRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterMultipartRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterMultipartRequest proto.InternalMessageInfo
-
-func (m *OfpMeterMultipartRequest) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-// Statistics for each meter band
-type OfpMeterBandStats struct {
-	PacketBandCount      uint64   `protobuf:"varint,1,opt,name=packet_band_count,json=packetBandCount,proto3" json:"packet_band_count,omitempty"`
-	ByteBandCount        uint64   `protobuf:"varint,2,opt,name=byte_band_count,json=byteBandCount,proto3" json:"byte_band_count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterBandStats) Reset()         { *m = OfpMeterBandStats{} }
-func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterBandStats) ProtoMessage()    {}
-func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{67}
-}
-
-func (m *OfpMeterBandStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterBandStats.Unmarshal(m, b)
-}
-func (m *OfpMeterBandStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterBandStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterBandStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandStats.Merge(m, src)
-}
-func (m *OfpMeterBandStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterBandStats.Size(m)
-}
-func (m *OfpMeterBandStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterBandStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterBandStats proto.InternalMessageInfo
-
-func (m *OfpMeterBandStats) GetPacketBandCount() uint64 {
-	if m != nil {
-		return m.PacketBandCount
-	}
-	return 0
-}
-
-func (m *OfpMeterBandStats) GetByteBandCount() uint64 {
-	if m != nil {
-		return m.ByteBandCount
-	}
-	return 0
-}
-
-// Body of reply to OFPMP_METER request. Meter statistics.
-type OfpMeterStats struct {
-	MeterId              uint32               `protobuf:"varint,1,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	FlowCount            uint32               `protobuf:"varint,2,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
-	PacketInCount        uint64               `protobuf:"varint,3,opt,name=packet_in_count,json=packetInCount,proto3" json:"packet_in_count,omitempty"`
-	ByteInCount          uint64               `protobuf:"varint,4,opt,name=byte_in_count,json=byteInCount,proto3" json:"byte_in_count,omitempty"`
-	DurationSec          uint32               `protobuf:"varint,5,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32               `protobuf:"varint,6,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	BandStats            []*OfpMeterBandStats `protobuf:"bytes,7,rep,name=band_stats,json=bandStats,proto3" json:"band_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *OfpMeterStats) Reset()         { *m = OfpMeterStats{} }
-func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterStats) ProtoMessage()    {}
-func (*OfpMeterStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{68}
-}
-
-func (m *OfpMeterStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterStats.Unmarshal(m, b)
-}
-func (m *OfpMeterStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterStats.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterStats.Merge(m, src)
-}
-func (m *OfpMeterStats) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterStats.Size(m)
-}
-func (m *OfpMeterStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterStats proto.InternalMessageInfo
-
-func (m *OfpMeterStats) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetFlowCount() uint32 {
-	if m != nil {
-		return m.FlowCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetPacketInCount() uint64 {
-	if m != nil {
-		return m.PacketInCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetByteInCount() uint64 {
-	if m != nil {
-		return m.ByteInCount
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-func (m *OfpMeterStats) GetBandStats() []*OfpMeterBandStats {
-	if m != nil {
-		return m.BandStats
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_METER_CONFIG request. Meter configuration.
-type OfpMeterConfig struct {
-	Flags                uint32                `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
-	MeterId              uint32                `protobuf:"varint,2,opt,name=meter_id,json=meterId,proto3" json:"meter_id,omitempty"`
-	Bands                []*OfpMeterBandHeader `protobuf:"bytes,3,rep,name=bands,proto3" json:"bands,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpMeterConfig) Reset()         { *m = OfpMeterConfig{} }
-func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterConfig) ProtoMessage()    {}
-func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{69}
-}
-
-func (m *OfpMeterConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterConfig.Unmarshal(m, b)
-}
-func (m *OfpMeterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterConfig.Merge(m, src)
-}
-func (m *OfpMeterConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterConfig.Size(m)
-}
-func (m *OfpMeterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterConfig proto.InternalMessageInfo
-
-func (m *OfpMeterConfig) GetFlags() uint32 {
-	if m != nil {
-		return m.Flags
-	}
-	return 0
-}
-
-func (m *OfpMeterConfig) GetMeterId() uint32 {
-	if m != nil {
-		return m.MeterId
-	}
-	return 0
-}
-
-func (m *OfpMeterConfig) GetBands() []*OfpMeterBandHeader {
-	if m != nil {
-		return m.Bands
-	}
-	return nil
-}
-
-// Body of reply to OFPMP_METER_FEATURES request. Meter features.
-type OfpMeterFeatures struct {
-	MaxMeter             uint32   `protobuf:"varint,1,opt,name=max_meter,json=maxMeter,proto3" json:"max_meter,omitempty"`
-	BandTypes            uint32   `protobuf:"varint,2,opt,name=band_types,json=bandTypes,proto3" json:"band_types,omitempty"`
-	Capabilities         uint32   `protobuf:"varint,3,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
-	MaxBands             uint32   `protobuf:"varint,4,opt,name=max_bands,json=maxBands,proto3" json:"max_bands,omitempty"`
-	MaxColor             uint32   `protobuf:"varint,5,opt,name=max_color,json=maxColor,proto3" json:"max_color,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpMeterFeatures) Reset()         { *m = OfpMeterFeatures{} }
-func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterFeatures) ProtoMessage()    {}
-func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{70}
-}
-
-func (m *OfpMeterFeatures) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterFeatures.Unmarshal(m, b)
-}
-func (m *OfpMeterFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterFeatures.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterFeatures.Merge(m, src)
-}
-func (m *OfpMeterFeatures) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterFeatures.Size(m)
-}
-func (m *OfpMeterFeatures) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterFeatures.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterFeatures proto.InternalMessageInfo
-
-func (m *OfpMeterFeatures) GetMaxMeter() uint32 {
-	if m != nil {
-		return m.MaxMeter
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetBandTypes() uint32 {
-	if m != nil {
-		return m.BandTypes
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetCapabilities() uint32 {
-	if m != nil {
-		return m.Capabilities
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetMaxBands() uint32 {
-	if m != nil {
-		return m.MaxBands
-	}
-	return 0
-}
-
-func (m *OfpMeterFeatures) GetMaxColor() uint32 {
-	if m != nil {
-		return m.MaxColor
-	}
-	return 0
-}
-
-type OfpMeterEntry struct {
-	Config               *OfpMeterConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
-	Stats                *OfpMeterStats  `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *OfpMeterEntry) Reset()         { *m = OfpMeterEntry{} }
-func (m *OfpMeterEntry) String() string { return proto.CompactTextString(m) }
-func (*OfpMeterEntry) ProtoMessage()    {}
-func (*OfpMeterEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{71}
-}
-
-func (m *OfpMeterEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpMeterEntry.Unmarshal(m, b)
-}
-func (m *OfpMeterEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpMeterEntry.Marshal(b, m, deterministic)
-}
-func (m *OfpMeterEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterEntry.Merge(m, src)
-}
-func (m *OfpMeterEntry) XXX_Size() int {
-	return xxx_messageInfo_OfpMeterEntry.Size(m)
-}
-func (m *OfpMeterEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpMeterEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpMeterEntry proto.InternalMessageInfo
-
-func (m *OfpMeterEntry) GetConfig() *OfpMeterConfig {
-	if m != nil {
-		return m.Config
-	}
-	return nil
-}
-
-func (m *OfpMeterEntry) GetStats() *OfpMeterStats {
-	if m != nil {
-		return m.Stats
-	}
-	return nil
-}
-
-// Body for ofp_multipart_request/reply of type OFPMP_EXPERIMENTER.
-type OfpExperimenterMultipartHeader struct {
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterMultipartHeader) Reset()         { *m = OfpExperimenterMultipartHeader{} }
-func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterMultipartHeader) ProtoMessage()    {}
-func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{72}
-}
-
-func (m *OfpExperimenterMultipartHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(m, src)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterMultipartHeader.Size(m)
-}
-func (m *OfpExperimenterMultipartHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterMultipartHeader proto.InternalMessageInfo
-
-func (m *OfpExperimenterMultipartHeader) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpExperimenterMultipartHeader) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpExperimenterMultipartHeader) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Experimenter extension.
-type OfpExperimenterHeader struct {
-	//ofp_header header;  /* Type OFPT_EXPERIMENTER. */
-	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
-	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpExperimenterHeader) Reset()         { *m = OfpExperimenterHeader{} }
-func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpExperimenterHeader) ProtoMessage()    {}
-func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{73}
-}
-
-func (m *OfpExperimenterHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpExperimenterHeader.Unmarshal(m, b)
-}
-func (m *OfpExperimenterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpExperimenterHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterHeader.Merge(m, src)
-}
-func (m *OfpExperimenterHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpExperimenterHeader.Size(m)
-}
-func (m *OfpExperimenterHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpExperimenterHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpExperimenterHeader proto.InternalMessageInfo
-
-func (m *OfpExperimenterHeader) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpExperimenterHeader) GetExpType() uint32 {
-	if m != nil {
-		return m.ExpType
-	}
-	return 0
-}
-
-func (m *OfpExperimenterHeader) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Common description for a queue.
-type OfpQueuePropHeader struct {
-	Property             uint32   `protobuf:"varint,1,opt,name=property,proto3" json:"property,omitempty"`
-	Len                  uint32   `protobuf:"varint,2,opt,name=len,proto3" json:"len,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueuePropHeader) Reset()         { *m = OfpQueuePropHeader{} }
-func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropHeader) ProtoMessage()    {}
-func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{74}
-}
-
-func (m *OfpQueuePropHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropHeader.Unmarshal(m, b)
-}
-func (m *OfpQueuePropHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropHeader.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropHeader.Merge(m, src)
-}
-func (m *OfpQueuePropHeader) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropHeader.Size(m)
-}
-func (m *OfpQueuePropHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropHeader proto.InternalMessageInfo
-
-func (m *OfpQueuePropHeader) GetProperty() uint32 {
-	if m != nil {
-		return m.Property
-	}
-	return 0
-}
-
-func (m *OfpQueuePropHeader) GetLen() uint32 {
-	if m != nil {
-		return m.Len
-	}
-	return 0
-}
-
-// Min-Rate queue property description.
-type OfpQueuePropMinRate struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMinRate) Reset()         { *m = OfpQueuePropMinRate{} }
-func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMinRate) ProtoMessage()    {}
-func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{75}
-}
-
-func (m *OfpQueuePropMinRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMinRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMinRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMinRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMinRate.Merge(m, src)
-}
-func (m *OfpQueuePropMinRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMinRate.Size(m)
-}
-func (m *OfpQueuePropMinRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMinRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMinRate proto.InternalMessageInfo
-
-func (m *OfpQueuePropMinRate) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropMinRate) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-// Max-Rate queue property description.
-type OfpQueuePropMaxRate struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Rate                 uint32              `protobuf:"varint,2,opt,name=rate,proto3" json:"rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropMaxRate) Reset()         { *m = OfpQueuePropMaxRate{} }
-func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropMaxRate) ProtoMessage()    {}
-func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{76}
-}
-
-func (m *OfpQueuePropMaxRate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Unmarshal(m, b)
-}
-func (m *OfpQueuePropMaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMaxRate.Merge(m, src)
-}
-func (m *OfpQueuePropMaxRate) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropMaxRate.Size(m)
-}
-func (m *OfpQueuePropMaxRate) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropMaxRate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropMaxRate proto.InternalMessageInfo
-
-func (m *OfpQueuePropMaxRate) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropMaxRate) GetRate() uint32 {
-	if m != nil {
-		return m.Rate
-	}
-	return 0
-}
-
-// Experimenter queue property description.
-type OfpQueuePropExperimenter struct {
-	PropHeader           *OfpQueuePropHeader `protobuf:"bytes,1,opt,name=prop_header,json=propHeader,proto3" json:"prop_header,omitempty"`
-	Experimenter         uint32              `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
-	Data                 []byte              `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *OfpQueuePropExperimenter) Reset()         { *m = OfpQueuePropExperimenter{} }
-func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
-func (*OfpQueuePropExperimenter) ProtoMessage()    {}
-func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{77}
-}
-
-func (m *OfpQueuePropExperimenter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Unmarshal(m, b)
-}
-func (m *OfpQueuePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Marshal(b, m, deterministic)
-}
-func (m *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropExperimenter.Merge(m, src)
-}
-func (m *OfpQueuePropExperimenter) XXX_Size() int {
-	return xxx_messageInfo_OfpQueuePropExperimenter.Size(m)
-}
-func (m *OfpQueuePropExperimenter) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueuePropExperimenter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueuePropExperimenter proto.InternalMessageInfo
-
-func (m *OfpQueuePropExperimenter) GetPropHeader() *OfpQueuePropHeader {
-	if m != nil {
-		return m.PropHeader
-	}
-	return nil
-}
-
-func (m *OfpQueuePropExperimenter) GetExperimenter() uint32 {
-	if m != nil {
-		return m.Experimenter
-	}
-	return 0
-}
-
-func (m *OfpQueuePropExperimenter) GetData() []byte {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-// Full description for a queue.
-type OfpPacketQueue struct {
-	QueueId              uint32                `protobuf:"varint,1,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	Port                 uint32                `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	Properties           []*OfpQueuePropHeader `protobuf:"bytes,4,rep,name=properties,proto3" json:"properties,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *OfpPacketQueue) Reset()         { *m = OfpPacketQueue{} }
-func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpPacketQueue) ProtoMessage()    {}
-func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{78}
-}
-
-func (m *OfpPacketQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpPacketQueue.Unmarshal(m, b)
-}
-func (m *OfpPacketQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpPacketQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpPacketQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketQueue.Merge(m, src)
-}
-func (m *OfpPacketQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpPacketQueue.Size(m)
-}
-func (m *OfpPacketQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpPacketQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpPacketQueue proto.InternalMessageInfo
-
-func (m *OfpPacketQueue) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-func (m *OfpPacketQueue) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpPacketQueue) GetProperties() []*OfpQueuePropHeader {
-	if m != nil {
-		return m.Properties
-	}
-	return nil
-}
-
-// Query for port queue configuration.
-type OfpQueueGetConfigRequest struct {
-	//ofp_header header;
-	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueGetConfigRequest) Reset()         { *m = OfpQueueGetConfigRequest{} }
-func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigRequest) ProtoMessage()    {}
-func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{79}
-}
-
-func (m *OfpQueueGetConfigRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(m, src)
-}
-func (m *OfpQueueGetConfigRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigRequest.Size(m)
-}
-func (m *OfpQueueGetConfigRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigRequest proto.InternalMessageInfo
-
-func (m *OfpQueueGetConfigRequest) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-// Queue configuration for a given port.
-type OfpQueueGetConfigReply struct {
-	//ofp_header header;
-	Port                 uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
-	Queues               []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpQueueGetConfigReply) Reset()         { *m = OfpQueueGetConfigReply{} }
-func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueGetConfigReply) ProtoMessage()    {}
-func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{80}
-}
-
-func (m *OfpQueueGetConfigReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Unmarshal(m, b)
-}
-func (m *OfpQueueGetConfigReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigReply.Merge(m, src)
-}
-func (m *OfpQueueGetConfigReply) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueGetConfigReply.Size(m)
-}
-func (m *OfpQueueGetConfigReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueGetConfigReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueGetConfigReply proto.InternalMessageInfo
-
-func (m *OfpQueueGetConfigReply) GetPort() uint32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-func (m *OfpQueueGetConfigReply) GetQueues() []*OfpPacketQueue {
-	if m != nil {
-		return m.Queues
-	}
-	return nil
-}
-
-// OFPAT_SET_QUEUE action struct: send packets to given queue on port.
-type OfpActionSetQueue struct {
-	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
-	QueueId              uint32   `protobuf:"varint,3,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpActionSetQueue) Reset()         { *m = OfpActionSetQueue{} }
-func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
-func (*OfpActionSetQueue) ProtoMessage()    {}
-func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{81}
-}
-
-func (m *OfpActionSetQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpActionSetQueue.Unmarshal(m, b)
-}
-func (m *OfpActionSetQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpActionSetQueue.Marshal(b, m, deterministic)
-}
-func (m *OfpActionSetQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetQueue.Merge(m, src)
-}
-func (m *OfpActionSetQueue) XXX_Size() int {
-	return xxx_messageInfo_OfpActionSetQueue.Size(m)
-}
-func (m *OfpActionSetQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpActionSetQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpActionSetQueue proto.InternalMessageInfo
-
-func (m *OfpActionSetQueue) GetType() uint32 {
-	if m != nil {
-		return m.Type
-	}
-	return 0
-}
-
-func (m *OfpActionSetQueue) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-type OfpQueueStatsRequest struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStatsRequest) Reset()         { *m = OfpQueueStatsRequest{} }
-func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStatsRequest) ProtoMessage()    {}
-func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{82}
-}
-
-func (m *OfpQueueStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStatsRequest.Unmarshal(m, b)
-}
-func (m *OfpQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStatsRequest.Merge(m, src)
-}
-func (m *OfpQueueStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStatsRequest.Size(m)
-}
-func (m *OfpQueueStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStatsRequest proto.InternalMessageInfo
-
-func (m *OfpQueueStatsRequest) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpQueueStatsRequest) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-type OfpQueueStats struct {
-	PortNo               uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	QueueId              uint32   `protobuf:"varint,2,opt,name=queue_id,json=queueId,proto3" json:"queue_id,omitempty"`
-	TxBytes              uint64   `protobuf:"varint,3,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets            uint64   `protobuf:"varint,4,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	TxErrors             uint64   `protobuf:"varint,5,opt,name=tx_errors,json=txErrors,proto3" json:"tx_errors,omitempty"`
-	DurationSec          uint32   `protobuf:"varint,6,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
-	DurationNsec         uint32   `protobuf:"varint,7,opt,name=duration_nsec,json=durationNsec,proto3" json:"duration_nsec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpQueueStats) Reset()         { *m = OfpQueueStats{} }
-func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
-func (*OfpQueueStats) ProtoMessage()    {}
-func (*OfpQueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{83}
-}
-
-func (m *OfpQueueStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpQueueStats.Unmarshal(m, b)
-}
-func (m *OfpQueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpQueueStats.Marshal(b, m, deterministic)
-}
-func (m *OfpQueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStats.Merge(m, src)
-}
-func (m *OfpQueueStats) XXX_Size() int {
-	return xxx_messageInfo_OfpQueueStats.Size(m)
-}
-func (m *OfpQueueStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpQueueStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpQueueStats proto.InternalMessageInfo
-
-func (m *OfpQueueStats) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetQueueId() uint32 {
-	if m != nil {
-		return m.QueueId
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetDurationSec() uint32 {
-	if m != nil {
-		return m.DurationSec
-	}
-	return 0
-}
-
-func (m *OfpQueueStats) GetDurationNsec() uint32 {
-	if m != nil {
-		return m.DurationNsec
-	}
-	return 0
-}
-
-// Role request and reply message.
-type OfpRoleRequest struct {
-	//ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
-	Role                 OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
-	GenerationId         uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *OfpRoleRequest) Reset()         { *m = OfpRoleRequest{} }
-func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
-func (*OfpRoleRequest) ProtoMessage()    {}
-func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{84}
-}
-
-func (m *OfpRoleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpRoleRequest.Unmarshal(m, b)
-}
-func (m *OfpRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpRoleRequest.Marshal(b, m, deterministic)
-}
-func (m *OfpRoleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpRoleRequest.Merge(m, src)
-}
-func (m *OfpRoleRequest) XXX_Size() int {
-	return xxx_messageInfo_OfpRoleRequest.Size(m)
-}
-func (m *OfpRoleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpRoleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpRoleRequest proto.InternalMessageInfo
-
-func (m *OfpRoleRequest) GetRole() OfpControllerRole {
-	if m != nil {
-		return m.Role
-	}
-	return OfpControllerRole_OFPCR_ROLE_NOCHANGE
-}
-
-func (m *OfpRoleRequest) GetGenerationId() uint64 {
-	if m != nil {
-		return m.GenerationId
-	}
-	return 0
-}
-
-// Asynchronous message configuration.
-type OfpAsyncConfig struct {
-	//ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
-	PacketInMask         []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`
-	PortStatusMask       []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`
-	FlowRemovedMask      []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OfpAsyncConfig) Reset()         { *m = OfpAsyncConfig{} }
-func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
-func (*OfpAsyncConfig) ProtoMessage()    {}
-func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{85}
-}
-
-func (m *OfpAsyncConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OfpAsyncConfig.Unmarshal(m, b)
-}
-func (m *OfpAsyncConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OfpAsyncConfig.Marshal(b, m, deterministic)
-}
-func (m *OfpAsyncConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAsyncConfig.Merge(m, src)
-}
-func (m *OfpAsyncConfig) XXX_Size() int {
-	return xxx_messageInfo_OfpAsyncConfig.Size(m)
-}
-func (m *OfpAsyncConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_OfpAsyncConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OfpAsyncConfig proto.InternalMessageInfo
-
-func (m *OfpAsyncConfig) GetPacketInMask() []uint32 {
-	if m != nil {
-		return m.PacketInMask
-	}
-	return nil
-}
-
-func (m *OfpAsyncConfig) GetPortStatusMask() []uint32 {
-	if m != nil {
-		return m.PortStatusMask
-	}
-	return nil
-}
-
-func (m *OfpAsyncConfig) GetFlowRemovedMask() []uint32 {
-	if m != nil {
-		return m.FlowRemovedMask
-	}
-	return nil
-}
-
-type MeterModUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	MeterMod             *OfpMeterMod `protobuf:"bytes,2,opt,name=meter_mod,json=meterMod,proto3" json:"meter_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *MeterModUpdate) Reset()         { *m = MeterModUpdate{} }
-func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
-func (*MeterModUpdate) ProtoMessage()    {}
-func (*MeterModUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{86}
-}
-
-func (m *MeterModUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterModUpdate.Unmarshal(m, b)
-}
-func (m *MeterModUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterModUpdate.Marshal(b, m, deterministic)
-}
-func (m *MeterModUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterModUpdate.Merge(m, src)
-}
-func (m *MeterModUpdate) XXX_Size() int {
-	return xxx_messageInfo_MeterModUpdate.Size(m)
-}
-func (m *MeterModUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterModUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterModUpdate proto.InternalMessageInfo
-
-func (m *MeterModUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *MeterModUpdate) GetMeterMod() *OfpMeterMod {
-	if m != nil {
-		return m.MeterMod
-	}
-	return nil
-}
-
-func (m *MeterModUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type MeterStatsReply struct {
-	MeterStats           []*OfpMeterStats `protobuf:"bytes,1,rep,name=meter_stats,json=meterStats,proto3" json:"meter_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *MeterStatsReply) Reset()         { *m = MeterStatsReply{} }
-func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
-func (*MeterStatsReply) ProtoMessage()    {}
-func (*MeterStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{87}
-}
-
-func (m *MeterStatsReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeterStatsReply.Unmarshal(m, b)
-}
-func (m *MeterStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeterStatsReply.Marshal(b, m, deterministic)
-}
-func (m *MeterStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterStatsReply.Merge(m, src)
-}
-func (m *MeterStatsReply) XXX_Size() int {
-	return xxx_messageInfo_MeterStatsReply.Size(m)
-}
-func (m *MeterStatsReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeterStatsReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeterStatsReply proto.InternalMessageInfo
-
-func (m *MeterStatsReply) GetMeterStats() []*OfpMeterStats {
-	if m != nil {
-		return m.MeterStats
-	}
-	return nil
-}
-
-type FlowTableUpdate struct {
-	Id                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	FlowMod              *OfpFlowMod `protobuf:"bytes,2,opt,name=flow_mod,json=flowMod,proto3" json:"flow_mod,omitempty"`
-	Xid                  uint32      `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowTableUpdate) Reset()         { *m = FlowTableUpdate{} }
-func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowTableUpdate) ProtoMessage()    {}
-func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{88}
-}
-
-func (m *FlowTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTableUpdate.Merge(m, src)
-}
-func (m *FlowTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowTableUpdate.Size(m)
-}
-func (m *FlowTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowTableUpdate proto.InternalMessageInfo
-
-func (m *FlowTableUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *FlowTableUpdate) GetFlowMod() *OfpFlowMod {
-	if m != nil {
-		return m.FlowMod
-	}
-	return nil
-}
-
-func (m *FlowTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type FlowGroupTableUpdate struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	GroupMod             *OfpGroupMod `protobuf:"bytes,2,opt,name=group_mod,json=groupMod,proto3" json:"group_mod,omitempty"`
-	Xid                  uint32       `protobuf:"varint,3,opt,name=xid,proto3" json:"xid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *FlowGroupTableUpdate) Reset()         { *m = FlowGroupTableUpdate{} }
-func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupTableUpdate) ProtoMessage()    {}
-func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{89}
-}
-
-func (m *FlowGroupTableUpdate) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupTableUpdate.Unmarshal(m, b)
-}
-func (m *FlowGroupTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupTableUpdate.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupTableUpdate.Merge(m, src)
-}
-func (m *FlowGroupTableUpdate) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupTableUpdate.Size(m)
-}
-func (m *FlowGroupTableUpdate) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupTableUpdate.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupTableUpdate proto.InternalMessageInfo
-
-func (m *FlowGroupTableUpdate) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *FlowGroupTableUpdate) GetGroupMod() *OfpGroupMod {
-	if m != nil {
-		return m.GroupMod
-	}
-	return nil
-}
-
-func (m *FlowGroupTableUpdate) GetXid() uint32 {
-	if m != nil {
-		return m.Xid
-	}
-	return 0
-}
-
-type Flows struct {
-	Items                []*OfpFlowStats `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
-}
-
-func (m *Flows) Reset()         { *m = Flows{} }
-func (m *Flows) String() string { return proto.CompactTextString(m) }
-func (*Flows) ProtoMessage()    {}
-func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{90}
-}
-
-func (m *Flows) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Flows.Unmarshal(m, b)
-}
-func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
-}
-func (m *Flows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flows.Merge(m, src)
-}
-func (m *Flows) XXX_Size() int {
-	return xxx_messageInfo_Flows.Size(m)
-}
-func (m *Flows) XXX_DiscardUnknown() {
-	xxx_messageInfo_Flows.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Flows proto.InternalMessageInfo
-
-func (m *Flows) GetItems() []*OfpFlowStats {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type Meters struct {
-	Items                []*OfpMeterEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *Meters) Reset()         { *m = Meters{} }
-func (m *Meters) String() string { return proto.CompactTextString(m) }
-func (*Meters) ProtoMessage()    {}
-func (*Meters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{91}
-}
-
-func (m *Meters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Meters.Unmarshal(m, b)
-}
-func (m *Meters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Meters.Marshal(b, m, deterministic)
-}
-func (m *Meters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Meters.Merge(m, src)
-}
-func (m *Meters) XXX_Size() int {
-	return xxx_messageInfo_Meters.Size(m)
-}
-func (m *Meters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Meters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Meters proto.InternalMessageInfo
-
-func (m *Meters) GetItems() []*OfpMeterEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowGroups struct {
-	Items                []*OfpGroupEntry `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *FlowGroups) Reset()         { *m = FlowGroups{} }
-func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
-func (*FlowGroups) ProtoMessage()    {}
-func (*FlowGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{92}
-}
-
-func (m *FlowGroups) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroups.Unmarshal(m, b)
-}
-func (m *FlowGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroups.Marshal(b, m, deterministic)
-}
-func (m *FlowGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroups.Merge(m, src)
-}
-func (m *FlowGroups) XXX_Size() int {
-	return xxx_messageInfo_FlowGroups.Size(m)
-}
-func (m *FlowGroups) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroups.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroups proto.InternalMessageInfo
-
-func (m *FlowGroups) GetItems() []*OfpGroupEntry {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
-type FlowChanges struct {
-	ToAdd                *Flows   `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *Flows   `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FlowChanges) Reset()         { *m = FlowChanges{} }
-func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowChanges) ProtoMessage()    {}
-func (*FlowChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{93}
-}
-
-func (m *FlowChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowChanges.Unmarshal(m, b)
-}
-func (m *FlowChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowChanges.Merge(m, src)
-}
-func (m *FlowChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowChanges.Size(m)
-}
-func (m *FlowChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowChanges proto.InternalMessageInfo
-
-func (m *FlowChanges) GetToAdd() *Flows {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowChanges) GetToRemove() *Flows {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-type FlowGroupChanges struct {
-	ToAdd                *FlowGroups `protobuf:"bytes,1,opt,name=to_add,json=toAdd,proto3" json:"to_add,omitempty"`
-	ToRemove             *FlowGroups `protobuf:"bytes,2,opt,name=to_remove,json=toRemove,proto3" json:"to_remove,omitempty"`
-	ToUpdate             *FlowGroups `protobuf:"bytes,3,opt,name=to_update,json=toUpdate,proto3" json:"to_update,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
-}
-
-func (m *FlowGroupChanges) Reset()         { *m = FlowGroupChanges{} }
-func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
-func (*FlowGroupChanges) ProtoMessage()    {}
-func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{94}
-}
-
-func (m *FlowGroupChanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowGroupChanges.Unmarshal(m, b)
-}
-func (m *FlowGroupChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowGroupChanges.Marshal(b, m, deterministic)
-}
-func (m *FlowGroupChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupChanges.Merge(m, src)
-}
-func (m *FlowGroupChanges) XXX_Size() int {
-	return xxx_messageInfo_FlowGroupChanges.Size(m)
-}
-func (m *FlowGroupChanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowGroupChanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowGroupChanges proto.InternalMessageInfo
-
-func (m *FlowGroupChanges) GetToAdd() *FlowGroups {
-	if m != nil {
-		return m.ToAdd
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToRemove() *FlowGroups {
-	if m != nil {
-		return m.ToRemove
-	}
-	return nil
-}
-
-func (m *FlowGroupChanges) GetToUpdate() *FlowGroups {
-	if m != nil {
-		return m.ToUpdate
-	}
-	return nil
-}
-
-type PacketIn struct {
-	Id                   string       `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	PacketIn             *OfpPacketIn `protobuf:"bytes,2,opt,name=packet_in,json=packetIn,proto3" json:"packet_in,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
-}
-
-func (m *PacketIn) Reset()         { *m = PacketIn{} }
-func (m *PacketIn) String() string { return proto.CompactTextString(m) }
-func (*PacketIn) ProtoMessage()    {}
-func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{95}
-}
-
-func (m *PacketIn) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketIn.Unmarshal(m, b)
-}
-func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
-}
-func (m *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(m, src)
-}
-func (m *PacketIn) XXX_Size() int {
-	return xxx_messageInfo_PacketIn.Size(m)
-}
-func (m *PacketIn) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketIn.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketIn proto.InternalMessageInfo
-
-func (m *PacketIn) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *PacketIn) GetPacketIn() *OfpPacketIn {
-	if m != nil {
-		return m.PacketIn
-	}
-	return nil
-}
-
-type PacketOut struct {
-	Id                   string        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	PacketOut            *OfpPacketOut `protobuf:"bytes,2,opt,name=packet_out,json=packetOut,proto3" json:"packet_out,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *PacketOut) Reset()         { *m = PacketOut{} }
-func (m *PacketOut) String() string { return proto.CompactTextString(m) }
-func (*PacketOut) ProtoMessage()    {}
-func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{96}
-}
-
-func (m *PacketOut) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketOut.Unmarshal(m, b)
-}
-func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
-}
-func (m *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(m, src)
-}
-func (m *PacketOut) XXX_Size() int {
-	return xxx_messageInfo_PacketOut.Size(m)
-}
-func (m *PacketOut) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketOut.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketOut proto.InternalMessageInfo
-
-func (m *PacketOut) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-func (m *PacketOut) GetPacketOut() *OfpPacketOut {
-	if m != nil {
-		return m.PacketOut
-	}
-	return nil
-}
-
-type ChangeEvent struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	// Types that are valid to be assigned to Event:
-	//	*ChangeEvent_PortStatus
-	//	*ChangeEvent_Error
-	//	*ChangeEvent_DeviceStatus
-	Event                isChangeEvent_Event `protobuf_oneof:"event"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *ChangeEvent) Reset()         { *m = ChangeEvent{} }
-func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
-func (*ChangeEvent) ProtoMessage()    {}
-func (*ChangeEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{97}
-}
-
-func (m *ChangeEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChangeEvent.Unmarshal(m, b)
-}
-func (m *ChangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChangeEvent.Marshal(b, m, deterministic)
-}
-func (m *ChangeEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeEvent.Merge(m, src)
-}
-func (m *ChangeEvent) XXX_Size() int {
-	return xxx_messageInfo_ChangeEvent.Size(m)
-}
-func (m *ChangeEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChangeEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChangeEvent proto.InternalMessageInfo
-
-func (m *ChangeEvent) GetId() string {
-	if m != nil {
-		return m.Id
-	}
-	return ""
-}
-
-type isChangeEvent_Event interface {
-	isChangeEvent_Event()
-}
-
-type ChangeEvent_PortStatus struct {
-	PortStatus *OfpPortStatus `protobuf:"bytes,2,opt,name=port_status,json=portStatus,proto3,oneof"`
-}
-
-type ChangeEvent_Error struct {
-	Error *OfpErrorMsg `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
-}
-
-type ChangeEvent_DeviceStatus struct {
-	DeviceStatus *OfpDeviceStatus `protobuf:"bytes,4,opt,name=device_status,json=deviceStatus,proto3,oneof"`
-}
-
-func (*ChangeEvent_PortStatus) isChangeEvent_Event() {}
-
-func (*ChangeEvent_Error) isChangeEvent_Event() {}
-
-func (*ChangeEvent_DeviceStatus) isChangeEvent_Event() {}
-
-func (m *ChangeEvent) GetEvent() isChangeEvent_Event {
-	if m != nil {
-		return m.Event
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetPortStatus() *OfpPortStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_PortStatus); ok {
-		return x.PortStatus
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetError() *OfpErrorMsg {
-	if x, ok := m.GetEvent().(*ChangeEvent_Error); ok {
-		return x.Error
-	}
-	return nil
-}
-
-func (m *ChangeEvent) GetDeviceStatus() *OfpDeviceStatus {
-	if x, ok := m.GetEvent().(*ChangeEvent_DeviceStatus); ok {
-		return x.DeviceStatus
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_openflow_13_proto_msgTypes[97].OneofWrappers = []any{
 		(*ChangeEvent_PortStatus)(nil),
 		(*ChangeEvent_Error)(nil),
 		(*ChangeEvent_DeviceStatus)(nil),
 	}
-}
-
-// Additional information required to process flow at device adapters
-type FlowMetadata struct {
-	// Meters associated with flow-update to adapter
-	Meters               []*OfpMeterConfig `protobuf:"bytes,1,rep,name=meters,proto3" json:"meters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *FlowMetadata) Reset()         { *m = FlowMetadata{} }
-func (m *FlowMetadata) String() string { return proto.CompactTextString(m) }
-func (*FlowMetadata) ProtoMessage()    {}
-func (*FlowMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_08e3a4e375aeddc7, []int{98}
-}
-
-func (m *FlowMetadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowMetadata.Unmarshal(m, b)
-}
-func (m *FlowMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowMetadata.Marshal(b, m, deterministic)
-}
-func (m *FlowMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowMetadata.Merge(m, src)
-}
-func (m *FlowMetadata) XXX_Size() int {
-	return xxx_messageInfo_FlowMetadata.Size(m)
-}
-func (m *FlowMetadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowMetadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowMetadata proto.InternalMessageInfo
-
-func (m *FlowMetadata) GetMeters() []*OfpMeterConfig {
-	if m != nil {
-		return m.Meters
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
-	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
-	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
-	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
-	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
-	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
-	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
-	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
-	proto.RegisterEnum("openflow_13.OfpDeviceConnection", OfpDeviceConnection_name, OfpDeviceConnection_value)
-	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
-	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
-	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
-	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
-	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
-	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
-	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
-	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
-	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
-	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
-	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
-	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
-	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
-	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
-	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
-	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
-	proto.RegisterType((*OfpHeader)(nil), "openflow_13.ofp_header")
-	proto.RegisterType((*OfpHelloElemHeader)(nil), "openflow_13.ofp_hello_elem_header")
-	proto.RegisterType((*OfpHelloElemVersionbitmap)(nil), "openflow_13.ofp_hello_elem_versionbitmap")
-	proto.RegisterType((*OfpHello)(nil), "openflow_13.ofp_hello")
-	proto.RegisterType((*OfpSwitchConfig)(nil), "openflow_13.ofp_switch_config")
-	proto.RegisterType((*OfpTableMod)(nil), "openflow_13.ofp_table_mod")
-	proto.RegisterType((*OfpPort)(nil), "openflow_13.ofp_port")
-	proto.RegisterType((*OfpSwitchFeatures)(nil), "openflow_13.ofp_switch_features")
-	proto.RegisterType((*OfpPortStatus)(nil), "openflow_13.ofp_port_status")
-	proto.RegisterType((*OfpDeviceStatus)(nil), "openflow_13.ofp_device_status")
-	proto.RegisterType((*OfpPortMod)(nil), "openflow_13.ofp_port_mod")
-	proto.RegisterType((*OfpMatch)(nil), "openflow_13.ofp_match")
-	proto.RegisterType((*OfpOxmField)(nil), "openflow_13.ofp_oxm_field")
-	proto.RegisterType((*OfpOxmOfbField)(nil), "openflow_13.ofp_oxm_ofb_field")
-	proto.RegisterType((*OfpOxmExperimenterField)(nil), "openflow_13.ofp_oxm_experimenter_field")
-	proto.RegisterType((*OfpAction)(nil), "openflow_13.ofp_action")
-	proto.RegisterType((*OfpActionOutput)(nil), "openflow_13.ofp_action_output")
-	proto.RegisterType((*OfpActionMplsTtl)(nil), "openflow_13.ofp_action_mpls_ttl")
-	proto.RegisterType((*OfpActionPush)(nil), "openflow_13.ofp_action_push")
-	proto.RegisterType((*OfpActionPopMpls)(nil), "openflow_13.ofp_action_pop_mpls")
-	proto.RegisterType((*OfpActionGroup)(nil), "openflow_13.ofp_action_group")
-	proto.RegisterType((*OfpActionNwTtl)(nil), "openflow_13.ofp_action_nw_ttl")
-	proto.RegisterType((*OfpActionSetField)(nil), "openflow_13.ofp_action_set_field")
-	proto.RegisterType((*OfpActionExperimenter)(nil), "openflow_13.ofp_action_experimenter")
-	proto.RegisterType((*OfpInstruction)(nil), "openflow_13.ofp_instruction")
-	proto.RegisterType((*OfpInstructionGotoTable)(nil), "openflow_13.ofp_instruction_goto_table")
-	proto.RegisterType((*OfpInstructionWriteMetadata)(nil), "openflow_13.ofp_instruction_write_metadata")
-	proto.RegisterType((*OfpInstructionActions)(nil), "openflow_13.ofp_instruction_actions")
-	proto.RegisterType((*OfpInstructionMeter)(nil), "openflow_13.ofp_instruction_meter")
-	proto.RegisterType((*OfpInstructionExperimenter)(nil), "openflow_13.ofp_instruction_experimenter")
-	proto.RegisterType((*OfpFlowMod)(nil), "openflow_13.ofp_flow_mod")
-	proto.RegisterType((*OfpBucket)(nil), "openflow_13.ofp_bucket")
-	proto.RegisterType((*OfpGroupMod)(nil), "openflow_13.ofp_group_mod")
-	proto.RegisterType((*OfpPacketOut)(nil), "openflow_13.ofp_packet_out")
-	proto.RegisterType((*OfpPacketIn)(nil), "openflow_13.ofp_packet_in")
-	proto.RegisterType((*OfpFlowRemoved)(nil), "openflow_13.ofp_flow_removed")
-	proto.RegisterType((*OfpMeterBandHeader)(nil), "openflow_13.ofp_meter_band_header")
-	proto.RegisterType((*OfpMeterBandDrop)(nil), "openflow_13.ofp_meter_band_drop")
-	proto.RegisterType((*OfpMeterBandDscpRemark)(nil), "openflow_13.ofp_meter_band_dscp_remark")
-	proto.RegisterType((*OfpMeterBandExperimenter)(nil), "openflow_13.ofp_meter_band_experimenter")
-	proto.RegisterType((*OfpMeterMod)(nil), "openflow_13.ofp_meter_mod")
-	proto.RegisterType((*OfpErrorMsg)(nil), "openflow_13.ofp_error_msg")
-	proto.RegisterType((*OfpErrorExperimenterMsg)(nil), "openflow_13.ofp_error_experimenter_msg")
-	proto.RegisterType((*OfpMultipartRequest)(nil), "openflow_13.ofp_multipart_request")
-	proto.RegisterType((*OfpMultipartReply)(nil), "openflow_13.ofp_multipart_reply")
-	proto.RegisterType((*OfpDesc)(nil), "openflow_13.ofp_desc")
-	proto.RegisterType((*OfpFlowStatsRequest)(nil), "openflow_13.ofp_flow_stats_request")
-	proto.RegisterType((*OfpFlowStats)(nil), "openflow_13.ofp_flow_stats")
-	proto.RegisterType((*OfpAggregateStatsRequest)(nil), "openflow_13.ofp_aggregate_stats_request")
-	proto.RegisterType((*OfpAggregateStatsReply)(nil), "openflow_13.ofp_aggregate_stats_reply")
-	proto.RegisterType((*OfpTableFeatureProperty)(nil), "openflow_13.ofp_table_feature_property")
-	proto.RegisterType((*OfpTableFeaturePropInstructions)(nil), "openflow_13.ofp_table_feature_prop_instructions")
-	proto.RegisterType((*OfpTableFeaturePropNextTables)(nil), "openflow_13.ofp_table_feature_prop_next_tables")
-	proto.RegisterType((*OfpTableFeaturePropActions)(nil), "openflow_13.ofp_table_feature_prop_actions")
-	proto.RegisterType((*OfpTableFeaturePropOxm)(nil), "openflow_13.ofp_table_feature_prop_oxm")
-	proto.RegisterType((*OfpTableFeaturePropExperimenter)(nil), "openflow_13.ofp_table_feature_prop_experimenter")
-	proto.RegisterType((*OfpTableFeatures)(nil), "openflow_13.ofp_table_features")
-	proto.RegisterType((*OfpTableStats)(nil), "openflow_13.ofp_table_stats")
-	proto.RegisterType((*OfpPortStatsRequest)(nil), "openflow_13.ofp_port_stats_request")
-	proto.RegisterType((*OfpPortStats)(nil), "openflow_13.ofp_port_stats")
-	proto.RegisterType((*OfpGroupStatsRequest)(nil), "openflow_13.ofp_group_stats_request")
-	proto.RegisterType((*OfpBucketCounter)(nil), "openflow_13.ofp_bucket_counter")
-	proto.RegisterType((*OfpGroupStats)(nil), "openflow_13.ofp_group_stats")
-	proto.RegisterType((*OfpGroupDesc)(nil), "openflow_13.ofp_group_desc")
-	proto.RegisterType((*OfpGroupEntry)(nil), "openflow_13.ofp_group_entry")
-	proto.RegisterType((*OfpGroupFeatures)(nil), "openflow_13.ofp_group_features")
-	proto.RegisterType((*OfpMeterMultipartRequest)(nil), "openflow_13.ofp_meter_multipart_request")
-	proto.RegisterType((*OfpMeterBandStats)(nil), "openflow_13.ofp_meter_band_stats")
-	proto.RegisterType((*OfpMeterStats)(nil), "openflow_13.ofp_meter_stats")
-	proto.RegisterType((*OfpMeterConfig)(nil), "openflow_13.ofp_meter_config")
-	proto.RegisterType((*OfpMeterFeatures)(nil), "openflow_13.ofp_meter_features")
-	proto.RegisterType((*OfpMeterEntry)(nil), "openflow_13.ofp_meter_entry")
-	proto.RegisterType((*OfpExperimenterMultipartHeader)(nil), "openflow_13.ofp_experimenter_multipart_header")
-	proto.RegisterType((*OfpExperimenterHeader)(nil), "openflow_13.ofp_experimenter_header")
-	proto.RegisterType((*OfpQueuePropHeader)(nil), "openflow_13.ofp_queue_prop_header")
-	proto.RegisterType((*OfpQueuePropMinRate)(nil), "openflow_13.ofp_queue_prop_min_rate")
-	proto.RegisterType((*OfpQueuePropMaxRate)(nil), "openflow_13.ofp_queue_prop_max_rate")
-	proto.RegisterType((*OfpQueuePropExperimenter)(nil), "openflow_13.ofp_queue_prop_experimenter")
-	proto.RegisterType((*OfpPacketQueue)(nil), "openflow_13.ofp_packet_queue")
-	proto.RegisterType((*OfpQueueGetConfigRequest)(nil), "openflow_13.ofp_queue_get_config_request")
-	proto.RegisterType((*OfpQueueGetConfigReply)(nil), "openflow_13.ofp_queue_get_config_reply")
-	proto.RegisterType((*OfpActionSetQueue)(nil), "openflow_13.ofp_action_set_queue")
-	proto.RegisterType((*OfpQueueStatsRequest)(nil), "openflow_13.ofp_queue_stats_request")
-	proto.RegisterType((*OfpQueueStats)(nil), "openflow_13.ofp_queue_stats")
-	proto.RegisterType((*OfpRoleRequest)(nil), "openflow_13.ofp_role_request")
-	proto.RegisterType((*OfpAsyncConfig)(nil), "openflow_13.ofp_async_config")
-	proto.RegisterType((*MeterModUpdate)(nil), "openflow_13.MeterModUpdate")
-	proto.RegisterType((*MeterStatsReply)(nil), "openflow_13.MeterStatsReply")
-	proto.RegisterType((*FlowTableUpdate)(nil), "openflow_13.FlowTableUpdate")
-	proto.RegisterType((*FlowGroupTableUpdate)(nil), "openflow_13.FlowGroupTableUpdate")
-	proto.RegisterType((*Flows)(nil), "openflow_13.Flows")
-	proto.RegisterType((*Meters)(nil), "openflow_13.Meters")
-	proto.RegisterType((*FlowGroups)(nil), "openflow_13.FlowGroups")
-	proto.RegisterType((*FlowChanges)(nil), "openflow_13.FlowChanges")
-	proto.RegisterType((*FlowGroupChanges)(nil), "openflow_13.FlowGroupChanges")
-	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
-	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
-	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
-	proto.RegisterType((*FlowMetadata)(nil), "openflow_13.FlowMetadata")
-}
-
-func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
-
-var fileDescriptor_08e3a4e375aeddc7 = []byte{
-	// 8566 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x49,
-	0x92, 0x98, 0xf8, 0x68, 0x36, 0x99, 0xec, 0x6e, 0x95, 0x4a, 0x2f, 0x4a, 0x2d, 0x8d, 0x24, 0xee,
-	0xcc, 0xee, 0x2c, 0xd7, 0x37, 0x9a, 0xd1, 0x68, 0xb4, 0x7b, 0xfb, 0x38, 0xab, 0x48, 0x16, 0x9b,
-	0x1c, 0xf1, 0xa5, 0xaa, 0xea, 0x96, 0xb4, 0x86, 0x5d, 0xa0, 0xc8, 0x52, 0x37, 0x6f, 0x48, 0x16,
-	0xb7, 0xaa, 0xba, 0xd5, 0x3a, 0xef, 0x19, 0xb2, 0x0f, 0x86, 0x01, 0xdb, 0x77, 0x67, 0xe3, 0x3e,
-	0x16, 0x30, 0xce, 0x80, 0x0f, 0xb6, 0x3f, 0x0c, 0x03, 0xfe, 0x30, 0x60, 0xc0, 0x80, 0xbf, 0x0f,
-	0xb0, 0x01, 0xc3, 0x06, 0x0e, 0x30, 0xee, 0xe7, 0xee, 0xc7, 0x38, 0xff, 0x18, 0xb8, 0x7f, 0xfb,
-	0xbc, 0x5e, 0x19, 0x91, 0x11, 0x99, 0x95, 0xc5, 0x47, 0x4f, 0xef, 0x7a, 0xd6, 0x1f, 0xfe, 0x12,
-	0x2b, 0x5e, 0x19, 0x19, 0x19, 0x11, 0x19, 0x19, 0x95, 0xd5, 0x62, 0x77, 0x4e, 0xfc, 0x49, 0x74,
-	0x34, 0x70, 0xe7, 0x81, 0x1f, 0xf9, 0xe1, 0x7d, 0x7f, 0xee, 0xcd, 0x5e, 0x4d, 0xfc, 0xd7, 0xee,
-	0x27, 0x9f, 0x7e, 0xc4, 0x41, 0x7a, 0x51, 0x01, 0xdd, 0xbc, 0x75, 0xe8, 0xfb, 0x87, 0x13, 0xef,
-	0xfe, 0x60, 0x3e, 0xbe, 0x3f, 0x98, 0xcd, 0xfc, 0x68, 0x10, 0x8d, 0xfd, 0x59, 0x88, 0xa4, 0xe5,
-	0x21, 0x63, 0xfe, 0xab, 0xb9, 0x7b, 0xe4, 0x0d, 0x46, 0x5e, 0xa0, 0x97, 0xd8, 0xe6, 0x89, 0x17,
-	0x84, 0x63, 0x7f, 0x56, 0x4a, 0xdd, 0x4d, 0x7d, 0xb8, 0x6d, 0x89, 0x47, 0xfd, 0x9b, 0x2c, 0x1b,
-	0xbd, 0x99, 0x7b, 0xa5, 0xf4, 0xdd, 0xd4, 0x87, 0x3b, 0x0f, 0xae, 0x7e, 0xa4, 0x0e, 0x0a, 0x02,
-	0x00, 0x69, 0x71, 0x12, 0x5d, 0x63, 0x99, 0xd3, 0xf1, 0xa8, 0x94, 0xe1, 0x02, 0xe0, 0x67, 0xf9,
-	0x5f, 0xa6, 0xd8, 0x55, 0x1c, 0x65, 0x32, 0xf1, 0x5d, 0x6f, 0xe2, 0x4d, 0xc5, 0x80, 0x0f, 0x49,
-	0x6c, 0x8a, 0x8b, 0xbd, 0xbb, 0x24, 0x56, 0xe1, 0x50, 0x46, 0x78, 0xca, 0xb6, 0x49, 0xaf, 0x97,
-	0xe3, 0x68, 0x3a, 0x98, 0x73, 0xad, 0x8a, 0x0f, 0xbe, 0x79, 0x16, 0x7b, 0x82, 0xa1, 0x79, 0xc1,
-	0x4a, 0x4a, 0xa8, 0x16, 0xd8, 0x26, 0x90, 0x79, 0xb3, 0xa8, 0xfc, 0x1d, 0x76, 0xeb, 0x2c, 0x5e,
-	0x30, 0x12, 0xfe, 0x0a, 0x4b, 0xe9, 0xbb, 0x19, 0x30, 0x12, 0x3d, 0x96, 0x9f, 0xb0, 0x82, 0xe4,
-	0xd4, 0x7f, 0x8d, 0xe5, 0x49, 0x62, 0x58, 0x4a, 0xdd, 0xcd, 0x7c, 0x58, 0x7c, 0x50, 0x3e, 0x4b,
-	0x3f, 0x34, 0x88, 0x25, 0x79, 0xca, 0x1d, 0x76, 0x09, 0x48, 0xc2, 0xd7, 0xe3, 0x68, 0x78, 0xe4,
-	0x0e, 0xfd, 0xd9, 0xab, 0xf1, 0xa1, 0x7e, 0x85, 0x6d, 0xbc, 0x9a, 0x0c, 0x0e, 0x43, 0x5a, 0x1e,
-	0x7c, 0xd0, 0xcb, 0x6c, 0x7b, 0x3a, 0x0e, 0x43, 0x37, 0xf4, 0x66, 0x23, 0x77, 0xe2, 0xcd, 0xb8,
-	0x3d, 0xb6, 0xad, 0x22, 0x00, 0x6d, 0x6f, 0x36, 0x6a, 0x7b, 0xb3, 0x72, 0x95, 0x6d, 0xf3, 0x75,
-	0x1a, 0xbc, 0x9c, 0x78, 0xee, 0xd4, 0x1f, 0xe9, 0x37, 0x58, 0x1e, 0x1f, 0xc6, 0x23, 0xb1, 0xd8,
-	0xfc, 0xb9, 0x35, 0xd2, 0xaf, 0xb1, 0x1c, 0x8e, 0x47, 0x82, 0xe8, 0xa9, 0xfc, 0x4f, 0xd2, 0x2c,
-	0x0f, 0x42, 0xe6, 0x7e, 0x10, 0xe9, 0xd7, 0xd9, 0x26, 0xfc, 0xeb, 0xce, 0x7c, 0x62, 0xcf, 0xc1,
-	0x63, 0xd7, 0x07, 0xc4, 0xd1, 0x6b, 0x77, 0x30, 0x1a, 0x05, 0x64, 0x9f, 0xdc, 0xd1, 0x6b, 0x63,
-	0x34, 0x0a, 0x74, 0x9d, 0x65, 0x67, 0x83, 0xa9, 0xc7, 0x3d, 0xa3, 0x60, 0xf1, 0xdf, 0xca, 0x50,
-	0x59, 0x75, 0x28, 0x98, 0x68, 0x18, 0x0d, 0x22, 0xaf, 0xb4, 0x81, 0x13, 0xe5, 0x0f, 0x20, 0x61,
-	0x78, 0x1c, 0x04, 0xa5, 0x1c, 0x07, 0xf2, 0xdf, 0xfa, 0x7b, 0x8c, 0x0d, 0x46, 0x27, 0x5e, 0x10,
-	0x8d, 0x43, 0x6f, 0x54, 0xda, 0xe4, 0x18, 0x05, 0xa2, 0xdf, 0x62, 0x85, 0xf0, 0x78, 0x0e, 0xba,
-	0x79, 0xa3, 0x52, 0x9e, 0xa3, 0x63, 0x00, 0x48, 0x9c, 0x7b, 0x5e, 0x50, 0x2a, 0xa0, 0x44, 0xf8,
-	0xad, 0xdf, 0x66, 0x0c, 0x24, 0xbb, 0xe1, 0xdc, 0xf3, 0x46, 0x25, 0x86, 0x2c, 0x00, 0xb1, 0x01,
-	0xa0, 0xef, 0xb2, 0xc2, 0x74, 0x70, 0x4a, 0xd8, 0x22, 0xc7, 0xe6, 0xa7, 0x83, 0x53, 0x8e, 0x2c,
-	0xff, 0x9b, 0x14, 0xbb, 0xac, 0x2c, 0xdb, 0x2b, 0x6f, 0x10, 0x1d, 0x07, 0x5e, 0xa8, 0xdf, 0x61,
-	0xc5, 0xd1, 0x20, 0x1a, 0xcc, 0x07, 0xd1, 0x91, 0x30, 0x78, 0xd6, 0x62, 0x02, 0xd4, 0xe2, 0x52,
-	0x67, 0xee, 0xcb, 0xe3, 0x57, 0xaf, 0xbc, 0x20, 0x24, 0xb3, 0xe7, 0x67, 0x55, 0x7c, 0x86, 0xb5,
-	0x9a, 0xe1, 0xd2, 0x85, 0x14, 0x57, 0x9b, 0x33, 0x87, 0x3f, 0xea, 0xf7, 0xd8, 0xd6, 0xe0, 0xf8,
-	0x74, 0x3c, 0x19, 0x0f, 0x82, 0x37, 0x20, 0x19, 0xcd, 0x58, 0x94, 0xb0, 0xd6, 0x48, 0x2f, 0xb3,
-	0xad, 0xe1, 0x60, 0x3e, 0x78, 0x39, 0x9e, 0x8c, 0xa3, 0xb1, 0x17, 0x92, 0x49, 0x13, 0xb0, 0x72,
-	0xc0, 0x2e, 0x8a, 0x95, 0x75, 0xc1, 0xd6, 0xc7, 0xa1, 0xfe, 0x90, 0xe5, 0x02, 0x6f, 0x10, 0x52,
-	0x2e, 0xd8, 0x79, 0x70, 0x6b, 0xc9, 0x7d, 0x39, 0x35, 0xd2, 0x58, 0x44, 0x0b, 0x89, 0x62, 0xe4,
-	0x85, 0x43, 0x0a, 0xc9, 0xab, 0x2b, 0x79, 0x2c, 0x4e, 0x52, 0xee, 0xa1, 0x87, 0x8f, 0xbc, 0x93,
-	0xf1, 0xd0, 0x13, 0xa3, 0x7e, 0x97, 0xe5, 0xf0, 0x17, 0x8d, 0xba, 0x1c, 0x34, 0x44, 0x3f, 0xf4,
-	0x67, 0x33, 0x6f, 0x08, 0xb9, 0xcc, 0x22, 0x8e, 0xf2, 0xdf, 0x4d, 0xb1, 0x2d, 0xa9, 0x17, 0xf8,
-	0xf8, 0xcf, 0xef, 0xa3, 0xb1, 0x3f, 0x66, 0x12, 0xfe, 0xa8, 0xb3, 0xec, 0x74, 0x10, 0x7e, 0x41,
-	0xe6, 0xe5, 0xbf, 0xc1, 0xb3, 0xa4, 0x9f, 0x91, 0x51, 0x63, 0x40, 0xf9, 0x35, 0x26, 0x83, 0xe9,
-	0x20, 0x1a, 0x1e, 0xe9, 0xf7, 0x13, 0x79, 0x6e, 0x77, 0x69, 0x4e, 0x9c, 0x4a, 0x4d, 0x71, 0xbf,
-	0xca, 0x98, 0x7f, 0x3a, 0x75, 0x5f, 0x8d, 0xbd, 0xc9, 0x08, 0xf3, 0x4c, 0xf1, 0xc1, 0xcd, 0x25,
-	0x36, 0x49, 0x62, 0x15, 0xfc, 0xd3, 0x69, 0x83, 0x13, 0x97, 0xff, 0x7b, 0x0a, 0x43, 0x5d, 0x22,
-	0xf5, 0x6f, 0x33, 0x40, 0xbb, 0xc3, 0xc9, 0x20, 0x14, 0x66, 0x5d, 0x2d, 0x8b, 0x53, 0x58, 0x79,
-	0xff, 0x74, 0x5a, 0x83, 0x5f, 0xfa, 0x0f, 0x60, 0x0e, 0x2f, 0x51, 0x0a, 0x9f, 0x7a, 0xf1, 0xc1,
-	0x7b, 0x2b, 0x19, 0x25, 0x55, 0xf3, 0x82, 0x95, 0xf7, 0x5f, 0xbd, 0xe4, 0xaa, 0xe8, 0xcf, 0x99,
-	0xee, 0x9d, 0xce, 0xbd, 0x60, 0x0c, 0x19, 0xcd, 0x0b, 0x48, 0xce, 0x06, 0x97, 0xf3, 0x8d, 0x95,
-	0x72, 0x96, 0xc9, 0x9b, 0x17, 0xac, 0x4b, 0x2a, 0x94, 0x4b, 0xae, 0x6e, 0xb2, 0x0d, 0x8e, 0x2d,
-	0xff, 0xf1, 0x0e, 0x3a, 0x51, 0x42, 0x89, 0xb3, 0xb7, 0x15, 0x95, 0x92, 0x9b, 0x3c, 0x24, 0x9b,
-	0xdf, 0x60, 0xf9, 0xa3, 0x41, 0xe8, 0xf2, 0x75, 0x06, 0xf7, 0xcd, 0x5b, 0x9b, 0x47, 0x83, 0xb0,
-	0x03, 0x4b, 0x7d, 0x85, 0x65, 0xc1, 0x73, 0xd0, 0x29, 0x9a, 0x17, 0x2c, 0xfe, 0xa4, 0x7f, 0xc0,
-	0xb6, 0xe7, 0x47, 0x6f, 0xc2, 0xf1, 0x70, 0x30, 0xe1, 0x3e, 0x87, 0xde, 0xd1, 0xbc, 0x60, 0x6d,
-	0x09, 0x70, 0x1f, 0xc8, 0xbe, 0xc1, 0x76, 0x28, 0xed, 0x7a, 0xd1, 0x00, 0x42, 0x9e, 0x9b, 0x20,
-	0x0b, 0x9b, 0x10, 0x87, 0x77, 0x08, 0xac, 0xdf, 0x60, 0x9b, 0x5e, 0x74, 0xe4, 0x8e, 0xc2, 0x88,
-	0x67, 0xb8, 0xad, 0xe6, 0x05, 0x2b, 0xe7, 0x45, 0x47, 0xf5, 0x30, 0x12, 0xa8, 0x30, 0x18, 0xf2,
-	0x14, 0x27, 0x50, 0x76, 0x30, 0xd4, 0x77, 0x59, 0x1e, 0x50, 0x7c, 0xc2, 0x79, 0x52, 0x00, 0x88,
-	0x1d, 0x98, 0xd3, 0x2e, 0xcb, 0x9f, 0x4c, 0x06, 0x33, 0xf7, 0x64, 0x3c, 0xc2, 0x1c, 0x07, 0x48,
-	0x80, 0x1c, 0x8c, 0x47, 0x12, 0x39, 0x1f, 0xce, 0x31, 0xcd, 0x09, 0x64, 0x7f, 0x38, 0x87, 0x11,
-	0xc7, 0x73, 0x77, 0x14, 0x0e, 0xe7, 0x98, 0xe4, 0x60, 0xc4, 0xf1, 0xbc, 0x1e, 0x0e, 0xe7, 0xfa,
-	0x75, 0x96, 0x1b, 0xcf, 0x5d, 0x6f, 0x38, 0x2b, 0x6d, 0x11, 0x66, 0x63, 0x3c, 0x37, 0x87, 0x33,
-	0x10, 0x38, 0x9e, 0x63, 0x5d, 0x52, 0xda, 0x16, 0x02, 0xc7, 0xf3, 0x3e, 0xaf, 0x4a, 0x38, 0xf2,
-	0xe4, 0x21, 0x9f, 0xc3, 0x4e, 0x8c, 0x3c, 0x79, 0x48, 0x93, 0xe0, 0x48, 0x98, 0xfb, 0x45, 0x15,
-	0x49, 0x93, 0x8f, 0x86, 0x73, 0xce, 0xa8, 0x09, 0x55, 0xa2, 0xe1, 0x1c, 0xf8, 0x08, 0x05, 0x6c,
-	0x97, 0x14, 0x14, 0x71, 0x1d, 0x8f, 0x90, 0x4b, 0x17, 0xa8, 0xe3, 0x91, 0xe0, 0x02, 0x14, 0x70,
-	0x5d, 0x56, 0x50, 0xc0, 0xb5, 0xcb, 0xf2, 0xe1, 0x30, 0x42, 0xb6, 0x2b, 0x42, 0x11, 0x80, 0x90,
-	0x96, 0x1c, 0x09, 0x8c, 0x57, 0x55, 0x24, 0x70, 0xde, 0x63, 0xc5, 0xf1, 0x70, 0x0a, 0x93, 0xe0,
-	0x4b, 0x71, 0x8d, 0xf0, 0x0c, 0x81, 0x7c, 0x35, 0x62, 0x92, 0xa1, 0x3f, 0xf2, 0x4a, 0xd7, 0x93,
-	0x24, 0x35, 0x7f, 0xe4, 0x81, 0x6d, 0x07, 0xc1, 0xdc, 0xf5, 0xe7, 0xa5, 0x92, 0xb0, 0xed, 0x20,
-	0x98, 0xf7, 0xf8, 0x7a, 0x00, 0x22, 0x9c, 0x0f, 0x4a, 0x37, 0x84, 0xce, 0x83, 0x60, 0x6e, 0xcf,
-	0x07, 0x02, 0x15, 0xcd, 0x07, 0xa5, 0x9b, 0x0a, 0xca, 0x89, 0x51, 0xe1, 0xd1, 0xa0, 0xb4, 0x2b,
-	0xfc, 0x06, 0xb8, 0x8e, 0x62, 0xae, 0xa3, 0x41, 0xe9, 0x96, 0x82, 0x72, 0x8e, 0x06, 0xb4, 0x1a,
-	0x8f, 0xb8, 0x11, 0x6e, 0x13, 0x0e, 0x56, 0xe3, 0x51, 0xbc, 0x54, 0x8f, 0xb8, 0x11, 0xde, 0x53,
-	0x91, 0xc2, 0x08, 0x80, 0x7c, 0x35, 0x19, 0xbc, 0xf4, 0x26, 0xa5, 0x3b, 0x72, 0x86, 0xf3, 0x93,
-	0x47, 0x0d, 0x0e, 0x93, 0x46, 0x78, 0x84, 0x76, 0xba, 0x9b, 0x30, 0xc2, 0xa3, 0x84, 0x9d, 0x1e,
-	0xa1, 0x9d, 0xee, 0x25, 0x49, 0xb8, 0x9d, 0xbe, 0xce, 0x76, 0xf8, 0x40, 0xb3, 0x91, 0x1b, 0x0d,
-	0x82, 0x43, 0x2f, 0x2a, 0x95, 0x49, 0x97, 0x2d, 0x80, 0x77, 0x47, 0x0e, 0x87, 0xea, 0x77, 0x49,
-	0xa1, 0xd9, 0xc8, 0x0d, 0xc3, 0x49, 0xe9, 0x6b, 0x44, 0x54, 0x40, 0x22, 0x3b, 0x9c, 0xa8, 0x14,
-	0xd1, 0x64, 0x52, 0x7a, 0x3f, 0x49, 0xe1, 0x4c, 0x26, 0xfa, 0x1d, 0xc6, 0xa6, 0xf3, 0x49, 0xe8,
-	0xe2, 0x9c, 0x3e, 0x20, 0x6d, 0x0a, 0x00, 0x6b, 0xf3, 0x29, 0xdd, 0x60, 0x9b, 0x9c, 0x20, 0x1a,
-	0x96, 0xbe, 0x2e, 0x16, 0x00, 0x00, 0x0e, 0xb7, 0x16, 0x47, 0xbd, 0xf4, 0xc3, 0xd2, 0x37, 0x84,
-	0xcb, 0x00, 0xa4, 0xea, 0x87, 0x80, 0x9c, 0xbf, 0x7c, 0xe9, 0x8e, 0xc3, 0xf1, 0xa8, 0xf4, 0xa1,
-	0x40, 0xce, 0x5f, 0xbe, 0x6c, 0x85, 0xe3, 0x91, 0x7e, 0x9b, 0x15, 0xa2, 0xe3, 0xd9, 0xcc, 0x9b,
-	0xc0, 0xb6, 0xfe, 0x4d, 0xca, 0x18, 0x79, 0x04, 0xb5, 0x46, 0xd2, 0xd2, 0xde, 0x69, 0x74, 0x34,
-	0x0a, 0x4a, 0x15, 0xd5, 0xd2, 0x26, 0x87, 0xe9, 0x1f, 0xb3, 0xcb, 0xc9, 0xc4, 0x83, 0xb9, 0x6d,
-	0xcc, 0x65, 0xa5, 0xac, 0x4b, 0x89, 0xec, 0xc3, 0xf3, 0x5c, 0x99, 0x6d, 0x51, 0x06, 0x42, 0xd2,
-	0x5f, 0xe7, 0xc6, 0x48, 0x59, 0x0c, 0xd3, 0x90, 0x4a, 0x13, 0x06, 0x43, 0xa4, 0xf9, 0x42, 0xa1,
-	0xb1, 0x83, 0x21, 0xa7, 0x79, 0x9f, 0x6d, 0x8b, 0xb4, 0x83, 0x44, 0x53, 0xae, 0x5e, 0xca, 0x2a,
-	0x52, 0xee, 0x11, 0x54, 0x22, 0x23, 0x20, 0x55, 0x20, 0xa8, 0x28, 0x2d, 0x24, 0xa8, 0xa4, 0x52,
-	0xa1, 0x4a, 0xa5, 0x68, 0x45, 0xe1, 0x81, 0x44, 0xbf, 0x49, 0x44, 0x0c, 0x63, 0x44, 0xa5, 0x89,
-	0x04, 0xcd, 0xdf, 0x50, 0x68, 0x1c, 0xa2, 0xf9, 0x80, 0x8f, 0xf6, 0x28, 0xd6, 0xe9, 0x6f, 0xa6,
-	0x68, 0x7e, 0x45, 0x0a, 0x80, 0x04, 0x99, 0x54, 0xea, 0x6f, 0x25, 0xc8, 0x84, 0x56, 0xdf, 0x62,
-	0x9a, 0x12, 0x0e, 0x48, 0xf9, 0x5b, 0x29, 0x1a, 0x76, 0x27, 0x0e, 0x0a, 0x21, 0x53, 0x78, 0x03,
-	0x52, 0xfe, 0x7d, 0x41, 0x59, 0x24, 0x9f, 0xe0, 0x64, 0xb0, 0x9d, 0x08, 0xbf, 0x40, 0xba, 0xdf,
-	0x4e, 0xd1, 0x8a, 0x6e, 0x09, 0xef, 0x48, 0x0c, 0x8e, 0x1e, 0x82, 0xa4, 0xbf, 0x93, 0x18, 0x1c,
-	0xfd, 0x04, 0x88, 0x61, 0x47, 0x3d, 0x19, 0x4c, 0x8e, 0xbd, 0x6a, 0x0e, 0x2b, 0x9d, 0xb2, 0xcb,
-	0x6e, 0xae, 0xdf, 0x95, 0xa1, 0x46, 0x06, 0x0c, 0x9e, 0x5a, 0xa8, 0xb8, 0x82, 0x22, 0xa3, 0x89,
-	0xe7, 0x3a, 0xf0, 0x11, 0x85, 0x89, 0x0a, 0xda, 0x04, 0xac, 0xfc, 0xaf, 0xb3, 0x78, 0xf6, 0x1c,
-	0xf0, 0x22, 0x4e, 0xff, 0x38, 0xb1, 0x67, 0x2f, 0x17, 0x9b, 0x48, 0xa6, 0xd6, 0x48, 0xdf, 0x61,
-	0x39, 0xff, 0x38, 0x9a, 0x1f, 0x47, 0x54, 0x6c, 0xbe, 0xb7, 0x8e, 0x07, 0xa9, 0x20, 0x28, 0xf1,
-	0x97, 0xfe, 0x03, 0x0a, 0xca, 0x28, 0x9a, 0xf0, 0x2d, 0xbd, 0xb8, 0xe2, 0xe8, 0x49, 0xbc, 0x82,
-	0x4e, 0x84, 0xad, 0x13, 0x4d, 0xf4, 0x07, 0x2c, 0x3b, 0x3f, 0x0e, 0x8f, 0xa8, 0x22, 0x5a, 0xab,
-	0x2a, 0xd0, 0xf0, 0x5a, 0xe1, 0x38, 0x3c, 0x82, 0x21, 0xe7, 0xfe, 0x9c, 0x8b, 0xa3, 0x0a, 0x68,
-	0xed, 0x90, 0x82, 0x8e, 0x27, 0x03, 0x7f, 0xde, 0x99, 0x4f, 0x42, 0xfd, 0x33, 0xb6, 0x71, 0x18,
-	0xf8, 0xc7, 0x73, 0x5e, 0x18, 0x14, 0x1f, 0xdc, 0x5e, 0xc7, 0xcb, 0x89, 0x60, 0xd3, 0xe0, 0x3f,
-	0xf4, 0x6f, 0xb3, 0xdc, 0xec, 0x35, 0x9f, 0xe6, 0xe6, 0xd9, 0x26, 0x42, 0x2a, 0x60, 0x9c, 0xbd,
-	0x86, 0x29, 0x3e, 0x66, 0x85, 0xd0, 0x8b, 0xa8, 0x62, 0xcb, 0x73, 0xde, 0x7b, 0xeb, 0x78, 0x25,
-	0x21, 0xe4, 0xa7, 0xd0, 0x8b, 0xb0, 0xf8, 0xfb, 0x7c, 0xc1, 0x05, 0x0a, 0x5c, 0xc8, 0xfb, 0xeb,
-	0x84, 0xa8, 0xb4, 0x90, 0xc4, 0xd5, 0xe7, 0x6a, 0x9e, 0xe5, 0x90, 0xac, 0xfc, 0x18, 0xcb, 0xbd,
-	0xc4, 0xc2, 0xf2, 0x43, 0x1c, 0x94, 0x5f, 0x29, 0x3a, 0xc4, 0xd1, 0xf1, 0x14, 0x4e, 0x69, 0xf1,
-	0x69, 0x38, 0x37, 0x1d, 0x9c, 0xc2, 0x41, 0xf8, 0x63, 0x3c, 0xa0, 0x2d, 0x2c, 0x2f, 0x14, 0x7f,
-	0xd2, 0x25, 0xe8, 0x38, 0x4c, 0xcb, 0x5d, 0xbe, 0x8f, 0x67, 0x23, 0x65, 0x55, 0xa1, 0xf4, 0xf7,
-	0xa2, 0x23, 0x2f, 0x90, 0x1e, 0xbb, 0x6d, 0xc5, 0x80, 0xf2, 0xa7, 0x89, 0x21, 0xc4, 0x72, 0x7e,
-	0x09, 0xd3, 0xaf, 0x30, 0x6d, 0x71, 0x1d, 0x41, 0x29, 0xfe, 0x43, 0x39, 0xa3, 0xf3, 0xe7, 0xd6,
-	0xa8, 0x5c, 0x49, 0x18, 0x02, 0x97, 0x4f, 0xbf, 0x2a, 0x97, 0x9b, 0xfa, 0x03, 0x7c, 0x31, 0xcb,
-	0x4d, 0x76, 0x65, 0xd5, 0x72, 0xe9, 0x1f, 0x53, 0x15, 0xcd, 0xa9, 0xcf, 0x3e, 0x5f, 0x50, 0xb9,
-	0xfd, 0x94, 0x5d, 0x5f, 0xb3, 0x66, 0x4b, 0x21, 0x9f, 0x5a, 0x0e, 0x79, 0x58, 0x28, 0x5e, 0xff,
-	0xc2, 0x8a, 0x6c, 0x59, 0xfc, 0x77, 0xf9, 0xf7, 0x33, 0x68, 0xde, 0xf1, 0x2c, 0x8c, 0x82, 0x63,
-	0xcc, 0x05, 0xba, 0x92, 0x0b, 0xb6, 0x29, 0xda, 0x9b, 0x8c, 0x1d, 0xfa, 0x91, 0x8f, 0xc7, 0x60,
-	0x8a, 0xf8, 0xe5, 0x43, 0x84, 0x22, 0xc5, 0x8d, 0xc9, 0x61, 0xb7, 0x86, 0x27, 0x7e, 0x66, 0xd6,
-	0x1d, 0xb6, 0xf3, 0x3a, 0x18, 0x47, 0x4a, 0x3d, 0x8e, 0x39, 0xe0, 0x5b, 0x67, 0x4a, 0x4b, 0xb2,
-	0x40, 0xf1, 0xce, 0x21, 0xb2, 0x78, 0x7f, 0xcc, 0x36, 0xd1, 0x2c, 0x21, 0xe5, 0x85, 0xf7, 0xcf,
-	0x14, 0x47, 0xb4, 0x10, 0xe3, 0xf4, 0x53, 0xff, 0x2e, 0xdb, 0x98, 0x7a, 0x60, 0x3a, 0xcc, 0x0f,
-	0xe5, 0x33, 0xf9, 0x39, 0x25, 0xc4, 0x2b, 0xff, 0xa1, 0xf7, 0x16, 0xac, 0x9f, 0x5b, 0xd3, 0x11,
-	0x53, 0x45, 0x9c, 0x19, 0x72, 0x39, 0x5c, 0xaa, 0xf2, 0xb7, 0x71, 0x1b, 0x58, 0x6d, 0xd7, 0x33,
-	0x9a, 0x48, 0xe5, 0x01, 0x7b, 0xef, 0x6c, 0x13, 0xea, 0x37, 0x59, 0x5e, 0xae, 0x00, 0x36, 0x44,
-	0xe4, 0xb3, 0xfe, 0x35, 0xb6, 0x9d, 0x2c, 0x5a, 0xd2, 0x9c, 0x60, 0x6b, 0xaa, 0x54, 0x2b, 0xe5,
-	0x36, 0x7a, 0xe3, 0x0a, 0xb3, 0xea, 0x9f, 0xc4, 0xab, 0x81, 0xcd, 0xb7, 0xeb, 0x6b, 0x12, 0x8f,
-	0x34, 0x7f, 0xf9, 0x01, 0x36, 0x29, 0x97, 0x8c, 0xcc, 0x53, 0x03, 0xfc, 0x50, 0x26, 0xc9, 0x9f,
-	0x5b, 0xa3, 0xf2, 0x01, 0xf6, 0x0a, 0xd7, 0x59, 0xf5, 0x17, 0x0e, 0x8a, 0x3f, 0xc9, 0x60, 0x27,
-	0x83, 0xeb, 0x3b, 0xf5, 0xa9, 0x25, 0xe7, 0x7f, 0x31, 0xf6, 0xc8, 0x52, 0xf4, 0xa4, 0xdf, 0x61,
-	0x45, 0xfc, 0xa5, 0x5a, 0x89, 0x21, 0x88, 0x17, 0x01, 0xea, 0x0a, 0x65, 0x92, 0x6d, 0xbe, 0xef,
-	0xb1, 0xcd, 0xa1, 0x3f, 0x9d, 0x0e, 0x66, 0x78, 0xb6, 0xdf, 0x59, 0x91, 0xe1, 0xc5, 0xf8, 0x2e,
-	0x11, 0x5a, 0x82, 0x43, 0xbf, 0xc7, 0xb6, 0xc6, 0xa3, 0x89, 0xe7, 0x46, 0xe3, 0xa9, 0xe7, 0x1f,
-	0x47, 0xd4, 0xff, 0x28, 0x02, 0xcc, 0x41, 0x10, 0x90, 0x1c, 0x0d, 0x82, 0x91, 0x24, 0xc1, 0xae,
-	0x5d, 0x11, 0x60, 0x82, 0xe4, 0x26, 0xcb, 0xcf, 0x83, 0xb1, 0x1f, 0x8c, 0xa3, 0x37, 0xd4, 0xba,
-	0x93, 0xcf, 0xfa, 0x2e, 0x2b, 0x60, 0x3f, 0x0c, 0x54, 0xc7, 0xc6, 0x5d, 0x1e, 0x01, 0x2d, 0xde,
-	0xbd, 0xf4, 0x8f, 0x23, 0x3c, 0x75, 0x63, 0xef, 0x6e, 0xd3, 0x3f, 0x8e, 0xf8, 0x71, 0x7b, 0x97,
-	0x15, 0x00, 0x85, 0xdb, 0x25, 0x76, 0xef, 0x80, 0x76, 0x8f, 0x67, 0x54, 0xd9, 0x40, 0x2d, 0xaa,
-	0x0d, 0xd4, 0xbf, 0xc4, 0x36, 0x78, 0x07, 0x86, 0x9f, 0x67, 0x8b, 0x0f, 0xae, 0xad, 0xee, 0xcf,
-	0x58, 0x48, 0xa4, 0x3f, 0x66, 0x5b, 0xca, 0x82, 0x87, 0xa5, 0x6d, 0xee, 0x60, 0xb7, 0xce, 0x8a,
-	0x35, 0x2b, 0xc1, 0x51, 0xfe, 0x49, 0x0a, 0x4b, 0x9f, 0x97, 0xc7, 0xc3, 0x2f, 0xbc, 0x08, 0x16,
-	0xf7, 0xb5, 0x37, 0x3e, 0x3c, 0x12, 0x3b, 0x18, 0x3d, 0x41, 0x91, 0xf5, 0x9a, 0x37, 0x86, 0xf8,
-	0x34, 0x71, 0x1b, 0x2b, 0x70, 0x08, 0x9f, 0xe8, 0x1d, 0x56, 0x44, 0x34, 0x4e, 0x15, 0x57, 0x17,
-	0x39, 0x70, 0xb2, 0x9f, 0xa8, 0x29, 0xe9, 0x7c, 0x41, 0xf0, 0x1f, 0xa9, 0x79, 0x84, 0xdb, 0x0e,
-	0x78, 0xde, 0xf7, 0x63, 0x2f, 0x59, 0xd7, 0x91, 0x93, 0xc4, 0xcb, 0x6e, 0x72, 0x3f, 0xf1, 0xde,
-	0x60, 0x77, 0x0d, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1, 0x74, 0xd0, 0x60,
-	0xeb, 0xa7, 0x83, 0x78, 0x4b, 0xd0, 0x95, 0x7f, 0x3b, 0xc5, 0x76, 0x78, 0x47, 0x70, 0x00, 0xcf,
-	0x50, 0x2f, 0x24, 0xdd, 0x2a, 0xb5, 0xe0, 0x56, 0xd7, 0xd9, 0xe6, 0x78, 0xa6, 0x9a, 0x3b, 0x37,
-	0x9e, 0x71, 0x5b, 0x2b, 0xa6, 0xcc, 0x9c, 0xcf, 0x94, 0x32, 0xae, 0xb3, 0x6a, 0x5c, 0x93, 0x79,
-	0x49, 0x9f, 0xf1, 0xec, 0x6c, 0x75, 0x7e, 0x55, 0xb6, 0x60, 0xd3, 0x6b, 0x02, 0x54, 0x0a, 0x5a,
-	0xec, 0xc3, 0x9e, 0x11, 0xf7, 0x71, 0x2e, 0xc9, 0x26, 0x72, 0x89, 0x8c, 0x82, 0x8d, 0xf3, 0x44,
-	0x81, 0x98, 0x5e, 0x4e, 0x99, 0xde, 0x3f, 0xce, 0x60, 0x11, 0xc3, 0x99, 0x02, 0x6f, 0xea, 0x9f,
-	0x78, 0xeb, 0x53, 0x97, 0x1a, 0xfb, 0xe9, 0x85, 0xd8, 0xff, 0xbe, 0x9c, 0x78, 0x86, 0x4f, 0xfc,
-	0xfd, 0xd5, 0x99, 0x89, 0x86, 0x38, 0x6b, 0xee, 0xd9, 0xe4, 0xdc, 0xef, 0xb1, 0xad, 0xd1, 0x71,
-	0x30, 0xa0, 0x42, 0x68, 0x28, 0xd2, 0x96, 0x80, 0xd9, 0xde, 0x10, 0xb6, 0x1e, 0x49, 0x32, 0x03,
-	0x1a, 0xcc, 0x5b, 0x92, 0xaf, 0x1b, 0x7a, 0xc3, 0xa5, 0xf4, 0xb7, 0xf9, 0xe5, 0xe9, 0x2f, 0xbf,
-	0x9c, 0xfe, 0xee, 0xb1, 0x2d, 0x5a, 0xc0, 0xa1, 0x7f, 0x3c, 0xc3, 0x4c, 0x96, 0xb5, 0x8a, 0x08,
-	0xab, 0x01, 0x08, 0x72, 0xc0, 0xcb, 0x37, 0x91, 0x47, 0x04, 0x8c, 0x13, 0x14, 0x00, 0x82, 0x68,
-	0xb9, 0x66, 0x6f, 0xce, 0xb1, 0x66, 0xe5, 0x3f, 0x49, 0xe3, 0x1e, 0x87, 0xdb, 0xd9, 0xcb, 0xc1,
-	0x6c, 0x74, 0xde, 0x17, 0x71, 0x0a, 0x87, 0x12, 0xac, 0x3a, 0xcb, 0x06, 0x83, 0xc8, 0xa3, 0xe5,
-	0xe3, 0xbf, 0xb9, 0xc2, 0xc7, 0x41, 0x18, 0xb9, 0xe1, 0xf8, 0x37, 0x3c, 0x72, 0xbd, 0x02, 0x87,
-	0xd8, 0xe3, 0xdf, 0xf0, 0xf4, 0x47, 0x2c, 0x3b, 0x0a, 0xfc, 0x39, 0xd5, 0x48, 0x67, 0x0e, 0x04,
-	0x74, 0x70, 0x7e, 0x82, 0x7f, 0xf5, 0xcf, 0x59, 0x71, 0x14, 0x0e, 0xe7, 0xb0, 0xe4, 0x83, 0xe0,
-	0x8b, 0xb5, 0x4d, 0x64, 0x95, 0x3d, 0x26, 0x6f, 0x5e, 0xb0, 0x18, 0x3c, 0x5a, 0xfc, 0x49, 0xef,
-	0xae, 0x2c, 0x96, 0x3e, 0x3c, 0x4b, 0xd8, 0xb9, 0x6a, 0xa5, 0xab, 0x58, 0xf7, 0x2f, 0x4c, 0xa1,
-	0xfc, 0x3d, 0x2c, 0xa1, 0x56, 0xab, 0x06, 0xf6, 0x9a, 0x07, 0xde, 0xd0, 0x9d, 0x78, 0x27, 0x9e,
-	0xa8, 0xdb, 0x0b, 0x00, 0x69, 0x03, 0xa0, 0x6c, 0xb0, 0xdd, 0x33, 0x54, 0x39, 0x4f, 0x81, 0x51,
-	0xfe, 0xb7, 0x94, 0x74, 0x50, 0xc6, 0x39, 0x73, 0xba, 0x24, 0x5e, 0xce, 0xe9, 0x72, 0x0f, 0x4d,
-	0xab, 0x7b, 0xa8, 0x5a, 0x25, 0x65, 0x12, 0x55, 0x92, 0xfe, 0x1d, 0xb6, 0x01, 0x9a, 0x8b, 0xb4,
-	0x5d, 0x3e, 0xcb, 0xd0, 0xf4, 0x1e, 0x14, 0x19, 0xca, 0x3f, 0x46, 0xcd, 0xbd, 0x20, 0xf0, 0x03,
-	0x77, 0x1a, 0x1e, 0xea, 0xf7, 0x59, 0x4e, 0xe9, 0x39, 0xac, 0x4a, 0xc3, 0x24, 0x80, 0xc8, 0xe4,
-	0x51, 0x22, 0xad, 0x1c, 0x25, 0x74, 0x96, 0xe5, 0x7d, 0xc5, 0x0c, 0xbd, 0x46, 0xf4, 0x47, 0xde,
-	0xca, 0x6c, 0xfd, 0x5b, 0x29, 0x5c, 0x39, 0x1c, 0x3e, 0xd1, 0x05, 0x01, 0x5d, 0x56, 0x9d, 0x52,
-	0x6e, 0xb0, 0xbc, 0x77, 0x8a, 0x1b, 0x1a, 0x0d, 0xb9, 0xe9, 0x9d, 0xce, 0x79, 0x53, 0x73, 0x71,
-	0xa9, 0x32, 0x67, 0xd4, 0x82, 0xaa, 0x16, 0x27, 0x14, 0xb3, 0xc7, 0x93, 0x68, 0x3c, 0x1f, 0xf0,
-	0x37, 0x6e, 0x3f, 0x3a, 0xf6, 0xc2, 0x48, 0xff, 0x34, 0x11, 0xb3, 0x77, 0x96, 0xad, 0x2a, 0x39,
-	0x94, 0x90, 0x5d, 0xbd, 0x78, 0x3a, 0xcb, 0xbe, 0xf4, 0x47, 0x6f, 0xb8, 0x4e, 0x5b, 0x16, 0xff,
-	0x5d, 0x8e, 0xc8, 0x9b, 0x95, 0x71, 0xe7, 0x93, 0x37, 0xbf, 0xec, 0x51, 0x7f, 0x37, 0x85, 0xef,
-	0x98, 0x47, 0x5e, 0x38, 0xe4, 0x3e, 0xf5, 0x2a, 0xe0, 0xbf, 0xf9, 0x78, 0x05, 0x6b, 0x73, 0xfa,
-	0x2a, 0xa8, 0x03, 0x0a, 0xdf, 0xe0, 0xc9, 0x57, 0x8d, 0x05, 0x2b, 0x77, 0xf4, 0x5a, 0x20, 0x42,
-	0x42, 0xe0, 0x8b, 0xe6, 0x5c, 0x88, 0x88, 0xdb, 0x8c, 0x85, 0x5e, 0x30, 0x1e, 0x4c, 0xdc, 0xd9,
-	0xf1, 0x94, 0x5b, 0xb8, 0x60, 0x15, 0x10, 0xd2, 0x3d, 0x9e, 0x02, 0xdf, 0x08, 0x87, 0xe5, 0xc9,
-	0xa5, 0x60, 0xe5, 0x46, 0x73, 0xe0, 0x2b, 0xff, 0x51, 0x8a, 0x5d, 0x93, 0x3b, 0x4e, 0x18, 0x0d,
-	0xa2, 0x50, 0xae, 0xc0, 0x19, 0xef, 0xd0, 0xd5, 0x02, 0x35, 0x7d, 0x46, 0x81, 0x9a, 0x59, 0x28,
-	0x50, 0xd7, 0x6d, 0xce, 0x0b, 0x85, 0xfe, 0xc6, 0x52, 0xa1, 0x2f, 0x77, 0x82, 0xdc, 0x79, 0x76,
-	0x82, 0x3f, 0xcc, 0x60, 0x61, 0x14, 0x4f, 0x4a, 0xdf, 0x61, 0xe9, 0xf1, 0x88, 0xbf, 0x99, 0xc9,
-	0x5a, 0xe9, 0xf1, 0x99, 0x17, 0x04, 0x16, 0x77, 0xd1, 0xf4, 0x39, 0x76, 0xd1, 0xcc, 0x8a, 0x5d,
-	0x54, 0x2d, 0x01, 0xb2, 0x0b, 0x25, 0xc0, 0x57, 0x73, 0xc0, 0x90, 0x8e, 0xb7, 0xa9, 0x3a, 0x5e,
-	0x6c, 0xe4, 0x7c, 0xc2, 0xc8, 0x5f, 0xe1, 0x7e, 0xfc, 0xff, 0xe8, 0x24, 0xf1, 0xc7, 0x29, 0xdc,
-	0x1f, 0x06, 0x87, 0x87, 0x81, 0x77, 0x38, 0x88, 0xbc, 0xff, 0x6f, 0x3c, 0xf4, 0xc7, 0xec, 0xc6,
-	0xea, 0x89, 0x41, 0x12, 0x5a, 0x5c, 0xa8, 0xd4, 0x97, 0x2d, 0x54, 0x7a, 0x71, 0xa1, 0x6e, 0x33,
-	0xc6, 0x87, 0x46, 0x34, 0x95, 0x29, 0x00, 0xe1, 0xe8, 0xf2, 0x9f, 0x67, 0x30, 0xf5, 0xa3, 0xf1,
-	0xe8, 0x1a, 0x87, 0x3b, 0x0f, 0xfc, 0xb9, 0x17, 0xf0, 0xfa, 0x54, 0x4d, 0x82, 0xcb, 0x95, 0xc3,
-	0x32, 0x9b, 0x9a, 0x0d, 0x0f, 0x16, 0x96, 0x1d, 0x9b, 0x59, 0x1f, 0x9f, 0x47, 0x8a, 0xca, 0xc7,
-	0xdf, 0x75, 0x29, 0xcf, 0xba, 0xc5, 0x8a, 0x33, 0xef, 0x34, 0x52, 0x6f, 0x8a, 0x14, 0x1f, 0xdc,
-	0x3f, 0x8f, 0x58, 0x85, 0x0d, 0x6a, 0x25, 0x78, 0xa4, 0xfb, 0x25, 0x7b, 0x8b, 0x6d, 0xad, 0x6f,
-	0x9d, 0x47, 0xde, 0x8a, 0xee, 0xd6, 0xf7, 0x58, 0xc6, 0x3f, 0x9d, 0xae, 0x2d, 0xdc, 0x56, 0x08,
-	0xf1, 0x4f, 0xa7, 0xcd, 0x0b, 0x16, 0x70, 0x81, 0xc5, 0x56, 0x54, 0x6c, 0xe7, 0xb2, 0xd8, 0x99,
-	0x95, 0x9b, 0x78, 0xeb, 0x51, 0x3e, 0x64, 0x5f, 0x3b, 0x87, 0xc5, 0x97, 0x02, 0x36, 0xf5, 0x73,
-	0x07, 0xec, 0xe7, 0xac, 0xfc, 0xe5, 0x6b, 0xa0, 0xbf, 0xcf, 0x76, 0xe2, 0x47, 0x77, 0x3c, 0xc2,
-	0x91, 0xb6, 0xad, 0x2d, 0xb9, 0x32, 0xad, 0x51, 0x58, 0xb6, 0xb1, 0xc5, 0xb6, 0xde, 0xfe, 0xbf,
-	0x48, 0x1b, 0xec, 0xb3, 0x75, 0x8e, 0x0f, 0xeb, 0x01, 0xbb, 0xa4, 0x7f, 0x3a, 0xe5, 0x1a, 0x65,
-	0xf0, 0xe2, 0x8c, 0x7f, 0x3a, 0x05, 0x5d, 0xfe, 0x61, 0x6a, 0xad, 0x05, 0xcf, 0x2c, 0x58, 0x57,
-	0xbc, 0x19, 0x4a, 0x14, 0x51, 0x99, 0x64, 0x11, 0xf5, 0x2d, 0x96, 0xb8, 0x0d, 0xe2, 0x52, 0xb5,
-	0x04, 0x9a, 0x68, 0x2a, 0xa2, 0x0e, 0x95, 0xd3, 0xef, 0xa5, 0x99, 0xbe, 0xa4, 0x53, 0x78, 0x56,
-	0x4e, 0x14, 0x57, 0xd4, 0xd2, 0xca, 0x15, 0xb5, 0x0f, 0xd8, 0x8e, 0xd2, 0x8a, 0x84, 0xfc, 0x95,
-	0xe1, 0xc9, 0x64, 0x3b, 0xee, 0x45, 0x42, 0x2e, 0x57, 0xc9, 0x78, 0xa3, 0x93, 0xd2, 0xa3, 0x24,
-	0x7b, 0x06, 0x40, 0xe5, 0x82, 0xd1, 0x46, 0xe2, 0x82, 0xd1, 0x1d, 0x56, 0x9c, 0x0e, 0x4e, 0x5d,
-	0x6f, 0x16, 0x05, 0x63, 0x2f, 0xa4, 0xad, 0x8c, 0x4d, 0x07, 0xa7, 0x26, 0x42, 0xf4, 0x3d, 0x38,
-	0x27, 0xf0, 0xf4, 0x03, 0xf8, 0x4d, 0xbe, 0x9a, 0xe7, 0x09, 0x23, 0xc8, 0x57, 0x96, 0xc2, 0x5a,
-	0xfe, 0x49, 0x0a, 0x1b, 0xee, 0x48, 0x8a, 0x7b, 0xff, 0xd9, 0x7b, 0x3d, 0xb8, 0xc6, 0x89, 0x9a,
-	0x49, 0xb7, 0xad, 0x22, 0xc2, 0x30, 0x97, 0xde, 0x63, 0x5b, 0x13, 0xdf, 0xff, 0xe2, 0x78, 0xae,
-	0x64, 0xd3, 0xac, 0x55, 0x44, 0x18, 0x92, 0x7c, 0x8d, 0x6d, 0x73, 0xdb, 0x79, 0x23, 0xa2, 0xc9,
-	0x52, 0x3f, 0x17, 0x81, 0x98, 0x74, 0x3f, 0xc1, 0x42, 0x4b, 0x5e, 0x42, 0x8b, 0xb7, 0xb1, 0x75,
-	0x17, 0xb9, 0xca, 0x7f, 0x4a, 0x75, 0x4c, 0xcc, 0xb3, 0xfe, 0xd2, 0xd7, 0x6d, 0xc6, 0x82, 0x53,
-	0xea, 0x98, 0x84, 0x62, 0x47, 0x08, 0x4e, 0xfb, 0x08, 0x00, 0x74, 0x14, 0xa3, 0x71, 0x0e, 0x85,
-	0x48, 0xa2, 0x6f, 0xb0, 0x7c, 0x70, 0xea, 0xc2, 0x06, 0x12, 0x92, 0xf2, 0x9b, 0xc1, 0x69, 0x15,
-	0x1e, 0xb9, 0xf5, 0x04, 0x0a, 0xb7, 0xbd, 0xcd, 0x88, 0x50, 0x38, 0x26, 0x1c, 0x03, 0xe7, 0xde,
-	0x88, 0xaf, 0x2a, 0x1f, 0xb3, 0x8e, 0x00, 0x1a, 0x53, 0xa0, 0x37, 0xc5, 0x98, 0x02, 0xbd, 0xcb,
-	0x0a, 0xc1, 0x29, 0x1e, 0x3f, 0x42, 0x2a, 0x55, 0xf2, 0xc1, 0xa9, 0xc9, 0x9f, 0x01, 0x19, 0x49,
-	0x24, 0x56, 0x2a, 0xf9, 0x48, 0x20, 0xef, 0xb2, 0xad, 0xe0, 0xd4, 0x7d, 0x15, 0x0c, 0xa6, 0x1e,
-	0x90, 0x50, 0xa1, 0xc2, 0x82, 0xd3, 0x06, 0x80, 0x4c, 0x7e, 0x6f, 0xb2, 0x18, 0x9c, 0xba, 0xfe,
-	0x89, 0x17, 0x70, 0x82, 0xa2, 0x50, 0xad, 0x77, 0xe2, 0x05, 0x80, 0xbf, 0xc5, 0x35, 0x1f, 0x06,
-	0x43, 0x8e, 0xde, 0x12, 0x83, 0xd7, 0x82, 0x21, 0x72, 0xb3, 0xa1, 0x3f, 0x99, 0x8c, 0x43, 0xaa,
-	0x5b, 0x68, 0xaf, 0x17, 0x90, 0xa5, 0x0a, 0x71, 0xe7, 0x1c, 0x15, 0xe2, 0xc5, 0xe5, 0x0a, 0xb1,
-	0xfc, 0x10, 0x5b, 0xfc, 0xd8, 0x12, 0x5c, 0x2a, 0x6d, 0xd6, 0xbd, 0x1c, 0x3b, 0xc0, 0xb8, 0xc7,
-	0x2e, 0x20, 0x3a, 0x9c, 0x17, 0xfc, 0xdf, 0x17, 0x0d, 0xe5, 0x9f, 0xa4, 0x31, 0x74, 0x14, 0x75,
-	0xce, 0x50, 0x83, 0x2f, 0x9f, 0xf7, 0x2a, 0x11, 0x37, 0xf9, 0xc0, 0x7b, 0x25, 0x83, 0x26, 0xa1,
-	0x4d, 0xe6, 0xcb, 0xb4, 0xc9, 0x2e, 0x96, 0x30, 0x5f, 0x55, 0x2f, 0xab, 0xca, 0xb6, 0xc8, 0x52,
-	0x7c, 0x46, 0x94, 0x5b, 0xee, 0xac, 0x69, 0xae, 0x0a, 0x73, 0x5a, 0x45, 0x7c, 0xb6, 0x81, 0x07,
-	0x8e, 0x6d, 0x3b, 0xb1, 0x65, 0xf8, 0xe1, 0xed, 0xcb, 0xee, 0x3c, 0x9e, 0xd9, 0xfa, 0x4d, 0xaf,
-	0x6d, 0xfd, 0x66, 0xce, 0xd9, 0xfa, 0x3d, 0x51, 0x97, 0x0a, 0xd2, 0xea, 0x1b, 0xd0, 0x48, 0x1e,
-	0x25, 0x8b, 0x6b, 0x35, 0x02, 0x12, 0xbc, 0xa1, 0xaa, 0x3f, 0xc0, 0x5b, 0xc8, 0xa2, 0x42, 0xbb,
-	0xb5, 0x86, 0x83, 0xd3, 0xe0, 0x1d, 0xe5, 0xb0, 0xfc, 0x77, 0x52, 0xe8, 0x7c, 0x88, 0x92, 0x9b,
-	0xce, 0x15, 0xb6, 0xc1, 0xef, 0x1a, 0x8a, 0x37, 0xb3, 0xfc, 0x61, 0xe9, 0x6a, 0x6e, 0x7a, 0xf9,
-	0x6a, 0x2e, 0x78, 0x01, 0xec, 0x0c, 0x5c, 0x9e, 0xd8, 0x75, 0x0b, 0xd3, 0xc1, 0x29, 0xaf, 0xc6,
-	0x43, 0xbd, 0x94, 0x6c, 0xf2, 0x6f, 0xc7, 0x3b, 0xf9, 0x77, 0xd4, 0xd6, 0xd1, 0x72, 0xfb, 0xe0,
-	0x8c, 0xd7, 0x5a, 0xbf, 0x8e, 0x2f, 0x8c, 0x95, 0xb6, 0x0c, 0xfa, 0x7a, 0x85, 0x5d, 0x22, 0x9f,
-	0xe5, 0x40, 0x35, 0x8c, 0x2e, 0x22, 0xa2, 0x3a, 0x98, 0x61, 0x32, 0xd7, 0xbf, 0xce, 0x2e, 0x72,
-	0xe7, 0x55, 0x28, 0x31, 0x9e, 0xb6, 0x01, 0x2c, 0xe9, 0xca, 0x7f, 0x40, 0x31, 0x85, 0x83, 0xc9,
-	0x98, 0x5a, 0xa3, 0xda, 0x42, 0xdd, 0x9e, 0x5e, 0xa8, 0xdb, 0x61, 0xd4, 0xb8, 0x25, 0xae, 0x06,
-	0xd6, 0x36, 0x82, 0x5b, 0x33, 0xa4, 0x2b, 0x33, 0xae, 0x46, 0x4c, 0x85, 0xd1, 0x55, 0x04, 0xa0,
-	0xa0, 0xf9, 0xaa, 0xe2, 0xeb, 0x31, 0x63, 0xb1, 0x0d, 0x29, 0xba, 0xee, 0x9d, 0xd5, 0x03, 0x43,
-	0x7f, 0x2a, 0xc0, 0x6f, 0x8c, 0xae, 0xdf, 0xc4, 0xb6, 0x3a, 0x92, 0x9c, 0xf9, 0x29, 0x80, 0x6a,
-	0xb9, 0xf4, 0x9a, 0x2e, 0x5c, 0xe6, 0xe7, 0xed, 0xc2, 0xfd, 0x2b, 0x72, 0x69, 0x24, 0x90, 0x2e,
-	0x4d, 0x17, 0xe1, 0xf1, 0x9d, 0x75, 0x4a, 0x5e, 0x84, 0xef, 0xf0, 0x97, 0xa6, 0xb7, 0x69, 0xd2,
-	0xe8, 0xf4, 0xb4, 0x4e, 0x00, 0x71, 0x56, 0x3a, 0x7e, 0x66, 0x85, 0xe3, 0x93, 0x7c, 0xd1, 0x3a,
-	0x14, 0xf2, 0xc1, 0x75, 0x24, 0x72, 0xe8, 0x4f, 0xfc, 0x80, 0x56, 0x06, 0x90, 0x35, 0x78, 0x2e,
-	0xff, 0x58, 0x75, 0x29, 0x8c, 0xfd, 0xcf, 0x64, 0xdd, 0x95, 0x5a, 0x73, 0x83, 0x46, 0xb5, 0xae,
-	0x2c, 0xcb, 0xbe, 0x34, 0x03, 0x28, 0x6e, 0x2b, 0x32, 0xc0, 0x09, 0xbb, 0xc7, 0xbb, 0x86, 0x89,
-	0x7e, 0xa1, 0x0c, 0xbf, 0xa3, 0xd5, 0x37, 0xa4, 0x52, 0x5f, 0x52, 0x07, 0x2f, 0x34, 0x13, 0x45,
-	0xa3, 0x30, 0xa3, 0x34, 0x0a, 0x27, 0xb8, 0x57, 0x26, 0xc6, 0xfd, 0xe5, 0x8d, 0x66, 0x62, 0x5b,
-	0xf2, 0x47, 0xc7, 0xde, 0x31, 0xd5, 0xf9, 0x34, 0x16, 0x6f, 0xea, 0x60, 0xdd, 0x29, 0xbc, 0x42,
-	0x9e, 0x9b, 0x35, 0x96, 0x89, 0x6f, 0xe4, 0xc0, 0xcf, 0x72, 0x80, 0x4a, 0x2b, 0x62, 0xa6, 0xe3,
-	0x99, 0xcb, 0xdf, 0x24, 0xd4, 0x58, 0x51, 0x91, 0x4b, 0xeb, 0xb6, 0xec, 0xb6, 0x4b, 0x1a, 0x60,
-	0xb5, 0xdb, 0x94, 0xfd, 0xdf, 0xc5, 0x57, 0x14, 0xab, 0xc6, 0x1c, 0x9c, 0xfe, 0x92, 0xc7, 0xfc,
-	0x47, 0xd4, 0xa8, 0x51, 0x38, 0x13, 0xd6, 0xff, 0x4a, 0x06, 0x3e, 0xcf, 0xe1, 0x6a, 0xd5, 0x5a,
-	0xfe, 0xed, 0x14, 0x26, 0x18, 0x4a, 0x9d, 0x7c, 0x10, 0xf0, 0x07, 0x1c, 0x2d, 0x4e, 0xc2, 0xfc,
-	0x19, 0x8f, 0x49, 0x4a, 0xdb, 0x08, 0x2f, 0x5c, 0x55, 0x13, 0xe7, 0x93, 0x75, 0x9d, 0xfe, 0x35,
-	0xfa, 0xd3, 0xd1, 0xe4, 0x01, 0x5e, 0xa7, 0x40, 0xa2, 0x43, 0x5e, 0x6b, 0x40, 0x14, 0xca, 0x2d,
-	0x6b, 0xc5, 0x45, 0xaf, 0xf2, 0x21, 0x9e, 0x57, 0x57, 0xf0, 0xcc, 0x27, 0x6f, 0x56, 0x5e, 0x0d,
-	0xfb, 0x8c, 0xe5, 0x38, 0xb5, 0xf8, 0xae, 0xe2, 0xf6, 0xba, 0xb7, 0xaa, 0x9c, 0xca, 0x22, 0xe2,
-	0xb2, 0xb9, 0x74, 0x8b, 0x0a, 0xed, 0xb4, 0xe6, 0x35, 0x80, 0xb4, 0x5d, 0x26, 0x61, 0xbb, 0x72,
-	0x47, 0x75, 0xbe, 0xf3, 0x9d, 0x72, 0x12, 0xe2, 0xd2, 0x49, 0x71, 0x7f, 0x46, 0xa7, 0x39, 0x45,
-	0xde, 0x2f, 0x22, 0x27, 0x71, 0x86, 0xc9, 0x2c, 0x9d, 0x61, 0x94, 0x83, 0x51, 0x76, 0xf1, 0x60,
-	0x94, 0x38, 0x87, 0x6c, 0x2c, 0x9c, 0x43, 0x16, 0xf7, 0xd0, 0xdc, 0x39, 0xf6, 0xd0, 0xcd, 0x15,
-	0xe7, 0x80, 0x29, 0x3a, 0x68, 0xe0, 0x4f, 0x3c, 0x69, 0xae, 0x87, 0x2c, 0x0b, 0xcf, 0x6b, 0xdf,
-	0x59, 0x0e, 0xfd, 0x59, 0x14, 0xf8, 0x93, 0x89, 0x17, 0x70, 0x3e, 0x8b, 0x53, 0xc3, 0x70, 0x87,
-	0xde, 0xcc, 0xa3, 0x01, 0xc9, 0x10, 0x59, 0x6b, 0x2b, 0x06, 0xb6, 0x46, 0xe5, 0xdf, 0xa1, 0x80,
-	0x18, 0x84, 0x6f, 0x66, 0x43, 0xb1, 0xe3, 0xbe, 0xcf, 0x76, 0xe2, 0xda, 0x82, 0xf7, 0x38, 0xa9,
-	0x29, 0x23, 0x4a, 0x0b, 0xde, 0xe5, 0xfc, 0x90, 0x69, 0xca, 0x57, 0x54, 0xe2, 0x5a, 0x0e, 0xd0,
-	0xed, 0x00, 0xdc, 0xe6, 0x60, 0x4e, 0x59, 0x61, 0x97, 0x12, 0x6f, 0xb1, 0x39, 0x29, 0xd6, 0x77,
-	0x17, 0x01, 0x61, 0x21, 0x9c, 0x5f, 0x75, 0xfa, 0x82, 0xed, 0xf0, 0x7d, 0xb5, 0xe3, 0x8f, 0xf6,
-	0xe7, 0x23, 0xc8, 0x54, 0xd8, 0xae, 0xc7, 0xb7, 0x22, 0xe9, 0x31, 0xff, 0xc8, 0x47, 0xbe, 0xb3,
-	0xa3, 0xdd, 0xea, 0xe6, 0xfa, 0xb7, 0x7a, 0x16, 0x96, 0x09, 0x1d, 0x7f, 0xb4, 0xe2, 0x7b, 0xcd,
-	0x3e, 0xbb, 0xc8, 0x07, 0xe3, 0xc5, 0x87, 0xc5, 0xe3, 0xe8, 0x07, 0xac, 0xa8, 0xec, 0x74, 0x6b,
-	0xfb, 0x5e, 0xea, 0x6e, 0xc8, 0xa6, 0x52, 0x46, 0x79, 0xcc, 0x2e, 0x36, 0x26, 0xfe, 0x6b, 0xde,
-	0xb9, 0x5a, 0xa3, 0xff, 0x43, 0x96, 0x17, 0xb7, 0x8d, 0x48, 0xfd, 0x1b, 0x6b, 0xaf, 0x23, 0x59,
-	0x9b, 0xf0, 0x6b, 0xb5, 0xf2, 0x3f, 0x62, 0x57, 0x60, 0x28, 0x5e, 0x1d, 0x9f, 0x35, 0xde, 0xb7,
-	0x59, 0x41, 0xde, 0x5b, 0x59, 0x6b, 0x2f, 0x49, 0x61, 0xe1, 0xd1, 0x64, 0xf5, 0x90, 0xdf, 0x65,
-	0x1b, 0x30, 0x64, 0xa8, 0x7f, 0xc2, 0x36, 0xc6, 0x91, 0x37, 0x15, 0xf6, 0xd9, 0x5d, 0x3d, 0x01,
-	0x2a, 0x16, 0x38, 0x65, 0xf9, 0xfb, 0x2c, 0xc7, 0x6d, 0x1d, 0x42, 0xa9, 0xa1, 0x32, 0xaf, 0x33,
-	0x2e, 0x2f, 0x67, 0x04, 0xf7, 0x63, 0xc6, 0xe4, 0x64, 0xcf, 0x21, 0x41, 0x39, 0x0c, 0x09, 0x09,
-	0x63, 0x56, 0x04, 0x09, 0xb5, 0xa3, 0xc1, 0xec, 0xd0, 0x0b, 0xf5, 0x6f, 0xb2, 0x5c, 0xe4, 0xbb,
-	0x83, 0x91, 0xb8, 0x13, 0xaa, 0x27, 0x64, 0xf0, 0x59, 0x5a, 0x1b, 0x91, 0x6f, 0x8c, 0x46, 0xfa,
-	0x7d, 0x56, 0x88, 0x7c, 0x72, 0x5e, 0x32, 0xe0, 0x2a, 0xea, 0x7c, 0xe4, 0xa3, 0x23, 0x43, 0x19,
-	0xa9, 0x49, 0x6d, 0xc5, 0x80, 0x1f, 0x2d, 0x0c, 0x78, 0x7d, 0x49, 0x04, 0x4e, 0x4e, 0x8c, 0xfa,
-	0x70, 0x79, 0xd4, 0xb5, 0x2c, 0x72, 0x68, 0xe2, 0x3a, 0xe6, 0x9e, 0x40, 0x7d, 0xf1, 0xb3, 0xb8,
-	0xd0, 0x65, 0xca, 0x36, 0xcb, 0xf7, 0x29, 0xb4, 0x57, 0xb9, 0x8f, 0x4c, 0x06, 0x6b, 0xdd, 0x47,
-	0x52, 0x58, 0x79, 0x91, 0x23, 0xca, 0xcf, 0x58, 0x01, 0x85, 0xf6, 0x8e, 0xa3, 0x25, 0xa9, 0xdf,
-	0x65, 0x2c, 0xbe, 0xaa, 0x44, 0x62, 0x77, 0xd7, 0x89, 0xf5, 0x8f, 0x23, 0x8b, 0x94, 0xe8, 0x1d,
-	0x47, 0xe5, 0xff, 0x9a, 0x62, 0x45, 0xb4, 0xaa, 0x79, 0xe2, 0xcd, 0x96, 0x65, 0xff, 0x65, 0x56,
-	0x54, 0x12, 0xd3, 0xda, 0x82, 0x56, 0xa1, 0x69, 0x5e, 0xb0, 0x58, 0x9c, 0xb3, 0xc0, 0xbd, 0x78,
-	0x96, 0x27, 0x03, 0x2e, 0x4f, 0x57, 0xbe, 0xa6, 0x6f, 0x5e, 0xb0, 0x90, 0x54, 0x37, 0xd9, 0x76,
-	0xe2, 0xfb, 0xce, 0xb5, 0x5f, 0x11, 0x26, 0xa8, 0x9a, 0x17, 0xac, 0x2d, 0x04, 0xe0, 0xd0, 0xd5,
-	0x4d, 0xb6, 0xe1, 0xc1, 0xa4, 0xca, 0x26, 0xdb, 0x82, 0xa5, 0x92, 0xb7, 0x6e, 0x3f, 0x63, 0x39,
-	0x1e, 0x16, 0xc2, 0xe7, 0xbf, 0xac, 0xac, 0x47, 0xe2, 0xca, 0x7f, 0x49, 0xb1, 0xa2, 0x9c, 0xec,
-	0xcc, 0xd7, 0x35, 0xb6, 0xd5, 0x6b, 0xf4, 0xfb, 0x6e, 0xab, 0x7b, 0x60, 0xb4, 0x5b, 0x75, 0xed,
-	0x82, 0xae, 0xb1, 0x3c, 0x87, 0x74, 0x8c, 0xe7, 0xda, 0xdb, 0x9f, 0xbd, 0x7b, 0xb7, 0xa9, 0x5f,
-	0x91, 0x34, 0x6e, 0xbf, 0x67, 0x39, 0xda, 0xff, 0x78, 0x07, 0x50, 0x9d, 0x31, 0x0e, 0x75, 0x8c,
-	0x6a, 0xdb, 0xd4, 0xfe, 0x27, 0x87, 0x5d, 0x66, 0x45, 0x0e, 0xeb, 0xf6, 0xac, 0x8e, 0xd1, 0xd6,
-	0xfe, 0x22, 0x41, 0xd8, 0x68, 0xf7, 0x7a, 0x75, 0xed, 0x7f, 0x71, 0x98, 0x18, 0xc4, 0x68, 0xb7,
-	0xb5, 0x9f, 0x72, 0xc8, 0x75, 0x76, 0x91, 0x43, 0x6a, 0xbd, 0xae, 0x63, 0xf5, 0xda, 0x6d, 0xd3,
-	0xd2, 0xfe, 0x77, 0x82, 0xbd, 0xdd, 0xab, 0x19, 0x6d, 0xed, 0x67, 0x49, 0xf6, 0xee, 0x0b, 0xed,
-	0x1d, 0x40, 0x2a, 0xff, 0x7e, 0x03, 0xdf, 0x9e, 0xf3, 0x22, 0x64, 0x87, 0xb3, 0x38, 0x6e, 0xd3,
-	0x6c, 0xb7, 0x7b, 0xda, 0x05, 0xf9, 0x6c, 0x5a, 0x56, 0xcf, 0xd2, 0x52, 0xfa, 0x55, 0x76, 0x09,
-	0x9f, 0x6b, 0xcd, 0x9e, 0x6b, 0x99, 0x4f, 0xf7, 0x4d, 0xdb, 0xd1, 0xd2, 0xfa, 0x65, 0xae, 0x82,
-	0x04, 0xf7, 0xdb, 0x2f, 0xb4, 0x4c, 0x4c, 0xfb, 0xbc, 0x6f, 0x5a, 0xad, 0x8e, 0xd9, 0x75, 0x4c,
-	0x4b, 0xcb, 0xea, 0x37, 0xd8, 0x55, 0x0e, 0x6e, 0x98, 0x86, 0xb3, 0x6f, 0x99, 0xb6, 0x14, 0xb3,
-	0xa1, 0x5f, 0x67, 0x97, 0x17, 0x51, 0x20, 0x2a, 0xa7, 0xef, 0xb2, 0xeb, 0x1c, 0xb1, 0x67, 0x3a,
-	0x30, 0xcd, 0x46, 0x6b, 0x4f, 0x72, 0x6d, 0x4a, 0x81, 0x09, 0x24, 0xf0, 0xe5, 0xa5, 0x5e, 0xb6,
-	0x44, 0x69, 0x05, 0x5d, 0x67, 0x3b, 0x1c, 0xd8, 0x37, 0x6a, 0x4f, 0x4c, 0xc7, 0x6d, 0x75, 0x35,
-	0x26, 0x75, 0x6d, 0xb4, 0x7b, 0xcf, 0x5c, 0xcb, 0xec, 0xf4, 0x0e, 0xcc, 0xba, 0x56, 0xd4, 0xaf,
-	0x30, 0x0d, 0x49, 0x7b, 0x96, 0xe3, 0xda, 0x8e, 0xe1, 0xec, 0xdb, 0xda, 0x96, 0x94, 0x4a, 0x02,
-	0x7a, 0xfb, 0x8e, 0xb6, 0xad, 0x5f, 0x62, 0xdb, 0xb1, 0x84, 0x4e, 0xaf, 0xae, 0xed, 0xc8, 0x81,
-	0xf6, 0xac, 0xde, 0x7e, 0x9f, 0xc3, 0x2e, 0x4a, 0x32, 0x2e, 0x11, 0x40, 0x9a, 0x24, 0xe3, 0xee,
-	0xc0, 0x61, 0x97, 0xf4, 0x9b, 0xec, 0x1a, 0x87, 0x75, 0xf6, 0xdb, 0x4e, 0xab, 0x6f, 0x58, 0x8e,
-	0x9c, 0xaf, 0xae, 0x97, 0xd8, 0x95, 0x25, 0x1c, 0x4c, 0xf7, 0xb2, 0xc4, 0x54, 0x0d, 0xcb, 0x6a,
-	0x99, 0x96, 0xe4, 0xb9, 0xa2, 0x5f, 0x63, 0xfa, 0x02, 0x06, 0x38, 0xae, 0xea, 0xf7, 0xd8, 0x6d,
-	0x0e, 0x7f, 0xba, 0x6f, 0xee, 0x9b, 0xab, 0xcc, 0x7b, 0x4d, 0xbf, 0xc3, 0x76, 0xd7, 0x91, 0x80,
-	0x8c, 0xeb, 0xd2, 0x76, 0x56, 0xaf, 0x6d, 0x4a, 0xbe, 0x92, 0xb4, 0x12, 0x81, 0x81, 0xf6, 0x86,
-	0x9c, 0x17, 0x88, 0x31, 0xec, 0x17, 0xdd, 0x9a, 0x64, 0xb8, 0x29, 0xb5, 0x57, 0x71, 0xc0, 0xb5,
-	0x2b, 0x2d, 0x64, 0x0b, 0x8c, 0x76, 0x4b, 0xc2, 0x3a, 0xa6, 0x63, 0x5a, 0xdc, 0x6a, 0xb7, 0x2b,
-	0x35, 0xbc, 0x7e, 0xb2, 0xf0, 0x17, 0x20, 0x88, 0xb4, 0xc9, 0xd7, 0x5a, 0xc4, 0x2a, 0x0e, 0x06,
-	0xb0, 0x03, 0xd3, 0xb2, 0x5b, 0xbd, 0x6e, 0xb5, 0xe5, 0x74, 0x8c, 0xbe, 0x96, 0xaa, 0x78, 0x58,
-	0xc6, 0xd1, 0x91, 0x00, 0x5b, 0x24, 0xe8, 0x07, 0x35, 0xb7, 0x61, 0x19, 0x7b, 0x22, 0x44, 0x2f,
-	0x90, 0x5c, 0x82, 0xd6, 0xad, 0x5e, 0x5f, 0x4b, 0xd1, 0xac, 0x09, 0x66, 0x99, 0x86, 0xdd, 0xd1,
-	0xd2, 0x49, 0xc2, 0x8e, 0x61, 0x3f, 0xd1, 0x32, 0x95, 0xc7, 0x38, 0x0c, 0xbe, 0x42, 0xa1, 0x6a,
-	0x91, 0x9c, 0xa3, 0xa6, 0xe8, 0x49, 0xce, 0x5d, 0x73, 0xeb, 0x66, 0xdf, 0x32, 0x6b, 0x86, 0x63,
-	0xd6, 0x85, 0x84, 0x5f, 0xc3, 0xaf, 0xc5, 0xf1, 0x56, 0x3d, 0xb1, 0xaa, 0x53, 0xdc, 0x61, 0x05,
-	0x04, 0x41, 0x3e, 0xfa, 0x59, 0x2a, 0x7e, 0x86, 0xd4, 0xf1, 0x2e, 0x55, 0xf9, 0x77, 0x54, 0xb0,
-	0x26, 0x1a, 0x28, 0x98, 0xd5, 0x54, 0x0d, 0xe4, 0x8c, 0xc0, 0xb1, 0x21, 0x06, 0x6c, 0x2d, 0x25,
-	0x0d, 0x82, 0x3e, 0x8b, 0xd0, 0xb4, 0x24, 0x95, 0xe1, 0x62, 0x6b, 0x59, 0x49, 0x8a, 0x51, 0x80,
-	0xd0, 0x3c, 0xe9, 0x5b, 0x73, 0x5b, 0x7d, 0xb2, 0xd2, 0x5d, 0x49, 0x88, 0x8e, 0x86, 0x84, 0x8f,
-	0xf5, 0x6b, 0xdc, 0xbb, 0x48, 0x66, 0xb5, 0xdd, 0xab, 0x3d, 0x31, 0xeb, 0xda, 0xdb, 0x74, 0xe5,
-	0x44, 0xf9, 0xeb, 0x03, 0x09, 0xf3, 0xad, 0x50, 0x5e, 0xb0, 0xd7, 0x7b, 0xcf, 0xba, 0x5a, 0x2a,
-	0xa6, 0xeb, 0x42, 0xb2, 0xaa, 0x1d, 0x68, 0x59, 0x91, 0xcc, 0x39, 0xa8, 0xf1, 0xac, 0xae, 0xdd,
-	0xa5, 0x88, 0x41, 0x48, 0x9c, 0x29, 0x1e, 0x57, 0xfe, 0xca, 0xc2, 0xcb, 0x23, 0x61, 0xfa, 0xbe,
-	0xbd, 0x3c, 0xac, 0xed, 0xb6, 0x5b, 0xdd, 0x27, 0x0b, 0xc3, 0xda, 0x72, 0x16, 0x69, 0x4a, 0xaf,
-	0x9c, 0xee, 0xc0, 0xd4, 0xb2, 0x95, 0x3f, 0x4d, 0xe3, 0x27, 0x3a, 0x5c, 0xba, 0x6c, 0x9a, 0x11,
-	0x63, 0x43, 0x19, 0x40, 0x82, 0x3e, 0xf9, 0xb8, 0x53, 0x75, 0x9b, 0xf5, 0x58, 0x3c, 0x81, 0x1a,
-	0x75, 0xe9, 0x77, 0x1c, 0x44, 0x64, 0xd9, 0x45, 0x58, 0xa3, 0xae, 0xe5, 0xc5, 0xec, 0x1b, 0xee,
-	0x27, 0x7b, 0x9c, 0x4a, 0x4b, 0x42, 0x1a, 0x60, 0x0f, 0x45, 0x3c, 0x82, 0x1e, 0xeb, 0xba, 0x00,
-	0x3d, 0x24, 0xd0, 0x5b, 0xf0, 0xff, 0x58, 0x3c, 0x01, 0xd3, 0xfa, 0x25, 0x29, 0xcd, 0x41, 0x10,
-	0x18, 0xbc, 0x88, 0xa0, 0x9e, 0xd3, 0x34, 0x2d, 0xed, 0x6d, 0x3e, 0x26, 0xaa, 0xf5, 0xfa, 0x7d,
-	0x00, 0x69, 0x31, 0x51, 0xa3, 0x55, 0x05, 0xc8, 0xdd, 0x78, 0x48, 0x63, 0xdf, 0xe9, 0x75, 0xcd,
-	0x3d, 0xed, 0xed, 0x63, 0xfd, 0x92, 0xa0, 0xea, 0x1b, 0xfb, 0xb6, 0xa9, 0xbd, 0x7d, 0x9b, 0xd2,
-	0xaf, 0x71, 0x57, 0x12, 0x20, 0xc8, 0x19, 0x1d, 0xed, 0xed, 0xdb, 0x74, 0xa5, 0xae, 0x38, 0x0d,
-	0x5d, 0xfc, 0xdd, 0xe6, 0x51, 0xd1, 0xb7, 0x5c, 0xa3, 0x8e, 0x7b, 0xf8, 0x16, 0x3e, 0xd6, 0xcd,
-	0xb6, 0xe9, 0x98, 0x5a, 0x2a, 0x86, 0x74, 0x7a, 0xf5, 0x56, 0xe3, 0x85, 0x96, 0xae, 0x34, 0xb0,
-	0x8d, 0xb5, 0xf4, 0x47, 0x25, 0xc8, 0x83, 0xeb, 0xe6, 0x01, 0xa4, 0xc8, 0xae, 0x59, 0x73, 0x4c,
-	0x10, 0x89, 0xbb, 0x1a, 0x40, 0xeb, 0x2d, 0x3b, 0x46, 0xa4, 0x2a, 0x9f, 0xa2, 0x2b, 0xc5, 0x7f,
-	0xc8, 0x81, 0x16, 0xa7, 0xc3, 0x83, 0xa7, 0x5b, 0x37, 0x2c, 0x60, 0x47, 0x05, 0x3b, 0x8e, 0xdb,
-	0x7b, 0xde, 0xd1, 0x52, 0x95, 0x2f, 0xe2, 0xbf, 0xd4, 0xc0, 0xff, 0xf4, 0x02, 0xe9, 0xf7, 0xbc,
-	0x53, 0x73, 0xbb, 0xcf, 0x3b, 0xee, 0xc7, 0x72, 0x0e, 0x02, 0xf2, 0x89, 0x96, 0xd2, 0x77, 0x79,
-	0x16, 0x01, 0x48, 0xaf, 0x6f, 0x76, 0x79, 0x24, 0x57, 0x0d, 0xbb, 0x55, 0x03, 0xa3, 0xe8, 0x37,
-	0xb8, 0x7e, 0x80, 0x4c, 0xec, 0xd4, 0xef, 0xde, 0x65, 0x2a, 0xff, 0x20, 0xcf, 0x2e, 0xaf, 0xf8,
-	0xe3, 0x07, 0x14, 0x1c, 0xcf, 0x41, 0xa9, 0x46, 0x55, 0x56, 0x37, 0x17, 0x28, 0xbd, 0xab, 0xf0,
-	0xe6, 0x0b, 0xc4, 0xa5, 0xc8, 0x0c, 0x02, 0xd7, 0x31, 0x1d, 0xa3, 0x6e, 0x38, 0x86, 0x96, 0x5e,
-	0x10, 0x66, 0x3a, 0x4d, 0xb7, 0x6e, 0x3b, 0x5a, 0x66, 0x05, 0xdc, 0xb6, 0x6a, 0x5a, 0x76, 0x41,
-	0x10, 0xc0, 0x9d, 0x17, 0x7d, 0x53, 0x96, 0x0f, 0x02, 0x71, 0xd0, 0x36, 0xba, 0xee, 0x41, 0xab,
-	0xae, 0xe5, 0x56, 0x21, 0xfa, 0xb5, 0xbe, 0xb6, 0xb9, 0x38, 0x8f, 0xbe, 0x5b, 0xb7, 0x6b, 0x7d,
-	0x2d, 0x4f, 0x5b, 0x9a, 0x02, 0x37, 0x6b, 0x5d, 0xad, 0xb0, 0x20, 0xa7, 0xd5, 0x77, 0xfb, 0x56,
-	0xcf, 0xe9, 0x69, 0x6c, 0x09, 0x71, 0xf0, 0x90, 0xeb, 0x5a, 0x5c, 0x85, 0x80, 0xc9, 0x6d, 0x2d,
-	0x8c, 0xec, 0xd4, 0xfa, 0x9c, 0x61, 0x7b, 0x05, 0x1c, 0xe8, 0x77, 0x16, 0xe0, 0xfb, 0x75, 0xa4,
-	0xbf, 0xb8, 0x02, 0x0e, 0xf4, 0xda, 0xc2, 0xc0, 0x76, 0xcd, 0x41, 0x86, 0x4b, 0xab, 0x10, 0x75,
-	0x5e, 0x56, 0x2c, 0xac, 0x5d, 0xad, 0x03, 0xca, 0x72, 0xcb, 0x5e, 0x5e, 0x8d, 0xab, 0xf5, 0xea,
-	0xa6, 0x76, 0x65, 0xc1, 0x56, 0x86, 0xd5, 0x77, 0x7b, 0x7d, 0xed, 0xea, 0x82, 0x62, 0x00, 0xb6,
-	0xfb, 0x86, 0x76, 0x6d, 0x05, 0xdc, 0xe9, 0x1b, 0xda, 0xf5, 0x55, 0xf4, 0x4d, 0x43, 0x2b, 0xad,
-	0xa2, 0x6f, 0x1a, 0xda, 0x8d, 0x65, 0xcb, 0x3e, 0xe2, 0x13, 0xbc, 0xb9, 0x0a, 0x01, 0x13, 0xdc,
-	0x5d, 0x9c, 0x04, 0x20, 0x1a, 0x6d, 0xa3, 0x6a, 0xb6, 0xb5, 0x5b, 0xab, 0x26, 0xf8, 0x08, 0x27,
-	0x7f, 0x7b, 0x35, 0x8e, 0x4f, 0xfe, 0x3d, 0xfd, 0x36, 0xbb, 0xb1, 0x28, 0xb3, 0x5b, 0x77, 0x1d,
-	0xc3, 0xda, 0x33, 0x1d, 0xed, 0xce, 0xaa, 0x21, 0xbb, 0x75, 0xd7, 0x6e, 0xb7, 0xb5, 0xbb, 0x6b,
-	0x70, 0x4e, 0xbb, 0xad, 0xdd, 0xa3, 0x5d, 0x5f, 0xc6, 0x4a, 0xbf, 0x6d, 0xbb, 0xa8, 0x69, 0x79,
-	0xc1, 0x1e, 0x1c, 0xe5, 0xd4, 0xb4, 0xaf, 0x2d, 0x86, 0x17, 0xc0, 0xab, 0x3d, 0x5b, 0x7b, 0x7f,
-	0x01, 0xd1, 0xaf, 0x56, 0xdd, 0x96, 0xdd, 0xaa, 0x6b, 0x1f, 0x50, 0x09, 0x24, 0x5d, 0x6d, 0xbf,
-	0xdb, 0x35, 0xdb, 0x6e, 0xab, 0xae, 0x7d, 0x7d, 0x95, 0x6a, 0xe6, 0x73, 0xa7, 0x59, 0xb7, 0xb4,
-	0x6f, 0x54, 0x3e, 0xc5, 0x53, 0x10, 0xff, 0x54, 0x7f, 0x3c, 0xd2, 0x2f, 0xf2, 0xe4, 0x7b, 0xd0,
-	0xaa, 0xbb, 0xdd, 0x5e, 0xd7, 0xe4, 0x5b, 0xdf, 0x0e, 0x01, 0xfa, 0x96, 0x69, 0x9b, 0x5d, 0x47,
-	0x7b, 0x7b, 0xb7, 0xf2, 0x1f, 0x52, 0xd8, 0x08, 0x1d, 0xcf, 0x4f, 0x1e, 0xd1, 0xa7, 0xe5, 0xe2,
-	0x3a, 0x2f, 0x50, 0xb7, 0xcc, 0xe6, 0xd2, 0xde, 0x06, 0x30, 0x10, 0xf9, 0x1c, 0x72, 0x07, 0xee,
-	0x93, 0x00, 0x32, 0xed, 0xbe, 0x96, 0xa6, 0x51, 0xe1, 0xd9, 0xd8, 0x77, 0x9a, 0x5a, 0x56, 0x01,
-	0xd4, 0xa1, 0x98, 0xcc, 0x2b, 0x00, 0x28, 0xba, 0x34, 0x4d, 0x91, 0x6a, 0xf5, 0xf6, 0x21, 0xbf,
-	0xdd, 0x55, 0xa4, 0x36, 0x7b, 0x7d, 0xed, 0x31, 0xed, 0x40, 0xf0, 0xbc, 0xdf, 0xb5, 0xcc, 0x3e,
-	0x6c, 0x67, 0x2a, 0xc8, 0x36, 0x9f, 0x42, 0xe1, 0xf1, 0xd3, 0x74, 0xe2, 0xdb, 0x5e, 0xfa, 0xfb,
-	0x65, 0x40, 0x66, 0xf0, 0xb3, 0x40, 0x7f, 0x1f, 0x32, 0x21, 0x2e, 0x93, 0x01, 0xc5, 0x72, 0xff,
-	0x85, 0xeb, 0x38, 0x6d, 0x7e, 0x4c, 0x28, 0x52, 0xb4, 0xa8, 0xf0, 0x56, 0x57, 0xa6, 0x03, 0x03,
-	0x4b, 0x5c, 0x5c, 0x54, 0xa7, 0x2d, 0xc3, 0xdb, 0x70, 0xdc, 0xba, 0x59, 0x8b, 0xe1, 0x1a, 0x15,
-	0x18, 0x86, 0xe3, 0xf6, 0xf7, 0xed, 0x26, 0xcf, 0x68, 0xda, 0x25, 0x32, 0x26, 0x00, 0x7b, 0x7d,
-	0x84, 0xe9, 0x0b, 0x84, 0x20, 0x41, 0xbb, 0x9c, 0x24, 0xe4, 0xb0, 0x2b, 0x31, 0x21, 0x68, 0xc0,
-	0x4b, 0x30, 0xed, 0x2a, 0x59, 0xd1, 0xa0, 0x23, 0x8c, 0x76, 0x8d, 0x76, 0x38, 0xa2, 0xea, 0x3e,
-	0xe3, 0xda, 0x5c, 0x8f, 0xa1, 0xa0, 0x25, 0x41, 0x4b, 0x49, 0x89, 0x8d, 0x96, 0xd9, 0xae, 0x6b,
-	0x37, 0x94, 0xa1, 0x41, 0x9f, 0x7e, 0xb5, 0xaa, 0xdd, 0xa4, 0xa5, 0x21, 0x75, 0x00, 0xb4, 0xab,
-	0x97, 0xc4, 0xbc, 0x97, 0xb6, 0xa4, 0x03, 0xbc, 0xf0, 0xa3, 0x34, 0x6a, 0xe9, 0x9b, 0x6d, 0x51,
-	0x65, 0x77, 0xda, 0x89, 0x23, 0x39, 0x23, 0x18, 0x14, 0xc1, 0xff, 0xed, 0x5d, 0x86, 0x4a, 0x03,
-	0x80, 0x74, 0x7b, 0x6e, 0x75, 0xbf, 0xd1, 0x20, 0xb9, 0xff, 0x59, 0xb8, 0xa8, 0xf2, 0x5d, 0x26,
-	0x5f, 0x5b, 0x72, 0x1c, 0xb5, 0xb2, 0xc6, 0xf9, 0xb6, 0x1c, 0x77, 0xaf, 0xe7, 0xf4, 0xe8, 0x18,
-	0x9f, 0xa2, 0x78, 0x6a, 0x39, 0xee, 0x33, 0xab, 0xe5, 0x98, 0xea, 0x0e, 0x87, 0x21, 0x28, 0x31,
-	0x46, 0xcd, 0x69, 0xf5, 0xba, 0xb6, 0x96, 0x89, 0x11, 0x46, 0xbf, 0xdf, 0x7e, 0x21, 0x11, 0xd9,
-	0x18, 0x51, 0x6b, 0x9b, 0x86, 0x25, 0x11, 0x1b, 0xc2, 0xaf, 0xe9, 0xdc, 0xa3, 0xe5, 0xc8, 0x52,
-	0xad, 0x15, 0x96, 0xfa, 0xeb, 0x38, 0xa1, 0xc5, 0xef, 0x31, 0xa9, 0xa0, 0x68, 0xd4, 0x12, 0x15,
-	0x4f, 0xa3, 0x26, 0xea, 0x1b, 0xb1, 0x53, 0x4b, 0x88, 0x6b, 0x3b, 0x56, 0xab, 0x06, 0xc7, 0x7c,
-	0x49, 0x4a, 0xc5, 0x51, 0x26, 0x26, 0x45, 0x88, 0x20, 0xcd, 0x56, 0xfe, 0x29, 0xbd, 0xff, 0x95,
-	0xa3, 0x63, 0xbc, 0xa3, 0x31, 0x1b, 0x6a, 0x29, 0x4b, 0x22, 0x1a, 0xae, 0x6d, 0x76, 0xeb, 0xf2,
-	0x00, 0x1e, 0xab, 0xd1, 0x70, 0x6b, 0x4d, 0xb3, 0xf6, 0xc4, 0xed, 0x1d, 0x98, 0x56, 0xdb, 0xe8,
-	0xcb, 0x82, 0xa1, 0xd1, 0x70, 0x21, 0xc1, 0x40, 0x24, 0xed, 0x77, 0x9d, 0xd8, 0x68, 0x8d, 0x06,
-	0x2f, 0xd9, 0x9f, 0x48, 0x44, 0x3e, 0x81, 0xa8, 0xbe, 0x90, 0x08, 0xad, 0x62, 0xe3, 0x11, 0x0a,
-	0xbf, 0x9c, 0xc7, 0xd9, 0xed, 0x2d, 0x35, 0x74, 0xf6, 0x94, 0x86, 0x8e, 0x80, 0xc4, 0xdd, 0x17,
-	0x09, 0x91, 0x0d, 0x95, 0xcf, 0xb1, 0x3c, 0x5c, 0xfa, 0xc2, 0x91, 0x0c, 0xbf, 0x97, 0x34, 0xfc,
-	0x9e, 0x62, 0x78, 0x09, 0x21, 0xfb, 0xa6, 0x2b, 0xb6, 0x7a, 0x45, 0x86, 0xbb, 0x23, 0x09, 0xc1,
-	0x53, 0x9c, 0x14, 0x02, 0x41, 0xd6, 0x36, 0x6b, 0x90, 0x2b, 0x31, 0x0c, 0xf6, 0xc0, 0x5f, 0xeb,
-	0x2d, 0xcb, 0xe4, 0x0b, 0xb7, 0x85, 0x4a, 0x3a, 0x6e, 0xa3, 0xa1, 0x65, 0x2a, 0x7d, 0x74, 0x8c,
-	0xc5, 0xef, 0x00, 0x69, 0x71, 0x2c, 0xb0, 0x52, 0xc7, 0x70, 0x6a, 0x4d, 0xed, 0x02, 0xb9, 0x9b,
-	0x70, 0x40, 0x79, 0xf0, 0xb3, 0x84, 0x91, 0x78, 0xa8, 0xa7, 0x2b, 0x7f, 0x2f, 0x85, 0x6f, 0xa8,
-	0x56, 0x7c, 0x61, 0x47, 0xab, 0x65, 0x59, 0x6e, 0xab, 0xde, 0x36, 0x5d, 0xa7, 0xd5, 0x31, 0x7b,
-	0x4a, 0x86, 0xb4, 0x2c, 0xb7, 0x69, 0x58, 0x75, 0x09, 0x17, 0x46, 0xb0, 0x64, 0x05, 0x9e, 0x8e,
-	0x29, 0xf1, 0x08, 0x29, 0x9d, 0x4f, 0xc2, 0xb1, 0x07, 0x40, 0xf0, 0x6c, 0x65, 0x46, 0x7f, 0x46,
-	0x8d, 0x5f, 0x2a, 0xa0, 0xf2, 0xd9, 0xfd, 0xa1, 0x69, 0xf5, 0xe4, 0x92, 0x76, 0x70, 0x49, 0xdf,
-	0xfe, 0xf4, 0xdd, 0xa6, 0x7e, 0x95, 0xcf, 0xba, 0xe3, 0xda, 0xed, 0xde, 0xb3, 0xbe, 0xe1, 0x34,
-	0xa9, 0x79, 0x86, 0x5d, 0xb5, 0x8e, 0xda, 0x55, 0x53, 0x3b, 0x68, 0x1d, 0x3c, 0x45, 0xf3, 0x05,
-	0x9f, 0x2e, 0x7d, 0xc3, 0xa5, 0x16, 0xf3, 0x55, 0x35, 0x73, 0xa0, 0x3d, 0x01, 0x46, 0xfd, 0x02,
-	0x9c, 0x03, 0x07, 0xd8, 0x35, 0x38, 0x0b, 0x77, 0x0c, 0xeb, 0x89, 0x26, 0x8a, 0x72, 0x80, 0x2f,
-	0xc5, 0xf5, 0xe7, 0xea, 0x07, 0x79, 0xcb, 0xfe, 0xd5, 0x49, 0xfa, 0x57, 0x67, 0xc9, 0xbf, 0x3a,
-	0x8a, 0x7f, 0x1d, 0xaa, 0xb7, 0x1e, 0xd4, 0x10, 0xed, 0x34, 0x12, 0x9d, 0x04, 0x86, 0xa0, 0x27,
-	0xd5, 0x3e, 0x9c, 0xfe, 0x69, 0x16, 0x0d, 0x88, 0xb2, 0xbe, 0x2d, 0xf7, 0xe3, 0x4e, 0xc3, 0xad,
-	0xee, 0x5b, 0xb6, 0x23, 0xf7, 0xe3, 0x4e, 0x43, 0x9c, 0xf7, 0x2b, 0xff, 0x8c, 0x2e, 0x5d, 0x62,
-	0xbf, 0x97, 0xdb, 0x07, 0xa7, 0x6e, 0x52, 0xb3, 0xd1, 0x6d, 0x18, 0xad, 0x36, 0x3f, 0x2f, 0xe1,
-	0x16, 0x69, 0x3a, 0x6e, 0xd5, 0xa8, 0xcb, 0xf6, 0x90, 0xf0, 0x3c, 0x02, 0x93, 0x3f, 0xa6, 0xa9,
-	0x52, 0x22, 0x68, 0xab, 0x6b, 0x3b, 0xd6, 0x3e, 0xa2, 0x32, 0xb4, 0xff, 0x10, 0x0a, 0x1d, 0x3a,
-	0x1b, 0xd3, 0x8b, 0x3e, 0x9d, 0x18, 0x77, 0x83, 0xaa, 0x1e, 0x53, 0xe9, 0xd7, 0x09, 0x5c, 0x2e,
-	0x66, 0x13, 0x7d, 0x3b, 0x81, 0xda, 0x8c, 0xd9, 0x64, 0xff, 0x4e, 0xe0, 0xf2, 0x31, 0x1b, 0xf6,
-	0x34, 0x7a, 0x7d, 0x81, 0x2a, 0xe8, 0xef, 0xb1, 0x9b, 0x88, 0xb2, 0x9f, 0xb5, 0x9c, 0x5a, 0x53,
-	0x34, 0xd5, 0x08, 0xcf, 0xa8, 0xb2, 0x34, 0x93, 0x6d, 0x35, 0x81, 0x2e, 0xc6, 0xa3, 0xca, 0xfe,
-	0x97, 0xc0, 0x6d, 0x51, 0xc7, 0x4e, 0x6a, 0x24, 0xbb, 0xa9, 0x44, 0xb0, 0x4d, 0x7b, 0x86, 0xb9,
-	0xc2, 0xb7, 0xaa, 0xea, 0x5f, 0x5d, 0x7d, 0x35, 0x18, 0x4f, 0xf8, 0xe5, 0x5b, 0xfe, 0x37, 0xc6,
-	0xc0, 0x1f, 0x9b, 0x8d, 0x9a, 0xdb, 0xea, 0xd6, 0x7a, 0x9d, 0xbe, 0xe1, 0xb4, 0x60, 0xd7, 0x13,
-	0x5e, 0x06, 0x08, 0xb3, 0x6f, 0x5a, 0x70, 0x42, 0xfd, 0xf3, 0x34, 0xe6, 0x97, 0x97, 0x83, 0x91,
-	0x78, 0xef, 0x8a, 0x32, 0x70, 0xc1, 0xab, 0x56, 0x8d, 0xaf, 0x08, 0xf5, 0xdd, 0x64, 0xb7, 0x44,
-	0xc0, 0x79, 0xd5, 0x2d, 0x76, 0x53, 0x01, 0x94, 0xbd, 0x4e, 0x2d, 0x4d, 0xcd, 0x60, 0x81, 0x49,
-	0x4c, 0x41, 0x6c, 0x48, 0x0a, 0x12, 0xe5, 0x89, 0x0e, 0x0f, 0x20, 0x50, 0xcf, 0x0d, 0x8a, 0x4f,
-	0x41, 0xda, 0x36, 0xbb, 0xf2, 0xa4, 0xc8, 0x61, 0xbc, 0x34, 0x70, 0xcd, 0x4e, 0xdf, 0x79, 0x21,
-	0x9b, 0xcc, 0x0a, 0x62, 0xbf, 0xfb, 0xa4, 0xdb, 0x7b, 0xd6, 0x95, 0xbb, 0x8b, 0x54, 0x9f, 0xdb,
-	0xbc, 0x05, 0x4b, 0x1c, 0xcf, 0xab, 0x65, 0xbb, 0x76, 0xdb, 0x38, 0x30, 0x35, 0xb6, 0x30, 0x59,
-	0x7e, 0x36, 0x16, 0x55, 0xa1, 0x04, 0xf2, 0x76, 0x93, 0xb6, 0xa5, 0xbf, 0xcf, 0xee, 0x12, 0x38,
-	0xee, 0xf5, 0xd2, 0xf0, 0xb0, 0x1b, 0x82, 0x0b, 0x6b, 0xdb, 0x95, 0xdf, 0xcf, 0x60, 0xfe, 0x01,
-	0x7b, 0x53, 0x51, 0xca, 0xcd, 0x4d, 0x23, 0x19, 0x8a, 0x59, 0x45, 0xcf, 0x52, 0x00, 0x61, 0xd2,
-	0x29, 0x61, 0x50, 0x63, 0x85, 0x41, 0x45, 0xed, 0xa2, 0x20, 0x51, 0x52, 0x66, 0x01, 0xd1, 0xdb,
-	0xc7, 0xd8, 0x90, 0xdb, 0xb0, 0x40, 0x18, 0xd6, 0xde, 0x3e, 0x08, 0xd3, 0x36, 0xc4, 0x12, 0x18,
-	0x62, 0x09, 0x72, 0x8a, 0x8a, 0x4e, 0x0f, 0x36, 0x9d, 0x2e, 0x98, 0x1a, 0x03, 0x5d, 0xf0, 0x63,
-	0x29, 0x9a, 0x17, 0xfe, 0xa0, 0x0c, 0x87, 0x35, 0x69, 0x81, 0x22, 0x05, 0x30, 0x3c, 0xc8, 0xb9,
-	0x83, 0x76, 0xed, 0x96, 0xed, 0xc0, 0xa8, 0x4c, 0xbf, 0xc5, 0x4a, 0x84, 0xde, 0xef, 0xda, 0xfb,
-	0x7d, 0x50, 0xd2, 0xac, 0xbb, 0x3d, 0xab, 0x6e, 0x5a, 0x5a, 0x71, 0xc1, 0x1e, 0x8e, 0xb1, 0xa7,
-	0x6d, 0x2d, 0x4c, 0x00, 0x4a, 0x0c, 0x3e, 0x65, 0x71, 0x38, 0x57, 0x11, 0x60, 0xc0, 0x9d, 0x05,
-	0x03, 0xf2, 0x2e, 0xb5, 0x98, 0xf5, 0xc5, 0xca, 0x5f, 0xa4, 0x58, 0x49, 0x2c, 0x8f, 0x5a, 0x5c,
-	0x2a, 0x61, 0x55, 0x6d, 0xd5, 0x84, 0x3f, 0xf1, 0x1c, 0x26, 0x93, 0x20, 0x22, 0xec, 0xfd, 0x3e,
-	0x82, 0x53, 0x0a, 0x7d, 0xc2, 0xd7, 0x44, 0x1e, 0x8c, 0xe9, 0x65, 0xf5, 0x99, 0xa1, 0x4c, 0xb3,
-	0x8c, 0xc2, 0x3e, 0x72, 0x56, 0x68, 0xdf, 0x5a, 0xb1, 0xfc, 0x1b, 0x0b, 0x03, 0xca, 0xe5, 0xcf,
-	0x09, 0xc3, 0xb5, 0x62, 0x47, 0xda, 0x14, 0x0b, 0xdc, 0x12, 0x0b, 0x9c, 0xaf, 0xfc, 0x73, 0xfa,
-	0x9c, 0x02, 0x26, 0x8f, 0x7d, 0x2e, 0xd5, 0x35, 0x3b, 0xab, 0x5c, 0xb3, 0xa3, 0xba, 0x66, 0x12,
-	0x06, 0xcb, 0x23, 0xe3, 0x9f, 0x60, 0xf5, 0x36, 0x6c, 0x77, 0x16, 0x35, 0xc5, 0x17, 0x90, 0xdd,
-	0x67, 0x0a, 0x32, 0x2b, 0x7c, 0x88, 0x90, 0xcf, 0x5a, 0xed, 0x7a, 0xcd, 0xb0, 0xea, 0x50, 0x56,
-	0x93, 0xcf, 0x11, 0x06, 0x0f, 0x2b, 0xb9, 0x05, 0xe8, 0x81, 0xd1, 0xde, 0x37, 0xb5, 0xcd, 0x05,
-	0xe5, 0xb9, 0x68, 0xd1, 0x31, 0x12, 0xc0, 0xbe, 0x65, 0x5a, 0xe6, 0x53, 0xad, 0xa0, 0x48, 0xa8,
-	0xef, 0xf7, 0x49, 0x2e, 0x13, 0x76, 0xea, 0x08, 0x3b, 0x15, 0x2b, 0x7f, 0x44, 0x4e, 0x12, 0x97,
-	0xcb, 0x4a, 0xee, 0xc5, 0x01, 0x1b, 0x9d, 0x86, 0xf4, 0x12, 0x59, 0x3e, 0x71, 0x20, 0xa5, 0xf9,
-	0xfd, 0x76, 0x5b, 0xe6, 0x4d, 0x0e, 0x5f, 0x70, 0x11, 0x45, 0x8c, 0xa8, 0xa5, 0x33, 0xa2, 0x20,
-	0xef, 0xc8, 0xfc, 0x2d, 0xcb, 0x68, 0x29, 0x81, 0x2a, 0xb3, 0x8d, 0x45, 0x44, 0xad, 0xd7, 0xe9,
-	0x18, 0x5d, 0xb0, 0x13, 0x4e, 0x5e, 0x22, 0x1a, 0x6d, 0x63, 0xcf, 0xd6, 0x36, 0x2b, 0x7f, 0x90,
-	0xc1, 0xef, 0xf1, 0xe2, 0x4a, 0x58, 0x9d, 0x15, 0x2a, 0xba, 0x07, 0x4c, 0xb8, 0xe1, 0x9a, 0xcf,
-	0x5b, 0xb6, 0x63, 0xcb, 0x77, 0x1e, 0x1c, 0x23, 0xca, 0x4c, 0x8c, 0xf5, 0x14, 0xf9, 0x32, 0x47,
-	0x3d, 0x33, 0x5b, 0x7b, 0x4d, 0x47, 0x0d, 0x6a, 0x19, 0x06, 0x1c, 0x0f, 0x29, 0xa2, 0xd7, 0x40,
-	0x4e, 0x38, 0x6b, 0xe1, 0x8e, 0xa9, 0xa2, 0xaa, 0xfb, 0x90, 0x67, 0xe1, 0xe4, 0x70, 0x97, 0xdd,
-	0x12, 0xb8, 0x5a, 0xd3, 0x68, 0x75, 0x5b, 0xdd, 0xbd, 0x84, 0xe0, 0x0d, 0x4a, 0x32, 0x38, 0x30,
-	0xcf, 0x32, 0x2a, 0x3a, 0x27, 0xca, 0x70, 0x40, 0xb7, 0x7b, 0xbd, 0xbe, 0xdc, 0x30, 0xf6, 0x94,
-	0x45, 0xa3, 0x49, 0xe4, 0x55, 0x14, 0x1f, 0xcd, 0xac, 0xcb, 0x5c, 0x86, 0xfe, 0xb2, 0x27, 0x6d,
-	0x0f, 0x91, 0x21, 0xda, 0x8b, 0x7b, 0x8b, 0x86, 0x2f, 0x92, 0x13, 0x48, 0x04, 0x4e, 0x48, 0xdb,
-	0xa2, 0x05, 0x91, 0x70, 0xae, 0xb1, 0x7c, 0x47, 0xb9, 0x17, 0x2f, 0xf6, 0x4e, 0xe5, 0x77, 0xc9,
-	0xf1, 0xc4, 0xdf, 0x3f, 0x4e, 0x2c, 0x11, 0x6a, 0xd3, 0x17, 0x62, 0xa8, 0xc9, 0x8b, 0xda, 0x48,
-	0x68, 0x13, 0x63, 0x4c, 0xd6, 0xb2, 0xfd, 0x58, 0x4d, 0xfe, 0xc2, 0x55, 0x2c, 0x8a, 0x84, 0x1b,
-	0xf5, 0x03, 0xd3, 0x72, 0x5a, 0xb6, 0x29, 0xdd, 0xaf, 0xaf, 0xb8, 0x5f, 0xe5, 0xaf, 0xa2, 0xd3,
-	0xc8, 0xbf, 0x3a, 0x9e, 0xd0, 0x88, 0xde, 0x35, 0x26, 0xbc, 0x5b, 0x06, 0x83, 0xb3, 0x30, 0xb2,
-	0x78, 0x27, 0xe2, 0xc4, 0xe2, 0xd3, 0x95, 0x1f, 0xe2, 0x7c, 0xf1, 0x4e, 0x9b, 0x3f, 0x5f, 0x31,
-	0xdf, 0xa7, 0xbd, 0xe4, 0x7c, 0x71, 0x4c, 0x09, 0xc5, 0x0d, 0x49, 0xc8, 0xe6, 0x60, 0x21, 0xfb,
-	0xaf, 0xb1, 0xdb, 0x4b, 0x7f, 0x7f, 0x7d, 0x85, 0xfa, 0x76, 0x2d, 0x11, 0x28, 0xa2, 0x00, 0x92,
-	0x60, 0x4c, 0x7d, 0x28, 0x9f, 0x03, 0x63, 0xdd, 0x6f, 0x2d, 0xde, 0x68, 0x4b, 0x88, 0xa7, 0x03,
-	0x9c, 0xd5, 0xa8, 0x41, 0xdd, 0xcd, 0x2d, 0xa3, 0x80, 0xb8, 0xc7, 0xc6, 0x47, 0x38, 0x8b, 0x46,
-	0x83, 0xfa, 0x52, 0x4b, 0x57, 0xfe, 0x30, 0x8d, 0x76, 0x8f, 0x8f, 0x15, 0xcb, 0x29, 0xa8, 0x93,
-	0x4c, 0x41, 0x18, 0xc1, 0x1c, 0x88, 0x55, 0x28, 0x45, 0x70, 0x8a, 0x56, 0xbc, 0xa3, 0x46, 0x30,
-	0xf6, 0x2b, 0xd2, 0x2a, 0x4a, 0xc4, 0x05, 0xa2, 0x44, 0x45, 0xd1, 0x59, 0x74, 0xf3, 0x2c, 0x99,
-	0xad, 0x93, 0xcc, 0x2f, 0x22, 0x69, 0x4b, 0xb0, 0x65, 0x38, 0xa6, 0x4c, 0x46, 0x9d, 0x38, 0x26,
-	0x2c, 0x7e, 0x4b, 0x60, 0x81, 0xb8, 0x0a, 0x92, 0xf3, 0xb4, 0x5d, 0x24, 0xa0, 0x6e, 0xdd, 0x74,
-	0x8c, 0x56, 0x5b, 0x2b, 0xa8, 0xaa, 0x52, 0xc6, 0xe0, 0x9a, 0xda, 0x1a, 0x53, 0xa7, 0x2e, 0x92,
-	0x89, 0xd1, 0xad, 0xdb, 0x5a, 0xb1, 0xf2, 0x2f, 0x52, 0x2b, 0xbe, 0xb0, 0x0c, 0x57, 0x39, 0x71,
-	0x63, 0xc1, 0x89, 0xe9, 0xfd, 0xb7, 0x00, 0xcb, 0x1d, 0x5c, 0xac, 0x58, 0xcc, 0x00, 0x59, 0x41,
-	0x5e, 0xba, 0x68, 0x28, 0x5e, 0x93, 0x59, 0x14, 0x22, 0xeb, 0x90, 0xac, 0x88, 0x85, 0x86, 0xf4,
-	0xa7, 0x8d, 0xca, 0x7f, 0xa2, 0xdd, 0x39, 0xf9, 0xf7, 0x17, 0xc4, 0x71, 0x0f, 0x4e, 0xda, 0x76,
-	0x2d, 0x3e, 0xfe, 0xf1, 0x7b, 0x28, 0xcf, 0xe4, 0x3b, 0xee, 0x4e, 0xdf, 0x35, 0xf6, 0xf6, 0x2c,
-	0x73, 0xcf, 0xe0, 0x87, 0x74, 0x3a, 0xf1, 0x89, 0x5b, 0x2d, 0x19, 0x61, 0xf0, 0x7e, 0xf2, 0x6d,
-	0xb0, 0x24, 0xc3, 0x30, 0xda, 0x88, 0x01, 0x98, 0x02, 0x73, 0x31, 0x9f, 0x38, 0xed, 0xdb, 0x35,
-	0x6d, 0x53, 0x18, 0x5c, 0x40, 0xc5, 0x99, 0x46, 0x76, 0x7a, 0x3b, 0x7d, 0x72, 0xa3, 0x82, 0x38,
-	0x52, 0x13, 0x40, 0x24, 0x03, 0x16, 0x8b, 0x40, 0xb8, 0x14, 0x51, 0x8c, 0x31, 0xc9, 0x03, 0x93,
-	0xbc, 0xea, 0x21, 0x26, 0xc1, 0x75, 0x11, 0xc7, 0xa7, 0x4e, 0x7f, 0xd5, 0xd1, 0x7c, 0x77, 0xe5,
-	0xdf, 0xdd, 0x70, 0xc5, 0xdf, 0x10, 0x40, 0xc6, 0x06, 0x9c, 0xe7, 0x96, 0x5e, 0x17, 0x0b, 0x78,
-	0xa7, 0x67, 0x99, 0x5a, 0xaa, 0xd2, 0xa6, 0x78, 0x4c, 0xfe, 0x2d, 0x0d, 0x92, 0x24, 0x34, 0x6e,
-	0xe0, 0x1d, 0x09, 0x45, 0x16, 0xb9, 0xbf, 0xc4, 0x90, 0xb4, 0x3f, 0xcb, 0xa0, 0x6a, 0x6b, 0xbe,
-	0x32, 0x97, 0x7e, 0xd3, 0x77, 0xd4, 0x53, 0x34, 0x24, 0x27, 0xdc, 0xf9, 0x96, 0x30, 0x6e, 0xa7,
-	0x65, 0xdb, 0xb2, 0x22, 0xe5, 0xe8, 0xae, 0xf9, 0x9c, 0xce, 0x9c, 0xb6, 0x96, 0xa6, 0xba, 0x7b,
-	0x11, 0x81, 0x6c, 0x19, 0x71, 0xaf, 0x01, 0xb0, 0xc9, 0xa6, 0x68, 0x96, 0xf6, 0xf8, 0x65, 0x14,
-	0xb2, 0x6e, 0xa8, 0xac, 0xc9, 0xb6, 0x69, 0x4e, 0x65, 0x4d, 0xa0, 0x90, 0x75, 0x53, 0xc6, 0x40,
-	0xdf, 0xa1, 0x86, 0x40, 0x5e, 0x06, 0x23, 0x8c, 0x26, 0x0b, 0x42, 0x26, 0x2e, 0xaa, 0xc4, 0x4a,
-	0xd8, 0xa6, 0x83, 0xe5, 0x9b, 0x38, 0x5f, 0xaf, 0xc0, 0xe1, 0x30, 0xdb, 0x2a, 0x33, 0xaa, 0x21,
-	0x99, 0x77, 0x54, 0xe6, 0x24, 0x0e, 0x99, 0x2f, 0xea, 0x37, 0xe3, 0x95, 0x48, 0xf8, 0xd7, 0xcf,
-	0xde, 0x65, 0xf4, 0x3b, 0xf1, 0x5a, 0xa8, 0x38, 0x64, 0x05, 0x07, 0xfc, 0x3d, 0xfa, 0xc3, 0x23,
-	0x58, 0x72, 0x25, 0x6e, 0x76, 0x50, 0x5f, 0xb0, 0x51, 0x5b, 0xba, 0x05, 0x03, 0x30, 0x6c, 0x1f,
-	0x52, 0x51, 0xa5, 0xa5, 0x44, 0xb5, 0x14, 0x63, 0xda, 0xad, 0x03, 0xb3, 0x6b, 0xda, 0xf1, 0x35,
-	0x8f, 0x3d, 0xa5, 0x58, 0xd2, 0xb2, 0x0a, 0x83, 0xac, 0xa0, 0x78, 0xdf, 0xd6, 0xd6, 0xf2, 0x95,
-	0x2f, 0xb0, 0x21, 0x10, 0x5f, 0xe4, 0xc7, 0xbb, 0xfb, 0x62, 0x0b, 0x55, 0x1b, 0x64, 0xa8, 0xe5,
-	0x53, 0xc7, 0xed, 0xb4, 0xba, 0x98, 0xd1, 0x53, 0x0a, 0xcc, 0x78, 0x8e, 0xb0, 0x34, 0xc5, 0xe0,
-	0xd3, 0x15, 0x2d, 0x8c, 0x1f, 0xe1, 0x69, 0x78, 0xe1, 0x26, 0x37, 0xf9, 0x69, 0xcd, 0xc2, 0x7e,
-	0x4a, 0xb7, 0x57, 0x6b, 0x1a, 0xdd, 0x3d, 0x53, 0x36, 0xf3, 0x05, 0xc2, 0x7c, 0xba, 0x6f, 0xb4,
-	0xe5, 0x45, 0x37, 0x01, 0xed, 0x18, 0x36, 0xee, 0x5e, 0x49, 0x62, 0x3c, 0xd3, 0x67, 0xaa, 0xfb,
-	0xec, 0x3d, 0x3f, 0x38, 0xe4, 0xd7, 0x08, 0x87, 0x7e, 0x30, 0xfa, 0x08, 0xff, 0xb3, 0x1d, 0x79,
-	0xad, 0xf0, 0x93, 0x4f, 0x7f, 0xf8, 0xe9, 0xe1, 0x38, 0x3a, 0x3a, 0x7e, 0xf9, 0xd1, 0xd0, 0x9f,
-	0xde, 0x17, 0x64, 0xf7, 0x91, 0xec, 0x57, 0xe8, 0xff, 0xe4, 0x39, 0xf9, 0xec, 0xfe, 0xa1, 0xaf,
-	0xfe, 0xcf, 0x3c, 0x2f, 0x73, 0x1c, 0xf3, 0xe9, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xea,
-	0x36, 0xd9, 0xbd, 0x67, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_openflow_13_proto_rawDesc), len(file_voltha_protos_openflow_13_proto_rawDesc)),
+			NumEnums:      53,
+			NumMessages:   99,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_openflow_13_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_openflow_13_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_openflow_13_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_openflow_13_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_openflow_13_proto = out.File
+	file_voltha_protos_openflow_13_proto_goTypes = nil
+	file_voltha_protos_openflow_13_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
index 106ca11..dd16a41 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
@@ -1,33 +1,44 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/openolt.proto
 
 package openolt
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	config "github.com/opencord/voltha-protos/v5/go/ext/config"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	tech_profile "github.com/opencord/voltha-protos/v5/go/tech_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AlarmState int32
 
@@ -36,60 +47,102 @@
 	AlarmState_ON  AlarmState = 1
 )
 
-var AlarmState_name = map[int32]string{
-	0: "OFF",
-	1: "ON",
-}
+// Enum value maps for AlarmState.
+var (
+	AlarmState_name = map[int32]string{
+		0: "OFF",
+		1: "ON",
+	}
+	AlarmState_value = map[string]int32{
+		"OFF": 0,
+		"ON":  1,
+	}
+)
 
-var AlarmState_value = map[string]int32{
-	"OFF": 0,
-	"ON":  1,
+func (x AlarmState) Enum() *AlarmState {
+	p := new(AlarmState)
+	*p = x
+	return p
 }
 
 func (x AlarmState) String() string {
-	return proto.EnumName(AlarmState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AlarmState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[0].Descriptor()
+}
+
+func (AlarmState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[0]
+}
+
+func (x AlarmState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AlarmState.Descriptor instead.
 func (AlarmState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{0}
 }
 
-//* activation fail reason.
+// * 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
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_RANGING                 OnuIndication_ActivationFailReason = 1 //Ranging Failure
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION OnuIndication_ActivationFailReason = 2 //Password authentication
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_LOS                     OnuIndication_ActivationFailReason = 3 //LOS
+	OnuIndication_ONU_ACTIVATION_FAIL_ONU_ALARM                      OnuIndication_ActivationFailReason = 4 // ONU Alarm
+	OnuIndication_ONU_ACTIVATION_FAIL_SWITCH_OVER                    OnuIndication_ActivationFailReason = 5 //protection switch over
 )
 
-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",
-}
+// Enum value maps for OnuIndication_ActivationFailReason.
+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",
+	}
+	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,
+	}
+)
 
-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) Enum() *OnuIndication_ActivationFailReason {
+	p := new(OnuIndication_ActivationFailReason)
+	*p = x
+	return p
 }
 
 func (x OnuIndication_ActivationFailReason) String() string {
-	return proto.EnumName(OnuIndication_ActivationFailReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuIndication_ActivationFailReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[1].Descriptor()
+}
+
+func (OnuIndication_ActivationFailReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[1]
+}
+
+func (x OnuIndication_ActivationFailReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuIndication_ActivationFailReason.Descriptor instead.
 func (OnuIndication_ActivationFailReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{5, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{5, 0}
 }
 
 type IntfOperIndication_PONResourceRanges_Pool_PoolType int32
@@ -101,26 +154,47 @@
 	IntfOperIndication_PONResourceRanges_Pool_FLOW_ID    IntfOperIndication_PONResourceRanges_Pool_PoolType = 3
 )
 
-var IntfOperIndication_PONResourceRanges_Pool_PoolType_name = map[int32]string{
-	0: "ONU_ID",
-	1: "ALLOC_ID",
-	2: "GEMPORT_ID",
-	3: "FLOW_ID",
-}
+// Enum value maps for IntfOperIndication_PONResourceRanges_Pool_PoolType.
+var (
+	IntfOperIndication_PONResourceRanges_Pool_PoolType_name = map[int32]string{
+		0: "ONU_ID",
+		1: "ALLOC_ID",
+		2: "GEMPORT_ID",
+		3: "FLOW_ID",
+	}
+	IntfOperIndication_PONResourceRanges_Pool_PoolType_value = map[string]int32{
+		"ONU_ID":     0,
+		"ALLOC_ID":   1,
+		"GEMPORT_ID": 2,
+		"FLOW_ID":    3,
+	}
+)
 
-var IntfOperIndication_PONResourceRanges_Pool_PoolType_value = map[string]int32{
-	"ONU_ID":     0,
-	"ALLOC_ID":   1,
-	"GEMPORT_ID": 2,
-	"FLOW_ID":    3,
+func (x IntfOperIndication_PONResourceRanges_Pool_PoolType) Enum() *IntfOperIndication_PONResourceRanges_Pool_PoolType {
+	p := new(IntfOperIndication_PONResourceRanges_Pool_PoolType)
+	*p = x
+	return p
 }
 
 func (x IntfOperIndication_PONResourceRanges_Pool_PoolType) String() string {
-	return proto.EnumName(IntfOperIndication_PONResourceRanges_Pool_PoolType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (IntfOperIndication_PONResourceRanges_Pool_PoolType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[2].Descriptor()
+}
+
+func (IntfOperIndication_PONResourceRanges_Pool_PoolType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[2]
+}
+
+func (x IntfOperIndication_PONResourceRanges_Pool_PoolType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use IntfOperIndication_PONResourceRanges_Pool_PoolType.Descriptor instead.
 func (IntfOperIndication_PONResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{8, 0, 0, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{8, 0, 0, 0}
 }
 
 type DeviceInfo_DeviceResourceRanges_Pool_PoolType int32
@@ -132,54 +206,96 @@
 	DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID    DeviceInfo_DeviceResourceRanges_Pool_PoolType = 3
 )
 
-var DeviceInfo_DeviceResourceRanges_Pool_PoolType_name = map[int32]string{
-	0: "ONU_ID",
-	1: "ALLOC_ID",
-	2: "GEMPORT_ID",
-	3: "FLOW_ID",
-}
+// Enum value maps for DeviceInfo_DeviceResourceRanges_Pool_PoolType.
+var (
+	DeviceInfo_DeviceResourceRanges_Pool_PoolType_name = map[int32]string{
+		0: "ONU_ID",
+		1: "ALLOC_ID",
+		2: "GEMPORT_ID",
+		3: "FLOW_ID",
+	}
+	DeviceInfo_DeviceResourceRanges_Pool_PoolType_value = map[string]int32{
+		"ONU_ID":     0,
+		"ALLOC_ID":   1,
+		"GEMPORT_ID": 2,
+		"FLOW_ID":    3,
+	}
+)
 
-var DeviceInfo_DeviceResourceRanges_Pool_PoolType_value = map[string]int32{
-	"ONU_ID":     0,
-	"ALLOC_ID":   1,
-	"GEMPORT_ID": 2,
-	"FLOW_ID":    3,
+func (x DeviceInfo_DeviceResourceRanges_Pool_PoolType) Enum() *DeviceInfo_DeviceResourceRanges_Pool_PoolType {
+	p := new(DeviceInfo_DeviceResourceRanges_Pool_PoolType)
+	*p = x
+	return p
 }
 
 func (x DeviceInfo_DeviceResourceRanges_Pool_PoolType) String() string {
-	return proto.EnumName(DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[3].Descriptor()
+}
+
+func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[3]
+}
+
+func (x DeviceInfo_DeviceResourceRanges_Pool_PoolType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DeviceInfo_DeviceResourceRanges_Pool_PoolType.Descriptor instead.
 func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18, 0, 0, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{18, 0, 0, 0}
 }
 
 type DeviceInfo_DeviceResourceRanges_Pool_SharingType int32
 
 const (
 	DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF           DeviceInfo_DeviceResourceRanges_Pool_SharingType = 0
-	DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH  DeviceInfo_DeviceResourceRanges_Pool_SharingType = 1
-	DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH DeviceInfo_DeviceResourceRanges_Pool_SharingType = 2
+	DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_ALL_TECH  DeviceInfo_DeviceResourceRanges_Pool_SharingType = 1 // Shared across all interfaces in all technologies in all ranges
+	DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH DeviceInfo_DeviceResourceRanges_Pool_SharingType = 2 // Shared across all interfaces of the same technology used in this range
 )
 
-var DeviceInfo_DeviceResourceRanges_Pool_SharingType_name = map[int32]string{
-	0: "DEDICATED_PER_INTF",
-	1: "SHARED_BY_ALL_INTF_ALL_TECH",
-	2: "SHARED_BY_ALL_INTF_SAME_TECH",
-}
+// Enum value maps for DeviceInfo_DeviceResourceRanges_Pool_SharingType.
+var (
+	DeviceInfo_DeviceResourceRanges_Pool_SharingType_name = map[int32]string{
+		0: "DEDICATED_PER_INTF",
+		1: "SHARED_BY_ALL_INTF_ALL_TECH",
+		2: "SHARED_BY_ALL_INTF_SAME_TECH",
+	}
+	DeviceInfo_DeviceResourceRanges_Pool_SharingType_value = map[string]int32{
+		"DEDICATED_PER_INTF":           0,
+		"SHARED_BY_ALL_INTF_ALL_TECH":  1,
+		"SHARED_BY_ALL_INTF_SAME_TECH": 2,
+	}
+)
 
-var DeviceInfo_DeviceResourceRanges_Pool_SharingType_value = map[string]int32{
-	"DEDICATED_PER_INTF":           0,
-	"SHARED_BY_ALL_INTF_ALL_TECH":  1,
-	"SHARED_BY_ALL_INTF_SAME_TECH": 2,
+func (x DeviceInfo_DeviceResourceRanges_Pool_SharingType) Enum() *DeviceInfo_DeviceResourceRanges_Pool_SharingType {
+	p := new(DeviceInfo_DeviceResourceRanges_Pool_SharingType)
+	*p = x
+	return p
 }
 
 func (x DeviceInfo_DeviceResourceRanges_Pool_SharingType) String() string {
-	return proto.EnumName(DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[4].Descriptor()
+}
+
+func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[4]
+}
+
+func (x DeviceInfo_DeviceResourceRanges_Pool_SharingType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DeviceInfo_DeviceResourceRanges_Pool_SharingType.Descriptor instead.
 func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18, 0, 0, 1}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{18, 0, 0, 1}
 }
 
 type GroupMember_InterfaceType int32
@@ -190,24 +306,45 @@
 	GroupMember_EPON_10G_PATH GroupMember_InterfaceType = 2
 )
 
-var GroupMember_InterfaceType_name = map[int32]string{
-	0: "PON",
-	1: "EPON_1G_PATH",
-	2: "EPON_10G_PATH",
-}
+// Enum value maps for GroupMember_InterfaceType.
+var (
+	GroupMember_InterfaceType_name = map[int32]string{
+		0: "PON",
+		1: "EPON_1G_PATH",
+		2: "EPON_10G_PATH",
+	}
+	GroupMember_InterfaceType_value = map[string]int32{
+		"PON":           0,
+		"EPON_1G_PATH":  1,
+		"EPON_10G_PATH": 2,
+	}
+)
 
-var GroupMember_InterfaceType_value = map[string]int32{
-	"PON":           0,
-	"EPON_1G_PATH":  1,
-	"EPON_10G_PATH": 2,
+func (x GroupMember_InterfaceType) Enum() *GroupMember_InterfaceType {
+	p := new(GroupMember_InterfaceType)
+	*p = x
+	return p
 }
 
 func (x GroupMember_InterfaceType) String() string {
-	return proto.EnumName(GroupMember_InterfaceType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GroupMember_InterfaceType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[5].Descriptor()
+}
+
+func (GroupMember_InterfaceType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[5]
+}
+
+func (x GroupMember_InterfaceType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GroupMember_InterfaceType.Descriptor instead.
 func (GroupMember_InterfaceType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{47, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{47, 0}
 }
 
 type Group_GroupMembersCommand int32
@@ -218,24 +355,45 @@
 	Group_SET_MEMBERS    Group_GroupMembersCommand = 2
 )
 
-var Group_GroupMembersCommand_name = map[int32]string{
-	0: "ADD_MEMBERS",
-	1: "REMOVE_MEMBERS",
-	2: "SET_MEMBERS",
-}
+// Enum value maps for Group_GroupMembersCommand.
+var (
+	Group_GroupMembersCommand_name = map[int32]string{
+		0: "ADD_MEMBERS",
+		1: "REMOVE_MEMBERS",
+		2: "SET_MEMBERS",
+	}
+	Group_GroupMembersCommand_value = map[string]int32{
+		"ADD_MEMBERS":    0,
+		"REMOVE_MEMBERS": 1,
+		"SET_MEMBERS":    2,
+	}
+)
 
-var Group_GroupMembersCommand_value = map[string]int32{
-	"ADD_MEMBERS":    0,
-	"REMOVE_MEMBERS": 1,
-	"SET_MEMBERS":    2,
+func (x Group_GroupMembersCommand) Enum() *Group_GroupMembersCommand {
+	p := new(Group_GroupMembersCommand)
+	*p = x
+	return p
 }
 
 func (x Group_GroupMembersCommand) String() string {
-	return proto.EnumName(Group_GroupMembersCommand_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Group_GroupMembersCommand) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[6].Descriptor()
+}
+
+func (Group_GroupMembersCommand) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[6]
+}
+
+func (x Group_GroupMembersCommand) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Group_GroupMembersCommand.Descriptor instead.
 func (Group_GroupMembersCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{48, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{48, 0}
 }
 
 type PonRxPowerData_RssiMeasurementFailReason int32
@@ -246,30 +404,50 @@
 	PonRxPowerData_FAIL_REASON_NO_ACCESS    PonRxPowerData_RssiMeasurementFailReason = 2
 )
 
-var PonRxPowerData_RssiMeasurementFailReason_name = map[int32]string{
-	0: "FAIL_REASON_NONE",
-	1: "FAIL_REASON_NO_DELIMITER",
-	2: "FAIL_REASON_NO_ACCESS",
-}
+// Enum value maps for PonRxPowerData_RssiMeasurementFailReason.
+var (
+	PonRxPowerData_RssiMeasurementFailReason_name = map[int32]string{
+		0: "FAIL_REASON_NONE",
+		1: "FAIL_REASON_NO_DELIMITER",
+		2: "FAIL_REASON_NO_ACCESS",
+	}
+	PonRxPowerData_RssiMeasurementFailReason_value = map[string]int32{
+		"FAIL_REASON_NONE":         0,
+		"FAIL_REASON_NO_DELIMITER": 1,
+		"FAIL_REASON_NO_ACCESS":    2,
+	}
+)
 
-var PonRxPowerData_RssiMeasurementFailReason_value = map[string]int32{
-	"FAIL_REASON_NONE":         0,
-	"FAIL_REASON_NO_DELIMITER": 1,
-	"FAIL_REASON_NO_ACCESS":    2,
+func (x PonRxPowerData_RssiMeasurementFailReason) Enum() *PonRxPowerData_RssiMeasurementFailReason {
+	p := new(PonRxPowerData_RssiMeasurementFailReason)
+	*p = x
+	return p
 }
 
 func (x PonRxPowerData_RssiMeasurementFailReason) String() string {
-	return proto.EnumName(PonRxPowerData_RssiMeasurementFailReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PonRxPowerData_RssiMeasurementFailReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[7].Descriptor()
+}
+
+func (PonRxPowerData_RssiMeasurementFailReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[7]
+}
+
+func (x PonRxPowerData_RssiMeasurementFailReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PonRxPowerData_RssiMeasurementFailReason.Descriptor instead.
 func (PonRxPowerData_RssiMeasurementFailReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{50, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{50, 0}
 }
 
 type OnuInfo_OnuState int32
 
 const (
-	//
 	// There are other states in BAL for ONU, which voltha is not interested as of now.
 	// UNKNOWN is to be filled for the rest of the states other than NOT_CONFIGURED/ACTIVE/INACTIVE/DISABLED
 	OnuInfo_UNKNOWN        OnuInfo_OnuState = 0
@@ -279,28 +457,49 @@
 	OnuInfo_DISABLED       OnuInfo_OnuState = 4
 )
 
-var OnuInfo_OnuState_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "NOT_CONFIGURED",
-	2: "ACTIVE",
-	3: "INACTIVE",
-	4: "DISABLED",
-}
+// Enum value maps for OnuInfo_OnuState.
+var (
+	OnuInfo_OnuState_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "NOT_CONFIGURED",
+		2: "ACTIVE",
+		3: "INACTIVE",
+		4: "DISABLED",
+	}
+	OnuInfo_OnuState_value = map[string]int32{
+		"UNKNOWN":        0,
+		"NOT_CONFIGURED": 1,
+		"ACTIVE":         2,
+		"INACTIVE":       3,
+		"DISABLED":       4,
+	}
+)
 
-var OnuInfo_OnuState_value = map[string]int32{
-	"UNKNOWN":        0,
-	"NOT_CONFIGURED": 1,
-	"ACTIVE":         2,
-	"INACTIVE":       3,
-	"DISABLED":       4,
+func (x OnuInfo_OnuState) Enum() *OnuInfo_OnuState {
+	p := new(OnuInfo_OnuState)
+	*p = x
+	return p
 }
 
 func (x OnuInfo_OnuState) String() string {
-	return proto.EnumName(OnuInfo_OnuState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (OnuInfo_OnuState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[8].Descriptor()
+}
+
+func (OnuInfo_OnuState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[8]
+}
+
+func (x OnuInfo_OnuState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use OnuInfo_OnuState.Descriptor instead.
 func (OnuInfo_OnuState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{52, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{52, 0}
 }
 
 type PonIntfInfo_PonIntfState int32
@@ -313,32 +512,55 @@
 	PonIntfInfo_DISABLED       PonIntfInfo_PonIntfState = 4
 )
 
-var PonIntfInfo_PonIntfState_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "ACTIVE_WORKING",
-	2: "ACTIVE_STANDBY",
-	3: "INACTIVE",
-	4: "DISABLED",
-}
+// Enum value maps for PonIntfInfo_PonIntfState.
+var (
+	PonIntfInfo_PonIntfState_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "ACTIVE_WORKING",
+		2: "ACTIVE_STANDBY",
+		3: "INACTIVE",
+		4: "DISABLED",
+	}
+	PonIntfInfo_PonIntfState_value = map[string]int32{
+		"UNKNOWN":        0,
+		"ACTIVE_WORKING": 1,
+		"ACTIVE_STANDBY": 2,
+		"INACTIVE":       3,
+		"DISABLED":       4,
+	}
+)
 
-var PonIntfInfo_PonIntfState_value = map[string]int32{
-	"UNKNOWN":        0,
-	"ACTIVE_WORKING": 1,
-	"ACTIVE_STANDBY": 2,
-	"INACTIVE":       3,
-	"DISABLED":       4,
+func (x PonIntfInfo_PonIntfState) Enum() *PonIntfInfo_PonIntfState {
+	p := new(PonIntfInfo_PonIntfState)
+	*p = x
+	return p
 }
 
 func (x PonIntfInfo_PonIntfState) String() string {
-	return proto.EnumName(PonIntfInfo_PonIntfState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PonIntfInfo_PonIntfState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_openolt_proto_enumTypes[9].Descriptor()
+}
+
+func (PonIntfInfo_PonIntfState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_openolt_proto_enumTypes[9]
+}
+
+func (x PonIntfInfo_PonIntfState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PonIntfInfo_PonIntfState.Descriptor instead.
 func (PonIntfInfo_PonIntfState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{53, 0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{53, 0}
 }
 
 type Indication struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Data:
+	//
 	//	*Indication_OltInd
 	//	*Indication_IntfInd
 	//	*Indication_IntfOperInd
@@ -351,36 +573,155 @@
 	//	*Indication_AlarmInd
 	//	*Indication_OnuDisabledInd
 	//	*Indication_OnuEnabledInd
-	Data                 isIndication_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Data          isIndication_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Indication) Reset()         { *m = Indication{} }
-func (m *Indication) String() string { return proto.CompactTextString(m) }
-func (*Indication) ProtoMessage()    {}
+func (x *Indication) Reset() {
+	*x = Indication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Indication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Indication) ProtoMessage() {}
+
+func (x *Indication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Indication.ProtoReflect.Descriptor instead.
 func (*Indication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{0}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Indication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Indication.Unmarshal(m, b)
-}
-func (m *Indication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Indication.Marshal(b, m, deterministic)
-}
-func (m *Indication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Indication.Merge(m, src)
-}
-func (m *Indication) XXX_Size() int {
-	return xxx_messageInfo_Indication.Size(m)
-}
-func (m *Indication) XXX_DiscardUnknown() {
-	xxx_messageInfo_Indication.DiscardUnknown(m)
+func (x *Indication) GetData() isIndication_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
 }
 
-var xxx_messageInfo_Indication proto.InternalMessageInfo
+func (x *Indication) GetOltInd() *OltIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OltInd); ok {
+			return x.OltInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetIntfInd() *IntfIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_IntfInd); ok {
+			return x.IntfInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetIntfOperInd() *IntfOperIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_IntfOperInd); ok {
+			return x.IntfOperInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetOnuDiscInd() *OnuDiscIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OnuDiscInd); ok {
+			return x.OnuDiscInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetOnuInd() *OnuIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OnuInd); ok {
+			return x.OnuInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetOmciInd() *OmciIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OmciInd); ok {
+			return x.OmciInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetPktInd() *PacketIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_PktInd); ok {
+			return x.PktInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetPortStats() *common.PortStatistics {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_PortStats); ok {
+			return x.PortStats
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetFlowStats() *FlowStatistics {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_FlowStats); ok {
+			return x.FlowStats
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetAlarmInd() *AlarmIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_AlarmInd); ok {
+			return x.AlarmInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetOnuDisabledInd() *OnuDisabledIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OnuDisabledInd); ok {
+			return x.OnuDisabledInd
+		}
+	}
+	return nil
+}
+
+func (x *Indication) GetOnuEnabledInd() *OnuEnabledIndication {
+	if x != nil {
+		if x, ok := x.Data.(*Indication_OnuEnabledInd); ok {
+			return x.OnuEnabledInd
+		}
+	}
+	return nil
+}
 
 type isIndication_Data interface {
 	isIndication_Data()
@@ -458,117 +799,10 @@
 
 func (*Indication_OnuEnabledInd) isIndication_Data() {}
 
-func (m *Indication) GetData() isIndication_Data {
-	if m != nil {
-		return m.Data
-	}
-	return nil
-}
-
-func (m *Indication) GetOltInd() *OltIndication {
-	if x, ok := m.GetData().(*Indication_OltInd); ok {
-		return x.OltInd
-	}
-	return nil
-}
-
-func (m *Indication) GetIntfInd() *IntfIndication {
-	if x, ok := m.GetData().(*Indication_IntfInd); ok {
-		return x.IntfInd
-	}
-	return nil
-}
-
-func (m *Indication) GetIntfOperInd() *IntfOperIndication {
-	if x, ok := m.GetData().(*Indication_IntfOperInd); ok {
-		return x.IntfOperInd
-	}
-	return nil
-}
-
-func (m *Indication) GetOnuDiscInd() *OnuDiscIndication {
-	if x, ok := m.GetData().(*Indication_OnuDiscInd); ok {
-		return x.OnuDiscInd
-	}
-	return nil
-}
-
-func (m *Indication) GetOnuInd() *OnuIndication {
-	if x, ok := m.GetData().(*Indication_OnuInd); ok {
-		return x.OnuInd
-	}
-	return nil
-}
-
-func (m *Indication) GetOmciInd() *OmciIndication {
-	if x, ok := m.GetData().(*Indication_OmciInd); ok {
-		return x.OmciInd
-	}
-	return nil
-}
-
-func (m *Indication) GetPktInd() *PacketIndication {
-	if x, ok := m.GetData().(*Indication_PktInd); ok {
-		return x.PktInd
-	}
-	return nil
-}
-
-func (m *Indication) GetPortStats() *common.PortStatistics {
-	if x, ok := m.GetData().(*Indication_PortStats); ok {
-		return x.PortStats
-	}
-	return nil
-}
-
-func (m *Indication) GetFlowStats() *FlowStatistics {
-	if x, ok := m.GetData().(*Indication_FlowStats); ok {
-		return x.FlowStats
-	}
-	return nil
-}
-
-func (m *Indication) GetAlarmInd() *AlarmIndication {
-	if x, ok := m.GetData().(*Indication_AlarmInd); ok {
-		return x.AlarmInd
-	}
-	return nil
-}
-
-func (m *Indication) GetOnuDisabledInd() *OnuDisabledIndication {
-	if x, ok := m.GetData().(*Indication_OnuDisabledInd); ok {
-		return x.OnuDisabledInd
-	}
-	return nil
-}
-
-func (m *Indication) GetOnuEnabledInd() *OnuEnabledIndication {
-	if x, ok := m.GetData().(*Indication_OnuEnabledInd); ok {
-		return x.OnuEnabledInd
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Indication) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Indication_OltInd)(nil),
-		(*Indication_IntfInd)(nil),
-		(*Indication_IntfOperInd)(nil),
-		(*Indication_OnuDiscInd)(nil),
-		(*Indication_OnuInd)(nil),
-		(*Indication_OmciInd)(nil),
-		(*Indication_PktInd)(nil),
-		(*Indication_PortStats)(nil),
-		(*Indication_FlowStats)(nil),
-		(*Indication_AlarmInd)(nil),
-		(*Indication_OnuDisabledInd)(nil),
-		(*Indication_OnuEnabledInd)(nil),
-	}
-}
-
 type AlarmIndication struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Types that are valid to be assigned to Data:
+	//
 	//	*AlarmIndication_LosInd
 	//	*AlarmIndication_DyingGaspInd
 	//	*AlarmIndication_OnuAlarmInd
@@ -588,36 +822,218 @@
 	//	*AlarmIndication_OnuPhysicalEquipmentErrorInd
 	//	*AlarmIndication_OnuLossOfAckInd
 	//	*AlarmIndication_OnuDiffReachExceededInd
-	Data                 isAlarmIndication_Data `protobuf_oneof:"data"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Data          isAlarmIndication_Data `protobuf_oneof:"data"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *AlarmIndication) Reset()         { *m = AlarmIndication{} }
-func (m *AlarmIndication) String() string { return proto.CompactTextString(m) }
-func (*AlarmIndication) ProtoMessage()    {}
+func (x *AlarmIndication) Reset() {
+	*x = AlarmIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AlarmIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AlarmIndication) ProtoMessage() {}
+
+func (x *AlarmIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AlarmIndication.ProtoReflect.Descriptor instead.
 func (*AlarmIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{1}
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *AlarmIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AlarmIndication.Unmarshal(m, b)
-}
-func (m *AlarmIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AlarmIndication.Marshal(b, m, deterministic)
-}
-func (m *AlarmIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AlarmIndication.Merge(m, src)
-}
-func (m *AlarmIndication) XXX_Size() int {
-	return xxx_messageInfo_AlarmIndication.Size(m)
-}
-func (m *AlarmIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_AlarmIndication.DiscardUnknown(m)
+func (x *AlarmIndication) GetData() isAlarmIndication_Data {
+	if x != nil {
+		return x.Data
+	}
+	return nil
 }
 
-var xxx_messageInfo_AlarmIndication proto.InternalMessageInfo
+func (x *AlarmIndication) GetLosInd() *LosIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_LosInd); ok {
+			return x.LosInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetDyingGaspInd() *DyingGaspIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_DyingGaspInd); ok {
+			return x.DyingGaspInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuAlarmInd() *OnuAlarmIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuAlarmInd); ok {
+			return x.OnuAlarmInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuStartupFailInd() *OnuStartupFailureIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuStartupFailInd); ok {
+			return x.OnuStartupFailInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuSignalDegradeInd() *OnuSignalDegradeIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuSignalDegradeInd); ok {
+			return x.OnuSignalDegradeInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuDriftOfWindowInd() *OnuDriftOfWindowIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuDriftOfWindowInd); ok {
+			return x.OnuDriftOfWindowInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuLossOmciInd() *OnuLossOfOmciChannelIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuLossOmciInd); ok {
+			return x.OnuLossOmciInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuSignalsFailInd() *OnuSignalsFailureIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuSignalsFailInd); ok {
+			return x.OnuSignalsFailInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuTiwiInd() *OnuTransmissionInterferenceWarning {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuTiwiInd); ok {
+			return x.OnuTiwiInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuActivationFailInd() *OnuActivationFailureIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuActivationFailInd); ok {
+			return x.OnuActivationFailInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuProcessingErrorInd() *OnuProcessingErrorIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuProcessingErrorInd); ok {
+			return x.OnuProcessingErrorInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuLossOfSyncFailInd() *OnuLossOfKeySyncFailureIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuLossOfSyncFailInd); ok {
+			return x.OnuLossOfSyncFailInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuItuPonStatsInd() *OnuItuPonStatsIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuItuPonStatsInd); ok {
+			return x.OnuItuPonStatsInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuDeactivationFailureInd() *OnuDeactivationFailureIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuDeactivationFailureInd); ok {
+			return x.OnuDeactivationFailureInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuRemoteDefectInd() *OnuRemoteDefectIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuRemoteDefectInd); ok {
+			return x.OnuRemoteDefectInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuLossGemDelineationInd() *OnuLossOfGEMChannelDelineationIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuLossGemDelineationInd); ok {
+			return x.OnuLossGemDelineationInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuPhysicalEquipmentErrorInd() *OnuPhysicalEquipmentErrorIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuPhysicalEquipmentErrorInd); ok {
+			return x.OnuPhysicalEquipmentErrorInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuLossOfAckInd() *OnuLossOfAcknowledgementIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuLossOfAckInd); ok {
+			return x.OnuLossOfAckInd
+		}
+	}
+	return nil
+}
+
+func (x *AlarmIndication) GetOnuDiffReachExceededInd() *OnuDifferentialReachExceededIndication {
+	if x != nil {
+		if x, ok := x.Data.(*AlarmIndication_OnuDiffReachExceededInd); ok {
+			return x.OnuDiffReachExceededInd
+		}
+	}
+	return nil
+}
 
 type isAlarmIndication_Data interface {
 	isAlarmIndication_Data()
@@ -737,149 +1153,5103 @@
 
 func (*AlarmIndication_OnuDiffReachExceededInd) isAlarmIndication_Data() {}
 
-func (m *AlarmIndication) GetData() isAlarmIndication_Data {
-	if m != nil {
-		return m.Data
+type OltIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OperState     string                 `protobuf:"bytes,1,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"` // up, down
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OltIndication) Reset() {
+	*x = OltIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OltIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OltIndication) ProtoMessage() {}
+
+func (x *OltIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OltIndication.ProtoReflect.Descriptor instead.
+func (*OltIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *OltIndication) GetOperState() string {
+	if x != nil {
+		return x.OperState
+	}
+	return ""
+}
+
+type IntfIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OperState     string                 `protobuf:"bytes,2,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"` // up, down
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *IntfIndication) Reset() {
+	*x = IntfIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IntfIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntfIndication) ProtoMessage() {}
+
+func (x *IntfIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntfIndication.ProtoReflect.Descriptor instead.
+func (*IntfIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *IntfIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *IntfIndication) GetOperState() string {
+	if x != nil {
+		return x.OperState
+	}
+	return ""
+}
+
+type OnuDiscIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	SerialNumber  *SerialNumber          `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuDiscIndication) Reset() {
+	*x = OnuDiscIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuDiscIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuDiscIndication) ProtoMessage() {}
+
+func (x *OnuDiscIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuDiscIndication.ProtoReflect.Descriptor instead.
+func (*OnuDiscIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *OnuDiscIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuDiscIndication) GetSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetLosInd() *LosIndication {
-	if x, ok := m.GetData().(*AlarmIndication_LosInd); ok {
-		return x.LosInd
+type OnuIndication struct {
+	state         protoimpl.MessageState             `protogen:"open.v1"`
+	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"`    // up, down
+	AdminState    string                             `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"` // up, down
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuIndication) Reset() {
+	*x = OnuIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuIndication) ProtoMessage() {}
+
+func (x *OnuIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuIndication.ProtoReflect.Descriptor instead.
+func (*OnuIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *OnuIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuIndication) GetOperState() string {
+	if x != nil {
+		return x.OperState
+	}
+	return ""
+}
+
+func (x *OnuIndication) GetAdminState() string {
+	if x != nil {
+		return x.AdminState
+	}
+	return ""
+}
+
+func (x *OnuIndication) GetSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetDyingGaspInd() *DyingGaspIndication {
-	if x, ok := m.GetData().(*AlarmIndication_DyingGaspInd); ok {
-		return x.DyingGaspInd
+func (x *OnuIndication) GetFailReason() OnuIndication_ActivationFailReason {
+	if x != nil {
+		return x.FailReason
+	}
+	return OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE
+}
+
+type OnuDisabledIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	SerialNumber  *SerialNumber          `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuDisabledIndication) Reset() {
+	*x = OnuDisabledIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuDisabledIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuDisabledIndication) ProtoMessage() {}
+
+func (x *OnuDisabledIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuDisabledIndication.ProtoReflect.Descriptor instead.
+func (*OnuDisabledIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *OnuDisabledIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuDisabledIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuDisabledIndication) GetSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuAlarmInd() *OnuAlarmIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuAlarmInd); ok {
-		return x.OnuAlarmInd
+type OnuEnabledIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	SerialNumber  *SerialNumber          `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuEnabledIndication) Reset() {
+	*x = OnuEnabledIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuEnabledIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuEnabledIndication) ProtoMessage() {}
+
+func (x *OnuEnabledIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuEnabledIndication.ProtoReflect.Descriptor instead.
+func (*OnuEnabledIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *OnuEnabledIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuEnabledIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuEnabledIndication) GetSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuStartupFailInd() *OnuStartupFailureIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuStartupFailInd); ok {
-		return x.OnuStartupFailInd
+type IntfOperIndication struct {
+	state         protoimpl.MessageState                `protogen:"open.v1"`
+	Type          string                                `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // nni, pon
+	IntfId        uint32                                `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OperState     string                                `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"` // up, down
+	Speed         uint32                                `protobuf:"fixed32,4,opt,name=speed,proto3" json:"speed,omitempty"`                        // measured in Mbps
+	Technology    string                                `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
+	Ranges        *IntfOperIndication_PONResourceRanges `protobuf:"bytes,6,opt,name=ranges,proto3" json:"ranges,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *IntfOperIndication) Reset() {
+	*x = IntfOperIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IntfOperIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntfOperIndication) ProtoMessage() {}
+
+func (x *IntfOperIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntfOperIndication.ProtoReflect.Descriptor instead.
+func (*IntfOperIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *IntfOperIndication) GetType() string {
+	if x != nil {
+		return x.Type
+	}
+	return ""
+}
+
+func (x *IntfOperIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *IntfOperIndication) GetOperState() string {
+	if x != nil {
+		return x.OperState
+	}
+	return ""
+}
+
+func (x *IntfOperIndication) GetSpeed() uint32 {
+	if x != nil {
+		return x.Speed
+	}
+	return 0
+}
+
+func (x *IntfOperIndication) GetTechnology() string {
+	if x != nil {
+		return x.Technology
+	}
+	return ""
+}
+
+func (x *IntfOperIndication) GetRanges() *IntfOperIndication_PONResourceRanges {
+	if x != nil {
+		return x.Ranges
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuSignalDegradeInd() *OnuSignalDegradeIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuSignalDegradeInd); ok {
-		return x.OnuSignalDegradeInd
+type OmciIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	Pkt           []byte                 `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OmciIndication) Reset() {
+	*x = OmciIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciIndication) ProtoMessage() {}
+
+func (x *OmciIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciIndication.ProtoReflect.Descriptor instead.
+func (*OmciIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *OmciIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OmciIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OmciIndication) GetPkt() []byte {
+	if x != nil {
+		return x.Pkt
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuDriftOfWindowInd() *OnuDriftOfWindowIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuDriftOfWindowInd); ok {
-		return x.OnuDriftOfWindowInd
+type PacketIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfType      string                 `protobuf:"bytes,5,opt,name=intf_type,json=intfType,proto3" json:"intf_type,omitempty"` // nni, pon, unknown
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId         uint32                 `protobuf:"fixed32,8,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	UniId         uint32                 `protobuf:"fixed32,9,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	GemportId     uint32                 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+	FlowId        uint32                 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+	PortNo        uint32                 `protobuf:"fixed32,6,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	Cookie        uint64                 `protobuf:"fixed64,7,opt,name=cookie,proto3" json:"cookie,omitempty"`
+	Pkt           []byte                 `protobuf:"bytes,4,opt,name=pkt,proto3" json:"pkt,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PacketIndication) Reset() {
+	*x = PacketIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PacketIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PacketIndication) ProtoMessage() {}
+
+func (x *PacketIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PacketIndication.ProtoReflect.Descriptor instead.
+func (*PacketIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *PacketIndication) GetIntfType() string {
+	if x != nil {
+		return x.IntfType
+	}
+	return ""
+}
+
+func (x *PacketIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetFlowId() uint32 {
+	if x != nil {
+		return x.FlowId
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *PacketIndication) GetPkt() []byte {
+	if x != nil {
+		return x.Pkt
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuLossOmciInd() *OnuLossOfOmciChannelIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuLossOmciInd); ok {
-		return x.OnuLossOmciInd
+type Interface struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	IntfType      uint32                 `protobuf:"fixed32,2,opt,name=intf_type,json=intfType,proto3" json:"intf_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Interface) Reset() {
+	*x = Interface{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Interface) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Interface) ProtoMessage() {}
+
+func (x *Interface) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Interface.ProtoReflect.Descriptor instead.
+func (*Interface) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *Interface) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *Interface) GetIntfType() uint32 {
+	if x != nil {
+		return x.IntfType
+	}
+	return 0
+}
+
+type Heartbeat struct {
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	HeartbeatSignature uint32                 `protobuf:"fixed32,1,opt,name=heartbeat_signature,json=heartbeatSignature,proto3" json:"heartbeat_signature,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *Heartbeat) Reset() {
+	*x = Heartbeat{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Heartbeat) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Heartbeat) ProtoMessage() {}
+
+func (x *Heartbeat) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Heartbeat.ProtoReflect.Descriptor instead.
+func (*Heartbeat) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *Heartbeat) GetHeartbeatSignature() uint32 {
+	if x != nil {
+		return x.HeartbeatSignature
+	}
+	return 0
+}
+
+type Onu struct {
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	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"` // peak information rate assigned to onu
+	OmccEncryption bool                   `protobuf:"varint,5,opt,name=omcc_encryption,json=omccEncryption,proto3" json:"omcc_encryption,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *Onu) Reset() {
+	*x = Onu{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Onu) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Onu) ProtoMessage() {}
+
+func (x *Onu) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Onu.ProtoReflect.Descriptor instead.
+func (*Onu) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *Onu) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *Onu) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *Onu) GetSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuSignalsFailInd() *OnuSignalsFailureIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuSignalsFailInd); ok {
-		return x.OnuSignalsFailInd
+func (x *Onu) GetPir() uint32 {
+	if x != nil {
+		return x.Pir
+	}
+	return 0
+}
+
+func (x *Onu) GetOmccEncryption() bool {
+	if x != nil {
+		return x.OmccEncryption
+	}
+	return false
+}
+
+type OnuLogicalDistance struct {
+	state                  protoimpl.MessageState `protogen:"open.v1"`
+	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"` //0km logical distance
+	LogicalOnuDistance     uint32                 `protobuf:"fixed32,4,opt,name=logical_onu_distance,json=logicalOnuDistance,proto3" json:"logical_onu_distance,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
+}
+
+func (x *OnuLogicalDistance) Reset() {
+	*x = OnuLogicalDistance{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuLogicalDistance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuLogicalDistance) ProtoMessage() {}
+
+func (x *OnuLogicalDistance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuLogicalDistance.ProtoReflect.Descriptor instead.
+func (*OnuLogicalDistance) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *OnuLogicalDistance) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuLogicalDistance) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuLogicalDistance) GetLogicalOnuDistanceZero() uint32 {
+	if x != nil {
+		return x.LogicalOnuDistanceZero
+	}
+	return 0
+}
+
+func (x *OnuLogicalDistance) GetLogicalOnuDistance() uint32 {
+	if x != nil {
+		return x.LogicalOnuDistance
+	}
+	return 0
+}
+
+type OmciMsg struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	Pkt           []byte                 `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OmciMsg) Reset() {
+	*x = OmciMsg{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OmciMsg) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OmciMsg) ProtoMessage() {}
+
+func (x *OmciMsg) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OmciMsg.ProtoReflect.Descriptor instead.
+func (*OmciMsg) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *OmciMsg) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OmciMsg) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OmciMsg) GetPkt() []byte {
+	if x != nil {
+		return x.Pkt
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuTiwiInd() *OnuTransmissionInterferenceWarning {
-	if x, ok := m.GetData().(*AlarmIndication_OnuTiwiInd); ok {
-		return x.OnuTiwiInd
+type OnuPacket struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	PortNo        uint32                 `protobuf:"fixed32,4,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	GemportId     uint32                 `protobuf:"fixed32,5,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+	AllocId       uint32                 `protobuf:"fixed32,6,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+	Pkt           []byte                 `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuPacket) Reset() {
+	*x = OnuPacket{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuPacket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuPacket) ProtoMessage() {}
+
+func (x *OnuPacket) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuPacket.ProtoReflect.Descriptor instead.
+func (*OnuPacket) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *OnuPacket) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuPacket) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuPacket) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *OnuPacket) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
+	}
+	return 0
+}
+
+func (x *OnuPacket) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
+	}
+	return 0
+}
+
+func (x *OnuPacket) GetPkt() []byte {
+	if x != nil {
+		return x.Pkt
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuActivationFailInd() *OnuActivationFailureIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuActivationFailInd); ok {
-		return x.OnuActivationFailInd
+type UplinkPacket struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	Pkt           []byte                 `protobuf:"bytes,2,opt,name=pkt,proto3" json:"pkt,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *UplinkPacket) Reset() {
+	*x = UplinkPacket{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UplinkPacket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UplinkPacket) ProtoMessage() {}
+
+func (x *UplinkPacket) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UplinkPacket.ProtoReflect.Descriptor instead.
+func (*UplinkPacket) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *UplinkPacket) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *UplinkPacket) GetPkt() []byte {
+	if x != nil {
+		return x.Pkt
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuProcessingErrorInd() *OnuProcessingErrorIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuProcessingErrorInd); ok {
-		return x.OnuProcessingErrorInd
+type DeviceInfo struct {
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	Vendor              string                 `protobuf:"bytes,1,opt,name=vendor,proto3" json:"vendor,omitempty"`
+	Model               string                 `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
+	HardwareVersion     string                 `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"`
+	FirmwareVersion     string                 `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"`
+	DeviceId            string                 `protobuf:"bytes,16,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DeviceSerialNumber  string                 `protobuf:"bytes,17,opt,name=device_serial_number,json=deviceSerialNumber,proto3" json:"device_serial_number,omitempty"`
+	PreviouslyConnected bool                   `protobuf:"varint,19,opt,name=previously_connected,json=previouslyConnected,proto3" json:"previously_connected,omitempty"` // used to indicate agent reconcile status
+	// Total number of pon intf ports on the device
+	PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
+	// Total number of nni intf ports on the device
+	NniPorts      uint32                             `protobuf:"fixed32,20,opt,name=nni_ports,json=nniPorts,proto3" json:"nni_ports,omitempty"`
+	Ranges        []*DeviceInfo_DeviceResourceRanges `protobuf:"bytes,15,rep,name=ranges,proto3" json:"ranges,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *DeviceInfo) Reset() {
+	*x = DeviceInfo{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceInfo) ProtoMessage() {}
+
+func (x *DeviceInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceInfo.ProtoReflect.Descriptor instead.
+func (*DeviceInfo) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *DeviceInfo) GetVendor() string {
+	if x != nil {
+		return x.Vendor
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetModel() string {
+	if x != nil {
+		return x.Model
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetHardwareVersion() string {
+	if x != nil {
+		return x.HardwareVersion
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetFirmwareVersion() string {
+	if x != nil {
+		return x.FirmwareVersion
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetDeviceSerialNumber() string {
+	if x != nil {
+		return x.DeviceSerialNumber
+	}
+	return ""
+}
+
+func (x *DeviceInfo) GetPreviouslyConnected() bool {
+	if x != nil {
+		return x.PreviouslyConnected
+	}
+	return false
+}
+
+func (x *DeviceInfo) GetPonPorts() uint32 {
+	if x != nil {
+		return x.PonPorts
+	}
+	return 0
+}
+
+func (x *DeviceInfo) GetNniPorts() uint32 {
+	if x != nil {
+		return x.NniPorts
+	}
+	return 0
+}
+
+func (x *DeviceInfo) GetRanges() []*DeviceInfo_DeviceResourceRanges {
+	if x != nil {
+		return x.Ranges
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuLossOfSyncFailInd() *OnuLossOfKeySyncFailureIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuLossOfSyncFailInd); ok {
-		return x.OnuLossOfSyncFailInd
+type Classifier struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OTpid         uint32                 `protobuf:"fixed32,1,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
+	OVid          uint32                 `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
+	ITpid         uint32                 `protobuf:"fixed32,3,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
+	IVid          uint32                 `protobuf:"fixed32,4,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
+	OPbits        uint32                 `protobuf:"fixed32,5,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
+	IPbits        uint32                 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
+	EthType       uint32                 `protobuf:"fixed32,7,opt,name=eth_type,json=ethType,proto3" json:"eth_type,omitempty"`
+	DstMac        []byte                 `protobuf:"bytes,8,opt,name=dst_mac,json=dstMac,proto3" json:"dst_mac,omitempty"`
+	SrcMac        []byte                 `protobuf:"bytes,9,opt,name=src_mac,json=srcMac,proto3" json:"src_mac,omitempty"`
+	IpProto       uint32                 `protobuf:"fixed32,10,opt,name=ip_proto,json=ipProto,proto3" json:"ip_proto,omitempty"`
+	DstIp         uint32                 `protobuf:"fixed32,11,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"`
+	SrcIp         uint32                 `protobuf:"fixed32,12,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"`
+	SrcPort       uint32                 `protobuf:"fixed32,13,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"`
+	DstPort       uint32                 `protobuf:"fixed32,14,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"`
+	PktTagType    string                 `protobuf:"bytes,15,opt,name=pkt_tag_type,json=pktTagType,proto3" json:"pkt_tag_type,omitempty"` // untagged, single_tag, double_tag
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Classifier) Reset() {
+	*x = Classifier{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Classifier) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Classifier) ProtoMessage() {}
+
+func (x *Classifier) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Classifier.ProtoReflect.Descriptor instead.
+func (*Classifier) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{19}
+}
+
+func (x *Classifier) GetOTpid() uint32 {
+	if x != nil {
+		return x.OTpid
+	}
+	return 0
+}
+
+func (x *Classifier) GetOVid() uint32 {
+	if x != nil {
+		return x.OVid
+	}
+	return 0
+}
+
+func (x *Classifier) GetITpid() uint32 {
+	if x != nil {
+		return x.ITpid
+	}
+	return 0
+}
+
+func (x *Classifier) GetIVid() uint32 {
+	if x != nil {
+		return x.IVid
+	}
+	return 0
+}
+
+func (x *Classifier) GetOPbits() uint32 {
+	if x != nil {
+		return x.OPbits
+	}
+	return 0
+}
+
+func (x *Classifier) GetIPbits() uint32 {
+	if x != nil {
+		return x.IPbits
+	}
+	return 0
+}
+
+func (x *Classifier) GetEthType() uint32 {
+	if x != nil {
+		return x.EthType
+	}
+	return 0
+}
+
+func (x *Classifier) GetDstMac() []byte {
+	if x != nil {
+		return x.DstMac
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuItuPonStatsInd() *OnuItuPonStatsIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuItuPonStatsInd); ok {
-		return x.OnuItuPonStatsInd
+func (x *Classifier) GetSrcMac() []byte {
+	if x != nil {
+		return x.SrcMac
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuDeactivationFailureInd() *OnuDeactivationFailureIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuDeactivationFailureInd); ok {
-		return x.OnuDeactivationFailureInd
+func (x *Classifier) GetIpProto() uint32 {
+	if x != nil {
+		return x.IpProto
+	}
+	return 0
+}
+
+func (x *Classifier) GetDstIp() uint32 {
+	if x != nil {
+		return x.DstIp
+	}
+	return 0
+}
+
+func (x *Classifier) GetSrcIp() uint32 {
+	if x != nil {
+		return x.SrcIp
+	}
+	return 0
+}
+
+func (x *Classifier) GetSrcPort() uint32 {
+	if x != nil {
+		return x.SrcPort
+	}
+	return 0
+}
+
+func (x *Classifier) GetDstPort() uint32 {
+	if x != nil {
+		return x.DstPort
+	}
+	return 0
+}
+
+func (x *Classifier) GetPktTagType() string {
+	if x != nil {
+		return x.PktTagType
+	}
+	return ""
+}
+
+type ActionCmd struct {
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *ActionCmd) Reset() {
+	*x = ActionCmd{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ActionCmd) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ActionCmd) ProtoMessage() {}
+
+func (x *ActionCmd) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ActionCmd.ProtoReflect.Descriptor instead.
+func (*ActionCmd) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{20}
+}
+
+func (x *ActionCmd) GetAddOuterTag() bool {
+	if x != nil {
+		return x.AddOuterTag
+	}
+	return false
+}
+
+func (x *ActionCmd) GetRemoveOuterTag() bool {
+	if x != nil {
+		return x.RemoveOuterTag
+	}
+	return false
+}
+
+func (x *ActionCmd) GetTrapToHost() bool {
+	if x != nil {
+		return x.TrapToHost
+	}
+	return false
+}
+
+func (x *ActionCmd) GetRemarkOuterPbits() bool {
+	if x != nil {
+		return x.RemarkOuterPbits
+	}
+	return false
+}
+
+func (x *ActionCmd) GetRemarkInnerPbits() bool {
+	if x != nil {
+		return x.RemarkInnerPbits
+	}
+	return false
+}
+
+func (x *ActionCmd) GetAddInnerTag() bool {
+	if x != nil {
+		return x.AddInnerTag
+	}
+	return false
+}
+
+func (x *ActionCmd) GetRemoveInnerTag() bool {
+	if x != nil {
+		return x.RemoveInnerTag
+	}
+	return false
+}
+
+func (x *ActionCmd) GetTranslateInnerTag() bool {
+	if x != nil {
+		return x.TranslateInnerTag
+	}
+	return false
+}
+
+func (x *ActionCmd) GetTranslateOuterTag() bool {
+	if x != nil {
+		return x.TranslateOuterTag
+	}
+	return false
+}
+
+type Action struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	OPbits        uint32                 `protobuf:"fixed32,3,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
+	OTpid         uint32                 `protobuf:"fixed32,4,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
+	IVid          uint32                 `protobuf:"fixed32,5,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
+	IPbits        uint32                 `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
+	ITpid         uint32                 `protobuf:"fixed32,7,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Action) Reset() {
+	*x = Action{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Action) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Action) ProtoMessage() {}
+
+func (x *Action) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Action.ProtoReflect.Descriptor instead.
+func (*Action) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{21}
+}
+
+func (x *Action) GetCmd() *ActionCmd {
+	if x != nil {
+		return x.Cmd
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuRemoteDefectInd() *OnuRemoteDefectIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuRemoteDefectInd); ok {
-		return x.OnuRemoteDefectInd
+func (x *Action) GetOVid() uint32 {
+	if x != nil {
+		return x.OVid
+	}
+	return 0
+}
+
+func (x *Action) GetOPbits() uint32 {
+	if x != nil {
+		return x.OPbits
+	}
+	return 0
+}
+
+func (x *Action) GetOTpid() uint32 {
+	if x != nil {
+		return x.OTpid
+	}
+	return 0
+}
+
+func (x *Action) GetIVid() uint32 {
+	if x != nil {
+		return x.IVid
+	}
+	return 0
+}
+
+func (x *Action) GetIPbits() uint32 {
+	if x != nil {
+		return x.IPbits
+	}
+	return 0
+}
+
+func (x *Action) GetITpid() uint32 {
+	if x != nil {
+		return x.ITpid
+	}
+	return 0
+}
+
+type Flow struct {
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	AccessIntfId    int32                  `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId,proto3" json:"access_intf_id,omitempty"`
+	OnuId           int32                  `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	UniId           int32                  `protobuf:"fixed32,11,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+	FlowId          uint64                 `protobuf:"fixed64,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`                               // voltha flow-id. 0 is not a valid flow_id
+	SymmetricFlowId uint64                 `protobuf:"fixed64,18,opt,name=symmetric_flow_id,json=symmetricFlowId,proto3" json:"symmetric_flow_id,omitempty"` // symmetric voltha flow-id, if applicable. All data path flows generally have a symmetric flow,
+	FlowType        string                 `protobuf:"bytes,4,opt,name=flow_type,json=flowType,proto3" json:"flow_type,omitempty"`                           // upstream, downstream, broadcast, multicast
+	AllocId         int32                  `protobuf:"fixed32,10,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+	NetworkIntfId   int32                  `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
+	GemportId       int32                  `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"` // When 'replicate_flow' field is true, this field is obsolete.
+	Classifier      *Classifier            `protobuf:"bytes,7,opt,name=classifier,proto3" json:"classifier,omitempty"`
+	Action          *Action                `protobuf:"bytes,8,opt,name=action,proto3" json:"action,omitempty"`
+	Priority        int32                  `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
+	Cookie          uint64                 `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`               // must be provided for any flow with trap_to_host action. Returned in PacketIndication
+	PortNo          uint32                 `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"` // must be provided for any flow with trap_to_host action. Returned in PacketIndication
+	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"`
+	ReplicateFlow   bool                   `protobuf:"varint,16,opt,name=replicate_flow,json=replicateFlow,proto3" json:"replicate_flow,omitempty"`                                                                                // When this field is true, use pbitToGemPortID to know which p-bit needs to be classfied to which gem port.
+	PbitToGemport   map[uint32]uint32      `protobuf:"bytes,17,rep,name=pbit_to_gemport,json=pbitToGemport,proto3" json:"pbit_to_gemport,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"` // Map of p-bit to gem port ID
+	GemportToAes    map[uint32]bool        `protobuf:"bytes,19,rep,name=gemport_to_aes,json=gemportToAes,proto3" json:"gemport_to_aes,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`     // Map of gem port ID to aes encryption
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *Flow) Reset() {
+	*x = Flow{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Flow) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Flow) ProtoMessage() {}
+
+func (x *Flow) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Flow.ProtoReflect.Descriptor instead.
+func (*Flow) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{22}
+}
+
+func (x *Flow) GetAccessIntfId() int32 {
+	if x != nil {
+		return x.AccessIntfId
+	}
+	return 0
+}
+
+func (x *Flow) GetOnuId() int32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *Flow) GetUniId() int32 {
+	if x != nil {
+		return x.UniId
+	}
+	return 0
+}
+
+func (x *Flow) GetFlowId() uint64 {
+	if x != nil {
+		return x.FlowId
+	}
+	return 0
+}
+
+func (x *Flow) GetSymmetricFlowId() uint64 {
+	if x != nil {
+		return x.SymmetricFlowId
+	}
+	return 0
+}
+
+func (x *Flow) GetFlowType() string {
+	if x != nil {
+		return x.FlowType
+	}
+	return ""
+}
+
+func (x *Flow) GetAllocId() int32 {
+	if x != nil {
+		return x.AllocId
+	}
+	return 0
+}
+
+func (x *Flow) GetNetworkIntfId() int32 {
+	if x != nil {
+		return x.NetworkIntfId
+	}
+	return 0
+}
+
+func (x *Flow) GetGemportId() int32 {
+	if x != nil {
+		return x.GemportId
+	}
+	return 0
+}
+
+func (x *Flow) GetClassifier() *Classifier {
+	if x != nil {
+		return x.Classifier
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuLossGemDelineationInd() *OnuLossOfGEMChannelDelineationIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuLossGemDelineationInd); ok {
-		return x.OnuLossGemDelineationInd
+func (x *Flow) GetAction() *Action {
+	if x != nil {
+		return x.Action
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuPhysicalEquipmentErrorInd() *OnuPhysicalEquipmentErrorIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuPhysicalEquipmentErrorInd); ok {
-		return x.OnuPhysicalEquipmentErrorInd
+func (x *Flow) GetPriority() int32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+func (x *Flow) GetCookie() uint64 {
+	if x != nil {
+		return x.Cookie
+	}
+	return 0
+}
+
+func (x *Flow) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+func (x *Flow) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *Flow) GetTechProfileId() uint32 {
+	if x != nil {
+		return x.TechProfileId
+	}
+	return 0
+}
+
+func (x *Flow) GetReplicateFlow() bool {
+	if x != nil {
+		return x.ReplicateFlow
+	}
+	return false
+}
+
+func (x *Flow) GetPbitToGemport() map[uint32]uint32 {
+	if x != nil {
+		return x.PbitToGemport
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuLossOfAckInd() *OnuLossOfAcknowledgementIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuLossOfAckInd); ok {
-		return x.OnuLossOfAckInd
+func (x *Flow) GetGemportToAes() map[uint32]bool {
+	if x != nil {
+		return x.GemportToAes
 	}
 	return nil
 }
 
-func (m *AlarmIndication) GetOnuDiffReachExceededInd() *OnuDifferentialReachExceededIndication {
-	if x, ok := m.GetData().(*AlarmIndication_OnuDiffReachExceededInd); ok {
-		return x.OnuDiffReachExceededInd
+type SerialNumber struct {
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *SerialNumber) Reset() {
+	*x = SerialNumber{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SerialNumber) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SerialNumber) ProtoMessage() {}
+
+func (x *SerialNumber) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SerialNumber.ProtoReflect.Descriptor instead.
+func (*SerialNumber) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *SerialNumber) GetVendorId() []byte {
+	if x != nil {
+		return x.VendorId
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*AlarmIndication) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+func (x *SerialNumber) GetVendorSpecific() []byte {
+	if x != nil {
+		return x.VendorSpecific
+	}
+	return nil
+}
+
+type OnuStatistics struct {
+	state                     protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	PositiveDrift             uint64                 `protobuf:"fixed64,3,opt,name=positive_drift,json=positiveDrift,proto3" json:"positive_drift,omitempty"`
+	NegativeDrift             uint64                 `protobuf:"fixed64,4,opt,name=negative_drift,json=negativeDrift,proto3" json:"negative_drift,omitempty"`
+	DelimiterMissDetection    uint64                 `protobuf:"fixed64,5,opt,name=delimiter_miss_detection,json=delimiterMissDetection,proto3" json:"delimiter_miss_detection,omitempty"`
+	BipErrors                 uint64                 `protobuf:"fixed64,6,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
+	BipUnits                  uint64                 `protobuf:"fixed64,7,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
+	FecCorrectedSymbols       uint64                 `protobuf:"fixed64,8,opt,name=fec_corrected_symbols,json=fecCorrectedSymbols,proto3" json:"fec_corrected_symbols,omitempty"`
+	FecCodewordsCorrected     uint64                 `protobuf:"fixed64,9,opt,name=fec_codewords_corrected,json=fecCodewordsCorrected,proto3" json:"fec_codewords_corrected,omitempty"`
+	FecCodewordsUncorrectable uint64                 `protobuf:"fixed64,10,opt,name=fec_codewords_uncorrectable,json=fecCodewordsUncorrectable,proto3" json:"fec_codewords_uncorrectable,omitempty"`
+	FecCodewords              uint64                 `protobuf:"fixed64,11,opt,name=fec_codewords,json=fecCodewords,proto3" json:"fec_codewords,omitempty"`
+	FecCorrectedUnits         uint64                 `protobuf:"fixed64,12,opt,name=fec_corrected_units,json=fecCorrectedUnits,proto3" json:"fec_corrected_units,omitempty"`
+	XgemKeyErrors             uint64                 `protobuf:"fixed64,13,opt,name=xgem_key_errors,json=xgemKeyErrors,proto3" json:"xgem_key_errors,omitempty"`
+	XgemLoss                  uint64                 `protobuf:"fixed64,14,opt,name=xgem_loss,json=xgemLoss,proto3" json:"xgem_loss,omitempty"`
+	RxPloamsError             uint64                 `protobuf:"fixed64,15,opt,name=rx_ploams_error,json=rxPloamsError,proto3" json:"rx_ploams_error,omitempty"`
+	RxPloamsNonIdle           uint64                 `protobuf:"fixed64,16,opt,name=rx_ploams_non_idle,json=rxPloamsNonIdle,proto3" json:"rx_ploams_non_idle,omitempty"`
+	RxOmci                    uint64                 `protobuf:"fixed64,17,opt,name=rx_omci,json=rxOmci,proto3" json:"rx_omci,omitempty"`
+	RxOmciPacketsCrcError     uint64                 `protobuf:"fixed64,18,opt,name=rx_omci_packets_crc_error,json=rxOmciPacketsCrcError,proto3" json:"rx_omci_packets_crc_error,omitempty"`
+	RxBytes                   uint64                 `protobuf:"fixed64,19,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+	RxPackets                 uint64                 `protobuf:"fixed64,20,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+	TxBytes                   uint64                 `protobuf:"fixed64,21,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+	TxPackets                 uint64                 `protobuf:"fixed64,22,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+	BerReported               uint64                 `protobuf:"fixed64,23,opt,name=ber_reported,json=berReported,proto3" json:"ber_reported,omitempty"`
+	LcdgErrors                uint64                 `protobuf:"fixed64,24,opt,name=lcdg_errors,json=lcdgErrors,proto3" json:"lcdg_errors,omitempty"`
+	RdiErrors                 uint64                 `protobuf:"fixed64,25,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+	Timestamp                 uint32                 `protobuf:"fixed32,26,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
+}
+
+func (x *OnuStatistics) Reset() {
+	*x = OnuStatistics{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuStatistics) ProtoMessage() {}
+
+func (x *OnuStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuStatistics.ProtoReflect.Descriptor instead.
+func (*OnuStatistics) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *OnuStatistics) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetPositiveDrift() uint64 {
+	if x != nil {
+		return x.PositiveDrift
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetNegativeDrift() uint64 {
+	if x != nil {
+		return x.NegativeDrift
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetDelimiterMissDetection() uint64 {
+	if x != nil {
+		return x.DelimiterMissDetection
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetBipErrors() uint64 {
+	if x != nil {
+		return x.BipErrors
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetBipUnits() uint64 {
+	if x != nil {
+		return x.BipUnits
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetFecCorrectedSymbols() uint64 {
+	if x != nil {
+		return x.FecCorrectedSymbols
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetFecCodewordsCorrected() uint64 {
+	if x != nil {
+		return x.FecCodewordsCorrected
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetFecCodewordsUncorrectable() uint64 {
+	if x != nil {
+		return x.FecCodewordsUncorrectable
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetFecCodewords() uint64 {
+	if x != nil {
+		return x.FecCodewords
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetFecCorrectedUnits() uint64 {
+	if x != nil {
+		return x.FecCorrectedUnits
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetXgemKeyErrors() uint64 {
+	if x != nil {
+		return x.XgemKeyErrors
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetXgemLoss() uint64 {
+	if x != nil {
+		return x.XgemLoss
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxPloamsError() uint64 {
+	if x != nil {
+		return x.RxPloamsError
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxPloamsNonIdle() uint64 {
+	if x != nil {
+		return x.RxPloamsNonIdle
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxOmci() uint64 {
+	if x != nil {
+		return x.RxOmci
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxOmciPacketsCrcError() uint64 {
+	if x != nil {
+		return x.RxOmciPacketsCrcError
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetBerReported() uint64 {
+	if x != nil {
+		return x.BerReported
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetLcdgErrors() uint64 {
+	if x != nil {
+		return x.LcdgErrors
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetRdiErrors() uint64 {
+	if x != nil {
+		return x.RdiErrors
+	}
+	return 0
+}
+
+func (x *OnuStatistics) GetTimestamp() uint32 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+type GemPortStatistics struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	GemportId     uint32                 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+	RxPackets     uint64                 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+	RxBytes       uint64                 `protobuf:"fixed64,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+	TxPackets     uint64                 `protobuf:"fixed64,5,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+	TxBytes       uint64                 `protobuf:"fixed64,6,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+	Timestamp     uint32                 `protobuf:"fixed32,26,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *GemPortStatistics) Reset() {
+	*x = GemPortStatistics{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GemPortStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GemPortStatistics) ProtoMessage() {}
+
+func (x *GemPortStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GemPortStatistics.ProtoReflect.Descriptor instead.
+func (*GemPortStatistics) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *GemPortStatistics) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *GemPortStatistics) GetTimestamp() uint32 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+type FlowStatistics struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	FlowId        uint32                 `protobuf:"fixed32,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+	RxBytes       uint64                 `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
+	RxPackets     uint64                 `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
+	TxBytes       uint64                 `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
+	TxPackets     uint64                 `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
+	Timestamp     uint32                 `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *FlowStatistics) Reset() {
+	*x = FlowStatistics{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[26]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *FlowStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FlowStatistics) ProtoMessage() {}
+
+func (x *FlowStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[26]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FlowStatistics.ProtoReflect.Descriptor instead.
+func (*FlowStatistics) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *FlowStatistics) GetFlowId() uint32 {
+	if x != nil {
+		return x.FlowId
+	}
+	return 0
+}
+
+func (x *FlowStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+func (x *FlowStatistics) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
+	}
+	return 0
+}
+
+func (x *FlowStatistics) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
+	}
+	return 0
+}
+
+func (x *FlowStatistics) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
+	}
+	return 0
+}
+
+func (x *FlowStatistics) GetTimestamp() uint32 {
+	if x != nil {
+		return x.Timestamp
+	}
+	return 0
+}
+
+type LosIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *LosIndication) Reset() {
+	*x = LosIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[27]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LosIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LosIndication) ProtoMessage() {}
+
+func (x *LosIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[27]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LosIndication.ProtoReflect.Descriptor instead.
+func (*LosIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{27}
+}
+
+func (x *LosIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *LosIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type DyingGaspIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *DyingGaspIndication) Reset() {
+	*x = DyingGaspIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[28]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DyingGaspIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DyingGaspIndication) ProtoMessage() {}
+
+func (x *DyingGaspIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[28]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DyingGaspIndication.ProtoReflect.Descriptor instead.
+func (*DyingGaspIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{28}
+}
+
+func (x *DyingGaspIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *DyingGaspIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *DyingGaspIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuAlarmIndication struct {
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	LosStatus          string                 `protobuf:"bytes,3,opt,name=los_status,json=losStatus,proto3" json:"los_status,omitempty"`
+	LobStatus          string                 `protobuf:"bytes,4,opt,name=lob_status,json=lobStatus,proto3" json:"lob_status,omitempty"`
+	LopcMissStatus     string                 `protobuf:"bytes,5,opt,name=lopc_miss_status,json=lopcMissStatus,proto3" json:"lopc_miss_status,omitempty"`
+	LopcMicErrorStatus string                 `protobuf:"bytes,6,opt,name=lopc_mic_error_status,json=lopcMicErrorStatus,proto3" json:"lopc_mic_error_status,omitempty"`
+	LofiStatus         string                 `protobuf:"bytes,7,opt,name=lofi_status,json=lofiStatus,proto3" json:"lofi_status,omitempty"`
+	LoamiStatus        string                 `protobuf:"bytes,8,opt,name=loami_status,json=loamiStatus,proto3" json:"loami_status,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *OnuAlarmIndication) Reset() {
+	*x = OnuAlarmIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[29]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAlarmIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAlarmIndication) ProtoMessage() {}
+
+func (x *OnuAlarmIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[29]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAlarmIndication.ProtoReflect.Descriptor instead.
+func (*OnuAlarmIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{29}
+}
+
+func (x *OnuAlarmIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuAlarmIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuAlarmIndication) GetLosStatus() string {
+	if x != nil {
+		return x.LosStatus
+	}
+	return ""
+}
+
+func (x *OnuAlarmIndication) GetLobStatus() string {
+	if x != nil {
+		return x.LobStatus
+	}
+	return ""
+}
+
+func (x *OnuAlarmIndication) GetLopcMissStatus() string {
+	if x != nil {
+		return x.LopcMissStatus
+	}
+	return ""
+}
+
+func (x *OnuAlarmIndication) GetLopcMicErrorStatus() string {
+	if x != nil {
+		return x.LopcMicErrorStatus
+	}
+	return ""
+}
+
+func (x *OnuAlarmIndication) GetLofiStatus() string {
+	if x != nil {
+		return x.LofiStatus
+	}
+	return ""
+}
+
+func (x *OnuAlarmIndication) GetLoamiStatus() string {
+	if x != nil {
+		return x.LoamiStatus
+	}
+	return ""
+}
+
+type OnuStartupFailureIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuStartupFailureIndication) Reset() {
+	*x = OnuStartupFailureIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[30]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuStartupFailureIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuStartupFailureIndication) ProtoMessage() {}
+
+func (x *OnuStartupFailureIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[30]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuStartupFailureIndication.ProtoReflect.Descriptor instead.
+func (*OnuStartupFailureIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{30}
+}
+
+func (x *OnuStartupFailureIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuStartupFailureIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuStartupFailureIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuSignalDegradeIndication struct {
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	InverseBitErrorRate uint32                 `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *OnuSignalDegradeIndication) Reset() {
+	*x = OnuSignalDegradeIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[31]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuSignalDegradeIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuSignalDegradeIndication) ProtoMessage() {}
+
+func (x *OnuSignalDegradeIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[31]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuSignalDegradeIndication.ProtoReflect.Descriptor instead.
+func (*OnuSignalDegradeIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{31}
+}
+
+func (x *OnuSignalDegradeIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuSignalDegradeIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuSignalDegradeIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuSignalDegradeIndication) GetInverseBitErrorRate() uint32 {
+	if x != nil {
+		return x.InverseBitErrorRate
+	}
+	return 0
+}
+
+type OnuDriftOfWindowIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	Drift         uint32                 `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
+	NewEqd        uint32                 `protobuf:"fixed32,5,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuDriftOfWindowIndication) Reset() {
+	*x = OnuDriftOfWindowIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[32]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuDriftOfWindowIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuDriftOfWindowIndication) ProtoMessage() {}
+
+func (x *OnuDriftOfWindowIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[32]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuDriftOfWindowIndication.ProtoReflect.Descriptor instead.
+func (*OnuDriftOfWindowIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{32}
+}
+
+func (x *OnuDriftOfWindowIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuDriftOfWindowIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuDriftOfWindowIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuDriftOfWindowIndication) GetDrift() uint32 {
+	if x != nil {
+		return x.Drift
+	}
+	return 0
+}
+
+func (x *OnuDriftOfWindowIndication) GetNewEqd() uint32 {
+	if x != nil {
+		return x.NewEqd
+	}
+	return 0
+}
+
+type OnuLossOfOmciChannelIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuLossOfOmciChannelIndication) Reset() {
+	*x = OnuLossOfOmciChannelIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[33]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuLossOfOmciChannelIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuLossOfOmciChannelIndication) ProtoMessage() {}
+
+func (x *OnuLossOfOmciChannelIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[33]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuLossOfOmciChannelIndication.ProtoReflect.Descriptor instead.
+func (*OnuLossOfOmciChannelIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{33}
+}
+
+func (x *OnuLossOfOmciChannelIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuLossOfOmciChannelIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuLossOfOmciChannelIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuSignalsFailureIndication struct {
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	InverseBitErrorRate uint32                 `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
+}
+
+func (x *OnuSignalsFailureIndication) Reset() {
+	*x = OnuSignalsFailureIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[34]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuSignalsFailureIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuSignalsFailureIndication) ProtoMessage() {}
+
+func (x *OnuSignalsFailureIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[34]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuSignalsFailureIndication.ProtoReflect.Descriptor instead.
+func (*OnuSignalsFailureIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{34}
+}
+
+func (x *OnuSignalsFailureIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuSignalsFailureIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuSignalsFailureIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuSignalsFailureIndication) GetInverseBitErrorRate() uint32 {
+	if x != nil {
+		return x.InverseBitErrorRate
+	}
+	return 0
+}
+
+type OnuTransmissionInterferenceWarning struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	Drift         uint32                 `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuTransmissionInterferenceWarning) Reset() {
+	*x = OnuTransmissionInterferenceWarning{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[35]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuTransmissionInterferenceWarning) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuTransmissionInterferenceWarning) ProtoMessage() {}
+
+func (x *OnuTransmissionInterferenceWarning) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[35]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuTransmissionInterferenceWarning.ProtoReflect.Descriptor instead.
+func (*OnuTransmissionInterferenceWarning) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{35}
+}
+
+func (x *OnuTransmissionInterferenceWarning) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuTransmissionInterferenceWarning) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuTransmissionInterferenceWarning) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuTransmissionInterferenceWarning) GetDrift() uint32 {
+	if x != nil {
+		return x.Drift
+	}
+	return 0
+}
+
+type OnuActivationFailureIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	FailReason    uint32                 `protobuf:"fixed32,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuActivationFailureIndication) Reset() {
+	*x = OnuActivationFailureIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[36]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuActivationFailureIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuActivationFailureIndication) ProtoMessage() {}
+
+func (x *OnuActivationFailureIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[36]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuActivationFailureIndication.ProtoReflect.Descriptor instead.
+func (*OnuActivationFailureIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{36}
+}
+
+func (x *OnuActivationFailureIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuActivationFailureIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuActivationFailureIndication) GetFailReason() uint32 {
+	if x != nil {
+		return x.FailReason
+	}
+	return 0
+}
+
+type OnuLossOfKeySyncFailureIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuLossOfKeySyncFailureIndication) Reset() {
+	*x = OnuLossOfKeySyncFailureIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[37]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuLossOfKeySyncFailureIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuLossOfKeySyncFailureIndication) ProtoMessage() {}
+
+func (x *OnuLossOfKeySyncFailureIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[37]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuLossOfKeySyncFailureIndication.ProtoReflect.Descriptor instead.
+func (*OnuLossOfKeySyncFailureIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{37}
+}
+
+func (x *OnuLossOfKeySyncFailureIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuLossOfKeySyncFailureIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuLossOfKeySyncFailureIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type RdiErrorIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	RdiErrorCount uint64                 `protobuf:"fixed64,1,opt,name=rdi_error_count,json=rdiErrorCount,proto3" json:"rdi_error_count,omitempty"` // RDI Error count
+	Status        string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                                        // on/off based on configured reporting condition
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *RdiErrorIndication) Reset() {
+	*x = RdiErrorIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[38]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RdiErrorIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RdiErrorIndication) ProtoMessage() {}
+
+func (x *RdiErrorIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[38]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RdiErrorIndication.ProtoReflect.Descriptor instead.
+func (*RdiErrorIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{38}
+}
+
+func (x *RdiErrorIndication) GetRdiErrorCount() uint64 {
+	if x != nil {
+		return x.RdiErrorCount
+	}
+	return 0
+}
+
+func (x *RdiErrorIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuItuPonStatsIndication struct {
+	state  protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuItuPonStatsIndication) Reset() {
+	*x = OnuItuPonStatsIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[39]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuItuPonStatsIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuItuPonStatsIndication) ProtoMessage() {}
+
+func (x *OnuItuPonStatsIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[39]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuItuPonStatsIndication.ProtoReflect.Descriptor instead.
+func (*OnuItuPonStatsIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{39}
+}
+
+func (x *OnuItuPonStatsIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuItuPonStatsIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuItuPonStatsIndication) GetStats() isOnuItuPonStatsIndication_Stats {
+	if x != nil {
+		return x.Stats
+	}
+	return nil
+}
+
+func (x *OnuItuPonStatsIndication) GetRdiErrorInd() *RdiErrorIndication {
+	if x != nil {
+		if x, ok := x.Stats.(*OnuItuPonStatsIndication_RdiErrorInd); ok {
+			return x.RdiErrorInd
+		}
+	}
+	return nil
+}
+
+type isOnuItuPonStatsIndication_Stats interface {
+	isOnuItuPonStatsIndication_Stats()
+}
+
+type OnuItuPonStatsIndication_RdiErrorInd struct {
+	RdiErrorInd *RdiErrorIndication `protobuf:"bytes,3,opt,name=rdi_error_ind,json=rdiErrorInd,proto3,oneof"` // add more here
+}
+
+func (*OnuItuPonStatsIndication_RdiErrorInd) isOnuItuPonStatsIndication_Stats() {}
+
+type OnuProcessingErrorIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuProcessingErrorIndication) Reset() {
+	*x = OnuProcessingErrorIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[40]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuProcessingErrorIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuProcessingErrorIndication) ProtoMessage() {}
+
+func (x *OnuProcessingErrorIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[40]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuProcessingErrorIndication.ProtoReflect.Descriptor instead.
+func (*OnuProcessingErrorIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{40}
+}
+
+func (x *OnuProcessingErrorIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuProcessingErrorIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+type OnuDeactivationFailureIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuDeactivationFailureIndication) Reset() {
+	*x = OnuDeactivationFailureIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[41]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuDeactivationFailureIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuDeactivationFailureIndication) ProtoMessage() {}
+
+func (x *OnuDeactivationFailureIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[41]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuDeactivationFailureIndication.ProtoReflect.Descriptor instead.
+func (*OnuDeactivationFailureIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{41}
+}
+
+func (x *OnuDeactivationFailureIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuDeactivationFailureIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuDeactivationFailureIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuRemoteDefectIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuRemoteDefectIndication) Reset() {
+	*x = OnuRemoteDefectIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[42]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuRemoteDefectIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuRemoteDefectIndication) ProtoMessage() {}
+
+func (x *OnuRemoteDefectIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[42]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuRemoteDefectIndication.ProtoReflect.Descriptor instead.
+func (*OnuRemoteDefectIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{42}
+}
+
+func (x *OnuRemoteDefectIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuRemoteDefectIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuRemoteDefectIndication) GetRdiErrors() uint64 {
+	if x != nil {
+		return x.RdiErrors
+	}
+	return 0
+}
+
+type OnuLossOfGEMChannelDelineationIndication struct {
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) Reset() {
+	*x = OnuLossOfGEMChannelDelineationIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[43]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuLossOfGEMChannelDelineationIndication) ProtoMessage() {}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[43]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuLossOfGEMChannelDelineationIndication.ProtoReflect.Descriptor instead.
+func (*OnuLossOfGEMChannelDelineationIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{43}
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuLossOfGEMChannelDelineationIndication) GetDelineationErrors() uint32 {
+	if x != nil {
+		return x.DelineationErrors
+	}
+	return 0
+}
+
+type OnuPhysicalEquipmentErrorIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuPhysicalEquipmentErrorIndication) Reset() {
+	*x = OnuPhysicalEquipmentErrorIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[44]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuPhysicalEquipmentErrorIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuPhysicalEquipmentErrorIndication) ProtoMessage() {}
+
+func (x *OnuPhysicalEquipmentErrorIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[44]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuPhysicalEquipmentErrorIndication.ProtoReflect.Descriptor instead.
+func (*OnuPhysicalEquipmentErrorIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{44}
+}
+
+func (x *OnuPhysicalEquipmentErrorIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuPhysicalEquipmentErrorIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuPhysicalEquipmentErrorIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuLossOfAcknowledgementIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuLossOfAcknowledgementIndication) Reset() {
+	*x = OnuLossOfAcknowledgementIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[45]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuLossOfAcknowledgementIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuLossOfAcknowledgementIndication) ProtoMessage() {}
+
+func (x *OnuLossOfAcknowledgementIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[45]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuLossOfAcknowledgementIndication.ProtoReflect.Descriptor instead.
+func (*OnuLossOfAcknowledgementIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{45}
+}
+
+func (x *OnuLossOfAcknowledgementIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuLossOfAcknowledgementIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuLossOfAcknowledgementIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+type OnuDifferentialReachExceededIndication struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuDifferentialReachExceededIndication) Reset() {
+	*x = OnuDifferentialReachExceededIndication{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[46]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuDifferentialReachExceededIndication) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuDifferentialReachExceededIndication) ProtoMessage() {}
+
+func (x *OnuDifferentialReachExceededIndication) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[46]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuDifferentialReachExceededIndication.ProtoReflect.Descriptor instead.
+func (*OnuDifferentialReachExceededIndication) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{46}
+}
+
+func (x *OnuDifferentialReachExceededIndication) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuDifferentialReachExceededIndication) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuDifferentialReachExceededIndication) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *OnuDifferentialReachExceededIndication) GetDistance() uint32 {
+	if x != nil {
+		return x.Distance
+	}
+	return 0
+}
+
+type GroupMember struct {
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	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"` // Priority (and also the ID) of the default fixed queue for the multicast traffic.
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *GroupMember) Reset() {
+	*x = GroupMember{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[47]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GroupMember) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GroupMember) ProtoMessage() {}
+
+func (x *GroupMember) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[47]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GroupMember.ProtoReflect.Descriptor instead.
+func (*GroupMember) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{47}
+}
+
+func (x *GroupMember) GetInterfaceId() uint32 {
+	if x != nil {
+		return x.InterfaceId
+	}
+	return 0
+}
+
+func (x *GroupMember) GetInterfaceType() GroupMember_InterfaceType {
+	if x != nil {
+		return x.InterfaceType
+	}
+	return GroupMember_PON
+}
+
+func (x *GroupMember) GetGemPortId() uint32 {
+	if x != nil {
+		return x.GemPortId
+	}
+	return 0
+}
+
+func (x *GroupMember) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
+	}
+	return 0
+}
+
+type Group struct {
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	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"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Group) Reset() {
+	*x = Group{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[48]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Group) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Group) ProtoMessage() {}
+
+func (x *Group) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[48]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Group.ProtoReflect.Descriptor instead.
+func (*Group) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{48}
+}
+
+func (x *Group) GetGroupId() uint32 {
+	if x != nil {
+		return x.GroupId
+	}
+	return 0
+}
+
+func (x *Group) GetCommand() Group_GroupMembersCommand {
+	if x != nil {
+		return x.Command
+	}
+	return Group_ADD_MEMBERS
+}
+
+func (x *Group) GetMembers() []*GroupMember {
+	if x != nil {
+		return x.Members
+	}
+	return nil
+}
+
+func (x *Group) GetAction() *Action {
+	if x != nil {
+		return x.Action
+	}
+	return nil
+}
+
+type ValueParam struct {
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	Onu           *Onu                     `protobuf:"bytes,1,opt,name=onu,proto3" json:"onu,omitempty"`
+	Value         extension.ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=extension.ValueType_Type" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ValueParam) Reset() {
+	*x = ValueParam{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[49]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ValueParam) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValueParam) ProtoMessage() {}
+
+func (x *ValueParam) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[49]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ValueParam.ProtoReflect.Descriptor instead.
+func (*ValueParam) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{49}
+}
+
+func (x *ValueParam) GetOnu() *Onu {
+	if x != nil {
+		return x.Onu
+	}
+	return nil
+}
+
+func (x *ValueParam) GetValue() extension.ValueType_Type {
+	if x != nil {
+		return x.Value
+	}
+	return extension.ValueType_Type(0)
+}
+
+type PonRxPowerData struct {
+	state          protoimpl.MessageState                   `protogen:"open.v1"`
+	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"`
+	FailReason     PonRxPowerData_RssiMeasurementFailReason `protobuf:"varint,4,opt,name=fail_reason,json=failReason,proto3,enum=openolt.PonRxPowerData_RssiMeasurementFailReason" json:"fail_reason,omitempty"`
+	RxPowerMeanDbm float64                                  `protobuf:"fixed64,5,opt,name=rx_power_mean_dbm,json=rxPowerMeanDbm,proto3" json:"rx_power_mean_dbm,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
+}
+
+func (x *PonRxPowerData) Reset() {
+	*x = PonRxPowerData{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[50]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PonRxPowerData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PonRxPowerData) ProtoMessage() {}
+
+func (x *PonRxPowerData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[50]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PonRxPowerData.ProtoReflect.Descriptor instead.
+func (*PonRxPowerData) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{50}
+}
+
+func (x *PonRxPowerData) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *PonRxPowerData) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *PonRxPowerData) GetStatus() string {
+	if x != nil {
+		return x.Status
+	}
+	return ""
+}
+
+func (x *PonRxPowerData) GetFailReason() PonRxPowerData_RssiMeasurementFailReason {
+	if x != nil {
+		return x.FailReason
+	}
+	return PonRxPowerData_FAIL_REASON_NONE
+}
+
+func (x *PonRxPowerData) GetRxPowerMeanDbm() float64 {
+	if x != nil {
+		return x.RxPowerMeanDbm
+	}
+	return 0
+}
+
+type OnuAllocIdStatistics struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	IntfId        uint32                 `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
+	AllocId       uint32                 `protobuf:"fixed32,2,opt,name=allocId,proto3" json:"allocId,omitempty"`
+	RxBytes       uint64                 `protobuf:"fixed64,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuAllocIdStatistics) Reset() {
+	*x = OnuAllocIdStatistics{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[51]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuAllocIdStatistics) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuAllocIdStatistics) ProtoMessage() {}
+
+func (x *OnuAllocIdStatistics) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[51]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuAllocIdStatistics.ProtoReflect.Descriptor instead.
+func (*OnuAllocIdStatistics) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{51}
+}
+
+func (x *OnuAllocIdStatistics) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *OnuAllocIdStatistics) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
+	}
+	return 0
+}
+
+func (x *OnuAllocIdStatistics) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
+	}
+	return 0
+}
+
+// contains the onu id, state of the onu and the information about the alarms on the onu.
+// As of now only few alarms are added, any further information needed can be added to the structure.
+type OnuInfo struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OnuId         uint32                 `protobuf:"fixed32,1,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	State         OnuInfo_OnuState       `protobuf:"varint,2,opt,name=state,proto3,enum=openolt.OnuInfo_OnuState" json:"state,omitempty"`
+	Losi          AlarmState             `protobuf:"varint,3,opt,name=losi,proto3,enum=openolt.AlarmState" json:"losi,omitempty"`
+	Lofi          AlarmState             `protobuf:"varint,4,opt,name=lofi,proto3,enum=openolt.AlarmState" json:"lofi,omitempty"`
+	Loami         AlarmState             `protobuf:"varint,5,opt,name=loami,proto3,enum=openolt.AlarmState" json:"loami,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *OnuInfo) Reset() {
+	*x = OnuInfo{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[52]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuInfo) ProtoMessage() {}
+
+func (x *OnuInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[52]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuInfo.ProtoReflect.Descriptor instead.
+func (*OnuInfo) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{52}
+}
+
+func (x *OnuInfo) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *OnuInfo) GetState() OnuInfo_OnuState {
+	if x != nil {
+		return x.State
+	}
+	return OnuInfo_UNKNOWN
+}
+
+func (x *OnuInfo) GetLosi() AlarmState {
+	if x != nil {
+		return x.Losi
+	}
+	return AlarmState_OFF
+}
+
+func (x *OnuInfo) GetLofi() AlarmState {
+	if x != nil {
+		return x.Lofi
+	}
+	return AlarmState_OFF
+}
+
+func (x *OnuInfo) GetLoami() AlarmState {
+	if x != nil {
+		return x.Loami
+	}
+	return AlarmState_OFF
+}
+
+// IntfInfo has the interface Id and if there are any alarms active on that interface.
+// Any further information needed from the interface object can be added to the structure.
+type PonIntfInfo struct {
+	state         protoimpl.MessageState   `protogen:"open.v1"`
+	IntfId        uint32                   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	State         PonIntfInfo_PonIntfState `protobuf:"varint,3,opt,name=state,proto3,enum=openolt.PonIntfInfo_PonIntfState" json:"state,omitempty"`
+	Los           AlarmState               `protobuf:"varint,4,opt,name=los,proto3,enum=openolt.AlarmState" json:"los,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *PonIntfInfo) Reset() {
+	*x = PonIntfInfo{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[53]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PonIntfInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PonIntfInfo) ProtoMessage() {}
+
+func (x *PonIntfInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[53]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PonIntfInfo.ProtoReflect.Descriptor instead.
+func (*PonIntfInfo) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{53}
+}
+
+func (x *PonIntfInfo) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *PonIntfInfo) GetState() PonIntfInfo_PonIntfState {
+	if x != nil {
+		return x.State
+	}
+	return PonIntfInfo_UNKNOWN
+}
+
+func (x *PonIntfInfo) GetLos() AlarmState {
+	if x != nil {
+		return x.Los
+	}
+	return AlarmState_OFF
+}
+
+// Message used for disabling device by serialnumber, disable at PLOAM
+type InterfaceOnuSerialNumberOnuId struct {
+	state           protoimpl.MessageState    `protogen:"open.v1"`
+	IntfIdSerialNum *InterfaceOnuSerialNumber `protobuf:"bytes,1,opt,name=intf_id_serial_num,json=intfIdSerialNum,proto3" json:"intf_id_serial_num,omitempty"`
+	OnuId           uint32                    `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *InterfaceOnuSerialNumberOnuId) Reset() {
+	*x = InterfaceOnuSerialNumberOnuId{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[54]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *InterfaceOnuSerialNumberOnuId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InterfaceOnuSerialNumberOnuId) ProtoMessage() {}
+
+func (x *InterfaceOnuSerialNumberOnuId) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[54]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InterfaceOnuSerialNumberOnuId.ProtoReflect.Descriptor instead.
+func (*InterfaceOnuSerialNumberOnuId) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{54}
+}
+
+func (x *InterfaceOnuSerialNumberOnuId) GetIntfIdSerialNum() *InterfaceOnuSerialNumber {
+	if x != nil {
+		return x.IntfIdSerialNum
+	}
+	return nil
+}
+
+func (x *InterfaceOnuSerialNumberOnuId) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+type InterfaceOnuSerialNumber struct {
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	IntfId          uint32                 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuSerialNumber *SerialNumber          `protobuf:"bytes,2,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
+}
+
+func (x *InterfaceOnuSerialNumber) Reset() {
+	*x = InterfaceOnuSerialNumber{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[55]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *InterfaceOnuSerialNumber) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InterfaceOnuSerialNumber) ProtoMessage() {}
+
+func (x *InterfaceOnuSerialNumber) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[55]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InterfaceOnuSerialNumber.ProtoReflect.Descriptor instead.
+func (*InterfaceOnuSerialNumber) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{55}
+}
+
+func (x *InterfaceOnuSerialNumber) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
+	}
+	return 0
+}
+
+func (x *InterfaceOnuSerialNumber) GetOnuSerialNumber() *SerialNumber {
+	if x != nil {
+		return x.OnuSerialNumber
+	}
+	return nil
+}
+
+type Empty struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *Empty) Reset() {
+	*x = Empty{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[56]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Empty) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Empty) ProtoMessage() {}
+
+func (x *Empty) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[56]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Empty.ProtoReflect.Descriptor instead.
+func (*Empty) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{56}
+}
+
+type IntfOperIndication_PONResourceRanges struct {
+	state         protoimpl.MessageState                       `protogen:"open.v1"`
+	Pools         []*IntfOperIndication_PONResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *IntfOperIndication_PONResourceRanges) Reset() {
+	*x = IntfOperIndication_PONResourceRanges{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[57]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IntfOperIndication_PONResourceRanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntfOperIndication_PONResourceRanges) ProtoMessage() {}
+
+func (x *IntfOperIndication_PONResourceRanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[57]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntfOperIndication_PONResourceRanges.ProtoReflect.Descriptor instead.
+func (*IntfOperIndication_PONResourceRanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{8, 0}
+}
+
+func (x *IntfOperIndication_PONResourceRanges) GetPools() []*IntfOperIndication_PONResourceRanges_Pool {
+	if x != nil {
+		return x.Pools
+	}
+	return nil
+}
+
+type IntfOperIndication_PONResourceRanges_Pool struct {
+	state         protoimpl.MessageState                             `protogen:"open.v1"`
+	Type          IntfOperIndication_PONResourceRanges_Pool_PoolType `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.IntfOperIndication_PONResourceRanges_Pool_PoolType" json:"type,omitempty"`
+	Start         uint32                                             `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"` // lower bound on IDs allocated from this pool
+	End           uint32                                             `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`     // upper bound on IDs allocated from this pool
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) Reset() {
+	*x = IntfOperIndication_PONResourceRanges_Pool{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[58]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IntfOperIndication_PONResourceRanges_Pool) ProtoMessage() {}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[58]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IntfOperIndication_PONResourceRanges_Pool.ProtoReflect.Descriptor instead.
+func (*IntfOperIndication_PONResourceRanges_Pool) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{8, 0, 0}
+}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) GetType() IntfOperIndication_PONResourceRanges_Pool_PoolType {
+	if x != nil {
+		return x.Type
+	}
+	return IntfOperIndication_PONResourceRanges_Pool_ONU_ID
+}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) GetStart() uint32 {
+	if x != nil {
+		return x.Start
+	}
+	return 0
+}
+
+func (x *IntfOperIndication_PONResourceRanges_Pool) GetEnd() uint32 {
+	if x != nil {
+		return x.End
+	}
+	return 0
+}
+
+type DeviceInfo_DeviceResourceRanges struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// List of 0 or more intf_ids that use the same technology and pools.
+	// If 0 intf_ids supplied, it implies ALL interfaces
+	IntfIds []uint32 `protobuf:"fixed32,1,rep,packed,name=intf_ids,json=intfIds,proto3" json:"intf_ids,omitempty"`
+	// Technology profile for this pool
+	Technology    string                                  `protobuf:"bytes,2,opt,name=technology,proto3" json:"technology,omitempty"`
+	Pools         []*DeviceInfo_DeviceResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *DeviceInfo_DeviceResourceRanges) Reset() {
+	*x = DeviceInfo_DeviceResourceRanges{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[59]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceInfo_DeviceResourceRanges) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceInfo_DeviceResourceRanges) ProtoMessage() {}
+
+func (x *DeviceInfo_DeviceResourceRanges) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[59]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceInfo_DeviceResourceRanges.ProtoReflect.Descriptor instead.
+func (*DeviceInfo_DeviceResourceRanges) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{18, 0}
+}
+
+func (x *DeviceInfo_DeviceResourceRanges) GetIntfIds() []uint32 {
+	if x != nil {
+		return x.IntfIds
+	}
+	return nil
+}
+
+func (x *DeviceInfo_DeviceResourceRanges) GetTechnology() string {
+	if x != nil {
+		return x.Technology
+	}
+	return ""
+}
+
+func (x *DeviceInfo_DeviceResourceRanges) GetPools() []*DeviceInfo_DeviceResourceRanges_Pool {
+	if x != nil {
+		return x.Pools
+	}
+	return nil
+}
+
+type DeviceInfo_DeviceResourceRanges_Pool struct {
+	state         protoimpl.MessageState                           `protogen:"open.v1"`
+	Type          DeviceInfo_DeviceResourceRanges_Pool_PoolType    `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType" json:"type,omitempty"`
+	Sharing       DeviceInfo_DeviceResourceRanges_Pool_SharingType `protobuf:"varint,2,opt,name=sharing,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType" json:"sharing,omitempty"`
+	Start         uint32                                           `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"` // lower bound on IDs allocated from this pool
+	End           uint32                                           `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`     // upper bound on IDs allocated from this pool
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) Reset() {
+	*x = DeviceInfo_DeviceResourceRanges_Pool{}
+	mi := &file_voltha_protos_openolt_proto_msgTypes[60]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceInfo_DeviceResourceRanges_Pool) ProtoMessage() {}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_openolt_proto_msgTypes[60]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceInfo_DeviceResourceRanges_Pool.ProtoReflect.Descriptor instead.
+func (*DeviceInfo_DeviceResourceRanges_Pool) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_openolt_proto_rawDescGZIP(), []int{18, 0, 0}
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) GetType() DeviceInfo_DeviceResourceRanges_Pool_PoolType {
+	if x != nil {
+		return x.Type
+	}
+	return DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) GetSharing() DeviceInfo_DeviceResourceRanges_Pool_SharingType {
+	if x != nil {
+		return x.Sharing
+	}
+	return DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) GetStart() uint32 {
+	if x != nil {
+		return x.Start
+	}
+	return 0
+}
+
+func (x *DeviceInfo_DeviceResourceRanges_Pool) GetEnd() uint32 {
+	if x != nil {
+		return x.End
+	}
+	return 0
+}
+
+var File_voltha_protos_openolt_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_openolt_proto_rawDesc = "" +
+	"\n" +
+	"\x1bvoltha_protos/openolt.proto\x12\aopenolt\x1a\x1cgoogle/api/annotations.proto\x1a voltha_protos/tech_profile.proto\x1a\x1evoltha_protos/ext_config.proto\x1a\x1evoltha_protos/extensions.proto\x1a\x1avoltha_protos/common.proto\"\xe0\x05\n" +
+	"\n" +
+	"Indication\x121\n" +
+	"\aolt_ind\x18\x01 \x01(\v2\x16.openolt.OltIndicationH\x00R\x06oltInd\x124\n" +
+	"\bintf_ind\x18\x02 \x01(\v2\x17.openolt.IntfIndicationH\x00R\aintfInd\x12A\n" +
+	"\rintf_oper_ind\x18\x03 \x01(\v2\x1b.openolt.IntfOperIndicationH\x00R\vintfOperInd\x12>\n" +
+	"\fonu_disc_ind\x18\x04 \x01(\v2\x1a.openolt.OnuDiscIndicationH\x00R\n" +
+	"onuDiscInd\x121\n" +
+	"\aonu_ind\x18\x05 \x01(\v2\x16.openolt.OnuIndicationH\x00R\x06onuInd\x124\n" +
+	"\bomci_ind\x18\x06 \x01(\v2\x17.openolt.OmciIndicationH\x00R\aomciInd\x124\n" +
+	"\apkt_ind\x18\a \x01(\v2\x19.openolt.PacketIndicationH\x00R\x06pktInd\x127\n" +
+	"\n" +
+	"port_stats\x18\b \x01(\v2\x16.common.PortStatisticsH\x00R\tportStats\x128\n" +
+	"\n" +
+	"flow_stats\x18\t \x01(\v2\x17.openolt.FlowStatisticsH\x00R\tflowStats\x127\n" +
+	"\talarm_ind\x18\n" +
+	" \x01(\v2\x18.openolt.AlarmIndicationH\x00R\balarmInd\x12J\n" +
+	"\x10onu_disabled_ind\x18\v \x01(\v2\x1e.openolt.OnuDisabledIndicationH\x00R\x0eonuDisabledInd\x12G\n" +
+	"\x0fonu_enabled_ind\x18\f \x01(\v2\x1d.openolt.OnuEnabledIndicationH\x00R\ronuEnabledIndB\x06\n" +
+	"\x04data\"\xeb\r\n" +
+	"\x0fAlarmIndication\x121\n" +
+	"\alos_ind\x18\x01 \x01(\v2\x16.openolt.LosIndicationH\x00R\x06losInd\x12D\n" +
+	"\x0edying_gasp_ind\x18\x02 \x01(\v2\x1c.openolt.DyingGaspIndicationH\x00R\fdyingGaspInd\x12A\n" +
+	"\ronu_alarm_ind\x18\x03 \x01(\v2\x1b.openolt.OnuAlarmIndicationH\x00R\vonuAlarmInd\x12W\n" +
+	"\x14onu_startup_fail_ind\x18\x04 \x01(\v2$.openolt.OnuStartupFailureIndicationH\x00R\x11onuStartupFailInd\x12Z\n" +
+	"\x16onu_signal_degrade_ind\x18\x05 \x01(\v2#.openolt.OnuSignalDegradeIndicationH\x00R\x13onuSignalDegradeInd\x12[\n" +
+	"\x17onu_drift_of_window_ind\x18\x06 \x01(\v2#.openolt.OnuDriftOfWindowIndicationH\x00R\x13onuDriftOfWindowInd\x12T\n" +
+	"\x11onu_loss_omci_ind\x18\a \x01(\v2'.openolt.OnuLossOfOmciChannelIndicationH\x00R\x0eonuLossOmciInd\x12W\n" +
+	"\x14onu_signals_fail_ind\x18\b \x01(\v2$.openolt.OnuSignalsFailureIndicationH\x00R\x11onuSignalsFailInd\x12O\n" +
+	"\fonu_tiwi_ind\x18\t \x01(\v2+.openolt.OnuTransmissionInterferenceWarningH\x00R\n" +
+	"onuTiwiInd\x12`\n" +
+	"\x17onu_activation_fail_ind\x18\n" +
+	" \x01(\v2'.openolt.OnuActivationFailureIndicationH\x00R\x14onuActivationFailInd\x12`\n" +
+	"\x18onu_processing_error_ind\x18\v \x01(\v2%.openolt.OnuProcessingErrorIndicationH\x00R\x15onuProcessingErrorInd\x12e\n" +
+	"\x19onu_loss_of_sync_fail_ind\x18\f \x01(\v2*.openolt.OnuLossOfKeySyncFailureIndicationH\x00R\x14onuLossOfSyncFailInd\x12U\n" +
+	"\x15onu_itu_pon_stats_ind\x18\r \x01(\v2!.openolt.OnuItuPonStatsIndicationH\x00R\x11onuItuPonStatsInd\x12l\n" +
+	"\x1conu_deactivation_failure_ind\x18\x0e \x01(\v2).openolt.OnuDeactivationFailureIndicationH\x00R\x19onuDeactivationFailureInd\x12W\n" +
+	"\x15onu_remote_defect_ind\x18\x0f \x01(\v2\".openolt.OnuRemoteDefectIndicationH\x00R\x12onuRemoteDefectInd\x12s\n" +
+	"\x1conu_loss_gem_delineation_ind\x18\x10 \x01(\v21.openolt.OnuLossOfGEMChannelDelineationIndicationH\x00R\x18onuLossGemDelineationInd\x12v\n" +
+	" onu_physical_equipment_error_ind\x18\x11 \x01(\v2,.openolt.OnuPhysicalEquipmentErrorIndicationH\x00R\x1conuPhysicalEquipmentErrorInd\x12[\n" +
+	"\x13onu_loss_of_ack_ind\x18\x12 \x01(\v2+.openolt.OnuLossOfAcknowledgementIndicationH\x00R\x0fonuLossOfAckInd\x12o\n" +
+	"\x1bonu_diff_reach_exceeded_ind\x18\x13 \x01(\v2/.openolt.OnuDifferentialReachExceededIndicationH\x00R\x17onuDiffReachExceededIndB\x06\n" +
+	"\x04data\".\n" +
+	"\rOltIndication\x12\x1d\n" +
+	"\n" +
+	"oper_state\x18\x01 \x01(\tR\toperState\"H\n" +
+	"\x0eIntfIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x1d\n" +
+	"\n" +
+	"oper_state\x18\x02 \x01(\tR\toperState\"h\n" +
+	"\x11OnuDiscIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12:\n" +
+	"\rserial_number\x18\x02 \x01(\v2\x15.openolt.SerialNumberR\fserialNumber\"\x93\x04\n" +
+	"\rOnuIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x1d\n" +
+	"\n" +
+	"oper_state\x18\x03 \x01(\tR\toperState\x12\x1f\n" +
+	"\vadmin_state\x18\x05 \x01(\tR\n" +
+	"adminState\x12:\n" +
+	"\rserial_number\x18\x04 \x01(\v2\x15.openolt.SerialNumberR\fserialNumber\x12L\n" +
+	"\vfail_reason\x18\x06 \x01(\x0e2+.openolt.OnuIndication.ActivationFailReasonR\n" +
+	"failReason\"\x87\x02\n" +
+	"\x14ActivationFailReason\x12#\n" +
+	"\x1fONU_ACTIVATION_FAIL_REASON_NONE\x10\x00\x12&\n" +
+	"\"ONU_ACTIVATION_FAIL_REASON_RANGING\x10\x01\x126\n" +
+	"2ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION\x10\x02\x12\"\n" +
+	"\x1eONU_ACTIVATION_FAIL_REASON_LOS\x10\x03\x12!\n" +
+	"\x1dONU_ACTIVATION_FAIL_ONU_ALARM\x10\x04\x12#\n" +
+	"\x1fONU_ACTIVATION_FAIL_SWITCH_OVER\x10\x05\"\x83\x01\n" +
+	"\x15OnuDisabledIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12:\n" +
+	"\rserial_number\x18\x04 \x01(\v2\x15.openolt.SerialNumberR\fserialNumber\"\x82\x01\n" +
+	"\x14OnuEnabledIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12:\n" +
+	"\rserial_number\x18\x04 \x01(\v2\x15.openolt.SerialNumberR\fserialNumber\"\x82\x04\n" +
+	"\x12IntfOperIndication\x12\x12\n" +
+	"\x04type\x18\x01 \x01(\tR\x04type\x12\x17\n" +
+	"\aintf_id\x18\x02 \x01(\aR\x06intfId\x12\x1d\n" +
+	"\n" +
+	"oper_state\x18\x03 \x01(\tR\toperState\x12\x14\n" +
+	"\x05speed\x18\x04 \x01(\aR\x05speed\x12\x1e\n" +
+	"\n" +
+	"technology\x18\x05 \x01(\tR\n" +
+	"technology\x12E\n" +
+	"\x06ranges\x18\x06 \x01(\v2-.openolt.IntfOperIndication.PONResourceRangesR\x06ranges\x1a\xa2\x02\n" +
+	"\x11PONResourceRanges\x12H\n" +
+	"\x05pools\x18\x03 \x03(\v22.openolt.IntfOperIndication.PONResourceRanges.PoolR\x05pools\x1a\xc2\x01\n" +
+	"\x04Pool\x12O\n" +
+	"\x04type\x18\x01 \x01(\x0e2;.openolt.IntfOperIndication.PONResourceRanges.Pool.PoolTypeR\x04type\x12\x14\n" +
+	"\x05start\x18\x03 \x01(\aR\x05start\x12\x10\n" +
+	"\x03end\x18\x04 \x01(\aR\x03end\"A\n" +
+	"\bPoolType\x12\n" +
+	"\n" +
+	"\x06ONU_ID\x10\x00\x12\f\n" +
+	"\bALLOC_ID\x10\x01\x12\x0e\n" +
+	"\n" +
+	"GEMPORT_ID\x10\x02\x12\v\n" +
+	"\aFLOW_ID\x10\x03\"R\n" +
+	"\x0eOmciIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x10\n" +
+	"\x03pkt\x18\x03 \x01(\fR\x03pkt\"\xf1\x01\n" +
+	"\x10PacketIndication\x12\x1b\n" +
+	"\tintf_type\x18\x05 \x01(\tR\bintfType\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\b \x01(\aR\x05onuId\x12\x15\n" +
+	"\x06uni_id\x18\t \x01(\aR\x05uniId\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x02 \x01(\aR\tgemportId\x12\x17\n" +
+	"\aflow_id\x18\x03 \x01(\aR\x06flowId\x12\x17\n" +
+	"\aport_no\x18\x06 \x01(\aR\x06portNo\x12\x16\n" +
+	"\x06cookie\x18\a \x01(\x06R\x06cookie\x12\x10\n" +
+	"\x03pkt\x18\x04 \x01(\fR\x03pkt\"A\n" +
+	"\tInterface\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x1b\n" +
+	"\tintf_type\x18\x02 \x01(\aR\bintfType\"<\n" +
+	"\tHeartbeat\x12/\n" +
+	"\x13heartbeat_signature\x18\x01 \x01(\aR\x12heartbeatSignature\"\xac\x01\n" +
+	"\x03Onu\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12:\n" +
+	"\rserial_number\x18\x03 \x01(\v2\x15.openolt.SerialNumberR\fserialNumber\x12\x10\n" +
+	"\x03pir\x18\x04 \x01(\aR\x03pir\x12'\n" +
+	"\x0fomcc_encryption\x18\x05 \x01(\bR\x0eomccEncryption\"\xb1\x01\n" +
+	"\x12OnuLogicalDistance\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x129\n" +
+	"\x19logical_onu_distance_zero\x18\x03 \x01(\aR\x16logicalOnuDistanceZero\x120\n" +
+	"\x14logical_onu_distance\x18\x04 \x01(\aR\x12logicalOnuDistance\"K\n" +
+	"\aOmciMsg\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x10\n" +
+	"\x03pkt\x18\x03 \x01(\fR\x03pkt\"\xa0\x01\n" +
+	"\tOnuPacket\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x17\n" +
+	"\aport_no\x18\x04 \x01(\aR\x06portNo\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x05 \x01(\aR\tgemportId\x12\x19\n" +
+	"\balloc_id\x18\x06 \x01(\aR\aallocId\x12\x10\n" +
+	"\x03pkt\x18\x03 \x01(\fR\x03pkt\"9\n" +
+	"\fUplinkPacket\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x10\n" +
+	"\x03pkt\x18\x02 \x01(\fR\x03pkt\"\xb8\a\n" +
+	"\n" +
+	"DeviceInfo\x12\x16\n" +
+	"\x06vendor\x18\x01 \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05model\x18\x02 \x01(\tR\x05model\x12)\n" +
+	"\x10hardware_version\x18\x03 \x01(\tR\x0fhardwareVersion\x12)\n" +
+	"\x10firmware_version\x18\x04 \x01(\tR\x0ffirmwareVersion\x12\x1b\n" +
+	"\tdevice_id\x18\x10 \x01(\tR\bdeviceId\x120\n" +
+	"\x14device_serial_number\x18\x11 \x01(\tR\x12deviceSerialNumber\x121\n" +
+	"\x14previously_connected\x18\x13 \x01(\bR\x13previouslyConnected\x12\x1b\n" +
+	"\tpon_ports\x18\f \x01(\aR\bponPorts\x12\x1b\n" +
+	"\tnni_ports\x18\x14 \x01(\aR\bnniPorts\x12@\n" +
+	"\x06ranges\x18\x0f \x03(\v2(.openolt.DeviceInfo.DeviceResourceRangesR\x06ranges\x1a\x95\x04\n" +
+	"\x14DeviceResourceRanges\x12\x19\n" +
+	"\bintf_ids\x18\x01 \x03(\aR\aintfIds\x12\x1e\n" +
+	"\n" +
+	"technology\x18\x02 \x01(\tR\n" +
+	"technology\x12C\n" +
+	"\x05pools\x18\x03 \x03(\v2-.openolt.DeviceInfo.DeviceResourceRanges.PoolR\x05pools\x1a\xfc\x02\n" +
+	"\x04Pool\x12J\n" +
+	"\x04type\x18\x01 \x01(\x0e26.openolt.DeviceInfo.DeviceResourceRanges.Pool.PoolTypeR\x04type\x12S\n" +
+	"\asharing\x18\x02 \x01(\x0e29.openolt.DeviceInfo.DeviceResourceRanges.Pool.SharingTypeR\asharing\x12\x14\n" +
+	"\x05start\x18\x03 \x01(\aR\x05start\x12\x10\n" +
+	"\x03end\x18\x04 \x01(\aR\x03end\"A\n" +
+	"\bPoolType\x12\n" +
+	"\n" +
+	"\x06ONU_ID\x10\x00\x12\f\n" +
+	"\bALLOC_ID\x10\x01\x12\x0e\n" +
+	"\n" +
+	"GEMPORT_ID\x10\x02\x12\v\n" +
+	"\aFLOW_ID\x10\x03\"h\n" +
+	"\vSharingType\x12\x16\n" +
+	"\x12DEDICATED_PER_INTF\x10\x00\x12\x1f\n" +
+	"\x1bSHARED_BY_ALL_INTF_ALL_TECH\x10\x01\x12 \n" +
+	"\x1cSHARED_BY_ALL_INTF_SAME_TECH\x10\x02J\x04\b\x05\x10\fJ\x04\b\r\x10\x0eJ\x04\b\x0e\x10\x0f\"\x84\x03\n" +
+	"\n" +
+	"Classifier\x12\x15\n" +
+	"\x06o_tpid\x18\x01 \x01(\aR\x05oTpid\x12\x13\n" +
+	"\x05o_vid\x18\x02 \x01(\aR\x04oVid\x12\x15\n" +
+	"\x06i_tpid\x18\x03 \x01(\aR\x05iTpid\x12\x13\n" +
+	"\x05i_vid\x18\x04 \x01(\aR\x04iVid\x12\x17\n" +
+	"\ao_pbits\x18\x05 \x01(\aR\x06oPbits\x12\x17\n" +
+	"\ai_pbits\x18\x06 \x01(\aR\x06iPbits\x12\x19\n" +
+	"\beth_type\x18\a \x01(\aR\aethType\x12\x17\n" +
+	"\adst_mac\x18\b \x01(\fR\x06dstMac\x12\x17\n" +
+	"\asrc_mac\x18\t \x01(\fR\x06srcMac\x12\x19\n" +
+	"\bip_proto\x18\n" +
+	" \x01(\aR\aipProto\x12\x15\n" +
+	"\x06dst_ip\x18\v \x01(\aR\x05dstIp\x12\x15\n" +
+	"\x06src_ip\x18\f \x01(\aR\x05srcIp\x12\x19\n" +
+	"\bsrc_port\x18\r \x01(\aR\asrcPort\x12\x19\n" +
+	"\bdst_port\x18\x0e \x01(\aR\adstPort\x12 \n" +
+	"\fpkt_tag_type\x18\x0f \x01(\tR\n" +
+	"pktTagType\"\x85\x03\n" +
+	"\tActionCmd\x12\"\n" +
+	"\radd_outer_tag\x18\x01 \x01(\bR\vaddOuterTag\x12(\n" +
+	"\x10remove_outer_tag\x18\x02 \x01(\bR\x0eremoveOuterTag\x12 \n" +
+	"\ftrap_to_host\x18\x03 \x01(\bR\n" +
+	"trapToHost\x12,\n" +
+	"\x12remark_outer_pbits\x18\x04 \x01(\bR\x10remarkOuterPbits\x12,\n" +
+	"\x12remark_inner_pbits\x18\x05 \x01(\bR\x10remarkInnerPbits\x12\"\n" +
+	"\radd_inner_tag\x18\x06 \x01(\bR\vaddInnerTag\x12(\n" +
+	"\x10remove_inner_tag\x18\a \x01(\bR\x0eremoveInnerTag\x12.\n" +
+	"\x13translate_inner_tag\x18\b \x01(\bR\x11translateInnerTag\x12.\n" +
+	"\x13translate_outer_tag\x18\t \x01(\bR\x11translateOuterTag\"\xb8\x01\n" +
+	"\x06Action\x12$\n" +
+	"\x03cmd\x18\x01 \x01(\v2\x12.openolt.ActionCmdR\x03cmd\x12\x13\n" +
+	"\x05o_vid\x18\x02 \x01(\aR\x04oVid\x12\x17\n" +
+	"\ao_pbits\x18\x03 \x01(\aR\x06oPbits\x12\x15\n" +
+	"\x06o_tpid\x18\x04 \x01(\aR\x05oTpid\x12\x13\n" +
+	"\x05i_vid\x18\x05 \x01(\aR\x04iVid\x12\x17\n" +
+	"\ai_pbits\x18\x06 \x01(\aR\x06iPbits\x12\x15\n" +
+	"\x06i_tpid\x18\a \x01(\aR\x05iTpid\"\xc7\x06\n" +
+	"\x04Flow\x12$\n" +
+	"\x0eaccess_intf_id\x18\x01 \x01(\x0fR\faccessIntfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\x0fR\x05onuId\x12\x15\n" +
+	"\x06uni_id\x18\v \x01(\x0fR\x05uniId\x12\x17\n" +
+	"\aflow_id\x18\x03 \x01(\x06R\x06flowId\x12*\n" +
+	"\x11symmetric_flow_id\x18\x12 \x01(\x06R\x0fsymmetricFlowId\x12\x1b\n" +
+	"\tflow_type\x18\x04 \x01(\tR\bflowType\x12\x19\n" +
+	"\balloc_id\x18\n" +
+	" \x01(\x0fR\aallocId\x12&\n" +
+	"\x0fnetwork_intf_id\x18\x05 \x01(\x0fR\rnetworkIntfId\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x06 \x01(\x0fR\tgemportId\x123\n" +
+	"\n" +
+	"classifier\x18\a \x01(\v2\x13.openolt.ClassifierR\n" +
+	"classifier\x12'\n" +
+	"\x06action\x18\b \x01(\v2\x0f.openolt.ActionR\x06action\x12\x1a\n" +
+	"\bpriority\x18\t \x01(\x0fR\bpriority\x12\x16\n" +
+	"\x06cookie\x18\f \x01(\x06R\x06cookie\x12\x17\n" +
+	"\aport_no\x18\r \x01(\aR\x06portNo\x12\x19\n" +
+	"\bgroup_id\x18\x0e \x01(\aR\agroupId\x12&\n" +
+	"\x0ftech_profile_id\x18\x0f \x01(\aR\rtechProfileId\x12%\n" +
+	"\x0ereplicate_flow\x18\x10 \x01(\bR\rreplicateFlow\x12H\n" +
+	"\x0fpbit_to_gemport\x18\x11 \x03(\v2 .openolt.Flow.PbitToGemportEntryR\rpbitToGemport\x12E\n" +
+	"\x0egemport_to_aes\x18\x13 \x03(\v2\x1f.openolt.Flow.GemportToAesEntryR\fgemportToAes\x1a@\n" +
+	"\x12PbitToGemportEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\aR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\aR\x05value:\x028\x01\x1a?\n" +
+	"\x11GemportToAesEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\aR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\bR\x05value:\x028\x01\"T\n" +
+	"\fSerialNumber\x12\x1b\n" +
+	"\tvendor_id\x18\x01 \x01(\fR\bvendorId\x12'\n" +
+	"\x0fvendor_specific\x18\x02 \x01(\fR\x0evendorSpecific\"\xe6\a\n" +
+	"\rOnuStatistics\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12%\n" +
+	"\x0epositive_drift\x18\x03 \x01(\x06R\rpositiveDrift\x12%\n" +
+	"\x0enegative_drift\x18\x04 \x01(\x06R\rnegativeDrift\x128\n" +
+	"\x18delimiter_miss_detection\x18\x05 \x01(\x06R\x16delimiterMissDetection\x12\x1d\n" +
+	"\n" +
+	"bip_errors\x18\x06 \x01(\x06R\tbipErrors\x12\x1b\n" +
+	"\tbip_units\x18\a \x01(\x06R\bbipUnits\x122\n" +
+	"\x15fec_corrected_symbols\x18\b \x01(\x06R\x13fecCorrectedSymbols\x126\n" +
+	"\x17fec_codewords_corrected\x18\t \x01(\x06R\x15fecCodewordsCorrected\x12>\n" +
+	"\x1bfec_codewords_uncorrectable\x18\n" +
+	" \x01(\x06R\x19fecCodewordsUncorrectable\x12#\n" +
+	"\rfec_codewords\x18\v \x01(\x06R\ffecCodewords\x12.\n" +
+	"\x13fec_corrected_units\x18\f \x01(\x06R\x11fecCorrectedUnits\x12&\n" +
+	"\x0fxgem_key_errors\x18\r \x01(\x06R\rxgemKeyErrors\x12\x1b\n" +
+	"\txgem_loss\x18\x0e \x01(\x06R\bxgemLoss\x12&\n" +
+	"\x0frx_ploams_error\x18\x0f \x01(\x06R\rrxPloamsError\x12+\n" +
+	"\x12rx_ploams_non_idle\x18\x10 \x01(\x06R\x0frxPloamsNonIdle\x12\x17\n" +
+	"\arx_omci\x18\x11 \x01(\x06R\x06rxOmci\x128\n" +
+	"\x19rx_omci_packets_crc_error\x18\x12 \x01(\x06R\x15rxOmciPacketsCrcError\x12\x19\n" +
+	"\brx_bytes\x18\x13 \x01(\x06R\arxBytes\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x14 \x01(\x06R\trxPackets\x12\x19\n" +
+	"\btx_bytes\x18\x15 \x01(\x06R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x16 \x01(\x06R\ttxPackets\x12!\n" +
+	"\fber_reported\x18\x17 \x01(\x06R\vberReported\x12\x1f\n" +
+	"\vlcdg_errors\x18\x18 \x01(\x06R\n" +
+	"lcdgErrors\x12\x1d\n" +
+	"\n" +
+	"rdi_errors\x18\x19 \x01(\x06R\trdiErrors\x12\x1c\n" +
+	"\ttimestamp\x18\x1a \x01(\aR\ttimestamp\"\xdd\x01\n" +
+	"\x11GemPortStatistics\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x02 \x01(\aR\tgemportId\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x03 \x01(\x06R\trxPackets\x12\x19\n" +
+	"\brx_bytes\x18\x04 \x01(\x06R\arxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\x05 \x01(\x06R\ttxPackets\x12\x19\n" +
+	"\btx_bytes\x18\x06 \x01(\x06R\atxBytes\x12\x1c\n" +
+	"\ttimestamp\x18\x1a \x01(\aR\ttimestamp\"\xbb\x01\n" +
+	"\x0eFlowStatistics\x12\x17\n" +
+	"\aflow_id\x18\x01 \x01(\aR\x06flowId\x12\x19\n" +
+	"\brx_bytes\x18\x02 \x01(\x06R\arxBytes\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\x03 \x01(\x06R\trxPackets\x12\x19\n" +
+	"\btx_bytes\x18\b \x01(\x06R\atxBytes\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\t \x01(\x06R\ttxPackets\x12\x1c\n" +
+	"\ttimestamp\x18\x10 \x01(\aR\ttimestamp\"@\n" +
+	"\rLosIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x16\n" +
+	"\x06status\x18\x02 \x01(\tR\x06status\"]\n" +
+	"\x13DyingGaspIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"\xa3\x02\n" +
+	"\x12OnuAlarmIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x1d\n" +
+	"\n" +
+	"los_status\x18\x03 \x01(\tR\tlosStatus\x12\x1d\n" +
+	"\n" +
+	"lob_status\x18\x04 \x01(\tR\tlobStatus\x12(\n" +
+	"\x10lopc_miss_status\x18\x05 \x01(\tR\x0elopcMissStatus\x121\n" +
+	"\x15lopc_mic_error_status\x18\x06 \x01(\tR\x12lopcMicErrorStatus\x12\x1f\n" +
+	"\vlofi_status\x18\a \x01(\tR\n" +
+	"lofiStatus\x12!\n" +
+	"\floami_status\x18\b \x01(\tR\vloamiStatus\"e\n" +
+	"\x1bOnuStartupFailureIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"\x99\x01\n" +
+	"\x1aOnuSignalDegradeIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x123\n" +
+	"\x16inverse_bit_error_rate\x18\x04 \x01(\aR\x13inverseBitErrorRate\"\x93\x01\n" +
+	"\x1aOnuDriftOfWindowIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12\x14\n" +
+	"\x05drift\x18\x04 \x01(\aR\x05drift\x12\x17\n" +
+	"\anew_eqd\x18\x05 \x01(\aR\x06newEqd\"h\n" +
+	"\x1eOnuLossOfOmciChannelIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"\x9a\x01\n" +
+	"\x1bOnuSignalsFailureIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x123\n" +
+	"\x16inverse_bit_error_rate\x18\x04 \x01(\aR\x13inverseBitErrorRate\"\x82\x01\n" +
+	"\"OnuTransmissionInterferenceWarning\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12\x14\n" +
+	"\x05drift\x18\x04 \x01(\aR\x05drift\"q\n" +
+	"\x1eOnuActivationFailureIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x1f\n" +
+	"\vfail_reason\x18\x03 \x01(\aR\n" +
+	"failReason\"k\n" +
+	"!OnuLossOfKeySyncFailureIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"T\n" +
+	"\x12RdiErrorIndication\x12&\n" +
+	"\x0frdi_error_count\x18\x01 \x01(\x06R\rrdiErrorCount\x12\x16\n" +
+	"\x06status\x18\x02 \x01(\tR\x06status\"\x96\x01\n" +
+	"\x18OnuItuPonStatsIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12A\n" +
+	"\rrdi_error_ind\x18\x03 \x01(\v2\x1b.openolt.RdiErrorIndicationH\x00R\vrdiErrorIndB\a\n" +
+	"\x05stats\"N\n" +
+	"\x1cOnuProcessingErrorIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"j\n" +
+	" OnuDeactivationFailureIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"j\n" +
+	"\x19OnuRemoteDefectIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x1d\n" +
+	"\n" +
+	"rdi_errors\x18\x03 \x01(\x06R\trdiErrors\"\xa1\x01\n" +
+	"(OnuLossOfGEMChannelDelineationIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12-\n" +
+	"\x12delineation_errors\x18\x04 \x01(\aR\x11delineationErrors\"m\n" +
+	"#OnuPhysicalEquipmentErrorIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"l\n" +
+	"\"OnuLossOfAcknowledgementIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\"\x8c\x01\n" +
+	"&OnuDifferentialReachExceededIndication\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12\x1a\n" +
+	"\bdistance\x18\x04 \x01(\aR\bdistance\"\xf6\x01\n" +
+	"\vGroupMember\x12!\n" +
+	"\finterface_id\x18\x01 \x01(\rR\vinterfaceId\x12I\n" +
+	"\x0einterface_type\x18\x02 \x01(\x0e2\".openolt.GroupMember.InterfaceTypeR\rinterfaceType\x12\x1e\n" +
+	"\vgem_port_id\x18\x03 \x01(\rR\tgemPortId\x12\x1a\n" +
+	"\bpriority\x18\x04 \x01(\rR\bpriority\"=\n" +
+	"\rInterfaceType\x12\a\n" +
+	"\x03PON\x10\x00\x12\x10\n" +
+	"\fEPON_1G_PATH\x10\x01\x12\x11\n" +
+	"\rEPON_10G_PATH\x10\x02\"\x86\x02\n" +
+	"\x05Group\x12\x19\n" +
+	"\bgroup_id\x18\x01 \x01(\rR\agroupId\x12<\n" +
+	"\acommand\x18\x02 \x01(\x0e2\".openolt.Group.GroupMembersCommandR\acommand\x12.\n" +
+	"\amembers\x18\x03 \x03(\v2\x14.openolt.GroupMemberR\amembers\x12'\n" +
+	"\x06action\x18\x04 \x01(\v2\x0f.openolt.ActionR\x06action\"K\n" +
+	"\x13GroupMembersCommand\x12\x0f\n" +
+	"\vADD_MEMBERS\x10\x00\x12\x12\n" +
+	"\x0eREMOVE_MEMBERS\x10\x01\x12\x0f\n" +
+	"\vSET_MEMBERS\x10\x02\"]\n" +
+	"\n" +
+	"ValueParam\x12\x1e\n" +
+	"\x03onu\x18\x01 \x01(\v2\f.openolt.OnuR\x03onu\x12/\n" +
+	"\x05value\x18\x02 \x01(\x0e2\x19.extension.ValueType.TypeR\x05value\"\xc3\x02\n" +
+	"\x0ePonRxPowerData\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x16\n" +
+	"\x06status\x18\x03 \x01(\tR\x06status\x12R\n" +
+	"\vfail_reason\x18\x04 \x01(\x0e21.openolt.PonRxPowerData.RssiMeasurementFailReasonR\n" +
+	"failReason\x12)\n" +
+	"\x11rx_power_mean_dbm\x18\x05 \x01(\x01R\x0erxPowerMeanDbm\"j\n" +
+	"\x19RssiMeasurementFailReason\x12\x14\n" +
+	"\x10FAIL_REASON_NONE\x10\x00\x12\x1c\n" +
+	"\x18FAIL_REASON_NO_DELIMITER\x10\x01\x12\x19\n" +
+	"\x15FAIL_REASON_NO_ACCESS\x10\x02\"b\n" +
+	"\x14OnuAllocIdStatistics\x12\x16\n" +
+	"\x06intfId\x18\x01 \x01(\aR\x06intfId\x12\x18\n" +
+	"\aallocId\x18\x02 \x01(\aR\aallocId\x12\x18\n" +
+	"\arxBytes\x18\x03 \x01(\x06R\arxBytes\"\xa3\x02\n" +
+	"\aOnuInfo\x12\x15\n" +
+	"\x06onu_id\x18\x01 \x01(\aR\x05onuId\x12/\n" +
+	"\x05state\x18\x02 \x01(\x0e2\x19.openolt.OnuInfo.OnuStateR\x05state\x12'\n" +
+	"\x04losi\x18\x03 \x01(\x0e2\x13.openolt.AlarmStateR\x04losi\x12'\n" +
+	"\x04lofi\x18\x04 \x01(\x0e2\x13.openolt.AlarmStateR\x04lofi\x12)\n" +
+	"\x05loami\x18\x05 \x01(\x0e2\x13.openolt.AlarmStateR\x05loami\"S\n" +
+	"\bOnuState\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eNOT_CONFIGURED\x10\x01\x12\n" +
+	"\n" +
+	"\x06ACTIVE\x10\x02\x12\f\n" +
+	"\bINACTIVE\x10\x03\x12\f\n" +
+	"\bDISABLED\x10\x04\"\xe7\x01\n" +
+	"\vPonIntfInfo\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x127\n" +
+	"\x05state\x18\x03 \x01(\x0e2!.openolt.PonIntfInfo.PonIntfStateR\x05state\x12%\n" +
+	"\x03los\x18\x04 \x01(\x0e2\x13.openolt.AlarmStateR\x03los\"_\n" +
+	"\fPonIntfState\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eACTIVE_WORKING\x10\x01\x12\x12\n" +
+	"\x0eACTIVE_STANDBY\x10\x02\x12\f\n" +
+	"\bINACTIVE\x10\x03\x12\f\n" +
+	"\bDISABLED\x10\x04\"\x86\x01\n" +
+	"\x1dInterfaceOnuSerialNumberOnuId\x12N\n" +
+	"\x12intf_id_serial_num\x18\x01 \x01(\v2!.openolt.InterfaceOnuSerialNumberR\x0fintfIdSerialNum\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\"v\n" +
+	"\x18InterfaceOnuSerialNumber\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12A\n" +
+	"\x11onu_serial_number\x18\x02 \x01(\v2\x15.openolt.SerialNumberR\x0fonuSerialNumber\"\a\n" +
+	"\x05Empty*\x1d\n" +
+	"\n" +
+	"AlarmState\x12\a\n" +
+	"\x03OFF\x10\x00\x12\x06\n" +
+	"\x02ON\x10\x012\xa6\x1b\n" +
+	"\aOpenolt\x12D\n" +
+	"\n" +
+	"DisableOlt\x12\x0e.openolt.Empty\x1a\x0e.openolt.Empty\"\x16\x82\xd3\xe4\x93\x02\x10:\x01*\"\v/v1/Disable\x12F\n" +
+	"\vReenableOlt\x12\x0e.openolt.Empty\x1a\x0e.openolt.Empty\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/v1/Reenable\x12E\n" +
+	"\vActivateOnu\x12\f.openolt.Onu\x1a\x0e.openolt.Empty\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/v1/EnableOnu\x12H\n" +
+	"\rDeactivateOnu\x12\f.openolt.Onu\x1a\x0e.openolt.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/DisableOnu\x12C\n" +
+	"\tDeleteOnu\x12\f.openolt.Onu\x1a\x0e.openolt.Empty\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/v1/DeleteOnu\x12I\n" +
+	"\n" +
+	"OmciMsgOut\x12\x10.openolt.OmciMsg\x1a\x0e.openolt.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/OmciMsgOut\x12O\n" +
+	"\fOnuPacketOut\x12\x12.openolt.OnuPacket\x1a\x0e.openolt.Empty\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/v1/OnuPacketOut\x12X\n" +
+	"\x0fUplinkPacketOut\x12\x15.openolt.UplinkPacket\x1a\x0e.openolt.Empty\"\x1e\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/v1/UplinkPacketOut\x12@\n" +
+	"\aFlowAdd\x12\r.openolt.Flow\x1a\x0e.openolt.Empty\"\x16\x82\xd3\xe4\x93\x02\x10:\x01*\"\v/v1/FlowAdd\x12F\n" +
+	"\n" +
+	"FlowRemove\x12\r.openolt.Flow\x1a\x0e.openolt.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/FlowRemove\x12S\n" +
+	"\x0eHeartbeatCheck\x12\x0e.openolt.Empty\x1a\x12.openolt.Heartbeat\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/v1/HeartbeatCheck\x12M\n" +
+	"\vEnablePonIf\x12\x12.openolt.Interface\x1a\x0e.openolt.Empty\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/EnablePonIf\x12O\n" +
+	"\fDisablePonIf\x12\x12.openolt.Interface\x1a\x0e.openolt.Empty\"\x1b\x82\xd3\xe4\x93\x02\x15:\x01*\"\x10/v1/DisablePonIf\x12R\n" +
+	"\rGetDeviceInfo\x12\x0e.openolt.Empty\x1a\x13.openolt.DeviceInfo\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v1/GetDeviceInfo\x12?\n" +
+	"\x06Reboot\x12\x0e.openolt.Empty\x1a\x0e.openolt.Empty\"\x15\x82\xd3\xe4\x93\x02\x0f:\x01*\"\n" +
+	"/v1/Reboot\x12U\n" +
+	"\x11CollectStatistics\x12\x0e.openolt.Empty\x1a\x0e.openolt.Empty\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v1/CollectStatistics\x12Y\n" +
+	"\x10GetOnuStatistics\x12\f.openolt.Onu\x1a\x16.openolt.OnuStatistics\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v1/GetOnuStatistics\x12k\n" +
+	"\x14GetGemPortStatistics\x12\x12.openolt.OnuPacket\x1a\x1a.openolt.GemPortStatistics\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/GetGemPortStatistics\x12r\n" +
+	"\x17CreateTrafficSchedulers\x12\x1f.tech_profile.TrafficSchedulers\x1a\x0e.openolt.Empty\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/v1/CreateTrafficSchedulers\x12r\n" +
+	"\x17RemoveTrafficSchedulers\x12\x1f.tech_profile.TrafficSchedulers\x1a\x0e.openolt.Empty\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/v1/RemoveTrafficSchedulers\x12f\n" +
+	"\x13CreateTrafficQueues\x12\x1b.tech_profile.TrafficQueues\x1a\x0e.openolt.Empty\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/v1/CreateTrafficQueues\x12f\n" +
+	"\x13RemoveTrafficQueues\x12\x1b.tech_profile.TrafficQueues\x1a\x0e.openolt.Empty\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/v1/RemoveTrafficQueues\x12;\n" +
+	"\x10EnableIndication\x12\x0e.openolt.Empty\x1a\x13.openolt.Indication\"\x000\x01\x12]\n" +
+	"\x15PerformGroupOperation\x12\x0e.openolt.Group\x1a\x0e.openolt.Empty\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v1/PerformGroupOperation\x12I\n" +
+	"\vDeleteGroup\x12\x0e.openolt.Group\x1a\x0e.openolt.Empty\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/DeleteGroup\x12W\n" +
+	"\vGetExtValue\x12\x13.openolt.ValueParam\x1a\x17.extension.ReturnValues\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/GetExtValue\x12]\n" +
+	"\x11OnuItuPonAlarmSet\x12\x16.config.OnuItuPonAlarm\x1a\x0e.openolt.Empty\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/v1/OnuItuPonAlarmSet\x12p\n" +
+	"\x19GetLogicalOnuDistanceZero\x12\f.openolt.Onu\x1a\x1b.openolt.OnuLogicalDistance\"(\x82\xd3\xe4\x93\x02\":\x01*\"\x1d/v1/GetLogicalOnuDistanceZero\x12h\n" +
+	"\x15GetLogicalOnuDistance\x12\f.openolt.Onu\x1a\x1b.openolt.OnuLogicalDistance\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/v1/GetLogicalOnuDistance\x12T\n" +
+	"\rGetPonRxPower\x12\f.openolt.Onu\x1a\x17.openolt.PonRxPowerData\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/v1/GetPonRxPower\x12G\n" +
+	"\n" +
+	"GetOnuInfo\x12\f.openolt.Onu\x1a\x10.openolt.OnuInfo\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/GetOnuInfo\x12`\n" +
+	"\x13GetPonInterfaceInfo\x12\x12.openolt.Interface\x1a\x14.openolt.PonIntfInfo\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/v1/GetInterfaceInfo\x12n\n" +
+	"\x14GetAllocIdStatistics\x12\x12.openolt.OnuPacket\x1a\x1d.openolt.OnuAllocIdStatistics\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/GetAllocIdStatistics\x12g\n" +
+	"\x14GetPonPortStatistics\x12\x12.openolt.Interface\x1a\x16.common.PortStatistics\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/GetPonPortStatistics\x12g\n" +
+	"\x14GetNniPortStatistics\x12\x12.openolt.Interface\x1a\x16.common.PortStatistics\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/v1/GetNniPortStatistics\x12\\\n" +
+	"\n" +
+	"DisableOnu\x12&.openolt.InterfaceOnuSerialNumberOnuId\x1a\x0e.openolt.Empty\"\x16\x82\xd3\xe4\x93\x02\x10\"\x0e/v1/DisableOnu\x12Z\n" +
+	"\tEnableOnu\x12&.openolt.InterfaceOnuSerialNumberOnuId\x1a\x0e.openolt.Empty\"\x15\x82\xd3\xe4\x93\x02\x0f\"\r/v1/EnableOnu\x12o\n" +
+	"\x16DisableOnuSerialNumber\x12!.openolt.InterfaceOnuSerialNumber\x1a\x0e.openolt.Empty\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/v1/DisableOnuSerialNumber\x12m\n" +
+	"\x15EnableOnuSerialNumber\x12!.openolt.InterfaceOnuSerialNumber\x1a\x0e.openolt.Empty\"!\x82\xd3\xe4\x93\x02\x1b\"\x19/v1/EnableOnuSerialNumberB]\n" +
+	"\x1borg.opencord.voltha.openoltB\rVolthaOpenOLTZ/github.com/opencord/voltha-protos/v5/go/openoltb\x06proto3"
+
+var (
+	file_voltha_protos_openolt_proto_rawDescOnce sync.Once
+	file_voltha_protos_openolt_proto_rawDescData []byte
+)
+
+func file_voltha_protos_openolt_proto_rawDescGZIP() []byte {
+	file_voltha_protos_openolt_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_openolt_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_openolt_proto_rawDesc), len(file_voltha_protos_openolt_proto_rawDesc)))
+	})
+	return file_voltha_protos_openolt_proto_rawDescData
+}
+
+var file_voltha_protos_openolt_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_voltha_protos_openolt_proto_msgTypes = make([]protoimpl.MessageInfo, 63)
+var file_voltha_protos_openolt_proto_goTypes = []any{
+	(AlarmState)(0),                                         // 0: openolt.AlarmState
+	(OnuIndication_ActivationFailReason)(0),                 // 1: openolt.OnuIndication.ActivationFailReason
+	(IntfOperIndication_PONResourceRanges_Pool_PoolType)(0), // 2: openolt.IntfOperIndication.PONResourceRanges.Pool.PoolType
+	(DeviceInfo_DeviceResourceRanges_Pool_PoolType)(0),      // 3: openolt.DeviceInfo.DeviceResourceRanges.Pool.PoolType
+	(DeviceInfo_DeviceResourceRanges_Pool_SharingType)(0),   // 4: openolt.DeviceInfo.DeviceResourceRanges.Pool.SharingType
+	(GroupMember_InterfaceType)(0),                          // 5: openolt.GroupMember.InterfaceType
+	(Group_GroupMembersCommand)(0),                          // 6: openolt.Group.GroupMembersCommand
+	(PonRxPowerData_RssiMeasurementFailReason)(0),           // 7: openolt.PonRxPowerData.RssiMeasurementFailReason
+	(OnuInfo_OnuState)(0),                                   // 8: openolt.OnuInfo.OnuState
+	(PonIntfInfo_PonIntfState)(0),                           // 9: openolt.PonIntfInfo.PonIntfState
+	(*Indication)(nil),                                      // 10: openolt.Indication
+	(*AlarmIndication)(nil),                                 // 11: openolt.AlarmIndication
+	(*OltIndication)(nil),                                   // 12: openolt.OltIndication
+	(*IntfIndication)(nil),                                  // 13: openolt.IntfIndication
+	(*OnuDiscIndication)(nil),                               // 14: openolt.OnuDiscIndication
+	(*OnuIndication)(nil),                                   // 15: openolt.OnuIndication
+	(*OnuDisabledIndication)(nil),                           // 16: openolt.OnuDisabledIndication
+	(*OnuEnabledIndication)(nil),                            // 17: openolt.OnuEnabledIndication
+	(*IntfOperIndication)(nil),                              // 18: openolt.IntfOperIndication
+	(*OmciIndication)(nil),                                  // 19: openolt.OmciIndication
+	(*PacketIndication)(nil),                                // 20: openolt.PacketIndication
+	(*Interface)(nil),                                       // 21: openolt.Interface
+	(*Heartbeat)(nil),                                       // 22: openolt.Heartbeat
+	(*Onu)(nil),                                             // 23: openolt.Onu
+	(*OnuLogicalDistance)(nil),                              // 24: openolt.OnuLogicalDistance
+	(*OmciMsg)(nil),                                         // 25: openolt.OmciMsg
+	(*OnuPacket)(nil),                                       // 26: openolt.OnuPacket
+	(*UplinkPacket)(nil),                                    // 27: openolt.UplinkPacket
+	(*DeviceInfo)(nil),                                      // 28: openolt.DeviceInfo
+	(*Classifier)(nil),                                      // 29: openolt.Classifier
+	(*ActionCmd)(nil),                                       // 30: openolt.ActionCmd
+	(*Action)(nil),                                          // 31: openolt.Action
+	(*Flow)(nil),                                            // 32: openolt.Flow
+	(*SerialNumber)(nil),                                    // 33: openolt.SerialNumber
+	(*OnuStatistics)(nil),                                   // 34: openolt.OnuStatistics
+	(*GemPortStatistics)(nil),                               // 35: openolt.GemPortStatistics
+	(*FlowStatistics)(nil),                                  // 36: openolt.FlowStatistics
+	(*LosIndication)(nil),                                   // 37: openolt.LosIndication
+	(*DyingGaspIndication)(nil),                             // 38: openolt.DyingGaspIndication
+	(*OnuAlarmIndication)(nil),                              // 39: openolt.OnuAlarmIndication
+	(*OnuStartupFailureIndication)(nil),                     // 40: openolt.OnuStartupFailureIndication
+	(*OnuSignalDegradeIndication)(nil),                      // 41: openolt.OnuSignalDegradeIndication
+	(*OnuDriftOfWindowIndication)(nil),                      // 42: openolt.OnuDriftOfWindowIndication
+	(*OnuLossOfOmciChannelIndication)(nil),                  // 43: openolt.OnuLossOfOmciChannelIndication
+	(*OnuSignalsFailureIndication)(nil),                     // 44: openolt.OnuSignalsFailureIndication
+	(*OnuTransmissionInterferenceWarning)(nil),              // 45: openolt.OnuTransmissionInterferenceWarning
+	(*OnuActivationFailureIndication)(nil),                  // 46: openolt.OnuActivationFailureIndication
+	(*OnuLossOfKeySyncFailureIndication)(nil),               // 47: openolt.OnuLossOfKeySyncFailureIndication
+	(*RdiErrorIndication)(nil),                              // 48: openolt.RdiErrorIndication
+	(*OnuItuPonStatsIndication)(nil),                        // 49: openolt.OnuItuPonStatsIndication
+	(*OnuProcessingErrorIndication)(nil),                    // 50: openolt.OnuProcessingErrorIndication
+	(*OnuDeactivationFailureIndication)(nil),                // 51: openolt.OnuDeactivationFailureIndication
+	(*OnuRemoteDefectIndication)(nil),                       // 52: openolt.OnuRemoteDefectIndication
+	(*OnuLossOfGEMChannelDelineationIndication)(nil),        // 53: openolt.OnuLossOfGEMChannelDelineationIndication
+	(*OnuPhysicalEquipmentErrorIndication)(nil),             // 54: openolt.OnuPhysicalEquipmentErrorIndication
+	(*OnuLossOfAcknowledgementIndication)(nil),              // 55: openolt.OnuLossOfAcknowledgementIndication
+	(*OnuDifferentialReachExceededIndication)(nil),          // 56: openolt.OnuDifferentialReachExceededIndication
+	(*GroupMember)(nil),                                     // 57: openolt.GroupMember
+	(*Group)(nil),                                           // 58: openolt.Group
+	(*ValueParam)(nil),                                      // 59: openolt.ValueParam
+	(*PonRxPowerData)(nil),                                  // 60: openolt.PonRxPowerData
+	(*OnuAllocIdStatistics)(nil),                            // 61: openolt.OnuAllocIdStatistics
+	(*OnuInfo)(nil),                                         // 62: openolt.OnuInfo
+	(*PonIntfInfo)(nil),                                     // 63: openolt.PonIntfInfo
+	(*InterfaceOnuSerialNumberOnuId)(nil),                   // 64: openolt.InterfaceOnuSerialNumberOnuId
+	(*InterfaceOnuSerialNumber)(nil),                        // 65: openolt.InterfaceOnuSerialNumber
+	(*Empty)(nil),                                           // 66: openolt.Empty
+	(*IntfOperIndication_PONResourceRanges)(nil),            // 67: openolt.IntfOperIndication.PONResourceRanges
+	(*IntfOperIndication_PONResourceRanges_Pool)(nil),       // 68: openolt.IntfOperIndication.PONResourceRanges.Pool
+	(*DeviceInfo_DeviceResourceRanges)(nil),                 // 69: openolt.DeviceInfo.DeviceResourceRanges
+	(*DeviceInfo_DeviceResourceRanges_Pool)(nil),            // 70: openolt.DeviceInfo.DeviceResourceRanges.Pool
+	nil,                                    // 71: openolt.Flow.PbitToGemportEntry
+	nil,                                    // 72: openolt.Flow.GemportToAesEntry
+	(*common.PortStatistics)(nil),          // 73: common.PortStatistics
+	(extension.ValueType_Type)(0),          // 74: extension.ValueType.Type
+	(*tech_profile.TrafficSchedulers)(nil), // 75: tech_profile.TrafficSchedulers
+	(*tech_profile.TrafficQueues)(nil),     // 76: tech_profile.TrafficQueues
+	(*config.OnuItuPonAlarm)(nil),          // 77: config.OnuItuPonAlarm
+	(*extension.ReturnValues)(nil),         // 78: extension.ReturnValues
+}
+var file_voltha_protos_openolt_proto_depIdxs = []int32{
+	12,  // 0: openolt.Indication.olt_ind:type_name -> openolt.OltIndication
+	13,  // 1: openolt.Indication.intf_ind:type_name -> openolt.IntfIndication
+	18,  // 2: openolt.Indication.intf_oper_ind:type_name -> openolt.IntfOperIndication
+	14,  // 3: openolt.Indication.onu_disc_ind:type_name -> openolt.OnuDiscIndication
+	15,  // 4: openolt.Indication.onu_ind:type_name -> openolt.OnuIndication
+	19,  // 5: openolt.Indication.omci_ind:type_name -> openolt.OmciIndication
+	20,  // 6: openolt.Indication.pkt_ind:type_name -> openolt.PacketIndication
+	73,  // 7: openolt.Indication.port_stats:type_name -> common.PortStatistics
+	36,  // 8: openolt.Indication.flow_stats:type_name -> openolt.FlowStatistics
+	11,  // 9: openolt.Indication.alarm_ind:type_name -> openolt.AlarmIndication
+	16,  // 10: openolt.Indication.onu_disabled_ind:type_name -> openolt.OnuDisabledIndication
+	17,  // 11: openolt.Indication.onu_enabled_ind:type_name -> openolt.OnuEnabledIndication
+	37,  // 12: openolt.AlarmIndication.los_ind:type_name -> openolt.LosIndication
+	38,  // 13: openolt.AlarmIndication.dying_gasp_ind:type_name -> openolt.DyingGaspIndication
+	39,  // 14: openolt.AlarmIndication.onu_alarm_ind:type_name -> openolt.OnuAlarmIndication
+	40,  // 15: openolt.AlarmIndication.onu_startup_fail_ind:type_name -> openolt.OnuStartupFailureIndication
+	41,  // 16: openolt.AlarmIndication.onu_signal_degrade_ind:type_name -> openolt.OnuSignalDegradeIndication
+	42,  // 17: openolt.AlarmIndication.onu_drift_of_window_ind:type_name -> openolt.OnuDriftOfWindowIndication
+	43,  // 18: openolt.AlarmIndication.onu_loss_omci_ind:type_name -> openolt.OnuLossOfOmciChannelIndication
+	44,  // 19: openolt.AlarmIndication.onu_signals_fail_ind:type_name -> openolt.OnuSignalsFailureIndication
+	45,  // 20: openolt.AlarmIndication.onu_tiwi_ind:type_name -> openolt.OnuTransmissionInterferenceWarning
+	46,  // 21: openolt.AlarmIndication.onu_activation_fail_ind:type_name -> openolt.OnuActivationFailureIndication
+	50,  // 22: openolt.AlarmIndication.onu_processing_error_ind:type_name -> openolt.OnuProcessingErrorIndication
+	47,  // 23: openolt.AlarmIndication.onu_loss_of_sync_fail_ind:type_name -> openolt.OnuLossOfKeySyncFailureIndication
+	49,  // 24: openolt.AlarmIndication.onu_itu_pon_stats_ind:type_name -> openolt.OnuItuPonStatsIndication
+	51,  // 25: openolt.AlarmIndication.onu_deactivation_failure_ind:type_name -> openolt.OnuDeactivationFailureIndication
+	52,  // 26: openolt.AlarmIndication.onu_remote_defect_ind:type_name -> openolt.OnuRemoteDefectIndication
+	53,  // 27: openolt.AlarmIndication.onu_loss_gem_delineation_ind:type_name -> openolt.OnuLossOfGEMChannelDelineationIndication
+	54,  // 28: openolt.AlarmIndication.onu_physical_equipment_error_ind:type_name -> openolt.OnuPhysicalEquipmentErrorIndication
+	55,  // 29: openolt.AlarmIndication.onu_loss_of_ack_ind:type_name -> openolt.OnuLossOfAcknowledgementIndication
+	56,  // 30: openolt.AlarmIndication.onu_diff_reach_exceeded_ind:type_name -> openolt.OnuDifferentialReachExceededIndication
+	33,  // 31: openolt.OnuDiscIndication.serial_number:type_name -> openolt.SerialNumber
+	33,  // 32: openolt.OnuIndication.serial_number:type_name -> openolt.SerialNumber
+	1,   // 33: openolt.OnuIndication.fail_reason:type_name -> openolt.OnuIndication.ActivationFailReason
+	33,  // 34: openolt.OnuDisabledIndication.serial_number:type_name -> openolt.SerialNumber
+	33,  // 35: openolt.OnuEnabledIndication.serial_number:type_name -> openolt.SerialNumber
+	67,  // 36: openolt.IntfOperIndication.ranges:type_name -> openolt.IntfOperIndication.PONResourceRanges
+	33,  // 37: openolt.Onu.serial_number:type_name -> openolt.SerialNumber
+	69,  // 38: openolt.DeviceInfo.ranges:type_name -> openolt.DeviceInfo.DeviceResourceRanges
+	30,  // 39: openolt.Action.cmd:type_name -> openolt.ActionCmd
+	29,  // 40: openolt.Flow.classifier:type_name -> openolt.Classifier
+	31,  // 41: openolt.Flow.action:type_name -> openolt.Action
+	71,  // 42: openolt.Flow.pbit_to_gemport:type_name -> openolt.Flow.PbitToGemportEntry
+	72,  // 43: openolt.Flow.gemport_to_aes:type_name -> openolt.Flow.GemportToAesEntry
+	48,  // 44: openolt.OnuItuPonStatsIndication.rdi_error_ind:type_name -> openolt.RdiErrorIndication
+	5,   // 45: openolt.GroupMember.interface_type:type_name -> openolt.GroupMember.InterfaceType
+	6,   // 46: openolt.Group.command:type_name -> openolt.Group.GroupMembersCommand
+	57,  // 47: openolt.Group.members:type_name -> openolt.GroupMember
+	31,  // 48: openolt.Group.action:type_name -> openolt.Action
+	23,  // 49: openolt.ValueParam.onu:type_name -> openolt.Onu
+	74,  // 50: openolt.ValueParam.value:type_name -> extension.ValueType.Type
+	7,   // 51: openolt.PonRxPowerData.fail_reason:type_name -> openolt.PonRxPowerData.RssiMeasurementFailReason
+	8,   // 52: openolt.OnuInfo.state:type_name -> openolt.OnuInfo.OnuState
+	0,   // 53: openolt.OnuInfo.losi:type_name -> openolt.AlarmState
+	0,   // 54: openolt.OnuInfo.lofi:type_name -> openolt.AlarmState
+	0,   // 55: openolt.OnuInfo.loami:type_name -> openolt.AlarmState
+	9,   // 56: openolt.PonIntfInfo.state:type_name -> openolt.PonIntfInfo.PonIntfState
+	0,   // 57: openolt.PonIntfInfo.los:type_name -> openolt.AlarmState
+	65,  // 58: openolt.InterfaceOnuSerialNumberOnuId.intf_id_serial_num:type_name -> openolt.InterfaceOnuSerialNumber
+	33,  // 59: openolt.InterfaceOnuSerialNumber.onu_serial_number:type_name -> openolt.SerialNumber
+	68,  // 60: openolt.IntfOperIndication.PONResourceRanges.pools:type_name -> openolt.IntfOperIndication.PONResourceRanges.Pool
+	2,   // 61: openolt.IntfOperIndication.PONResourceRanges.Pool.type:type_name -> openolt.IntfOperIndication.PONResourceRanges.Pool.PoolType
+	70,  // 62: openolt.DeviceInfo.DeviceResourceRanges.pools:type_name -> openolt.DeviceInfo.DeviceResourceRanges.Pool
+	3,   // 63: openolt.DeviceInfo.DeviceResourceRanges.Pool.type:type_name -> openolt.DeviceInfo.DeviceResourceRanges.Pool.PoolType
+	4,   // 64: openolt.DeviceInfo.DeviceResourceRanges.Pool.sharing:type_name -> openolt.DeviceInfo.DeviceResourceRanges.Pool.SharingType
+	66,  // 65: openolt.Openolt.DisableOlt:input_type -> openolt.Empty
+	66,  // 66: openolt.Openolt.ReenableOlt:input_type -> openolt.Empty
+	23,  // 67: openolt.Openolt.ActivateOnu:input_type -> openolt.Onu
+	23,  // 68: openolt.Openolt.DeactivateOnu:input_type -> openolt.Onu
+	23,  // 69: openolt.Openolt.DeleteOnu:input_type -> openolt.Onu
+	25,  // 70: openolt.Openolt.OmciMsgOut:input_type -> openolt.OmciMsg
+	26,  // 71: openolt.Openolt.OnuPacketOut:input_type -> openolt.OnuPacket
+	27,  // 72: openolt.Openolt.UplinkPacketOut:input_type -> openolt.UplinkPacket
+	32,  // 73: openolt.Openolt.FlowAdd:input_type -> openolt.Flow
+	32,  // 74: openolt.Openolt.FlowRemove:input_type -> openolt.Flow
+	66,  // 75: openolt.Openolt.HeartbeatCheck:input_type -> openolt.Empty
+	21,  // 76: openolt.Openolt.EnablePonIf:input_type -> openolt.Interface
+	21,  // 77: openolt.Openolt.DisablePonIf:input_type -> openolt.Interface
+	66,  // 78: openolt.Openolt.GetDeviceInfo:input_type -> openolt.Empty
+	66,  // 79: openolt.Openolt.Reboot:input_type -> openolt.Empty
+	66,  // 80: openolt.Openolt.CollectStatistics:input_type -> openolt.Empty
+	23,  // 81: openolt.Openolt.GetOnuStatistics:input_type -> openolt.Onu
+	26,  // 82: openolt.Openolt.GetGemPortStatistics:input_type -> openolt.OnuPacket
+	75,  // 83: openolt.Openolt.CreateTrafficSchedulers:input_type -> tech_profile.TrafficSchedulers
+	75,  // 84: openolt.Openolt.RemoveTrafficSchedulers:input_type -> tech_profile.TrafficSchedulers
+	76,  // 85: openolt.Openolt.CreateTrafficQueues:input_type -> tech_profile.TrafficQueues
+	76,  // 86: openolt.Openolt.RemoveTrafficQueues:input_type -> tech_profile.TrafficQueues
+	66,  // 87: openolt.Openolt.EnableIndication:input_type -> openolt.Empty
+	58,  // 88: openolt.Openolt.PerformGroupOperation:input_type -> openolt.Group
+	58,  // 89: openolt.Openolt.DeleteGroup:input_type -> openolt.Group
+	59,  // 90: openolt.Openolt.GetExtValue:input_type -> openolt.ValueParam
+	77,  // 91: openolt.Openolt.OnuItuPonAlarmSet:input_type -> config.OnuItuPonAlarm
+	23,  // 92: openolt.Openolt.GetLogicalOnuDistanceZero:input_type -> openolt.Onu
+	23,  // 93: openolt.Openolt.GetLogicalOnuDistance:input_type -> openolt.Onu
+	23,  // 94: openolt.Openolt.GetPonRxPower:input_type -> openolt.Onu
+	23,  // 95: openolt.Openolt.GetOnuInfo:input_type -> openolt.Onu
+	21,  // 96: openolt.Openolt.GetPonInterfaceInfo:input_type -> openolt.Interface
+	26,  // 97: openolt.Openolt.GetAllocIdStatistics:input_type -> openolt.OnuPacket
+	21,  // 98: openolt.Openolt.GetPonPortStatistics:input_type -> openolt.Interface
+	21,  // 99: openolt.Openolt.GetNniPortStatistics:input_type -> openolt.Interface
+	64,  // 100: openolt.Openolt.DisableOnu:input_type -> openolt.InterfaceOnuSerialNumberOnuId
+	64,  // 101: openolt.Openolt.EnableOnu:input_type -> openolt.InterfaceOnuSerialNumberOnuId
+	65,  // 102: openolt.Openolt.DisableOnuSerialNumber:input_type -> openolt.InterfaceOnuSerialNumber
+	65,  // 103: openolt.Openolt.EnableOnuSerialNumber:input_type -> openolt.InterfaceOnuSerialNumber
+	66,  // 104: openolt.Openolt.DisableOlt:output_type -> openolt.Empty
+	66,  // 105: openolt.Openolt.ReenableOlt:output_type -> openolt.Empty
+	66,  // 106: openolt.Openolt.ActivateOnu:output_type -> openolt.Empty
+	66,  // 107: openolt.Openolt.DeactivateOnu:output_type -> openolt.Empty
+	66,  // 108: openolt.Openolt.DeleteOnu:output_type -> openolt.Empty
+	66,  // 109: openolt.Openolt.OmciMsgOut:output_type -> openolt.Empty
+	66,  // 110: openolt.Openolt.OnuPacketOut:output_type -> openolt.Empty
+	66,  // 111: openolt.Openolt.UplinkPacketOut:output_type -> openolt.Empty
+	66,  // 112: openolt.Openolt.FlowAdd:output_type -> openolt.Empty
+	66,  // 113: openolt.Openolt.FlowRemove:output_type -> openolt.Empty
+	22,  // 114: openolt.Openolt.HeartbeatCheck:output_type -> openolt.Heartbeat
+	66,  // 115: openolt.Openolt.EnablePonIf:output_type -> openolt.Empty
+	66,  // 116: openolt.Openolt.DisablePonIf:output_type -> openolt.Empty
+	28,  // 117: openolt.Openolt.GetDeviceInfo:output_type -> openolt.DeviceInfo
+	66,  // 118: openolt.Openolt.Reboot:output_type -> openolt.Empty
+	66,  // 119: openolt.Openolt.CollectStatistics:output_type -> openolt.Empty
+	34,  // 120: openolt.Openolt.GetOnuStatistics:output_type -> openolt.OnuStatistics
+	35,  // 121: openolt.Openolt.GetGemPortStatistics:output_type -> openolt.GemPortStatistics
+	66,  // 122: openolt.Openolt.CreateTrafficSchedulers:output_type -> openolt.Empty
+	66,  // 123: openolt.Openolt.RemoveTrafficSchedulers:output_type -> openolt.Empty
+	66,  // 124: openolt.Openolt.CreateTrafficQueues:output_type -> openolt.Empty
+	66,  // 125: openolt.Openolt.RemoveTrafficQueues:output_type -> openolt.Empty
+	10,  // 126: openolt.Openolt.EnableIndication:output_type -> openolt.Indication
+	66,  // 127: openolt.Openolt.PerformGroupOperation:output_type -> openolt.Empty
+	66,  // 128: openolt.Openolt.DeleteGroup:output_type -> openolt.Empty
+	78,  // 129: openolt.Openolt.GetExtValue:output_type -> extension.ReturnValues
+	66,  // 130: openolt.Openolt.OnuItuPonAlarmSet:output_type -> openolt.Empty
+	24,  // 131: openolt.Openolt.GetLogicalOnuDistanceZero:output_type -> openolt.OnuLogicalDistance
+	24,  // 132: openolt.Openolt.GetLogicalOnuDistance:output_type -> openolt.OnuLogicalDistance
+	60,  // 133: openolt.Openolt.GetPonRxPower:output_type -> openolt.PonRxPowerData
+	62,  // 134: openolt.Openolt.GetOnuInfo:output_type -> openolt.OnuInfo
+	63,  // 135: openolt.Openolt.GetPonInterfaceInfo:output_type -> openolt.PonIntfInfo
+	61,  // 136: openolt.Openolt.GetAllocIdStatistics:output_type -> openolt.OnuAllocIdStatistics
+	73,  // 137: openolt.Openolt.GetPonPortStatistics:output_type -> common.PortStatistics
+	73,  // 138: openolt.Openolt.GetNniPortStatistics:output_type -> common.PortStatistics
+	66,  // 139: openolt.Openolt.DisableOnu:output_type -> openolt.Empty
+	66,  // 140: openolt.Openolt.EnableOnu:output_type -> openolt.Empty
+	66,  // 141: openolt.Openolt.DisableOnuSerialNumber:output_type -> openolt.Empty
+	66,  // 142: openolt.Openolt.EnableOnuSerialNumber:output_type -> openolt.Empty
+	104, // [104:143] is the sub-list for method output_type
+	65,  // [65:104] is the sub-list for method input_type
+	65,  // [65:65] is the sub-list for extension type_name
+	65,  // [65:65] is the sub-list for extension extendee
+	0,   // [0:65] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_openolt_proto_init() }
+func file_voltha_protos_openolt_proto_init() {
+	if File_voltha_protos_openolt_proto != nil {
+		return
+	}
+	file_voltha_protos_openolt_proto_msgTypes[0].OneofWrappers = []any{
+		(*Indication_OltInd)(nil),
+		(*Indication_IntfInd)(nil),
+		(*Indication_IntfOperInd)(nil),
+		(*Indication_OnuDiscInd)(nil),
+		(*Indication_OnuInd)(nil),
+		(*Indication_OmciInd)(nil),
+		(*Indication_PktInd)(nil),
+		(*Indication_PortStats)(nil),
+		(*Indication_FlowStats)(nil),
+		(*Indication_AlarmInd)(nil),
+		(*Indication_OnuDisabledInd)(nil),
+		(*Indication_OnuEnabledInd)(nil),
+	}
+	file_voltha_protos_openolt_proto_msgTypes[1].OneofWrappers = []any{
 		(*AlarmIndication_LosInd)(nil),
 		(*AlarmIndication_DyingGaspInd)(nil),
 		(*AlarmIndication_OnuAlarmInd)(nil),
@@ -900,5996 +6270,25 @@
 		(*AlarmIndication_OnuLossOfAckInd)(nil),
 		(*AlarmIndication_OnuDiffReachExceededInd)(nil),
 	}
-}
-
-type OltIndication struct {
-	OperState            string   `protobuf:"bytes,1,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OltIndication) Reset()         { *m = OltIndication{} }
-func (m *OltIndication) String() string { return proto.CompactTextString(m) }
-func (*OltIndication) ProtoMessage()    {}
-func (*OltIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{2}
-}
-
-func (m *OltIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OltIndication.Unmarshal(m, b)
-}
-func (m *OltIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OltIndication.Marshal(b, m, deterministic)
-}
-func (m *OltIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OltIndication.Merge(m, src)
-}
-func (m *OltIndication) XXX_Size() int {
-	return xxx_messageInfo_OltIndication.Size(m)
-}
-func (m *OltIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OltIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OltIndication proto.InternalMessageInfo
-
-func (m *OltIndication) GetOperState() string {
-	if m != nil {
-		return m.OperState
-	}
-	return ""
-}
-
-type IntfIndication struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OperState            string   `protobuf:"bytes,2,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *IntfIndication) Reset()         { *m = IntfIndication{} }
-func (m *IntfIndication) String() string { return proto.CompactTextString(m) }
-func (*IntfIndication) ProtoMessage()    {}
-func (*IntfIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{3}
-}
-
-func (m *IntfIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IntfIndication.Unmarshal(m, b)
-}
-func (m *IntfIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IntfIndication.Marshal(b, m, deterministic)
-}
-func (m *IntfIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IntfIndication.Merge(m, src)
-}
-func (m *IntfIndication) XXX_Size() int {
-	return xxx_messageInfo_IntfIndication.Size(m)
-}
-func (m *IntfIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_IntfIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IntfIndication proto.InternalMessageInfo
-
-func (m *IntfIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *IntfIndication) GetOperState() string {
-	if m != nil {
-		return m.OperState
-	}
-	return ""
-}
-
-type OnuDiscIndication struct {
-	IntfId               uint32        `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	SerialNumber         *SerialNumber `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *OnuDiscIndication) Reset()         { *m = OnuDiscIndication{} }
-func (m *OnuDiscIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuDiscIndication) ProtoMessage()    {}
-func (*OnuDiscIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{4}
-}
-
-func (m *OnuDiscIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuDiscIndication.Unmarshal(m, b)
-}
-func (m *OnuDiscIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuDiscIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuDiscIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuDiscIndication.Merge(m, src)
-}
-func (m *OnuDiscIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuDiscIndication.Size(m)
-}
-func (m *OnuDiscIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuDiscIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuDiscIndication proto.InternalMessageInfo
-
-func (m *OnuDiscIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuDiscIndication) GetSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.SerialNumber
-	}
-	return nil
-}
-
-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"`
-	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{} }
-func (m *OnuIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuIndication) ProtoMessage()    {}
-func (*OnuIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{5}
-}
-
-func (m *OnuIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuIndication.Unmarshal(m, b)
-}
-func (m *OnuIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuIndication.Merge(m, src)
-}
-func (m *OnuIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuIndication.Size(m)
-}
-func (m *OnuIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuIndication proto.InternalMessageInfo
-
-func (m *OnuIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuIndication) GetOperState() string {
-	if m != nil {
-		return m.OperState
-	}
-	return ""
-}
-
-func (m *OnuIndication) GetAdminState() string {
-	if m != nil {
-		return m.AdminState
-	}
-	return ""
-}
-
-func (m *OnuIndication) GetSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.SerialNumber
-	}
-	return nil
-}
-
-func (m *OnuIndication) GetFailReason() OnuIndication_ActivationFailReason {
-	if m != nil {
-		return m.FailReason
-	}
-	return OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE
-}
-
-type OnuDisabledIndication 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"`
-	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:"-"`
-}
-
-func (m *OnuDisabledIndication) Reset()         { *m = OnuDisabledIndication{} }
-func (m *OnuDisabledIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuDisabledIndication) ProtoMessage()    {}
-func (*OnuDisabledIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{6}
-}
-
-func (m *OnuDisabledIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuDisabledIndication.Unmarshal(m, b)
-}
-func (m *OnuDisabledIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuDisabledIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuDisabledIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuDisabledIndication.Merge(m, src)
-}
-func (m *OnuDisabledIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuDisabledIndication.Size(m)
-}
-func (m *OnuDisabledIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuDisabledIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuDisabledIndication proto.InternalMessageInfo
-
-func (m *OnuDisabledIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuDisabledIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuDisabledIndication) GetSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.SerialNumber
-	}
-	return nil
-}
-
-type OnuEnabledIndication 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"`
-	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:"-"`
-}
-
-func (m *OnuEnabledIndication) Reset()         { *m = OnuEnabledIndication{} }
-func (m *OnuEnabledIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuEnabledIndication) ProtoMessage()    {}
-func (*OnuEnabledIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{7}
-}
-
-func (m *OnuEnabledIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuEnabledIndication.Unmarshal(m, b)
-}
-func (m *OnuEnabledIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuEnabledIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuEnabledIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuEnabledIndication.Merge(m, src)
-}
-func (m *OnuEnabledIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuEnabledIndication.Size(m)
-}
-func (m *OnuEnabledIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuEnabledIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuEnabledIndication proto.InternalMessageInfo
-
-func (m *OnuEnabledIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuEnabledIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuEnabledIndication) GetSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.SerialNumber
-	}
-	return nil
-}
-
-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"`
-	OperState            string                                `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
-	Speed                uint32                                `protobuf:"fixed32,4,opt,name=speed,proto3" json:"speed,omitempty"`
-	Technology           string                                `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
-	Ranges               *IntfOperIndication_PONResourceRanges `protobuf:"bytes,6,opt,name=ranges,proto3" json:"ranges,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
-	XXX_unrecognized     []byte                                `json:"-"`
-	XXX_sizecache        int32                                 `json:"-"`
-}
-
-func (m *IntfOperIndication) Reset()         { *m = IntfOperIndication{} }
-func (m *IntfOperIndication) String() string { return proto.CompactTextString(m) }
-func (*IntfOperIndication) ProtoMessage()    {}
-func (*IntfOperIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{8}
-}
-
-func (m *IntfOperIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IntfOperIndication.Unmarshal(m, b)
-}
-func (m *IntfOperIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IntfOperIndication.Marshal(b, m, deterministic)
-}
-func (m *IntfOperIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IntfOperIndication.Merge(m, src)
-}
-func (m *IntfOperIndication) XXX_Size() int {
-	return xxx_messageInfo_IntfOperIndication.Size(m)
-}
-func (m *IntfOperIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_IntfOperIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IntfOperIndication proto.InternalMessageInfo
-
-func (m *IntfOperIndication) GetType() string {
-	if m != nil {
-		return m.Type
-	}
-	return ""
-}
-
-func (m *IntfOperIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *IntfOperIndication) GetOperState() string {
-	if m != nil {
-		return m.OperState
-	}
-	return ""
-}
-
-func (m *IntfOperIndication) GetSpeed() uint32 {
-	if m != nil {
-		return m.Speed
-	}
-	return 0
-}
-
-func (m *IntfOperIndication) GetTechnology() string {
-	if m != nil {
-		return m.Technology
-	}
-	return ""
-}
-
-func (m *IntfOperIndication) GetRanges() *IntfOperIndication_PONResourceRanges {
-	if m != nil {
-		return m.Ranges
-	}
-	return nil
-}
-
-type IntfOperIndication_PONResourceRanges struct {
-	Pools                []*IntfOperIndication_PONResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                     `json:"-"`
-	XXX_unrecognized     []byte                                       `json:"-"`
-	XXX_sizecache        int32                                        `json:"-"`
-}
-
-func (m *IntfOperIndication_PONResourceRanges) Reset()         { *m = IntfOperIndication_PONResourceRanges{} }
-func (m *IntfOperIndication_PONResourceRanges) String() string { return proto.CompactTextString(m) }
-func (*IntfOperIndication_PONResourceRanges) ProtoMessage()    {}
-func (*IntfOperIndication_PONResourceRanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{8, 0}
-}
-
-func (m *IntfOperIndication_PONResourceRanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Unmarshal(m, b)
-}
-func (m *IntfOperIndication_PONResourceRanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Marshal(b, m, deterministic)
-}
-func (m *IntfOperIndication_PONResourceRanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IntfOperIndication_PONResourceRanges.Merge(m, src)
-}
-func (m *IntfOperIndication_PONResourceRanges) XXX_Size() int {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Size(m)
-}
-func (m *IntfOperIndication_PONResourceRanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_IntfOperIndication_PONResourceRanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IntfOperIndication_PONResourceRanges proto.InternalMessageInfo
-
-func (m *IntfOperIndication_PONResourceRanges) GetPools() []*IntfOperIndication_PONResourceRanges_Pool {
-	if m != nil {
-		return m.Pools
-	}
-	return nil
-}
-
-type IntfOperIndication_PONResourceRanges_Pool struct {
-	Type                 IntfOperIndication_PONResourceRanges_Pool_PoolType `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.IntfOperIndication_PONResourceRanges_Pool_PoolType" json:"type,omitempty"`
-	Start                uint32                                             `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"`
-	End                  uint32                                             `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                           `json:"-"`
-	XXX_unrecognized     []byte                                             `json:"-"`
-	XXX_sizecache        int32                                              `json:"-"`
-}
-
-func (m *IntfOperIndication_PONResourceRanges_Pool) Reset() {
-	*m = IntfOperIndication_PONResourceRanges_Pool{}
-}
-func (m *IntfOperIndication_PONResourceRanges_Pool) String() string {
-	return proto.CompactTextString(m)
-}
-func (*IntfOperIndication_PONResourceRanges_Pool) ProtoMessage() {}
-func (*IntfOperIndication_PONResourceRanges_Pool) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{8, 0, 0}
-}
-
-func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Unmarshal(m, b)
-}
-func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Marshal(b, m, deterministic)
-}
-func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Merge(m, src)
-}
-func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Size() int {
-	return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Size(m)
-}
-func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_DiscardUnknown() {
-	xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool proto.InternalMessageInfo
-
-func (m *IntfOperIndication_PONResourceRanges_Pool) GetType() IntfOperIndication_PONResourceRanges_Pool_PoolType {
-	if m != nil {
-		return m.Type
-	}
-	return IntfOperIndication_PONResourceRanges_Pool_ONU_ID
-}
-
-func (m *IntfOperIndication_PONResourceRanges_Pool) GetStart() uint32 {
-	if m != nil {
-		return m.Start
-	}
-	return 0
-}
-
-func (m *IntfOperIndication_PONResourceRanges_Pool) GetEnd() uint32 {
-	if m != nil {
-		return m.End
-	}
-	return 0
-}
-
-type OmciIndication 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"`
-	Pkt                  []byte   `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OmciIndication) Reset()         { *m = OmciIndication{} }
-func (m *OmciIndication) String() string { return proto.CompactTextString(m) }
-func (*OmciIndication) ProtoMessage()    {}
-func (*OmciIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{9}
-}
-
-func (m *OmciIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciIndication.Unmarshal(m, b)
-}
-func (m *OmciIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciIndication.Marshal(b, m, deterministic)
-}
-func (m *OmciIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciIndication.Merge(m, src)
-}
-func (m *OmciIndication) XXX_Size() int {
-	return xxx_messageInfo_OmciIndication.Size(m)
-}
-func (m *OmciIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciIndication proto.InternalMessageInfo
-
-func (m *OmciIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OmciIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OmciIndication) GetPkt() []byte {
-	if m != nil {
-		return m.Pkt
-	}
-	return nil
-}
-
-type PacketIndication struct {
-	IntfType             string   `protobuf:"bytes,5,opt,name=intf_type,json=intfType,proto3" json:"intf_type,omitempty"`
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,8,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	UniId                uint32   `protobuf:"fixed32,9,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	GemportId            uint32   `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	FlowId               uint32   `protobuf:"fixed32,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
-	PortNo               uint32   `protobuf:"fixed32,6,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	Cookie               uint64   `protobuf:"fixed64,7,opt,name=cookie,proto3" json:"cookie,omitempty"`
-	Pkt                  []byte   `protobuf:"bytes,4,opt,name=pkt,proto3" json:"pkt,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *PacketIndication) Reset()         { *m = PacketIndication{} }
-func (m *PacketIndication) String() string { return proto.CompactTextString(m) }
-func (*PacketIndication) ProtoMessage()    {}
-func (*PacketIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{10}
-}
-
-func (m *PacketIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PacketIndication.Unmarshal(m, b)
-}
-func (m *PacketIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PacketIndication.Marshal(b, m, deterministic)
-}
-func (m *PacketIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIndication.Merge(m, src)
-}
-func (m *PacketIndication) XXX_Size() int {
-	return xxx_messageInfo_PacketIndication.Size(m)
-}
-func (m *PacketIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_PacketIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PacketIndication proto.InternalMessageInfo
-
-func (m *PacketIndication) GetIntfType() string {
-	if m != nil {
-		return m.IntfType
-	}
-	return ""
-}
-
-func (m *PacketIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetFlowId() uint32 {
-	if m != nil {
-		return m.FlowId
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *PacketIndication) GetPkt() []byte {
-	if m != nil {
-		return m.Pkt
-	}
-	return nil
-}
-
-type Interface struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	IntfType             uint32   `protobuf:"fixed32,2,opt,name=intf_type,json=intfType,proto3" json:"intf_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Interface) Reset()         { *m = Interface{} }
-func (m *Interface) String() string { return proto.CompactTextString(m) }
-func (*Interface) ProtoMessage()    {}
-func (*Interface) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{11}
-}
-
-func (m *Interface) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Interface.Unmarshal(m, b)
-}
-func (m *Interface) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Interface.Marshal(b, m, deterministic)
-}
-func (m *Interface) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Interface.Merge(m, src)
-}
-func (m *Interface) XXX_Size() int {
-	return xxx_messageInfo_Interface.Size(m)
-}
-func (m *Interface) XXX_DiscardUnknown() {
-	xxx_messageInfo_Interface.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Interface proto.InternalMessageInfo
-
-func (m *Interface) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *Interface) GetIntfType() uint32 {
-	if m != nil {
-		return m.IntfType
-	}
-	return 0
-}
-
-type Heartbeat struct {
-	HeartbeatSignature   uint32   `protobuf:"fixed32,1,opt,name=heartbeat_signature,json=heartbeatSignature,proto3" json:"heartbeat_signature,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Heartbeat) Reset()         { *m = Heartbeat{} }
-func (m *Heartbeat) String() string { return proto.CompactTextString(m) }
-func (*Heartbeat) ProtoMessage()    {}
-func (*Heartbeat) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{12}
-}
-
-func (m *Heartbeat) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Heartbeat.Unmarshal(m, b)
-}
-func (m *Heartbeat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Heartbeat.Marshal(b, m, deterministic)
-}
-func (m *Heartbeat) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Heartbeat.Merge(m, src)
-}
-func (m *Heartbeat) XXX_Size() int {
-	return xxx_messageInfo_Heartbeat.Size(m)
-}
-func (m *Heartbeat) XXX_DiscardUnknown() {
-	xxx_messageInfo_Heartbeat.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Heartbeat proto.InternalMessageInfo
-
-func (m *Heartbeat) GetHeartbeatSignature() uint32 {
-	if m != nil {
-		return m.HeartbeatSignature
-	}
-	return 0
-}
-
-type Onu 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"`
-	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:"-"`
-}
-
-func (m *Onu) Reset()         { *m = Onu{} }
-func (m *Onu) String() string { return proto.CompactTextString(m) }
-func (*Onu) ProtoMessage()    {}
-func (*Onu) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{13}
-}
-
-func (m *Onu) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Onu.Unmarshal(m, b)
-}
-func (m *Onu) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Onu.Marshal(b, m, deterministic)
-}
-func (m *Onu) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Onu.Merge(m, src)
-}
-func (m *Onu) XXX_Size() int {
-	return xxx_messageInfo_Onu.Size(m)
-}
-func (m *Onu) XXX_DiscardUnknown() {
-	xxx_messageInfo_Onu.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Onu proto.InternalMessageInfo
-
-func (m *Onu) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *Onu) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *Onu) GetSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.SerialNumber
-	}
-	return nil
-}
-
-func (m *Onu) GetPir() uint32 {
-	if m != nil {
-		return m.Pir
-	}
-	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{14}
-}
-
-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"`
-	Pkt                  []byte   `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OmciMsg) Reset()         { *m = OmciMsg{} }
-func (m *OmciMsg) String() string { return proto.CompactTextString(m) }
-func (*OmciMsg) ProtoMessage()    {}
-func (*OmciMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15}
-}
-
-func (m *OmciMsg) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OmciMsg.Unmarshal(m, b)
-}
-func (m *OmciMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OmciMsg.Marshal(b, m, deterministic)
-}
-func (m *OmciMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OmciMsg.Merge(m, src)
-}
-func (m *OmciMsg) XXX_Size() int {
-	return xxx_messageInfo_OmciMsg.Size(m)
-}
-func (m *OmciMsg) XXX_DiscardUnknown() {
-	xxx_messageInfo_OmciMsg.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OmciMsg proto.InternalMessageInfo
-
-func (m *OmciMsg) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OmciMsg) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OmciMsg) GetPkt() []byte {
-	if m != nil {
-		return m.Pkt
-	}
-	return nil
-}
-
-type OnuPacket 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"`
-	PortNo               uint32   `protobuf:"fixed32,4,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	GemportId            uint32   `protobuf:"fixed32,5,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	AllocId              uint32   `protobuf:"fixed32,6,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
-	Pkt                  []byte   `protobuf:"bytes,3,opt,name=pkt,proto3" json:"pkt,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuPacket) Reset()         { *m = OnuPacket{} }
-func (m *OnuPacket) String() string { return proto.CompactTextString(m) }
-func (*OnuPacket) ProtoMessage()    {}
-func (*OnuPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{16}
-}
-
-func (m *OnuPacket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuPacket.Unmarshal(m, b)
-}
-func (m *OnuPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuPacket.Marshal(b, m, deterministic)
-}
-func (m *OnuPacket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuPacket.Merge(m, src)
-}
-func (m *OnuPacket) XXX_Size() int {
-	return xxx_messageInfo_OnuPacket.Size(m)
-}
-func (m *OnuPacket) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuPacket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuPacket proto.InternalMessageInfo
-
-func (m *OnuPacket) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuPacket) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuPacket) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
-func (m *OnuPacket) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
-	}
-	return 0
-}
-
-func (m *OnuPacket) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
-	}
-	return 0
-}
-
-func (m *OnuPacket) GetPkt() []byte {
-	if m != nil {
-		return m.Pkt
-	}
-	return nil
-}
-
-type UplinkPacket struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	Pkt                  []byte   `protobuf:"bytes,2,opt,name=pkt,proto3" json:"pkt,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *UplinkPacket) Reset()         { *m = UplinkPacket{} }
-func (m *UplinkPacket) String() string { return proto.CompactTextString(m) }
-func (*UplinkPacket) ProtoMessage()    {}
-func (*UplinkPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{17}
-}
-
-func (m *UplinkPacket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UplinkPacket.Unmarshal(m, b)
-}
-func (m *UplinkPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UplinkPacket.Marshal(b, m, deterministic)
-}
-func (m *UplinkPacket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UplinkPacket.Merge(m, src)
-}
-func (m *UplinkPacket) XXX_Size() int {
-	return xxx_messageInfo_UplinkPacket.Size(m)
-}
-func (m *UplinkPacket) XXX_DiscardUnknown() {
-	xxx_messageInfo_UplinkPacket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UplinkPacket proto.InternalMessageInfo
-
-func (m *UplinkPacket) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *UplinkPacket) GetPkt() []byte {
-	if m != nil {
-		return m.Pkt
-	}
-	return nil
-}
-
-type DeviceInfo struct {
-	Vendor              string `protobuf:"bytes,1,opt,name=vendor,proto3" json:"vendor,omitempty"`
-	Model               string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
-	HardwareVersion     string `protobuf:"bytes,3,opt,name=hardware_version,json=hardwareVersion,proto3" json:"hardware_version,omitempty"`
-	FirmwareVersion     string `protobuf:"bytes,4,opt,name=firmware_version,json=firmwareVersion,proto3" json:"firmware_version,omitempty"`
-	DeviceId            string `protobuf:"bytes,16,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DeviceSerialNumber  string `protobuf:"bytes,17,opt,name=device_serial_number,json=deviceSerialNumber,proto3" json:"device_serial_number,omitempty"`
-	PreviouslyConnected bool   `protobuf:"varint,19,opt,name=previously_connected,json=previouslyConnected,proto3" json:"previously_connected,omitempty"`
-	// Total number of pon intf ports on the device
-	PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
-	// Total number of nni intf ports on the device
-	NniPorts             uint32                             `protobuf:"fixed32,20,opt,name=nni_ports,json=nniPorts,proto3" json:"nni_ports,omitempty"`
-	Ranges               []*DeviceInfo_DeviceResourceRanges `protobuf:"bytes,15,rep,name=ranges,proto3" json:"ranges,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
-}
-
-func (m *DeviceInfo) Reset()         { *m = DeviceInfo{} }
-func (m *DeviceInfo) String() string { return proto.CompactTextString(m) }
-func (*DeviceInfo) ProtoMessage()    {}
-func (*DeviceInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18}
-}
-
-func (m *DeviceInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceInfo.Unmarshal(m, b)
-}
-func (m *DeviceInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceInfo.Marshal(b, m, deterministic)
-}
-func (m *DeviceInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceInfo.Merge(m, src)
-}
-func (m *DeviceInfo) XXX_Size() int {
-	return xxx_messageInfo_DeviceInfo.Size(m)
-}
-func (m *DeviceInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceInfo proto.InternalMessageInfo
-
-func (m *DeviceInfo) GetVendor() string {
-	if m != nil {
-		return m.Vendor
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetModel() string {
-	if m != nil {
-		return m.Model
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetHardwareVersion() string {
-	if m != nil {
-		return m.HardwareVersion
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetFirmwareVersion() string {
-	if m != nil {
-		return m.FirmwareVersion
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetDeviceSerialNumber() string {
-	if m != nil {
-		return m.DeviceSerialNumber
-	}
-	return ""
-}
-
-func (m *DeviceInfo) GetPreviouslyConnected() bool {
-	if m != nil {
-		return m.PreviouslyConnected
-	}
-	return false
-}
-
-func (m *DeviceInfo) GetPonPorts() uint32 {
-	if m != nil {
-		return m.PonPorts
-	}
-	return 0
-}
-
-func (m *DeviceInfo) GetNniPorts() uint32 {
-	if m != nil {
-		return m.NniPorts
-	}
-	return 0
-}
-
-func (m *DeviceInfo) GetRanges() []*DeviceInfo_DeviceResourceRanges {
-	if m != nil {
-		return m.Ranges
-	}
-	return nil
-}
-
-type DeviceInfo_DeviceResourceRanges struct {
-	// List of 0 or more intf_ids that use the same technology and pools.
-	// If 0 intf_ids supplied, it implies ALL interfaces
-	IntfIds []uint32 `protobuf:"fixed32,1,rep,packed,name=intf_ids,json=intfIds,proto3" json:"intf_ids,omitempty"`
-	// Technology profile for this pool
-	Technology           string                                  `protobuf:"bytes,2,opt,name=technology,proto3" json:"technology,omitempty"`
-	Pools                []*DeviceInfo_DeviceResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
-	XXX_unrecognized     []byte                                  `json:"-"`
-	XXX_sizecache        int32                                   `json:"-"`
-}
-
-func (m *DeviceInfo_DeviceResourceRanges) Reset()         { *m = DeviceInfo_DeviceResourceRanges{} }
-func (m *DeviceInfo_DeviceResourceRanges) String() string { return proto.CompactTextString(m) }
-func (*DeviceInfo_DeviceResourceRanges) ProtoMessage()    {}
-func (*DeviceInfo_DeviceResourceRanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18, 0}
-}
-
-func (m *DeviceInfo_DeviceResourceRanges) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Unmarshal(m, b)
-}
-func (m *DeviceInfo_DeviceResourceRanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Marshal(b, m, deterministic)
-}
-func (m *DeviceInfo_DeviceResourceRanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Merge(m, src)
-}
-func (m *DeviceInfo_DeviceResourceRanges) XXX_Size() int {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges.Size(m)
-}
-func (m *DeviceInfo_DeviceResourceRanges) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceInfo_DeviceResourceRanges.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceInfo_DeviceResourceRanges proto.InternalMessageInfo
-
-func (m *DeviceInfo_DeviceResourceRanges) GetIntfIds() []uint32 {
-	if m != nil {
-		return m.IntfIds
-	}
-	return nil
-}
-
-func (m *DeviceInfo_DeviceResourceRanges) GetTechnology() string {
-	if m != nil {
-		return m.Technology
-	}
-	return ""
-}
-
-func (m *DeviceInfo_DeviceResourceRanges) GetPools() []*DeviceInfo_DeviceResourceRanges_Pool {
-	if m != nil {
-		return m.Pools
-	}
-	return nil
-}
-
-type DeviceInfo_DeviceResourceRanges_Pool struct {
-	Type                 DeviceInfo_DeviceResourceRanges_Pool_PoolType    `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType" json:"type,omitempty"`
-	Sharing              DeviceInfo_DeviceResourceRanges_Pool_SharingType `protobuf:"varint,2,opt,name=sharing,proto3,enum=openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType" json:"sharing,omitempty"`
-	Start                uint32                                           `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"`
-	End                  uint32                                           `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                         `json:"-"`
-	XXX_unrecognized     []byte                                           `json:"-"`
-	XXX_sizecache        int32                                            `json:"-"`
-}
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) Reset()         { *m = DeviceInfo_DeviceResourceRanges_Pool{} }
-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{18, 0, 0}
-}
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Unmarshal(m, b)
-}
-func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Marshal(b, m, deterministic)
-}
-func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Merge(m, src)
-}
-func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Size() int {
-	return xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.Size(m)
-}
-func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceInfo_DeviceResourceRanges_Pool proto.InternalMessageInfo
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) GetType() DeviceInfo_DeviceResourceRanges_Pool_PoolType {
-	if m != nil {
-		return m.Type
-	}
-	return DeviceInfo_DeviceResourceRanges_Pool_ONU_ID
-}
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) GetSharing() DeviceInfo_DeviceResourceRanges_Pool_SharingType {
-	if m != nil {
-		return m.Sharing
-	}
-	return DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF
-}
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) GetStart() uint32 {
-	if m != nil {
-		return m.Start
-	}
-	return 0
-}
-
-func (m *DeviceInfo_DeviceResourceRanges_Pool) GetEnd() uint32 {
-	if m != nil {
-		return m.End
-	}
-	return 0
-}
-
-type Classifier struct {
-	OTpid                uint32   `protobuf:"fixed32,1,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
-	OVid                 uint32   `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
-	ITpid                uint32   `protobuf:"fixed32,3,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
-	IVid                 uint32   `protobuf:"fixed32,4,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
-	OPbits               uint32   `protobuf:"fixed32,5,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
-	IPbits               uint32   `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
-	EthType              uint32   `protobuf:"fixed32,7,opt,name=eth_type,json=ethType,proto3" json:"eth_type,omitempty"`
-	DstMac               []byte   `protobuf:"bytes,8,opt,name=dst_mac,json=dstMac,proto3" json:"dst_mac,omitempty"`
-	SrcMac               []byte   `protobuf:"bytes,9,opt,name=src_mac,json=srcMac,proto3" json:"src_mac,omitempty"`
-	IpProto              uint32   `protobuf:"fixed32,10,opt,name=ip_proto,json=ipProto,proto3" json:"ip_proto,omitempty"`
-	DstIp                uint32   `protobuf:"fixed32,11,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"`
-	SrcIp                uint32   `protobuf:"fixed32,12,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"`
-	SrcPort              uint32   `protobuf:"fixed32,13,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"`
-	DstPort              uint32   `protobuf:"fixed32,14,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"`
-	PktTagType           string   `protobuf:"bytes,15,opt,name=pkt_tag_type,json=pktTagType,proto3" json:"pkt_tag_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Classifier) Reset()         { *m = Classifier{} }
-func (m *Classifier) String() string { return proto.CompactTextString(m) }
-func (*Classifier) ProtoMessage()    {}
-func (*Classifier) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{19}
-}
-
-func (m *Classifier) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Classifier.Unmarshal(m, b)
-}
-func (m *Classifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Classifier.Marshal(b, m, deterministic)
-}
-func (m *Classifier) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Classifier.Merge(m, src)
-}
-func (m *Classifier) XXX_Size() int {
-	return xxx_messageInfo_Classifier.Size(m)
-}
-func (m *Classifier) XXX_DiscardUnknown() {
-	xxx_messageInfo_Classifier.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Classifier proto.InternalMessageInfo
-
-func (m *Classifier) GetOTpid() uint32 {
-	if m != nil {
-		return m.OTpid
-	}
-	return 0
-}
-
-func (m *Classifier) GetOVid() uint32 {
-	if m != nil {
-		return m.OVid
-	}
-	return 0
-}
-
-func (m *Classifier) GetITpid() uint32 {
-	if m != nil {
-		return m.ITpid
-	}
-	return 0
-}
-
-func (m *Classifier) GetIVid() uint32 {
-	if m != nil {
-		return m.IVid
-	}
-	return 0
-}
-
-func (m *Classifier) GetOPbits() uint32 {
-	if m != nil {
-		return m.OPbits
-	}
-	return 0
-}
-
-func (m *Classifier) GetIPbits() uint32 {
-	if m != nil {
-		return m.IPbits
-	}
-	return 0
-}
-
-func (m *Classifier) GetEthType() uint32 {
-	if m != nil {
-		return m.EthType
-	}
-	return 0
-}
-
-func (m *Classifier) GetDstMac() []byte {
-	if m != nil {
-		return m.DstMac
-	}
-	return nil
-}
-
-func (m *Classifier) GetSrcMac() []byte {
-	if m != nil {
-		return m.SrcMac
-	}
-	return nil
-}
-
-func (m *Classifier) GetIpProto() uint32 {
-	if m != nil {
-		return m.IpProto
-	}
-	return 0
-}
-
-func (m *Classifier) GetDstIp() uint32 {
-	if m != nil {
-		return m.DstIp
-	}
-	return 0
-}
-
-func (m *Classifier) GetSrcIp() uint32 {
-	if m != nil {
-		return m.SrcIp
-	}
-	return 0
-}
-
-func (m *Classifier) GetSrcPort() uint32 {
-	if m != nil {
-		return m.SrcPort
-	}
-	return 0
-}
-
-func (m *Classifier) GetDstPort() uint32 {
-	if m != nil {
-		return m.DstPort
-	}
-	return 0
-}
-
-func (m *Classifier) GetPktTagType() string {
-	if m != nil {
-		return m.PktTagType
-	}
-	return ""
-}
-
-type ActionCmd struct {
-	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:"-"`
-}
-
-func (m *ActionCmd) Reset()         { *m = ActionCmd{} }
-func (m *ActionCmd) String() string { return proto.CompactTextString(m) }
-func (*ActionCmd) ProtoMessage()    {}
-func (*ActionCmd) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{20}
-}
-
-func (m *ActionCmd) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ActionCmd.Unmarshal(m, b)
-}
-func (m *ActionCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ActionCmd.Marshal(b, m, deterministic)
-}
-func (m *ActionCmd) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ActionCmd.Merge(m, src)
-}
-func (m *ActionCmd) XXX_Size() int {
-	return xxx_messageInfo_ActionCmd.Size(m)
-}
-func (m *ActionCmd) XXX_DiscardUnknown() {
-	xxx_messageInfo_ActionCmd.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ActionCmd proto.InternalMessageInfo
-
-func (m *ActionCmd) GetAddOuterTag() bool {
-	if m != nil {
-		return m.AddOuterTag
-	}
-	return false
-}
-
-func (m *ActionCmd) GetRemoveOuterTag() bool {
-	if m != nil {
-		return m.RemoveOuterTag
-	}
-	return false
-}
-
-func (m *ActionCmd) GetTrapToHost() bool {
-	if m != nil {
-		return m.TrapToHost
-	}
-	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"`
-	OPbits               uint32     `protobuf:"fixed32,3,opt,name=o_pbits,json=oPbits,proto3" json:"o_pbits,omitempty"`
-	OTpid                uint32     `protobuf:"fixed32,4,opt,name=o_tpid,json=oTpid,proto3" json:"o_tpid,omitempty"`
-	IVid                 uint32     `protobuf:"fixed32,5,opt,name=i_vid,json=iVid,proto3" json:"i_vid,omitempty"`
-	IPbits               uint32     `protobuf:"fixed32,6,opt,name=i_pbits,json=iPbits,proto3" json:"i_pbits,omitempty"`
-	ITpid                uint32     `protobuf:"fixed32,7,opt,name=i_tpid,json=iTpid,proto3" json:"i_tpid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *Action) Reset()         { *m = Action{} }
-func (m *Action) String() string { return proto.CompactTextString(m) }
-func (*Action) ProtoMessage()    {}
-func (*Action) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{21}
-}
-
-func (m *Action) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Action.Unmarshal(m, b)
-}
-func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Action.Marshal(b, m, deterministic)
-}
-func (m *Action) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Action.Merge(m, src)
-}
-func (m *Action) XXX_Size() int {
-	return xxx_messageInfo_Action.Size(m)
-}
-func (m *Action) XXX_DiscardUnknown() {
-	xxx_messageInfo_Action.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Action proto.InternalMessageInfo
-
-func (m *Action) GetCmd() *ActionCmd {
-	if m != nil {
-		return m.Cmd
-	}
-	return nil
-}
-
-func (m *Action) GetOVid() uint32 {
-	if m != nil {
-		return m.OVid
-	}
-	return 0
-}
-
-func (m *Action) GetOPbits() uint32 {
-	if m != nil {
-		return m.OPbits
-	}
-	return 0
-}
-
-func (m *Action) GetOTpid() uint32 {
-	if m != nil {
-		return m.OTpid
-	}
-	return 0
-}
-
-func (m *Action) GetIVid() uint32 {
-	if m != nil {
-		return m.IVid
-	}
-	return 0
-}
-
-func (m *Action) GetIPbits() uint32 {
-	if m != nil {
-		return m.IPbits
-	}
-	return 0
-}
-
-func (m *Action) GetITpid() uint32 {
-	if m != nil {
-		return m.ITpid
-	}
-	return 0
-}
-
-type Flow struct {
-	AccessIntfId         int32             `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId,proto3" json:"access_intf_id,omitempty"`
-	OnuId                int32             `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	UniId                int32             `protobuf:"fixed32,11,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
-	FlowId               uint64            `protobuf:"fixed64,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
-	SymmetricFlowId      uint64            `protobuf:"fixed64,18,opt,name=symmetric_flow_id,json=symmetricFlowId,proto3" json:"symmetric_flow_id,omitempty"`
-	FlowType             string            `protobuf:"bytes,4,opt,name=flow_type,json=flowType,proto3" json:"flow_type,omitempty"`
-	AllocId              int32             `protobuf:"fixed32,10,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
-	NetworkIntfId        int32             `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
-	GemportId            int32             `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	Classifier           *Classifier       `protobuf:"bytes,7,opt,name=classifier,proto3" json:"classifier,omitempty"`
-	Action               *Action           `protobuf:"bytes,8,opt,name=action,proto3" json:"action,omitempty"`
-	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"`
-	ReplicateFlow        bool              `protobuf:"varint,16,opt,name=replicate_flow,json=replicateFlow,proto3" json:"replicate_flow,omitempty"`
-	PbitToGemport        map[uint32]uint32 `protobuf:"bytes,17,rep,name=pbit_to_gemport,json=pbitToGemport,proto3" json:"pbit_to_gemport,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	GemportToAes         map[uint32]bool   `protobuf:"bytes,19,rep,name=gemport_to_aes,json=gemportToAes,proto3" json:"gemport_to_aes,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *Flow) Reset()         { *m = Flow{} }
-func (m *Flow) String() string { return proto.CompactTextString(m) }
-func (*Flow) ProtoMessage()    {}
-func (*Flow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{22}
-}
-
-func (m *Flow) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Flow.Unmarshal(m, b)
-}
-func (m *Flow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Flow.Marshal(b, m, deterministic)
-}
-func (m *Flow) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flow.Merge(m, src)
-}
-func (m *Flow) XXX_Size() int {
-	return xxx_messageInfo_Flow.Size(m)
-}
-func (m *Flow) XXX_DiscardUnknown() {
-	xxx_messageInfo_Flow.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Flow proto.InternalMessageInfo
-
-func (m *Flow) GetAccessIntfId() int32 {
-	if m != nil {
-		return m.AccessIntfId
-	}
-	return 0
-}
-
-func (m *Flow) GetOnuId() int32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *Flow) GetUniId() int32 {
-	if m != nil {
-		return m.UniId
-	}
-	return 0
-}
-
-func (m *Flow) GetFlowId() uint64 {
-	if m != nil {
-		return m.FlowId
-	}
-	return 0
-}
-
-func (m *Flow) GetSymmetricFlowId() uint64 {
-	if m != nil {
-		return m.SymmetricFlowId
-	}
-	return 0
-}
-
-func (m *Flow) GetFlowType() string {
-	if m != nil {
-		return m.FlowType
-	}
-	return ""
-}
-
-func (m *Flow) GetAllocId() int32 {
-	if m != nil {
-		return m.AllocId
-	}
-	return 0
-}
-
-func (m *Flow) GetNetworkIntfId() int32 {
-	if m != nil {
-		return m.NetworkIntfId
-	}
-	return 0
-}
-
-func (m *Flow) GetGemportId() int32 {
-	if m != nil {
-		return m.GemportId
-	}
-	return 0
-}
-
-func (m *Flow) GetClassifier() *Classifier {
-	if m != nil {
-		return m.Classifier
-	}
-	return nil
-}
-
-func (m *Flow) GetAction() *Action {
-	if m != nil {
-		return m.Action
-	}
-	return nil
-}
-
-func (m *Flow) GetPriority() int32 {
-	if m != nil {
-		return m.Priority
-	}
-	return 0
-}
-
-func (m *Flow) GetCookie() uint64 {
-	if m != nil {
-		return m.Cookie
-	}
-	return 0
-}
-
-func (m *Flow) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	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
-}
-
-func (m *Flow) GetReplicateFlow() bool {
-	if m != nil {
-		return m.ReplicateFlow
-	}
-	return false
-}
-
-func (m *Flow) GetPbitToGemport() map[uint32]uint32 {
-	if m != nil {
-		return m.PbitToGemport
-	}
-	return nil
-}
-
-func (m *Flow) GetGemportToAes() map[uint32]bool {
-	if m != nil {
-		return m.GemportToAes
-	}
-	return nil
-}
-
-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"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SerialNumber) Reset()         { *m = SerialNumber{} }
-func (m *SerialNumber) String() string { return proto.CompactTextString(m) }
-func (*SerialNumber) ProtoMessage()    {}
-func (*SerialNumber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{23}
-}
-
-func (m *SerialNumber) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SerialNumber.Unmarshal(m, b)
-}
-func (m *SerialNumber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SerialNumber.Marshal(b, m, deterministic)
-}
-func (m *SerialNumber) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SerialNumber.Merge(m, src)
-}
-func (m *SerialNumber) XXX_Size() int {
-	return xxx_messageInfo_SerialNumber.Size(m)
-}
-func (m *SerialNumber) XXX_DiscardUnknown() {
-	xxx_messageInfo_SerialNumber.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SerialNumber proto.InternalMessageInfo
-
-func (m *SerialNumber) GetVendorId() []byte {
-	if m != nil {
-		return m.VendorId
-	}
-	return nil
-}
-
-func (m *SerialNumber) GetVendorSpecific() []byte {
-	if m != nil {
-		return m.VendorSpecific
-	}
-	return nil
-}
-
-type OnuStatistics 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"`
-	PositiveDrift             uint64   `protobuf:"fixed64,3,opt,name=positive_drift,json=positiveDrift,proto3" json:"positive_drift,omitempty"`
-	NegativeDrift             uint64   `protobuf:"fixed64,4,opt,name=negative_drift,json=negativeDrift,proto3" json:"negative_drift,omitempty"`
-	DelimiterMissDetection    uint64   `protobuf:"fixed64,5,opt,name=delimiter_miss_detection,json=delimiterMissDetection,proto3" json:"delimiter_miss_detection,omitempty"`
-	BipErrors                 uint64   `protobuf:"fixed64,6,opt,name=bip_errors,json=bipErrors,proto3" json:"bip_errors,omitempty"`
-	BipUnits                  uint64   `protobuf:"fixed64,7,opt,name=bip_units,json=bipUnits,proto3" json:"bip_units,omitempty"`
-	FecCorrectedSymbols       uint64   `protobuf:"fixed64,8,opt,name=fec_corrected_symbols,json=fecCorrectedSymbols,proto3" json:"fec_corrected_symbols,omitempty"`
-	FecCodewordsCorrected     uint64   `protobuf:"fixed64,9,opt,name=fec_codewords_corrected,json=fecCodewordsCorrected,proto3" json:"fec_codewords_corrected,omitempty"`
-	FecCodewordsUncorrectable uint64   `protobuf:"fixed64,10,opt,name=fec_codewords_uncorrectable,json=fecCodewordsUncorrectable,proto3" json:"fec_codewords_uncorrectable,omitempty"`
-	FecCodewords              uint64   `protobuf:"fixed64,11,opt,name=fec_codewords,json=fecCodewords,proto3" json:"fec_codewords,omitempty"`
-	FecCorrectedUnits         uint64   `protobuf:"fixed64,12,opt,name=fec_corrected_units,json=fecCorrectedUnits,proto3" json:"fec_corrected_units,omitempty"`
-	XgemKeyErrors             uint64   `protobuf:"fixed64,13,opt,name=xgem_key_errors,json=xgemKeyErrors,proto3" json:"xgem_key_errors,omitempty"`
-	XgemLoss                  uint64   `protobuf:"fixed64,14,opt,name=xgem_loss,json=xgemLoss,proto3" json:"xgem_loss,omitempty"`
-	RxPloamsError             uint64   `protobuf:"fixed64,15,opt,name=rx_ploams_error,json=rxPloamsError,proto3" json:"rx_ploams_error,omitempty"`
-	RxPloamsNonIdle           uint64   `protobuf:"fixed64,16,opt,name=rx_ploams_non_idle,json=rxPloamsNonIdle,proto3" json:"rx_ploams_non_idle,omitempty"`
-	RxOmci                    uint64   `protobuf:"fixed64,17,opt,name=rx_omci,json=rxOmci,proto3" json:"rx_omci,omitempty"`
-	RxOmciPacketsCrcError     uint64   `protobuf:"fixed64,18,opt,name=rx_omci_packets_crc_error,json=rxOmciPacketsCrcError,proto3" json:"rx_omci_packets_crc_error,omitempty"`
-	RxBytes                   uint64   `protobuf:"fixed64,19,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	RxPackets                 uint64   `protobuf:"fixed64,20,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	TxBytes                   uint64   `protobuf:"fixed64,21,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets                 uint64   `protobuf:"fixed64,22,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	BerReported               uint64   `protobuf:"fixed64,23,opt,name=ber_reported,json=berReported,proto3" json:"ber_reported,omitempty"`
-	LcdgErrors                uint64   `protobuf:"fixed64,24,opt,name=lcdg_errors,json=lcdgErrors,proto3" json:"lcdg_errors,omitempty"`
-	RdiErrors                 uint64   `protobuf:"fixed64,25,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
-	Timestamp                 uint32   `protobuf:"fixed32,26,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{} `json:"-"`
-	XXX_unrecognized          []byte   `json:"-"`
-	XXX_sizecache             int32    `json:"-"`
-}
-
-func (m *OnuStatistics) Reset()         { *m = OnuStatistics{} }
-func (m *OnuStatistics) String() string { return proto.CompactTextString(m) }
-func (*OnuStatistics) ProtoMessage()    {}
-func (*OnuStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{24}
-}
-
-func (m *OnuStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuStatistics.Unmarshal(m, b)
-}
-func (m *OnuStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuStatistics.Marshal(b, m, deterministic)
-}
-func (m *OnuStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuStatistics.Merge(m, src)
-}
-func (m *OnuStatistics) XXX_Size() int {
-	return xxx_messageInfo_OnuStatistics.Size(m)
-}
-func (m *OnuStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuStatistics proto.InternalMessageInfo
-
-func (m *OnuStatistics) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetPositiveDrift() uint64 {
-	if m != nil {
-		return m.PositiveDrift
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetNegativeDrift() uint64 {
-	if m != nil {
-		return m.NegativeDrift
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetDelimiterMissDetection() uint64 {
-	if m != nil {
-		return m.DelimiterMissDetection
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetBipErrors() uint64 {
-	if m != nil {
-		return m.BipErrors
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetBipUnits() uint64 {
-	if m != nil {
-		return m.BipUnits
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetFecCorrectedSymbols() uint64 {
-	if m != nil {
-		return m.FecCorrectedSymbols
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetFecCodewordsCorrected() uint64 {
-	if m != nil {
-		return m.FecCodewordsCorrected
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetFecCodewordsUncorrectable() uint64 {
-	if m != nil {
-		return m.FecCodewordsUncorrectable
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetFecCodewords() uint64 {
-	if m != nil {
-		return m.FecCodewords
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetFecCorrectedUnits() uint64 {
-	if m != nil {
-		return m.FecCorrectedUnits
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetXgemKeyErrors() uint64 {
-	if m != nil {
-		return m.XgemKeyErrors
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetXgemLoss() uint64 {
-	if m != nil {
-		return m.XgemLoss
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxPloamsError() uint64 {
-	if m != nil {
-		return m.RxPloamsError
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxPloamsNonIdle() uint64 {
-	if m != nil {
-		return m.RxPloamsNonIdle
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxOmci() uint64 {
-	if m != nil {
-		return m.RxOmci
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxOmciPacketsCrcError() uint64 {
-	if m != nil {
-		return m.RxOmciPacketsCrcError
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetBerReported() uint64 {
-	if m != nil {
-		return m.BerReported
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetLcdgErrors() uint64 {
-	if m != nil {
-		return m.LcdgErrors
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetRdiErrors() uint64 {
-	if m != nil {
-		return m.RdiErrors
-	}
-	return 0
-}
-
-func (m *OnuStatistics) GetTimestamp() uint32 {
-	if m != nil {
-		return m.Timestamp
-	}
-	return 0
-}
-
-type GemPortStatistics struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	GemportId            uint32   `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	RxPackets            uint64   `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	RxBytes              uint64   `protobuf:"fixed64,4,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	TxPackets            uint64   `protobuf:"fixed64,5,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	TxBytes              uint64   `protobuf:"fixed64,6,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	Timestamp            uint32   `protobuf:"fixed32,26,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GemPortStatistics) Reset()         { *m = GemPortStatistics{} }
-func (m *GemPortStatistics) String() string { return proto.CompactTextString(m) }
-func (*GemPortStatistics) ProtoMessage()    {}
-func (*GemPortStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{25}
-}
-
-func (m *GemPortStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GemPortStatistics.Unmarshal(m, b)
-}
-func (m *GemPortStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GemPortStatistics.Marshal(b, m, deterministic)
-}
-func (m *GemPortStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GemPortStatistics.Merge(m, src)
-}
-func (m *GemPortStatistics) XXX_Size() int {
-	return xxx_messageInfo_GemPortStatistics.Size(m)
-}
-func (m *GemPortStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_GemPortStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GemPortStatistics proto.InternalMessageInfo
-
-func (m *GemPortStatistics) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *GemPortStatistics) GetTimestamp() uint32 {
-	if m != nil {
-		return m.Timestamp
-	}
-	return 0
-}
-
-type FlowStatistics struct {
-	FlowId               uint32   `protobuf:"fixed32,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
-	RxBytes              uint64   `protobuf:"fixed64,2,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
-	RxPackets            uint64   `protobuf:"fixed64,3,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
-	TxBytes              uint64   `protobuf:"fixed64,8,opt,name=tx_bytes,json=txBytes,proto3" json:"tx_bytes,omitempty"`
-	TxPackets            uint64   `protobuf:"fixed64,9,opt,name=tx_packets,json=txPackets,proto3" json:"tx_packets,omitempty"`
-	Timestamp            uint32   `protobuf:"fixed32,16,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FlowStatistics) Reset()         { *m = FlowStatistics{} }
-func (m *FlowStatistics) String() string { return proto.CompactTextString(m) }
-func (*FlowStatistics) ProtoMessage()    {}
-func (*FlowStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{26}
-}
-
-func (m *FlowStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FlowStatistics.Unmarshal(m, b)
-}
-func (m *FlowStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FlowStatistics.Marshal(b, m, deterministic)
-}
-func (m *FlowStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowStatistics.Merge(m, src)
-}
-func (m *FlowStatistics) XXX_Size() int {
-	return xxx_messageInfo_FlowStatistics.Size(m)
-}
-func (m *FlowStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_FlowStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FlowStatistics proto.InternalMessageInfo
-
-func (m *FlowStatistics) GetFlowId() uint32 {
-	if m != nil {
-		return m.FlowId
-	}
-	return 0
-}
-
-func (m *FlowStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-func (m *FlowStatistics) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
-	}
-	return 0
-}
-
-func (m *FlowStatistics) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
-	}
-	return 0
-}
-
-func (m *FlowStatistics) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
-	}
-	return 0
-}
-
-func (m *FlowStatistics) GetTimestamp() uint32 {
-	if m != nil {
-		return m.Timestamp
-	}
-	return 0
-}
-
-type LosIndication struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,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 *LosIndication) Reset()         { *m = LosIndication{} }
-func (m *LosIndication) String() string { return proto.CompactTextString(m) }
-func (*LosIndication) ProtoMessage()    {}
-func (*LosIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{27}
-}
-
-func (m *LosIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LosIndication.Unmarshal(m, b)
-}
-func (m *LosIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LosIndication.Marshal(b, m, deterministic)
-}
-func (m *LosIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LosIndication.Merge(m, src)
-}
-func (m *LosIndication) XXX_Size() int {
-	return xxx_messageInfo_LosIndication.Size(m)
-}
-func (m *LosIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_LosIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LosIndication proto.InternalMessageInfo
-
-func (m *LosIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *LosIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-type DyingGaspIndication 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 *DyingGaspIndication) Reset()         { *m = DyingGaspIndication{} }
-func (m *DyingGaspIndication) String() string { return proto.CompactTextString(m) }
-func (*DyingGaspIndication) ProtoMessage()    {}
-func (*DyingGaspIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{28}
-}
-
-func (m *DyingGaspIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DyingGaspIndication.Unmarshal(m, b)
-}
-func (m *DyingGaspIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DyingGaspIndication.Marshal(b, m, deterministic)
-}
-func (m *DyingGaspIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DyingGaspIndication.Merge(m, src)
-}
-func (m *DyingGaspIndication) XXX_Size() int {
-	return xxx_messageInfo_DyingGaspIndication.Size(m)
-}
-func (m *DyingGaspIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_DyingGaspIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DyingGaspIndication proto.InternalMessageInfo
-
-func (m *DyingGaspIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *DyingGaspIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *DyingGaspIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-type OnuAlarmIndication 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"`
-	LosStatus            string   `protobuf:"bytes,3,opt,name=los_status,json=losStatus,proto3" json:"los_status,omitempty"`
-	LobStatus            string   `protobuf:"bytes,4,opt,name=lob_status,json=lobStatus,proto3" json:"lob_status,omitempty"`
-	LopcMissStatus       string   `protobuf:"bytes,5,opt,name=lopc_miss_status,json=lopcMissStatus,proto3" json:"lopc_miss_status,omitempty"`
-	LopcMicErrorStatus   string   `protobuf:"bytes,6,opt,name=lopc_mic_error_status,json=lopcMicErrorStatus,proto3" json:"lopc_mic_error_status,omitempty"`
-	LofiStatus           string   `protobuf:"bytes,7,opt,name=lofi_status,json=lofiStatus,proto3" json:"lofi_status,omitempty"`
-	LoamiStatus          string   `protobuf:"bytes,8,opt,name=loami_status,json=loamiStatus,proto3" json:"loami_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuAlarmIndication) Reset()         { *m = OnuAlarmIndication{} }
-func (m *OnuAlarmIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuAlarmIndication) ProtoMessage()    {}
-func (*OnuAlarmIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{29}
-}
-
-func (m *OnuAlarmIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAlarmIndication.Unmarshal(m, b)
-}
-func (m *OnuAlarmIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAlarmIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuAlarmIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAlarmIndication.Merge(m, src)
-}
-func (m *OnuAlarmIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuAlarmIndication.Size(m)
-}
-func (m *OnuAlarmIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAlarmIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAlarmIndication proto.InternalMessageInfo
-
-func (m *OnuAlarmIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuAlarmIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuAlarmIndication) GetLosStatus() string {
-	if m != nil {
-		return m.LosStatus
-	}
-	return ""
-}
-
-func (m *OnuAlarmIndication) GetLobStatus() string {
-	if m != nil {
-		return m.LobStatus
-	}
-	return ""
-}
-
-func (m *OnuAlarmIndication) GetLopcMissStatus() string {
-	if m != nil {
-		return m.LopcMissStatus
-	}
-	return ""
-}
-
-func (m *OnuAlarmIndication) GetLopcMicErrorStatus() string {
-	if m != nil {
-		return m.LopcMicErrorStatus
-	}
-	return ""
-}
-
-func (m *OnuAlarmIndication) GetLofiStatus() string {
-	if m != nil {
-		return m.LofiStatus
-	}
-	return ""
-}
-
-func (m *OnuAlarmIndication) GetLoamiStatus() string {
-	if m != nil {
-		return m.LoamiStatus
-	}
-	return ""
-}
-
-type OnuStartupFailureIndication 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 *OnuStartupFailureIndication) Reset()         { *m = OnuStartupFailureIndication{} }
-func (m *OnuStartupFailureIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuStartupFailureIndication) ProtoMessage()    {}
-func (*OnuStartupFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{30}
-}
-
-func (m *OnuStartupFailureIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuStartupFailureIndication.Unmarshal(m, b)
-}
-func (m *OnuStartupFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuStartupFailureIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuStartupFailureIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuStartupFailureIndication.Merge(m, src)
-}
-func (m *OnuStartupFailureIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuStartupFailureIndication.Size(m)
-}
-func (m *OnuStartupFailureIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuStartupFailureIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuStartupFailureIndication proto.InternalMessageInfo
-
-func (m *OnuStartupFailureIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuStartupFailureIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuStartupFailureIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-type OnuSignalDegradeIndication 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"`
-	InverseBitErrorRate  uint32   `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuSignalDegradeIndication) Reset()         { *m = OnuSignalDegradeIndication{} }
-func (m *OnuSignalDegradeIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuSignalDegradeIndication) ProtoMessage()    {}
-func (*OnuSignalDegradeIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{31}
-}
-
-func (m *OnuSignalDegradeIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuSignalDegradeIndication.Unmarshal(m, b)
-}
-func (m *OnuSignalDegradeIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuSignalDegradeIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuSignalDegradeIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuSignalDegradeIndication.Merge(m, src)
-}
-func (m *OnuSignalDegradeIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuSignalDegradeIndication.Size(m)
-}
-func (m *OnuSignalDegradeIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuSignalDegradeIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuSignalDegradeIndication proto.InternalMessageInfo
-
-func (m *OnuSignalDegradeIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuSignalDegradeIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuSignalDegradeIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-func (m *OnuSignalDegradeIndication) GetInverseBitErrorRate() uint32 {
-	if m != nil {
-		return m.InverseBitErrorRate
-	}
-	return 0
-}
-
-type OnuDriftOfWindowIndication 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"`
-	Drift                uint32   `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
-	NewEqd               uint32   `protobuf:"fixed32,5,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuDriftOfWindowIndication) Reset()         { *m = OnuDriftOfWindowIndication{} }
-func (m *OnuDriftOfWindowIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuDriftOfWindowIndication) ProtoMessage()    {}
-func (*OnuDriftOfWindowIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{32}
-}
-
-func (m *OnuDriftOfWindowIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuDriftOfWindowIndication.Unmarshal(m, b)
-}
-func (m *OnuDriftOfWindowIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuDriftOfWindowIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuDriftOfWindowIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuDriftOfWindowIndication.Merge(m, src)
-}
-func (m *OnuDriftOfWindowIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuDriftOfWindowIndication.Size(m)
-}
-func (m *OnuDriftOfWindowIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuDriftOfWindowIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuDriftOfWindowIndication proto.InternalMessageInfo
-
-func (m *OnuDriftOfWindowIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuDriftOfWindowIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuDriftOfWindowIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-func (m *OnuDriftOfWindowIndication) GetDrift() uint32 {
-	if m != nil {
-		return m.Drift
-	}
-	return 0
-}
-
-func (m *OnuDriftOfWindowIndication) GetNewEqd() uint32 {
-	if m != nil {
-		return m.NewEqd
-	}
-	return 0
-}
-
-type OnuLossOfOmciChannelIndication 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 *OnuLossOfOmciChannelIndication) Reset()         { *m = OnuLossOfOmciChannelIndication{} }
-func (m *OnuLossOfOmciChannelIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuLossOfOmciChannelIndication) ProtoMessage()    {}
-func (*OnuLossOfOmciChannelIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{33}
-}
-
-func (m *OnuLossOfOmciChannelIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuLossOfOmciChannelIndication.Unmarshal(m, b)
-}
-func (m *OnuLossOfOmciChannelIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuLossOfOmciChannelIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuLossOfOmciChannelIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuLossOfOmciChannelIndication.Merge(m, src)
-}
-func (m *OnuLossOfOmciChannelIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuLossOfOmciChannelIndication.Size(m)
-}
-func (m *OnuLossOfOmciChannelIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuLossOfOmciChannelIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuLossOfOmciChannelIndication proto.InternalMessageInfo
-
-func (m *OnuLossOfOmciChannelIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuLossOfOmciChannelIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuLossOfOmciChannelIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-type OnuSignalsFailureIndication 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"`
-	InverseBitErrorRate  uint32   `protobuf:"fixed32,4,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuSignalsFailureIndication) Reset()         { *m = OnuSignalsFailureIndication{} }
-func (m *OnuSignalsFailureIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuSignalsFailureIndication) ProtoMessage()    {}
-func (*OnuSignalsFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{34}
-}
-
-func (m *OnuSignalsFailureIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuSignalsFailureIndication.Unmarshal(m, b)
-}
-func (m *OnuSignalsFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuSignalsFailureIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuSignalsFailureIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuSignalsFailureIndication.Merge(m, src)
-}
-func (m *OnuSignalsFailureIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuSignalsFailureIndication.Size(m)
-}
-func (m *OnuSignalsFailureIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuSignalsFailureIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuSignalsFailureIndication proto.InternalMessageInfo
-
-func (m *OnuSignalsFailureIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuSignalsFailureIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuSignalsFailureIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-func (m *OnuSignalsFailureIndication) GetInverseBitErrorRate() uint32 {
-	if m != nil {
-		return m.InverseBitErrorRate
-	}
-	return 0
-}
-
-type OnuTransmissionInterferenceWarning 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"`
-	Drift                uint32   `protobuf:"fixed32,4,opt,name=drift,proto3" json:"drift,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuTransmissionInterferenceWarning) Reset()         { *m = OnuTransmissionInterferenceWarning{} }
-func (m *OnuTransmissionInterferenceWarning) String() string { return proto.CompactTextString(m) }
-func (*OnuTransmissionInterferenceWarning) ProtoMessage()    {}
-func (*OnuTransmissionInterferenceWarning) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{35}
-}
-
-func (m *OnuTransmissionInterferenceWarning) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuTransmissionInterferenceWarning.Unmarshal(m, b)
-}
-func (m *OnuTransmissionInterferenceWarning) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuTransmissionInterferenceWarning.Marshal(b, m, deterministic)
-}
-func (m *OnuTransmissionInterferenceWarning) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuTransmissionInterferenceWarning.Merge(m, src)
-}
-func (m *OnuTransmissionInterferenceWarning) XXX_Size() int {
-	return xxx_messageInfo_OnuTransmissionInterferenceWarning.Size(m)
-}
-func (m *OnuTransmissionInterferenceWarning) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuTransmissionInterferenceWarning.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuTransmissionInterferenceWarning proto.InternalMessageInfo
-
-func (m *OnuTransmissionInterferenceWarning) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuTransmissionInterferenceWarning) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuTransmissionInterferenceWarning) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-func (m *OnuTransmissionInterferenceWarning) GetDrift() uint32 {
-	if m != nil {
-		return m.Drift
-	}
-	return 0
-}
-
-type OnuActivationFailureIndication 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"`
-	FailReason           uint32   `protobuf:"fixed32,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuActivationFailureIndication) Reset()         { *m = OnuActivationFailureIndication{} }
-func (m *OnuActivationFailureIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuActivationFailureIndication) ProtoMessage()    {}
-func (*OnuActivationFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{36}
-}
-
-func (m *OnuActivationFailureIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuActivationFailureIndication.Unmarshal(m, b)
-}
-func (m *OnuActivationFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuActivationFailureIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuActivationFailureIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuActivationFailureIndication.Merge(m, src)
-}
-func (m *OnuActivationFailureIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuActivationFailureIndication.Size(m)
-}
-func (m *OnuActivationFailureIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuActivationFailureIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuActivationFailureIndication proto.InternalMessageInfo
-
-func (m *OnuActivationFailureIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuActivationFailureIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuActivationFailureIndication) GetFailReason() uint32 {
-	if m != nil {
-		return m.FailReason
-	}
-	return 0
-}
-
-type OnuLossOfKeySyncFailureIndication 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 *OnuLossOfKeySyncFailureIndication) Reset()         { *m = OnuLossOfKeySyncFailureIndication{} }
-func (m *OnuLossOfKeySyncFailureIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuLossOfKeySyncFailureIndication) ProtoMessage()    {}
-func (*OnuLossOfKeySyncFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{37}
-}
-
-func (m *OnuLossOfKeySyncFailureIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Unmarshal(m, b)
-}
-func (m *OnuLossOfKeySyncFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuLossOfKeySyncFailureIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Merge(m, src)
-}
-func (m *OnuLossOfKeySyncFailureIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuLossOfKeySyncFailureIndication.Size(m)
-}
-func (m *OnuLossOfKeySyncFailureIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuLossOfKeySyncFailureIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuLossOfKeySyncFailureIndication proto.InternalMessageInfo
-
-func (m *OnuLossOfKeySyncFailureIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuLossOfKeySyncFailureIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuLossOfKeySyncFailureIndication) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-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{38}
-}
-
-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{39}
-}
-
-func (m *OnuItuPonStatsIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuItuPonStatsIndication.Unmarshal(m, b)
-}
-func (m *OnuItuPonStatsIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuItuPonStatsIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuItuPonStatsIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuItuPonStatsIndication.Merge(m, src)
-}
-func (m *OnuItuPonStatsIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuItuPonStatsIndication.Size(m)
-}
-func (m *OnuItuPonStatsIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuItuPonStatsIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuItuPonStatsIndication proto.InternalMessageInfo
-
-func (m *OnuItuPonStatsIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuItuPonStatsIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-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.Stats
-	}
-	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{}{
+	file_voltha_protos_openolt_proto_msgTypes[39].OneofWrappers = []any{
 		(*OnuItuPonStatsIndication_RdiErrorInd)(nil),
 	}
-}
-
-type OnuProcessingErrorIndication 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"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuProcessingErrorIndication) Reset()         { *m = OnuProcessingErrorIndication{} }
-func (m *OnuProcessingErrorIndication) String() string { return proto.CompactTextString(m) }
-func (*OnuProcessingErrorIndication) ProtoMessage()    {}
-func (*OnuProcessingErrorIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{40}
-}
-
-func (m *OnuProcessingErrorIndication) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuProcessingErrorIndication.Unmarshal(m, b)
-}
-func (m *OnuProcessingErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuProcessingErrorIndication.Marshal(b, m, deterministic)
-}
-func (m *OnuProcessingErrorIndication) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuProcessingErrorIndication.Merge(m, src)
-}
-func (m *OnuProcessingErrorIndication) XXX_Size() int {
-	return xxx_messageInfo_OnuProcessingErrorIndication.Size(m)
-}
-func (m *OnuProcessingErrorIndication) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuProcessingErrorIndication.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuProcessingErrorIndication proto.InternalMessageInfo
-
-func (m *OnuProcessingErrorIndication) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuProcessingErrorIndication) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	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{41}
-}
-
-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{42}
-}
-
-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{43}
-}
-
-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{44}
-}
-
-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{45}
-}
-
-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{46}
-}
-
-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{47}
-}
-
-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{48}
-}
-
-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                extension.ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=extension.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{49}
-}
-
-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() extension.ValueType_Type {
-	if m != nil {
-		return m.Value
-	}
-	return extension.ValueType_EMPTY
-}
-
-type PonRxPowerData 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"`
-	FailReason           PonRxPowerData_RssiMeasurementFailReason `protobuf:"varint,4,opt,name=fail_reason,json=failReason,proto3,enum=openolt.PonRxPowerData_RssiMeasurementFailReason" json:"fail_reason,omitempty"`
-	RxPowerMeanDbm       float64                                  `protobuf:"fixed64,5,opt,name=rx_power_mean_dbm,json=rxPowerMeanDbm,proto3" json:"rx_power_mean_dbm,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
-}
-
-func (m *PonRxPowerData) Reset()         { *m = PonRxPowerData{} }
-func (m *PonRxPowerData) String() string { return proto.CompactTextString(m) }
-func (*PonRxPowerData) ProtoMessage()    {}
-func (*PonRxPowerData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{50}
-}
-
-func (m *PonRxPowerData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PonRxPowerData.Unmarshal(m, b)
-}
-func (m *PonRxPowerData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PonRxPowerData.Marshal(b, m, deterministic)
-}
-func (m *PonRxPowerData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonRxPowerData.Merge(m, src)
-}
-func (m *PonRxPowerData) XXX_Size() int {
-	return xxx_messageInfo_PonRxPowerData.Size(m)
-}
-func (m *PonRxPowerData) XXX_DiscardUnknown() {
-	xxx_messageInfo_PonRxPowerData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PonRxPowerData proto.InternalMessageInfo
-
-func (m *PonRxPowerData) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *PonRxPowerData) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *PonRxPowerData) GetStatus() string {
-	if m != nil {
-		return m.Status
-	}
-	return ""
-}
-
-func (m *PonRxPowerData) GetFailReason() PonRxPowerData_RssiMeasurementFailReason {
-	if m != nil {
-		return m.FailReason
-	}
-	return PonRxPowerData_FAIL_REASON_NONE
-}
-
-func (m *PonRxPowerData) GetRxPowerMeanDbm() float64 {
-	if m != nil {
-		return m.RxPowerMeanDbm
-	}
-	return 0
-}
-
-type OnuAllocIdStatistics struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intfId,proto3" json:"intfId,omitempty"`
-	AllocId              uint32   `protobuf:"fixed32,2,opt,name=allocId,proto3" json:"allocId,omitempty"`
-	RxBytes              uint64   `protobuf:"fixed64,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *OnuAllocIdStatistics) Reset()         { *m = OnuAllocIdStatistics{} }
-func (m *OnuAllocIdStatistics) String() string { return proto.CompactTextString(m) }
-func (*OnuAllocIdStatistics) ProtoMessage()    {}
-func (*OnuAllocIdStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{51}
-}
-
-func (m *OnuAllocIdStatistics) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuAllocIdStatistics.Unmarshal(m, b)
-}
-func (m *OnuAllocIdStatistics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuAllocIdStatistics.Marshal(b, m, deterministic)
-}
-func (m *OnuAllocIdStatistics) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuAllocIdStatistics.Merge(m, src)
-}
-func (m *OnuAllocIdStatistics) XXX_Size() int {
-	return xxx_messageInfo_OnuAllocIdStatistics.Size(m)
-}
-func (m *OnuAllocIdStatistics) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuAllocIdStatistics.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuAllocIdStatistics proto.InternalMessageInfo
-
-func (m *OnuAllocIdStatistics) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *OnuAllocIdStatistics) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
-	}
-	return 0
-}
-
-func (m *OnuAllocIdStatistics) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
-	}
-	return 0
-}
-
-//
-// contains the onu id, state of the onu and the information about the alarms on the onu.
-// As of now only few alarms are added, any further information needed can be added to the structure.
-type OnuInfo struct {
-	OnuId                uint32           `protobuf:"fixed32,1,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	State                OnuInfo_OnuState `protobuf:"varint,2,opt,name=state,proto3,enum=openolt.OnuInfo_OnuState" json:"state,omitempty"`
-	Losi                 AlarmState       `protobuf:"varint,3,opt,name=losi,proto3,enum=openolt.AlarmState" json:"losi,omitempty"`
-	Lofi                 AlarmState       `protobuf:"varint,4,opt,name=lofi,proto3,enum=openolt.AlarmState" json:"lofi,omitempty"`
-	Loami                AlarmState       `protobuf:"varint,5,opt,name=loami,proto3,enum=openolt.AlarmState" json:"loami,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *OnuInfo) Reset()         { *m = OnuInfo{} }
-func (m *OnuInfo) String() string { return proto.CompactTextString(m) }
-func (*OnuInfo) ProtoMessage()    {}
-func (*OnuInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{52}
-}
-
-func (m *OnuInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuInfo.Unmarshal(m, b)
-}
-func (m *OnuInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuInfo.Marshal(b, m, deterministic)
-}
-func (m *OnuInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuInfo.Merge(m, src)
-}
-func (m *OnuInfo) XXX_Size() int {
-	return xxx_messageInfo_OnuInfo.Size(m)
-}
-func (m *OnuInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuInfo proto.InternalMessageInfo
-
-func (m *OnuInfo) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *OnuInfo) GetState() OnuInfo_OnuState {
-	if m != nil {
-		return m.State
-	}
-	return OnuInfo_UNKNOWN
-}
-
-func (m *OnuInfo) GetLosi() AlarmState {
-	if m != nil {
-		return m.Losi
-	}
-	return AlarmState_OFF
-}
-
-func (m *OnuInfo) GetLofi() AlarmState {
-	if m != nil {
-		return m.Lofi
-	}
-	return AlarmState_OFF
-}
-
-func (m *OnuInfo) GetLoami() AlarmState {
-	if m != nil {
-		return m.Loami
-	}
-	return AlarmState_OFF
-}
-
-//
-// IntfInfo has the interface Id and if there are any alarms active on that interface.
-// Any further information needed from the interface object can be added to the structure.
-type PonIntfInfo struct {
-	IntfId               uint32                   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	State                PonIntfInfo_PonIntfState `protobuf:"varint,3,opt,name=state,proto3,enum=openolt.PonIntfInfo_PonIntfState" json:"state,omitempty"`
-	Los                  AlarmState               `protobuf:"varint,4,opt,name=los,proto3,enum=openolt.AlarmState" json:"los,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
-}
-
-func (m *PonIntfInfo) Reset()         { *m = PonIntfInfo{} }
-func (m *PonIntfInfo) String() string { return proto.CompactTextString(m) }
-func (*PonIntfInfo) ProtoMessage()    {}
-func (*PonIntfInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{53}
-}
-
-func (m *PonIntfInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PonIntfInfo.Unmarshal(m, b)
-}
-func (m *PonIntfInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PonIntfInfo.Marshal(b, m, deterministic)
-}
-func (m *PonIntfInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PonIntfInfo.Merge(m, src)
-}
-func (m *PonIntfInfo) XXX_Size() int {
-	return xxx_messageInfo_PonIntfInfo.Size(m)
-}
-func (m *PonIntfInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_PonIntfInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PonIntfInfo proto.InternalMessageInfo
-
-func (m *PonIntfInfo) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *PonIntfInfo) GetState() PonIntfInfo_PonIntfState {
-	if m != nil {
-		return m.State
-	}
-	return PonIntfInfo_UNKNOWN
-}
-
-func (m *PonIntfInfo) GetLos() AlarmState {
-	if m != nil {
-		return m.Los
-	}
-	return AlarmState_OFF
-}
-
-//
-// Message used for disabling device by serialnumber, disable at PLOAM
-type InterfaceOnuSerialNumberOnuId struct {
-	IntfIdSerialNum      *InterfaceOnuSerialNumber `protobuf:"bytes,1,opt,name=intf_id_serial_num,json=intfIdSerialNum,proto3" json:"intf_id_serial_num,omitempty"`
-	OnuId                uint32                    `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
-}
-
-func (m *InterfaceOnuSerialNumberOnuId) Reset()         { *m = InterfaceOnuSerialNumberOnuId{} }
-func (m *InterfaceOnuSerialNumberOnuId) String() string { return proto.CompactTextString(m) }
-func (*InterfaceOnuSerialNumberOnuId) ProtoMessage()    {}
-func (*InterfaceOnuSerialNumberOnuId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{54}
-}
-
-func (m *InterfaceOnuSerialNumberOnuId) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InterfaceOnuSerialNumberOnuId.Unmarshal(m, b)
-}
-func (m *InterfaceOnuSerialNumberOnuId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InterfaceOnuSerialNumberOnuId.Marshal(b, m, deterministic)
-}
-func (m *InterfaceOnuSerialNumberOnuId) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterfaceOnuSerialNumberOnuId.Merge(m, src)
-}
-func (m *InterfaceOnuSerialNumberOnuId) XXX_Size() int {
-	return xxx_messageInfo_InterfaceOnuSerialNumberOnuId.Size(m)
-}
-func (m *InterfaceOnuSerialNumberOnuId) XXX_DiscardUnknown() {
-	xxx_messageInfo_InterfaceOnuSerialNumberOnuId.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InterfaceOnuSerialNumberOnuId proto.InternalMessageInfo
-
-func (m *InterfaceOnuSerialNumberOnuId) GetIntfIdSerialNum() *InterfaceOnuSerialNumber {
-	if m != nil {
-		return m.IntfIdSerialNum
-	}
-	return nil
-}
-
-func (m *InterfaceOnuSerialNumberOnuId) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-type InterfaceOnuSerialNumber struct {
-	IntfId               uint32        `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuSerialNumber      *SerialNumber `protobuf:"bytes,2,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
-}
-
-func (m *InterfaceOnuSerialNumber) Reset()         { *m = InterfaceOnuSerialNumber{} }
-func (m *InterfaceOnuSerialNumber) String() string { return proto.CompactTextString(m) }
-func (*InterfaceOnuSerialNumber) ProtoMessage()    {}
-func (*InterfaceOnuSerialNumber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{55}
-}
-
-func (m *InterfaceOnuSerialNumber) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InterfaceOnuSerialNumber.Unmarshal(m, b)
-}
-func (m *InterfaceOnuSerialNumber) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InterfaceOnuSerialNumber.Marshal(b, m, deterministic)
-}
-func (m *InterfaceOnuSerialNumber) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InterfaceOnuSerialNumber.Merge(m, src)
-}
-func (m *InterfaceOnuSerialNumber) XXX_Size() int {
-	return xxx_messageInfo_InterfaceOnuSerialNumber.Size(m)
-}
-func (m *InterfaceOnuSerialNumber) XXX_DiscardUnknown() {
-	xxx_messageInfo_InterfaceOnuSerialNumber.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InterfaceOnuSerialNumber proto.InternalMessageInfo
-
-func (m *InterfaceOnuSerialNumber) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
-	}
-	return 0
-}
-
-func (m *InterfaceOnuSerialNumber) GetOnuSerialNumber() *SerialNumber {
-	if m != nil {
-		return m.OnuSerialNumber
-	}
-	return nil
-}
-
-type Empty struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Empty) Reset()         { *m = Empty{} }
-func (m *Empty) String() string { return proto.CompactTextString(m) }
-func (*Empty) ProtoMessage()    {}
-func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{56}
-}
-
-func (m *Empty) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Empty.Unmarshal(m, b)
-}
-func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
-}
-func (m *Empty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Empty.Merge(m, src)
-}
-func (m *Empty) XXX_Size() int {
-	return xxx_messageInfo_Empty.Size(m)
-}
-func (m *Empty) XXX_DiscardUnknown() {
-	xxx_messageInfo_Empty.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Empty proto.InternalMessageInfo
-
-func init() {
-	proto.RegisterEnum("openolt.AlarmState", AlarmState_name, AlarmState_value)
-	proto.RegisterEnum("openolt.OnuIndication_ActivationFailReason", OnuIndication_ActivationFailReason_name, OnuIndication_ActivationFailReason_value)
-	proto.RegisterEnum("openolt.IntfOperIndication_PONResourceRanges_Pool_PoolType", IntfOperIndication_PONResourceRanges_Pool_PoolType_name, IntfOperIndication_PONResourceRanges_Pool_PoolType_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.RegisterEnum("openolt.PonRxPowerData_RssiMeasurementFailReason", PonRxPowerData_RssiMeasurementFailReason_name, PonRxPowerData_RssiMeasurementFailReason_value)
-	proto.RegisterEnum("openolt.OnuInfo_OnuState", OnuInfo_OnuState_name, OnuInfo_OnuState_value)
-	proto.RegisterEnum("openolt.PonIntfInfo_PonIntfState", PonIntfInfo_PonIntfState_name, PonIntfInfo_PonIntfState_value)
-	proto.RegisterType((*Indication)(nil), "openolt.Indication")
-	proto.RegisterType((*AlarmIndication)(nil), "openolt.AlarmIndication")
-	proto.RegisterType((*OltIndication)(nil), "openolt.OltIndication")
-	proto.RegisterType((*IntfIndication)(nil), "openolt.IntfIndication")
-	proto.RegisterType((*OnuDiscIndication)(nil), "openolt.OnuDiscIndication")
-	proto.RegisterType((*OnuIndication)(nil), "openolt.OnuIndication")
-	proto.RegisterType((*OnuDisabledIndication)(nil), "openolt.OnuDisabledIndication")
-	proto.RegisterType((*OnuEnabledIndication)(nil), "openolt.OnuEnabledIndication")
-	proto.RegisterType((*IntfOperIndication)(nil), "openolt.IntfOperIndication")
-	proto.RegisterType((*IntfOperIndication_PONResourceRanges)(nil), "openolt.IntfOperIndication.PONResourceRanges")
-	proto.RegisterType((*IntfOperIndication_PONResourceRanges_Pool)(nil), "openolt.IntfOperIndication.PONResourceRanges.Pool")
-	proto.RegisterType((*OmciIndication)(nil), "openolt.OmciIndication")
-	proto.RegisterType((*PacketIndication)(nil), "openolt.PacketIndication")
-	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")
-	proto.RegisterType((*DeviceInfo)(nil), "openolt.DeviceInfo")
-	proto.RegisterType((*DeviceInfo_DeviceResourceRanges)(nil), "openolt.DeviceInfo.DeviceResourceRanges")
-	proto.RegisterType((*DeviceInfo_DeviceResourceRanges_Pool)(nil), "openolt.DeviceInfo.DeviceResourceRanges.Pool")
-	proto.RegisterType((*Classifier)(nil), "openolt.Classifier")
-	proto.RegisterType((*ActionCmd)(nil), "openolt.ActionCmd")
-	proto.RegisterType((*Action)(nil), "openolt.Action")
-	proto.RegisterType((*Flow)(nil), "openolt.Flow")
-	proto.RegisterMapType((map[uint32]bool)(nil), "openolt.Flow.GemportToAesEntry")
-	proto.RegisterMapType((map[uint32]uint32)(nil), "openolt.Flow.PbitToGemportEntry")
-	proto.RegisterType((*SerialNumber)(nil), "openolt.SerialNumber")
-	proto.RegisterType((*OnuStatistics)(nil), "openolt.OnuStatistics")
-	proto.RegisterType((*GemPortStatistics)(nil), "openolt.GemPortStatistics")
-	proto.RegisterType((*FlowStatistics)(nil), "openolt.FlowStatistics")
-	proto.RegisterType((*LosIndication)(nil), "openolt.LosIndication")
-	proto.RegisterType((*DyingGaspIndication)(nil), "openolt.DyingGaspIndication")
-	proto.RegisterType((*OnuAlarmIndication)(nil), "openolt.OnuAlarmIndication")
-	proto.RegisterType((*OnuStartupFailureIndication)(nil), "openolt.OnuStartupFailureIndication")
-	proto.RegisterType((*OnuSignalDegradeIndication)(nil), "openolt.OnuSignalDegradeIndication")
-	proto.RegisterType((*OnuDriftOfWindowIndication)(nil), "openolt.OnuDriftOfWindowIndication")
-	proto.RegisterType((*OnuLossOfOmciChannelIndication)(nil), "openolt.OnuLossOfOmciChannelIndication")
-	proto.RegisterType((*OnuSignalsFailureIndication)(nil), "openolt.OnuSignalsFailureIndication")
-	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((*PonRxPowerData)(nil), "openolt.PonRxPowerData")
-	proto.RegisterType((*OnuAllocIdStatistics)(nil), "openolt.OnuAllocIdStatistics")
-	proto.RegisterType((*OnuInfo)(nil), "openolt.OnuInfo")
-	proto.RegisterType((*PonIntfInfo)(nil), "openolt.PonIntfInfo")
-	proto.RegisterType((*InterfaceOnuSerialNumberOnuId)(nil), "openolt.InterfaceOnuSerialNumberOnuId")
-	proto.RegisterType((*InterfaceOnuSerialNumber)(nil), "openolt.InterfaceOnuSerialNumber")
-	proto.RegisterType((*Empty)(nil), "openolt.Empty")
-}
-
-func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
-
-var fileDescriptor_c072e7aa0dfd74d5 = []byte{
-	// 5437 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7c, 0xc9, 0x73, 0x23, 0xc9,
-	0x75, 0x77, 0x83, 0x04, 0x01, 0xf0, 0x11, 0x00, 0xc1, 0xe4, 0x4e, 0xf6, 0x5a, 0xb3, 0xf5, 0x8c,
-	0x34, 0x6c, 0x4d, 0x4b, 0x9f, 0x34, 0x5a, 0x3e, 0x69, 0xd0, 0x04, 0x9a, 0xc4, 0x0c, 0x09, 0xd0,
-	0x45, 0x74, 0xb7, 0x35, 0xf2, 0x44, 0xa9, 0x58, 0x95, 0x00, 0x4b, 0x2c, 0x54, 0xd6, 0x54, 0x15,
-	0xc8, 0xa6, 0x8f, 0xb2, 0x2d, 0x5f, 0x7c, 0x53, 0xd8, 0x11, 0xf6, 0xc9, 0x4b, 0x84, 0x4f, 0xbe,
-	0xf8, 0xa6, 0x08, 0xdf, 0xec, 0x83, 0xff, 0x00, 0x9f, 0x1d, 0xe1, 0x83, 0xc3, 0x3e, 0xf8, 0xe4,
-	0x8b, 0x4f, 0x3e, 0x38, 0xf2, 0x65, 0xd6, 0x92, 0x58, 0xc8, 0xa6, 0x86, 0x96, 0x2f, 0x1d, 0xcc,
-	0xb7, 0xfc, 0x5e, 0xe6, 0xcb, 0xf7, 0x32, 0x5f, 0x66, 0x25, 0x1a, 0xb6, 0xcf, 0x99, 0x1b, 0x9d,
-	0x9a, 0x86, 0x1f, 0xb0, 0x88, 0x85, 0x4f, 0x98, 0x4f, 0x3d, 0xe6, 0x46, 0x3b, 0xd8, 0x24, 0x45,
-	0xd9, 0xdc, 0xba, 0xdb, 0x67, 0xac, 0xef, 0xd2, 0x27, 0xa6, 0xef, 0x3c, 0x31, 0x3d, 0x8f, 0x45,
-	0x66, 0xe4, 0x30, 0x2f, 0x14, 0x62, 0x5b, 0x0f, 0x55, 0x8c, 0x88, 0x5a, 0xa7, 0xfc, 0xef, 0x9e,
-	0xe3, 0x52, 0x29, 0x71, 0x5f, 0x95, 0xa0, 0xaf, 0x23, 0xc3, 0x62, 0x5e, 0xcf, 0xe9, 0x4f, 0xe5,
-	0x53, 0x2f, 0xcc, 0x58, 0xd8, 0x52, 0xf9, 0x16, 0x1b, 0x0c, 0x98, 0x27, 0x78, 0xda, 0xbf, 0xcc,
-	0x01, 0xb4, 0x3c, 0xdb, 0xb1, 0xb0, 0x4f, 0xe4, 0x23, 0x28, 0x32, 0x37, 0x32, 0x1c, 0xcf, 0xde,
-	0xc8, 0x3d, 0xcc, 0x3d, 0x5e, 0x78, 0xba, 0xb6, 0x13, 0x0f, 0xaa, 0xe3, 0x46, 0xa9, 0xe0, 0xfe,
-	0x1d, 0xbd, 0xc0, 0x90, 0x40, 0xbe, 0x05, 0x25, 0xc7, 0x8b, 0x7a, 0xa8, 0x33, 0x83, 0x3a, 0xeb,
-	0x89, 0x4e, 0xcb, 0x8b, 0x7a, 0x8a, 0x52, 0xd1, 0x11, 0x14, 0x52, 0x87, 0x0a, 0x6a, 0x31, 0x9f,
-	0x06, 0xa8, 0x3a, 0x8b, 0xaa, 0xdb, 0x8a, 0x6a, 0xc7, 0xa7, 0x81, 0xa2, 0xbe, 0xe0, 0xa4, 0x54,
-	0xf2, 0x43, 0x28, 0x33, 0x6f, 0x68, 0xd8, 0x4e, 0x68, 0x21, 0x42, 0x1e, 0x11, 0xb6, 0xd2, 0x0e,
-	0x7b, 0xc3, 0x86, 0x13, 0x5a, 0x0a, 0x00, 0xb0, 0x84, 0x88, 0x63, 0xf5, 0x86, 0xa8, 0x3a, 0x37,
-	0x3a, 0x56, 0x6f, 0x38, 0x32, 0x56, 0x24, 0xf0, 0xb1, 0xb2, 0x81, 0xe5, 0xa0, 0x4e, 0x61, 0x64,
-	0xac, 0x9d, 0x81, 0xe5, 0xa8, 0x63, 0x65, 0x82, 0x42, 0xbe, 0x05, 0x45, 0xff, 0x4c, 0x38, 0xb5,
-	0x88, 0x4a, 0x9b, 0x89, 0xd2, 0x91, 0x69, 0x9d, 0xd1, 0x11, 0xbf, 0xfa, 0x67, 0xe8, 0xd7, 0xef,
-	0x00, 0xf8, 0x2c, 0x88, 0x8c, 0x30, 0x32, 0xa3, 0x70, 0xa3, 0x24, 0x7b, 0x28, 0x27, 0xef, 0x88,
-	0x05, 0xd1, 0x31, 0x8f, 0xa3, 0x30, 0x72, 0xac, 0x70, 0xff, 0x8e, 0x3e, 0xef, 0x4b, 0x4a, 0x48,
-	0x3e, 0x06, 0xe8, 0xb9, 0xec, 0x42, 0x2a, 0xce, 0x8f, 0x74, 0xf3, 0xb9, 0xcb, 0x2e, 0x54, 0xcd,
-	0x9e, 0xa4, 0x84, 0xe4, 0x3b, 0x30, 0x6f, 0xba, 0x66, 0x30, 0xc0, 0xae, 0x02, 0x2a, 0x6e, 0x24,
-	0x8a, 0x75, 0xce, 0x51, 0x7a, 0x5a, 0x32, 0x25, 0x89, 0x7c, 0x0a, 0x35, 0x39, 0x15, 0xe6, 0x89,
-	0x4b, 0x6d, 0xd4, 0x5f, 0x40, 0xfd, 0xfb, 0x23, 0xd3, 0x81, 0x7c, 0x05, 0xa5, 0xca, 0x14, 0x06,
-	0xd9, 0x83, 0x45, 0x8e, 0x45, 0xbd, 0x14, 0xaa, 0x8c, 0x50, 0xf7, 0xb2, 0x50, 0x4d, 0x6f, 0x1c,
-	0xa9, 0xc2, 0xb2, 0xf4, 0x67, 0x05, 0xc8, 0xdb, 0x66, 0x64, 0x6a, 0xff, 0x51, 0x81, 0xc5, 0x91,
-	0xce, 0xf3, 0xb9, 0x77, 0x59, 0x38, 0x31, 0xce, 0x0f, 0x58, 0xa8, 0xce, 0x87, 0x8b, 0x04, 0xd2,
-	0x80, 0xaa, 0x7d, 0xe9, 0x78, 0x7d, 0xa3, 0x6f, 0x86, 0x7e, 0x26, 0xda, 0xef, 0x26, 0x9a, 0x0d,
-	0xce, 0xde, 0x33, 0x43, 0x5f, 0xd1, 0x2f, 0xdb, 0x19, 0x32, 0x8f, 0x7b, 0x3e, 0xba, 0xd4, 0xcd,
-	0xa3, 0x71, 0xdf, 0xf1, 0x86, 0xe3, 0x9e, 0x5e, 0x60, 0x29, 0x95, 0xbc, 0x82, 0x15, 0x0e, 0x11,
-	0x46, 0x66, 0x10, 0x0d, 0x7d, 0xa3, 0x67, 0x3a, 0x6e, 0x26, 0xfe, 0xdf, 0xce, 0x22, 0x1d, 0x0b,
-	0x99, 0xe7, 0xa6, 0xe3, 0x0e, 0x03, 0xaa, 0x40, 0x2e, 0x31, 0x85, 0xcd, 0x81, 0x3f, 0x87, 0x35,
-	0x04, 0x76, 0xfa, 0x9e, 0xe9, 0x1a, 0x36, 0xed, 0x07, 0xa6, 0x4d, 0x33, 0xf9, 0xf1, 0x96, 0x02,
-	0x8d, 0x52, 0x0d, 0x21, 0xa4, 0x20, 0x2f, 0xb3, 0x71, 0x2e, 0xf9, 0x09, 0xac, 0x63, 0x84, 0x04,
-	0x4e, 0x2f, 0x32, 0x58, 0xcf, 0xb8, 0x70, 0x3c, 0x9b, 0x5d, 0x64, 0x12, 0x49, 0x01, 0x6f, 0x70,
-	0xb1, 0x4e, 0xef, 0x15, 0x0a, 0x8d, 0x81, 0x8f, 0x72, 0x49, 0x17, 0xf8, 0x68, 0x0c, 0x97, 0x85,
-	0xa1, 0x91, 0xe4, 0xa7, 0x48, 0xb5, 0xf7, 0xb2, 0xb0, 0x07, 0x2c, 0x0c, 0x3b, 0x3d, 0x9e, 0xa8,
-	0xbb, 0xa7, 0xa6, 0xe7, 0x51, 0x77, 0x2c, 0x10, 0x51, 0x42, 0xa6, 0x6d, 0xec, 0x67, 0x1c, 0x4a,
-	0x98, 0xfa, 0xb9, 0x34, 0xc1, 0xcf, 0x42, 0x66, 0xaa, 0x9f, 0x53, 0x36, 0x07, 0xee, 0x88, 0x85,
-	0x2b, 0x72, 0x2e, 0x44, 0x4f, 0x45, 0x8a, 0x7e, 0x2d, 0x0b, 0xd8, 0x0d, 0x4c, 0x2f, 0x1c, 0x38,
-	0x21, 0x5f, 0xc6, 0x5b, 0x5e, 0x44, 0x83, 0x1e, 0x0d, 0xa8, 0x67, 0xd1, 0x57, 0x66, 0xe0, 0x39,
-	0x5e, 0x5f, 0xae, 0x64, 0x5d, 0xe7, 0x02, 0x7b, 0xfa, 0x53, 0xe1, 0x5c, 0xd3, 0x8a, 0x9c, 0x73,
-	0xb4, 0x9b, 0x76, 0x16, 0xc6, 0xbd, 0x50, 0x4f, 0xc4, 0x26, 0xf5, 0x97, 0x8f, 0x59, 0x95, 0x10,
-	0x16, 0x36, 0xb8, 0x05, 0x3f, 0x60, 0x16, 0x0d, 0x43, 0x9e, 0x05, 0x34, 0x08, 0x58, 0x90, 0x49,
-	0xf4, 0x77, 0xb2, 0x26, 0x8e, 0x12, 0xb9, 0x26, 0x17, 0x53, 0x0c, 0xac, 0xb2, 0x49, 0x7c, 0x42,
-	0x61, 0x33, 0x9d, 0xc3, 0x9e, 0x11, 0x5e, 0x7a, 0x56, 0x3a, 0x0a, 0xb1, 0x00, 0x7c, 0x30, 0x3e,
-	0x97, 0x9f, 0xd1, 0xcb, 0xe3, 0x4b, 0xcf, 0x9a, 0x36, 0x10, 0x21, 0x14, 0x4b, 0x70, 0x33, 0x2f,
-	0x60, 0x15, 0x17, 0xfd, 0x68, 0x68, 0xf8, 0xcc, 0x13, 0x6b, 0x24, 0x9a, 0xa8, 0xa0, 0x89, 0x47,
-	0xca, 0x16, 0x10, 0x0d, 0x8f, 0x98, 0x87, 0x4b, 0xe3, 0xd8, 0x94, 0xaa, 0x3c, 0xe2, 0xc2, 0x5d,
-	0x0c, 0x6f, 0x3a, 0x32, 0x07, 0xc3, 0x40, 0x24, 0x50, 0x15, 0xd1, 0xdf, 0x57, 0x62, 0x3c, 0x23,
-	0x3b, 0xa9, 0xff, 0xdc, 0x1d, 0x93, 0x65, 0xc8, 0x2b, 0x31, 0x88, 0x80, 0x0e, 0x58, 0x44, 0x0d,
-	0x9b, 0xf6, 0xa8, 0x25, 0xb6, 0x97, 0x45, 0x34, 0xa3, 0x65, 0xcd, 0xe8, 0x28, 0xd4, 0x40, 0x19,
-	0x05, 0x9f, 0xb0, 0x31, 0x26, 0x09, 0xc5, 0x30, 0x70, 0x12, 0xfa, 0x74, 0x60, 0xd8, 0xd4, 0x75,
-	0x3c, 0x2a, 0x86, 0xc3, 0xf1, 0x6b, 0x88, 0xff, 0xd1, 0xf8, 0x3c, 0xec, 0x35, 0x0f, 0x65, 0x4a,
-	0x35, 0x52, 0x15, 0xc5, 0xdc, 0x86, 0x9c, 0x8e, 0x3d, 0x3a, 0x50, 0x45, 0xc8, 0x39, 0x3c, 0xc4,
-	0xd8, 0x3a, 0xbd, 0x0c, 0x1d, 0xcb, 0x74, 0x0d, 0xfa, 0xe5, 0xd0, 0xf1, 0x07, 0xd4, 0x8b, 0x32,
-	0x31, 0xb6, 0x84, 0x86, 0xbf, 0xae, 0xc4, 0x98, 0x94, 0x6f, 0xc6, 0xe2, 0xe3, 0xa1, 0xc6, 0x07,
-	0x33, 0x55, 0x8c, 0xfc, 0x04, 0x96, 0xb3, 0x11, 0x67, 0x5a, 0x67, 0x68, 0x8a, 0x8c, 0x67, 0xa3,
-	0x18, 0x63, 0xdd, 0x3a, 0xf3, 0xd8, 0x85, 0x4b, 0xed, 0x3e, 0xe5, 0x38, 0x8a, 0xa5, 0x45, 0x96,
-	0x91, 0xe2, 0xe0, 0x0c, 0xb6, 0xc5, 0x8e, 0xd8, 0xeb, 0x19, 0x01, 0x35, 0xad, 0x53, 0x83, 0xbe,
-	0xb6, 0x28, 0xb5, 0xe5, 0x8e, 0xb6, 0x8c, 0x46, 0x9e, 0xa8, 0x9b, 0x63, 0x0f, 0x93, 0x3c, 0x72,
-	0x4c, 0x57, 0xe7, 0x1a, 0x4d, 0xa9, 0xa0, 0x18, 0x5a, 0x67, 0x42, 0x72, 0x54, 0x22, 0xd9, 0xed,
-	0x76, 0xa0, 0xa2, 0x54, 0x6a, 0xe4, 0x1e, 0x00, 0x16, 0x59, 0x3c, 0xd4, 0x29, 0xee, 0x76, 0xf3,
-	0xfa, 0x3c, 0xa7, 0xf0, 0xe0, 0xa5, 0xda, 0x3e, 0x54, 0xd5, 0x2a, 0x8d, 0xac, 0x43, 0x51, 0x14,
-	0x74, 0x62, 0x6f, 0x2c, 0xea, 0x05, 0x2c, 0xda, 0xec, 0x11, 0xa4, 0x99, 0x51, 0xa4, 0x53, 0x58,
-	0x1a, 0x2b, 0xb9, 0xa6, 0x83, 0x7d, 0x0f, 0x2a, 0x21, 0x0d, 0x1c, 0xd3, 0x35, 0xbc, 0xe1, 0xe0,
-	0x84, 0x06, 0x72, 0x37, 0x5d, 0x4d, 0x5c, 0x72, 0x8c, 0xdc, 0x36, 0x32, 0xf5, 0x72, 0x98, 0x69,
-	0x69, 0xbf, 0xcc, 0x43, 0x45, 0x29, 0xd1, 0xa6, 0x9b, 0x59, 0x85, 0x02, 0xe6, 0xbb, 0xd8, 0xad,
-	0x8b, 0xfa, 0x1c, 0xcf, 0xdd, 0xd1, 0xa1, 0xcc, 0x8e, 0x0c, 0x85, 0x3c, 0x80, 0x05, 0xd3, 0x1e,
-	0x38, 0x9e, 0xe4, 0xcf, 0x21, 0x1f, 0x90, 0x24, 0x04, 0xc6, 0x7a, 0x9f, 0x7f, 0xe3, 0xde, 0x93,
-	0x03, 0x58, 0xc0, 0x85, 0x2d, 0xa0, 0x66, 0xc8, 0x3c, 0xdc, 0xfe, 0xaa, 0x6a, 0xbc, 0xa5, 0x03,
-	0xdb, 0x51, 0x97, 0x62, 0x1d, 0x55, 0x74, 0xe8, 0x25, 0x7f, 0x6b, 0x7f, 0x38, 0x03, 0x2b, 0x93,
-	0x84, 0xc8, 0x5b, 0xf0, 0xa0, 0xd3, 0x7e, 0x61, 0xd4, 0x77, 0xbb, 0xad, 0x97, 0xf5, 0x6e, 0xab,
-	0xd3, 0x36, 0x9e, 0xd7, 0x5b, 0x07, 0x86, 0xde, 0xac, 0x1f, 0x77, 0xda, 0x46, 0xbb, 0xd3, 0x6e,
-	0xd6, 0xee, 0x90, 0x77, 0x41, 0xbb, 0x42, 0x48, 0xaf, 0xb7, 0xf7, 0x5a, 0xed, 0xbd, 0x5a, 0x8e,
-	0x7c, 0x1b, 0x9e, 0x5e, 0x21, 0x77, 0x54, 0x3f, 0x3e, 0x7e, 0xd5, 0xd1, 0x1b, 0x46, 0xfd, 0x45,
-	0x77, 0xbf, 0xd9, 0xee, 0xb6, 0x76, 0x51, 0xa6, 0x36, 0x43, 0x34, 0xb8, 0x7f, 0x85, 0xde, 0x41,
-	0xe7, 0xb8, 0x36, 0x4b, 0x1e, 0xc1, 0xbd, 0x49, 0x32, 0x48, 0x3b, 0xa8, 0xeb, 0x87, 0xb5, 0xfc,
-	0xb4, 0xb1, 0x1c, 0xbf, 0x6a, 0x75, 0x77, 0xf7, 0x8d, 0xce, 0xcb, 0xa6, 0x5e, 0x9b, 0xd3, 0x7e,
-	0x2f, 0x07, 0xab, 0x13, 0x8b, 0xcc, 0x1b, 0x47, 0xc7, 0x57, 0x98, 0x5d, 0xed, 0xe7, 0x39, 0x58,
-	0x99, 0x54, 0x9f, 0xfe, 0x66, 0x3b, 0x91, 0x07, 0x32, 0x7e, 0x80, 0x22, 0x04, 0xf2, 0xd1, 0xa5,
-	0x1f, 0x2f, 0x02, 0xf8, 0x77, 0xb6, 0x5b, 0x33, 0x57, 0x64, 0xfb, 0x58, 0x8a, 0xac, 0xc0, 0x5c,
-	0xe8, 0x53, 0x2a, 0xca, 0xce, 0xa2, 0x2e, 0x1a, 0xe4, 0x3e, 0x00, 0x3f, 0xc0, 0x7a, 0xcc, 0x65,
-	0xfd, 0xcb, 0x38, 0x6f, 0x52, 0x0a, 0x69, 0x42, 0x21, 0x30, 0xbd, 0x3e, 0x0d, 0x65, 0xd5, 0xf7,
-	0xe1, 0x15, 0xe7, 0xbd, 0x9d, 0xa3, 0x4e, 0x5b, 0xa7, 0x21, 0x1b, 0x06, 0x16, 0xd5, 0x51, 0x49,
-	0x97, 0xca, 0x5b, 0x7f, 0x39, 0x03, 0x4b, 0x63, 0x5c, 0xb2, 0x0f, 0x73, 0x3e, 0x63, 0x6e, 0xb8,
-	0x31, 0xfb, 0x70, 0xf6, 0xf1, 0xc2, 0xd3, 0xa7, 0x37, 0xc2, 0xde, 0x39, 0x62, 0xcc, 0xd5, 0x05,
-	0xc0, 0xd6, 0xdf, 0xe7, 0x20, 0xcf, 0xdb, 0xa4, 0x93, 0xf1, 0x58, 0xf5, 0xe9, 0xf7, 0x6f, 0x8e,
-	0x88, 0xff, 0x74, 0x2f, 0x7d, 0x2a, 0xdd, 0xcd, 0xdd, 0xc6, 0xab, 0x6e, 0x74, 0x28, 0x77, 0x1b,
-	0x6f, 0x90, 0x1a, 0xcc, 0x52, 0x2f, 0x76, 0x25, 0xff, 0x53, 0xab, 0x43, 0x29, 0xd6, 0x24, 0x00,
-	0x05, 0x1e, 0xfd, 0xad, 0x46, 0xed, 0x0e, 0x29, 0x43, 0xa9, 0x7e, 0x70, 0xd0, 0xd9, 0xe5, 0xad,
-	0x1c, 0xa9, 0x02, 0xec, 0x35, 0x0f, 0x8f, 0x3a, 0x7a, 0x97, 0xb7, 0x67, 0xc8, 0x02, 0x14, 0x9f,
-	0x1f, 0x74, 0x5e, 0xf1, 0xc6, 0xac, 0xa6, 0x43, 0x55, 0x3d, 0x93, 0xde, 0x38, 0x04, 0x6b, 0x30,
-	0xeb, 0x9f, 0x89, 0xae, 0x96, 0x75, 0xfe, 0xa7, 0xf6, 0x9f, 0x39, 0xa8, 0x8d, 0x9e, 0x59, 0xc9,
-	0x36, 0xcc, 0x23, 0x2c, 0x7a, 0x4a, 0xcc, 0x39, 0x5e, 0x09, 0x74, 0x47, 0xe2, 0x6b, 0x9a, 0xcd,
-	0x52, 0xd6, 0xe6, 0x2a, 0x14, 0x86, 0x9e, 0xc3, 0xc9, 0xf3, 0x82, 0x3c, 0xf4, 0x1c, 0x11, 0x8d,
-	0x7d, 0x3a, 0xc0, 0x03, 0x71, 0xd2, 0xcb, 0x79, 0x49, 0x69, 0xd9, 0xdc, 0x0a, 0x9e, 0x79, 0x1d,
-	0x5b, 0x3a, 0xb6, 0xc0, 0x9b, 0x82, 0x81, 0x4a, 0x1e, 0xc3, 0x88, 0x2b, 0xea, 0x05, 0xde, 0x6c,
-	0x33, 0xb2, 0x06, 0x05, 0x8b, 0xb1, 0x33, 0x87, 0xe2, 0x41, 0xa1, 0xa0, 0xcb, 0x56, 0x3c, 0xe6,
-	0x7c, 0x3a, 0xe6, 0x3a, 0xcc, 0x8b, 0x12, 0xdc, 0xb4, 0xae, 0x18, 0x8e, 0xe2, 0x04, 0xd1, 0xbf,
-	0xc4, 0x09, 0xda, 0x0f, 0x60, 0x7e, 0x9f, 0x9a, 0x41, 0x74, 0x42, 0xcd, 0x88, 0x3c, 0x81, 0xe5,
-	0xd3, 0xb8, 0x21, 0x4e, 0x17, 0xd1, 0x30, 0xa0, 0x12, 0x8e, 0x24, 0xac, 0xe3, 0x98, 0xa3, 0xfd,
-	0x4d, 0x0e, 0x66, 0x3b, 0xde, 0xf0, 0xab, 0xaf, 0x20, 0xb3, 0x6f, 0xbe, 0x49, 0x71, 0x37, 0x38,
-	0x41, 0x1c, 0x91, 0xbe, 0x13, 0x90, 0xf7, 0x60, 0x91, 0x0d, 0x2c, 0xcb, 0xa0, 0x9e, 0x15, 0x5c,
-	0xfa, 0x7c, 0xe2, 0x71, 0xae, 0x4b, 0x7a, 0x95, 0x93, 0x9b, 0x09, 0x55, 0xfb, 0xdb, 0x1c, 0x10,
-	0x2c, 0x9a, 0xfa, 0xbc, 0xee, 0x6a, 0x38, 0x61, 0x64, 0x7a, 0x16, 0xbd, 0x71, 0xef, 0xbf, 0x0b,
-	0x9b, 0xae, 0x80, 0x30, 0xe4, 0xdd, 0x02, 0xe2, 0x18, 0xbf, 0x4b, 0x03, 0x26, 0x27, 0x79, 0x4d,
-	0x0a, 0x88, 0x55, 0x1f, 0xd9, 0x9f, 0xd3, 0x80, 0x91, 0x6f, 0xc0, 0xca, 0x24, 0x55, 0x39, 0x1a,
-	0x32, 0xae, 0xa5, 0x7d, 0x06, 0x45, 0x9e, 0x2b, 0x87, 0x61, 0xff, 0x16, 0x92, 0xe4, 0xcf, 0x73,
-	0x30, 0xcf, 0x0b, 0x54, 0xcc, 0x93, 0x1b, 0xe3, 0x65, 0x22, 0x36, 0xaf, 0x44, 0xac, 0x9a, 0x02,
-	0x73, 0xa3, 0x29, 0xb0, 0x09, 0x25, 0xd3, 0x75, 0x99, 0xc5, 0x99, 0x22, 0xd4, 0x8b, 0xd8, 0x9e,
-	0xd8, 0xc5, 0xef, 0x42, 0xf9, 0x85, 0xef, 0x3a, 0xde, 0xd9, 0x75, 0x9d, 0x94, 0xaa, 0x33, 0xa9,
-	0xea, 0xaf, 0x8a, 0x00, 0x0d, 0x7a, 0xee, 0x58, 0xb4, 0xe5, 0xf5, 0x30, 0x8f, 0xce, 0xa9, 0x67,
-	0xb3, 0x40, 0xee, 0x2a, 0xb2, 0xc5, 0x17, 0xba, 0x01, 0xb3, 0xa9, 0x2b, 0xeb, 0x44, 0xd1, 0x20,
-	0xef, 0x43, 0xed, 0xd4, 0x0c, 0xec, 0x0b, 0x33, 0xa0, 0xc6, 0x39, 0x0d, 0xf8, 0xf1, 0x56, 0x6e,
-	0x2d, 0x8b, 0x31, 0xfd, 0xa5, 0x20, 0x73, 0xd1, 0x9e, 0x13, 0x0c, 0x14, 0xd1, 0xbc, 0x10, 0x8d,
-	0xe9, 0xb1, 0xe8, 0x36, 0xcc, 0xdb, 0xd8, 0x23, 0xde, 0xff, 0x9a, 0x58, 0x80, 0x04, 0xa1, 0x65,
-	0xf3, 0x60, 0x90, 0x4c, 0x35, 0x19, 0x96, 0x50, 0x8e, 0x08, 0x5e, 0x36, 0x13, 0xc8, 0x47, 0xb0,
-	0xe2, 0x07, 0xf4, 0xdc, 0x61, 0xc3, 0xd0, 0xbd, 0x34, 0x2c, 0xe6, 0x79, 0xd4, 0x8a, 0xa8, 0x28,
-	0xda, 0x4b, 0xfa, 0x72, 0xca, 0xdb, 0x8d, 0x59, 0xbc, 0x07, 0xfc, 0x38, 0xc9, 0xa7, 0x22, 0xc4,
-	0xd3, 0x6a, 0x51, 0x2f, 0xf9, 0xcc, 0x3b, 0xe2, 0x6d, 0xce, 0xf4, 0x3c, 0x47, 0x32, 0x57, 0x04,
-	0xd3, 0xf3, 0x1c, 0xc1, 0xfc, 0x24, 0xd9, 0x11, 0x17, 0x71, 0xd7, 0x7a, 0x9c, 0x5e, 0x27, 0x25,
-	0x4e, 0x96, 0x7f, 0x4e, 0xd9, 0x0c, 0xff, 0x38, 0x0f, 0x2b, 0x93, 0x04, 0x78, 0x44, 0xc8, 0x49,
-	0x0d, 0x37, 0x72, 0x0f, 0x67, 0x79, 0x44, 0x88, 0x59, 0x0d, 0x47, 0xf6, 0xe9, 0x99, 0xb1, 0x7d,
-	0x7a, 0x57, 0xdd, 0x4a, 0x3f, 0x7c, 0xd3, 0x4e, 0x29, 0xbb, 0xe8, 0x7f, 0xcf, 0xc8, 0x5d, 0xf4,
-	0x53, 0x65, 0x17, 0xfd, 0xf6, 0x8d, 0xc0, 0x46, 0x37, 0xd0, 0x63, 0x28, 0x86, 0xa7, 0x66, 0xe0,
-	0x78, 0x7d, 0xec, 0x76, 0xf5, 0xe9, 0x77, 0x6f, 0x06, 0x77, 0x2c, 0x94, 0x11, 0x31, 0x46, 0xfa,
-	0x4d, 0xee, 0xca, 0xa7, 0xb0, 0x90, 0xe9, 0x02, 0x59, 0x03, 0xd2, 0x68, 0x36, 0x78, 0xc1, 0xdc,
-	0x6c, 0x18, 0x47, 0x4d, 0xdd, 0x68, 0xb5, 0xbb, 0xcf, 0x6b, 0x77, 0xc8, 0x03, 0xd8, 0x3e, 0xde,
-	0xaf, 0xeb, 0xcd, 0x86, 0xf1, 0xec, 0xc7, 0x46, 0xfd, 0xe0, 0x00, 0xe9, 0xf8, 0x47, 0xb7, 0xb9,
-	0xbb, 0x5f, 0xcb, 0x91, 0x87, 0x70, 0x77, 0x82, 0xc0, 0x71, 0xfd, 0xb0, 0x29, 0x24, 0x66, 0x3e,
-	0xcd, 0x97, 0xe6, 0x6a, 0xe5, 0x4f, 0xf3, 0xa5, 0x4a, 0xad, 0xfa, 0x69, 0xbe, 0x54, 0xad, 0x2d,
-	0x6a, 0xbf, 0x3f, 0x0b, 0xb0, 0xeb, 0x9a, 0x61, 0xe8, 0xf4, 0x1c, 0x1a, 0xe0, 0x02, 0x64, 0x44,
-	0x7e, 0x92, 0xf3, 0x73, 0xac, 0xeb, 0x3b, 0x36, 0x59, 0x86, 0x39, 0x66, 0x9c, 0x27, 0xcb, 0x52,
-	0x9e, 0xbd, 0x74, 0x70, 0xb1, 0x72, 0x84, 0xac, 0x74, 0x91, 0x13, 0xcb, 0x3a, 0x28, 0x2b, 0x9c,
-	0x94, 0x77, 0xb8, 0xec, 0x3a, 0x14, 0x99, 0xe1, 0x9f, 0x38, 0x51, 0x28, 0x57, 0xa9, 0x02, 0x3b,
-	0xe2, 0x2d, 0x5c, 0x65, 0x24, 0x43, 0x6e, 0xc6, 0x8e, 0x60, 0x6c, 0x42, 0x89, 0x46, 0xa7, 0x62,
-	0xef, 0x2c, 0x8a, 0xb5, 0x8b, 0x46, 0xa7, 0x71, 0xfd, 0x60, 0x87, 0x91, 0x31, 0x30, 0x2d, 0xac,
-	0x13, 0xca, 0x7a, 0xc1, 0x0e, 0xa3, 0x43, 0xd3, 0xe2, 0x8c, 0x30, 0xb0, 0x90, 0x31, 0x2f, 0x18,
-	0x61, 0x60, 0x71, 0x06, 0x0f, 0x7b, 0x5f, 0x7c, 0xec, 0xc0, 0xeb, 0x2f, 0x1e, 0xf6, 0xfe, 0x11,
-	0x7e, 0x92, 0x59, 0x05, 0xae, 0x6d, 0x38, 0x3e, 0x5e, 0x5a, 0x15, 0xf5, 0x39, 0x3b, 0x8c, 0x5a,
-	0x3e, 0x27, 0x73, 0x28, 0xc7, 0x97, 0xa9, 0x3b, 0x17, 0x06, 0x56, 0xcb, 0xe7, 0x40, 0x9c, 0xcc,
-	0xf3, 0x16, 0xaf, 0x87, 0x8a, 0x3a, 0xb7, 0xc8, 0xd3, 0x96, 0xb3, 0x38, 0x10, 0xb2, 0xaa, 0x82,
-	0x65, 0x87, 0x11, 0xb2, 0x1e, 0x42, 0xd9, 0x3f, 0x8b, 0x8c, 0xc8, 0xec, 0x8b, 0xf1, 0x2c, 0x8a,
-	0xe4, 0xf2, 0xcf, 0xa2, 0xae, 0x89, 0x73, 0xae, 0xfd, 0xc1, 0x2c, 0xcc, 0xf3, 0x23, 0x1b, 0xf3,
-	0x76, 0x07, 0x36, 0xd1, 0xa0, 0x62, 0xda, 0xb6, 0xc1, 0x86, 0x11, 0x0d, 0xb8, 0x16, 0x4e, 0x46,
-	0x49, 0x5f, 0x30, 0x6d, 0xbb, 0xc3, 0x69, 0x5d, 0xb3, 0x4f, 0x1e, 0x43, 0x2d, 0xa0, 0x03, 0x76,
-	0x4e, 0x33, 0x62, 0x33, 0x62, 0xf3, 0x15, 0xf4, 0x44, 0xf2, 0x21, 0x94, 0xa3, 0xc0, 0xf4, 0x8d,
-	0x88, 0x19, 0xa7, 0x2c, 0x14, 0x01, 0x5d, 0xd2, 0x81, 0xd3, 0xba, 0x6c, 0x9f, 0x85, 0x11, 0xf9,
-	0x3a, 0x90, 0x80, 0x0e, 0xcc, 0xe0, 0x4c, 0x62, 0x89, 0xf9, 0xc8, 0xa3, 0x5c, 0x4d, 0x70, 0x10,
-	0x4d, 0xcc, 0x4c, 0x2a, 0xed, 0x78, 0x5e, 0x22, 0x3d, 0x97, 0x95, 0x6e, 0x71, 0x86, 0x90, 0x96,
-	0x63, 0x11, 0xa2, 0xbc, 0x93, 0x85, 0x64, 0x2c, 0x28, 0xa5, 0x8e, 0x25, 0x15, 0x2b, 0x66, 0xc7,
-	0x92, 0x48, 0xee, 0xc0, 0x72, 0x14, 0x98, 0x5e, 0xe8, 0x9a, 0x51, 0x56, 0xb8, 0x84, 0xc2, 0x4b,
-	0x09, 0x6b, 0xb2, 0x7c, 0xea, 0xa8, 0xf9, 0x11, 0xf9, 0xd8, 0x57, 0xda, 0xaf, 0x72, 0x50, 0x10,
-	0xf3, 0x40, 0xde, 0x86, 0x59, 0x6b, 0x10, 0x7f, 0x0b, 0x20, 0xe9, 0x37, 0x8f, 0x78, 0x96, 0x74,
-	0xce, 0x9e, 0x9c, 0x19, 0x99, 0x68, 0x9f, 0x55, 0xa2, 0x3d, 0x4d, 0xaf, 0xfc, 0x48, 0x7a, 0x89,
-	0x94, 0x99, 0x53, 0x53, 0x66, 0x72, 0x66, 0xa4, 0x79, 0x57, 0xcc, 0xe4, 0x9d, 0xf6, 0x8f, 0x05,
-	0xc8, 0x3f, 0x77, 0xd9, 0x05, 0x79, 0x1b, 0xaa, 0xa6, 0x65, 0xd1, 0x30, 0x34, 0xb2, 0xfb, 0xf7,
-	0xa2, 0x5e, 0x16, 0xd4, 0xd6, 0xa4, 0x52, 0x63, 0x71, 0xbc, 0xd6, 0x5e, 0x10, 0x64, 0x51, 0x6b,
-	0x8f, 0x14, 0xd3, 0x85, 0xa4, 0x98, 0xfe, 0x00, 0x96, 0xc2, 0xcb, 0xc1, 0x80, 0x46, 0x81, 0x63,
-	0x19, 0xb1, 0x08, 0x41, 0x91, 0xc5, 0x84, 0xf1, 0x5c, 0xc8, 0x6e, 0x03, 0x7e, 0x58, 0x12, 0x39,
-	0x20, 0xf6, 0xed, 0x12, 0x27, 0x60, 0x52, 0x67, 0x6b, 0x15, 0x40, 0xd3, 0x49, 0xad, 0xf2, 0x2e,
-	0x2c, 0x7a, 0x34, 0xba, 0x60, 0x18, 0x71, 0x62, 0x44, 0x73, 0x28, 0x51, 0x91, 0xe4, 0x56, 0x72,
-	0x3c, 0xcd, 0x54, 0x43, 0x05, 0x14, 0xc9, 0x54, 0x43, 0xdf, 0x04, 0xb0, 0x92, 0x95, 0x4e, 0x7e,
-	0x0b, 0x58, 0x4e, 0xe6, 0x35, 0x5d, 0x04, 0xf5, 0x8c, 0x18, 0x79, 0x0f, 0x0a, 0x26, 0xce, 0xb8,
-	0xbc, 0xe3, 0x5f, 0x1c, 0x09, 0x04, 0x5d, 0xb2, 0xc9, 0x16, 0x94, 0xfc, 0xc0, 0x61, 0x81, 0x13,
-	0x5d, 0x62, 0x78, 0x2d, 0xea, 0x49, 0x3b, 0x73, 0xb0, 0x28, 0x2b, 0x07, 0x8b, 0x4c, 0x5d, 0x57,
-	0x51, 0xea, 0xba, 0x4d, 0x28, 0xf5, 0x03, 0x36, 0xf4, 0xf9, 0x38, 0xe4, 0x5a, 0x82, 0x6d, 0xe1,
-	0x8c, 0xec, 0xf7, 0x60, 0x2e, 0xb1, 0x88, 0x12, 0x15, 0x4e, 0x3e, 0x12, 0xd4, 0x96, 0x4d, 0xde,
-	0x81, 0x6a, 0x40, 0x7d, 0x97, 0x1f, 0xc8, 0x28, 0x4e, 0x0c, 0x56, 0x41, 0x25, 0xbd, 0x92, 0x50,
-	0x31, 0x58, 0xf6, 0x61, 0x91, 0xc7, 0x18, 0x5f, 0x1c, 0xa4, 0xa7, 0x36, 0x96, 0x70, 0x7f, 0x7f,
-	0xa8, 0x7c, 0x1e, 0xdc, 0xe1, 0xa1, 0xd7, 0x65, 0x7b, 0x42, 0xa4, 0xe9, 0x45, 0xc1, 0xa5, 0x5e,
-	0xf1, 0xb3, 0x34, 0xd2, 0x84, 0x6a, 0xec, 0xfd, 0x88, 0x19, 0x26, 0x0d, 0x37, 0x96, 0x11, 0xe8,
-	0x81, 0x0a, 0x24, 0xc5, 0xbb, 0xac, 0x4e, 0x43, 0x81, 0x53, 0xee, 0x67, 0x48, 0x5b, 0x9f, 0x00,
-	0x19, 0xb7, 0xc5, 0xf7, 0xdd, 0x33, 0x7a, 0x29, 0x37, 0x25, 0xfe, 0x27, 0xdf, 0x9f, 0xcf, 0x4d,
-	0x77, 0x18, 0x1f, 0xac, 0x44, 0xe3, 0x7b, 0x33, 0x1f, 0xe7, 0xb6, 0x7e, 0x04, 0x4b, 0x63, 0x46,
-	0xae, 0x03, 0x28, 0x65, 0x00, 0xb4, 0x2e, 0x94, 0x95, 0xe2, 0x6f, 0x1b, 0xe6, 0x45, 0x05, 0x1b,
-	0xe7, 0x52, 0x59, 0x2f, 0x09, 0x42, 0xcb, 0xe6, 0x67, 0x20, 0xc9, 0x0c, 0x7d, 0x6a, 0x39, 0x3d,
-	0xc7, 0x92, 0x95, 0x71, 0x55, 0x90, 0x8f, 0x25, 0x55, 0xfb, 0xb7, 0x22, 0xde, 0x50, 0xa6, 0x1f,
-	0x5a, 0x6f, 0x7c, 0x0c, 0x78, 0x07, 0xaa, 0x3e, 0x0b, 0x9d, 0xc8, 0x39, 0xa7, 0xe2, 0xab, 0x99,
-	0xcc, 0xc5, 0x4a, 0x4c, 0xc5, 0xaf, 0x60, 0x5c, 0xcc, 0xa3, 0x7d, 0x33, 0x23, 0x96, 0x17, 0x62,
-	0x31, 0x55, 0x88, 0x7d, 0x0c, 0x1b, 0x36, 0x75, 0x9d, 0x81, 0xc3, 0x17, 0xc5, 0x81, 0x13, 0x86,
-	0x86, 0x4d, 0x23, 0x6a, 0x25, 0xa7, 0xb8, 0x82, 0xbe, 0x96, 0xf0, 0x0f, 0x9d, 0x30, 0x6c, 0xc4,
-	0x5c, 0x9e, 0x67, 0x27, 0x8e, 0x2f, 0xae, 0xe2, 0xc5, 0xe2, 0x54, 0xd0, 0xe7, 0x4f, 0x1c, 0x1f,
-	0xaf, 0xd1, 0xb1, 0xb6, 0xe5, 0xec, 0xa1, 0xc7, 0x97, 0x2e, 0x71, 0x92, 0x2e, 0x9d, 0x38, 0xfe,
-	0x0b, 0xde, 0x26, 0x4f, 0x61, 0xb5, 0x47, 0x2d, 0xc3, 0x62, 0x41, 0x80, 0x65, 0xb2, 0x11, 0x5e,
-	0x0e, 0x4e, 0x78, 0x55, 0x59, 0x42, 0xc1, 0xe5, 0x1e, 0xb5, 0x76, 0x63, 0xde, 0xb1, 0x60, 0x91,
-	0x6f, 0xc3, 0xba, 0xd0, 0xb1, 0xe9, 0x05, 0x0b, 0xec, 0x30, 0xd5, 0xc6, 0x4c, 0x2b, 0xe8, 0xab,
-	0xa8, 0x25, 0xb9, 0x89, 0x3a, 0xf9, 0x21, 0x6c, 0xab, 0x7a, 0x43, 0x4f, 0x6a, 0x9a, 0x27, 0x2e,
-	0xc5, 0x55, 0xa6, 0xa0, 0x6f, 0x66, 0x75, 0x5f, 0x64, 0x05, 0xc8, 0x5b, 0x50, 0x51, 0xf4, 0x71,
-	0x49, 0x2c, 0xe8, 0xe5, 0xac, 0x06, 0xdf, 0x61, 0xd4, 0x01, 0x89, 0x71, 0x8b, 0x44, 0x5f, 0xca,
-	0x0e, 0x47, 0x38, 0xe0, 0x5d, 0x58, 0x7c, 0xdd, 0xa7, 0x03, 0xe3, 0x8c, 0x5e, 0xc6, 0x1e, 0xac,
-	0x88, 0xe9, 0xe1, 0xe4, 0xcf, 0xe8, 0x65, 0xea, 0x45, 0x94, 0x73, 0x59, 0x18, 0xe2, 0x1a, 0x50,
-	0xd0, 0x4b, 0x9c, 0x70, 0xc0, 0x42, 0x04, 0x09, 0x5e, 0x1b, 0xbe, 0xcb, 0xcc, 0x41, 0x28, 0x50,
-	0x70, 0x11, 0x28, 0xe8, 0x95, 0xe0, 0xf5, 0x11, 0x52, 0x11, 0x85, 0x7c, 0x0d, 0x48, 0x2a, 0xe7,
-	0x31, 0xcf, 0x70, 0x6c, 0x97, 0xe2, 0x42, 0x50, 0xd0, 0x17, 0x63, 0xd1, 0x36, 0xf3, 0x5a, 0xb6,
-	0x8b, 0xab, 0x51, 0xf0, 0x1a, 0x3f, 0x96, 0xe2, 0x41, 0xa8, 0xa0, 0x17, 0x82, 0xd7, 0xfc, 0x04,
-	0x4c, 0x3e, 0x86, 0x4d, 0xc9, 0x30, 0x7c, 0x3c, 0x1b, 0x86, 0x86, 0x15, 0x58, 0xd2, 0xae, 0x58,
-	0xeb, 0x57, 0x85, 0xa8, 0x38, 0x3a, 0x86, 0xbb, 0x81, 0x25, 0xec, 0x6f, 0x42, 0x29, 0x78, 0x6d,
-	0x9c, 0x5c, 0x46, 0xb8, 0x1a, 0x70, 0xc1, 0x62, 0xf0, 0xfa, 0x19, 0x6f, 0xf2, 0x20, 0xe2, 0x5d,
-	0x13, 0x0a, 0x78, 0x04, 0x2a, 0xe8, 0xf3, 0xc1, 0x6b, 0x89, 0xc0, 0x35, 0xa3, 0x58, 0x73, 0x55,
-	0x68, 0x46, 0xa9, 0x66, 0x94, 0x6a, 0xae, 0x09, 0xcd, 0x28, 0xd1, 0x7c, 0x04, 0xe5, 0x13, 0x1a,
-	0x18, 0x01, 0xe5, 0x2b, 0x00, 0xb5, 0x37, 0xd6, 0x51, 0x60, 0xe1, 0x84, 0x06, 0xba, 0x24, 0x91,
-	0x07, 0xb0, 0xe0, 0x5a, 0x76, 0x3f, 0xf6, 0xff, 0x06, 0x4a, 0x00, 0x27, 0x49, 0xe7, 0xf3, 0xce,
-	0xd9, 0x4e, 0xcc, 0xdf, 0x94, 0x9d, 0xb3, 0x1d, 0xc9, 0xbe, 0x0b, 0xf3, 0x91, 0x33, 0xa0, 0x61,
-	0x64, 0x0e, 0xfc, 0x8d, 0x2d, 0x71, 0xea, 0x4e, 0x08, 0xda, 0x3f, 0xe7, 0x70, 0x01, 0x52, 0xdf,
-	0x63, 0x5c, 0xf9, 0x09, 0xe5, 0xaa, 0x6b, 0x2c, 0xd5, 0x4f, 0xb3, 0x13, 0xfc, 0x94, 0x78, 0x38,
-	0x3f, 0xe6, 0xe1, 0x8c, 0x9f, 0xe6, 0x46, 0xfd, 0x94, 0xf5, 0x70, 0x41, 0xf5, 0xf0, 0xd5, 0xe3,
-	0xfb, 0xbb, 0x1c, 0x54, 0xd5, 0x27, 0x23, 0xd9, 0xf2, 0x20, 0xa7, 0xdc, 0xb5, 0x65, 0xbb, 0x37,
-	0x73, 0x55, 0x00, 0xcc, 0x5e, 0x15, 0x00, 0xa5, 0xab, 0x02, 0x60, 0x7e, 0x74, 0x60, 0x4a, 0xef,
-	0x6b, 0xa3, 0xbd, 0xff, 0x04, 0x2a, 0xca, 0x73, 0x8e, 0xe9, 0x13, 0xb3, 0x06, 0x85, 0x30, 0x32,
-	0xa3, 0x61, 0x28, 0x0f, 0xc3, 0xb2, 0xa5, 0x7d, 0x01, 0xcb, 0x13, 0x9e, 0x75, 0xdc, 0x78, 0x35,
-	0x4f, 0xe1, 0x67, 0x15, 0xf8, 0xbf, 0x9a, 0xc1, 0xbb, 0xb2, 0xd1, 0xe7, 0x29, 0xbf, 0xc6, 0xe7,
-	0x2c, 0x97, 0x85, 0x86, 0x62, 0x62, 0xde, 0x65, 0xe1, 0x31, 0x12, 0x04, 0xfb, 0x24, 0x66, 0xe7,
-	0x63, 0xf6, 0x89, 0x64, 0x3f, 0x86, 0x9a, 0xcb, 0x7c, 0x4b, 0xec, 0x0b, 0x52, 0x48, 0x5c, 0xe3,
-	0x56, 0x39, 0x9d, 0xef, 0x07, 0x52, 0xf2, 0x23, 0x58, 0x95, 0x92, 0x72, 0x45, 0x88, 0xc5, 0x0b,
-	0xe2, 0x32, 0x45, 0x88, 0x8b, 0xf5, 0x40, 0xaa, 0xf0, 0xf4, 0x63, 0x3d, 0x27, 0x16, 0x2c, 0x8a,
-	0xd3, 0x10, 0x27, 0x49, 0x81, 0x47, 0x50, 0xe6, 0x2b, 0x53, 0x22, 0x51, 0x42, 0x89, 0x05, 0xa4,
-	0x09, 0x11, 0x8d, 0xc2, 0xf6, 0x15, 0x8f, 0x59, 0x6e, 0x6d, 0x32, 0xfe, 0x34, 0x07, 0x5b, 0xd3,
-	0x5f, 0xb6, 0xdc, 0x96, 0x19, 0xf2, 0x4d, 0x58, 0x73, 0xbc, 0x73, 0x1a, 0x84, 0xd4, 0xe0, 0xc5,
-	0x98, 0xf0, 0x63, 0x60, 0x46, 0xf1, 0xfd, 0xe4, 0xb2, 0xe4, 0x3e, 0x73, 0xc4, 0xb7, 0x6a, 0xdd,
-	0x8c, 0xa8, 0xf6, 0x4b, 0xd1, 0xb7, 0x29, 0x0f, 0x63, 0x6e, 0xad, 0x6f, 0x2b, 0x30, 0x97, 0x56,
-	0x11, 0xfc, 0x7c, 0x8c, 0xd5, 0xc3, 0x3a, 0x14, 0x3d, 0x7a, 0x61, 0xd0, 0x2f, 0xe3, 0x43, 0x4b,
-	0xc1, 0xa3, 0x17, 0xcd, 0x2f, 0x6d, 0xed, 0x14, 0xee, 0x5f, 0xfd, 0xac, 0xe6, 0xd6, 0xe6, 0xe6,
-	0xcf, 0x72, 0x22, 0x06, 0xa6, 0x3c, 0xb4, 0xf9, 0xbf, 0x9d, 0x9c, 0x9f, 0xe7, 0x40, 0xbb, 0xfe,
-	0xd1, 0xce, 0xff, 0xee, 0x24, 0x69, 0x5f, 0xe2, 0x5c, 0x5c, 0xf1, 0xb8, 0xe7, 0xc6, 0xf6, 0x1f,
-	0xa8, 0x1f, 0xaa, 0xc5, 0xe9, 0x36, 0xfb, 0xed, 0xf9, 0x0c, 0x1e, 0x5d, 0xfb, 0x12, 0xe7, 0xd6,
-	0x22, 0xa0, 0x0b, 0x44, 0x97, 0x9b, 0x72, 0x06, 0x9d, 0x17, 0x47, 0xf1, 0xe6, 0x6d, 0x58, 0x6c,
-	0xe8, 0x45, 0x68, 0x85, 0x17, 0x47, 0x52, 0x78, 0x97, 0x13, 0xa7, 0xae, 0xef, 0x7f, 0x92, 0x83,
-	0x8d, 0x69, 0x4f, 0x7d, 0x6e, 0xdc, 0xf5, 0x3a, 0x54, 0xd2, 0xce, 0x4c, 0x7a, 0xdc, 0x37, 0x3e,
-	0x80, 0xfd, 0x3b, 0xfa, 0x42, 0x90, 0x52, 0x9f, 0x15, 0xf1, 0x26, 0x32, 0x0a, 0xb5, 0x36, 0xdc,
-	0xbd, 0xea, 0x21, 0xd5, 0x4d, 0xfb, 0xa6, 0xfd, 0x0c, 0x1e, 0x5e, 0xf7, 0xe8, 0xe8, 0xd6, 0xa6,
-	0xea, 0x67, 0xb0, 0x39, 0xf5, 0xe5, 0xd1, 0xaf, 0xb3, 0xb7, 0x65, 0xca, 0xb3, 0xd9, 0x91, 0xf2,
-	0x4c, 0xfb, 0x8b, 0x1c, 0x3c, 0x7e, 0xd3, 0x67, 0x48, 0xb7, 0x96, 0x81, 0x1f, 0x02, 0xc9, 0x3e,
-	0x8d, 0x92, 0x7d, 0x13, 0xe9, 0xb8, 0x94, 0xe1, 0xc8, 0x3e, 0x0e, 0xe0, 0xad, 0x37, 0x78, 0xb0,
-	0x74, 0x6b, 0xee, 0x77, 0x71, 0x35, 0xba, 0xe6, 0xd1, 0xd2, 0xad, 0x59, 0xfb, 0xa3, 0x1c, 0xbc,
-	0xfb, 0x66, 0xcf, 0x97, 0x6e, 0xcd, 0xfd, 0x5b, 0x50, 0x1a, 0xf9, 0xa6, 0x97, 0xb4, 0xb5, 0xff,
-	0xca, 0xc1, 0xc2, 0x5e, 0xc0, 0x86, 0xfe, 0x21, 0xc5, 0xf3, 0xfc, 0x23, 0x28, 0x3b, 0xf1, 0xd7,
-	0xdb, 0xd8, 0x70, 0x05, 0x1f, 0x92, 0x0b, 0x5a, 0xcb, 0x26, 0x2d, 0xa8, 0xa6, 0x22, 0xc9, 0xf7,
-	0xdb, 0x6a, 0xe6, 0x1d, 0x5d, 0x06, 0x70, 0x27, 0xf9, 0x16, 0x8c, 0x9f, 0x10, 0x2a, 0x4e, 0xb6,
-	0x49, 0xee, 0xc3, 0x02, 0x3f, 0xc7, 0xc5, 0x05, 0xfe, 0x2c, 0x1a, 0xe3, 0x05, 0xfe, 0x91, 0x28,
-	0xf0, 0xb3, 0x17, 0x47, 0x79, 0x64, 0x26, 0x6d, 0xed, 0xff, 0x43, 0x45, 0xc1, 0x26, 0x45, 0x98,
-	0x3d, 0xea, 0xb4, 0x6b, 0x77, 0x48, 0x0d, 0xca, 0xcd, 0xa3, 0x4e, 0xdb, 0xf8, 0x68, 0xcf, 0x38,
-	0xaa, 0x77, 0xf7, 0x6b, 0x39, 0xb2, 0x04, 0x15, 0x41, 0xf9, 0x86, 0x24, 0xcd, 0x68, 0xbf, 0x98,
-	0x81, 0x39, 0xec, 0xa7, 0x72, 0xa1, 0x24, 0x86, 0x9b, 0x5c, 0x28, 0xfd, 0x00, 0x8a, 0x16, 0x1b,
-	0x0c, 0x4c, 0xf9, 0x7a, 0x79, 0x6c, 0x8c, 0xd9, 0x91, 0x86, 0xbb, 0x42, 0x52, 0x8f, 0x55, 0xc8,
-	0x0e, 0x14, 0x07, 0x82, 0x25, 0xbf, 0x0b, 0xad, 0x4c, 0xf2, 0x90, 0x1e, 0x0b, 0x65, 0xee, 0xd3,
-	0xf2, 0x57, 0xde, 0xa7, 0x69, 0x9f, 0xc1, 0xf2, 0x04, 0xc3, 0x64, 0x11, 0x16, 0xea, 0x8d, 0x86,
-	0x71, 0xd8, 0x3c, 0x7c, 0xd6, 0xd4, 0x8f, 0x6b, 0x77, 0x08, 0x81, 0xaa, 0xde, 0x3c, 0xec, 0xbc,
-	0x6c, 0x26, 0xb4, 0x1c, 0x17, 0x3a, 0x6e, 0x76, 0x13, 0xc2, 0x8c, 0xf6, 0x05, 0xc0, 0x4b, 0xd3,
-	0x1d, 0xd2, 0x23, 0x33, 0x30, 0x07, 0xe4, 0x3e, 0xcc, 0x32, 0x6f, 0x28, 0x6f, 0x76, 0xcb, 0xca,
-	0xcb, 0x48, 0xce, 0x20, 0x4f, 0xb2, 0x37, 0x43, 0xd5, 0xa7, 0x9b, 0x3b, 0xc9, 0xcf, 0x27, 0x76,
-	0x10, 0x85, 0xcf, 0xc4, 0x0e, 0x4e, 0xb5, 0x90, 0xd3, 0xfe, 0x61, 0x06, 0xaa, 0x47, 0xcc, 0xd3,
-	0x5f, 0x1f, 0xb1, 0x0b, 0x1a, 0x34, 0xcc, 0xc8, 0xbc, 0xb5, 0xb8, 0xd6, 0xd5, 0x0d, 0x37, 0x8f,
-	0x3d, 0x4a, 0x5f, 0x5b, 0xaa, 0x56, 0x77, 0xf4, 0x30, 0x74, 0x0e, 0xa9, 0x19, 0x0e, 0x03, 0x4c,
-	0xed, 0xc9, 0xef, 0xc3, 0xc8, 0xfb, 0xb0, 0xc4, 0x4f, 0x5e, 0x5c, 0xcb, 0x18, 0x50, 0xd3, 0x33,
-	0xec, 0x93, 0x01, 0x56, 0x71, 0x39, 0xbd, 0x1a, 0x08, 0xb4, 0x43, 0x6a, 0x7a, 0x8d, 0x93, 0x01,
-	0x5f, 0xb6, 0xa7, 0x62, 0x92, 0x15, 0xa8, 0x4d, 0x78, 0x3f, 0x76, 0x17, 0x36, 0x54, 0xaa, 0xd1,
-	0x68, 0x1e, 0xb4, 0x0e, 0x5b, 0xdd, 0xa6, 0x5e, 0xcb, 0x91, 0x4d, 0x58, 0x1d, 0xe1, 0xd6, 0x77,
-	0x77, 0x9b, 0xc7, 0x7c, 0x92, 0x4e, 0xf0, 0x95, 0x54, 0x5d, 0x5c, 0xfa, 0x66, 0x0e, 0x97, 0x6b,
-	0x20, 0x7d, 0x37, 0xe2, 0xc9, 0x0d, 0x88, 0x6f, 0x88, 0xa5, 0x2b, 0x93, 0x0b, 0xe3, 0x0d, 0x88,
-	0x4f, 0x99, 0x72, 0x73, 0x88, 0x9b, 0xfc, 0x70, 0x55, 0xc4, 0xd7, 0x74, 0x3d, 0x96, 0x99, 0x89,
-	0x5c, 0x76, 0x26, 0x9e, 0x88, 0xed, 0x36, 0x9d, 0x7d, 0xe5, 0x15, 0x5e, 0x8f, 0xc9, 0x47, 0xf4,
-	0x11, 0xd5, 0x85, 0x1c, 0x79, 0x0f, 0xf2, 0x2e, 0x0b, 0x1d, 0x34, 0x55, 0xcd, 0xdc, 0x28, 0xe3,
-	0x09, 0x4e, 0x48, 0xa2, 0x80, 0x10, 0xec, 0x39, 0x72, 0x12, 0xa7, 0x09, 0xf6, 0x1c, 0xf2, 0x3e,
-	0xcc, 0xe1, 0x59, 0x07, 0x27, 0x65, 0x8a, 0xa4, 0x90, 0xd0, 0x8e, 0xa1, 0x14, 0xf7, 0x87, 0x2c,
-	0x40, 0xf1, 0x45, 0xfb, 0xb3, 0x76, 0xe7, 0x55, 0x5b, 0xe4, 0x45, 0xbb, 0xd3, 0x35, 0x76, 0x3b,
-	0xed, 0xe7, 0xad, 0xbd, 0x17, 0x7a, 0xb3, 0x51, 0xcb, 0x11, 0x80, 0x02, 0xbe, 0x97, 0x6b, 0xd6,
-	0x66, 0x48, 0x19, 0x4a, 0xad, 0xb6, 0x6c, 0xcd, 0xf2, 0x56, 0xa3, 0x75, 0x5c, 0x7f, 0x76, 0xd0,
-	0x6c, 0xd4, 0xf2, 0xda, 0xbf, 0xe7, 0x60, 0xe1, 0x08, 0x0b, 0xd6, 0x1e, 0x7a, 0x6a, 0x6a, 0x30,
-	0x7f, 0x27, 0xf6, 0x95, 0x18, 0xfb, 0xa3, 0x6c, 0x5c, 0xc6, 0xda, 0xf1, 0xdf, 0x8a, 0xcf, 0xde,
-	0x81, 0x59, 0x97, 0x85, 0x57, 0x79, 0x82, 0xf3, 0x35, 0x03, 0xca, 0x59, 0xed, 0xb1, 0x11, 0x8a,
-	0xfe, 0x1b, 0xaf, 0x3a, 0xfa, 0x67, 0xe2, 0x51, 0x62, 0x4a, 0x3b, 0xee, 0xd6, 0xdb, 0x8d, 0x67,
-	0x3f, 0xbe, 0x66, 0xa4, 0xbf, 0xc8, 0xc1, 0xbd, 0x64, 0x85, 0xe5, 0x8e, 0xcc, 0xdc, 0xfb, 0x76,
-	0x30, 0x1c, 0xda, 0x40, 0xe4, 0xd8, 0x33, 0x8f, 0x05, 0xe4, 0xda, 0xf1, 0x28, 0xfb, 0xf8, 0x6b,
-	0x22, 0x86, 0xbe, 0x28, 0x3c, 0x95, 0xd0, 0xa6, 0xd5, 0x62, 0xe7, 0xb0, 0x31, 0x0d, 0x63, 0xba,
-	0xfb, 0xeb, 0xe2, 0x47, 0x0e, 0x37, 0x78, 0x34, 0xbb, 0xc8, 0x54, 0x6c, 0xad, 0x08, 0x73, 0xcd,
-	0x81, 0x1f, 0x5d, 0x7e, 0x70, 0x0f, 0x20, 0xf5, 0x3e, 0xdf, 0x67, 0x3a, 0xcf, 0x9f, 0xd7, 0xee,
-	0x90, 0x02, 0xcc, 0x74, 0xda, 0xb5, 0xdc, 0xd3, 0xbf, 0xde, 0x86, 0x62, 0x47, 0x20, 0x92, 0x06,
-	0x80, 0x7c, 0x51, 0xd9, 0x71, 0x23, 0x52, 0x4d, 0x2c, 0x21, 0xd0, 0xd6, 0x48, 0x5b, 0x5b, 0xfb,
-	0xf9, 0x3f, 0xfd, 0xeb, 0x2f, 0x67, 0x6a, 0xda, 0xc2, 0x93, 0xf3, 0x8f, 0x9e, 0x48, 0xbd, 0xef,
-	0xe5, 0x3e, 0x20, 0xcf, 0x61, 0x41, 0xa7, 0xe2, 0x27, 0x3d, 0x6f, 0x02, 0xb3, 0x8e, 0x30, 0x4b,
-	0x5a, 0x99, 0xc3, 0xc4, 0x8a, 0x1c, 0xa7, 0x09, 0x0b, 0xf2, 0x84, 0xc3, 0x1d, 0x47, 0x94, 0xf5,
-	0x7c, 0x0c, 0x65, 0x03, 0x51, 0x88, 0x56, 0xe1, 0x28, 0xe2, 0x41, 0x66, 0xc7, 0x1b, 0x72, 0x98,
-	0x7d, 0xa8, 0x24, 0x95, 0xf0, 0x1b, 0x00, 0x6d, 0x22, 0xd0, 0xb2, 0x56, 0xcd, 0x8c, 0x4a, 0x22,
-	0xed, 0xc2, 0x7c, 0x83, 0xba, 0xf4, 0xc6, 0xdd, 0x49, 0x94, 0x38, 0x48, 0x0b, 0x40, 0xbe, 0x3e,
-	0xea, 0x0c, 0x23, 0x52, 0x53, 0x7e, 0x52, 0x76, 0x18, 0xf6, 0xaf, 0xee, 0x4f, 0xaa, 0xc9, 0xa1,
-	0x3a, 0x50, 0x4e, 0x9e, 0x1e, 0x71, 0x30, 0xa2, 0x3c, 0x99, 0x47, 0xf2, 0x18, 0xdc, 0x36, 0xc2,
-	0xad, 0x6a, 0x35, 0x84, 0xcb, 0x68, 0x73, 0xc0, 0xdf, 0x86, 0xc5, 0xec, 0x4b, 0x21, 0x8e, 0x99,
-	0x86, 0x5b, 0x96, 0x33, 0x06, 0x7b, 0x1f, 0x61, 0x37, 0xb4, 0x65, 0x0e, 0x3b, 0x82, 0xc1, 0x91,
-	0x3f, 0x81, 0xe2, 0x73, 0x97, 0x5d, 0xd4, 0x6d, 0x9b, 0x54, 0x94, 0xcf, 0x46, 0x57, 0x47, 0x95,
-	0xd4, 0x11, 0x51, 0x05, 0xbc, 0xa5, 0xe3, 0x67, 0xe3, 0xeb, 0x40, 0x14, 0xa7, 0xa5, 0x6a, 0x1c,
-	0xe7, 0x18, 0xaa, 0xc9, 0xf3, 0xbc, 0xdd, 0x53, 0x6a, 0x9d, 0x8d, 0x05, 0x68, 0xea, 0xc6, 0x44,
-	0x50, 0xbb, 0x87, 0x80, 0xeb, 0x1a, 0xe1, 0x80, 0xaa, 0x3e, 0x07, 0x3d, 0x84, 0x05, 0x11, 0x73,
-	0x7c, 0x51, 0xeb, 0x65, 0x26, 0x22, 0x49, 0xfd, 0xb1, 0x2e, 0x6e, 0x21, 0xe2, 0x8a, 0xb6, 0x98,
-	0x06, 0x2c, 0x2a, 0xcb, 0x89, 0x95, 0x91, 0xf7, 0xe6, 0x78, 0xca, 0xc4, 0x66, 0xb5, 0x39, 0xa0,
-	0x0e, 0x95, 0x3d, 0x1a, 0x65, 0x5e, 0x72, 0x8d, 0x8e, 0x79, 0x79, 0xc2, 0xc3, 0x1a, 0xed, 0x2e,
-	0x42, 0xae, 0x69, 0x4b, 0x1c, 0x52, 0xd1, 0xe7, 0x98, 0x3f, 0x82, 0x82, 0x4e, 0x4f, 0x18, 0xbb,
-	0x3e, 0xc3, 0x57, 0x11, 0x67, 0x51, 0x03, 0x91, 0xe1, 0x5c, 0x87, 0x03, 0xbc, 0x80, 0xa5, 0x5d,
-	0xe6, 0xba, 0xd4, 0xca, 0xde, 0xa6, 0x5f, 0x87, 0xf5, 0x10, 0xb1, 0xb6, 0xb4, 0x55, 0x8e, 0x35,
-	0xa6, 0xce, 0x61, 0x7f, 0x0c, 0xb5, 0x3d, 0x1a, 0xa9, 0x1f, 0xe4, 0xd4, 0x64, 0x5d, 0x1b, 0xf9,
-	0xd9, 0x9c, 0x94, 0xd2, 0x1e, 0x20, 0xf6, 0xa6, 0xb6, 0x22, 0xc7, 0xab, 0x70, 0x39, 0xf4, 0x19,
-	0xac, 0xec, 0xd1, 0x68, 0xfc, 0x13, 0xc0, 0xa4, 0xc4, 0x4b, 0x7f, 0x9b, 0x3a, 0x26, 0xaf, 0xbd,
-	0x85, 0x86, 0xee, 0x69, 0x1b, 0xd2, 0xd0, 0x98, 0x04, 0x37, 0x16, 0xc0, 0xfa, 0x6e, 0x40, 0xcd,
-	0x88, 0x76, 0x03, 0xb3, 0xd7, 0x73, 0xac, 0x63, 0xeb, 0x94, 0xda, 0x43, 0x97, 0xd7, 0xda, 0x0f,
-	0x76, 0x94, 0x5f, 0x0e, 0x8f, 0x09, 0x8c, 0x79, 0xed, 0x5d, 0x34, 0xf8, 0x50, 0xdb, 0x46, 0xaf,
-	0x4d, 0x46, 0x95, 0x36, 0x45, 0xa6, 0xdc, 0xb6, 0xcd, 0x29, 0xa8, 0xdc, 0x66, 0x0f, 0x96, 0x95,
-	0x1e, 0xfd, 0xd6, 0x90, 0x0e, 0x69, 0x48, 0xb6, 0x27, 0xda, 0x13, 0xcc, 0x31, 0x5b, 0x1a, 0xda,
-	0xba, 0xab, 0xad, 0x8f, 0x8d, 0x4f, 0x28, 0x48, 0x3b, 0x4a, 0x2f, 0xbe, 0xb2, 0x9d, 0x09, 0x68,
-	0xdc, 0xce, 0xf7, 0xa1, 0x26, 0xd2, 0x39, 0x73, 0x18, 0x9e, 0x9e, 0x6e, 0xa9, 0x90, 0x76, 0xe7,
-	0x1b, 0x39, 0xf2, 0x05, 0xac, 0x1e, 0xd1, 0xa0, 0xc7, 0x82, 0x01, 0x9e, 0x91, 0x3a, 0x3e, 0x0d,
-	0x46, 0x11, 0x90, 0x31, 0xd6, 0xb3, 0xb7, 0xb1, 0x67, 0xf7, 0xb5, 0x4d, 0xde, 0xb3, 0x89, 0x10,
-	0x62, 0xf3, 0x59, 0x10, 0x9b, 0x91, 0x38, 0x3c, 0x5e, 0x07, 0xaa, 0xac, 0x51, 0x19, 0x45, 0x0e,
-	0xf5, 0x0a, 0x16, 0xf6, 0x68, 0xd4, 0x7c, 0x1d, 0xe1, 0xc9, 0x89, 0xa4, 0x23, 0x4a, 0xcf, 0x63,
-	0x5b, 0xeb, 0x99, 0x03, 0x96, 0x4e, 0xa3, 0x61, 0xe0, 0x21, 0x33, 0x54, 0x81, 0x33, 0x30, 0x1c,
-	0xf8, 0x0b, 0xfc, 0x69, 0x91, 0xb8, 0xa4, 0x13, 0x85, 0x0b, 0x8d, 0xc8, 0xda, 0x8e, 0xfc, 0x15,
-	0xbc, 0xca, 0xba, 0x7a, 0x79, 0x18, 0x83, 0xe1, 0xf0, 0x3e, 0x6c, 0xee, 0xd1, 0xe8, 0x60, 0xf2,
-	0x63, 0x62, 0x75, 0x9d, 0xd8, 0x56, 0x7f, 0x17, 0xa6, 0x3c, 0x71, 0xd6, 0x1e, 0xa3, 0x25, 0x4d,
-	0xbb, 0x27, 0x87, 0x30, 0x19, 0x91, 0x5b, 0x3c, 0x85, 0xd5, 0x89, 0xfc, 0x9b, 0x58, 0x53, 0xa6,
-	0x77, 0x22, 0x1a, 0xb7, 0xd4, 0xc5, 0x65, 0x3e, 0x3d, 0x3a, 0x8e, 0x58, 0x58, 0x9f, 0x72, 0xba,
-	0x1c, 0x5b, 0xe8, 0x53, 0x36, 0x47, 0xdd, 0x03, 0x10, 0x8b, 0x21, 0xee, 0x1c, 0x2a, 0x64, 0x6d,
-	0xf4, 0x10, 0xa5, 0x6e, 0xbd, 0xa9, 0x1e, 0x07, 0xfa, 0x29, 0x2c, 0x0b, 0xf0, 0x64, 0x17, 0x43,
-	0xc4, 0x49, 0xbb, 0xdb, 0xca, 0xa4, 0x03, 0xc7, 0xd8, 0x02, 0xad, 0xe0, 0x70, 0x0b, 0x1e, 0x2e,
-	0xd0, 0xe3, 0x27, 0xcd, 0x49, 0x0b, 0xf4, 0x3d, 0xf5, 0x67, 0xd8, 0x23, 0x2a, 0x63, 0x6b, 0xf4,
-	0x98, 0x04, 0xb7, 0xd7, 0x47, 0x7b, 0x47, 0xe2, 0xf1, 0xef, 0x44, 0x7b, 0xe9, 0x90, 0xa6, 0xfc,
-	0x9e, 0x7f, 0xcc, 0xd0, 0x18, 0x5a, 0x6a, 0xa8, 0x2d, 0x1e, 0x12, 0xdf, 0x92, 0xa1, 0x31, 0x34,
-	0x6e, 0xe8, 0x77, 0xd2, 0x23, 0x80, 0x37, 0x24, 0xef, 0x5e, 0x7b, 0x0e, 0xc2, 0xb3, 0xd4, 0xd4,
-	0x22, 0x6e, 0xa4, 0x88, 0x26, 0x9f, 0xc3, 0x7c, 0x52, 0x9b, 0xff, 0xda, 0xe0, 0x71, 0x39, 0xa1,
-	0x96, 0xfa, 0x84, 0xc1, 0x5a, 0x6a, 0x49, 0x39, 0x66, 0x5d, 0x7f, 0x9a, 0x9b, 0xba, 0xd0, 0x6f,
-	0xa9, 0x03, 0x50, 0x60, 0x07, 0xb0, 0x9a, 0x58, 0xff, 0xaa, 0xf6, 0x1e, 0xa1, 0xbd, 0x6d, 0x91,
-	0xdf, 0x13, 0x51, 0x9f, 0x7d, 0x01, 0xdb, 0x2c, 0xe8, 0xa3, 0x9e, 0xc5, 0x02, 0x7b, 0x47, 0xfc,
-	0x47, 0x1f, 0x31, 0xce, 0xb3, 0xca, 0x4b, 0x6c, 0xf3, 0xa3, 0x5c, 0xe7, 0xa0, 0xfb, 0xf9, 0x93,
-	0xbe, 0x13, 0x9d, 0x0e, 0x4f, 0x78, 0x28, 0x3c, 0x89, 0x55, 0x9e, 0x08, 0x95, 0x0f, 0xe5, 0xff,
-	0x0d, 0x72, 0xfe, 0xff, 0x9e, 0xf4, 0x59, 0xfc, 0xff, 0x98, 0x9c, 0x14, 0x90, 0xfa, 0xcd, 0xff,
-	0x09, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xd4, 0xa0, 0xe2, 0xe7, 0x44, 0x00, 0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// OpenoltClient is the client API for Openolt service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type OpenoltClient interface {
-	DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
-	ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
-	ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
-	DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
-	DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
-	OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error)
-	OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error)
-	UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error)
-	FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
-	FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
-	HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error)
-	EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
-	DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
-	GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error)
-	Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
-	CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
-	GetOnuStatistics(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuStatistics, error)
-	GetGemPortStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*GemPortStatistics, error)
-	CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
-	RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
-	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) (*extension.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)
-	GetPonRxPower(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*PonRxPowerData, error)
-	//
-	// GetOnuInfo takes Onu id, serialnumber, and pon interface as argument from the onu structure.
-	// Returns the Onu info from the device.
-	GetOnuInfo(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuInfo, error)
-	//
-	// GetPonInterfaceInfo takes the pon intf id as argument.
-	// Returns the pon interface information from the device.
-	GetPonInterfaceInfo(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*PonIntfInfo, error)
-	//
-	// GetAllocIdStatistics takes onuId and allocId as argument.
-	// This method includes a default wait period of 10 secs before collecting the stats.
-	// The caller has to be aware of this wait and handle it accordingly.
-	// Returns AllocId statistics in the form of OnuAllocStatistics structure
-	GetAllocIdStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*OnuAllocIdStatistics, error)
-	//
-	// GetPonPortStatistics takes interface id and type as argument from Interface structure.
-	// Returns Pon port statistics in the form of PonStatsData structure.
-	GetPonPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error)
-	//
-	// GetNniPortStatistics takes takes interface id and type as argument from Interface structure.
-	// Returns Nni port statistics in the form of NniStatsData structure
-	GetNniPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error)
-	//
-	// Disable ONU serailnumber, disable device at PLOAM.
-	// Takes input as intfid, onuid, sn of the ONU.
-	// Returns success if the call towards the device is success, error otherwise.
-	DisableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error)
-	//
-	// Enables ONU serailnumber, enable device at PLOAM.
-	// Takes input as intfid, onuid, sn of the ONU.
-	// Returns success if the call towards the device is success, error otherwise.
-	EnableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error)
-	//
-	// Disable ONU serailnumber, disable device at PLOAM
-	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
-	// Returns success if the call towards the device is success, error otherwise.
-	DisableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error)
-	//
-	// Enables ONU serailnumber, enable device at PLOAM
-	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
-	// Returns success if the call towards the device is success, error otherwise.
-	EnableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error)
-}
-
-type openoltClient struct {
-	cc *grpc.ClientConn
-}
-
-func NewOpenoltClient(cc *grpc.ClientConn) OpenoltClient {
-	return &openoltClient{cc}
-}
-
-func (c *openoltClient) DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DisableOlt", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/ReenableOlt", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/ActivateOnu", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DeactivateOnu", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DeleteOnu", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/OmciMsgOut", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/OnuPacketOut", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/UplinkPacketOut", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/FlowAdd", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/FlowRemove", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error) {
-	out := new(Heartbeat)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/HeartbeatCheck", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/EnablePonIf", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DisablePonIf", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error) {
-	out := new(DeviceInfo)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetDeviceInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/Reboot", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/CollectStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetOnuStatistics(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuStatistics, error) {
-	out := new(OnuStatistics)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetOnuStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetGemPortStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*GemPortStatistics, error) {
-	out := new(GemPortStatistics)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetGemPortStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/CreateTrafficSchedulers", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/RemoveTrafficSchedulers", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/CreateTrafficQueues", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/RemoveTrafficQueues", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_Openolt_serviceDesc.Streams[0], "/openolt.Openolt/EnableIndication", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &openoltEnableIndicationClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type Openolt_EnableIndicationClient interface {
-	Recv() (*Indication, error)
-	grpc.ClientStream
-}
-
-type openoltEnableIndicationClient struct {
-	grpc.ClientStream
-}
-
-func (x *openoltEnableIndicationClient) Recv() (*Indication, error) {
-	m := new(Indication)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	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) (*extension.ReturnValues, error) {
-	out := new(extension.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
-}
-
-func (c *openoltClient) GetPonRxPower(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*PonRxPowerData, error) {
-	out := new(PonRxPowerData)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetPonRxPower", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetOnuInfo(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuInfo, error) {
-	out := new(OnuInfo)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetOnuInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetPonInterfaceInfo(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*PonIntfInfo, error) {
-	out := new(PonIntfInfo)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetPonInterfaceInfo", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetAllocIdStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*OnuAllocIdStatistics, error) {
-	out := new(OnuAllocIdStatistics)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetAllocIdStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetPonPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error) {
-	out := new(common.PortStatistics)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetPonPortStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) GetNniPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error) {
-	out := new(common.PortStatistics)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetNniPortStatistics", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) DisableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DisableOnu", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) EnableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/EnableOnu", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) DisableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/DisableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *openoltClient) EnableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/openolt.Openolt/EnableOnuSerialNumber", 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)
-	ReenableOlt(context.Context, *Empty) (*Empty, error)
-	ActivateOnu(context.Context, *Onu) (*Empty, error)
-	DeactivateOnu(context.Context, *Onu) (*Empty, error)
-	DeleteOnu(context.Context, *Onu) (*Empty, error)
-	OmciMsgOut(context.Context, *OmciMsg) (*Empty, error)
-	OnuPacketOut(context.Context, *OnuPacket) (*Empty, error)
-	UplinkPacketOut(context.Context, *UplinkPacket) (*Empty, error)
-	FlowAdd(context.Context, *Flow) (*Empty, error)
-	FlowRemove(context.Context, *Flow) (*Empty, error)
-	HeartbeatCheck(context.Context, *Empty) (*Heartbeat, error)
-	EnablePonIf(context.Context, *Interface) (*Empty, error)
-	DisablePonIf(context.Context, *Interface) (*Empty, error)
-	GetDeviceInfo(context.Context, *Empty) (*DeviceInfo, error)
-	Reboot(context.Context, *Empty) (*Empty, error)
-	CollectStatistics(context.Context, *Empty) (*Empty, error)
-	GetOnuStatistics(context.Context, *Onu) (*OnuStatistics, error)
-	GetGemPortStatistics(context.Context, *OnuPacket) (*GemPortStatistics, error)
-	CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
-	RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
-	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) (*extension.ReturnValues, error)
-	OnuItuPonAlarmSet(context.Context, *config.OnuItuPonAlarm) (*Empty, error)
-	GetLogicalOnuDistanceZero(context.Context, *Onu) (*OnuLogicalDistance, error)
-	GetLogicalOnuDistance(context.Context, *Onu) (*OnuLogicalDistance, error)
-	GetPonRxPower(context.Context, *Onu) (*PonRxPowerData, error)
-	//
-	// GetOnuInfo takes Onu id, serialnumber, and pon interface as argument from the onu structure.
-	// Returns the Onu info from the device.
-	GetOnuInfo(context.Context, *Onu) (*OnuInfo, error)
-	//
-	// GetPonInterfaceInfo takes the pon intf id as argument.
-	// Returns the pon interface information from the device.
-	GetPonInterfaceInfo(context.Context, *Interface) (*PonIntfInfo, error)
-	//
-	// GetAllocIdStatistics takes onuId and allocId as argument.
-	// This method includes a default wait period of 10 secs before collecting the stats.
-	// The caller has to be aware of this wait and handle it accordingly.
-	// Returns AllocId statistics in the form of OnuAllocStatistics structure
-	GetAllocIdStatistics(context.Context, *OnuPacket) (*OnuAllocIdStatistics, error)
-	//
-	// GetPonPortStatistics takes interface id and type as argument from Interface structure.
-	// Returns Pon port statistics in the form of PonStatsData structure.
-	GetPonPortStatistics(context.Context, *Interface) (*common.PortStatistics, error)
-	//
-	// GetNniPortStatistics takes takes interface id and type as argument from Interface structure.
-	// Returns Nni port statistics in the form of NniStatsData structure
-	GetNniPortStatistics(context.Context, *Interface) (*common.PortStatistics, error)
-	//
-	// Disable ONU serailnumber, disable device at PLOAM.
-	// Takes input as intfid, onuid, sn of the ONU.
-	// Returns success if the call towards the device is success, error otherwise.
-	DisableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error)
-	//
-	// Enables ONU serailnumber, enable device at PLOAM.
-	// Takes input as intfid, onuid, sn of the ONU.
-	// Returns success if the call towards the device is success, error otherwise.
-	EnableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error)
-	//
-	// Disable ONU serailnumber, disable device at PLOAM
-	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
-	// Returns success if the call towards the device is success, error otherwise.
-	DisableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error)
-	//
-	// Enables ONU serailnumber, enable device at PLOAM
-	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
-	// Returns success if the call towards the device is success, error otherwise.
-	EnableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error)
-}
-
-// UnimplementedOpenoltServer can be embedded to have forward compatible implementations.
-type UnimplementedOpenoltServer struct {
-}
-
-func (*UnimplementedOpenoltServer) DisableOlt(ctx context.Context, req *Empty) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOlt not implemented")
-}
-func (*UnimplementedOpenoltServer) ReenableOlt(ctx context.Context, req *Empty) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReenableOlt not implemented")
-}
-func (*UnimplementedOpenoltServer) ActivateOnu(ctx context.Context, req *Onu) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateOnu not implemented")
-}
-func (*UnimplementedOpenoltServer) DeactivateOnu(ctx context.Context, req *Onu) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeactivateOnu not implemented")
-}
-func (*UnimplementedOpenoltServer) DeleteOnu(ctx context.Context, req *Onu) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteOnu not implemented")
-}
-func (*UnimplementedOpenoltServer) OmciMsgOut(ctx context.Context, req *OmciMsg) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method OmciMsgOut not implemented")
-}
-func (*UnimplementedOpenoltServer) OnuPacketOut(ctx context.Context, req *OnuPacket) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method OnuPacketOut not implemented")
-}
-func (*UnimplementedOpenoltServer) UplinkPacketOut(ctx context.Context, req *UplinkPacket) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UplinkPacketOut not implemented")
-}
-func (*UnimplementedOpenoltServer) FlowAdd(ctx context.Context, req *Flow) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FlowAdd not implemented")
-}
-func (*UnimplementedOpenoltServer) FlowRemove(ctx context.Context, req *Flow) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method FlowRemove not implemented")
-}
-func (*UnimplementedOpenoltServer) HeartbeatCheck(ctx context.Context, req *Empty) (*Heartbeat, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method HeartbeatCheck not implemented")
-}
-func (*UnimplementedOpenoltServer) EnablePonIf(ctx context.Context, req *Interface) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnablePonIf not implemented")
-}
-func (*UnimplementedOpenoltServer) DisablePonIf(ctx context.Context, req *Interface) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisablePonIf not implemented")
-}
-func (*UnimplementedOpenoltServer) GetDeviceInfo(ctx context.Context, req *Empty) (*DeviceInfo, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceInfo not implemented")
-}
-func (*UnimplementedOpenoltServer) Reboot(ctx context.Context, req *Empty) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method Reboot not implemented")
-}
-func (*UnimplementedOpenoltServer) CollectStatistics(ctx context.Context, req *Empty) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CollectStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) GetOnuStatistics(ctx context.Context, req *Onu) (*OnuStatistics, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) GetGemPortStatistics(ctx context.Context, req *OnuPacket) (*GemPortStatistics, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetGemPortStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) CreateTrafficSchedulers(ctx context.Context, req *tech_profile.TrafficSchedulers) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateTrafficSchedulers not implemented")
-}
-func (*UnimplementedOpenoltServer) RemoveTrafficSchedulers(ctx context.Context, req *tech_profile.TrafficSchedulers) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RemoveTrafficSchedulers not implemented")
-}
-func (*UnimplementedOpenoltServer) CreateTrafficQueues(ctx context.Context, req *tech_profile.TrafficQueues) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateTrafficQueues not implemented")
-}
-func (*UnimplementedOpenoltServer) RemoveTrafficQueues(ctx context.Context, req *tech_profile.TrafficQueues) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RemoveTrafficQueues not implemented")
-}
-func (*UnimplementedOpenoltServer) EnableIndication(req *Empty, srv Openolt_EnableIndicationServer) error {
-	return status.Errorf(codes.Unimplemented, "method EnableIndication not implemented")
-}
-func (*UnimplementedOpenoltServer) PerformGroupOperation(ctx context.Context, req *Group) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PerformGroupOperation not implemented")
-}
-func (*UnimplementedOpenoltServer) DeleteGroup(ctx context.Context, req *Group) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteGroup not implemented")
-}
-func (*UnimplementedOpenoltServer) GetExtValue(ctx context.Context, req *ValueParam) (*extension.ReturnValues, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedOpenoltServer) OnuItuPonAlarmSet(ctx context.Context, req *config.OnuItuPonAlarm) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method OnuItuPonAlarmSet not implemented")
-}
-func (*UnimplementedOpenoltServer) GetLogicalOnuDistanceZero(ctx context.Context, req *Onu) (*OnuLogicalDistance, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalOnuDistanceZero not implemented")
-}
-func (*UnimplementedOpenoltServer) GetLogicalOnuDistance(ctx context.Context, req *Onu) (*OnuLogicalDistance, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalOnuDistance not implemented")
-}
-func (*UnimplementedOpenoltServer) GetPonRxPower(ctx context.Context, req *Onu) (*PonRxPowerData, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetPonRxPower not implemented")
-}
-func (*UnimplementedOpenoltServer) GetOnuInfo(ctx context.Context, req *Onu) (*OnuInfo, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuInfo not implemented")
-}
-func (*UnimplementedOpenoltServer) GetPonInterfaceInfo(ctx context.Context, req *Interface) (*PonIntfInfo, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetPonInterfaceInfo not implemented")
-}
-func (*UnimplementedOpenoltServer) GetAllocIdStatistics(ctx context.Context, req *OnuPacket) (*OnuAllocIdStatistics, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetAllocIdStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) GetPonPortStatistics(ctx context.Context, req *Interface) (*common.PortStatistics, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetPonPortStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) GetNniPortStatistics(ctx context.Context, req *Interface) (*common.PortStatistics, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetNniPortStatistics not implemented")
-}
-func (*UnimplementedOpenoltServer) DisableOnu(ctx context.Context, req *InterfaceOnuSerialNumberOnuId) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnu not implemented")
-}
-func (*UnimplementedOpenoltServer) EnableOnu(ctx context.Context, req *InterfaceOnuSerialNumberOnuId) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnu not implemented")
-}
-func (*UnimplementedOpenoltServer) DisableOnuSerialNumber(ctx context.Context, req *InterfaceOnuSerialNumber) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
-}
-func (*UnimplementedOpenoltServer) EnableOnuSerialNumber(ctx context.Context, req *InterfaceOnuSerialNumber) (*Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
-}
-
-func RegisterOpenoltServer(s *grpc.Server, srv OpenoltServer) {
-	s.RegisterService(&_Openolt_serviceDesc, srv)
-}
-
-func _Openolt_DisableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).DisableOlt(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DisableOlt",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DisableOlt(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_ReenableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).ReenableOlt(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/ReenableOlt",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).ReenableOlt(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_ActivateOnu_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).ActivateOnu(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/ActivateOnu",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).ActivateOnu(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_DeactivateOnu_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).DeactivateOnu(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DeactivateOnu",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DeactivateOnu(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_DeleteOnu_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).DeleteOnu(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DeleteOnu",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DeleteOnu(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_OmciMsgOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OmciMsg)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).OmciMsgOut(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/OmciMsgOut",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).OmciMsgOut(ctx, req.(*OmciMsg))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_OnuPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuPacket)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).OnuPacketOut(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/OnuPacketOut",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).OnuPacketOut(ctx, req.(*OnuPacket))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_UplinkPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UplinkPacket)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).UplinkPacketOut(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/UplinkPacketOut",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).UplinkPacketOut(ctx, req.(*UplinkPacket))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_FlowAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Flow)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).FlowAdd(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/FlowAdd",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).FlowAdd(ctx, req.(*Flow))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_FlowRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Flow)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).FlowRemove(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/FlowRemove",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).FlowRemove(ctx, req.(*Flow))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_HeartbeatCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).HeartbeatCheck(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/HeartbeatCheck",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).HeartbeatCheck(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_EnablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Interface)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).EnablePonIf(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/EnablePonIf",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).EnablePonIf(ctx, req.(*Interface))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_DisablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Interface)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).DisablePonIf(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DisablePonIf",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DisablePonIf(ctx, req.(*Interface))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetDeviceInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetDeviceInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetDeviceInfo(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_Reboot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).Reboot(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/Reboot",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).Reboot(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_CollectStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).CollectStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/CollectStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).CollectStatistics(ctx, req.(*Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetOnuStatistics_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).GetOnuStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetOnuStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetOnuStatistics(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetGemPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuPacket)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetGemPortStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetGemPortStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetGemPortStatistics(ctx, req.(*OnuPacket))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_CreateTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(tech_profile.TrafficSchedulers)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/CreateTrafficSchedulers",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_RemoveTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(tech_profile.TrafficSchedulers)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/RemoveTrafficSchedulers",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_CreateTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(tech_profile.TrafficQueues)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).CreateTrafficQueues(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/CreateTrafficQueues",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).CreateTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_RemoveTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(tech_profile.TrafficQueues)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).RemoveTrafficQueues(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/RemoveTrafficQueues",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).RemoveTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_EnableIndication_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(OpenoltServer).EnableIndication(m, &openoltEnableIndicationServer{stream})
-}
-
-type Openolt_EnableIndicationServer interface {
-	Send(*Indication) error
-	grpc.ServerStream
-}
-
-type openoltEnableIndicationServer struct {
-	grpc.ServerStream
-}
-
-func (x *openoltEnableIndicationServer) Send(m *Indication) error {
-	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)
-}
-
-func _Openolt_GetPonRxPower_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).GetPonRxPower(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetPonRxPower",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetPonRxPower(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetOnuInfo_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).GetOnuInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetOnuInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetOnuInfo(ctx, req.(*Onu))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetPonInterfaceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Interface)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetPonInterfaceInfo(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetPonInterfaceInfo",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetPonInterfaceInfo(ctx, req.(*Interface))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetAllocIdStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuPacket)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetAllocIdStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetAllocIdStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetAllocIdStatistics(ctx, req.(*OnuPacket))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetPonPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Interface)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetPonPortStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetPonPortStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetPonPortStatistics(ctx, req.(*Interface))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_GetNniPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Interface)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).GetNniPortStatistics(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/GetNniPortStatistics",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).GetNniPortStatistics(ctx, req.(*Interface))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_DisableOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(InterfaceOnuSerialNumberOnuId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).DisableOnu(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DisableOnu",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DisableOnu(ctx, req.(*InterfaceOnuSerialNumberOnuId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_EnableOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(InterfaceOnuSerialNumberOnuId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).EnableOnu(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/EnableOnu",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).EnableOnu(ctx, req.(*InterfaceOnuSerialNumberOnuId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(InterfaceOnuSerialNumber)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).DisableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/DisableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).DisableOnuSerialNumber(ctx, req.(*InterfaceOnuSerialNumber))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Openolt_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(InterfaceOnuSerialNumber)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(OpenoltServer).EnableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/openolt.Openolt/EnableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(OpenoltServer).EnableOnuSerialNumber(ctx, req.(*InterfaceOnuSerialNumber))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _Openolt_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "openolt.Openolt",
-	HandlerType: (*OpenoltServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "DisableOlt",
-			Handler:    _Openolt_DisableOlt_Handler,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_openolt_proto_rawDesc), len(file_voltha_protos_openolt_proto_rawDesc)),
+			NumEnums:      10,
+			NumMessages:   63,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-		{
-			MethodName: "ReenableOlt",
-			Handler:    _Openolt_ReenableOlt_Handler,
-		},
-		{
-			MethodName: "ActivateOnu",
-			Handler:    _Openolt_ActivateOnu_Handler,
-		},
-		{
-			MethodName: "DeactivateOnu",
-			Handler:    _Openolt_DeactivateOnu_Handler,
-		},
-		{
-			MethodName: "DeleteOnu",
-			Handler:    _Openolt_DeleteOnu_Handler,
-		},
-		{
-			MethodName: "OmciMsgOut",
-			Handler:    _Openolt_OmciMsgOut_Handler,
-		},
-		{
-			MethodName: "OnuPacketOut",
-			Handler:    _Openolt_OnuPacketOut_Handler,
-		},
-		{
-			MethodName: "UplinkPacketOut",
-			Handler:    _Openolt_UplinkPacketOut_Handler,
-		},
-		{
-			MethodName: "FlowAdd",
-			Handler:    _Openolt_FlowAdd_Handler,
-		},
-		{
-			MethodName: "FlowRemove",
-			Handler:    _Openolt_FlowRemove_Handler,
-		},
-		{
-			MethodName: "HeartbeatCheck",
-			Handler:    _Openolt_HeartbeatCheck_Handler,
-		},
-		{
-			MethodName: "EnablePonIf",
-			Handler:    _Openolt_EnablePonIf_Handler,
-		},
-		{
-			MethodName: "DisablePonIf",
-			Handler:    _Openolt_DisablePonIf_Handler,
-		},
-		{
-			MethodName: "GetDeviceInfo",
-			Handler:    _Openolt_GetDeviceInfo_Handler,
-		},
-		{
-			MethodName: "Reboot",
-			Handler:    _Openolt_Reboot_Handler,
-		},
-		{
-			MethodName: "CollectStatistics",
-			Handler:    _Openolt_CollectStatistics_Handler,
-		},
-		{
-			MethodName: "GetOnuStatistics",
-			Handler:    _Openolt_GetOnuStatistics_Handler,
-		},
-		{
-			MethodName: "GetGemPortStatistics",
-			Handler:    _Openolt_GetGemPortStatistics_Handler,
-		},
-		{
-			MethodName: "CreateTrafficSchedulers",
-			Handler:    _Openolt_CreateTrafficSchedulers_Handler,
-		},
-		{
-			MethodName: "RemoveTrafficSchedulers",
-			Handler:    _Openolt_RemoveTrafficSchedulers_Handler,
-		},
-		{
-			MethodName: "CreateTrafficQueues",
-			Handler:    _Openolt_CreateTrafficQueues_Handler,
-		},
-		{
-			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,
-		},
-		{
-			MethodName: "GetPonRxPower",
-			Handler:    _Openolt_GetPonRxPower_Handler,
-		},
-		{
-			MethodName: "GetOnuInfo",
-			Handler:    _Openolt_GetOnuInfo_Handler,
-		},
-		{
-			MethodName: "GetPonInterfaceInfo",
-			Handler:    _Openolt_GetPonInterfaceInfo_Handler,
-		},
-		{
-			MethodName: "GetAllocIdStatistics",
-			Handler:    _Openolt_GetAllocIdStatistics_Handler,
-		},
-		{
-			MethodName: "GetPonPortStatistics",
-			Handler:    _Openolt_GetPonPortStatistics_Handler,
-		},
-		{
-			MethodName: "GetNniPortStatistics",
-			Handler:    _Openolt_GetNniPortStatistics_Handler,
-		},
-		{
-			MethodName: "DisableOnu",
-			Handler:    _Openolt_DisableOnu_Handler,
-		},
-		{
-			MethodName: "EnableOnu",
-			Handler:    _Openolt_EnableOnu_Handler,
-		},
-		{
-			MethodName: "DisableOnuSerialNumber",
-			Handler:    _Openolt_DisableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "EnableOnuSerialNumber",
-			Handler:    _Openolt_EnableOnuSerialNumber_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "EnableIndication",
-			Handler:       _Openolt_EnableIndication_Handler,
-			ServerStreams: true,
-		},
-	},
-	Metadata: "voltha_protos/openolt.proto",
+		GoTypes:           file_voltha_protos_openolt_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_openolt_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_openolt_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_openolt_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_openolt_proto = out.File
+	file_voltha_protos_openolt_proto_goTypes = nil
+	file_voltha_protos_openolt_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt_grpc.pb.go
new file mode 100644
index 0000000..c19691d
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt_grpc.pb.go
@@ -0,0 +1,1635 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/openolt.proto
+
+package openolt
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	config "github.com/opencord/voltha-protos/v5/go/ext/config"
+	extension "github.com/opencord/voltha-protos/v5/go/extension"
+	tech_profile "github.com/opencord/voltha-protos/v5/go/tech_profile"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	Openolt_DisableOlt_FullMethodName                = "/openolt.Openolt/DisableOlt"
+	Openolt_ReenableOlt_FullMethodName               = "/openolt.Openolt/ReenableOlt"
+	Openolt_ActivateOnu_FullMethodName               = "/openolt.Openolt/ActivateOnu"
+	Openolt_DeactivateOnu_FullMethodName             = "/openolt.Openolt/DeactivateOnu"
+	Openolt_DeleteOnu_FullMethodName                 = "/openolt.Openolt/DeleteOnu"
+	Openolt_OmciMsgOut_FullMethodName                = "/openolt.Openolt/OmciMsgOut"
+	Openolt_OnuPacketOut_FullMethodName              = "/openolt.Openolt/OnuPacketOut"
+	Openolt_UplinkPacketOut_FullMethodName           = "/openolt.Openolt/UplinkPacketOut"
+	Openolt_FlowAdd_FullMethodName                   = "/openolt.Openolt/FlowAdd"
+	Openolt_FlowRemove_FullMethodName                = "/openolt.Openolt/FlowRemove"
+	Openolt_HeartbeatCheck_FullMethodName            = "/openolt.Openolt/HeartbeatCheck"
+	Openolt_EnablePonIf_FullMethodName               = "/openolt.Openolt/EnablePonIf"
+	Openolt_DisablePonIf_FullMethodName              = "/openolt.Openolt/DisablePonIf"
+	Openolt_GetDeviceInfo_FullMethodName             = "/openolt.Openolt/GetDeviceInfo"
+	Openolt_Reboot_FullMethodName                    = "/openolt.Openolt/Reboot"
+	Openolt_CollectStatistics_FullMethodName         = "/openolt.Openolt/CollectStatistics"
+	Openolt_GetOnuStatistics_FullMethodName          = "/openolt.Openolt/GetOnuStatistics"
+	Openolt_GetGemPortStatistics_FullMethodName      = "/openolt.Openolt/GetGemPortStatistics"
+	Openolt_CreateTrafficSchedulers_FullMethodName   = "/openolt.Openolt/CreateTrafficSchedulers"
+	Openolt_RemoveTrafficSchedulers_FullMethodName   = "/openolt.Openolt/RemoveTrafficSchedulers"
+	Openolt_CreateTrafficQueues_FullMethodName       = "/openolt.Openolt/CreateTrafficQueues"
+	Openolt_RemoveTrafficQueues_FullMethodName       = "/openolt.Openolt/RemoveTrafficQueues"
+	Openolt_EnableIndication_FullMethodName          = "/openolt.Openolt/EnableIndication"
+	Openolt_PerformGroupOperation_FullMethodName     = "/openolt.Openolt/PerformGroupOperation"
+	Openolt_DeleteGroup_FullMethodName               = "/openolt.Openolt/DeleteGroup"
+	Openolt_GetExtValue_FullMethodName               = "/openolt.Openolt/GetExtValue"
+	Openolt_OnuItuPonAlarmSet_FullMethodName         = "/openolt.Openolt/OnuItuPonAlarmSet"
+	Openolt_GetLogicalOnuDistanceZero_FullMethodName = "/openolt.Openolt/GetLogicalOnuDistanceZero"
+	Openolt_GetLogicalOnuDistance_FullMethodName     = "/openolt.Openolt/GetLogicalOnuDistance"
+	Openolt_GetPonRxPower_FullMethodName             = "/openolt.Openolt/GetPonRxPower"
+	Openolt_GetOnuInfo_FullMethodName                = "/openolt.Openolt/GetOnuInfo"
+	Openolt_GetPonInterfaceInfo_FullMethodName       = "/openolt.Openolt/GetPonInterfaceInfo"
+	Openolt_GetAllocIdStatistics_FullMethodName      = "/openolt.Openolt/GetAllocIdStatistics"
+	Openolt_GetPonPortStatistics_FullMethodName      = "/openolt.Openolt/GetPonPortStatistics"
+	Openolt_GetNniPortStatistics_FullMethodName      = "/openolt.Openolt/GetNniPortStatistics"
+	Openolt_DisableOnu_FullMethodName                = "/openolt.Openolt/DisableOnu"
+	Openolt_EnableOnu_FullMethodName                 = "/openolt.Openolt/EnableOnu"
+	Openolt_DisableOnuSerialNumber_FullMethodName    = "/openolt.Openolt/DisableOnuSerialNumber"
+	Openolt_EnableOnuSerialNumber_FullMethodName     = "/openolt.Openolt/EnableOnuSerialNumber"
+)
+
+// OpenoltClient is the client API for Openolt service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type OpenoltClient interface {
+	DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+	ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+	ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+	DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+	DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error)
+	OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error)
+	OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error)
+	UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error)
+	FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
+	FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error)
+	HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error)
+	EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
+	DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error)
+	GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error)
+	Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+	CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error)
+	GetOnuStatistics(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuStatistics, error)
+	GetGemPortStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*GemPortStatistics, error)
+	CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
+	RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error)
+	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) (grpc.ServerStreamingClient[Indication], 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) (*extension.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)
+	GetPonRxPower(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*PonRxPowerData, error)
+	// GetOnuInfo takes Onu id, serialnumber, and pon interface as argument from the onu structure.
+	// Returns the Onu info from the device.
+	GetOnuInfo(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuInfo, error)
+	// GetPonInterfaceInfo takes the pon intf id as argument.
+	// Returns the pon interface information from the device.
+	GetPonInterfaceInfo(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*PonIntfInfo, error)
+	// GetAllocIdStatistics takes onuId and allocId as argument.
+	// This method includes a default wait period of 10 secs before collecting the stats.
+	// The caller has to be aware of this wait and handle it accordingly.
+	// Returns AllocId statistics in the form of OnuAllocStatistics structure
+	GetAllocIdStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*OnuAllocIdStatistics, error)
+	// GetPonPortStatistics takes interface id and type as argument from Interface structure.
+	// Returns Pon port statistics in the form of PonStatsData structure.
+	GetPonPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error)
+	// GetNniPortStatistics takes takes interface id and type as argument from Interface structure.
+	// Returns Nni port statistics in the form of NniStatsData structure
+	GetNniPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error)
+	// Disable ONU serailnumber, disable device at PLOAM.
+	// Takes input as intfid, onuid, sn of the ONU.
+	// Returns success if the call towards the device is success, error otherwise.
+	DisableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error)
+	// Enables ONU serailnumber, enable device at PLOAM.
+	// Takes input as intfid, onuid, sn of the ONU.
+	// Returns success if the call towards the device is success, error otherwise.
+	EnableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error)
+	// Disable ONU serailnumber, disable device at PLOAM
+	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+	// Returns success if the call towards the device is success, error otherwise.
+	DisableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error)
+	// Enables ONU serailnumber, enable device at PLOAM
+	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+	// Returns success if the call towards the device is success, error otherwise.
+	EnableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error)
+}
+
+type openoltClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewOpenoltClient(cc grpc.ClientConnInterface) OpenoltClient {
+	return &openoltClient{cc}
+}
+
+func (c *openoltClient) DisableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DisableOlt_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) ReenableOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_ReenableOlt_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) ActivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_ActivateOnu_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DeactivateOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DeactivateOnu_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DeleteOnu(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DeleteOnu_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) OmciMsgOut(ctx context.Context, in *OmciMsg, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_OmciMsgOut_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) OnuPacketOut(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_OnuPacketOut_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) UplinkPacketOut(ctx context.Context, in *UplinkPacket, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_UplinkPacketOut_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) FlowAdd(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_FlowAdd_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) FlowRemove(ctx context.Context, in *Flow, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_FlowRemove_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) HeartbeatCheck(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Heartbeat, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Heartbeat)
+	err := c.cc.Invoke(ctx, Openolt_HeartbeatCheck_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) EnablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_EnablePonIf_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DisablePonIf(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DisablePonIf_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetDeviceInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeviceInfo, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceInfo)
+	err := c.cc.Invoke(ctx, Openolt_GetDeviceInfo_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) Reboot(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_Reboot_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) CollectStatistics(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_CollectStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetOnuStatistics(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuStatistics, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuStatistics)
+	err := c.cc.Invoke(ctx, Openolt_GetOnuStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetGemPortStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*GemPortStatistics, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(GemPortStatistics)
+	err := c.cc.Invoke(ctx, Openolt_GetGemPortStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) CreateTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_CreateTrafficSchedulers_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) RemoveTrafficSchedulers(ctx context.Context, in *tech_profile.TrafficSchedulers, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_RemoveTrafficSchedulers_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_CreateTrafficQueues_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_RemoveTrafficQueues_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Indication], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &Openolt_ServiceDesc.Streams[0], Openolt_EnableIndication_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[Empty, Indication]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type Openolt_EnableIndicationClient = grpc.ServerStreamingClient[Indication]
+
+func (c *openoltClient) PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_PerformGroupOperation_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DeleteGroup(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DeleteGroup_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetExtValue(ctx context.Context, in *ValueParam, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.ReturnValues)
+	err := c.cc.Invoke(ctx, Openolt_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_OnuItuPonAlarmSet_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistanceZero(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, Openolt_GetLogicalOnuDistanceZero_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistance(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, Openolt_GetLogicalOnuDistance_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetPonRxPower(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*PonRxPowerData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(PonRxPowerData)
+	err := c.cc.Invoke(ctx, Openolt_GetPonRxPower_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetOnuInfo(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuInfo, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuInfo)
+	err := c.cc.Invoke(ctx, Openolt_GetOnuInfo_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetPonInterfaceInfo(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*PonIntfInfo, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(PonIntfInfo)
+	err := c.cc.Invoke(ctx, Openolt_GetPonInterfaceInfo_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetAllocIdStatistics(ctx context.Context, in *OnuPacket, opts ...grpc.CallOption) (*OnuAllocIdStatistics, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuAllocIdStatistics)
+	err := c.cc.Invoke(ctx, Openolt_GetAllocIdStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetPonPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.PortStatistics)
+	err := c.cc.Invoke(ctx, Openolt_GetPonPortStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetNniPortStatistics(ctx context.Context, in *Interface, opts ...grpc.CallOption) (*common.PortStatistics, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.PortStatistics)
+	err := c.cc.Invoke(ctx, Openolt_GetNniPortStatistics_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DisableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DisableOnu_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) EnableOnu(ctx context.Context, in *InterfaceOnuSerialNumberOnuId, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_EnableOnu_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DisableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_DisableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) EnableOnuSerialNumber(ctx context.Context, in *InterfaceOnuSerialNumber, opts ...grpc.CallOption) (*Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, Openolt_EnableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// OpenoltServer is the server API for Openolt service.
+// All implementations must embed UnimplementedOpenoltServer
+// for forward compatibility.
+type OpenoltServer interface {
+	DisableOlt(context.Context, *Empty) (*Empty, error)
+	ReenableOlt(context.Context, *Empty) (*Empty, error)
+	ActivateOnu(context.Context, *Onu) (*Empty, error)
+	DeactivateOnu(context.Context, *Onu) (*Empty, error)
+	DeleteOnu(context.Context, *Onu) (*Empty, error)
+	OmciMsgOut(context.Context, *OmciMsg) (*Empty, error)
+	OnuPacketOut(context.Context, *OnuPacket) (*Empty, error)
+	UplinkPacketOut(context.Context, *UplinkPacket) (*Empty, error)
+	FlowAdd(context.Context, *Flow) (*Empty, error)
+	FlowRemove(context.Context, *Flow) (*Empty, error)
+	HeartbeatCheck(context.Context, *Empty) (*Heartbeat, error)
+	EnablePonIf(context.Context, *Interface) (*Empty, error)
+	DisablePonIf(context.Context, *Interface) (*Empty, error)
+	GetDeviceInfo(context.Context, *Empty) (*DeviceInfo, error)
+	Reboot(context.Context, *Empty) (*Empty, error)
+	CollectStatistics(context.Context, *Empty) (*Empty, error)
+	GetOnuStatistics(context.Context, *Onu) (*OnuStatistics, error)
+	GetGemPortStatistics(context.Context, *OnuPacket) (*GemPortStatistics, error)
+	CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
+	RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error)
+	CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
+	RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
+	EnableIndication(*Empty, grpc.ServerStreamingServer[Indication]) error
+	PerformGroupOperation(context.Context, *Group) (*Empty, error)
+	DeleteGroup(context.Context, *Group) (*Empty, error)
+	GetExtValue(context.Context, *ValueParam) (*extension.ReturnValues, error)
+	OnuItuPonAlarmSet(context.Context, *config.OnuItuPonAlarm) (*Empty, error)
+	GetLogicalOnuDistanceZero(context.Context, *Onu) (*OnuLogicalDistance, error)
+	GetLogicalOnuDistance(context.Context, *Onu) (*OnuLogicalDistance, error)
+	GetPonRxPower(context.Context, *Onu) (*PonRxPowerData, error)
+	// GetOnuInfo takes Onu id, serialnumber, and pon interface as argument from the onu structure.
+	// Returns the Onu info from the device.
+	GetOnuInfo(context.Context, *Onu) (*OnuInfo, error)
+	// GetPonInterfaceInfo takes the pon intf id as argument.
+	// Returns the pon interface information from the device.
+	GetPonInterfaceInfo(context.Context, *Interface) (*PonIntfInfo, error)
+	// GetAllocIdStatistics takes onuId and allocId as argument.
+	// This method includes a default wait period of 10 secs before collecting the stats.
+	// The caller has to be aware of this wait and handle it accordingly.
+	// Returns AllocId statistics in the form of OnuAllocStatistics structure
+	GetAllocIdStatistics(context.Context, *OnuPacket) (*OnuAllocIdStatistics, error)
+	// GetPonPortStatistics takes interface id and type as argument from Interface structure.
+	// Returns Pon port statistics in the form of PonStatsData structure.
+	GetPonPortStatistics(context.Context, *Interface) (*common.PortStatistics, error)
+	// GetNniPortStatistics takes takes interface id and type as argument from Interface structure.
+	// Returns Nni port statistics in the form of NniStatsData structure
+	GetNniPortStatistics(context.Context, *Interface) (*common.PortStatistics, error)
+	// Disable ONU serailnumber, disable device at PLOAM.
+	// Takes input as intfid, onuid, sn of the ONU.
+	// Returns success if the call towards the device is success, error otherwise.
+	DisableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error)
+	// Enables ONU serailnumber, enable device at PLOAM.
+	// Takes input as intfid, onuid, sn of the ONU.
+	// Returns success if the call towards the device is success, error otherwise.
+	EnableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error)
+	// Disable ONU serailnumber, disable device at PLOAM
+	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+	// Returns success if the call towards the device is success, error otherwise.
+	DisableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error)
+	// Enables ONU serailnumber, enable device at PLOAM
+	// Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+	// Returns success if the call towards the device is success, error otherwise.
+	EnableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error)
+	mustEmbedUnimplementedOpenoltServer()
+}
+
+// UnimplementedOpenoltServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedOpenoltServer struct{}
+
+func (UnimplementedOpenoltServer) DisableOlt(context.Context, *Empty) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOlt not implemented")
+}
+func (UnimplementedOpenoltServer) ReenableOlt(context.Context, *Empty) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReenableOlt not implemented")
+}
+func (UnimplementedOpenoltServer) ActivateOnu(context.Context, *Onu) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateOnu not implemented")
+}
+func (UnimplementedOpenoltServer) DeactivateOnu(context.Context, *Onu) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeactivateOnu not implemented")
+}
+func (UnimplementedOpenoltServer) DeleteOnu(context.Context, *Onu) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteOnu not implemented")
+}
+func (UnimplementedOpenoltServer) OmciMsgOut(context.Context, *OmciMsg) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method OmciMsgOut not implemented")
+}
+func (UnimplementedOpenoltServer) OnuPacketOut(context.Context, *OnuPacket) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method OnuPacketOut not implemented")
+}
+func (UnimplementedOpenoltServer) UplinkPacketOut(context.Context, *UplinkPacket) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UplinkPacketOut not implemented")
+}
+func (UnimplementedOpenoltServer) FlowAdd(context.Context, *Flow) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method FlowAdd not implemented")
+}
+func (UnimplementedOpenoltServer) FlowRemove(context.Context, *Flow) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method FlowRemove not implemented")
+}
+func (UnimplementedOpenoltServer) HeartbeatCheck(context.Context, *Empty) (*Heartbeat, error) {
+	return nil, status.Error(codes.Unimplemented, "method HeartbeatCheck not implemented")
+}
+func (UnimplementedOpenoltServer) EnablePonIf(context.Context, *Interface) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnablePonIf not implemented")
+}
+func (UnimplementedOpenoltServer) DisablePonIf(context.Context, *Interface) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisablePonIf not implemented")
+}
+func (UnimplementedOpenoltServer) GetDeviceInfo(context.Context, *Empty) (*DeviceInfo, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDeviceInfo not implemented")
+}
+func (UnimplementedOpenoltServer) Reboot(context.Context, *Empty) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method Reboot not implemented")
+}
+func (UnimplementedOpenoltServer) CollectStatistics(context.Context, *Empty) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method CollectStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) GetOnuStatistics(context.Context, *Onu) (*OnuStatistics, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) GetGemPortStatistics(context.Context, *OnuPacket) (*GemPortStatistics, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetGemPortStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) CreateTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateTrafficSchedulers not implemented")
+}
+func (UnimplementedOpenoltServer) RemoveTrafficSchedulers(context.Context, *tech_profile.TrafficSchedulers) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RemoveTrafficSchedulers not implemented")
+}
+func (UnimplementedOpenoltServer) CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateTrafficQueues not implemented")
+}
+func (UnimplementedOpenoltServer) RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RemoveTrafficQueues not implemented")
+}
+func (UnimplementedOpenoltServer) EnableIndication(*Empty, grpc.ServerStreamingServer[Indication]) error {
+	return status.Error(codes.Unimplemented, "method EnableIndication not implemented")
+}
+func (UnimplementedOpenoltServer) PerformGroupOperation(context.Context, *Group) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PerformGroupOperation not implemented")
+}
+func (UnimplementedOpenoltServer) DeleteGroup(context.Context, *Group) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteGroup not implemented")
+}
+func (UnimplementedOpenoltServer) GetExtValue(context.Context, *ValueParam) (*extension.ReturnValues, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedOpenoltServer) OnuItuPonAlarmSet(context.Context, *config.OnuItuPonAlarm) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method OnuItuPonAlarmSet not implemented")
+}
+func (UnimplementedOpenoltServer) GetLogicalOnuDistanceZero(context.Context, *Onu) (*OnuLogicalDistance, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalOnuDistanceZero not implemented")
+}
+func (UnimplementedOpenoltServer) GetLogicalOnuDistance(context.Context, *Onu) (*OnuLogicalDistance, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalOnuDistance not implemented")
+}
+func (UnimplementedOpenoltServer) GetPonRxPower(context.Context, *Onu) (*PonRxPowerData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetPonRxPower not implemented")
+}
+func (UnimplementedOpenoltServer) GetOnuInfo(context.Context, *Onu) (*OnuInfo, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuInfo not implemented")
+}
+func (UnimplementedOpenoltServer) GetPonInterfaceInfo(context.Context, *Interface) (*PonIntfInfo, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetPonInterfaceInfo not implemented")
+}
+func (UnimplementedOpenoltServer) GetAllocIdStatistics(context.Context, *OnuPacket) (*OnuAllocIdStatistics, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetAllocIdStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) GetPonPortStatistics(context.Context, *Interface) (*common.PortStatistics, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetPonPortStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) GetNniPortStatistics(context.Context, *Interface) (*common.PortStatistics, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetNniPortStatistics not implemented")
+}
+func (UnimplementedOpenoltServer) DisableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnu not implemented")
+}
+func (UnimplementedOpenoltServer) EnableOnu(context.Context, *InterfaceOnuSerialNumberOnuId) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnu not implemented")
+}
+func (UnimplementedOpenoltServer) DisableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (UnimplementedOpenoltServer) EnableOnuSerialNumber(context.Context, *InterfaceOnuSerialNumber) (*Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
+func (UnimplementedOpenoltServer) mustEmbedUnimplementedOpenoltServer() {}
+func (UnimplementedOpenoltServer) testEmbeddedByValue()                 {}
+
+// UnsafeOpenoltServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to OpenoltServer will
+// result in compilation errors.
+type UnsafeOpenoltServer interface {
+	mustEmbedUnimplementedOpenoltServer()
+}
+
+func RegisterOpenoltServer(s grpc.ServiceRegistrar, srv OpenoltServer) {
+	// If the following call panics, it indicates UnimplementedOpenoltServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&Openolt_ServiceDesc, srv)
+}
+
+func _Openolt_DisableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DisableOlt(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DisableOlt_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DisableOlt(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_ReenableOlt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).ReenableOlt(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_ReenableOlt_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).ReenableOlt(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_ActivateOnu_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).ActivateOnu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_ActivateOnu_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).ActivateOnu(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeactivateOnu_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).DeactivateOnu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DeactivateOnu_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DeactivateOnu(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeleteOnu_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).DeleteOnu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DeleteOnu_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DeleteOnu(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OmciMsgOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OmciMsg)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).OmciMsgOut(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_OmciMsgOut_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).OmciMsgOut(ctx, req.(*OmciMsg))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OnuPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuPacket)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).OnuPacketOut(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_OnuPacketOut_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).OnuPacketOut(ctx, req.(*OnuPacket))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_UplinkPacketOut_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UplinkPacket)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).UplinkPacketOut(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_UplinkPacketOut_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).UplinkPacketOut(ctx, req.(*UplinkPacket))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_FlowAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Flow)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).FlowAdd(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_FlowAdd_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).FlowAdd(ctx, req.(*Flow))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_FlowRemove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Flow)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).FlowRemove(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_FlowRemove_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).FlowRemove(ctx, req.(*Flow))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_HeartbeatCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).HeartbeatCheck(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_HeartbeatCheck_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).HeartbeatCheck(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Interface)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).EnablePonIf(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_EnablePonIf_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).EnablePonIf(ctx, req.(*Interface))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DisablePonIf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Interface)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DisablePonIf(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DisablePonIf_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DisablePonIf(ctx, req.(*Interface))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetDeviceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetDeviceInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetDeviceInfo_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetDeviceInfo(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_Reboot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).Reboot(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_Reboot_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).Reboot(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CollectStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).CollectStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_CollectStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).CollectStatistics(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetOnuStatistics_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).GetOnuStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetOnuStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetOnuStatistics(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetGemPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuPacket)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetGemPortStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetGemPortStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetGemPortStatistics(ctx, req.(*OnuPacket))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CreateTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(tech_profile.TrafficSchedulers)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_CreateTrafficSchedulers_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).CreateTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_RemoveTrafficSchedulers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(tech_profile.TrafficSchedulers)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_RemoveTrafficSchedulers_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).RemoveTrafficSchedulers(ctx, req.(*tech_profile.TrafficSchedulers))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_CreateTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(tech_profile.TrafficQueues)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).CreateTrafficQueues(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_CreateTrafficQueues_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).CreateTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_RemoveTrafficQueues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(tech_profile.TrafficQueues)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).RemoveTrafficQueues(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_RemoveTrafficQueues_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).RemoveTrafficQueues(ctx, req.(*tech_profile.TrafficQueues))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnableIndication_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(OpenoltServer).EnableIndication(m, &grpc.GenericServerStream[Empty, Indication]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type Openolt_EnableIndicationServer = grpc.ServerStreamingServer[Indication]
+
+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_PerformGroupOperation_FullMethodName,
+	}
+	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_DeleteGroup_FullMethodName,
+	}
+	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_GetExtValue_FullMethodName,
+	}
+	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_OnuItuPonAlarmSet_FullMethodName,
+	}
+	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_GetLogicalOnuDistanceZero_FullMethodName,
+	}
+	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_GetLogicalOnuDistance_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetLogicalOnuDistance(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetPonRxPower_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).GetPonRxPower(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetPonRxPower_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetPonRxPower(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetOnuInfo_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).GetOnuInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetOnuInfo_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetOnuInfo(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetPonInterfaceInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Interface)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetPonInterfaceInfo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetPonInterfaceInfo_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetPonInterfaceInfo(ctx, req.(*Interface))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetAllocIdStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuPacket)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetAllocIdStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetAllocIdStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetAllocIdStatistics(ctx, req.(*OnuPacket))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetPonPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Interface)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetPonPortStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetPonPortStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetPonPortStatistics(ctx, req.(*Interface))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetNniPortStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Interface)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetNniPortStatistics(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_GetNniPortStatistics_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetNniPortStatistics(ctx, req.(*Interface))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DisableOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(InterfaceOnuSerialNumberOnuId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DisableOnu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DisableOnu_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DisableOnu(ctx, req.(*InterfaceOnuSerialNumberOnuId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnableOnu_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(InterfaceOnuSerialNumberOnuId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).EnableOnu(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_EnableOnu_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).EnableOnu(ctx, req.(*InterfaceOnuSerialNumberOnuId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(InterfaceOnuSerialNumber)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_DisableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DisableOnuSerialNumber(ctx, req.(*InterfaceOnuSerialNumber))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(InterfaceOnuSerialNumber)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Openolt_EnableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).EnableOnuSerialNumber(ctx, req.(*InterfaceOnuSerialNumber))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// Openolt_ServiceDesc is the grpc.ServiceDesc for Openolt service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Openolt_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "openolt.Openolt",
+	HandlerType: (*OpenoltServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "DisableOlt",
+			Handler:    _Openolt_DisableOlt_Handler,
+		},
+		{
+			MethodName: "ReenableOlt",
+			Handler:    _Openolt_ReenableOlt_Handler,
+		},
+		{
+			MethodName: "ActivateOnu",
+			Handler:    _Openolt_ActivateOnu_Handler,
+		},
+		{
+			MethodName: "DeactivateOnu",
+			Handler:    _Openolt_DeactivateOnu_Handler,
+		},
+		{
+			MethodName: "DeleteOnu",
+			Handler:    _Openolt_DeleteOnu_Handler,
+		},
+		{
+			MethodName: "OmciMsgOut",
+			Handler:    _Openolt_OmciMsgOut_Handler,
+		},
+		{
+			MethodName: "OnuPacketOut",
+			Handler:    _Openolt_OnuPacketOut_Handler,
+		},
+		{
+			MethodName: "UplinkPacketOut",
+			Handler:    _Openolt_UplinkPacketOut_Handler,
+		},
+		{
+			MethodName: "FlowAdd",
+			Handler:    _Openolt_FlowAdd_Handler,
+		},
+		{
+			MethodName: "FlowRemove",
+			Handler:    _Openolt_FlowRemove_Handler,
+		},
+		{
+			MethodName: "HeartbeatCheck",
+			Handler:    _Openolt_HeartbeatCheck_Handler,
+		},
+		{
+			MethodName: "EnablePonIf",
+			Handler:    _Openolt_EnablePonIf_Handler,
+		},
+		{
+			MethodName: "DisablePonIf",
+			Handler:    _Openolt_DisablePonIf_Handler,
+		},
+		{
+			MethodName: "GetDeviceInfo",
+			Handler:    _Openolt_GetDeviceInfo_Handler,
+		},
+		{
+			MethodName: "Reboot",
+			Handler:    _Openolt_Reboot_Handler,
+		},
+		{
+			MethodName: "CollectStatistics",
+			Handler:    _Openolt_CollectStatistics_Handler,
+		},
+		{
+			MethodName: "GetOnuStatistics",
+			Handler:    _Openolt_GetOnuStatistics_Handler,
+		},
+		{
+			MethodName: "GetGemPortStatistics",
+			Handler:    _Openolt_GetGemPortStatistics_Handler,
+		},
+		{
+			MethodName: "CreateTrafficSchedulers",
+			Handler:    _Openolt_CreateTrafficSchedulers_Handler,
+		},
+		{
+			MethodName: "RemoveTrafficSchedulers",
+			Handler:    _Openolt_RemoveTrafficSchedulers_Handler,
+		},
+		{
+			MethodName: "CreateTrafficQueues",
+			Handler:    _Openolt_CreateTrafficQueues_Handler,
+		},
+		{
+			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,
+		},
+		{
+			MethodName: "GetPonRxPower",
+			Handler:    _Openolt_GetPonRxPower_Handler,
+		},
+		{
+			MethodName: "GetOnuInfo",
+			Handler:    _Openolt_GetOnuInfo_Handler,
+		},
+		{
+			MethodName: "GetPonInterfaceInfo",
+			Handler:    _Openolt_GetPonInterfaceInfo_Handler,
+		},
+		{
+			MethodName: "GetAllocIdStatistics",
+			Handler:    _Openolt_GetAllocIdStatistics_Handler,
+		},
+		{
+			MethodName: "GetPonPortStatistics",
+			Handler:    _Openolt_GetPonPortStatistics_Handler,
+		},
+		{
+			MethodName: "GetNniPortStatistics",
+			Handler:    _Openolt_GetNniPortStatistics_Handler,
+		},
+		{
+			MethodName: "DisableOnu",
+			Handler:    _Openolt_DisableOnu_Handler,
+		},
+		{
+			MethodName: "EnableOnu",
+			Handler:    _Openolt_EnableOnu_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _Openolt_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _Openolt_EnableOnuSerialNumber_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "EnableIndication",
+			Handler:       _Openolt_EnableIndication_Handler,
+			ServerStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/openolt.proto",
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/tech_profile/tech_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/tech_profile/tech_profile.pb.go
index dd1caef..5f497b1 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/tech_profile/tech_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/tech_profile/tech_profile.pb.go
@@ -1,25 +1,40 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/tech_profile.proto
 
 package tech_profile
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type Direction int32
 
@@ -29,24 +44,45 @@
 	Direction_BIDIRECTIONAL Direction = 2
 )
 
-var Direction_name = map[int32]string{
-	0: "UPSTREAM",
-	1: "DOWNSTREAM",
-	2: "BIDIRECTIONAL",
-}
+// Enum value maps for Direction.
+var (
+	Direction_name = map[int32]string{
+		0: "UPSTREAM",
+		1: "DOWNSTREAM",
+		2: "BIDIRECTIONAL",
+	}
+	Direction_value = map[string]int32{
+		"UPSTREAM":      0,
+		"DOWNSTREAM":    1,
+		"BIDIRECTIONAL": 2,
+	}
+)
 
-var Direction_value = map[string]int32{
-	"UPSTREAM":      0,
-	"DOWNSTREAM":    1,
-	"BIDIRECTIONAL": 2,
+func (x Direction) Enum() *Direction {
+	p := new(Direction)
+	*p = x
+	return p
 }
 
 func (x Direction) String() string {
-	return proto.EnumName(Direction_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Direction) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_tech_profile_proto_enumTypes[0].Descriptor()
+}
+
+func (Direction) Type() protoreflect.EnumType {
+	return &file_voltha_protos_tech_profile_proto_enumTypes[0]
+}
+
+func (x Direction) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Direction.Descriptor instead.
 func (Direction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{0}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{0}
 }
 
 type SchedulingPolicy int32
@@ -57,24 +93,45 @@
 	SchedulingPolicy_Hybrid         SchedulingPolicy = 2
 )
 
-var SchedulingPolicy_name = map[int32]string{
-	0: "WRR",
-	1: "StrictPriority",
-	2: "Hybrid",
-}
+// Enum value maps for SchedulingPolicy.
+var (
+	SchedulingPolicy_name = map[int32]string{
+		0: "WRR",
+		1: "StrictPriority",
+		2: "Hybrid",
+	}
+	SchedulingPolicy_value = map[string]int32{
+		"WRR":            0,
+		"StrictPriority": 1,
+		"Hybrid":         2,
+	}
+)
 
-var SchedulingPolicy_value = map[string]int32{
-	"WRR":            0,
-	"StrictPriority": 1,
-	"Hybrid":         2,
+func (x SchedulingPolicy) Enum() *SchedulingPolicy {
+	p := new(SchedulingPolicy)
+	*p = x
+	return p
 }
 
 func (x SchedulingPolicy) String() string {
-	return proto.EnumName(SchedulingPolicy_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SchedulingPolicy) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_tech_profile_proto_enumTypes[1].Descriptor()
+}
+
+func (SchedulingPolicy) Type() protoreflect.EnumType {
+	return &file_voltha_protos_tech_profile_proto_enumTypes[1]
+}
+
+func (x SchedulingPolicy) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SchedulingPolicy.Descriptor instead.
 func (SchedulingPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{1}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{1}
 }
 
 type AdditionalBW int32
@@ -86,26 +143,47 @@
 	AdditionalBW_AdditionalBW_Auto       AdditionalBW = 3
 )
 
-var AdditionalBW_name = map[int32]string{
-	0: "AdditionalBW_None",
-	1: "AdditionalBW_NA",
-	2: "AdditionalBW_BestEffort",
-	3: "AdditionalBW_Auto",
-}
+// Enum value maps for AdditionalBW.
+var (
+	AdditionalBW_name = map[int32]string{
+		0: "AdditionalBW_None",
+		1: "AdditionalBW_NA",
+		2: "AdditionalBW_BestEffort",
+		3: "AdditionalBW_Auto",
+	}
+	AdditionalBW_value = map[string]int32{
+		"AdditionalBW_None":       0,
+		"AdditionalBW_NA":         1,
+		"AdditionalBW_BestEffort": 2,
+		"AdditionalBW_Auto":       3,
+	}
+)
 
-var AdditionalBW_value = map[string]int32{
-	"AdditionalBW_None":       0,
-	"AdditionalBW_NA":         1,
-	"AdditionalBW_BestEffort": 2,
-	"AdditionalBW_Auto":       3,
+func (x AdditionalBW) Enum() *AdditionalBW {
+	p := new(AdditionalBW)
+	*p = x
+	return p
 }
 
 func (x AdditionalBW) String() string {
-	return proto.EnumName(AdditionalBW_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (AdditionalBW) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_tech_profile_proto_enumTypes[2].Descriptor()
+}
+
+func (AdditionalBW) Type() protoreflect.EnumType {
+	return &file_voltha_protos_tech_profile_proto_enumTypes[2]
+}
+
+func (x AdditionalBW) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use AdditionalBW.Descriptor instead.
 func (AdditionalBW) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{2}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{2}
 }
 
 type DiscardPolicy int32
@@ -117,26 +195,47 @@
 	DiscardPolicy_WRed      DiscardPolicy = 3
 )
 
-var DiscardPolicy_name = map[int32]string{
-	0: "TailDrop",
-	1: "WTailDrop",
-	2: "Red",
-	3: "WRed",
-}
+// Enum value maps for DiscardPolicy.
+var (
+	DiscardPolicy_name = map[int32]string{
+		0: "TailDrop",
+		1: "WTailDrop",
+		2: "Red",
+		3: "WRed",
+	}
+	DiscardPolicy_value = map[string]int32{
+		"TailDrop":  0,
+		"WTailDrop": 1,
+		"Red":       2,
+		"WRed":      3,
+	}
+)
 
-var DiscardPolicy_value = map[string]int32{
-	"TailDrop":  0,
-	"WTailDrop": 1,
-	"Red":       2,
-	"WRed":      3,
+func (x DiscardPolicy) Enum() *DiscardPolicy {
+	p := new(DiscardPolicy)
+	*p = x
+	return p
 }
 
 func (x DiscardPolicy) String() string {
-	return proto.EnumName(DiscardPolicy_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (DiscardPolicy) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_tech_profile_proto_enumTypes[3].Descriptor()
+}
+
+func (DiscardPolicy) Type() protoreflect.EnumType {
+	return &file_voltha_protos_tech_profile_proto_enumTypes[3]
+}
+
+func (x DiscardPolicy) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use DiscardPolicy.Descriptor instead.
 func (DiscardPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{3}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{3}
 }
 
 type InferredAdditionBWIndication int32
@@ -147,511 +246,607 @@
 	InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort InferredAdditionBWIndication = 2
 )
 
-var InferredAdditionBWIndication_name = map[int32]string{
-	0: "InferredAdditionBWIndication_None",
-	1: "InferredAdditionBWIndication_Assured",
-	2: "InferredAdditionBWIndication_BestEffort",
-}
+// Enum value maps for InferredAdditionBWIndication.
+var (
+	InferredAdditionBWIndication_name = map[int32]string{
+		0: "InferredAdditionBWIndication_None",
+		1: "InferredAdditionBWIndication_Assured",
+		2: "InferredAdditionBWIndication_BestEffort",
+	}
+	InferredAdditionBWIndication_value = map[string]int32{
+		"InferredAdditionBWIndication_None":       0,
+		"InferredAdditionBWIndication_Assured":    1,
+		"InferredAdditionBWIndication_BestEffort": 2,
+	}
+)
 
-var InferredAdditionBWIndication_value = map[string]int32{
-	"InferredAdditionBWIndication_None":       0,
-	"InferredAdditionBWIndication_Assured":    1,
-	"InferredAdditionBWIndication_BestEffort": 2,
+func (x InferredAdditionBWIndication) Enum() *InferredAdditionBWIndication {
+	p := new(InferredAdditionBWIndication)
+	*p = x
+	return p
 }
 
 func (x InferredAdditionBWIndication) String() string {
-	return proto.EnumName(InferredAdditionBWIndication_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (InferredAdditionBWIndication) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_tech_profile_proto_enumTypes[4].Descriptor()
+}
+
+func (InferredAdditionBWIndication) Type() protoreflect.EnumType {
+	return &file_voltha_protos_tech_profile_proto_enumTypes[4]
+}
+
+func (x InferredAdditionBWIndication) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use InferredAdditionBWIndication.Descriptor instead.
 func (InferredAdditionBWIndication) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{4}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{4}
 }
 
 type SchedulerConfig struct {
-	Direction            Direction        `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
-	AdditionalBw         AdditionalBW     `protobuf:"varint,2,opt,name=additional_bw,json=additionalBw,proto3,enum=tech_profile.AdditionalBW" json:"additional_bw,omitempty"`
-	Priority             uint32           `protobuf:"fixed32,3,opt,name=priority,proto3" json:"priority,omitempty"`
-	Weight               uint32           `protobuf:"fixed32,4,opt,name=weight,proto3" json:"weight,omitempty"`
-	SchedPolicy          SchedulingPolicy `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Direction     Direction              `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+	AdditionalBw  AdditionalBW           `protobuf:"varint,2,opt,name=additional_bw,json=additionalBw,proto3,enum=tech_profile.AdditionalBW" json:"additional_bw,omitempty"` // Valid on for “direction == Upstream”.
+	Priority      uint32                 `protobuf:"fixed32,3,opt,name=priority,proto3" json:"priority,omitempty"`
+	Weight        uint32                 `protobuf:"fixed32,4,opt,name=weight,proto3" json:"weight,omitempty"`
+	SchedPolicy   SchedulingPolicy       `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SchedulerConfig) Reset()         { *m = SchedulerConfig{} }
-func (m *SchedulerConfig) String() string { return proto.CompactTextString(m) }
-func (*SchedulerConfig) ProtoMessage()    {}
+func (x *SchedulerConfig) Reset() {
+	*x = SchedulerConfig{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SchedulerConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerConfig) ProtoMessage() {}
+
+func (x *SchedulerConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerConfig.ProtoReflect.Descriptor instead.
 func (*SchedulerConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{0}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *SchedulerConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SchedulerConfig.Unmarshal(m, b)
-}
-func (m *SchedulerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SchedulerConfig.Marshal(b, m, deterministic)
-}
-func (m *SchedulerConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SchedulerConfig.Merge(m, src)
-}
-func (m *SchedulerConfig) XXX_Size() int {
-	return xxx_messageInfo_SchedulerConfig.Size(m)
-}
-func (m *SchedulerConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_SchedulerConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SchedulerConfig proto.InternalMessageInfo
-
-func (m *SchedulerConfig) GetDirection() Direction {
-	if m != nil {
-		return m.Direction
+func (x *SchedulerConfig) GetDirection() Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return Direction_UPSTREAM
 }
 
-func (m *SchedulerConfig) GetAdditionalBw() AdditionalBW {
-	if m != nil {
-		return m.AdditionalBw
+func (x *SchedulerConfig) GetAdditionalBw() AdditionalBW {
+	if x != nil {
+		return x.AdditionalBw
 	}
 	return AdditionalBW_AdditionalBW_None
 }
 
-func (m *SchedulerConfig) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
+func (x *SchedulerConfig) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
 	}
 	return 0
 }
 
-func (m *SchedulerConfig) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *SchedulerConfig) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *SchedulerConfig) GetSchedPolicy() SchedulingPolicy {
-	if m != nil {
-		return m.SchedPolicy
+func (x *SchedulerConfig) GetSchedPolicy() SchedulingPolicy {
+	if x != nil {
+		return x.SchedPolicy
 	}
 	return SchedulingPolicy_WRR
 }
 
 type TrafficShapingInfo struct {
-	Cir                  uint32                       `protobuf:"fixed32,1,opt,name=cir,proto3" json:"cir,omitempty"`
-	Cbs                  uint32                       `protobuf:"fixed32,2,opt,name=cbs,proto3" json:"cbs,omitempty"`
-	Pir                  uint32                       `protobuf:"fixed32,3,opt,name=pir,proto3" json:"pir,omitempty"`
-	Pbs                  uint32                       `protobuf:"fixed32,4,opt,name=pbs,proto3" json:"pbs,omitempty"`
-	Gir                  uint32                       `protobuf:"fixed32,5,opt,name=gir,proto3" json:"gir,omitempty"`
-	AddBwInd             InferredAdditionBWIndication `protobuf:"varint,6,opt,name=add_bw_ind,json=addBwInd,proto3,enum=tech_profile.InferredAdditionBWIndication" json:"add_bw_ind,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Cir           uint32                       `protobuf:"fixed32,1,opt,name=cir,proto3" json:"cir,omitempty"`
+	Cbs           uint32                       `protobuf:"fixed32,2,opt,name=cbs,proto3" json:"cbs,omitempty"`
+	Pir           uint32                       `protobuf:"fixed32,3,opt,name=pir,proto3" json:"pir,omitempty"`
+	Pbs           uint32                       `protobuf:"fixed32,4,opt,name=pbs,proto3" json:"pbs,omitempty"`
+	Gir           uint32                       `protobuf:"fixed32,5,opt,name=gir,proto3" json:"gir,omitempty"`                                                                           // only if “direction == Upstream ”
+	AddBwInd      InferredAdditionBWIndication `protobuf:"varint,6,opt,name=add_bw_ind,json=addBwInd,proto3,enum=tech_profile.InferredAdditionBWIndication" json:"add_bw_ind,omitempty"` // only if “direction == Upstream”
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TrafficShapingInfo) Reset()         { *m = TrafficShapingInfo{} }
-func (m *TrafficShapingInfo) String() string { return proto.CompactTextString(m) }
-func (*TrafficShapingInfo) ProtoMessage()    {}
+func (x *TrafficShapingInfo) Reset() {
+	*x = TrafficShapingInfo{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TrafficShapingInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TrafficShapingInfo) ProtoMessage() {}
+
+func (x *TrafficShapingInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TrafficShapingInfo.ProtoReflect.Descriptor instead.
 func (*TrafficShapingInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{1}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *TrafficShapingInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TrafficShapingInfo.Unmarshal(m, b)
-}
-func (m *TrafficShapingInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TrafficShapingInfo.Marshal(b, m, deterministic)
-}
-func (m *TrafficShapingInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TrafficShapingInfo.Merge(m, src)
-}
-func (m *TrafficShapingInfo) XXX_Size() int {
-	return xxx_messageInfo_TrafficShapingInfo.Size(m)
-}
-func (m *TrafficShapingInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_TrafficShapingInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TrafficShapingInfo proto.InternalMessageInfo
-
-func (m *TrafficShapingInfo) GetCir() uint32 {
-	if m != nil {
-		return m.Cir
+func (x *TrafficShapingInfo) GetCir() uint32 {
+	if x != nil {
+		return x.Cir
 	}
 	return 0
 }
 
-func (m *TrafficShapingInfo) GetCbs() uint32 {
-	if m != nil {
-		return m.Cbs
+func (x *TrafficShapingInfo) GetCbs() uint32 {
+	if x != nil {
+		return x.Cbs
 	}
 	return 0
 }
 
-func (m *TrafficShapingInfo) GetPir() uint32 {
-	if m != nil {
-		return m.Pir
+func (x *TrafficShapingInfo) GetPir() uint32 {
+	if x != nil {
+		return x.Pir
 	}
 	return 0
 }
 
-func (m *TrafficShapingInfo) GetPbs() uint32 {
-	if m != nil {
-		return m.Pbs
+func (x *TrafficShapingInfo) GetPbs() uint32 {
+	if x != nil {
+		return x.Pbs
 	}
 	return 0
 }
 
-func (m *TrafficShapingInfo) GetGir() uint32 {
-	if m != nil {
-		return m.Gir
+func (x *TrafficShapingInfo) GetGir() uint32 {
+	if x != nil {
+		return x.Gir
 	}
 	return 0
 }
 
-func (m *TrafficShapingInfo) GetAddBwInd() InferredAdditionBWIndication {
-	if m != nil {
-		return m.AddBwInd
+func (x *TrafficShapingInfo) GetAddBwInd() InferredAdditionBWIndication {
+	if x != nil {
+		return x.AddBwInd
 	}
 	return InferredAdditionBWIndication_InferredAdditionBWIndication_None
 }
 
 type TrafficScheduler struct {
-	Direction            Direction           `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
-	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:"-"`
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	Direction          Direction              `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+	AllocId            uint32                 `protobuf:"fixed32,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"` // valid only if “direction == Upstream ”
+	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"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
-func (m *TrafficScheduler) Reset()         { *m = TrafficScheduler{} }
-func (m *TrafficScheduler) String() string { return proto.CompactTextString(m) }
-func (*TrafficScheduler) ProtoMessage()    {}
+func (x *TrafficScheduler) Reset() {
+	*x = TrafficScheduler{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TrafficScheduler) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TrafficScheduler) ProtoMessage() {}
+
+func (x *TrafficScheduler) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TrafficScheduler.ProtoReflect.Descriptor instead.
 func (*TrafficScheduler) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{2}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *TrafficScheduler) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TrafficScheduler.Unmarshal(m, b)
-}
-func (m *TrafficScheduler) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TrafficScheduler.Marshal(b, m, deterministic)
-}
-func (m *TrafficScheduler) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TrafficScheduler.Merge(m, src)
-}
-func (m *TrafficScheduler) XXX_Size() int {
-	return xxx_messageInfo_TrafficScheduler.Size(m)
-}
-func (m *TrafficScheduler) XXX_DiscardUnknown() {
-	xxx_messageInfo_TrafficScheduler.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TrafficScheduler proto.InternalMessageInfo
-
-func (m *TrafficScheduler) GetDirection() Direction {
-	if m != nil {
-		return m.Direction
+func (x *TrafficScheduler) GetDirection() Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return Direction_UPSTREAM
 }
 
-func (m *TrafficScheduler) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *TrafficScheduler) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *TrafficScheduler) GetScheduler() *SchedulerConfig {
-	if m != nil {
-		return m.Scheduler
+func (x *TrafficScheduler) GetScheduler() *SchedulerConfig {
+	if x != nil {
+		return x.Scheduler
 	}
 	return nil
 }
 
-func (m *TrafficScheduler) GetTrafficShapingInfo() *TrafficShapingInfo {
-	if m != nil {
-		return m.TrafficShapingInfo
+func (x *TrafficScheduler) GetTrafficShapingInfo() *TrafficShapingInfo {
+	if x != nil {
+		return x.TrafficShapingInfo
 	}
 	return nil
 }
 
-func (m *TrafficScheduler) GetTechProfileId() uint32 {
-	if m != nil {
-		return m.TechProfileId
+func (x *TrafficScheduler) GetTechProfileId() uint32 {
+	if x != nil {
+		return x.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"`
-	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"`
-	TrafficScheds        []*TrafficScheduler `protobuf:"bytes,3,rep,name=traffic_scheds,json=trafficScheds,proto3" json:"traffic_scheds,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	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"`
+	TrafficScheds []*TrafficScheduler    `protobuf:"bytes,3,rep,name=traffic_scheds,json=trafficScheds,proto3" json:"traffic_scheds,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TrafficSchedulers) Reset()         { *m = TrafficSchedulers{} }
-func (m *TrafficSchedulers) String() string { return proto.CompactTextString(m) }
-func (*TrafficSchedulers) ProtoMessage()    {}
+func (x *TrafficSchedulers) Reset() {
+	*x = TrafficSchedulers{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TrafficSchedulers) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TrafficSchedulers) ProtoMessage() {}
+
+func (x *TrafficSchedulers) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TrafficSchedulers.ProtoReflect.Descriptor instead.
 func (*TrafficSchedulers) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{3}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *TrafficSchedulers) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TrafficSchedulers.Unmarshal(m, b)
-}
-func (m *TrafficSchedulers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TrafficSchedulers.Marshal(b, m, deterministic)
-}
-func (m *TrafficSchedulers) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TrafficSchedulers.Merge(m, src)
-}
-func (m *TrafficSchedulers) XXX_Size() int {
-	return xxx_messageInfo_TrafficSchedulers.Size(m)
-}
-func (m *TrafficSchedulers) XXX_DiscardUnknown() {
-	xxx_messageInfo_TrafficSchedulers.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TrafficSchedulers proto.InternalMessageInfo
-
-func (m *TrafficSchedulers) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *TrafficSchedulers) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *TrafficSchedulers) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *TrafficSchedulers) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *TrafficSchedulers) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *TrafficSchedulers) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func (m *TrafficSchedulers) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *TrafficSchedulers) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *TrafficSchedulers) GetTrafficScheds() []*TrafficScheduler {
-	if m != nil {
-		return m.TrafficScheds
+func (x *TrafficSchedulers) GetTrafficScheds() []*TrafficScheduler {
+	if x != nil {
+		return x.TrafficScheds
 	}
 	return nil
 }
 
 type TailDropDiscardConfig struct {
-	QueueSize            uint32   `protobuf:"fixed32,1,opt,name=queue_size,json=queueSize,proto3" json:"queue_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	QueueSize     uint32                 `protobuf:"fixed32,1,opt,name=queue_size,json=queueSize,proto3" json:"queue_size,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TailDropDiscardConfig) Reset()         { *m = TailDropDiscardConfig{} }
-func (m *TailDropDiscardConfig) String() string { return proto.CompactTextString(m) }
-func (*TailDropDiscardConfig) ProtoMessage()    {}
+func (x *TailDropDiscardConfig) Reset() {
+	*x = TailDropDiscardConfig{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TailDropDiscardConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TailDropDiscardConfig) ProtoMessage() {}
+
+func (x *TailDropDiscardConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TailDropDiscardConfig.ProtoReflect.Descriptor instead.
 func (*TailDropDiscardConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{4}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *TailDropDiscardConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TailDropDiscardConfig.Unmarshal(m, b)
-}
-func (m *TailDropDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TailDropDiscardConfig.Marshal(b, m, deterministic)
-}
-func (m *TailDropDiscardConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TailDropDiscardConfig.Merge(m, src)
-}
-func (m *TailDropDiscardConfig) XXX_Size() int {
-	return xxx_messageInfo_TailDropDiscardConfig.Size(m)
-}
-func (m *TailDropDiscardConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_TailDropDiscardConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TailDropDiscardConfig proto.InternalMessageInfo
-
-func (m *TailDropDiscardConfig) GetQueueSize() uint32 {
-	if m != nil {
-		return m.QueueSize
+func (x *TailDropDiscardConfig) GetQueueSize() uint32 {
+	if x != nil {
+		return x.QueueSize
 	}
 	return 0
 }
 
 type RedDiscardConfig struct {
-	MinThreshold         uint32   `protobuf:"fixed32,1,opt,name=min_threshold,json=minThreshold,proto3" json:"min_threshold,omitempty"`
-	MaxThreshold         uint32   `protobuf:"fixed32,2,opt,name=max_threshold,json=maxThreshold,proto3" json:"max_threshold,omitempty"`
-	MaxProbability       uint32   `protobuf:"fixed32,3,opt,name=max_probability,json=maxProbability,proto3" json:"max_probability,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	MinThreshold   uint32                 `protobuf:"fixed32,1,opt,name=min_threshold,json=minThreshold,proto3" json:"min_threshold,omitempty"`
+	MaxThreshold   uint32                 `protobuf:"fixed32,2,opt,name=max_threshold,json=maxThreshold,proto3" json:"max_threshold,omitempty"`
+	MaxProbability uint32                 `protobuf:"fixed32,3,opt,name=max_probability,json=maxProbability,proto3" json:"max_probability,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *RedDiscardConfig) Reset()         { *m = RedDiscardConfig{} }
-func (m *RedDiscardConfig) String() string { return proto.CompactTextString(m) }
-func (*RedDiscardConfig) ProtoMessage()    {}
+func (x *RedDiscardConfig) Reset() {
+	*x = RedDiscardConfig{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RedDiscardConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RedDiscardConfig) ProtoMessage() {}
+
+func (x *RedDiscardConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RedDiscardConfig.ProtoReflect.Descriptor instead.
 func (*RedDiscardConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{5}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *RedDiscardConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RedDiscardConfig.Unmarshal(m, b)
-}
-func (m *RedDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RedDiscardConfig.Marshal(b, m, deterministic)
-}
-func (m *RedDiscardConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RedDiscardConfig.Merge(m, src)
-}
-func (m *RedDiscardConfig) XXX_Size() int {
-	return xxx_messageInfo_RedDiscardConfig.Size(m)
-}
-func (m *RedDiscardConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_RedDiscardConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RedDiscardConfig proto.InternalMessageInfo
-
-func (m *RedDiscardConfig) GetMinThreshold() uint32 {
-	if m != nil {
-		return m.MinThreshold
+func (x *RedDiscardConfig) GetMinThreshold() uint32 {
+	if x != nil {
+		return x.MinThreshold
 	}
 	return 0
 }
 
-func (m *RedDiscardConfig) GetMaxThreshold() uint32 {
-	if m != nil {
-		return m.MaxThreshold
+func (x *RedDiscardConfig) GetMaxThreshold() uint32 {
+	if x != nil {
+		return x.MaxThreshold
 	}
 	return 0
 }
 
-func (m *RedDiscardConfig) GetMaxProbability() uint32 {
-	if m != nil {
-		return m.MaxProbability
+func (x *RedDiscardConfig) GetMaxProbability() uint32 {
+	if x != nil {
+		return x.MaxProbability
 	}
 	return 0
 }
 
 type WRedDiscardConfig struct {
-	Green                *RedDiscardConfig `protobuf:"bytes,1,opt,name=green,proto3" json:"green,omitempty"`
-	Yellow               *RedDiscardConfig `protobuf:"bytes,2,opt,name=yellow,proto3" json:"yellow,omitempty"`
-	Red                  *RedDiscardConfig `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Green         *RedDiscardConfig      `protobuf:"bytes,1,opt,name=green,proto3" json:"green,omitempty"`
+	Yellow        *RedDiscardConfig      `protobuf:"bytes,2,opt,name=yellow,proto3" json:"yellow,omitempty"`
+	Red           *RedDiscardConfig      `protobuf:"bytes,3,opt,name=red,proto3" json:"red,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *WRedDiscardConfig) Reset()         { *m = WRedDiscardConfig{} }
-func (m *WRedDiscardConfig) String() string { return proto.CompactTextString(m) }
-func (*WRedDiscardConfig) ProtoMessage()    {}
+func (x *WRedDiscardConfig) Reset() {
+	*x = WRedDiscardConfig{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *WRedDiscardConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WRedDiscardConfig) ProtoMessage() {}
+
+func (x *WRedDiscardConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use WRedDiscardConfig.ProtoReflect.Descriptor instead.
 func (*WRedDiscardConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{6}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *WRedDiscardConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_WRedDiscardConfig.Unmarshal(m, b)
-}
-func (m *WRedDiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_WRedDiscardConfig.Marshal(b, m, deterministic)
-}
-func (m *WRedDiscardConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WRedDiscardConfig.Merge(m, src)
-}
-func (m *WRedDiscardConfig) XXX_Size() int {
-	return xxx_messageInfo_WRedDiscardConfig.Size(m)
-}
-func (m *WRedDiscardConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_WRedDiscardConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WRedDiscardConfig proto.InternalMessageInfo
-
-func (m *WRedDiscardConfig) GetGreen() *RedDiscardConfig {
-	if m != nil {
-		return m.Green
+func (x *WRedDiscardConfig) GetGreen() *RedDiscardConfig {
+	if x != nil {
+		return x.Green
 	}
 	return nil
 }
 
-func (m *WRedDiscardConfig) GetYellow() *RedDiscardConfig {
-	if m != nil {
-		return m.Yellow
+func (x *WRedDiscardConfig) GetYellow() *RedDiscardConfig {
+	if x != nil {
+		return x.Yellow
 	}
 	return nil
 }
 
-func (m *WRedDiscardConfig) GetRed() *RedDiscardConfig {
-	if m != nil {
-		return m.Red
+func (x *WRedDiscardConfig) GetRed() *RedDiscardConfig {
+	if x != nil {
+		return x.Red
 	}
 	return nil
 }
 
 type DiscardConfig struct {
-	DiscardPolicy DiscardPolicy `protobuf:"varint,1,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DiscardPolicy DiscardPolicy          `protobuf:"varint,1,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
 	// Types that are valid to be assigned to DiscardConfig:
+	//
 	//	*DiscardConfig_TailDropDiscardConfig
 	//	*DiscardConfig_RedDiscardConfig
 	//	*DiscardConfig_WredDiscardConfig
-	DiscardConfig        isDiscardConfig_DiscardConfig `protobuf_oneof:"discard_config"`
-	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
-	XXX_unrecognized     []byte                        `json:"-"`
-	XXX_sizecache        int32                         `json:"-"`
+	DiscardConfig isDiscardConfig_DiscardConfig `protobuf_oneof:"discard_config"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DiscardConfig) Reset()         { *m = DiscardConfig{} }
-func (m *DiscardConfig) String() string { return proto.CompactTextString(m) }
-func (*DiscardConfig) ProtoMessage()    {}
+func (x *DiscardConfig) Reset() {
+	*x = DiscardConfig{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DiscardConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DiscardConfig) ProtoMessage() {}
+
+func (x *DiscardConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DiscardConfig.ProtoReflect.Descriptor instead.
 func (*DiscardConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{7}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *DiscardConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DiscardConfig.Unmarshal(m, b)
-}
-func (m *DiscardConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DiscardConfig.Marshal(b, m, deterministic)
-}
-func (m *DiscardConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DiscardConfig.Merge(m, src)
-}
-func (m *DiscardConfig) XXX_Size() int {
-	return xxx_messageInfo_DiscardConfig.Size(m)
-}
-func (m *DiscardConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_DiscardConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DiscardConfig proto.InternalMessageInfo
-
-func (m *DiscardConfig) GetDiscardPolicy() DiscardPolicy {
-	if m != nil {
-		return m.DiscardPolicy
+func (x *DiscardConfig) GetDiscardPolicy() DiscardPolicy {
+	if x != nil {
+		return x.DiscardPolicy
 	}
 	return DiscardPolicy_TailDrop
 }
 
+func (x *DiscardConfig) GetDiscardConfig() isDiscardConfig_DiscardConfig {
+	if x != nil {
+		return x.DiscardConfig
+	}
+	return nil
+}
+
+func (x *DiscardConfig) GetTailDropDiscardConfig() *TailDropDiscardConfig {
+	if x != nil {
+		if x, ok := x.DiscardConfig.(*DiscardConfig_TailDropDiscardConfig); ok {
+			return x.TailDropDiscardConfig
+		}
+	}
+	return nil
+}
+
+func (x *DiscardConfig) GetRedDiscardConfig() *RedDiscardConfig {
+	if x != nil {
+		if x, ok := x.DiscardConfig.(*DiscardConfig_RedDiscardConfig); ok {
+			return x.RedDiscardConfig
+		}
+	}
+	return nil
+}
+
+func (x *DiscardConfig) GetWredDiscardConfig() *WRedDiscardConfig {
+	if x != nil {
+		if x, ok := x.DiscardConfig.(*DiscardConfig_WredDiscardConfig); ok {
+			return x.WredDiscardConfig
+		}
+	}
+	return nil
+}
+
 type isDiscardConfig_DiscardConfig interface {
 	isDiscardConfig_DiscardConfig()
 }
@@ -674,870 +869,874 @@
 
 func (*DiscardConfig_WredDiscardConfig) isDiscardConfig_DiscardConfig() {}
 
-func (m *DiscardConfig) GetDiscardConfig() isDiscardConfig_DiscardConfig {
-	if m != nil {
-		return m.DiscardConfig
-	}
-	return nil
-}
-
-func (m *DiscardConfig) GetTailDropDiscardConfig() *TailDropDiscardConfig {
-	if x, ok := m.GetDiscardConfig().(*DiscardConfig_TailDropDiscardConfig); ok {
-		return x.TailDropDiscardConfig
-	}
-	return nil
-}
-
-func (m *DiscardConfig) GetRedDiscardConfig() *RedDiscardConfig {
-	if x, ok := m.GetDiscardConfig().(*DiscardConfig_RedDiscardConfig); ok {
-		return x.RedDiscardConfig
-	}
-	return nil
-}
-
-func (m *DiscardConfig) GetWredDiscardConfig() *WRedDiscardConfig {
-	if x, ok := m.GetDiscardConfig().(*DiscardConfig_WredDiscardConfig); ok {
-		return x.WredDiscardConfig
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*DiscardConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*DiscardConfig_TailDropDiscardConfig)(nil),
-		(*DiscardConfig_RedDiscardConfig)(nil),
-		(*DiscardConfig_WredDiscardConfig)(nil),
-	}
-}
-
 type TrafficQueue struct {
-	Direction            Direction        `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
-	GemportId            uint32           `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	PbitMap              string           `protobuf:"bytes,3,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
-	AesEncryption        bool             `protobuf:"varint,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
-	SchedPolicy          SchedulingPolicy `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"`
-	Priority             uint32           `protobuf:"fixed32,6,opt,name=priority,proto3" json:"priority,omitempty"`
-	Weight               uint32           `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"`
-	DiscardPolicy        DiscardPolicy    `protobuf:"varint,8,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
-	DiscardConfig        *DiscardConfig   `protobuf:"bytes,9,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Direction     Direction              `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+	GemportId     uint32                 `protobuf:"fixed32,2,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+	PbitMap       string                 `protobuf:"bytes,3,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
+	AesEncryption bool                   `protobuf:"varint,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
+	SchedPolicy   SchedulingPolicy       `protobuf:"varint,5,opt,name=sched_policy,json=schedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"sched_policy,omitempty"` // This can be SP or WRR
+	Priority      uint32                 `protobuf:"fixed32,6,opt,name=priority,proto3" json:"priority,omitempty"`
+	Weight        uint32                 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"`
+	DiscardPolicy DiscardPolicy          `protobuf:"varint,8,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+	DiscardConfig *DiscardConfig         `protobuf:"bytes,9,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TrafficQueue) Reset()         { *m = TrafficQueue{} }
-func (m *TrafficQueue) String() string { return proto.CompactTextString(m) }
-func (*TrafficQueue) ProtoMessage()    {}
+func (x *TrafficQueue) Reset() {
+	*x = TrafficQueue{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TrafficQueue) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TrafficQueue) ProtoMessage() {}
+
+func (x *TrafficQueue) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TrafficQueue.ProtoReflect.Descriptor instead.
 func (*TrafficQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{8}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *TrafficQueue) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TrafficQueue.Unmarshal(m, b)
-}
-func (m *TrafficQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TrafficQueue.Marshal(b, m, deterministic)
-}
-func (m *TrafficQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TrafficQueue.Merge(m, src)
-}
-func (m *TrafficQueue) XXX_Size() int {
-	return xxx_messageInfo_TrafficQueue.Size(m)
-}
-func (m *TrafficQueue) XXX_DiscardUnknown() {
-	xxx_messageInfo_TrafficQueue.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TrafficQueue proto.InternalMessageInfo
-
-func (m *TrafficQueue) GetDirection() Direction {
-	if m != nil {
-		return m.Direction
+func (x *TrafficQueue) GetDirection() Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return Direction_UPSTREAM
 }
 
-func (m *TrafficQueue) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
+func (x *TrafficQueue) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
 	}
 	return 0
 }
 
-func (m *TrafficQueue) GetPbitMap() string {
-	if m != nil {
-		return m.PbitMap
+func (x *TrafficQueue) GetPbitMap() string {
+	if x != nil {
+		return x.PbitMap
 	}
 	return ""
 }
 
-func (m *TrafficQueue) GetAesEncryption() bool {
-	if m != nil {
-		return m.AesEncryption
+func (x *TrafficQueue) GetAesEncryption() bool {
+	if x != nil {
+		return x.AesEncryption
 	}
 	return false
 }
 
-func (m *TrafficQueue) GetSchedPolicy() SchedulingPolicy {
-	if m != nil {
-		return m.SchedPolicy
+func (x *TrafficQueue) GetSchedPolicy() SchedulingPolicy {
+	if x != nil {
+		return x.SchedPolicy
 	}
 	return SchedulingPolicy_WRR
 }
 
-func (m *TrafficQueue) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
+func (x *TrafficQueue) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
 	}
 	return 0
 }
 
-func (m *TrafficQueue) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *TrafficQueue) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *TrafficQueue) GetDiscardPolicy() DiscardPolicy {
-	if m != nil {
-		return m.DiscardPolicy
+func (x *TrafficQueue) GetDiscardPolicy() DiscardPolicy {
+	if x != nil {
+		return x.DiscardPolicy
 	}
 	return DiscardPolicy_TailDrop
 }
 
-func (m *TrafficQueue) GetDiscardConfig() *DiscardConfig {
-	if m != nil {
-		return m.DiscardConfig
+func (x *TrafficQueue) GetDiscardConfig() *DiscardConfig {
+	if x != nil {
+		return x.DiscardConfig
 	}
 	return nil
 }
 
 type TrafficQueues 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"`
-	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"`
-	NetworkIntfId        uint32          `protobuf:"fixed32,8,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	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"`
+	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"`
+	NetworkIntfId uint32                 `protobuf:"fixed32,8,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TrafficQueues) Reset()         { *m = TrafficQueues{} }
-func (m *TrafficQueues) String() string { return proto.CompactTextString(m) }
-func (*TrafficQueues) ProtoMessage()    {}
+func (x *TrafficQueues) Reset() {
+	*x = TrafficQueues{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TrafficQueues) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TrafficQueues) ProtoMessage() {}
+
+func (x *TrafficQueues) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TrafficQueues.ProtoReflect.Descriptor instead.
 func (*TrafficQueues) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{9}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *TrafficQueues) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TrafficQueues.Unmarshal(m, b)
-}
-func (m *TrafficQueues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TrafficQueues.Marshal(b, m, deterministic)
-}
-func (m *TrafficQueues) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TrafficQueues.Merge(m, src)
-}
-func (m *TrafficQueues) XXX_Size() int {
-	return xxx_messageInfo_TrafficQueues.Size(m)
-}
-func (m *TrafficQueues) XXX_DiscardUnknown() {
-	xxx_messageInfo_TrafficQueues.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TrafficQueues proto.InternalMessageInfo
-
-func (m *TrafficQueues) GetIntfId() uint32 {
-	if m != nil {
-		return m.IntfId
+func (x *TrafficQueues) GetIntfId() uint32 {
+	if x != nil {
+		return x.IntfId
 	}
 	return 0
 }
 
-func (m *TrafficQueues) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
+func (x *TrafficQueues) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
 	}
 	return 0
 }
 
-func (m *TrafficQueues) GetUniId() uint32 {
-	if m != nil {
-		return m.UniId
+func (x *TrafficQueues) GetUniId() uint32 {
+	if x != nil {
+		return x.UniId
 	}
 	return 0
 }
 
-func (m *TrafficQueues) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *TrafficQueues) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *TrafficQueues) GetTrafficQueues() []*TrafficQueue {
-	if m != nil {
-		return m.TrafficQueues
+func (x *TrafficQueues) GetTrafficQueues() []*TrafficQueue {
+	if x != nil {
+		return x.TrafficQueues
 	}
 	return nil
 }
 
-func (m *TrafficQueues) GetTechProfileId() uint32 {
-	if m != nil {
-		return m.TechProfileId
+func (x *TrafficQueues) GetTechProfileId() uint32 {
+	if x != nil {
+		return x.TechProfileId
 	}
 	return 0
 }
 
-func (m *TrafficQueues) GetNetworkIntfId() uint32 {
-	if m != nil {
-		return m.NetworkIntfId
+func (x *TrafficQueues) GetNetworkIntfId() uint32 {
+	if x != nil {
+		return x.NetworkIntfId
 	}
 	return 0
 }
 
 type InstanceControl struct {
-	Onu                  string   `protobuf:"bytes,1,opt,name=onu,proto3" json:"onu,omitempty"`
-	Uni                  string   `protobuf:"bytes,2,opt,name=uni,proto3" json:"uni,omitempty"`
-	MaxGemPayloadSize    string   `protobuf:"bytes,3,opt,name=max_gem_payload_size,json=maxGemPayloadSize,proto3" json:"max_gem_payload_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	Onu               string                 `protobuf:"bytes,1,opt,name=onu,proto3" json:"onu,omitempty"`
+	Uni               string                 `protobuf:"bytes,2,opt,name=uni,proto3" json:"uni,omitempty"`
+	MaxGemPayloadSize string                 `protobuf:"bytes,3,opt,name=max_gem_payload_size,json=maxGemPayloadSize,proto3" json:"max_gem_payload_size,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *InstanceControl) Reset()         { *m = InstanceControl{} }
-func (m *InstanceControl) String() string { return proto.CompactTextString(m) }
-func (*InstanceControl) ProtoMessage()    {}
+func (x *InstanceControl) Reset() {
+	*x = InstanceControl{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *InstanceControl) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InstanceControl) ProtoMessage() {}
+
+func (x *InstanceControl) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InstanceControl.ProtoReflect.Descriptor instead.
 func (*InstanceControl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{10}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *InstanceControl) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InstanceControl.Unmarshal(m, b)
-}
-func (m *InstanceControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InstanceControl.Marshal(b, m, deterministic)
-}
-func (m *InstanceControl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InstanceControl.Merge(m, src)
-}
-func (m *InstanceControl) XXX_Size() int {
-	return xxx_messageInfo_InstanceControl.Size(m)
-}
-func (m *InstanceControl) XXX_DiscardUnknown() {
-	xxx_messageInfo_InstanceControl.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InstanceControl proto.InternalMessageInfo
-
-func (m *InstanceControl) GetOnu() string {
-	if m != nil {
-		return m.Onu
+func (x *InstanceControl) GetOnu() string {
+	if x != nil {
+		return x.Onu
 	}
 	return ""
 }
 
-func (m *InstanceControl) GetUni() string {
-	if m != nil {
-		return m.Uni
+func (x *InstanceControl) GetUni() string {
+	if x != nil {
+		return x.Uni
 	}
 	return ""
 }
 
-func (m *InstanceControl) GetMaxGemPayloadSize() string {
-	if m != nil {
-		return m.MaxGemPayloadSize
+func (x *InstanceControl) GetMaxGemPayloadSize() string {
+	if x != nil {
+		return x.MaxGemPayloadSize
 	}
 	return ""
 }
 
 type QThresholds struct {
-	QThreshold1          uint32   `protobuf:"varint,1,opt,name=q_threshold1,json=qThreshold1,proto3" json:"q_threshold1,omitempty"`
-	QThreshold2          uint32   `protobuf:"varint,2,opt,name=q_threshold2,json=qThreshold2,proto3" json:"q_threshold2,omitempty"`
-	QThreshold3          uint32   `protobuf:"varint,3,opt,name=q_threshold3,json=qThreshold3,proto3" json:"q_threshold3,omitempty"`
-	QThreshold4          uint32   `protobuf:"varint,4,opt,name=q_threshold4,json=qThreshold4,proto3" json:"q_threshold4,omitempty"`
-	QThreshold5          uint32   `protobuf:"varint,5,opt,name=q_threshold5,json=qThreshold5,proto3" json:"q_threshold5,omitempty"`
-	QThreshold6          uint32   `protobuf:"varint,6,opt,name=q_threshold6,json=qThreshold6,proto3" json:"q_threshold6,omitempty"`
-	QThreshold7          uint32   `protobuf:"varint,7,opt,name=q_threshold7,json=qThreshold7,proto3" json:"q_threshold7,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	QThreshold1   uint32                 `protobuf:"varint,1,opt,name=q_threshold1,json=qThreshold1,proto3" json:"q_threshold1,omitempty"`
+	QThreshold2   uint32                 `protobuf:"varint,2,opt,name=q_threshold2,json=qThreshold2,proto3" json:"q_threshold2,omitempty"`
+	QThreshold3   uint32                 `protobuf:"varint,3,opt,name=q_threshold3,json=qThreshold3,proto3" json:"q_threshold3,omitempty"`
+	QThreshold4   uint32                 `protobuf:"varint,4,opt,name=q_threshold4,json=qThreshold4,proto3" json:"q_threshold4,omitempty"`
+	QThreshold5   uint32                 `protobuf:"varint,5,opt,name=q_threshold5,json=qThreshold5,proto3" json:"q_threshold5,omitempty"`
+	QThreshold6   uint32                 `protobuf:"varint,6,opt,name=q_threshold6,json=qThreshold6,proto3" json:"q_threshold6,omitempty"`
+	QThreshold7   uint32                 `protobuf:"varint,7,opt,name=q_threshold7,json=qThreshold7,proto3" json:"q_threshold7,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *QThresholds) Reset()         { *m = QThresholds{} }
-func (m *QThresholds) String() string { return proto.CompactTextString(m) }
-func (*QThresholds) ProtoMessage()    {}
+func (x *QThresholds) Reset() {
+	*x = QThresholds{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *QThresholds) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*QThresholds) ProtoMessage() {}
+
+func (x *QThresholds) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use QThresholds.ProtoReflect.Descriptor instead.
 func (*QThresholds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{11}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *QThresholds) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_QThresholds.Unmarshal(m, b)
-}
-func (m *QThresholds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_QThresholds.Marshal(b, m, deterministic)
-}
-func (m *QThresholds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_QThresholds.Merge(m, src)
-}
-func (m *QThresholds) XXX_Size() int {
-	return xxx_messageInfo_QThresholds.Size(m)
-}
-func (m *QThresholds) XXX_DiscardUnknown() {
-	xxx_messageInfo_QThresholds.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_QThresholds proto.InternalMessageInfo
-
-func (m *QThresholds) GetQThreshold1() uint32 {
-	if m != nil {
-		return m.QThreshold1
+func (x *QThresholds) GetQThreshold1() uint32 {
+	if x != nil {
+		return x.QThreshold1
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold2() uint32 {
-	if m != nil {
-		return m.QThreshold2
+func (x *QThresholds) GetQThreshold2() uint32 {
+	if x != nil {
+		return x.QThreshold2
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold3() uint32 {
-	if m != nil {
-		return m.QThreshold3
+func (x *QThresholds) GetQThreshold3() uint32 {
+	if x != nil {
+		return x.QThreshold3
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold4() uint32 {
-	if m != nil {
-		return m.QThreshold4
+func (x *QThresholds) GetQThreshold4() uint32 {
+	if x != nil {
+		return x.QThreshold4
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold5() uint32 {
-	if m != nil {
-		return m.QThreshold5
+func (x *QThresholds) GetQThreshold5() uint32 {
+	if x != nil {
+		return x.QThreshold5
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold6() uint32 {
-	if m != nil {
-		return m.QThreshold6
+func (x *QThresholds) GetQThreshold6() uint32 {
+	if x != nil {
+		return x.QThreshold6
 	}
 	return 0
 }
 
-func (m *QThresholds) GetQThreshold7() uint32 {
-	if m != nil {
-		return m.QThreshold7
+func (x *QThresholds) GetQThreshold7() uint32 {
+	if x != nil {
+		return x.QThreshold7
 	}
 	return 0
 }
 
 type GemPortAttributes struct {
-	GemportId                uint32            `protobuf:"fixed32,1,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	MaxQSize                 string            `protobuf:"bytes,2,opt,name=max_q_size,json=maxQSize,proto3" json:"max_q_size,omitempty"`
-	PbitMap                  string            `protobuf:"bytes,3,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
-	AesEncryption            string            `protobuf:"bytes,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
-	SchedulingPolicy         SchedulingPolicy  `protobuf:"varint,5,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"scheduling_policy,omitempty"`
-	PriorityQ                uint32            `protobuf:"fixed32,6,opt,name=priority_q,json=priorityQ,proto3" json:"priority_q,omitempty"`
-	Weight                   uint32            `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"`
-	DiscardPolicy            DiscardPolicy     `protobuf:"varint,8,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
-	DiscardConfig            *RedDiscardConfig `protobuf:"bytes,9,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`
-	DiscardConfigV2          *DiscardConfig    `protobuf:"bytes,14,opt,name=discard_config_v2,json=discardConfigV2,proto3" json:"discard_config_v2,omitempty"`
-	IsMulticast              string            `protobuf:"bytes,10,opt,name=is_multicast,json=isMulticast,proto3" json:"is_multicast,omitempty"`
-	MulticastGemId           uint32            `protobuf:"fixed32,11,opt,name=multicast_gem_id,json=multicastGemId,proto3" json:"multicast_gem_id,omitempty"`
-	DynamicAccessControlList string            `protobuf:"bytes,12,opt,name=dynamic_access_control_list,json=dynamicAccessControlList,proto3" json:"dynamic_access_control_list,omitempty"`
-	StaticAccessControlList  string            `protobuf:"bytes,13,opt,name=static_access_control_list,json=staticAccessControlList,proto3" json:"static_access_control_list,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}          `json:"-"`
-	XXX_unrecognized         []byte            `json:"-"`
-	XXX_sizecache            int32             `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	GemportId                uint32                 `protobuf:"fixed32,1,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"` // valid only when referenced in the tech profile instance
+	MaxQSize                 string                 `protobuf:"bytes,2,opt,name=max_q_size,json=maxQSize,proto3" json:"max_q_size,omitempty"`
+	PbitMap                  string                 `protobuf:"bytes,3,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
+	AesEncryption            string                 `protobuf:"bytes,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
+	SchedulingPolicy         SchedulingPolicy       `protobuf:"varint,5,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"scheduling_policy,omitempty"` // This can be SP or WRR
+	PriorityQ                uint32                 `protobuf:"fixed32,6,opt,name=priority_q,json=priorityQ,proto3" json:"priority_q,omitempty"`
+	Weight                   uint32                 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"`
+	DiscardPolicy            DiscardPolicy          `protobuf:"varint,8,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+	DiscardConfig            *RedDiscardConfig      `protobuf:"bytes,9,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`          // used with version 1 of tech profile
+	DiscardConfigV2          *DiscardConfig         `protobuf:"bytes,14,opt,name=discard_config_v2,json=discardConfigV2,proto3" json:"discard_config_v2,omitempty"` // used with version 2 of tech profile
+	IsMulticast              string                 `protobuf:"bytes,10,opt,name=is_multicast,json=isMulticast,proto3" json:"is_multicast,omitempty"`
+	MulticastGemId           uint32                 `protobuf:"fixed32,11,opt,name=multicast_gem_id,json=multicastGemId,proto3" json:"multicast_gem_id,omitempty"`
+	DynamicAccessControlList string                 `protobuf:"bytes,12,opt,name=dynamic_access_control_list,json=dynamicAccessControlList,proto3" json:"dynamic_access_control_list,omitempty"`
+	StaticAccessControlList  string                 `protobuf:"bytes,13,opt,name=static_access_control_list,json=staticAccessControlList,proto3" json:"static_access_control_list,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *GemPortAttributes) Reset()         { *m = GemPortAttributes{} }
-func (m *GemPortAttributes) String() string { return proto.CompactTextString(m) }
-func (*GemPortAttributes) ProtoMessage()    {}
+func (x *GemPortAttributes) Reset() {
+	*x = GemPortAttributes{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *GemPortAttributes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GemPortAttributes) ProtoMessage() {}
+
+func (x *GemPortAttributes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GemPortAttributes.ProtoReflect.Descriptor instead.
 func (*GemPortAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{12}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *GemPortAttributes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GemPortAttributes.Unmarshal(m, b)
-}
-func (m *GemPortAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GemPortAttributes.Marshal(b, m, deterministic)
-}
-func (m *GemPortAttributes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GemPortAttributes.Merge(m, src)
-}
-func (m *GemPortAttributes) XXX_Size() int {
-	return xxx_messageInfo_GemPortAttributes.Size(m)
-}
-func (m *GemPortAttributes) XXX_DiscardUnknown() {
-	xxx_messageInfo_GemPortAttributes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GemPortAttributes proto.InternalMessageInfo
-
-func (m *GemPortAttributes) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
+func (x *GemPortAttributes) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
 	}
 	return 0
 }
 
-func (m *GemPortAttributes) GetMaxQSize() string {
-	if m != nil {
-		return m.MaxQSize
+func (x *GemPortAttributes) GetMaxQSize() string {
+	if x != nil {
+		return x.MaxQSize
 	}
 	return ""
 }
 
-func (m *GemPortAttributes) GetPbitMap() string {
-	if m != nil {
-		return m.PbitMap
+func (x *GemPortAttributes) GetPbitMap() string {
+	if x != nil {
+		return x.PbitMap
 	}
 	return ""
 }
 
-func (m *GemPortAttributes) GetAesEncryption() string {
-	if m != nil {
-		return m.AesEncryption
+func (x *GemPortAttributes) GetAesEncryption() string {
+	if x != nil {
+		return x.AesEncryption
 	}
 	return ""
 }
 
-func (m *GemPortAttributes) GetSchedulingPolicy() SchedulingPolicy {
-	if m != nil {
-		return m.SchedulingPolicy
+func (x *GemPortAttributes) GetSchedulingPolicy() SchedulingPolicy {
+	if x != nil {
+		return x.SchedulingPolicy
 	}
 	return SchedulingPolicy_WRR
 }
 
-func (m *GemPortAttributes) GetPriorityQ() uint32 {
-	if m != nil {
-		return m.PriorityQ
+func (x *GemPortAttributes) GetPriorityQ() uint32 {
+	if x != nil {
+		return x.PriorityQ
 	}
 	return 0
 }
 
-func (m *GemPortAttributes) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *GemPortAttributes) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *GemPortAttributes) GetDiscardPolicy() DiscardPolicy {
-	if m != nil {
-		return m.DiscardPolicy
+func (x *GemPortAttributes) GetDiscardPolicy() DiscardPolicy {
+	if x != nil {
+		return x.DiscardPolicy
 	}
 	return DiscardPolicy_TailDrop
 }
 
-func (m *GemPortAttributes) GetDiscardConfig() *RedDiscardConfig {
-	if m != nil {
-		return m.DiscardConfig
+func (x *GemPortAttributes) GetDiscardConfig() *RedDiscardConfig {
+	if x != nil {
+		return x.DiscardConfig
 	}
 	return nil
 }
 
-func (m *GemPortAttributes) GetDiscardConfigV2() *DiscardConfig {
-	if m != nil {
-		return m.DiscardConfigV2
+func (x *GemPortAttributes) GetDiscardConfigV2() *DiscardConfig {
+	if x != nil {
+		return x.DiscardConfigV2
 	}
 	return nil
 }
 
-func (m *GemPortAttributes) GetIsMulticast() string {
-	if m != nil {
-		return m.IsMulticast
+func (x *GemPortAttributes) GetIsMulticast() string {
+	if x != nil {
+		return x.IsMulticast
 	}
 	return ""
 }
 
-func (m *GemPortAttributes) GetMulticastGemId() uint32 {
-	if m != nil {
-		return m.MulticastGemId
+func (x *GemPortAttributes) GetMulticastGemId() uint32 {
+	if x != nil {
+		return x.MulticastGemId
 	}
 	return 0
 }
 
-func (m *GemPortAttributes) GetDynamicAccessControlList() string {
-	if m != nil {
-		return m.DynamicAccessControlList
+func (x *GemPortAttributes) GetDynamicAccessControlList() string {
+	if x != nil {
+		return x.DynamicAccessControlList
 	}
 	return ""
 }
 
-func (m *GemPortAttributes) GetStaticAccessControlList() string {
-	if m != nil {
-		return m.StaticAccessControlList
+func (x *GemPortAttributes) GetStaticAccessControlList() string {
+	if x != nil {
+		return x.StaticAccessControlList
 	}
 	return ""
 }
 
 type SchedulerAttributes struct {
-	Direction            Direction        `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
-	AllocId              uint32           `protobuf:"varint,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
-	AdditionalBw         AdditionalBW     `protobuf:"varint,3,opt,name=additional_bw,json=additionalBw,proto3,enum=tech_profile.AdditionalBW" json:"additional_bw,omitempty"`
-	Priority             uint32           `protobuf:"fixed32,4,opt,name=priority,proto3" json:"priority,omitempty"`
-	Weight               uint32           `protobuf:"fixed32,5,opt,name=weight,proto3" json:"weight,omitempty"`
-	QSchedPolicy         SchedulingPolicy `protobuf:"varint,6,opt,name=q_sched_policy,json=qSchedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"q_sched_policy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Direction     Direction              `protobuf:"varint,1,opt,name=direction,proto3,enum=tech_profile.Direction" json:"direction,omitempty"`
+	AllocId       uint32                 `protobuf:"varint,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`                                               //  Valid on for “direction == Upstream” and when referenced in the tech profile instance
+	AdditionalBw  AdditionalBW           `protobuf:"varint,3,opt,name=additional_bw,json=additionalBw,proto3,enum=tech_profile.AdditionalBW" json:"additional_bw,omitempty"` // Valid on for “direction == Upstream”.
+	Priority      uint32                 `protobuf:"fixed32,4,opt,name=priority,proto3" json:"priority,omitempty"`
+	Weight        uint32                 `protobuf:"fixed32,5,opt,name=weight,proto3" json:"weight,omitempty"`
+	QSchedPolicy  SchedulingPolicy       `protobuf:"varint,6,opt,name=q_sched_policy,json=qSchedPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"q_sched_policy,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SchedulerAttributes) Reset()         { *m = SchedulerAttributes{} }
-func (m *SchedulerAttributes) String() string { return proto.CompactTextString(m) }
-func (*SchedulerAttributes) ProtoMessage()    {}
+func (x *SchedulerAttributes) Reset() {
+	*x = SchedulerAttributes{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SchedulerAttributes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SchedulerAttributes) ProtoMessage() {}
+
+func (x *SchedulerAttributes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SchedulerAttributes.ProtoReflect.Descriptor instead.
 func (*SchedulerAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{13}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *SchedulerAttributes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SchedulerAttributes.Unmarshal(m, b)
-}
-func (m *SchedulerAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SchedulerAttributes.Marshal(b, m, deterministic)
-}
-func (m *SchedulerAttributes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SchedulerAttributes.Merge(m, src)
-}
-func (m *SchedulerAttributes) XXX_Size() int {
-	return xxx_messageInfo_SchedulerAttributes.Size(m)
-}
-func (m *SchedulerAttributes) XXX_DiscardUnknown() {
-	xxx_messageInfo_SchedulerAttributes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SchedulerAttributes proto.InternalMessageInfo
-
-func (m *SchedulerAttributes) GetDirection() Direction {
-	if m != nil {
-		return m.Direction
+func (x *SchedulerAttributes) GetDirection() Direction {
+	if x != nil {
+		return x.Direction
 	}
 	return Direction_UPSTREAM
 }
 
-func (m *SchedulerAttributes) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *SchedulerAttributes) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *SchedulerAttributes) GetAdditionalBw() AdditionalBW {
-	if m != nil {
-		return m.AdditionalBw
+func (x *SchedulerAttributes) GetAdditionalBw() AdditionalBW {
+	if x != nil {
+		return x.AdditionalBw
 	}
 	return AdditionalBW_AdditionalBW_None
 }
 
-func (m *SchedulerAttributes) GetPriority() uint32 {
-	if m != nil {
-		return m.Priority
+func (x *SchedulerAttributes) GetPriority() uint32 {
+	if x != nil {
+		return x.Priority
 	}
 	return 0
 }
 
-func (m *SchedulerAttributes) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *SchedulerAttributes) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *SchedulerAttributes) GetQSchedPolicy() SchedulingPolicy {
-	if m != nil {
-		return m.QSchedPolicy
+func (x *SchedulerAttributes) GetQSchedPolicy() SchedulingPolicy {
+	if x != nil {
+		return x.QSchedPolicy
 	}
 	return SchedulingPolicy_WRR
 }
 
 type EPONQueueAttributes struct {
-	MaxQSize                  string            `protobuf:"bytes,1,opt,name=max_q_size,json=maxQSize,proto3" json:"max_q_size,omitempty"`
-	PbitMap                   string            `protobuf:"bytes,2,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
-	GemportId                 uint32            `protobuf:"varint,3,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
-	AesEncryption             string            `protobuf:"bytes,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
-	TrafficType               string            `protobuf:"bytes,5,opt,name=traffic_type,json=trafficType,proto3" json:"traffic_type,omitempty"`
-	UnsolicitedGrantSize      uint32            `protobuf:"varint,6,opt,name=unsolicited_grant_size,json=unsolicitedGrantSize,proto3" json:"unsolicited_grant_size,omitempty"`
-	NominalInterval           uint32            `protobuf:"varint,7,opt,name=nominal_interval,json=nominalInterval,proto3" json:"nominal_interval,omitempty"`
-	ToleratedPollJitter       uint32            `protobuf:"varint,8,opt,name=tolerated_poll_jitter,json=toleratedPollJitter,proto3" json:"tolerated_poll_jitter,omitempty"`
-	RequestTransmissionPolicy uint32            `protobuf:"varint,9,opt,name=request_transmission_policy,json=requestTransmissionPolicy,proto3" json:"request_transmission_policy,omitempty"`
-	NumQSets                  uint32            `protobuf:"varint,10,opt,name=num_q_sets,json=numQSets,proto3" json:"num_q_sets,omitempty"`
-	QThresholds               *QThresholds      `protobuf:"bytes,11,opt,name=q_thresholds,json=qThresholds,proto3" json:"q_thresholds,omitempty"`
-	SchedulingPolicy          SchedulingPolicy  `protobuf:"varint,12,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"scheduling_policy,omitempty"`
-	PriorityQ                 uint32            `protobuf:"varint,13,opt,name=priority_q,json=priorityQ,proto3" json:"priority_q,omitempty"`
-	Weight                    uint32            `protobuf:"varint,14,opt,name=weight,proto3" json:"weight,omitempty"`
-	DiscardPolicy             DiscardPolicy     `protobuf:"varint,15,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
-	DiscardConfig             *RedDiscardConfig `protobuf:"bytes,16,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`
-	DiscardConfigV2           *DiscardConfig    `protobuf:"bytes,17,opt,name=discard_config_v2,json=discardConfigV2,proto3" json:"discard_config_v2,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{}          `json:"-"`
-	XXX_unrecognized          []byte            `json:"-"`
-	XXX_sizecache             int32             `json:"-"`
+	state                     protoimpl.MessageState `protogen:"open.v1"`
+	MaxQSize                  string                 `protobuf:"bytes,1,opt,name=max_q_size,json=maxQSize,proto3" json:"max_q_size,omitempty"`
+	PbitMap                   string                 `protobuf:"bytes,2,opt,name=pbit_map,json=pbitMap,proto3" json:"pbit_map,omitempty"`
+	GemportId                 uint32                 `protobuf:"varint,3,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+	AesEncryption             string                 `protobuf:"bytes,4,opt,name=aes_encryption,json=aesEncryption,proto3" json:"aes_encryption,omitempty"`
+	TrafficType               string                 `protobuf:"bytes,5,opt,name=traffic_type,json=trafficType,proto3" json:"traffic_type,omitempty"`
+	UnsolicitedGrantSize      uint32                 `protobuf:"varint,6,opt,name=unsolicited_grant_size,json=unsolicitedGrantSize,proto3" json:"unsolicited_grant_size,omitempty"`
+	NominalInterval           uint32                 `protobuf:"varint,7,opt,name=nominal_interval,json=nominalInterval,proto3" json:"nominal_interval,omitempty"`
+	ToleratedPollJitter       uint32                 `protobuf:"varint,8,opt,name=tolerated_poll_jitter,json=toleratedPollJitter,proto3" json:"tolerated_poll_jitter,omitempty"`
+	RequestTransmissionPolicy uint32                 `protobuf:"varint,9,opt,name=request_transmission_policy,json=requestTransmissionPolicy,proto3" json:"request_transmission_policy,omitempty"`
+	NumQSets                  uint32                 `protobuf:"varint,10,opt,name=num_q_sets,json=numQSets,proto3" json:"num_q_sets,omitempty"`
+	QThresholds               *QThresholds           `protobuf:"bytes,11,opt,name=q_thresholds,json=qThresholds,proto3" json:"q_thresholds,omitempty"`
+	SchedulingPolicy          SchedulingPolicy       `protobuf:"varint,12,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=tech_profile.SchedulingPolicy" json:"scheduling_policy,omitempty"`
+	PriorityQ                 uint32                 `protobuf:"varint,13,opt,name=priority_q,json=priorityQ,proto3" json:"priority_q,omitempty"`
+	Weight                    uint32                 `protobuf:"varint,14,opt,name=weight,proto3" json:"weight,omitempty"`
+	DiscardPolicy             DiscardPolicy          `protobuf:"varint,15,opt,name=discard_policy,json=discardPolicy,proto3,enum=tech_profile.DiscardPolicy" json:"discard_policy,omitempty"`
+	DiscardConfig             *RedDiscardConfig      `protobuf:"bytes,16,opt,name=discard_config,json=discardConfig,proto3" json:"discard_config,omitempty"`         // used with version 1 of tech profile
+	DiscardConfigV2           *DiscardConfig         `protobuf:"bytes,17,opt,name=discard_config_v2,json=discardConfigV2,proto3" json:"discard_config_v2,omitempty"` // used with version 2 of tech profile
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
 }
 
-func (m *EPONQueueAttributes) Reset()         { *m = EPONQueueAttributes{} }
-func (m *EPONQueueAttributes) String() string { return proto.CompactTextString(m) }
-func (*EPONQueueAttributes) ProtoMessage()    {}
+func (x *EPONQueueAttributes) Reset() {
+	*x = EPONQueueAttributes{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EPONQueueAttributes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EPONQueueAttributes) ProtoMessage() {}
+
+func (x *EPONQueueAttributes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EPONQueueAttributes.ProtoReflect.Descriptor instead.
 func (*EPONQueueAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{14}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *EPONQueueAttributes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EPONQueueAttributes.Unmarshal(m, b)
-}
-func (m *EPONQueueAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EPONQueueAttributes.Marshal(b, m, deterministic)
-}
-func (m *EPONQueueAttributes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EPONQueueAttributes.Merge(m, src)
-}
-func (m *EPONQueueAttributes) XXX_Size() int {
-	return xxx_messageInfo_EPONQueueAttributes.Size(m)
-}
-func (m *EPONQueueAttributes) XXX_DiscardUnknown() {
-	xxx_messageInfo_EPONQueueAttributes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EPONQueueAttributes proto.InternalMessageInfo
-
-func (m *EPONQueueAttributes) GetMaxQSize() string {
-	if m != nil {
-		return m.MaxQSize
+func (x *EPONQueueAttributes) GetMaxQSize() string {
+	if x != nil {
+		return x.MaxQSize
 	}
 	return ""
 }
 
-func (m *EPONQueueAttributes) GetPbitMap() string {
-	if m != nil {
-		return m.PbitMap
+func (x *EPONQueueAttributes) GetPbitMap() string {
+	if x != nil {
+		return x.PbitMap
 	}
 	return ""
 }
 
-func (m *EPONQueueAttributes) GetGemportId() uint32 {
-	if m != nil {
-		return m.GemportId
+func (x *EPONQueueAttributes) GetGemportId() uint32 {
+	if x != nil {
+		return x.GemportId
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetAesEncryption() string {
-	if m != nil {
-		return m.AesEncryption
+func (x *EPONQueueAttributes) GetAesEncryption() string {
+	if x != nil {
+		return x.AesEncryption
 	}
 	return ""
 }
 
-func (m *EPONQueueAttributes) GetTrafficType() string {
-	if m != nil {
-		return m.TrafficType
+func (x *EPONQueueAttributes) GetTrafficType() string {
+	if x != nil {
+		return x.TrafficType
 	}
 	return ""
 }
 
-func (m *EPONQueueAttributes) GetUnsolicitedGrantSize() uint32 {
-	if m != nil {
-		return m.UnsolicitedGrantSize
+func (x *EPONQueueAttributes) GetUnsolicitedGrantSize() uint32 {
+	if x != nil {
+		return x.UnsolicitedGrantSize
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetNominalInterval() uint32 {
-	if m != nil {
-		return m.NominalInterval
+func (x *EPONQueueAttributes) GetNominalInterval() uint32 {
+	if x != nil {
+		return x.NominalInterval
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetToleratedPollJitter() uint32 {
-	if m != nil {
-		return m.ToleratedPollJitter
+func (x *EPONQueueAttributes) GetToleratedPollJitter() uint32 {
+	if x != nil {
+		return x.ToleratedPollJitter
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetRequestTransmissionPolicy() uint32 {
-	if m != nil {
-		return m.RequestTransmissionPolicy
+func (x *EPONQueueAttributes) GetRequestTransmissionPolicy() uint32 {
+	if x != nil {
+		return x.RequestTransmissionPolicy
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetNumQSets() uint32 {
-	if m != nil {
-		return m.NumQSets
+func (x *EPONQueueAttributes) GetNumQSets() uint32 {
+	if x != nil {
+		return x.NumQSets
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetQThresholds() *QThresholds {
-	if m != nil {
-		return m.QThresholds
+func (x *EPONQueueAttributes) GetQThresholds() *QThresholds {
+	if x != nil {
+		return x.QThresholds
 	}
 	return nil
 }
 
-func (m *EPONQueueAttributes) GetSchedulingPolicy() SchedulingPolicy {
-	if m != nil {
-		return m.SchedulingPolicy
+func (x *EPONQueueAttributes) GetSchedulingPolicy() SchedulingPolicy {
+	if x != nil {
+		return x.SchedulingPolicy
 	}
 	return SchedulingPolicy_WRR
 }
 
-func (m *EPONQueueAttributes) GetPriorityQ() uint32 {
-	if m != nil {
-		return m.PriorityQ
+func (x *EPONQueueAttributes) GetPriorityQ() uint32 {
+	if x != nil {
+		return x.PriorityQ
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *EPONQueueAttributes) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *EPONQueueAttributes) GetDiscardPolicy() DiscardPolicy {
-	if m != nil {
-		return m.DiscardPolicy
+func (x *EPONQueueAttributes) GetDiscardPolicy() DiscardPolicy {
+	if x != nil {
+		return x.DiscardPolicy
 	}
 	return DiscardPolicy_TailDrop
 }
 
-func (m *EPONQueueAttributes) GetDiscardConfig() *RedDiscardConfig {
-	if m != nil {
-		return m.DiscardConfig
+func (x *EPONQueueAttributes) GetDiscardConfig() *RedDiscardConfig {
+	if x != nil {
+		return x.DiscardConfig
 	}
 	return nil
 }
 
-func (m *EPONQueueAttributes) GetDiscardConfigV2() *DiscardConfig {
-	if m != nil {
-		return m.DiscardConfigV2
+func (x *EPONQueueAttributes) GetDiscardConfigV2() *DiscardConfig {
+	if x != nil {
+		return x.DiscardConfigV2
 	}
 	return nil
 }
 
 // TechProfile definition (relevant for GPON, XGPON and XGS-PON technologies)
 type TechProfile struct {
-	Name                           string               `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Version                        uint32               `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
-	ProfileType                    string               `protobuf:"bytes,3,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
-	NumGemPorts                    uint32               `protobuf:"varint,4,opt,name=num_gem_ports,json=numGemPorts,proto3" json:"num_gem_ports,omitempty"`
-	InstanceControl                *InstanceControl     `protobuf:"bytes,5,opt,name=instance_control,json=instanceControl,proto3" json:"instance_control,omitempty"`
-	UsScheduler                    *SchedulerAttributes `protobuf:"bytes,6,opt,name=us_scheduler,json=usScheduler,proto3" json:"us_scheduler,omitempty"`
-	DsScheduler                    *SchedulerAttributes `protobuf:"bytes,7,opt,name=ds_scheduler,json=dsScheduler,proto3" json:"ds_scheduler,omitempty"`
-	UpstreamGemPortAttributeList   []*GemPortAttributes `protobuf:"bytes,8,rep,name=upstream_gem_port_attribute_list,json=upstreamGemPortAttributeList,proto3" json:"upstream_gem_port_attribute_list,omitempty"`
-	DownstreamGemPortAttributeList []*GemPortAttributes `protobuf:"bytes,9,rep,name=downstream_gem_port_attribute_list,json=downstreamGemPortAttributeList,proto3" json:"downstream_gem_port_attribute_list,omitempty"`
-	XXX_NoUnkeyedLiteral           struct{}             `json:"-"`
-	XXX_unrecognized               []byte               `json:"-"`
-	XXX_sizecache                  int32                `json:"-"`
+	state                          protoimpl.MessageState `protogen:"open.v1"`
+	Name                           string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Version                        uint32                 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
+	ProfileType                    string                 `protobuf:"bytes,3,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
+	NumGemPorts                    uint32                 `protobuf:"varint,4,opt,name=num_gem_ports,json=numGemPorts,proto3" json:"num_gem_ports,omitempty"`
+	InstanceControl                *InstanceControl       `protobuf:"bytes,5,opt,name=instance_control,json=instanceControl,proto3" json:"instance_control,omitempty"`
+	UsScheduler                    *SchedulerAttributes   `protobuf:"bytes,6,opt,name=us_scheduler,json=usScheduler,proto3" json:"us_scheduler,omitempty"`
+	DsScheduler                    *SchedulerAttributes   `protobuf:"bytes,7,opt,name=ds_scheduler,json=dsScheduler,proto3" json:"ds_scheduler,omitempty"`
+	UpstreamGemPortAttributeList   []*GemPortAttributes   `protobuf:"bytes,8,rep,name=upstream_gem_port_attribute_list,json=upstreamGemPortAttributeList,proto3" json:"upstream_gem_port_attribute_list,omitempty"`
+	DownstreamGemPortAttributeList []*GemPortAttributes   `protobuf:"bytes,9,rep,name=downstream_gem_port_attribute_list,json=downstreamGemPortAttributeList,proto3" json:"downstream_gem_port_attribute_list,omitempty"`
+	unknownFields                  protoimpl.UnknownFields
+	sizeCache                      protoimpl.SizeCache
 }
 
-func (m *TechProfile) Reset()         { *m = TechProfile{} }
-func (m *TechProfile) String() string { return proto.CompactTextString(m) }
-func (*TechProfile) ProtoMessage()    {}
+func (x *TechProfile) Reset() {
+	*x = TechProfile{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TechProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TechProfile) ProtoMessage() {}
+
+func (x *TechProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TechProfile.ProtoReflect.Descriptor instead.
 func (*TechProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{15}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *TechProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TechProfile.Unmarshal(m, b)
-}
-func (m *TechProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TechProfile.Marshal(b, m, deterministic)
-}
-func (m *TechProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TechProfile.Merge(m, src)
-}
-func (m *TechProfile) XXX_Size() int {
-	return xxx_messageInfo_TechProfile.Size(m)
-}
-func (m *TechProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_TechProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TechProfile proto.InternalMessageInfo
-
-func (m *TechProfile) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *TechProfile) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *TechProfile) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *TechProfile) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *TechProfile) GetProfileType() string {
-	if m != nil {
-		return m.ProfileType
+func (x *TechProfile) GetProfileType() string {
+	if x != nil {
+		return x.ProfileType
 	}
 	return ""
 }
 
-func (m *TechProfile) GetNumGemPorts() uint32 {
-	if m != nil {
-		return m.NumGemPorts
+func (x *TechProfile) GetNumGemPorts() uint32 {
+	if x != nil {
+		return x.NumGemPorts
 	}
 	return 0
 }
 
-func (m *TechProfile) GetInstanceControl() *InstanceControl {
-	if m != nil {
-		return m.InstanceControl
+func (x *TechProfile) GetInstanceControl() *InstanceControl {
+	if x != nil {
+		return x.InstanceControl
 	}
 	return nil
 }
 
-func (m *TechProfile) GetUsScheduler() *SchedulerAttributes {
-	if m != nil {
-		return m.UsScheduler
+func (x *TechProfile) GetUsScheduler() *SchedulerAttributes {
+	if x != nil {
+		return x.UsScheduler
 	}
 	return nil
 }
 
-func (m *TechProfile) GetDsScheduler() *SchedulerAttributes {
-	if m != nil {
-		return m.DsScheduler
+func (x *TechProfile) GetDsScheduler() *SchedulerAttributes {
+	if x != nil {
+		return x.DsScheduler
 	}
 	return nil
 }
 
-func (m *TechProfile) GetUpstreamGemPortAttributeList() []*GemPortAttributes {
-	if m != nil {
-		return m.UpstreamGemPortAttributeList
+func (x *TechProfile) GetUpstreamGemPortAttributeList() []*GemPortAttributes {
+	if x != nil {
+		return x.UpstreamGemPortAttributeList
 	}
 	return nil
 }
 
-func (m *TechProfile) GetDownstreamGemPortAttributeList() []*GemPortAttributes {
-	if m != nil {
-		return m.DownstreamGemPortAttributeList
+func (x *TechProfile) GetDownstreamGemPortAttributeList() []*GemPortAttributes {
+	if x != nil {
+		return x.DownstreamGemPortAttributeList
 	}
 	return nil
 }
 
 // EPON TechProfile definition
 type EponTechProfile struct {
+	state                        protoimpl.MessageState `protogen:"open.v1"`
 	Name                         string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	Version                      uint32                 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
 	ProfileType                  string                 `protobuf:"bytes,3,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
@@ -1546,206 +1745,216 @@
 	PackageType                  string                 `protobuf:"bytes,6,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"`
 	UpstreamQueueAttributeList   []*EPONQueueAttributes `protobuf:"bytes,7,rep,name=upstream_queue_attribute_list,json=upstreamQueueAttributeList,proto3" json:"upstream_queue_attribute_list,omitempty"`
 	DownstreamQueueAttributeList []*EPONQueueAttributes `protobuf:"bytes,8,rep,name=downstream_queue_attribute_list,json=downstreamQueueAttributeList,proto3" json:"downstream_queue_attribute_list,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	XXX_unrecognized             []byte                 `json:"-"`
-	XXX_sizecache                int32                  `json:"-"`
+	unknownFields                protoimpl.UnknownFields
+	sizeCache                    protoimpl.SizeCache
 }
 
-func (m *EponTechProfile) Reset()         { *m = EponTechProfile{} }
-func (m *EponTechProfile) String() string { return proto.CompactTextString(m) }
-func (*EponTechProfile) ProtoMessage()    {}
+func (x *EponTechProfile) Reset() {
+	*x = EponTechProfile{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EponTechProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EponTechProfile) ProtoMessage() {}
+
+func (x *EponTechProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EponTechProfile.ProtoReflect.Descriptor instead.
 func (*EponTechProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{16}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *EponTechProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EponTechProfile.Unmarshal(m, b)
-}
-func (m *EponTechProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EponTechProfile.Marshal(b, m, deterministic)
-}
-func (m *EponTechProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EponTechProfile.Merge(m, src)
-}
-func (m *EponTechProfile) XXX_Size() int {
-	return xxx_messageInfo_EponTechProfile.Size(m)
-}
-func (m *EponTechProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_EponTechProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EponTechProfile proto.InternalMessageInfo
-
-func (m *EponTechProfile) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *EponTechProfile) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *EponTechProfile) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *EponTechProfile) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *EponTechProfile) GetProfileType() string {
-	if m != nil {
-		return m.ProfileType
+func (x *EponTechProfile) GetProfileType() string {
+	if x != nil {
+		return x.ProfileType
 	}
 	return ""
 }
 
-func (m *EponTechProfile) GetNumGemPorts() uint32 {
-	if m != nil {
-		return m.NumGemPorts
+func (x *EponTechProfile) GetNumGemPorts() uint32 {
+	if x != nil {
+		return x.NumGemPorts
 	}
 	return 0
 }
 
-func (m *EponTechProfile) GetInstanceControl() *InstanceControl {
-	if m != nil {
-		return m.InstanceControl
+func (x *EponTechProfile) GetInstanceControl() *InstanceControl {
+	if x != nil {
+		return x.InstanceControl
 	}
 	return nil
 }
 
-func (m *EponTechProfile) GetPackageType() string {
-	if m != nil {
-		return m.PackageType
+func (x *EponTechProfile) GetPackageType() string {
+	if x != nil {
+		return x.PackageType
 	}
 	return ""
 }
 
-func (m *EponTechProfile) GetUpstreamQueueAttributeList() []*EPONQueueAttributes {
-	if m != nil {
-		return m.UpstreamQueueAttributeList
+func (x *EponTechProfile) GetUpstreamQueueAttributeList() []*EPONQueueAttributes {
+	if x != nil {
+		return x.UpstreamQueueAttributeList
 	}
 	return nil
 }
 
-func (m *EponTechProfile) GetDownstreamQueueAttributeList() []*EPONQueueAttributes {
-	if m != nil {
-		return m.DownstreamQueueAttributeList
+func (x *EponTechProfile) GetDownstreamQueueAttributeList() []*EPONQueueAttributes {
+	if x != nil {
+		return x.DownstreamQueueAttributeList
 	}
 	return nil
 }
 
 // TechProfile Instance definition (relevant for GPON, XGPON and XGS-PON technologies)
 type TechProfileInstance struct {
-	Name                           string               `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Version                        uint32               `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
-	SubscriberIdentifier           string               `protobuf:"bytes,3,opt,name=subscriber_identifier,json=subscriberIdentifier,proto3" json:"subscriber_identifier,omitempty"`
-	ProfileType                    string               `protobuf:"bytes,4,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
-	NumGemPorts                    uint32               `protobuf:"varint,5,opt,name=num_gem_ports,json=numGemPorts,proto3" json:"num_gem_ports,omitempty"`
-	InstanceControl                *InstanceControl     `protobuf:"bytes,6,opt,name=instance_control,json=instanceControl,proto3" json:"instance_control,omitempty"`
-	UsScheduler                    *SchedulerAttributes `protobuf:"bytes,7,opt,name=us_scheduler,json=usScheduler,proto3" json:"us_scheduler,omitempty"`
-	DsScheduler                    *SchedulerAttributes `protobuf:"bytes,8,opt,name=ds_scheduler,json=dsScheduler,proto3" json:"ds_scheduler,omitempty"`
-	UpstreamGemPortAttributeList   []*GemPortAttributes `protobuf:"bytes,9,rep,name=upstream_gem_port_attribute_list,json=upstreamGemPortAttributeList,proto3" json:"upstream_gem_port_attribute_list,omitempty"`
-	DownstreamGemPortAttributeList []*GemPortAttributes `protobuf:"bytes,10,rep,name=downstream_gem_port_attribute_list,json=downstreamGemPortAttributeList,proto3" json:"downstream_gem_port_attribute_list,omitempty"`
-	XXX_NoUnkeyedLiteral           struct{}             `json:"-"`
-	XXX_unrecognized               []byte               `json:"-"`
-	XXX_sizecache                  int32                `json:"-"`
+	state                          protoimpl.MessageState `protogen:"open.v1"`
+	Name                           string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Version                        uint32                 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
+	SubscriberIdentifier           string                 `protobuf:"bytes,3,opt,name=subscriber_identifier,json=subscriberIdentifier,proto3" json:"subscriber_identifier,omitempty"`
+	ProfileType                    string                 `protobuf:"bytes,4,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
+	NumGemPorts                    uint32                 `protobuf:"varint,5,opt,name=num_gem_ports,json=numGemPorts,proto3" json:"num_gem_ports,omitempty"`
+	InstanceControl                *InstanceControl       `protobuf:"bytes,6,opt,name=instance_control,json=instanceControl,proto3" json:"instance_control,omitempty"`
+	UsScheduler                    *SchedulerAttributes   `protobuf:"bytes,7,opt,name=us_scheduler,json=usScheduler,proto3" json:"us_scheduler,omitempty"`
+	DsScheduler                    *SchedulerAttributes   `protobuf:"bytes,8,opt,name=ds_scheduler,json=dsScheduler,proto3" json:"ds_scheduler,omitempty"`
+	UpstreamGemPortAttributeList   []*GemPortAttributes   `protobuf:"bytes,9,rep,name=upstream_gem_port_attribute_list,json=upstreamGemPortAttributeList,proto3" json:"upstream_gem_port_attribute_list,omitempty"`
+	DownstreamGemPortAttributeList []*GemPortAttributes   `protobuf:"bytes,10,rep,name=downstream_gem_port_attribute_list,json=downstreamGemPortAttributeList,proto3" json:"downstream_gem_port_attribute_list,omitempty"`
+	unknownFields                  protoimpl.UnknownFields
+	sizeCache                      protoimpl.SizeCache
 }
 
-func (m *TechProfileInstance) Reset()         { *m = TechProfileInstance{} }
-func (m *TechProfileInstance) String() string { return proto.CompactTextString(m) }
-func (*TechProfileInstance) ProtoMessage()    {}
+func (x *TechProfileInstance) Reset() {
+	*x = TechProfileInstance{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TechProfileInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TechProfileInstance) ProtoMessage() {}
+
+func (x *TechProfileInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TechProfileInstance.ProtoReflect.Descriptor instead.
 func (*TechProfileInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{17}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *TechProfileInstance) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TechProfileInstance.Unmarshal(m, b)
-}
-func (m *TechProfileInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TechProfileInstance.Marshal(b, m, deterministic)
-}
-func (m *TechProfileInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TechProfileInstance.Merge(m, src)
-}
-func (m *TechProfileInstance) XXX_Size() int {
-	return xxx_messageInfo_TechProfileInstance.Size(m)
-}
-func (m *TechProfileInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_TechProfileInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TechProfileInstance proto.InternalMessageInfo
-
-func (m *TechProfileInstance) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *TechProfileInstance) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *TechProfileInstance) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *TechProfileInstance) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *TechProfileInstance) GetSubscriberIdentifier() string {
-	if m != nil {
-		return m.SubscriberIdentifier
+func (x *TechProfileInstance) GetSubscriberIdentifier() string {
+	if x != nil {
+		return x.SubscriberIdentifier
 	}
 	return ""
 }
 
-func (m *TechProfileInstance) GetProfileType() string {
-	if m != nil {
-		return m.ProfileType
+func (x *TechProfileInstance) GetProfileType() string {
+	if x != nil {
+		return x.ProfileType
 	}
 	return ""
 }
 
-func (m *TechProfileInstance) GetNumGemPorts() uint32 {
-	if m != nil {
-		return m.NumGemPorts
+func (x *TechProfileInstance) GetNumGemPorts() uint32 {
+	if x != nil {
+		return x.NumGemPorts
 	}
 	return 0
 }
 
-func (m *TechProfileInstance) GetInstanceControl() *InstanceControl {
-	if m != nil {
-		return m.InstanceControl
+func (x *TechProfileInstance) GetInstanceControl() *InstanceControl {
+	if x != nil {
+		return x.InstanceControl
 	}
 	return nil
 }
 
-func (m *TechProfileInstance) GetUsScheduler() *SchedulerAttributes {
-	if m != nil {
-		return m.UsScheduler
+func (x *TechProfileInstance) GetUsScheduler() *SchedulerAttributes {
+	if x != nil {
+		return x.UsScheduler
 	}
 	return nil
 }
 
-func (m *TechProfileInstance) GetDsScheduler() *SchedulerAttributes {
-	if m != nil {
-		return m.DsScheduler
+func (x *TechProfileInstance) GetDsScheduler() *SchedulerAttributes {
+	if x != nil {
+		return x.DsScheduler
 	}
 	return nil
 }
 
-func (m *TechProfileInstance) GetUpstreamGemPortAttributeList() []*GemPortAttributes {
-	if m != nil {
-		return m.UpstreamGemPortAttributeList
+func (x *TechProfileInstance) GetUpstreamGemPortAttributeList() []*GemPortAttributes {
+	if x != nil {
+		return x.UpstreamGemPortAttributeList
 	}
 	return nil
 }
 
-func (m *TechProfileInstance) GetDownstreamGemPortAttributeList() []*GemPortAttributes {
-	if m != nil {
-		return m.DownstreamGemPortAttributeList
+func (x *TechProfileInstance) GetDownstreamGemPortAttributeList() []*GemPortAttributes {
+	if x != nil {
+		return x.DownstreamGemPortAttributeList
 	}
 	return nil
 }
 
 // EPON TechProfile Instance definition.
 type EponTechProfileInstance struct {
+	state                        protoimpl.MessageState `protogen:"open.v1"`
 	Name                         string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	Version                      uint32                 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
 	SubscriberIdentifier         string                 `protobuf:"bytes,3,opt,name=subscriber_identifier,json=subscriberIdentifier,proto3" json:"subscriber_identifier,omitempty"`
@@ -1756,343 +1965,514 @@
 	PackageType                  string                 `protobuf:"bytes,8,opt,name=package_type,json=packageType,proto3" json:"package_type,omitempty"`
 	UpstreamQueueAttributeList   []*EPONQueueAttributes `protobuf:"bytes,9,rep,name=upstream_queue_attribute_list,json=upstreamQueueAttributeList,proto3" json:"upstream_queue_attribute_list,omitempty"`
 	DownstreamQueueAttributeList []*EPONQueueAttributes `protobuf:"bytes,10,rep,name=downstream_queue_attribute_list,json=downstreamQueueAttributeList,proto3" json:"downstream_queue_attribute_list,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{}               `json:"-"`
-	XXX_unrecognized             []byte                 `json:"-"`
-	XXX_sizecache                int32                  `json:"-"`
+	unknownFields                protoimpl.UnknownFields
+	sizeCache                    protoimpl.SizeCache
 }
 
-func (m *EponTechProfileInstance) Reset()         { *m = EponTechProfileInstance{} }
-func (m *EponTechProfileInstance) String() string { return proto.CompactTextString(m) }
-func (*EponTechProfileInstance) ProtoMessage()    {}
+func (x *EponTechProfileInstance) Reset() {
+	*x = EponTechProfileInstance{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EponTechProfileInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EponTechProfileInstance) ProtoMessage() {}
+
+func (x *EponTechProfileInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EponTechProfileInstance.ProtoReflect.Descriptor instead.
 func (*EponTechProfileInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{18}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *EponTechProfileInstance) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EponTechProfileInstance.Unmarshal(m, b)
-}
-func (m *EponTechProfileInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EponTechProfileInstance.Marshal(b, m, deterministic)
-}
-func (m *EponTechProfileInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EponTechProfileInstance.Merge(m, src)
-}
-func (m *EponTechProfileInstance) XXX_Size() int {
-	return xxx_messageInfo_EponTechProfileInstance.Size(m)
-}
-func (m *EponTechProfileInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_EponTechProfileInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EponTechProfileInstance proto.InternalMessageInfo
-
-func (m *EponTechProfileInstance) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *EponTechProfileInstance) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *EponTechProfileInstance) GetVersion() uint32 {
-	if m != nil {
-		return m.Version
+func (x *EponTechProfileInstance) GetVersion() uint32 {
+	if x != nil {
+		return x.Version
 	}
 	return 0
 }
 
-func (m *EponTechProfileInstance) GetSubscriberIdentifier() string {
-	if m != nil {
-		return m.SubscriberIdentifier
+func (x *EponTechProfileInstance) GetSubscriberIdentifier() string {
+	if x != nil {
+		return x.SubscriberIdentifier
 	}
 	return ""
 }
 
-func (m *EponTechProfileInstance) GetProfileType() string {
-	if m != nil {
-		return m.ProfileType
+func (x *EponTechProfileInstance) GetProfileType() string {
+	if x != nil {
+		return x.ProfileType
 	}
 	return ""
 }
 
-func (m *EponTechProfileInstance) GetNumGemPorts() uint32 {
-	if m != nil {
-		return m.NumGemPorts
+func (x *EponTechProfileInstance) GetNumGemPorts() uint32 {
+	if x != nil {
+		return x.NumGemPorts
 	}
 	return 0
 }
 
-func (m *EponTechProfileInstance) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *EponTechProfileInstance) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *EponTechProfileInstance) GetInstanceControl() *InstanceControl {
-	if m != nil {
-		return m.InstanceControl
+func (x *EponTechProfileInstance) GetInstanceControl() *InstanceControl {
+	if x != nil {
+		return x.InstanceControl
 	}
 	return nil
 }
 
-func (m *EponTechProfileInstance) GetPackageType() string {
-	if m != nil {
-		return m.PackageType
+func (x *EponTechProfileInstance) GetPackageType() string {
+	if x != nil {
+		return x.PackageType
 	}
 	return ""
 }
 
-func (m *EponTechProfileInstance) GetUpstreamQueueAttributeList() []*EPONQueueAttributes {
-	if m != nil {
-		return m.UpstreamQueueAttributeList
+func (x *EponTechProfileInstance) GetUpstreamQueueAttributeList() []*EPONQueueAttributes {
+	if x != nil {
+		return x.UpstreamQueueAttributeList
 	}
 	return nil
 }
 
-func (m *EponTechProfileInstance) GetDownstreamQueueAttributeList() []*EPONQueueAttributes {
-	if m != nil {
-		return m.DownstreamQueueAttributeList
+func (x *EponTechProfileInstance) GetDownstreamQueueAttributeList() []*EPONQueueAttributes {
+	if x != nil {
+		return x.DownstreamQueueAttributeList
 	}
 	return nil
 }
 
 // Resource Instance definition
 type ResourceInstance struct {
-	TpId                 uint32   `protobuf:"varint,1,opt,name=tp_id,json=tpId,proto3" json:"tp_id,omitempty"`
-	ProfileType          string   `protobuf:"bytes,2,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
-	SubscriberIdentifier string   `protobuf:"bytes,3,opt,name=subscriber_identifier,json=subscriberIdentifier,proto3" json:"subscriber_identifier,omitempty"`
-	AllocId              uint32   `protobuf:"varint,4,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
-	GemportIds           []uint32 `protobuf:"varint,5,rep,packed,name=gemport_ids,json=gemportIds,proto3" json:"gemport_ids,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	TpId                 uint32                 `protobuf:"varint,1,opt,name=tp_id,json=tpId,proto3" json:"tp_id,omitempty"`
+	ProfileType          string                 `protobuf:"bytes,2,opt,name=profile_type,json=profileType,proto3" json:"profile_type,omitempty"`
+	SubscriberIdentifier string                 `protobuf:"bytes,3,opt,name=subscriber_identifier,json=subscriberIdentifier,proto3" json:"subscriber_identifier,omitempty"`
+	AllocId              uint32                 `protobuf:"varint,4,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+	GemportIds           []uint32               `protobuf:"varint,5,rep,packed,name=gemport_ids,json=gemportIds,proto3" json:"gemport_ids,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *ResourceInstance) Reset()         { *m = ResourceInstance{} }
-func (m *ResourceInstance) String() string { return proto.CompactTextString(m) }
-func (*ResourceInstance) ProtoMessage()    {}
+func (x *ResourceInstance) Reset() {
+	*x = ResourceInstance{}
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ResourceInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResourceInstance) ProtoMessage() {}
+
+func (x *ResourceInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_tech_profile_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResourceInstance.ProtoReflect.Descriptor instead.
 func (*ResourceInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d019a68bffe14cae, []int{19}
+	return file_voltha_protos_tech_profile_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *ResourceInstance) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResourceInstance.Unmarshal(m, b)
-}
-func (m *ResourceInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResourceInstance.Marshal(b, m, deterministic)
-}
-func (m *ResourceInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResourceInstance.Merge(m, src)
-}
-func (m *ResourceInstance) XXX_Size() int {
-	return xxx_messageInfo_ResourceInstance.Size(m)
-}
-func (m *ResourceInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResourceInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResourceInstance proto.InternalMessageInfo
-
-func (m *ResourceInstance) GetTpId() uint32 {
-	if m != nil {
-		return m.TpId
+func (x *ResourceInstance) GetTpId() uint32 {
+	if x != nil {
+		return x.TpId
 	}
 	return 0
 }
 
-func (m *ResourceInstance) GetProfileType() string {
-	if m != nil {
-		return m.ProfileType
+func (x *ResourceInstance) GetProfileType() string {
+	if x != nil {
+		return x.ProfileType
 	}
 	return ""
 }
 
-func (m *ResourceInstance) GetSubscriberIdentifier() string {
-	if m != nil {
-		return m.SubscriberIdentifier
+func (x *ResourceInstance) GetSubscriberIdentifier() string {
+	if x != nil {
+		return x.SubscriberIdentifier
 	}
 	return ""
 }
 
-func (m *ResourceInstance) GetAllocId() uint32 {
-	if m != nil {
-		return m.AllocId
+func (x *ResourceInstance) GetAllocId() uint32 {
+	if x != nil {
+		return x.AllocId
 	}
 	return 0
 }
 
-func (m *ResourceInstance) GetGemportIds() []uint32 {
-	if m != nil {
-		return m.GemportIds
+func (x *ResourceInstance) GetGemportIds() []uint32 {
+	if x != nil {
+		return x.GemportIds
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("tech_profile.Direction", Direction_name, Direction_value)
-	proto.RegisterEnum("tech_profile.SchedulingPolicy", SchedulingPolicy_name, SchedulingPolicy_value)
-	proto.RegisterEnum("tech_profile.AdditionalBW", AdditionalBW_name, AdditionalBW_value)
-	proto.RegisterEnum("tech_profile.DiscardPolicy", DiscardPolicy_name, DiscardPolicy_value)
-	proto.RegisterEnum("tech_profile.InferredAdditionBWIndication", InferredAdditionBWIndication_name, InferredAdditionBWIndication_value)
-	proto.RegisterType((*SchedulerConfig)(nil), "tech_profile.SchedulerConfig")
-	proto.RegisterType((*TrafficShapingInfo)(nil), "tech_profile.TrafficShapingInfo")
-	proto.RegisterType((*TrafficScheduler)(nil), "tech_profile.TrafficScheduler")
-	proto.RegisterType((*TrafficSchedulers)(nil), "tech_profile.TrafficSchedulers")
-	proto.RegisterType((*TailDropDiscardConfig)(nil), "tech_profile.TailDropDiscardConfig")
-	proto.RegisterType((*RedDiscardConfig)(nil), "tech_profile.RedDiscardConfig")
-	proto.RegisterType((*WRedDiscardConfig)(nil), "tech_profile.WRedDiscardConfig")
-	proto.RegisterType((*DiscardConfig)(nil), "tech_profile.DiscardConfig")
-	proto.RegisterType((*TrafficQueue)(nil), "tech_profile.TrafficQueue")
-	proto.RegisterType((*TrafficQueues)(nil), "tech_profile.TrafficQueues")
-	proto.RegisterType((*InstanceControl)(nil), "tech_profile.InstanceControl")
-	proto.RegisterType((*QThresholds)(nil), "tech_profile.QThresholds")
-	proto.RegisterType((*GemPortAttributes)(nil), "tech_profile.GemPortAttributes")
-	proto.RegisterType((*SchedulerAttributes)(nil), "tech_profile.SchedulerAttributes")
-	proto.RegisterType((*EPONQueueAttributes)(nil), "tech_profile.EPONQueueAttributes")
-	proto.RegisterType((*TechProfile)(nil), "tech_profile.TechProfile")
-	proto.RegisterType((*EponTechProfile)(nil), "tech_profile.EponTechProfile")
-	proto.RegisterType((*TechProfileInstance)(nil), "tech_profile.TechProfileInstance")
-	proto.RegisterType((*EponTechProfileInstance)(nil), "tech_profile.EponTechProfileInstance")
-	proto.RegisterType((*ResourceInstance)(nil), "tech_profile.ResourceInstance")
+var File_voltha_protos_tech_profile_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_tech_profile_proto_rawDesc = "" +
+	"\n" +
+	" voltha_protos/tech_profile.proto\x12\ftech_profile\x1a\x1cgoogle/api/annotations.proto\"\x80\x02\n" +
+	"\x0fSchedulerConfig\x125\n" +
+	"\tdirection\x18\x01 \x01(\x0e2\x17.tech_profile.DirectionR\tdirection\x12?\n" +
+	"\radditional_bw\x18\x02 \x01(\x0e2\x1a.tech_profile.AdditionalBWR\fadditionalBw\x12\x1a\n" +
+	"\bpriority\x18\x03 \x01(\aR\bpriority\x12\x16\n" +
+	"\x06weight\x18\x04 \x01(\aR\x06weight\x12A\n" +
+	"\fsched_policy\x18\x05 \x01(\x0e2\x1e.tech_profile.SchedulingPolicyR\vschedPolicy\"\xb8\x01\n" +
+	"\x12TrafficShapingInfo\x12\x10\n" +
+	"\x03cir\x18\x01 \x01(\aR\x03cir\x12\x10\n" +
+	"\x03cbs\x18\x02 \x01(\aR\x03cbs\x12\x10\n" +
+	"\x03pir\x18\x03 \x01(\aR\x03pir\x12\x10\n" +
+	"\x03pbs\x18\x04 \x01(\aR\x03pbs\x12\x10\n" +
+	"\x03gir\x18\x05 \x01(\aR\x03gir\x12H\n" +
+	"\n" +
+	"add_bw_ind\x18\x06 \x01(\x0e2*.tech_profile.InferredAdditionBWIndicationR\baddBwInd\"\x9d\x02\n" +
+	"\x10TrafficScheduler\x125\n" +
+	"\tdirection\x18\x01 \x01(\x0e2\x17.tech_profile.DirectionR\tdirection\x12\x19\n" +
+	"\balloc_id\x18\x02 \x01(\aR\aallocId\x12;\n" +
+	"\tscheduler\x18\x03 \x01(\v2\x1d.tech_profile.SchedulerConfigR\tscheduler\x12R\n" +
+	"\x14traffic_shaping_info\x18\x04 \x01(\v2 .tech_profile.TrafficShapingInfoR\x12trafficShapingInfo\x12&\n" +
+	"\x0ftech_profile_id\x18\x05 \x01(\aR\rtechProfileId\"\xba\x01\n" +
+	"\x11TrafficSchedulers\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x15\n" +
+	"\x06uni_id\x18\x04 \x01(\aR\x05uniId\x12\x17\n" +
+	"\aport_no\x18\x05 \x01(\aR\x06portNo\x12E\n" +
+	"\x0etraffic_scheds\x18\x03 \x03(\v2\x1e.tech_profile.TrafficSchedulerR\rtrafficScheds\"6\n" +
+	"\x15TailDropDiscardConfig\x12\x1d\n" +
+	"\n" +
+	"queue_size\x18\x01 \x01(\aR\tqueueSize\"\x85\x01\n" +
+	"\x10RedDiscardConfig\x12#\n" +
+	"\rmin_threshold\x18\x01 \x01(\aR\fminThreshold\x12#\n" +
+	"\rmax_threshold\x18\x02 \x01(\aR\fmaxThreshold\x12'\n" +
+	"\x0fmax_probability\x18\x03 \x01(\aR\x0emaxProbability\"\xb3\x01\n" +
+	"\x11WRedDiscardConfig\x124\n" +
+	"\x05green\x18\x01 \x01(\v2\x1e.tech_profile.RedDiscardConfigR\x05green\x126\n" +
+	"\x06yellow\x18\x02 \x01(\v2\x1e.tech_profile.RedDiscardConfigR\x06yellow\x120\n" +
+	"\x03red\x18\x03 \x01(\v2\x1e.tech_profile.RedDiscardConfigR\x03red\"\xe8\x02\n" +
+	"\rDiscardConfig\x12B\n" +
+	"\x0ediscard_policy\x18\x01 \x01(\x0e2\x1b.tech_profile.DiscardPolicyR\rdiscardPolicy\x12^\n" +
+	"\x18tail_drop_discard_config\x18\x02 \x01(\v2#.tech_profile.TailDropDiscardConfigH\x00R\x15tailDropDiscardConfig\x12N\n" +
+	"\x12red_discard_config\x18\x03 \x01(\v2\x1e.tech_profile.RedDiscardConfigH\x00R\x10redDiscardConfig\x12Q\n" +
+	"\x13wred_discard_config\x18\x04 \x01(\v2\x1f.tech_profile.WRedDiscardConfigH\x00R\x11wredDiscardConfigB\x10\n" +
+	"\x0ediscard_config\"\xa5\x03\n" +
+	"\fTrafficQueue\x125\n" +
+	"\tdirection\x18\x01 \x01(\x0e2\x17.tech_profile.DirectionR\tdirection\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x02 \x01(\aR\tgemportId\x12\x19\n" +
+	"\bpbit_map\x18\x03 \x01(\tR\apbitMap\x12%\n" +
+	"\x0eaes_encryption\x18\x04 \x01(\bR\raesEncryption\x12A\n" +
+	"\fsched_policy\x18\x05 \x01(\x0e2\x1e.tech_profile.SchedulingPolicyR\vschedPolicy\x12\x1a\n" +
+	"\bpriority\x18\x06 \x01(\aR\bpriority\x12\x16\n" +
+	"\x06weight\x18\a \x01(\aR\x06weight\x12B\n" +
+	"\x0ediscard_policy\x18\b \x01(\x0e2\x1b.tech_profile.DiscardPolicyR\rdiscardPolicy\x12B\n" +
+	"\x0ediscard_config\x18\t \x01(\v2\x1b.tech_profile.DiscardConfigR\rdiscardConfig\"\x82\x02\n" +
+	"\rTrafficQueues\x12\x17\n" +
+	"\aintf_id\x18\x01 \x01(\aR\x06intfId\x12\x15\n" +
+	"\x06onu_id\x18\x02 \x01(\aR\x05onuId\x12\x15\n" +
+	"\x06uni_id\x18\x04 \x01(\aR\x05uniId\x12\x17\n" +
+	"\aport_no\x18\x05 \x01(\aR\x06portNo\x12A\n" +
+	"\x0etraffic_queues\x18\x06 \x03(\v2\x1a.tech_profile.TrafficQueueR\rtrafficQueues\x12&\n" +
+	"\x0ftech_profile_id\x18\a \x01(\aR\rtechProfileId\x12&\n" +
+	"\x0fnetwork_intf_id\x18\b \x01(\aR\rnetworkIntfId\"f\n" +
+	"\x0fInstanceControl\x12\x10\n" +
+	"\x03onu\x18\x01 \x01(\tR\x03onu\x12\x10\n" +
+	"\x03uni\x18\x02 \x01(\tR\x03uni\x12/\n" +
+	"\x14max_gem_payload_size\x18\x03 \x01(\tR\x11maxGemPayloadSize\"\x82\x02\n" +
+	"\vQThresholds\x12!\n" +
+	"\fq_threshold1\x18\x01 \x01(\rR\vqThreshold1\x12!\n" +
+	"\fq_threshold2\x18\x02 \x01(\rR\vqThreshold2\x12!\n" +
+	"\fq_threshold3\x18\x03 \x01(\rR\vqThreshold3\x12!\n" +
+	"\fq_threshold4\x18\x04 \x01(\rR\vqThreshold4\x12!\n" +
+	"\fq_threshold5\x18\x05 \x01(\rR\vqThreshold5\x12!\n" +
+	"\fq_threshold6\x18\x06 \x01(\rR\vqThreshold6\x12!\n" +
+	"\fq_threshold7\x18\a \x01(\rR\vqThreshold7\"\xb3\x05\n" +
+	"\x11GemPortAttributes\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x01 \x01(\aR\tgemportId\x12\x1c\n" +
+	"\n" +
+	"max_q_size\x18\x02 \x01(\tR\bmaxQSize\x12\x19\n" +
+	"\bpbit_map\x18\x03 \x01(\tR\apbitMap\x12%\n" +
+	"\x0eaes_encryption\x18\x04 \x01(\tR\raesEncryption\x12K\n" +
+	"\x11scheduling_policy\x18\x05 \x01(\x0e2\x1e.tech_profile.SchedulingPolicyR\x10schedulingPolicy\x12\x1d\n" +
+	"\n" +
+	"priority_q\x18\x06 \x01(\aR\tpriorityQ\x12\x16\n" +
+	"\x06weight\x18\a \x01(\aR\x06weight\x12B\n" +
+	"\x0ediscard_policy\x18\b \x01(\x0e2\x1b.tech_profile.DiscardPolicyR\rdiscardPolicy\x12E\n" +
+	"\x0ediscard_config\x18\t \x01(\v2\x1e.tech_profile.RedDiscardConfigR\rdiscardConfig\x12G\n" +
+	"\x11discard_config_v2\x18\x0e \x01(\v2\x1b.tech_profile.DiscardConfigR\x0fdiscardConfigV2\x12!\n" +
+	"\fis_multicast\x18\n" +
+	" \x01(\tR\visMulticast\x12(\n" +
+	"\x10multicast_gem_id\x18\v \x01(\aR\x0emulticastGemId\x12=\n" +
+	"\x1bdynamic_access_control_list\x18\f \x01(\tR\x18dynamicAccessControlList\x12;\n" +
+	"\x1astatic_access_control_list\x18\r \x01(\tR\x17staticAccessControlList\"\xa2\x02\n" +
+	"\x13SchedulerAttributes\x125\n" +
+	"\tdirection\x18\x01 \x01(\x0e2\x17.tech_profile.DirectionR\tdirection\x12\x19\n" +
+	"\balloc_id\x18\x02 \x01(\rR\aallocId\x12?\n" +
+	"\radditional_bw\x18\x03 \x01(\x0e2\x1a.tech_profile.AdditionalBWR\fadditionalBw\x12\x1a\n" +
+	"\bpriority\x18\x04 \x01(\aR\bpriority\x12\x16\n" +
+	"\x06weight\x18\x05 \x01(\aR\x06weight\x12D\n" +
+	"\x0eq_sched_policy\x18\x06 \x01(\x0e2\x1e.tech_profile.SchedulingPolicyR\fqSchedPolicy\"\xc0\x06\n" +
+	"\x13EPONQueueAttributes\x12\x1c\n" +
+	"\n" +
+	"max_q_size\x18\x01 \x01(\tR\bmaxQSize\x12\x19\n" +
+	"\bpbit_map\x18\x02 \x01(\tR\apbitMap\x12\x1d\n" +
+	"\n" +
+	"gemport_id\x18\x03 \x01(\rR\tgemportId\x12%\n" +
+	"\x0eaes_encryption\x18\x04 \x01(\tR\raesEncryption\x12!\n" +
+	"\ftraffic_type\x18\x05 \x01(\tR\vtrafficType\x124\n" +
+	"\x16unsolicited_grant_size\x18\x06 \x01(\rR\x14unsolicitedGrantSize\x12)\n" +
+	"\x10nominal_interval\x18\a \x01(\rR\x0fnominalInterval\x122\n" +
+	"\x15tolerated_poll_jitter\x18\b \x01(\rR\x13toleratedPollJitter\x12>\n" +
+	"\x1brequest_transmission_policy\x18\t \x01(\rR\x19requestTransmissionPolicy\x12\x1c\n" +
+	"\n" +
+	"num_q_sets\x18\n" +
+	" \x01(\rR\bnumQSets\x12<\n" +
+	"\fq_thresholds\x18\v \x01(\v2\x19.tech_profile.QThresholdsR\vqThresholds\x12K\n" +
+	"\x11scheduling_policy\x18\f \x01(\x0e2\x1e.tech_profile.SchedulingPolicyR\x10schedulingPolicy\x12\x1d\n" +
+	"\n" +
+	"priority_q\x18\r \x01(\rR\tpriorityQ\x12\x16\n" +
+	"\x06weight\x18\x0e \x01(\rR\x06weight\x12B\n" +
+	"\x0ediscard_policy\x18\x0f \x01(\x0e2\x1b.tech_profile.DiscardPolicyR\rdiscardPolicy\x12E\n" +
+	"\x0ediscard_config\x18\x10 \x01(\v2\x1e.tech_profile.RedDiscardConfigR\rdiscardConfig\x12G\n" +
+	"\x11discard_config_v2\x18\x11 \x01(\v2\x1b.tech_profile.DiscardConfigR\x0fdiscardConfigV2\"\xae\x04\n" +
+	"\vTechProfile\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\rR\aversion\x12!\n" +
+	"\fprofile_type\x18\x03 \x01(\tR\vprofileType\x12\"\n" +
+	"\rnum_gem_ports\x18\x04 \x01(\rR\vnumGemPorts\x12H\n" +
+	"\x10instance_control\x18\x05 \x01(\v2\x1d.tech_profile.InstanceControlR\x0finstanceControl\x12D\n" +
+	"\fus_scheduler\x18\x06 \x01(\v2!.tech_profile.SchedulerAttributesR\vusScheduler\x12D\n" +
+	"\fds_scheduler\x18\a \x01(\v2!.tech_profile.SchedulerAttributesR\vdsScheduler\x12g\n" +
+	" upstream_gem_port_attribute_list\x18\b \x03(\v2\x1f.tech_profile.GemPortAttributesR\x1cupstreamGemPortAttributeList\x12k\n" +
+	"\"downstream_gem_port_attribute_list\x18\t \x03(\v2\x1f.tech_profile.GemPortAttributesR\x1edownstreamGemPortAttributeList\"\xc3\x03\n" +
+	"\x0fEponTechProfile\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\rR\aversion\x12!\n" +
+	"\fprofile_type\x18\x03 \x01(\tR\vprofileType\x12\"\n" +
+	"\rnum_gem_ports\x18\x04 \x01(\rR\vnumGemPorts\x12H\n" +
+	"\x10instance_control\x18\x05 \x01(\v2\x1d.tech_profile.InstanceControlR\x0finstanceControl\x12!\n" +
+	"\fpackage_type\x18\x06 \x01(\tR\vpackageType\x12d\n" +
+	"\x1dupstream_queue_attribute_list\x18\a \x03(\v2!.tech_profile.EPONQueueAttributesR\x1aupstreamQueueAttributeList\x12h\n" +
+	"\x1fdownstream_queue_attribute_list\x18\b \x03(\v2!.tech_profile.EPONQueueAttributesR\x1cdownstreamQueueAttributeList\"\xeb\x04\n" +
+	"\x13TechProfileInstance\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\rR\aversion\x123\n" +
+	"\x15subscriber_identifier\x18\x03 \x01(\tR\x14subscriberIdentifier\x12!\n" +
+	"\fprofile_type\x18\x04 \x01(\tR\vprofileType\x12\"\n" +
+	"\rnum_gem_ports\x18\x05 \x01(\rR\vnumGemPorts\x12H\n" +
+	"\x10instance_control\x18\x06 \x01(\v2\x1d.tech_profile.InstanceControlR\x0finstanceControl\x12D\n" +
+	"\fus_scheduler\x18\a \x01(\v2!.tech_profile.SchedulerAttributesR\vusScheduler\x12D\n" +
+	"\fds_scheduler\x18\b \x01(\v2!.tech_profile.SchedulerAttributesR\vdsScheduler\x12g\n" +
+	" upstream_gem_port_attribute_list\x18\t \x03(\v2\x1f.tech_profile.GemPortAttributesR\x1cupstreamGemPortAttributeList\x12k\n" +
+	"\"downstream_gem_port_attribute_list\x18\n" +
+	" \x03(\v2\x1f.tech_profile.GemPortAttributesR\x1edownstreamGemPortAttributeList\"\x9b\x04\n" +
+	"\x17EponTechProfileInstance\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\rR\aversion\x123\n" +
+	"\x15subscriber_identifier\x18\x03 \x01(\tR\x14subscriberIdentifier\x12!\n" +
+	"\fprofile_type\x18\x04 \x01(\tR\vprofileType\x12\"\n" +
+	"\rnum_gem_ports\x18\x05 \x01(\rR\vnumGemPorts\x12\x19\n" +
+	"\balloc_id\x18\x06 \x01(\rR\aallocId\x12H\n" +
+	"\x10instance_control\x18\a \x01(\v2\x1d.tech_profile.InstanceControlR\x0finstanceControl\x12!\n" +
+	"\fpackage_type\x18\b \x01(\tR\vpackageType\x12d\n" +
+	"\x1dupstream_queue_attribute_list\x18\t \x03(\v2!.tech_profile.EPONQueueAttributesR\x1aupstreamQueueAttributeList\x12h\n" +
+	"\x1fdownstream_queue_attribute_list\x18\n" +
+	" \x03(\v2!.tech_profile.EPONQueueAttributesR\x1cdownstreamQueueAttributeList\"\xbb\x01\n" +
+	"\x10ResourceInstance\x12\x13\n" +
+	"\x05tp_id\x18\x01 \x01(\rR\x04tpId\x12!\n" +
+	"\fprofile_type\x18\x02 \x01(\tR\vprofileType\x123\n" +
+	"\x15subscriber_identifier\x18\x03 \x01(\tR\x14subscriberIdentifier\x12\x19\n" +
+	"\balloc_id\x18\x04 \x01(\rR\aallocId\x12\x1f\n" +
+	"\vgemport_ids\x18\x05 \x03(\rR\n" +
+	"gemportIds*<\n" +
+	"\tDirection\x12\f\n" +
+	"\bUPSTREAM\x10\x00\x12\x0e\n" +
+	"\n" +
+	"DOWNSTREAM\x10\x01\x12\x11\n" +
+	"\rBIDIRECTIONAL\x10\x02*;\n" +
+	"\x10SchedulingPolicy\x12\a\n" +
+	"\x03WRR\x10\x00\x12\x12\n" +
+	"\x0eStrictPriority\x10\x01\x12\n" +
+	"\n" +
+	"\x06Hybrid\x10\x02*n\n" +
+	"\fAdditionalBW\x12\x15\n" +
+	"\x11AdditionalBW_None\x10\x00\x12\x13\n" +
+	"\x0fAdditionalBW_NA\x10\x01\x12\x1b\n" +
+	"\x17AdditionalBW_BestEffort\x10\x02\x12\x15\n" +
+	"\x11AdditionalBW_Auto\x10\x03*?\n" +
+	"\rDiscardPolicy\x12\f\n" +
+	"\bTailDrop\x10\x00\x12\r\n" +
+	"\tWTailDrop\x10\x01\x12\a\n" +
+	"\x03Red\x10\x02\x12\b\n" +
+	"\x04WRed\x10\x03*\x9c\x01\n" +
+	"\x1cInferredAdditionBWIndication\x12%\n" +
+	"!InferredAdditionBWIndication_None\x10\x00\x12(\n" +
+	"$InferredAdditionBWIndication_Assured\x10\x01\x12+\n" +
+	"'InferredAdditionBWIndication_BestEffort\x10\x02BX\n" +
+	" org.opencord.voltha.tech_profileZ4github.com/opencord/voltha-protos/v5/go/tech_profileb\x06proto3"
+
+var (
+	file_voltha_protos_tech_profile_proto_rawDescOnce sync.Once
+	file_voltha_protos_tech_profile_proto_rawDescData []byte
+)
+
+func file_voltha_protos_tech_profile_proto_rawDescGZIP() []byte {
+	file_voltha_protos_tech_profile_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_tech_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_tech_profile_proto_rawDesc), len(file_voltha_protos_tech_profile_proto_rawDesc)))
+	})
+	return file_voltha_protos_tech_profile_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/tech_profile.proto", fileDescriptor_d019a68bffe14cae) }
+var file_voltha_protos_tech_profile_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
+var file_voltha_protos_tech_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
+var file_voltha_protos_tech_profile_proto_goTypes = []any{
+	(Direction)(0),                    // 0: tech_profile.Direction
+	(SchedulingPolicy)(0),             // 1: tech_profile.SchedulingPolicy
+	(AdditionalBW)(0),                 // 2: tech_profile.AdditionalBW
+	(DiscardPolicy)(0),                // 3: tech_profile.DiscardPolicy
+	(InferredAdditionBWIndication)(0), // 4: tech_profile.InferredAdditionBWIndication
+	(*SchedulerConfig)(nil),           // 5: tech_profile.SchedulerConfig
+	(*TrafficShapingInfo)(nil),        // 6: tech_profile.TrafficShapingInfo
+	(*TrafficScheduler)(nil),          // 7: tech_profile.TrafficScheduler
+	(*TrafficSchedulers)(nil),         // 8: tech_profile.TrafficSchedulers
+	(*TailDropDiscardConfig)(nil),     // 9: tech_profile.TailDropDiscardConfig
+	(*RedDiscardConfig)(nil),          // 10: tech_profile.RedDiscardConfig
+	(*WRedDiscardConfig)(nil),         // 11: tech_profile.WRedDiscardConfig
+	(*DiscardConfig)(nil),             // 12: tech_profile.DiscardConfig
+	(*TrafficQueue)(nil),              // 13: tech_profile.TrafficQueue
+	(*TrafficQueues)(nil),             // 14: tech_profile.TrafficQueues
+	(*InstanceControl)(nil),           // 15: tech_profile.InstanceControl
+	(*QThresholds)(nil),               // 16: tech_profile.QThresholds
+	(*GemPortAttributes)(nil),         // 17: tech_profile.GemPortAttributes
+	(*SchedulerAttributes)(nil),       // 18: tech_profile.SchedulerAttributes
+	(*EPONQueueAttributes)(nil),       // 19: tech_profile.EPONQueueAttributes
+	(*TechProfile)(nil),               // 20: tech_profile.TechProfile
+	(*EponTechProfile)(nil),           // 21: tech_profile.EponTechProfile
+	(*TechProfileInstance)(nil),       // 22: tech_profile.TechProfileInstance
+	(*EponTechProfileInstance)(nil),   // 23: tech_profile.EponTechProfileInstance
+	(*ResourceInstance)(nil),          // 24: tech_profile.ResourceInstance
+}
+var file_voltha_protos_tech_profile_proto_depIdxs = []int32{
+	0,  // 0: tech_profile.SchedulerConfig.direction:type_name -> tech_profile.Direction
+	2,  // 1: tech_profile.SchedulerConfig.additional_bw:type_name -> tech_profile.AdditionalBW
+	1,  // 2: tech_profile.SchedulerConfig.sched_policy:type_name -> tech_profile.SchedulingPolicy
+	4,  // 3: tech_profile.TrafficShapingInfo.add_bw_ind:type_name -> tech_profile.InferredAdditionBWIndication
+	0,  // 4: tech_profile.TrafficScheduler.direction:type_name -> tech_profile.Direction
+	5,  // 5: tech_profile.TrafficScheduler.scheduler:type_name -> tech_profile.SchedulerConfig
+	6,  // 6: tech_profile.TrafficScheduler.traffic_shaping_info:type_name -> tech_profile.TrafficShapingInfo
+	7,  // 7: tech_profile.TrafficSchedulers.traffic_scheds:type_name -> tech_profile.TrafficScheduler
+	10, // 8: tech_profile.WRedDiscardConfig.green:type_name -> tech_profile.RedDiscardConfig
+	10, // 9: tech_profile.WRedDiscardConfig.yellow:type_name -> tech_profile.RedDiscardConfig
+	10, // 10: tech_profile.WRedDiscardConfig.red:type_name -> tech_profile.RedDiscardConfig
+	3,  // 11: tech_profile.DiscardConfig.discard_policy:type_name -> tech_profile.DiscardPolicy
+	9,  // 12: tech_profile.DiscardConfig.tail_drop_discard_config:type_name -> tech_profile.TailDropDiscardConfig
+	10, // 13: tech_profile.DiscardConfig.red_discard_config:type_name -> tech_profile.RedDiscardConfig
+	11, // 14: tech_profile.DiscardConfig.wred_discard_config:type_name -> tech_profile.WRedDiscardConfig
+	0,  // 15: tech_profile.TrafficQueue.direction:type_name -> tech_profile.Direction
+	1,  // 16: tech_profile.TrafficQueue.sched_policy:type_name -> tech_profile.SchedulingPolicy
+	3,  // 17: tech_profile.TrafficQueue.discard_policy:type_name -> tech_profile.DiscardPolicy
+	12, // 18: tech_profile.TrafficQueue.discard_config:type_name -> tech_profile.DiscardConfig
+	13, // 19: tech_profile.TrafficQueues.traffic_queues:type_name -> tech_profile.TrafficQueue
+	1,  // 20: tech_profile.GemPortAttributes.scheduling_policy:type_name -> tech_profile.SchedulingPolicy
+	3,  // 21: tech_profile.GemPortAttributes.discard_policy:type_name -> tech_profile.DiscardPolicy
+	10, // 22: tech_profile.GemPortAttributes.discard_config:type_name -> tech_profile.RedDiscardConfig
+	12, // 23: tech_profile.GemPortAttributes.discard_config_v2:type_name -> tech_profile.DiscardConfig
+	0,  // 24: tech_profile.SchedulerAttributes.direction:type_name -> tech_profile.Direction
+	2,  // 25: tech_profile.SchedulerAttributes.additional_bw:type_name -> tech_profile.AdditionalBW
+	1,  // 26: tech_profile.SchedulerAttributes.q_sched_policy:type_name -> tech_profile.SchedulingPolicy
+	16, // 27: tech_profile.EPONQueueAttributes.q_thresholds:type_name -> tech_profile.QThresholds
+	1,  // 28: tech_profile.EPONQueueAttributes.scheduling_policy:type_name -> tech_profile.SchedulingPolicy
+	3,  // 29: tech_profile.EPONQueueAttributes.discard_policy:type_name -> tech_profile.DiscardPolicy
+	10, // 30: tech_profile.EPONQueueAttributes.discard_config:type_name -> tech_profile.RedDiscardConfig
+	12, // 31: tech_profile.EPONQueueAttributes.discard_config_v2:type_name -> tech_profile.DiscardConfig
+	15, // 32: tech_profile.TechProfile.instance_control:type_name -> tech_profile.InstanceControl
+	18, // 33: tech_profile.TechProfile.us_scheduler:type_name -> tech_profile.SchedulerAttributes
+	18, // 34: tech_profile.TechProfile.ds_scheduler:type_name -> tech_profile.SchedulerAttributes
+	17, // 35: tech_profile.TechProfile.upstream_gem_port_attribute_list:type_name -> tech_profile.GemPortAttributes
+	17, // 36: tech_profile.TechProfile.downstream_gem_port_attribute_list:type_name -> tech_profile.GemPortAttributes
+	15, // 37: tech_profile.EponTechProfile.instance_control:type_name -> tech_profile.InstanceControl
+	19, // 38: tech_profile.EponTechProfile.upstream_queue_attribute_list:type_name -> tech_profile.EPONQueueAttributes
+	19, // 39: tech_profile.EponTechProfile.downstream_queue_attribute_list:type_name -> tech_profile.EPONQueueAttributes
+	15, // 40: tech_profile.TechProfileInstance.instance_control:type_name -> tech_profile.InstanceControl
+	18, // 41: tech_profile.TechProfileInstance.us_scheduler:type_name -> tech_profile.SchedulerAttributes
+	18, // 42: tech_profile.TechProfileInstance.ds_scheduler:type_name -> tech_profile.SchedulerAttributes
+	17, // 43: tech_profile.TechProfileInstance.upstream_gem_port_attribute_list:type_name -> tech_profile.GemPortAttributes
+	17, // 44: tech_profile.TechProfileInstance.downstream_gem_port_attribute_list:type_name -> tech_profile.GemPortAttributes
+	15, // 45: tech_profile.EponTechProfileInstance.instance_control:type_name -> tech_profile.InstanceControl
+	19, // 46: tech_profile.EponTechProfileInstance.upstream_queue_attribute_list:type_name -> tech_profile.EPONQueueAttributes
+	19, // 47: tech_profile.EponTechProfileInstance.downstream_queue_attribute_list:type_name -> tech_profile.EPONQueueAttributes
+	48, // [48:48] is the sub-list for method output_type
+	48, // [48:48] is the sub-list for method input_type
+	48, // [48:48] is the sub-list for extension type_name
+	48, // [48:48] is the sub-list for extension extendee
+	0,  // [0:48] is the sub-list for field type_name
+}
 
-var fileDescriptor_d019a68bffe14cae = []byte{
-	// 2151 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0x4d, 0x6f, 0xdb, 0xc8,
-	0x19, 0xb6, 0x24, 0x5b, 0x1f, 0xaf, 0x24, 0x9b, 0x1e, 0xc7, 0x1b, 0xc5, 0x71, 0x36, 0x8e, 0xb6,
-	0xdb, 0x75, 0x5d, 0x34, 0xee, 0x3a, 0x1f, 0x7b, 0xc8, 0xb6, 0x0b, 0x29, 0x36, 0x12, 0xb5, 0x1b,
-	0xc7, 0xa6, 0xdd, 0xba, 0xe8, 0xa1, 0x04, 0x45, 0x8e, 0xe4, 0x69, 0xa8, 0x19, 0x7a, 0x66, 0x18,
-	0xc7, 0x7b, 0x2a, 0x16, 0xe8, 0xaf, 0x68, 0x7b, 0x29, 0xd0, 0x6b, 0x2f, 0x7b, 0x29, 0xda, 0x4b,
-	0x81, 0xfe, 0x99, 0x02, 0xfd, 0x13, 0xc5, 0x0c, 0x49, 0xf1, 0x43, 0x4a, 0x62, 0xa7, 0xca, 0x02,
-	0xdd, 0x1b, 0xe7, 0x9d, 0x67, 0xde, 0x79, 0x3f, 0x9f, 0x19, 0x92, 0xb0, 0xf1, 0x92, 0x79, 0xf2,
-	0xd4, 0xb6, 0x7c, 0xce, 0x24, 0x13, 0xdb, 0x12, 0x3b, 0xa7, 0xea, 0x79, 0x40, 0x3c, 0x7c, 0x57,
-	0xcb, 0x50, 0x23, 0x2d, 0x5b, 0x5b, 0x1f, 0x32, 0x36, 0xf4, 0xf0, 0xb6, 0xed, 0x93, 0x6d, 0x9b,
-	0x52, 0x26, 0x6d, 0x49, 0x18, 0x15, 0x21, 0xb6, 0xfd, 0xbb, 0x22, 0x2c, 0x1d, 0x39, 0xa7, 0xd8,
-	0x0d, 0x3c, 0xcc, 0x1f, 0x33, 0x3a, 0x20, 0x43, 0xf4, 0x00, 0x6a, 0x2e, 0xe1, 0xd8, 0x51, 0xb8,
-	0x56, 0x61, 0xa3, 0xb0, 0xb9, 0xb8, 0x73, 0xfd, 0x6e, 0x66, 0x9f, 0xdd, 0x78, 0xda, 0x4c, 0x90,
-	0xe8, 0x0b, 0x68, 0xda, 0xae, 0x4b, 0xd4, 0xb3, 0xed, 0x59, 0xfd, 0xf3, 0x56, 0x51, 0x2f, 0x5d,
-	0xcb, 0x2e, 0xed, 0x8c, 0x21, 0xdd, 0x13, 0xb3, 0x91, 0x2c, 0xe8, 0x9e, 0xa3, 0x35, 0xa8, 0xfa,
-	0x9c, 0x30, 0x4e, 0xe4, 0x45, 0xab, 0xb4, 0x51, 0xd8, 0xac, 0x98, 0xe3, 0x31, 0xfa, 0x00, 0xca,
-	0xe7, 0x98, 0x0c, 0x4f, 0x65, 0x6b, 0x5e, 0xcf, 0x44, 0x23, 0xd4, 0x81, 0x86, 0x50, 0xe6, 0x5b,
-	0x3e, 0xf3, 0x88, 0x73, 0xd1, 0x5a, 0xd0, 0x7b, 0x7e, 0x98, 0xdd, 0x33, 0x72, 0x90, 0xd0, 0xe1,
-	0x81, 0x46, 0x99, 0x75, 0xbd, 0x26, 0x1c, 0xb4, 0xff, 0x56, 0x00, 0x74, 0xcc, 0xed, 0xc1, 0x80,
-	0x38, 0x47, 0xa7, 0xb6, 0x4f, 0xe8, 0xb0, 0x47, 0x07, 0x0c, 0x19, 0x50, 0x72, 0x08, 0xd7, 0xfe,
-	0x57, 0x4c, 0xf5, 0xa8, 0x25, 0x7d, 0xa1, 0xdd, 0x52, 0x92, 0xbe, 0x50, 0x12, 0x9f, 0xf0, 0xc8,
-	0x58, 0xf5, 0xa8, 0x25, 0x7d, 0x11, 0x19, 0xa9, 0x1e, 0x95, 0x64, 0x48, 0xb8, 0x36, 0xac, 0x62,
-	0xaa, 0x47, 0xf4, 0x14, 0xc0, 0x76, 0x5d, 0xab, 0x7f, 0x6e, 0x11, 0xea, 0xb6, 0xca, 0xda, 0xe2,
-	0xad, 0xac, 0xc5, 0x3d, 0x3a, 0xc0, 0x9c, 0x63, 0x37, 0x8e, 0x56, 0xf7, 0xa4, 0x47, 0x5d, 0xe2,
-	0xe8, 0xd4, 0x99, 0x55, 0xdb, 0x75, 0xbb, 0xe7, 0x3d, 0xea, 0xb6, 0xff, 0x54, 0x04, 0x23, 0x36,
-	0x3d, 0x4e, 0xe2, 0xbb, 0xa6, 0xef, 0x06, 0x54, 0x6d, 0xcf, 0x63, 0x8e, 0x45, 0xdc, 0xc8, 0xc5,
-	0x8a, 0x1e, 0xf7, 0x5c, 0xf4, 0x08, 0x6a, 0x22, 0x56, 0xaf, 0x9d, 0xad, 0xef, 0xdc, 0x9a, 0x1a,
-	0xe1, 0xb8, 0x84, 0xcc, 0x04, 0x8f, 0x4c, 0xb8, 0x26, 0x43, 0x13, 0x2d, 0x11, 0x86, 0xd7, 0x22,
-	0x74, 0xc0, 0x74, 0x88, 0xea, 0x3b, 0x1b, 0x59, 0x3d, 0x93, 0x79, 0x30, 0x91, 0x9c, 0xcc, 0xcd,
-	0xf7, 0x61, 0x29, 0xbd, 0x4c, 0x99, 0x1c, 0xc6, 0xb7, 0xa9, 0xc4, 0x07, 0xa1, 0xb4, 0xe7, 0xb6,
-	0xff, 0x5e, 0x80, 0xe5, 0x7c, 0x7c, 0x04, 0xba, 0x0e, 0x15, 0x42, 0xe5, 0x40, 0xad, 0x0a, 0xb3,
-	0x5b, 0x56, 0xc3, 0x9e, 0x8b, 0x56, 0xa1, 0xcc, 0x68, 0x90, 0x04, 0x60, 0x81, 0xd1, 0x20, 0x14,
-	0x07, 0x94, 0x28, 0x71, 0x98, 0xd6, 0x85, 0x80, 0x92, 0x9e, 0xab, 0xd4, 0xf8, 0x8c, 0x4b, 0x8b,
-	0xb2, 0x68, 0xf3, 0xb2, 0x1a, 0xee, 0x33, 0xb4, 0x07, 0x8b, 0x63, 0x8f, 0xd5, 0xae, 0xa2, 0x55,
-	0xda, 0x28, 0x6d, 0xd6, 0xf3, 0x55, 0x99, 0x37, 0xcc, 0x6c, 0xca, 0x94, 0x44, 0xb4, 0x1f, 0xc2,
-	0xea, 0xb1, 0x4d, 0xbc, 0x5d, 0xce, 0xfc, 0x5d, 0x22, 0x1c, 0x9b, 0xbb, 0x51, 0x7f, 0xde, 0x02,
-	0x38, 0x0b, 0x70, 0x80, 0x2d, 0x41, 0xbe, 0xc2, 0x91, 0x0b, 0x35, 0x2d, 0x39, 0x22, 0x5f, 0xe1,
-	0xf6, 0xef, 0x0b, 0x60, 0x98, 0xd8, 0xcd, 0xae, 0xf9, 0x08, 0x9a, 0x23, 0x42, 0x2d, 0x79, 0xca,
-	0xb1, 0x38, 0x65, 0x5e, 0xec, 0x79, 0x63, 0x44, 0xe8, 0x71, 0x2c, 0xd3, 0x20, 0xfb, 0x55, 0x0a,
-	0x54, 0x8c, 0x40, 0xf6, 0xab, 0x04, 0xf4, 0x09, 0x2c, 0x29, 0x90, 0xcf, 0x59, 0xdf, 0xee, 0x13,
-	0x2f, 0x69, 0xd6, 0xc5, 0x91, 0xfd, 0xea, 0x20, 0x91, 0xb6, 0xbf, 0x29, 0xc0, 0xf2, 0xc9, 0x84,
-	0x21, 0xf7, 0x61, 0x61, 0xc8, 0x31, 0x0e, 0x2b, 0x73, 0x22, 0x26, 0x79, 0xb8, 0x19, 0x82, 0xd1,
-	0x43, 0x28, 0x5f, 0x60, 0xcf, 0x63, 0x21, 0xa9, 0xbc, 0x7d, 0x59, 0x84, 0x46, 0x3f, 0x86, 0x12,
-	0xc7, 0x6e, 0x54, 0xb3, 0x6f, 0x5b, 0xa4, 0xa0, 0xed, 0x7f, 0x17, 0xa1, 0x99, 0xb5, 0xb8, 0x0b,
-	0x8b, 0x6e, 0x28, 0x88, 0x49, 0x26, 0x6c, 0xaa, 0x9b, 0xf9, 0xa6, 0xd2, 0x98, 0x88, 0x61, 0x9a,
-	0x6e, 0x7a, 0x88, 0x7e, 0x03, 0x2d, 0x69, 0x13, 0xcf, 0x72, 0x39, 0xf3, 0xad, 0x58, 0x9b, 0xa3,
-	0xf5, 0x47, 0x1e, 0x7d, 0x94, 0x2b, 0x8e, 0x69, 0x99, 0x7f, 0x3a, 0x67, 0xae, 0xca, 0xa9, 0x25,
-	0xb1, 0x0f, 0x88, 0x63, 0x37, 0xaf, 0xf9, 0x52, 0x6e, 0x3f, 0x9d, 0x33, 0x0d, 0x9e, 0xcf, 0xd2,
-	0x21, 0xac, 0x9c, 0x4f, 0x51, 0x18, 0xf6, 0xec, 0xed, 0xac, 0xc2, 0x93, 0x29, 0x1a, 0x97, 0xcf,
-	0xf3, 0x2a, 0xbb, 0x46, 0x12, 0xc6, 0x50, 0x5b, 0xfb, 0x2f, 0x25, 0x68, 0x44, 0x4d, 0x70, 0xa8,
-	0xaa, 0xf7, 0x5d, 0x99, 0xeb, 0x16, 0xc0, 0x10, 0x8f, 0x74, 0x2f, 0x8e, 0x5b, 0xb7, 0x16, 0x49,
-	0x7a, 0xae, 0x22, 0x36, 0xbf, 0x4f, 0xa4, 0x35, 0xb2, 0x7d, 0x1d, 0x91, 0x9a, 0x59, 0x51, 0xe3,
-	0x67, 0xb6, 0x8f, 0x3e, 0x86, 0x45, 0x1b, 0x0b, 0x0b, 0x53, 0x87, 0x5f, 0xf8, 0x7a, 0x57, 0xe5,
-	0x61, 0xd5, 0x6c, 0xda, 0x58, 0xec, 0x8d, 0x85, 0x33, 0x38, 0x64, 0x32, 0x67, 0x5b, 0xf9, 0xb5,
-	0x67, 0x5b, 0x25, 0x73, 0xb6, 0x4d, 0x16, 0x5e, 0xf5, 0xca, 0x85, 0xd7, 0xcd, 0x47, 0xbd, 0x55,
-	0xd3, 0x39, 0x9c, 0xae, 0x23, 0x6a, 0x84, 0x58, 0x47, 0x38, 0x6c, 0x7f, 0x5d, 0x84, 0x66, 0x3a,
-	0x4f, 0xef, 0x9f, 0x41, 0x3b, 0x09, 0x83, 0x6a, 0x5e, 0x13, 0xad, 0xb2, 0x66, 0xd0, 0xb5, 0xa9,
-	0x0c, 0xaa, 0x8d, 0x1a, 0xb3, 0x67, 0x64, 0xe2, 0x94, 0x23, 0xa2, 0x32, 0xe5, 0x88, 0x50, 0x38,
-	0x8a, 0xe5, 0x39, 0xe3, 0x2f, 0xac, 0xd8, 0xa5, 0x6a, 0x88, 0x8b, 0xc4, 0x3d, 0xed, 0x59, 0x7b,
-	0x00, 0x4b, 0x3d, 0x2a, 0xa4, 0x4d, 0x1d, 0xfc, 0x98, 0x51, 0xc9, 0x99, 0xa7, 0x4e, 0x76, 0x46,
-	0x03, 0x1d, 0x81, 0x9a, 0xa9, 0x1e, 0x95, 0x24, 0xa0, 0x44, 0xfb, 0x5e, 0x33, 0xd5, 0x23, 0xda,
-	0x86, 0x6b, 0x8a, 0x2d, 0x87, 0x78, 0x64, 0xf9, 0xf6, 0x85, 0xc7, 0x6c, 0x37, 0x64, 0xed, 0xb0,
-	0x10, 0x97, 0x47, 0xf6, 0xab, 0x27, 0x78, 0x74, 0x10, 0xce, 0x68, 0xf6, 0xfe, 0xba, 0x08, 0xf5,
-	0xc3, 0x31, 0xdb, 0x0a, 0x74, 0x07, 0x1a, 0x67, 0x09, 0x23, 0x7f, 0xaa, 0x77, 0x6b, 0x9a, 0xf5,
-	0xb3, 0x31, 0xe4, 0xd3, 0x1c, 0x64, 0x47, 0x6f, 0x9f, 0x81, 0xec, 0xe4, 0x20, 0xf7, 0xf4, 0xf6,
-	0x19, 0xc8, 0xbd, 0x1c, 0xe4, 0xbe, 0xce, 0x54, 0x06, 0x72, 0x3f, 0x07, 0x79, 0xa0, 0x93, 0x96,
-	0x81, 0x3c, 0xc8, 0x41, 0x1e, 0xea, 0x5a, 0xcf, 0x40, 0x1e, 0xe6, 0x20, 0x9f, 0xe9, 0xb4, 0x64,
-	0x20, 0x9f, 0xb5, 0xbf, 0x59, 0x80, 0x65, 0x15, 0x17, 0xc6, 0x65, 0x47, 0x4a, 0x4e, 0xfa, 0x81,
-	0xc4, 0x22, 0xd7, 0xe7, 0x85, 0x7c, 0x9f, 0xaf, 0x03, 0xa8, 0x50, 0x9f, 0x85, 0x01, 0x0e, 0x73,
-	0x50, 0x1d, 0xd9, 0xaf, 0x0e, 0x55, 0x5c, 0xaf, 0xce, 0x02, 0xb5, 0x3c, 0x0b, 0xfc, 0x1c, 0x96,
-	0xc5, 0xb8, 0xc7, 0xaf, 0x46, 0x05, 0x86, 0xc8, 0x49, 0x94, 0x2f, 0x71, 0xff, 0x5b, 0x67, 0x11,
-	0x23, 0xd4, 0x62, 0xc9, 0xe1, 0x7b, 0xa5, 0x84, 0xbd, 0xd7, 0x50, 0xc2, 0xdb, 0x8e, 0xc7, 0x2c,
-	0x2b, 0xa0, 0x27, 0xb0, 0x9c, 0x55, 0x63, 0xbd, 0xdc, 0x69, 0x2d, 0xbe, 0x9d, 0x5c, 0x96, 0x32,
-	0x6a, 0x7e, 0xa9, 0x6b, 0x93, 0x08, 0x6b, 0x14, 0x78, 0x92, 0x38, 0xb6, 0x90, 0x2d, 0xd0, 0xc1,
-	0xaf, 0x13, 0xf1, 0x2c, 0x16, 0xa1, 0x4d, 0x30, 0xc6, 0xf3, 0xba, 0x97, 0x88, 0xdb, 0xaa, 0x47,
-	0x97, 0x8e, 0x58, 0xfe, 0x04, 0x8f, 0x7a, 0x2e, 0xfa, 0x09, 0xdc, 0x74, 0x2f, 0xa8, 0x3d, 0x22,
-	0x8e, 0x65, 0x3b, 0x0e, 0x16, 0x42, 0x19, 0xa7, 0xba, 0xd5, 0xf2, 0x88, 0x90, 0xad, 0x86, 0xd6,
-	0xdd, 0x8a, 0x20, 0x1d, 0x8d, 0x88, 0xda, 0xf9, 0x4b, 0x22, 0x24, 0x7a, 0x04, 0x6b, 0x42, 0xbd,
-	0x20, 0x4d, 0x5f, 0xdd, 0xd4, 0xab, 0xaf, 0x87, 0x88, 0x89, 0xc5, 0xed, 0x3f, 0x17, 0x61, 0x65,
-	0x7c, 0x9b, 0x4b, 0xd5, 0xed, 0x8c, 0x2e, 0xe4, 0xcd, 0xe4, 0x42, 0x3e, 0xf1, 0xaa, 0x55, 0xfa,
-	0x1f, 0x5e, 0xb5, 0xe6, 0x5f, 0x7b, 0x1c, 0x2d, 0x64, 0x6a, 0x6f, 0x17, 0x16, 0xcf, 0xac, 0xcc,
-	0x39, 0x58, 0xbe, 0x54, 0xf1, 0x37, 0xce, 0x8e, 0x52, 0x6f, 0x5b, 0xff, 0x2c, 0xc3, 0xca, 0xde,
-	0xc1, 0xf3, 0x7d, 0x4d, 0xd3, 0xa9, 0x20, 0x65, 0xbb, 0xb7, 0xf0, 0x86, 0xee, 0x2d, 0x66, 0xbb,
-	0x37, 0xcb, 0x0a, 0x21, 0xb1, 0xa5, 0x58, 0xe1, 0x92, 0xcd, 0x7d, 0x07, 0x1a, 0xf1, 0x89, 0x23,
-	0x2f, 0x7c, 0xac, 0x5d, 0xaf, 0x99, 0xf5, 0x48, 0x76, 0x7c, 0xe1, 0x63, 0x74, 0x1f, 0x3e, 0x08,
-	0xa8, 0x50, 0x5e, 0x10, 0x89, 0x5d, 0x6b, 0xc8, 0x6d, 0x2a, 0x43, 0x6b, 0x43, 0x92, 0xbb, 0x96,
-	0x9a, 0x7d, 0xa2, 0x26, 0xb5, 0xe5, 0x3f, 0x00, 0x83, 0xb2, 0x11, 0x51, 0x79, 0x22, 0x54, 0x62,
-	0xfe, 0xd2, 0xf6, 0x22, 0xc6, 0x5b, 0x8a, 0xe4, 0xbd, 0x48, 0x8c, 0x76, 0x60, 0x55, 0x32, 0x0f,
-	0x73, 0x5b, 0x86, 0x21, 0xf6, 0xac, 0xdf, 0x12, 0x29, 0x31, 0xd7, 0x3d, 0xde, 0x34, 0x57, 0xc6,
-	0x93, 0x07, 0xcc, 0xf3, 0x7e, 0xa6, 0xa7, 0xd0, 0x4f, 0xe1, 0x26, 0xc7, 0x67, 0x01, 0x16, 0xd2,
-	0x92, 0xdc, 0xa6, 0x62, 0x44, 0x84, 0x20, 0x8c, 0xc6, 0x19, 0xaa, 0xe9, 0x95, 0x37, 0x22, 0xc8,
-	0x71, 0x0a, 0x11, 0x91, 0xc1, 0x3a, 0x00, 0x0d, 0x46, 0x2a, 0xec, 0x58, 0x0a, 0xdd, 0x7a, 0x4d,
-	0xb3, 0x4a, 0x83, 0xd1, 0xe1, 0x11, 0x96, 0x02, 0x7d, 0x9e, 0xa1, 0x6a, 0xa1, 0x7b, 0xae, 0xbe,
-	0x73, 0x23, 0x9b, 0xf0, 0xd4, 0x69, 0x95, 0x66, 0x71, 0x31, 0x9d, 0x30, 0x1b, 0x33, 0x21, 0xcc,
-	0x66, 0x98, 0xe6, 0x69, 0x84, 0xb9, 0xa8, 0xa7, 0x5e, 0x4f, 0x98, 0x4b, 0x33, 0x20, 0x4c, 0x63,
-	0x66, 0x84, 0xb9, 0x7c, 0x75, 0xc2, 0x6c, 0xff, 0x75, 0x1e, 0xea, 0xc7, 0xc9, 0x25, 0x06, 0x21,
-	0x98, 0xa7, 0xf6, 0x28, 0x6e, 0x1a, 0xfd, 0x8c, 0x5a, 0x50, 0x79, 0x89, 0xb9, 0x4a, 0x74, 0xcc,
-	0x1d, 0xd1, 0x50, 0x55, 0x7a, 0x7c, 0x27, 0xd2, 0x95, 0x1e, 0x1e, 0x86, 0xf5, 0x48, 0xa6, 0x2b,
-	0xbd, 0x0d, 0x4d, 0x55, 0x14, 0xfa, 0xd2, 0xc2, 0xb8, 0x14, 0xf1, 0x5d, 0x80, 0x06, 0xa3, 0xe8,
-	0x54, 0x16, 0xe8, 0x29, 0x18, 0x24, 0xba, 0x0f, 0xc5, 0x24, 0xa9, 0x9b, 0x66, 0xe2, 0xd3, 0x40,
-	0xee, 0xd6, 0x64, 0x2e, 0x91, 0xdc, 0x35, 0x6a, 0x17, 0x1a, 0x81, 0xb0, 0x92, 0x0f, 0x0c, 0x65,
-	0xad, 0xe5, 0xce, 0x6b, 0x3e, 0x30, 0x24, 0x94, 0x61, 0xd6, 0x03, 0x91, 0x7c, 0xf5, 0xd8, 0x85,
-	0x86, 0x9b, 0xd6, 0x52, 0xb9, 0xb4, 0x16, 0x37, 0xa5, 0x65, 0x08, 0x1b, 0x81, 0x2f, 0x24, 0xc7,
-	0x76, 0xe2, 0xbe, 0x65, 0xc7, 0xe0, 0xf0, 0x14, 0xa8, 0xea, 0xab, 0x68, 0xee, 0x25, 0x68, 0xe2,
-	0xb6, 0x62, 0xae, 0xc7, 0x8a, 0xf2, 0x53, 0xfa, 0xa0, 0x79, 0x01, 0x6d, 0x97, 0x9d, 0xd3, 0xb7,
-	0x6c, 0x55, 0xbb, 0xdc, 0x56, 0x1f, 0x26, 0xaa, 0xa6, 0x6d, 0xd6, 0xfe, 0x57, 0x09, 0x96, 0xf6,
-	0x7c, 0x46, 0xbf, 0x43, 0x45, 0xa3, 0x0c, 0xb2, 0x9d, 0x17, 0xf6, 0x30, 0x32, 0xa8, 0x1c, 0x19,
-	0x14, 0xca, 0xb4, 0x41, 0x2e, 0xdc, 0x1a, 0xe7, 0x32, 0xfc, 0x5e, 0x92, 0x8b, 0x6e, 0x45, 0x47,
-	0x37, 0x57, 0x22, 0x53, 0xce, 0x26, 0x73, 0x2d, 0xd6, 0x93, 0x9d, 0xd0, 0x89, 0x3c, 0x85, 0xdb,
-	0xa9, 0x44, 0x4e, 0xdd, 0xa7, 0x7a, 0xd9, 0x7d, 0xd6, 0x13, 0x4d, 0x93, 0x3b, 0xb5, 0xff, 0x33,
-	0x0f, 0x2b, 0xa9, 0x0c, 0xc6, 0x21, 0xba, 0x62, 0x26, 0xef, 0xc1, 0xaa, 0x08, 0xfa, 0xc2, 0xe1,
-	0xa4, 0x8f, 0xb9, 0x45, 0x5c, 0x4c, 0x25, 0x19, 0x90, 0xe8, 0xbb, 0x5e, 0xcd, 0xbc, 0x96, 0x4c,
-	0xf6, 0xc6, 0x73, 0x13, 0xe9, 0x9f, 0xbf, 0x44, 0xfa, 0x17, 0x2e, 0x97, 0xfe, 0xf2, 0x4c, 0x38,
-	0xa3, 0x32, 0x13, 0xce, 0xa8, 0xbe, 0x37, 0xce, 0xa8, 0x7d, 0x7b, 0x9c, 0x01, 0xb3, 0xe1, 0x8c,
-	0x3f, 0xcc, 0xc3, 0xf5, 0x1c, 0x67, 0xfc, 0x1f, 0x56, 0x5c, 0xfa, 0x0e, 0x5d, 0xce, 0xde, 0xa1,
-	0xa7, 0x15, 0x63, 0x65, 0x26, 0x5c, 0x54, 0x7d, 0x07, 0x2e, 0xaa, 0x7d, 0x4b, 0x5c, 0x04, 0xb3,
-	0xe1, 0xa2, 0x7f, 0xe8, 0x6f, 0xcc, 0x82, 0x05, 0xdc, 0x49, 0xca, 0x62, 0x05, 0x16, 0xa4, 0x1f,
-	0xbf, 0x9a, 0x37, 0xcd, 0x79, 0xe9, 0xf7, 0xdc, 0x89, 0x44, 0x16, 0x27, 0x13, 0xf9, 0x4e, 0x05,
-	0x92, 0xce, 0xec, 0x7c, 0x36, 0xb3, 0xb7, 0xa1, 0x9e, 0xbc, 0x11, 0xa8, 0xb2, 0x28, 0x6d, 0x36,
-	0x4d, 0x18, 0xbf, 0x12, 0x88, 0xad, 0xcf, 0xa1, 0x36, 0x7e, 0xe3, 0x42, 0x0d, 0xa8, 0xfe, 0xe2,
-	0xe0, 0xe8, 0xd8, 0xdc, 0xeb, 0x3c, 0x33, 0xe6, 0xd0, 0x22, 0xc0, 0xee, 0xf3, 0x93, 0xfd, 0x68,
-	0x5c, 0x40, 0xcb, 0xd0, 0xec, 0xf6, 0x76, 0x7b, 0xe6, 0xde, 0xe3, 0xe3, 0xde, 0xf3, 0xfd, 0xce,
-	0x97, 0x46, 0x71, 0xeb, 0x11, 0x18, 0xf9, 0xfb, 0x2a, 0xaa, 0x40, 0xe9, 0xc4, 0x34, 0x8d, 0x39,
-	0x84, 0x60, 0xf1, 0x48, 0x72, 0xe2, 0xc8, 0x83, 0xe8, 0x6a, 0x6a, 0x14, 0x10, 0x40, 0xf9, 0xe9,
-	0x45, 0x9f, 0x13, 0xd7, 0x28, 0x6e, 0x51, 0x68, 0xa4, 0x5f, 0xcb, 0xd0, 0x2a, 0x2c, 0xa7, 0xc7,
-	0xd6, 0x3e, 0xa3, 0xd8, 0x98, 0x43, 0x2b, 0xb0, 0x94, 0x15, 0x77, 0x8c, 0x02, 0xba, 0x09, 0xd7,
-	0x33, 0xc2, 0x2e, 0x16, 0x72, 0x6f, 0x30, 0x60, 0x5c, 0x1a, 0xc5, 0x09, 0x45, 0x9d, 0x40, 0x32,
-	0xa3, 0xb4, 0xf5, 0xc5, 0xf8, 0x6b, 0x76, 0x64, 0x69, 0x03, 0xaa, 0xf1, 0xb7, 0x65, 0x63, 0x0e,
-	0x35, 0xa1, 0x76, 0x32, 0x1e, 0x16, 0x94, 0x1b, 0x26, 0x76, 0x8d, 0x22, 0xaa, 0xc2, 0xfc, 0x89,
-	0x7a, 0x2a, 0x6d, 0xfd, 0xb1, 0x00, 0xeb, 0x6f, 0xfa, 0x1b, 0x85, 0x3e, 0x86, 0x3b, 0x6f, 0x9a,
-	0x8f, 0x3d, 0xda, 0x84, 0xef, 0xbd, 0x11, 0xd6, 0x11, 0x22, 0xe0, 0xd8, 0x35, 0x0a, 0xe8, 0x87,
-	0xf0, 0xc9, 0x1b, 0x91, 0x69, 0xb7, 0xbb, 0xbf, 0x82, 0x0d, 0xc6, 0x87, 0x77, 0x99, 0x8f, 0xa9,
-	0xc3, 0xb8, 0x7b, 0x37, 0xfc, 0x39, 0x9a, 0x29, 0xef, 0x5f, 0xdf, 0x1f, 0x12, 0x79, 0x1a, 0xf4,
-	0xef, 0x3a, 0x6c, 0xb4, 0x1d, 0x03, 0xb7, 0x43, 0xe0, 0x8f, 0xa2, 0xbf, 0xa8, 0x2f, 0x1f, 0x6c,
-	0x0f, 0x59, 0xe6, 0x5f, 0x6a, 0xbf, 0xac, 0xa7, 0xee, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe0,
-	0x3d, 0x33, 0x15, 0x70, 0x1d, 0x00, 0x00,
+func init() { file_voltha_protos_tech_profile_proto_init() }
+func file_voltha_protos_tech_profile_proto_init() {
+	if File_voltha_protos_tech_profile_proto != nil {
+		return
+	}
+	file_voltha_protos_tech_profile_proto_msgTypes[7].OneofWrappers = []any{
+		(*DiscardConfig_TailDropDiscardConfig)(nil),
+		(*DiscardConfig_RedDiscardConfig)(nil),
+		(*DiscardConfig_WredDiscardConfig)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_tech_profile_proto_rawDesc), len(file_voltha_protos_tech_profile_proto_rawDesc)),
+			NumEnums:      5,
+			NumMessages:   20,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_tech_profile_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_tech_profile_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_tech_profile_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_tech_profile_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_tech_profile_proto = out.File
+	file_voltha_protos_tech_profile_proto_goTypes = nil
+	file_voltha_protos_tech_profile_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
index b0aeb8e..5ddcfda 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
@@ -1,69 +1,89 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voip_system_profile.proto
 
 package voip_system_profile
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type VoipSystemProfileRequest struct {
-	Key                  string             `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	VoipSystemProfile    *VoipSystemProfile `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	Key               string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipSystemProfile *VoipSystemProfile     `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *VoipSystemProfileRequest) Reset()         { *m = VoipSystemProfileRequest{} }
-func (m *VoipSystemProfileRequest) String() string { return proto.CompactTextString(m) }
-func (*VoipSystemProfileRequest) ProtoMessage()    {}
+func (x *VoipSystemProfileRequest) Reset() {
+	*x = VoipSystemProfileRequest{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipSystemProfileRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipSystemProfileRequest) ProtoMessage() {}
+
+func (x *VoipSystemProfileRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipSystemProfileRequest.ProtoReflect.Descriptor instead.
 func (*VoipSystemProfileRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{0}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *VoipSystemProfileRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipSystemProfileRequest.Unmarshal(m, b)
-}
-func (m *VoipSystemProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipSystemProfileRequest.Marshal(b, m, deterministic)
-}
-func (m *VoipSystemProfileRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipSystemProfileRequest.Merge(m, src)
-}
-func (m *VoipSystemProfileRequest) XXX_Size() int {
-	return xxx_messageInfo_VoipSystemProfileRequest.Size(m)
-}
-func (m *VoipSystemProfileRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipSystemProfileRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipSystemProfileRequest proto.InternalMessageInfo
-
-func (m *VoipSystemProfileRequest) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *VoipSystemProfileRequest) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
-	if m != nil {
-		return m.VoipSystemProfile
+func (x *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
+	if x != nil {
+		return x.VoipSystemProfile
 	}
 	return nil
 }
@@ -71,1624 +91,1799 @@
 // A system wide profile for voip service that can be stored into voltha KV anytime.
 // Designed based on G988-2017 (also designed flexible to be able to be modified later on)
 type VoipSystemProfile struct {
-	SipConfig            *SipConfig  `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
-	VoipConfig           *VoipConfig `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	SipConfig     *SipConfig             `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
+	VoipConfig    *VoipConfig            `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *VoipSystemProfile) Reset()         { *m = VoipSystemProfile{} }
-func (m *VoipSystemProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipSystemProfile) ProtoMessage()    {}
+func (x *VoipSystemProfile) Reset() {
+	*x = VoipSystemProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipSystemProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipSystemProfile) ProtoMessage() {}
+
+func (x *VoipSystemProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipSystemProfile.ProtoReflect.Descriptor instead.
 func (*VoipSystemProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{1}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *VoipSystemProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipSystemProfile.Unmarshal(m, b)
-}
-func (m *VoipSystemProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipSystemProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipSystemProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipSystemProfile.Merge(m, src)
-}
-func (m *VoipSystemProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipSystemProfile.Size(m)
-}
-func (m *VoipSystemProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipSystemProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipSystemProfile proto.InternalMessageInfo
-
-func (m *VoipSystemProfile) GetSipConfig() *SipConfig {
-	if m != nil {
-		return m.SipConfig
+func (x *VoipSystemProfile) GetSipConfig() *SipConfig {
+	if x != nil {
+		return x.SipConfig
 	}
 	return nil
 }
 
-func (m *VoipSystemProfile) GetVoipConfig() *VoipConfig {
-	if m != nil {
-		return m.VoipConfig
+func (x *VoipSystemProfile) GetVoipConfig() *VoipConfig {
+	if x != nil {
+		return x.VoipConfig
 	}
 	return nil
 }
 
 // Common voip fields are grouped here
 type VoipConfig struct {
-	IpHostConfig         *IpHostConfig        `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
-	TcpUdpConfig         *TcpUdpConfig        `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
-	VoipVoiceCtp         *VoipVoiceCtp        `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
-	VoipMediaProfile     *VoipMediaProfile    `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
-	VoiceServiceProfile  *VoiceServiceProfile `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
-	RtpProfile           *RtpProfile          `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
-	PptpPotsUni          *PptpPotsUni         `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	IpHostConfig        *IpHostConfig          `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
+	TcpUdpConfig        *TcpUdpConfig          `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
+	VoipVoiceCtp        *VoipVoiceCtp          `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
+	VoipMediaProfile    *VoipMediaProfile      `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
+	VoiceServiceProfile *VoiceServiceProfile   `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
+	RtpProfile          *RtpProfile            `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
+	PptpPotsUni         *PptpPotsUni           `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *VoipConfig) Reset()         { *m = VoipConfig{} }
-func (m *VoipConfig) String() string { return proto.CompactTextString(m) }
-func (*VoipConfig) ProtoMessage()    {}
+func (x *VoipConfig) Reset() {
+	*x = VoipConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipConfig) ProtoMessage() {}
+
+func (x *VoipConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipConfig.ProtoReflect.Descriptor instead.
 func (*VoipConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{2}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *VoipConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipConfig.Unmarshal(m, b)
-}
-func (m *VoipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipConfig.Marshal(b, m, deterministic)
-}
-func (m *VoipConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipConfig.Merge(m, src)
-}
-func (m *VoipConfig) XXX_Size() int {
-	return xxx_messageInfo_VoipConfig.Size(m)
-}
-func (m *VoipConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipConfig proto.InternalMessageInfo
-
-func (m *VoipConfig) GetIpHostConfig() *IpHostConfig {
-	if m != nil {
-		return m.IpHostConfig
+func (x *VoipConfig) GetIpHostConfig() *IpHostConfig {
+	if x != nil {
+		return x.IpHostConfig
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
-	if m != nil {
-		return m.TcpUdpConfig
+func (x *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
+	if x != nil {
+		return x.TcpUdpConfig
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
-	if m != nil {
-		return m.VoipVoiceCtp
+func (x *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
+	if x != nil {
+		return x.VoipVoiceCtp
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
-	if m != nil {
-		return m.VoipMediaProfile
+func (x *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
+	if x != nil {
+		return x.VoipMediaProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
-	if m != nil {
-		return m.VoiceServiceProfile
+func (x *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
+	if x != nil {
+		return x.VoiceServiceProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetRtpProfile() *RtpProfile {
-	if m != nil {
-		return m.RtpProfile
+func (x *VoipConfig) GetRtpProfile() *RtpProfile {
+	if x != nil {
+		return x.RtpProfile
 	}
 	return nil
 }
 
-func (m *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
-	if m != nil {
-		return m.PptpPotsUni
+func (x *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
+	if x != nil {
+		return x.PptpPotsUni
 	}
 	return nil
 }
 
 type IpHostConfig struct {
-	IpOptions            uint32   `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
-	OnuIdentifier        string   `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
-	IpAddress            string   `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
-	Mask                 string   `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
-	Gateway              string   `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
-	PrimaryDns           string   `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
-	SecondaryDns         string   `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
-	RelayAgentOptions    string   `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state             protoimpl.MessageState `protogen:"open.v1"`
+	IpOptions         uint32                 `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
+	OnuIdentifier     string                 `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
+	IpAddress         string                 `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
+	Mask              string                 `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
+	Gateway           string                 `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
+	PrimaryDns        string                 `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
+	SecondaryDns      string                 `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
+	RelayAgentOptions string                 `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *IpHostConfig) Reset()         { *m = IpHostConfig{} }
-func (m *IpHostConfig) String() string { return proto.CompactTextString(m) }
-func (*IpHostConfig) ProtoMessage()    {}
+func (x *IpHostConfig) Reset() {
+	*x = IpHostConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *IpHostConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*IpHostConfig) ProtoMessage() {}
+
+func (x *IpHostConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use IpHostConfig.ProtoReflect.Descriptor instead.
 func (*IpHostConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{3}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *IpHostConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IpHostConfig.Unmarshal(m, b)
-}
-func (m *IpHostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IpHostConfig.Marshal(b, m, deterministic)
-}
-func (m *IpHostConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IpHostConfig.Merge(m, src)
-}
-func (m *IpHostConfig) XXX_Size() int {
-	return xxx_messageInfo_IpHostConfig.Size(m)
-}
-func (m *IpHostConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_IpHostConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IpHostConfig proto.InternalMessageInfo
-
-func (m *IpHostConfig) GetIpOptions() uint32 {
-	if m != nil {
-		return m.IpOptions
+func (x *IpHostConfig) GetIpOptions() uint32 {
+	if x != nil {
+		return x.IpOptions
 	}
 	return 0
 }
 
-func (m *IpHostConfig) GetOnuIdentifier() string {
-	if m != nil {
-		return m.OnuIdentifier
+func (x *IpHostConfig) GetOnuIdentifier() string {
+	if x != nil {
+		return x.OnuIdentifier
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetIpAddress() string {
-	if m != nil {
-		return m.IpAddress
+func (x *IpHostConfig) GetIpAddress() string {
+	if x != nil {
+		return x.IpAddress
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetMask() string {
-	if m != nil {
-		return m.Mask
+func (x *IpHostConfig) GetMask() string {
+	if x != nil {
+		return x.Mask
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetGateway() string {
-	if m != nil {
-		return m.Gateway
+func (x *IpHostConfig) GetGateway() string {
+	if x != nil {
+		return x.Gateway
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetPrimaryDns() string {
-	if m != nil {
-		return m.PrimaryDns
+func (x *IpHostConfig) GetPrimaryDns() string {
+	if x != nil {
+		return x.PrimaryDns
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetSecondaryDns() string {
-	if m != nil {
-		return m.SecondaryDns
+func (x *IpHostConfig) GetSecondaryDns() string {
+	if x != nil {
+		return x.SecondaryDns
 	}
 	return ""
 }
 
-func (m *IpHostConfig) GetRelayAgentOptions() string {
-	if m != nil {
-		return m.RelayAgentOptions
+func (x *IpHostConfig) GetRelayAgentOptions() string {
+	if x != nil {
+		return x.RelayAgentOptions
 	}
 	return ""
 }
 
 type TcpUdpConfig struct {
-	Protocol             uint32   `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
-	TosField             string   `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Protocol      uint32                 `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
+	TosField      string                 `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *TcpUdpConfig) Reset()         { *m = TcpUdpConfig{} }
-func (m *TcpUdpConfig) String() string { return proto.CompactTextString(m) }
-func (*TcpUdpConfig) ProtoMessage()    {}
+func (x *TcpUdpConfig) Reset() {
+	*x = TcpUdpConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *TcpUdpConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TcpUdpConfig) ProtoMessage() {}
+
+func (x *TcpUdpConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TcpUdpConfig.ProtoReflect.Descriptor instead.
 func (*TcpUdpConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{4}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *TcpUdpConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_TcpUdpConfig.Unmarshal(m, b)
-}
-func (m *TcpUdpConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_TcpUdpConfig.Marshal(b, m, deterministic)
-}
-func (m *TcpUdpConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TcpUdpConfig.Merge(m, src)
-}
-func (m *TcpUdpConfig) XXX_Size() int {
-	return xxx_messageInfo_TcpUdpConfig.Size(m)
-}
-func (m *TcpUdpConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_TcpUdpConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_TcpUdpConfig proto.InternalMessageInfo
-
-func (m *TcpUdpConfig) GetProtocol() uint32 {
-	if m != nil {
-		return m.Protocol
+func (x *TcpUdpConfig) GetProtocol() uint32 {
+	if x != nil {
+		return x.Protocol
 	}
 	return 0
 }
 
-func (m *TcpUdpConfig) GetTosField() string {
-	if m != nil {
-		return m.TosField
+func (x *TcpUdpConfig) GetTosField() string {
+	if x != nil {
+		return x.TosField
 	}
 	return ""
 }
 
 type VoipVoiceCtp struct {
-	SignallingCode       uint32   `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state          protoimpl.MessageState `protogen:"open.v1"`
+	SignallingCode uint32                 `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *VoipVoiceCtp) Reset()         { *m = VoipVoiceCtp{} }
-func (m *VoipVoiceCtp) String() string { return proto.CompactTextString(m) }
-func (*VoipVoiceCtp) ProtoMessage()    {}
+func (x *VoipVoiceCtp) Reset() {
+	*x = VoipVoiceCtp{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipVoiceCtp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipVoiceCtp) ProtoMessage() {}
+
+func (x *VoipVoiceCtp) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipVoiceCtp.ProtoReflect.Descriptor instead.
 func (*VoipVoiceCtp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{5}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *VoipVoiceCtp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipVoiceCtp.Unmarshal(m, b)
-}
-func (m *VoipVoiceCtp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipVoiceCtp.Marshal(b, m, deterministic)
-}
-func (m *VoipVoiceCtp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipVoiceCtp.Merge(m, src)
-}
-func (m *VoipVoiceCtp) XXX_Size() int {
-	return xxx_messageInfo_VoipVoiceCtp.Size(m)
-}
-func (m *VoipVoiceCtp) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipVoiceCtp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipVoiceCtp proto.InternalMessageInfo
-
-func (m *VoipVoiceCtp) GetSignallingCode() uint32 {
-	if m != nil {
-		return m.SignallingCode
+func (x *VoipVoiceCtp) GetSignallingCode() uint32 {
+	if x != nil {
+		return x.SignallingCode
 	}
 	return 0
 }
 
 type VoipMediaProfile struct {
-	FaxMode                uint32   `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
-	CodecSelection1        uint32   `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
-	PacketPeriodSelection1 uint32   `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
-	SilenceSuppression1    uint32   `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
-	CodecSelection2        uint32   `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
-	PacketPeriodSelection2 uint32   `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
-	SilenceSuppression2    uint32   `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
-	CodecSelection3        uint32   `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
-	PacketPeriodSelection3 uint32   `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
-	SilenceSuppression3    uint32   `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
-	CodecSelection4        uint32   `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
-	PacketPeriodSelection4 uint32   `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
-	SilenceSuppression4    uint32   `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
-	OobDtmf                uint32   `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
-	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
-	XXX_unrecognized       []byte   `json:"-"`
-	XXX_sizecache          int32    `json:"-"`
+	state                  protoimpl.MessageState `protogen:"open.v1"`
+	FaxMode                uint32                 `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
+	CodecSelection1        uint32                 `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
+	PacketPeriodSelection1 uint32                 `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
+	SilenceSuppression1    uint32                 `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
+	CodecSelection2        uint32                 `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
+	PacketPeriodSelection2 uint32                 `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
+	SilenceSuppression2    uint32                 `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
+	CodecSelection3        uint32                 `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
+	PacketPeriodSelection3 uint32                 `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
+	SilenceSuppression3    uint32                 `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
+	CodecSelection4        uint32                 `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
+	PacketPeriodSelection4 uint32                 `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
+	SilenceSuppression4    uint32                 `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
+	OobDtmf                uint32                 `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
+	unknownFields          protoimpl.UnknownFields
+	sizeCache              protoimpl.SizeCache
 }
 
-func (m *VoipMediaProfile) Reset()         { *m = VoipMediaProfile{} }
-func (m *VoipMediaProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipMediaProfile) ProtoMessage()    {}
+func (x *VoipMediaProfile) Reset() {
+	*x = VoipMediaProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipMediaProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipMediaProfile) ProtoMessage() {}
+
+func (x *VoipMediaProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipMediaProfile.ProtoReflect.Descriptor instead.
 func (*VoipMediaProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{6}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *VoipMediaProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipMediaProfile.Unmarshal(m, b)
-}
-func (m *VoipMediaProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipMediaProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipMediaProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipMediaProfile.Merge(m, src)
-}
-func (m *VoipMediaProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipMediaProfile.Size(m)
-}
-func (m *VoipMediaProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipMediaProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipMediaProfile proto.InternalMessageInfo
-
-func (m *VoipMediaProfile) GetFaxMode() uint32 {
-	if m != nil {
-		return m.FaxMode
+func (x *VoipMediaProfile) GetFaxMode() uint32 {
+	if x != nil {
+		return x.FaxMode
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection1() uint32 {
-	if m != nil {
-		return m.CodecSelection1
+func (x *VoipMediaProfile) GetCodecSelection1() uint32 {
+	if x != nil {
+		return x.CodecSelection1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection1
+func (x *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression1() uint32 {
-	if m != nil {
-		return m.SilenceSuppression1
+func (x *VoipMediaProfile) GetSilenceSuppression1() uint32 {
+	if x != nil {
+		return x.SilenceSuppression1
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection2() uint32 {
-	if m != nil {
-		return m.CodecSelection2
+func (x *VoipMediaProfile) GetCodecSelection2() uint32 {
+	if x != nil {
+		return x.CodecSelection2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection2
+func (x *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression2() uint32 {
-	if m != nil {
-		return m.SilenceSuppression2
+func (x *VoipMediaProfile) GetSilenceSuppression2() uint32 {
+	if x != nil {
+		return x.SilenceSuppression2
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection3() uint32 {
-	if m != nil {
-		return m.CodecSelection3
+func (x *VoipMediaProfile) GetCodecSelection3() uint32 {
+	if x != nil {
+		return x.CodecSelection3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection3
+func (x *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression3() uint32 {
-	if m != nil {
-		return m.SilenceSuppression3
+func (x *VoipMediaProfile) GetSilenceSuppression3() uint32 {
+	if x != nil {
+		return x.SilenceSuppression3
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetCodecSelection4() uint32 {
-	if m != nil {
-		return m.CodecSelection4
+func (x *VoipMediaProfile) GetCodecSelection4() uint32 {
+	if x != nil {
+		return x.CodecSelection4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
-	if m != nil {
-		return m.PacketPeriodSelection4
+func (x *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
+	if x != nil {
+		return x.PacketPeriodSelection4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetSilenceSuppression4() uint32 {
-	if m != nil {
-		return m.SilenceSuppression4
+func (x *VoipMediaProfile) GetSilenceSuppression4() uint32 {
+	if x != nil {
+		return x.SilenceSuppression4
 	}
 	return 0
 }
 
-func (m *VoipMediaProfile) GetOobDtmf() uint32 {
-	if m != nil {
-		return m.OobDtmf
+func (x *VoipMediaProfile) GetOobDtmf() uint32 {
+	if x != nil {
+		return x.OobDtmf
 	}
 	return 0
 }
 
 type VoiceServiceProfile struct {
-	AnnouncementType     uint32   `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
-	JitterTarget         uint32   `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
-	JitterBufferMax      uint32   `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
-	EchoCancelInd        bool     `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
-	PstnProtocolVariant  uint32   `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
-	DtmfDigitLevels      uint32   `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
-	DtmfDigitDuration    uint32   `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
-	HookFlashMinimumTime uint32   `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	AnnouncementType     uint32                 `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
+	JitterTarget         uint32                 `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
+	JitterBufferMax      uint32                 `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
+	EchoCancelInd        bool                   `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
+	PstnProtocolVariant  uint32                 `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
+	DtmfDigitLevels      uint32                 `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
+	DtmfDigitDuration    uint32                 `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
+	HookFlashMinimumTime uint32                 `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *VoiceServiceProfile) Reset()         { *m = VoiceServiceProfile{} }
-func (m *VoiceServiceProfile) String() string { return proto.CompactTextString(m) }
-func (*VoiceServiceProfile) ProtoMessage()    {}
+func (x *VoiceServiceProfile) Reset() {
+	*x = VoiceServiceProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoiceServiceProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoiceServiceProfile) ProtoMessage() {}
+
+func (x *VoiceServiceProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoiceServiceProfile.ProtoReflect.Descriptor instead.
 func (*VoiceServiceProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{7}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *VoiceServiceProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoiceServiceProfile.Unmarshal(m, b)
-}
-func (m *VoiceServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoiceServiceProfile.Marshal(b, m, deterministic)
-}
-func (m *VoiceServiceProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoiceServiceProfile.Merge(m, src)
-}
-func (m *VoiceServiceProfile) XXX_Size() int {
-	return xxx_messageInfo_VoiceServiceProfile.Size(m)
-}
-func (m *VoiceServiceProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoiceServiceProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoiceServiceProfile proto.InternalMessageInfo
-
-func (m *VoiceServiceProfile) GetAnnouncementType() uint32 {
-	if m != nil {
-		return m.AnnouncementType
+func (x *VoiceServiceProfile) GetAnnouncementType() uint32 {
+	if x != nil {
+		return x.AnnouncementType
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetJitterTarget() uint32 {
-	if m != nil {
-		return m.JitterTarget
+func (x *VoiceServiceProfile) GetJitterTarget() uint32 {
+	if x != nil {
+		return x.JitterTarget
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetJitterBufferMax() uint32 {
-	if m != nil {
-		return m.JitterBufferMax
+func (x *VoiceServiceProfile) GetJitterBufferMax() uint32 {
+	if x != nil {
+		return x.JitterBufferMax
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetEchoCancelInd() bool {
-	if m != nil {
-		return m.EchoCancelInd
+func (x *VoiceServiceProfile) GetEchoCancelInd() bool {
+	if x != nil {
+		return x.EchoCancelInd
 	}
 	return false
 }
 
-func (m *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
-	if m != nil {
-		return m.PstnProtocolVariant
+func (x *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
+	if x != nil {
+		return x.PstnProtocolVariant
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
-	if m != nil {
-		return m.DtmfDigitLevels
+func (x *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
+	if x != nil {
+		return x.DtmfDigitLevels
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
-	if m != nil {
-		return m.DtmfDigitDuration
+func (x *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
+	if x != nil {
+		return x.DtmfDigitDuration
 	}
 	return 0
 }
 
-func (m *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
-	if m != nil {
-		return m.HookFlashMinimumTime
+func (x *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
+	if x != nil {
+		return x.HookFlashMinimumTime
 	}
 	return 0
 }
 
 type RtpProfile struct {
-	LocalPortMin         uint32   `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
-	LocalPortMax         uint32   `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
-	DscpMark             string   `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
-	PiggyBackEvents      uint32   `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
-	ToneEvents           uint32   `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
-	DtmfEvents           uint32   `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
-	CasEvents            uint32   `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	LocalPortMin    uint32                 `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
+	LocalPortMax    uint32                 `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
+	DscpMark        string                 `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
+	PiggyBackEvents uint32                 `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
+	ToneEvents      uint32                 `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
+	DtmfEvents      uint32                 `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
+	CasEvents       uint32                 `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *RtpProfile) Reset()         { *m = RtpProfile{} }
-func (m *RtpProfile) String() string { return proto.CompactTextString(m) }
-func (*RtpProfile) ProtoMessage()    {}
+func (x *RtpProfile) Reset() {
+	*x = RtpProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RtpProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RtpProfile) ProtoMessage() {}
+
+func (x *RtpProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RtpProfile.ProtoReflect.Descriptor instead.
 func (*RtpProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{8}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *RtpProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RtpProfile.Unmarshal(m, b)
-}
-func (m *RtpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RtpProfile.Marshal(b, m, deterministic)
-}
-func (m *RtpProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RtpProfile.Merge(m, src)
-}
-func (m *RtpProfile) XXX_Size() int {
-	return xxx_messageInfo_RtpProfile.Size(m)
-}
-func (m *RtpProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_RtpProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RtpProfile proto.InternalMessageInfo
-
-func (m *RtpProfile) GetLocalPortMin() uint32 {
-	if m != nil {
-		return m.LocalPortMin
+func (x *RtpProfile) GetLocalPortMin() uint32 {
+	if x != nil {
+		return x.LocalPortMin
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetLocalPortMax() uint32 {
-	if m != nil {
-		return m.LocalPortMax
+func (x *RtpProfile) GetLocalPortMax() uint32 {
+	if x != nil {
+		return x.LocalPortMax
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetDscpMark() string {
-	if m != nil {
-		return m.DscpMark
+func (x *RtpProfile) GetDscpMark() string {
+	if x != nil {
+		return x.DscpMark
 	}
 	return ""
 }
 
-func (m *RtpProfile) GetPiggyBackEvents() uint32 {
-	if m != nil {
-		return m.PiggyBackEvents
+func (x *RtpProfile) GetPiggyBackEvents() uint32 {
+	if x != nil {
+		return x.PiggyBackEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetToneEvents() uint32 {
-	if m != nil {
-		return m.ToneEvents
+func (x *RtpProfile) GetToneEvents() uint32 {
+	if x != nil {
+		return x.ToneEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetDtmfEvents() uint32 {
-	if m != nil {
-		return m.DtmfEvents
+func (x *RtpProfile) GetDtmfEvents() uint32 {
+	if x != nil {
+		return x.DtmfEvents
 	}
 	return 0
 }
 
-func (m *RtpProfile) GetCasEvents() uint32 {
-	if m != nil {
-		return m.CasEvents
+func (x *RtpProfile) GetCasEvents() uint32 {
+	if x != nil {
+		return x.CasEvents
 	}
 	return 0
 }
 
 type PptpPotsUni struct {
-	Arc                  string   `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
-	ArcInterval          string   `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
-	Impedance            uint32   `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
-	TransmissionPath     uint32   `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
-	RxGain               int32    `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
-	TxGain               int32    `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
-	PotsHoldOverTime     uint32   `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
-	NominalFeedVoltage   uint32   `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
-	LossOfSoftSwitch     uint32   `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	Arc                string                 `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
+	ArcInterval        string                 `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
+	Impedance          uint32                 `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
+	TransmissionPath   uint32                 `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
+	RxGain             int32                  `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
+	TxGain             int32                  `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
+	PotsHoldOverTime   uint32                 `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
+	NominalFeedVoltage uint32                 `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
+	LossOfSoftSwitch   uint32                 `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
 }
 
-func (m *PptpPotsUni) Reset()         { *m = PptpPotsUni{} }
-func (m *PptpPotsUni) String() string { return proto.CompactTextString(m) }
-func (*PptpPotsUni) ProtoMessage()    {}
+func (x *PptpPotsUni) Reset() {
+	*x = PptpPotsUni{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PptpPotsUni) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PptpPotsUni) ProtoMessage() {}
+
+func (x *PptpPotsUni) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PptpPotsUni.ProtoReflect.Descriptor instead.
 func (*PptpPotsUni) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{9}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *PptpPotsUni) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PptpPotsUni.Unmarshal(m, b)
-}
-func (m *PptpPotsUni) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PptpPotsUni.Marshal(b, m, deterministic)
-}
-func (m *PptpPotsUni) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PptpPotsUni.Merge(m, src)
-}
-func (m *PptpPotsUni) XXX_Size() int {
-	return xxx_messageInfo_PptpPotsUni.Size(m)
-}
-func (m *PptpPotsUni) XXX_DiscardUnknown() {
-	xxx_messageInfo_PptpPotsUni.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PptpPotsUni proto.InternalMessageInfo
-
-func (m *PptpPotsUni) GetArc() string {
-	if m != nil {
-		return m.Arc
+func (x *PptpPotsUni) GetArc() string {
+	if x != nil {
+		return x.Arc
 	}
 	return ""
 }
 
-func (m *PptpPotsUni) GetArcInterval() string {
-	if m != nil {
-		return m.ArcInterval
+func (x *PptpPotsUni) GetArcInterval() string {
+	if x != nil {
+		return x.ArcInterval
 	}
 	return ""
 }
 
-func (m *PptpPotsUni) GetImpedance() uint32 {
-	if m != nil {
-		return m.Impedance
+func (x *PptpPotsUni) GetImpedance() uint32 {
+	if x != nil {
+		return x.Impedance
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetTransmissionPath() uint32 {
-	if m != nil {
-		return m.TransmissionPath
+func (x *PptpPotsUni) GetTransmissionPath() uint32 {
+	if x != nil {
+		return x.TransmissionPath
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetRxGain() int32 {
-	if m != nil {
-		return m.RxGain
+func (x *PptpPotsUni) GetRxGain() int32 {
+	if x != nil {
+		return x.RxGain
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetTxGain() int32 {
-	if m != nil {
-		return m.TxGain
+func (x *PptpPotsUni) GetTxGain() int32 {
+	if x != nil {
+		return x.TxGain
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetPotsHoldOverTime() uint32 {
-	if m != nil {
-		return m.PotsHoldOverTime
+func (x *PptpPotsUni) GetPotsHoldOverTime() uint32 {
+	if x != nil {
+		return x.PotsHoldOverTime
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetNominalFeedVoltage() uint32 {
-	if m != nil {
-		return m.NominalFeedVoltage
+func (x *PptpPotsUni) GetNominalFeedVoltage() uint32 {
+	if x != nil {
+		return x.NominalFeedVoltage
 	}
 	return 0
 }
 
-func (m *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
-	if m != nil {
-		return m.LossOfSoftSwitch
+func (x *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
+	if x != nil {
+		return x.LossOfSoftSwitch
 	}
 	return 0
 }
 
 // Sip specific fields are grouped here
 type SipConfig struct {
+	state                         protoimpl.MessageState         `protogen:"open.v1"`
 	SipUserData                   *SipUserData                   `protobuf:"bytes,1,opt,name=sipUserData,proto3" json:"sipUserData,omitempty"`
 	SipAgentConfig                *SipAgentConfig                `protobuf:"bytes,2,opt,name=sipAgentConfig,proto3" json:"sipAgentConfig,omitempty"`
 	NetworkDialPlan               *NetworkDialPlan               `protobuf:"bytes,3,opt,name=networkDialPlan,proto3" json:"networkDialPlan,omitempty"`
 	VoipFeatureAccessCodes        *VoipFeatureAccessCodes        `protobuf:"bytes,4,opt,name=voipFeatureAccessCodes,proto3" json:"voipFeatureAccessCodes,omitempty"`
 	VoipApplicationServiceProfile *VoipApplicationServiceProfile `protobuf:"bytes,5,opt,name=voipApplicationServiceProfile,proto3" json:"voipApplicationServiceProfile,omitempty"`
-	XXX_NoUnkeyedLiteral          struct{}                       `json:"-"`
-	XXX_unrecognized              []byte                         `json:"-"`
-	XXX_sizecache                 int32                          `json:"-"`
+	unknownFields                 protoimpl.UnknownFields
+	sizeCache                     protoimpl.SizeCache
 }
 
-func (m *SipConfig) Reset()         { *m = SipConfig{} }
-func (m *SipConfig) String() string { return proto.CompactTextString(m) }
-func (*SipConfig) ProtoMessage()    {}
+func (x *SipConfig) Reset() {
+	*x = SipConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipConfig) ProtoMessage() {}
+
+func (x *SipConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipConfig.ProtoReflect.Descriptor instead.
 func (*SipConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{10}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *SipConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipConfig.Unmarshal(m, b)
-}
-func (m *SipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipConfig.Marshal(b, m, deterministic)
-}
-func (m *SipConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipConfig.Merge(m, src)
-}
-func (m *SipConfig) XXX_Size() int {
-	return xxx_messageInfo_SipConfig.Size(m)
-}
-func (m *SipConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipConfig proto.InternalMessageInfo
-
-func (m *SipConfig) GetSipUserData() *SipUserData {
-	if m != nil {
-		return m.SipUserData
+func (x *SipConfig) GetSipUserData() *SipUserData {
+	if x != nil {
+		return x.SipUserData
 	}
 	return nil
 }
 
-func (m *SipConfig) GetSipAgentConfig() *SipAgentConfig {
-	if m != nil {
-		return m.SipAgentConfig
+func (x *SipConfig) GetSipAgentConfig() *SipAgentConfig {
+	if x != nil {
+		return x.SipAgentConfig
 	}
 	return nil
 }
 
-func (m *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
-	if m != nil {
-		return m.NetworkDialPlan
+func (x *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
+	if x != nil {
+		return x.NetworkDialPlan
 	}
 	return nil
 }
 
-func (m *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
-	if m != nil {
-		return m.VoipFeatureAccessCodes
+func (x *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
+	if x != nil {
+		return x.VoipFeatureAccessCodes
 	}
 	return nil
 }
 
-func (m *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
-	if m != nil {
-		return m.VoipApplicationServiceProfile
+func (x *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
+	if x != nil {
+		return x.VoipApplicationServiceProfile
 	}
 	return nil
 }
 
 type SipUserData struct {
-	UserPartAor                         string               `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
-	UsernameAndPassword                 *UsernameAndPassword `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
-	VoicemailServerSipUri               string               `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
-	VoicemailSubscriptionExpirationTime int32                `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
-	ReleaseTimer                        int32                `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
-	RohTimer                            int32                `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
-	XXX_NoUnkeyedLiteral                struct{}             `json:"-"`
-	XXX_unrecognized                    []byte               `json:"-"`
-	XXX_sizecache                       int32                `json:"-"`
+	state                               protoimpl.MessageState `protogen:"open.v1"`
+	UserPartAor                         string                 `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
+	UsernameAndPassword                 *UsernameAndPassword   `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
+	VoicemailServerSipUri               string                 `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
+	VoicemailSubscriptionExpirationTime int32                  `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
+	ReleaseTimer                        int32                  `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
+	RohTimer                            int32                  `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
+	unknownFields                       protoimpl.UnknownFields
+	sizeCache                           protoimpl.SizeCache
 }
 
-func (m *SipUserData) Reset()         { *m = SipUserData{} }
-func (m *SipUserData) String() string { return proto.CompactTextString(m) }
-func (*SipUserData) ProtoMessage()    {}
+func (x *SipUserData) Reset() {
+	*x = SipUserData{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipUserData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipUserData) ProtoMessage() {}
+
+func (x *SipUserData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipUserData.ProtoReflect.Descriptor instead.
 func (*SipUserData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{11}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *SipUserData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipUserData.Unmarshal(m, b)
-}
-func (m *SipUserData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipUserData.Marshal(b, m, deterministic)
-}
-func (m *SipUserData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipUserData.Merge(m, src)
-}
-func (m *SipUserData) XXX_Size() int {
-	return xxx_messageInfo_SipUserData.Size(m)
-}
-func (m *SipUserData) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipUserData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipUserData proto.InternalMessageInfo
-
-func (m *SipUserData) GetUserPartAor() string {
-	if m != nil {
-		return m.UserPartAor
+func (x *SipUserData) GetUserPartAor() string {
+	if x != nil {
+		return x.UserPartAor
 	}
 	return ""
 }
 
-func (m *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
-	if m != nil {
-		return m.UsernameAndPassword
+func (x *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
+	if x != nil {
+		return x.UsernameAndPassword
 	}
 	return nil
 }
 
-func (m *SipUserData) GetVoicemailServerSipUri() string {
-	if m != nil {
-		return m.VoicemailServerSipUri
+func (x *SipUserData) GetVoicemailServerSipUri() string {
+	if x != nil {
+		return x.VoicemailServerSipUri
 	}
 	return ""
 }
 
-func (m *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
-	if m != nil {
-		return m.VoicemailSubscriptionExpirationTime
+func (x *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
+	if x != nil {
+		return x.VoicemailSubscriptionExpirationTime
 	}
 	return 0
 }
 
-func (m *SipUserData) GetReleaseTimer() int32 {
-	if m != nil {
-		return m.ReleaseTimer
+func (x *SipUserData) GetReleaseTimer() int32 {
+	if x != nil {
+		return x.ReleaseTimer
 	}
 	return 0
 }
 
-func (m *SipUserData) GetRohTimer() int32 {
-	if m != nil {
-		return m.RohTimer
+func (x *SipUserData) GetRohTimer() int32 {
+	if x != nil {
+		return x.RohTimer
 	}
 	return 0
 }
 
 type SipAgentConfig struct {
-	OutboundProxyAddress     string            `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
-	PrimarySipDns            string            `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
-	SecondarySipDns          string            `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
-	SipRegExpTime            int32             `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
-	SipReregHeadStartTime    int32             `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
-	SipRegistrar             string            `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
-	SoftSwitch               string            `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
-	SipResponseTable         *SipResponseTable `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
-	SipOptionTransmitControl bool              `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
-	SipUriFormat             string            `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
-	RedundantSipAgentPointer string            `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}          `json:"-"`
-	XXX_unrecognized         []byte            `json:"-"`
-	XXX_sizecache            int32             `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	OutboundProxyAddress     string                 `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
+	PrimarySipDns            string                 `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
+	SecondarySipDns          string                 `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
+	SipRegExpTime            int32                  `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
+	SipReregHeadStartTime    int32                  `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
+	SipRegistrar             string                 `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
+	SoftSwitch               string                 `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
+	SipResponseTable         *SipResponseTable      `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
+	SipOptionTransmitControl bool                   `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
+	SipUriFormat             string                 `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
+	RedundantSipAgentPointer string                 `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *SipAgentConfig) Reset()         { *m = SipAgentConfig{} }
-func (m *SipAgentConfig) String() string { return proto.CompactTextString(m) }
-func (*SipAgentConfig) ProtoMessage()    {}
+func (x *SipAgentConfig) Reset() {
+	*x = SipAgentConfig{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipAgentConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipAgentConfig) ProtoMessage() {}
+
+func (x *SipAgentConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipAgentConfig.ProtoReflect.Descriptor instead.
 func (*SipAgentConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{12}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *SipAgentConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipAgentConfig.Unmarshal(m, b)
-}
-func (m *SipAgentConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipAgentConfig.Marshal(b, m, deterministic)
-}
-func (m *SipAgentConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipAgentConfig.Merge(m, src)
-}
-func (m *SipAgentConfig) XXX_Size() int {
-	return xxx_messageInfo_SipAgentConfig.Size(m)
-}
-func (m *SipAgentConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipAgentConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipAgentConfig proto.InternalMessageInfo
-
-func (m *SipAgentConfig) GetOutboundProxyAddress() string {
-	if m != nil {
-		return m.OutboundProxyAddress
+func (x *SipAgentConfig) GetOutboundProxyAddress() string {
+	if x != nil {
+		return x.OutboundProxyAddress
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetPrimarySipDns() string {
-	if m != nil {
-		return m.PrimarySipDns
+func (x *SipAgentConfig) GetPrimarySipDns() string {
+	if x != nil {
+		return x.PrimarySipDns
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSecondarySipDns() string {
-	if m != nil {
-		return m.SecondarySipDns
+func (x *SipAgentConfig) GetSecondarySipDns() string {
+	if x != nil {
+		return x.SecondarySipDns
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSipRegExpTime() int32 {
-	if m != nil {
-		return m.SipRegExpTime
+func (x *SipAgentConfig) GetSipRegExpTime() int32 {
+	if x != nil {
+		return x.SipRegExpTime
 	}
 	return 0
 }
 
-func (m *SipAgentConfig) GetSipReregHeadStartTime() int32 {
-	if m != nil {
-		return m.SipReregHeadStartTime
+func (x *SipAgentConfig) GetSipReregHeadStartTime() int32 {
+	if x != nil {
+		return x.SipReregHeadStartTime
 	}
 	return 0
 }
 
-func (m *SipAgentConfig) GetSipRegistrar() string {
-	if m != nil {
-		return m.SipRegistrar
+func (x *SipAgentConfig) GetSipRegistrar() string {
+	if x != nil {
+		return x.SipRegistrar
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSoftSwitch() string {
-	if m != nil {
-		return m.SoftSwitch
+func (x *SipAgentConfig) GetSoftSwitch() string {
+	if x != nil {
+		return x.SoftSwitch
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
-	if m != nil {
-		return m.SipResponseTable
+func (x *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
+	if x != nil {
+		return x.SipResponseTable
 	}
 	return nil
 }
 
-func (m *SipAgentConfig) GetSipOptionTransmitControl() bool {
-	if m != nil {
-		return m.SipOptionTransmitControl
+func (x *SipAgentConfig) GetSipOptionTransmitControl() bool {
+	if x != nil {
+		return x.SipOptionTransmitControl
 	}
 	return false
 }
 
-func (m *SipAgentConfig) GetSipUriFormat() string {
-	if m != nil {
-		return m.SipUriFormat
+func (x *SipAgentConfig) GetSipUriFormat() string {
+	if x != nil {
+		return x.SipUriFormat
 	}
 	return ""
 }
 
-func (m *SipAgentConfig) GetRedundantSipAgentPointer() string {
-	if m != nil {
-		return m.RedundantSipAgentPointer
+func (x *SipAgentConfig) GetRedundantSipAgentPointer() string {
+	if x != nil {
+		return x.RedundantSipAgentPointer
 	}
 	return ""
 }
 
 type NetworkDialPlan struct {
-	CriticalDialTimeout  uint32         `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
-	PartialDialTimeout   uint32         `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
-	DialPlanFormat       uint32         `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
-	DialPlanTable        *DialPlanTable `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state               protoimpl.MessageState `protogen:"open.v1"`
+	CriticalDialTimeout uint32                 `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
+	PartialDialTimeout  uint32                 `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
+	DialPlanFormat      uint32                 `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
+	DialPlanTable       *DialPlanTable         `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *NetworkDialPlan) Reset()         { *m = NetworkDialPlan{} }
-func (m *NetworkDialPlan) String() string { return proto.CompactTextString(m) }
-func (*NetworkDialPlan) ProtoMessage()    {}
+func (x *NetworkDialPlan) Reset() {
+	*x = NetworkDialPlan{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *NetworkDialPlan) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NetworkDialPlan) ProtoMessage() {}
+
+func (x *NetworkDialPlan) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NetworkDialPlan.ProtoReflect.Descriptor instead.
 func (*NetworkDialPlan) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{13}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *NetworkDialPlan) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NetworkDialPlan.Unmarshal(m, b)
-}
-func (m *NetworkDialPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NetworkDialPlan.Marshal(b, m, deterministic)
-}
-func (m *NetworkDialPlan) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NetworkDialPlan.Merge(m, src)
-}
-func (m *NetworkDialPlan) XXX_Size() int {
-	return xxx_messageInfo_NetworkDialPlan.Size(m)
-}
-func (m *NetworkDialPlan) XXX_DiscardUnknown() {
-	xxx_messageInfo_NetworkDialPlan.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NetworkDialPlan proto.InternalMessageInfo
-
-func (m *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
-	if m != nil {
-		return m.CriticalDialTimeout
+func (x *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
+	if x != nil {
+		return x.CriticalDialTimeout
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetPartialDialTimeout() uint32 {
-	if m != nil {
-		return m.PartialDialTimeout
+func (x *NetworkDialPlan) GetPartialDialTimeout() uint32 {
+	if x != nil {
+		return x.PartialDialTimeout
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetDialPlanFormat() uint32 {
-	if m != nil {
-		return m.DialPlanFormat
+func (x *NetworkDialPlan) GetDialPlanFormat() uint32 {
+	if x != nil {
+		return x.DialPlanFormat
 	}
 	return 0
 }
 
-func (m *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
-	if m != nil {
-		return m.DialPlanTable
+func (x *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
+	if x != nil {
+		return x.DialPlanTable
 	}
 	return nil
 }
 
 type UsernameAndPassword struct {
-	ValidationScheme     int32    `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state            protoimpl.MessageState `protogen:"open.v1"`
+	ValidationScheme int32                  `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
-func (m *UsernameAndPassword) Reset()         { *m = UsernameAndPassword{} }
-func (m *UsernameAndPassword) String() string { return proto.CompactTextString(m) }
-func (*UsernameAndPassword) ProtoMessage()    {}
+func (x *UsernameAndPassword) Reset() {
+	*x = UsernameAndPassword{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UsernameAndPassword) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UsernameAndPassword) ProtoMessage() {}
+
+func (x *UsernameAndPassword) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UsernameAndPassword.ProtoReflect.Descriptor instead.
 func (*UsernameAndPassword) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{14}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *UsernameAndPassword) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UsernameAndPassword.Unmarshal(m, b)
-}
-func (m *UsernameAndPassword) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UsernameAndPassword.Marshal(b, m, deterministic)
-}
-func (m *UsernameAndPassword) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UsernameAndPassword.Merge(m, src)
-}
-func (m *UsernameAndPassword) XXX_Size() int {
-	return xxx_messageInfo_UsernameAndPassword.Size(m)
-}
-func (m *UsernameAndPassword) XXX_DiscardUnknown() {
-	xxx_messageInfo_UsernameAndPassword.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UsernameAndPassword proto.InternalMessageInfo
-
-func (m *UsernameAndPassword) GetValidationScheme() int32 {
-	if m != nil {
-		return m.ValidationScheme
+func (x *UsernameAndPassword) GetValidationScheme() int32 {
+	if x != nil {
+		return x.ValidationScheme
 	}
 	return 0
 }
 
 type SipResponseTable struct {
-	SipResponseCode      string   `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
-	Tone                 string   `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
-	TextMessage          string   `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	SipResponseCode string                 `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
+	Tone            string                 `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
+	TextMessage     string                 `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *SipResponseTable) Reset()         { *m = SipResponseTable{} }
-func (m *SipResponseTable) String() string { return proto.CompactTextString(m) }
-func (*SipResponseTable) ProtoMessage()    {}
+func (x *SipResponseTable) Reset() {
+	*x = SipResponseTable{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SipResponseTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SipResponseTable) ProtoMessage() {}
+
+func (x *SipResponseTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SipResponseTable.ProtoReflect.Descriptor instead.
 func (*SipResponseTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{15}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *SipResponseTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SipResponseTable.Unmarshal(m, b)
-}
-func (m *SipResponseTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SipResponseTable.Marshal(b, m, deterministic)
-}
-func (m *SipResponseTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SipResponseTable.Merge(m, src)
-}
-func (m *SipResponseTable) XXX_Size() int {
-	return xxx_messageInfo_SipResponseTable.Size(m)
-}
-func (m *SipResponseTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_SipResponseTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SipResponseTable proto.InternalMessageInfo
-
-func (m *SipResponseTable) GetSipResponseCode() string {
-	if m != nil {
-		return m.SipResponseCode
+func (x *SipResponseTable) GetSipResponseCode() string {
+	if x != nil {
+		return x.SipResponseCode
 	}
 	return ""
 }
 
-func (m *SipResponseTable) GetTone() string {
-	if m != nil {
-		return m.Tone
+func (x *SipResponseTable) GetTone() string {
+	if x != nil {
+		return x.Tone
 	}
 	return ""
 }
 
-func (m *SipResponseTable) GetTextMessage() string {
-	if m != nil {
-		return m.TextMessage
+func (x *SipResponseTable) GetTextMessage() string {
+	if x != nil {
+		return x.TextMessage
 	}
 	return ""
 }
 
 type DialPlanTable struct {
-	DialPlanId           uint32   `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
-	Action               uint32   `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
-	DialPlanToken        string   `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
-	DialPlanTableMaxSize uint32   `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	DialPlanId           uint32                 `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
+	Action               uint32                 `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
+	DialPlanToken        string                 `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
+	DialPlanTableMaxSize uint32                 `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *DialPlanTable) Reset()         { *m = DialPlanTable{} }
-func (m *DialPlanTable) String() string { return proto.CompactTextString(m) }
-func (*DialPlanTable) ProtoMessage()    {}
+func (x *DialPlanTable) Reset() {
+	*x = DialPlanTable{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DialPlanTable) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DialPlanTable) ProtoMessage() {}
+
+func (x *DialPlanTable) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DialPlanTable.ProtoReflect.Descriptor instead.
 func (*DialPlanTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{16}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *DialPlanTable) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DialPlanTable.Unmarshal(m, b)
-}
-func (m *DialPlanTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DialPlanTable.Marshal(b, m, deterministic)
-}
-func (m *DialPlanTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DialPlanTable.Merge(m, src)
-}
-func (m *DialPlanTable) XXX_Size() int {
-	return xxx_messageInfo_DialPlanTable.Size(m)
-}
-func (m *DialPlanTable) XXX_DiscardUnknown() {
-	xxx_messageInfo_DialPlanTable.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DialPlanTable proto.InternalMessageInfo
-
-func (m *DialPlanTable) GetDialPlanId() uint32 {
-	if m != nil {
-		return m.DialPlanId
+func (x *DialPlanTable) GetDialPlanId() uint32 {
+	if x != nil {
+		return x.DialPlanId
 	}
 	return 0
 }
 
-func (m *DialPlanTable) GetAction() uint32 {
-	if m != nil {
-		return m.Action
+func (x *DialPlanTable) GetAction() uint32 {
+	if x != nil {
+		return x.Action
 	}
 	return 0
 }
 
-func (m *DialPlanTable) GetDialPlanToken() string {
-	if m != nil {
-		return m.DialPlanToken
+func (x *DialPlanTable) GetDialPlanToken() string {
+	if x != nil {
+		return x.DialPlanToken
 	}
 	return ""
 }
 
-func (m *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
-	if m != nil {
-		return m.DialPlanTableMaxSize
+func (x *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
+	if x != nil {
+		return x.DialPlanTableMaxSize
 	}
 	return 0
 }
 
 type VoipFeatureAccessCodes struct {
-	CancelCallWaiting        string   `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
-	CallHold                 string   `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
-	CallPark                 string   `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
-	CallerIdActivate         string   `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
-	CallerIdDeactivate       string   `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
-	DoNotDisturbActivation   string   `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
-	DoNotDisturbDeactivation string   `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
-	DoNotDisturbPinChange    string   `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
-	EmergencyServiceNumber   string   `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
-	IntercomService          string   `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
-	UnattendedCallTransfer   string   `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
-	AttendedCallTransfer     string   `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
-	XXX_unrecognized         []byte   `json:"-"`
-	XXX_sizecache            int32    `json:"-"`
+	state                    protoimpl.MessageState `protogen:"open.v1"`
+	CancelCallWaiting        string                 `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
+	CallHold                 string                 `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
+	CallPark                 string                 `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
+	CallerIdActivate         string                 `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
+	CallerIdDeactivate       string                 `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
+	DoNotDisturbActivation   string                 `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
+	DoNotDisturbDeactivation string                 `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
+	DoNotDisturbPinChange    string                 `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
+	EmergencyServiceNumber   string                 `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
+	IntercomService          string                 `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
+	UnattendedCallTransfer   string                 `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
+	AttendedCallTransfer     string                 `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
+	unknownFields            protoimpl.UnknownFields
+	sizeCache                protoimpl.SizeCache
 }
 
-func (m *VoipFeatureAccessCodes) Reset()         { *m = VoipFeatureAccessCodes{} }
-func (m *VoipFeatureAccessCodes) String() string { return proto.CompactTextString(m) }
-func (*VoipFeatureAccessCodes) ProtoMessage()    {}
+func (x *VoipFeatureAccessCodes) Reset() {
+	*x = VoipFeatureAccessCodes{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipFeatureAccessCodes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipFeatureAccessCodes) ProtoMessage() {}
+
+func (x *VoipFeatureAccessCodes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipFeatureAccessCodes.ProtoReflect.Descriptor instead.
 func (*VoipFeatureAccessCodes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{17}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *VoipFeatureAccessCodes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Unmarshal(m, b)
-}
-func (m *VoipFeatureAccessCodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Marshal(b, m, deterministic)
-}
-func (m *VoipFeatureAccessCodes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipFeatureAccessCodes.Merge(m, src)
-}
-func (m *VoipFeatureAccessCodes) XXX_Size() int {
-	return xxx_messageInfo_VoipFeatureAccessCodes.Size(m)
-}
-func (m *VoipFeatureAccessCodes) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipFeatureAccessCodes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipFeatureAccessCodes proto.InternalMessageInfo
-
-func (m *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
-	if m != nil {
-		return m.CancelCallWaiting
+func (x *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
+	if x != nil {
+		return x.CancelCallWaiting
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallHold() string {
-	if m != nil {
-		return m.CallHold
+func (x *VoipFeatureAccessCodes) GetCallHold() string {
+	if x != nil {
+		return x.CallHold
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallPark() string {
-	if m != nil {
-		return m.CallPark
+func (x *VoipFeatureAccessCodes) GetCallPark() string {
+	if x != nil {
+		return x.CallPark
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallerIdActivate() string {
-	if m != nil {
-		return m.CallerIdActivate
+func (x *VoipFeatureAccessCodes) GetCallerIdActivate() string {
+	if x != nil {
+		return x.CallerIdActivate
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
-	if m != nil {
-		return m.CallerIdDeactivate
+func (x *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
+	if x != nil {
+		return x.CallerIdDeactivate
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
-	if m != nil {
-		return m.DoNotDisturbActivation
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
+	if x != nil {
+		return x.DoNotDisturbActivation
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
-	if m != nil {
-		return m.DoNotDisturbDeactivation
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
+	if x != nil {
+		return x.DoNotDisturbDeactivation
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
-	if m != nil {
-		return m.DoNotDisturbPinChange
+func (x *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
+	if x != nil {
+		return x.DoNotDisturbPinChange
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
-	if m != nil {
-		return m.EmergencyServiceNumber
+func (x *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
+	if x != nil {
+		return x.EmergencyServiceNumber
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetIntercomService() string {
-	if m != nil {
-		return m.IntercomService
+func (x *VoipFeatureAccessCodes) GetIntercomService() string {
+	if x != nil {
+		return x.IntercomService
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
-	if m != nil {
-		return m.UnattendedCallTransfer
+func (x *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
+	if x != nil {
+		return x.UnattendedCallTransfer
 	}
 	return ""
 }
 
-func (m *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
-	if m != nil {
-		return m.AttendedCallTransfer
+func (x *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
+	if x != nil {
+		return x.AttendedCallTransfer
 	}
 	return ""
 }
 
 type VoipApplicationServiceProfile struct {
-	CidFeatures                    uint32   `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
-	CallWaitingFeatures            uint32   `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
-	CallProgressOrTransferFeatures uint32   `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
-	CallPresentationFeatures       uint32   `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
-	DirectConnectFeature           uint32   `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
-	DirectConnectUriPointer        string   `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
-	BridgedLineAgentUriPointer     string   `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
-	ConferenceFactoryUriPointer    string   `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
-	DialToneDelayTimer             uint32   `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
-	XXX_NoUnkeyedLiteral           struct{} `json:"-"`
-	XXX_unrecognized               []byte   `json:"-"`
-	XXX_sizecache                  int32    `json:"-"`
+	state                          protoimpl.MessageState `protogen:"open.v1"`
+	CidFeatures                    uint32                 `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
+	CallWaitingFeatures            uint32                 `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
+	CallProgressOrTransferFeatures uint32                 `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
+	CallPresentationFeatures       uint32                 `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
+	DirectConnectFeature           uint32                 `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
+	DirectConnectUriPointer        string                 `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
+	BridgedLineAgentUriPointer     string                 `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
+	ConferenceFactoryUriPointer    string                 `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
+	DialToneDelayTimer             uint32                 `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
+	unknownFields                  protoimpl.UnknownFields
+	sizeCache                      protoimpl.SizeCache
 }
 
-func (m *VoipApplicationServiceProfile) Reset()         { *m = VoipApplicationServiceProfile{} }
-func (m *VoipApplicationServiceProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipApplicationServiceProfile) ProtoMessage()    {}
+func (x *VoipApplicationServiceProfile) Reset() {
+	*x = VoipApplicationServiceProfile{}
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipApplicationServiceProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipApplicationServiceProfile) ProtoMessage() {}
+
+func (x *VoipApplicationServiceProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_system_profile_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipApplicationServiceProfile.ProtoReflect.Descriptor instead.
 func (*VoipApplicationServiceProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_02a00a136081bca5, []int{18}
+	return file_voltha_protos_voip_system_profile_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *VoipApplicationServiceProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Unmarshal(m, b)
-}
-func (m *VoipApplicationServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipApplicationServiceProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipApplicationServiceProfile.Merge(m, src)
-}
-func (m *VoipApplicationServiceProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipApplicationServiceProfile.Size(m)
-}
-func (m *VoipApplicationServiceProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipApplicationServiceProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipApplicationServiceProfile proto.InternalMessageInfo
-
-func (m *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
-	if m != nil {
-		return m.CidFeatures
+func (x *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
+	if x != nil {
+		return x.CidFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
-	if m != nil {
-		return m.CallWaitingFeatures
+func (x *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
+	if x != nil {
+		return x.CallWaitingFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
-	if m != nil {
-		return m.CallProgressOrTransferFeatures
+func (x *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
+	if x != nil {
+		return x.CallProgressOrTransferFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
-	if m != nil {
-		return m.CallPresentationFeatures
+func (x *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
+	if x != nil {
+		return x.CallPresentationFeatures
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
-	if m != nil {
-		return m.DirectConnectFeature
+func (x *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
+	if x != nil {
+		return x.DirectConnectFeature
 	}
 	return 0
 }
 
-func (m *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
-	if m != nil {
-		return m.DirectConnectUriPointer
+func (x *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
+	if x != nil {
+		return x.DirectConnectUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
-	if m != nil {
-		return m.BridgedLineAgentUriPointer
+func (x *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
+	if x != nil {
+		return x.BridgedLineAgentUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
-	if m != nil {
-		return m.ConferenceFactoryUriPointer
+func (x *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
+	if x != nil {
+		return x.ConferenceFactoryUriPointer
 	}
 	return ""
 }
 
-func (m *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
-	if m != nil {
-		return m.DialToneDelayTimer
+func (x *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
+	if x != nil {
+		return x.DialToneDelayTimer
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*VoipSystemProfileRequest)(nil), "voip_system_profile.VoipSystemProfileRequest")
-	proto.RegisterType((*VoipSystemProfile)(nil), "voip_system_profile.VoipSystemProfile")
-	proto.RegisterType((*VoipConfig)(nil), "voip_system_profile.VoipConfig")
-	proto.RegisterType((*IpHostConfig)(nil), "voip_system_profile.IpHostConfig")
-	proto.RegisterType((*TcpUdpConfig)(nil), "voip_system_profile.TcpUdpConfig")
-	proto.RegisterType((*VoipVoiceCtp)(nil), "voip_system_profile.VoipVoiceCtp")
-	proto.RegisterType((*VoipMediaProfile)(nil), "voip_system_profile.VoipMediaProfile")
-	proto.RegisterType((*VoiceServiceProfile)(nil), "voip_system_profile.VoiceServiceProfile")
-	proto.RegisterType((*RtpProfile)(nil), "voip_system_profile.RtpProfile")
-	proto.RegisterType((*PptpPotsUni)(nil), "voip_system_profile.PptpPotsUni")
-	proto.RegisterType((*SipConfig)(nil), "voip_system_profile.SipConfig")
-	proto.RegisterType((*SipUserData)(nil), "voip_system_profile.SipUserData")
-	proto.RegisterType((*SipAgentConfig)(nil), "voip_system_profile.SipAgentConfig")
-	proto.RegisterType((*NetworkDialPlan)(nil), "voip_system_profile.NetworkDialPlan")
-	proto.RegisterType((*UsernameAndPassword)(nil), "voip_system_profile.UsernameAndPassword")
-	proto.RegisterType((*SipResponseTable)(nil), "voip_system_profile.SipResponseTable")
-	proto.RegisterType((*DialPlanTable)(nil), "voip_system_profile.DialPlanTable")
-	proto.RegisterType((*VoipFeatureAccessCodes)(nil), "voip_system_profile.VoipFeatureAccessCodes")
-	proto.RegisterType((*VoipApplicationServiceProfile)(nil), "voip_system_profile.VoipApplicationServiceProfile")
+var File_voltha_protos_voip_system_profile_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_voip_system_profile_proto_rawDesc = "" +
+	"\n" +
+	"'voltha_protos/voip_system_profile.proto\x12\x13voip_system_profile\x1a\x1cgoogle/api/annotations.proto\"\x82\x01\n" +
+	"\x18VoipSystemProfileRequest\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12T\n" +
+	"\x11voipSystemProfile\x18\x02 \x01(\v2&.voip_system_profile.VoipSystemProfileR\x11voipSystemProfile\"\x92\x01\n" +
+	"\x11VoipSystemProfile\x12<\n" +
+	"\tsipConfig\x18\x01 \x01(\v2\x1e.voip_system_profile.SipConfigR\tsipConfig\x12?\n" +
+	"\n" +
+	"voipConfig\x18\x02 \x01(\v2\x1f.voip_system_profile.VoipConfigR\n" +
+	"voipConfig\"\x95\x04\n" +
+	"\n" +
+	"VoipConfig\x12E\n" +
+	"\fipHostConfig\x18\x01 \x01(\v2!.voip_system_profile.IpHostConfigR\fipHostConfig\x12E\n" +
+	"\ftcpUdpConfig\x18\x02 \x01(\v2!.voip_system_profile.TcpUdpConfigR\ftcpUdpConfig\x12E\n" +
+	"\fvoipVoiceCtp\x18\x03 \x01(\v2!.voip_system_profile.VoipVoiceCtpR\fvoipVoiceCtp\x12Q\n" +
+	"\x10voipMediaProfile\x18\x04 \x01(\v2%.voip_system_profile.VoipMediaProfileR\x10voipMediaProfile\x12Z\n" +
+	"\x13voiceServiceProfile\x18\x05 \x01(\v2(.voip_system_profile.VoiceServiceProfileR\x13voiceServiceProfile\x12?\n" +
+	"\n" +
+	"rtpProfile\x18\x06 \x01(\v2\x1f.voip_system_profile.RtpProfileR\n" +
+	"rtpProfile\x12B\n" +
+	"\vpptpPotsUni\x18\a \x01(\v2 .voip_system_profile.PptpPotsUniR\vpptpPotsUni\"\x90\x02\n" +
+	"\fIpHostConfig\x12\x1c\n" +
+	"\tipOptions\x18\x01 \x01(\rR\tipOptions\x12$\n" +
+	"\ronuIdentifier\x18\x02 \x01(\tR\ronuIdentifier\x12\x1c\n" +
+	"\tipAddress\x18\x03 \x01(\tR\tipAddress\x12\x12\n" +
+	"\x04mask\x18\x04 \x01(\tR\x04mask\x12\x18\n" +
+	"\agateway\x18\x05 \x01(\tR\agateway\x12\x1e\n" +
+	"\n" +
+	"primaryDns\x18\x06 \x01(\tR\n" +
+	"primaryDns\x12\"\n" +
+	"\fsecondaryDns\x18\a \x01(\tR\fsecondaryDns\x12,\n" +
+	"\x11relayAgentOptions\x18\b \x01(\tR\x11relayAgentOptions\"F\n" +
+	"\fTcpUdpConfig\x12\x1a\n" +
+	"\bprotocol\x18\x01 \x01(\rR\bprotocol\x12\x1a\n" +
+	"\btosField\x18\x02 \x01(\tR\btosField\"6\n" +
+	"\fVoipVoiceCtp\x12&\n" +
+	"\x0esignallingCode\x18\x01 \x01(\rR\x0esignallingCode\"\x96\x05\n" +
+	"\x10VoipMediaProfile\x12\x18\n" +
+	"\afaxMode\x18\x01 \x01(\rR\afaxMode\x12(\n" +
+	"\x0fcodecSelection1\x18\x02 \x01(\rR\x0fcodecSelection1\x126\n" +
+	"\x16packetPeriodSelection1\x18\x03 \x01(\rR\x16packetPeriodSelection1\x120\n" +
+	"\x13silenceSuppression1\x18\x04 \x01(\rR\x13silenceSuppression1\x12(\n" +
+	"\x0fcodecSelection2\x18\x05 \x01(\rR\x0fcodecSelection2\x126\n" +
+	"\x16packetPeriodSelection2\x18\x06 \x01(\rR\x16packetPeriodSelection2\x120\n" +
+	"\x13silenceSuppression2\x18\a \x01(\rR\x13silenceSuppression2\x12(\n" +
+	"\x0fcodecSelection3\x18\b \x01(\rR\x0fcodecSelection3\x126\n" +
+	"\x16packetPeriodSelection3\x18\t \x01(\rR\x16packetPeriodSelection3\x120\n" +
+	"\x13silenceSuppression3\x18\n" +
+	" \x01(\rR\x13silenceSuppression3\x12(\n" +
+	"\x0fcodecSelection4\x18\v \x01(\rR\x0fcodecSelection4\x126\n" +
+	"\x16packetPeriodSelection4\x18\f \x01(\rR\x16packetPeriodSelection4\x120\n" +
+	"\x13silenceSuppression4\x18\r \x01(\rR\x13silenceSuppression4\x12\x18\n" +
+	"\aoobDtmf\x18\x0e \x01(\rR\aoobDtmf\"\xf3\x02\n" +
+	"\x13VoiceServiceProfile\x12*\n" +
+	"\x10announcementType\x18\x01 \x01(\rR\x10announcementType\x12\"\n" +
+	"\fjitterTarget\x18\x02 \x01(\rR\fjitterTarget\x12(\n" +
+	"\x0fjitterBufferMax\x18\x03 \x01(\rR\x0fjitterBufferMax\x12$\n" +
+	"\rechoCancelInd\x18\x04 \x01(\bR\rechoCancelInd\x120\n" +
+	"\x13pstnProtocolVariant\x18\x05 \x01(\rR\x13pstnProtocolVariant\x12(\n" +
+	"\x0fdtmfDigitLevels\x18\x06 \x01(\rR\x0fdtmfDigitLevels\x12,\n" +
+	"\x11dtmfDigitDuration\x18\a \x01(\rR\x11dtmfDigitDuration\x122\n" +
+	"\x14hookFlashMinimumTime\x18\b \x01(\rR\x14hookFlashMinimumTime\"\xf8\x01\n" +
+	"\n" +
+	"RtpProfile\x12\"\n" +
+	"\flocalPortMin\x18\x01 \x01(\rR\flocalPortMin\x12\"\n" +
+	"\flocalPortMax\x18\x02 \x01(\rR\flocalPortMax\x12\x1a\n" +
+	"\bdscpMark\x18\x03 \x01(\tR\bdscpMark\x12(\n" +
+	"\x0fpiggyBackEvents\x18\x04 \x01(\rR\x0fpiggyBackEvents\x12\x1e\n" +
+	"\n" +
+	"toneEvents\x18\x05 \x01(\rR\n" +
+	"toneEvents\x12\x1e\n" +
+	"\n" +
+	"dtmfEvents\x18\x06 \x01(\rR\n" +
+	"dtmfEvents\x12\x1c\n" +
+	"\tcasEvents\x18\a \x01(\rR\tcasEvents\"\xc3\x02\n" +
+	"\vPptpPotsUni\x12\x10\n" +
+	"\x03arc\x18\x01 \x01(\tR\x03arc\x12 \n" +
+	"\varcInterval\x18\x02 \x01(\tR\varcInterval\x12\x1c\n" +
+	"\timpedance\x18\x03 \x01(\rR\timpedance\x12*\n" +
+	"\x10transmissionPath\x18\x04 \x01(\rR\x10transmissionPath\x12\x16\n" +
+	"\x06rxGain\x18\x05 \x01(\x11R\x06rxGain\x12\x16\n" +
+	"\x06txGain\x18\x06 \x01(\x11R\x06txGain\x12*\n" +
+	"\x10potsHoldOverTime\x18\a \x01(\rR\x10potsHoldOverTime\x12.\n" +
+	"\x12nominalFeedVoltage\x18\b \x01(\rR\x12nominalFeedVoltage\x12*\n" +
+	"\x10lossOfSoftSwitch\x18\t \x01(\rR\x10lossOfSoftSwitch\"\xcb\x03\n" +
+	"\tSipConfig\x12B\n" +
+	"\vsipUserData\x18\x01 \x01(\v2 .voip_system_profile.SipUserDataR\vsipUserData\x12K\n" +
+	"\x0esipAgentConfig\x18\x02 \x01(\v2#.voip_system_profile.SipAgentConfigR\x0esipAgentConfig\x12N\n" +
+	"\x0fnetworkDialPlan\x18\x03 \x01(\v2$.voip_system_profile.NetworkDialPlanR\x0fnetworkDialPlan\x12c\n" +
+	"\x16voipFeatureAccessCodes\x18\x04 \x01(\v2+.voip_system_profile.VoipFeatureAccessCodesR\x16voipFeatureAccessCodes\x12x\n" +
+	"\x1dvoipApplicationServiceProfile\x18\x05 \x01(\v22.voip_system_profile.VoipApplicationServiceProfileR\x1dvoipApplicationServiceProfile\"\xd3\x02\n" +
+	"\vSipUserData\x12 \n" +
+	"\vuserPartAor\x18\x01 \x01(\tR\vuserPartAor\x12Z\n" +
+	"\x13usernameAndPassword\x18\x02 \x01(\v2(.voip_system_profile.UsernameAndPasswordR\x13usernameAndPassword\x124\n" +
+	"\x15voicemailServerSipUri\x18\x03 \x01(\tR\x15voicemailServerSipUri\x12P\n" +
+	"#voicemailSubscriptionExpirationTime\x18\x04 \x01(\x05R#voicemailSubscriptionExpirationTime\x12\"\n" +
+	"\freleaseTimer\x18\x05 \x01(\x05R\freleaseTimer\x12\x1a\n" +
+	"\brohTimer\x18\x06 \x01(\x05R\brohTimer\"\xa3\x04\n" +
+	"\x0eSipAgentConfig\x122\n" +
+	"\x14outboundProxyAddress\x18\x01 \x01(\tR\x14outboundProxyAddress\x12$\n" +
+	"\rprimarySipDns\x18\x02 \x01(\tR\rprimarySipDns\x12(\n" +
+	"\x0fsecondarySipDns\x18\x03 \x01(\tR\x0fsecondarySipDns\x12$\n" +
+	"\rsipRegExpTime\x18\x04 \x01(\x05R\rsipRegExpTime\x124\n" +
+	"\x15sipReregHeadStartTime\x18\x05 \x01(\x05R\x15sipReregHeadStartTime\x12\"\n" +
+	"\fSipRegistrar\x18\x06 \x01(\tR\fSipRegistrar\x12\x1e\n" +
+	"\n" +
+	"softSwitch\x18\a \x01(\tR\n" +
+	"softSwitch\x12Q\n" +
+	"\x10sipResponseTable\x18\b \x01(\v2%.voip_system_profile.SipResponseTableR\x10sipResponseTable\x12:\n" +
+	"\x18sipOptionTransmitControl\x18\t \x01(\bR\x18sipOptionTransmitControl\x12\"\n" +
+	"\fsipUriFormat\x18\n" +
+	" \x01(\tR\fsipUriFormat\x12:\n" +
+	"\x18redundantSipAgentPointer\x18\v \x01(\tR\x18redundantSipAgentPointer\"\xe5\x01\n" +
+	"\x0fNetworkDialPlan\x120\n" +
+	"\x13criticalDialTimeout\x18\x01 \x01(\rR\x13criticalDialTimeout\x12.\n" +
+	"\x12partialDialTimeout\x18\x02 \x01(\rR\x12partialDialTimeout\x12&\n" +
+	"\x0edialPlanFormat\x18\x03 \x01(\rR\x0edialPlanFormat\x12H\n" +
+	"\rdialPlanTable\x18\x04 \x01(\v2\".voip_system_profile.DialPlanTableR\rdialPlanTable\"A\n" +
+	"\x13UsernameAndPassword\x12*\n" +
+	"\x10validationScheme\x18\x01 \x01(\x05R\x10validationScheme\"r\n" +
+	"\x10SipResponseTable\x12(\n" +
+	"\x0fsipResponseCode\x18\x01 \x01(\tR\x0fsipResponseCode\x12\x12\n" +
+	"\x04tone\x18\x02 \x01(\tR\x04tone\x12 \n" +
+	"\vtextMessage\x18\x03 \x01(\tR\vtextMessage\"\xa1\x01\n" +
+	"\rDialPlanTable\x12\x1e\n" +
+	"\n" +
+	"dialPlanId\x18\x01 \x01(\rR\n" +
+	"dialPlanId\x12\x16\n" +
+	"\x06action\x18\x02 \x01(\rR\x06action\x12$\n" +
+	"\rdialPlanToken\x18\x03 \x01(\tR\rdialPlanToken\x122\n" +
+	"\x14dialPlanTableMaxSize\x18\x04 \x01(\rR\x14dialPlanTableMaxSize\"\xd2\x04\n" +
+	"\x16VoipFeatureAccessCodes\x12,\n" +
+	"\x11cancelCallWaiting\x18\x01 \x01(\tR\x11cancelCallWaiting\x12\x1a\n" +
+	"\bcallHold\x18\x02 \x01(\tR\bcallHold\x12\x1a\n" +
+	"\bcallPark\x18\x03 \x01(\tR\bcallPark\x12*\n" +
+	"\x10callerIdActivate\x18\x04 \x01(\tR\x10callerIdActivate\x12.\n" +
+	"\x12callerIdDeactivate\x18\x05 \x01(\tR\x12callerIdDeactivate\x126\n" +
+	"\x16doNotDisturbActivation\x18\x06 \x01(\tR\x16doNotDisturbActivation\x12:\n" +
+	"\x18doNotDisturbDeactivation\x18\a \x01(\tR\x18doNotDisturbDeactivation\x124\n" +
+	"\x15doNotDisturbPinChange\x18\b \x01(\tR\x15doNotDisturbPinChange\x126\n" +
+	"\x16emergencyServiceNumber\x18\t \x01(\tR\x16emergencyServiceNumber\x12(\n" +
+	"\x0fintercomService\x18\n" +
+	" \x01(\tR\x0fintercomService\x126\n" +
+	"\x16unattendedCallTransfer\x18\v \x01(\tR\x16unattendedCallTransfer\x122\n" +
+	"\x14attendedCallTransfer\x18\f \x01(\tR\x14attendedCallTransfer\"\x97\x04\n" +
+	"\x1dVoipApplicationServiceProfile\x12 \n" +
+	"\vcidFeatures\x18\x01 \x01(\rR\vcidFeatures\x120\n" +
+	"\x13callWaitingFeatures\x18\x02 \x01(\rR\x13callWaitingFeatures\x12F\n" +
+	"\x1ecallProgressOrTransferFeatures\x18\x03 \x01(\rR\x1ecallProgressOrTransferFeatures\x12:\n" +
+	"\x18callPresentationFeatures\x18\x04 \x01(\rR\x18callPresentationFeatures\x122\n" +
+	"\x14directConnectFeature\x18\x05 \x01(\rR\x14directConnectFeature\x128\n" +
+	"\x17directConnectUriPointer\x18\x06 \x01(\tR\x17directConnectUriPointer\x12>\n" +
+	"\x1abridgedLineAgentUriPointer\x18\a \x01(\tR\x1abridgedLineAgentUriPointer\x12@\n" +
+	"\x1bconferenceFactoryUriPointer\x18\b \x01(\tR\x1bconferenceFactoryUriPointer\x12.\n" +
+	"\x12dialToneDelayTimer\x18\t \x01(\rR\x12dialToneDelayTimerBf\n" +
+	"'org.opencord.voltha.voip_system_profileZ;github.com/opencord/voltha-protos/v5/go/voip_system_profileb\x06proto3"
+
+var (
+	file_voltha_protos_voip_system_profile_proto_rawDescOnce sync.Once
+	file_voltha_protos_voip_system_profile_proto_rawDescData []byte
+)
+
+func file_voltha_protos_voip_system_profile_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voip_system_profile_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voip_system_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_system_profile_proto_rawDesc), len(file_voltha_protos_voip_system_profile_proto_rawDesc)))
+	})
+	return file_voltha_protos_voip_system_profile_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/voip_system_profile.proto", fileDescriptor_02a00a136081bca5)
+var file_voltha_protos_voip_system_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_voltha_protos_voip_system_profile_proto_goTypes = []any{
+	(*VoipSystemProfileRequest)(nil),      // 0: voip_system_profile.VoipSystemProfileRequest
+	(*VoipSystemProfile)(nil),             // 1: voip_system_profile.VoipSystemProfile
+	(*VoipConfig)(nil),                    // 2: voip_system_profile.VoipConfig
+	(*IpHostConfig)(nil),                  // 3: voip_system_profile.IpHostConfig
+	(*TcpUdpConfig)(nil),                  // 4: voip_system_profile.TcpUdpConfig
+	(*VoipVoiceCtp)(nil),                  // 5: voip_system_profile.VoipVoiceCtp
+	(*VoipMediaProfile)(nil),              // 6: voip_system_profile.VoipMediaProfile
+	(*VoiceServiceProfile)(nil),           // 7: voip_system_profile.VoiceServiceProfile
+	(*RtpProfile)(nil),                    // 8: voip_system_profile.RtpProfile
+	(*PptpPotsUni)(nil),                   // 9: voip_system_profile.PptpPotsUni
+	(*SipConfig)(nil),                     // 10: voip_system_profile.SipConfig
+	(*SipUserData)(nil),                   // 11: voip_system_profile.SipUserData
+	(*SipAgentConfig)(nil),                // 12: voip_system_profile.SipAgentConfig
+	(*NetworkDialPlan)(nil),               // 13: voip_system_profile.NetworkDialPlan
+	(*UsernameAndPassword)(nil),           // 14: voip_system_profile.UsernameAndPassword
+	(*SipResponseTable)(nil),              // 15: voip_system_profile.SipResponseTable
+	(*DialPlanTable)(nil),                 // 16: voip_system_profile.DialPlanTable
+	(*VoipFeatureAccessCodes)(nil),        // 17: voip_system_profile.VoipFeatureAccessCodes
+	(*VoipApplicationServiceProfile)(nil), // 18: voip_system_profile.VoipApplicationServiceProfile
+}
+var file_voltha_protos_voip_system_profile_proto_depIdxs = []int32{
+	1,  // 0: voip_system_profile.VoipSystemProfileRequest.voipSystemProfile:type_name -> voip_system_profile.VoipSystemProfile
+	10, // 1: voip_system_profile.VoipSystemProfile.sipConfig:type_name -> voip_system_profile.SipConfig
+	2,  // 2: voip_system_profile.VoipSystemProfile.voipConfig:type_name -> voip_system_profile.VoipConfig
+	3,  // 3: voip_system_profile.VoipConfig.ipHostConfig:type_name -> voip_system_profile.IpHostConfig
+	4,  // 4: voip_system_profile.VoipConfig.tcpUdpConfig:type_name -> voip_system_profile.TcpUdpConfig
+	5,  // 5: voip_system_profile.VoipConfig.voipVoiceCtp:type_name -> voip_system_profile.VoipVoiceCtp
+	6,  // 6: voip_system_profile.VoipConfig.voipMediaProfile:type_name -> voip_system_profile.VoipMediaProfile
+	7,  // 7: voip_system_profile.VoipConfig.voiceServiceProfile:type_name -> voip_system_profile.VoiceServiceProfile
+	8,  // 8: voip_system_profile.VoipConfig.rtpProfile:type_name -> voip_system_profile.RtpProfile
+	9,  // 9: voip_system_profile.VoipConfig.pptpPotsUni:type_name -> voip_system_profile.PptpPotsUni
+	11, // 10: voip_system_profile.SipConfig.sipUserData:type_name -> voip_system_profile.SipUserData
+	12, // 11: voip_system_profile.SipConfig.sipAgentConfig:type_name -> voip_system_profile.SipAgentConfig
+	13, // 12: voip_system_profile.SipConfig.networkDialPlan:type_name -> voip_system_profile.NetworkDialPlan
+	17, // 13: voip_system_profile.SipConfig.voipFeatureAccessCodes:type_name -> voip_system_profile.VoipFeatureAccessCodes
+	18, // 14: voip_system_profile.SipConfig.voipApplicationServiceProfile:type_name -> voip_system_profile.VoipApplicationServiceProfile
+	14, // 15: voip_system_profile.SipUserData.usernameAndPassword:type_name -> voip_system_profile.UsernameAndPassword
+	15, // 16: voip_system_profile.SipAgentConfig.sipResponseTable:type_name -> voip_system_profile.SipResponseTable
+	16, // 17: voip_system_profile.NetworkDialPlan.dialPlanTable:type_name -> voip_system_profile.DialPlanTable
+	18, // [18:18] is the sub-list for method output_type
+	18, // [18:18] is the sub-list for method input_type
+	18, // [18:18] is the sub-list for extension type_name
+	18, // [18:18] is the sub-list for extension extendee
+	0,  // [0:18] is the sub-list for field type_name
 }
 
-var fileDescriptor_02a00a136081bca5 = []byte{
-	// 2057 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x5f, 0x73, 0x1b, 0x49,
-	0x11, 0x2f, 0x3b, 0x4e, 0x2e, 0x1a, 0xdb, 0xf9, 0x33, 0x81, 0xa0, 0x0a, 0x77, 0x21, 0xec, 0x1d,
-	0x77, 0x29, 0xfe, 0xd8, 0x60, 0x9b, 0x2b, 0x0a, 0x28, 0xc0, 0xb1, 0x62, 0xe2, 0xe2, 0x9c, 0x88,
-	0x95, 0x63, 0xaa, 0xee, 0xe5, 0x6a, 0x3c, 0xdb, 0x5a, 0x0d, 0xde, 0x9d, 0x59, 0x66, 0x46, 0x8a,
-	0xc4, 0x23, 0x9f, 0x80, 0xa2, 0x0a, 0x78, 0xa6, 0xf8, 0x28, 0x3c, 0xf2, 0x06, 0x9f, 0x81, 0x4f,
-	0xc0, 0x0b, 0x8f, 0x54, 0xcf, 0xcc, 0x4a, 0xbb, 0xda, 0x5d, 0xc3, 0x9b, 0xe6, 0xf7, 0xeb, 0x6e,
-	0xb5, 0xba, 0x7b, 0xba, 0x7b, 0x44, 0x3e, 0x99, 0xa9, 0xcc, 0x4e, 0xd8, 0x17, 0x85, 0x56, 0x56,
-	0x99, 0xfd, 0x99, 0x12, 0xc5, 0x17, 0x66, 0x61, 0x2c, 0xe4, 0x08, 0x8d, 0x45, 0x06, 0x7b, 0x8e,
-	0xa2, 0x8f, 0x5a, 0xa8, 0x27, 0xef, 0xa7, 0x4a, 0xa5, 0x19, 0xec, 0xb3, 0x42, 0xec, 0x33, 0x29,
-	0x95, 0x65, 0x56, 0x28, 0x69, 0xbc, 0x4a, 0xf4, 0xbb, 0x0d, 0xd2, 0xbf, 0x54, 0xa2, 0x18, 0x39,
-	0xa5, 0xa1, 0xd7, 0x89, 0xe1, 0x37, 0x53, 0x30, 0x96, 0x3e, 0x20, 0xb7, 0xae, 0x61, 0xd1, 0xdf,
-	0x78, 0xb6, 0xf1, 0xbc, 0x17, 0xe3, 0x47, 0x7a, 0x41, 0x1e, 0xce, 0xd6, 0xa5, 0xfb, 0x9b, 0xcf,
-	0x36, 0x9e, 0x6f, 0x1f, 0x7c, 0xbc, 0xd7, 0xe6, 0x58, 0xd3, 0x76, 0xd3, 0x40, 0xf4, 0x87, 0x0d,
-	0xf2, 0xb0, 0x21, 0x48, 0x7f, 0x4c, 0x7a, 0x46, 0x14, 0x27, 0x4a, 0x8e, 0x45, 0xea, 0x7c, 0xd8,
-	0x3e, 0x78, 0xda, 0xfa, 0x1d, 0xa3, 0x52, 0x2a, 0x5e, 0x29, 0xd0, 0x9f, 0x12, 0x82, 0xb2, 0x41,
-	0xdd, 0xbb, 0xf8, 0xb5, 0x4e, 0x17, 0x83, 0x7e, 0x45, 0x25, 0xfa, 0xe3, 0x16, 0x21, 0x2b, 0x8a,
-	0xbe, 0x24, 0x3b, 0xa2, 0x78, 0xa5, 0x8c, 0xad, 0x39, 0xf4, 0xf5, 0x56, 0x8b, 0x67, 0x15, 0xc1,
-	0xb8, 0xa6, 0x86, 0x66, 0x2c, 0x2f, 0xde, 0x26, 0x75, 0xc7, 0xda, 0xcd, 0x5c, 0x54, 0x04, 0xe3,
-	0x9a, 0x1a, 0x9a, 0x41, 0x8d, 0x4b, 0x25, 0x38, 0x9c, 0xd8, 0xa2, 0x7f, 0xeb, 0x06, 0x33, 0x97,
-	0x15, 0xc1, 0xb8, 0xa6, 0x46, 0x7f, 0x49, 0x1e, 0xe0, 0xf9, 0x1c, 0x12, 0xc1, 0xca, 0x6c, 0x6e,
-	0x39, 0x53, 0xdf, 0xe8, 0x34, 0x55, 0x15, 0x8e, 0x1b, 0xea, 0xf4, 0x73, 0x82, 0x55, 0xc8, 0x61,
-	0x04, 0x7a, 0x26, 0x38, 0x94, 0x56, 0x6f, 0x3b, 0xab, 0xcf, 0xbb, 0xac, 0xae, 0xcb, 0xc7, 0x6d,
-	0x46, 0x30, 0xa7, 0xda, 0x16, 0xa5, 0xc9, 0x3b, 0x37, 0xe4, 0x34, 0x5e, 0x8a, 0xc5, 0x15, 0x15,
-	0xfa, 0x82, 0x6c, 0x17, 0x85, 0x2d, 0x86, 0xca, 0x9a, 0xb7, 0x52, 0xf4, 0xdf, 0x73, 0x16, 0x9e,
-	0xb5, 0x5a, 0x18, 0xae, 0xe4, 0xe2, 0xaa, 0x52, 0xf4, 0xfb, 0x4d, 0xb2, 0x53, 0x4d, 0x30, 0x7d,
-	0x9f, 0xf4, 0x44, 0xf1, 0xa6, 0x70, 0xb7, 0xca, 0x95, 0xc5, 0x6e, 0xbc, 0x02, 0xe8, 0x47, 0x64,
-	0x57, 0xc9, 0xe9, 0x59, 0x02, 0xd2, 0x8a, 0xb1, 0x00, 0xed, 0x32, 0xde, 0x8b, 0xeb, 0xa0, 0xb7,
-	0x71, 0x9c, 0x24, 0x1a, 0x8c, 0x71, 0xc9, 0xec, 0xc5, 0x2b, 0x80, 0x52, 0xb2, 0x95, 0x33, 0x73,
-	0xed, 0x52, 0xd3, 0x8b, 0xdd, 0x67, 0xda, 0x27, 0xef, 0xa5, 0xcc, 0xc2, 0x3b, 0xb6, 0x70, 0xb1,
-	0xed, 0xc5, 0xe5, 0x91, 0x3e, 0x25, 0xa4, 0xd0, 0x22, 0x67, 0x7a, 0x31, 0x90, 0xc6, 0x45, 0xa9,
-	0x17, 0x57, 0x10, 0x1a, 0x91, 0x1d, 0x03, 0x5c, 0xc9, 0x24, 0x48, 0xbc, 0xe7, 0x24, 0x6a, 0x18,
-	0xfd, 0x36, 0x79, 0xa8, 0x21, 0x63, 0x8b, 0xe3, 0x14, 0xa4, 0x2d, 0x7f, 0xdb, 0x5d, 0x27, 0xd8,
-	0x24, 0xa2, 0x53, 0xb2, 0x53, 0xad, 0x55, 0xfa, 0x84, 0xdc, 0x75, 0xdd, 0x85, 0xab, 0x2c, 0x04,
-	0x64, 0x79, 0x46, 0xce, 0x2a, 0x73, 0x2a, 0x20, 0x4b, 0x42, 0x28, 0x96, 0xe7, 0xe8, 0x53, 0xb2,
-	0x53, 0x2d, 0x56, 0xfa, 0x31, 0xb9, 0x67, 0x44, 0x2a, 0x59, 0x96, 0x09, 0x99, 0x9e, 0xa8, 0x04,
-	0x82, 0xb5, 0x35, 0x34, 0xfa, 0xd3, 0x6d, 0xf2, 0x60, 0xbd, 0x34, 0x31, 0x40, 0x63, 0x36, 0x3f,
-	0x5f, 0x69, 0x95, 0x47, 0xfa, 0x9c, 0xdc, 0xe7, 0x2a, 0x01, 0x3e, 0x82, 0x0c, 0x38, 0xfe, 0x82,
-	0xef, 0x39, 0x4f, 0x76, 0xe3, 0x75, 0x98, 0x7e, 0x4a, 0x1e, 0x17, 0x8c, 0x5f, 0x83, 0x1d, 0x82,
-	0x16, 0x2a, 0xa9, 0x28, 0xdc, 0x72, 0x0a, 0x1d, 0x2c, 0xfd, 0x2e, 0x79, 0x64, 0x44, 0x06, 0x92,
-	0xc3, 0x68, 0x5a, 0x14, 0x98, 0x43, 0xa7, 0xb4, 0xe5, 0x94, 0xda, 0xa8, 0xa6, 0x4f, 0x07, 0x2e,
-	0xad, 0x0d, 0x9f, 0x0e, 0x3a, 0x7d, 0x3a, 0x70, 0xa9, 0xee, 0xf2, 0xe9, 0xa0, 0xdd, 0xa7, 0x03,
-	0x97, 0xfd, 0x56, 0x9f, 0x0e, 0x9a, 0x3e, 0x1d, 0xba, 0x12, 0x68, 0xf8, 0x74, 0xd8, 0xe9, 0xd3,
-	0x61, 0xbf, 0x77, 0x83, 0x4f, 0x87, 0xed, 0x3e, 0x1d, 0xf6, 0x49, 0x97, 0x4f, 0x87, 0x4d, 0x9f,
-	0x8e, 0xfa, 0xdb, 0x6d, 0x3e, 0x1d, 0x75, 0xfa, 0x74, 0xd4, 0xdf, 0xb9, 0xc1, 0xa7, 0xa3, 0x76,
-	0x9f, 0x8e, 0xfa, 0xbb, 0x5d, 0x3e, 0x1d, 0x61, 0xa5, 0x29, 0x75, 0x35, 0xb0, 0xf9, 0xb8, 0x7f,
-	0xcf, 0x57, 0x5a, 0x38, 0x46, 0xff, 0xde, 0x24, 0x8f, 0x5a, 0xba, 0x1b, 0xfd, 0x26, 0x79, 0x80,
-	0xa3, 0x78, 0x2a, 0x39, 0xe4, 0x20, 0xed, 0xc5, 0xa2, 0x28, 0x8b, 0xb4, 0x81, 0xe3, 0x75, 0xfd,
-	0xb5, 0xb0, 0x16, 0xf4, 0x05, 0xd3, 0x29, 0xd8, 0x50, 0xaa, 0x35, 0x0c, 0xa3, 0xe2, 0xcf, 0x2f,
-	0xa6, 0xe3, 0x31, 0xe8, 0x73, 0x36, 0x0f, 0x05, 0xba, 0x0e, 0x63, 0x3b, 0x02, 0x3e, 0x51, 0x27,
-	0x4c, 0x72, 0xc8, 0xce, 0x64, 0xe2, 0x6a, 0xf2, 0x6e, 0x5c, 0x07, 0x31, 0x06, 0x85, 0xb1, 0x72,
-	0x18, 0x2e, 0xed, 0x25, 0xd3, 0x82, 0x49, 0x1b, 0x2a, 0xb2, 0x8d, 0x42, 0x0f, 0x12, 0x9b, 0x8f,
-	0x07, 0x22, 0x15, 0xf6, 0x33, 0x98, 0x41, 0x66, 0x42, 0x39, 0xae, 0xc3, 0xd8, 0x5a, 0x96, 0xd0,
-	0x60, 0xaa, 0xdd, 0x36, 0x12, 0xaa, 0xb0, 0x49, 0xd0, 0x03, 0xf2, 0xa5, 0x89, 0x52, 0xd7, 0xa7,
-	0x19, 0x33, 0x93, 0x73, 0x21, 0x45, 0x3e, 0xcd, 0x2f, 0x44, 0x0e, 0xa1, 0x10, 0x5b, 0xb9, 0xe8,
-	0x3f, 0x1b, 0x84, 0xac, 0x06, 0x00, 0x06, 0x30, 0x53, 0x9c, 0x65, 0x43, 0xa5, 0xed, 0xb9, 0x90,
-	0x21, 0xd0, 0x35, 0xac, 0x2e, 0xc3, 0xe6, 0x65, 0x90, 0xab, 0x18, 0x76, 0xae, 0xc4, 0xf0, 0xe2,
-	0x9c, 0xe9, 0xeb, 0xd0, 0xa2, 0x97, 0x67, 0xfc, 0xf9, 0x85, 0x48, 0xd3, 0xc5, 0x0b, 0xc6, 0xaf,
-	0x5f, 0xce, 0x40, 0x5a, 0x13, 0x2e, 0xfb, 0x3a, 0x8c, 0xdd, 0xd9, 0x2a, 0x09, 0x41, 0xc8, 0x47,
-	0xb4, 0x82, 0x20, 0x8f, 0x51, 0x08, 0xbc, 0x8f, 0x61, 0x05, 0xc1, 0x49, 0xc1, 0x99, 0x09, 0xb4,
-	0x0f, 0xdb, 0x0a, 0x88, 0xfe, 0xb6, 0x49, 0xb6, 0x2b, 0x93, 0x0b, 0x37, 0x38, 0xa6, 0x79, 0xb9,
-	0xc1, 0x31, 0xcd, 0xe9, 0x33, 0xb2, 0xcd, 0x34, 0x3f, 0x93, 0x16, 0xf4, 0x8c, 0x65, 0xa1, 0x05,
-	0x57, 0x21, 0x37, 0x8b, 0xf2, 0x02, 0x12, 0xac, 0x86, 0x50, 0x46, 0x2b, 0x00, 0x4b, 0xd7, 0x6a,
-	0x26, 0x4d, 0x2e, 0x5c, 0xf5, 0x0f, 0x99, 0x9d, 0x84, 0x9f, 0xda, 0xc0, 0xe9, 0x63, 0x72, 0x47,
-	0xcf, 0x7f, 0xce, 0x84, 0x74, 0xbf, 0xf3, 0x61, 0x1c, 0x4e, 0x88, 0x5b, 0x8f, 0xdf, 0xf1, 0xb8,
-	0x3f, 0xa1, 0xed, 0x42, 0x59, 0xf3, 0x4a, 0x65, 0xc9, 0x9b, 0x19, 0x68, 0x97, 0x68, 0xff, 0x13,
-	0x1b, 0x38, 0xdd, 0x23, 0x54, 0xaa, 0x5c, 0x48, 0x96, 0x9d, 0x02, 0x24, 0x97, 0x2a, 0xb3, 0x2c,
-	0x2d, 0xcb, 0xa2, 0x85, 0x41, 0xdb, 0x99, 0x32, 0xe6, 0xcd, 0x78, 0xa4, 0xc6, 0x76, 0xf4, 0x4e,
-	0x58, 0x3e, 0x09, 0xcd, 0xa9, 0x81, 0x47, 0x7f, 0xbf, 0x45, 0x7a, 0xcb, 0xa5, 0x12, 0x97, 0x06,
-	0x23, 0x8a, 0xb7, 0x06, 0xf4, 0x80, 0x59, 0x16, 0x16, 0xbf, 0x67, 0x5d, 0x9b, 0x68, 0x29, 0x17,
-	0x57, 0x95, 0xe8, 0x2f, 0x70, 0x92, 0x15, 0x6e, 0x68, 0xd6, 0x16, 0xbf, 0x0f, 0xbb, 0xcc, 0x54,
-	0x44, 0xe3, 0x35, 0x55, 0xfa, 0x9a, 0xdc, 0x97, 0x60, 0xdf, 0x29, 0x7d, 0x3d, 0x10, 0x2c, 0x1b,
-	0x66, 0x4c, 0x86, 0xfd, 0xef, 0xa3, 0x56, 0x6b, 0xaf, 0xeb, 0xb2, 0xf1, 0xba, 0x32, 0xe5, 0xe4,
-	0x31, 0xea, 0x9d, 0x02, 0xb3, 0x53, 0x0d, 0xc7, 0x9c, 0x83, 0x31, 0x38, 0x57, 0x4d, 0xd8, 0x05,
-	0xbf, 0xd5, 0xb9, 0x0b, 0x36, 0x55, 0xe2, 0x0e, 0x53, 0x74, 0x4e, 0x3e, 0x40, 0xe6, 0xb8, 0x28,
-	0x32, 0xc1, 0xdd, 0xdd, 0x6e, 0xdd, 0x10, 0x0f, 0x3a, 0xbf, 0xab, 0x53, 0x33, 0xbe, 0xd9, 0x70,
-	0xf4, 0xcf, 0x4d, 0xb2, 0x5d, 0x49, 0x0c, 0xde, 0x80, 0xa9, 0x01, 0x3d, 0x64, 0xda, 0x1e, 0x2b,
-	0x1d, 0xee, 0x46, 0x15, 0xc2, 0x1d, 0x16, 0x8f, 0x92, 0xe5, 0x70, 0x2c, 0x93, 0x21, 0x33, 0xe6,
-	0x9d, 0xd2, 0x49, 0x48, 0x59, 0xfb, 0x0e, 0xfb, 0xb6, 0x29, 0x1f, 0xb7, 0x19, 0xa1, 0x47, 0xe4,
-	0xcb, 0x6e, 0xb5, 0xcd, 0x99, 0xc8, 0xd0, 0x51, 0xd0, 0xe8, 0x9b, 0x16, 0xa1, 0xa5, 0xb4, 0x93,
-	0x74, 0x48, 0x3e, 0x5c, 0x11, 0xd3, 0x2b, 0xc3, 0xb5, 0x70, 0xbb, 0xd7, 0xcb, 0x79, 0x21, 0x7c,
-	0xa7, 0x74, 0x97, 0x05, 0xf3, 0x75, 0x3b, 0xfe, 0x7f, 0x44, 0xb1, 0xe3, 0x69, 0xc8, 0x80, 0x19,
-	0xc0, 0xa3, 0x76, 0xe1, 0xbf, 0x1d, 0xd7, 0x30, 0xec, 0x78, 0x5a, 0x4d, 0x3c, 0x7f, 0xc7, 0xf1,
-	0xcb, 0x73, 0xf4, 0xd7, 0x2d, 0x72, 0xaf, 0x5e, 0xa7, 0xd8, 0xab, 0xd5, 0xd4, 0x5e, 0xa9, 0xa9,
-	0x4c, 0x86, 0x5a, 0xcd, 0x17, 0xe5, 0x3e, 0xeb, 0x23, 0xdc, 0xca, 0xe1, 0x3c, 0x0a, 0xab, 0xe9,
-	0x48, 0x14, 0xb8, 0x8d, 0x86, 0xf5, 0xb8, 0x06, 0x62, 0x7b, 0x5d, 0xae, 0xa7, 0x41, 0xce, 0x87,
-	0x6b, 0x1d, 0x46, 0x7b, 0x46, 0x14, 0x31, 0xa4, 0x2f, 0xe7, 0x45, 0x25, 0x24, 0x75, 0x10, 0x93,
-	0xe0, 0x00, 0x0d, 0xe9, 0x2b, 0x60, 0xc9, 0xc8, 0x32, 0x6d, 0x9d, 0xb4, 0x8f, 0x42, 0x3b, 0x89,
-	0x21, 0x1b, 0x39, 0x33, 0xc2, 0x58, 0xcd, 0x74, 0x58, 0xad, 0x6b, 0x18, 0xb6, 0x6f, 0xb3, 0x6a,
-	0x30, 0x7e, 0xb5, 0xae, 0x20, 0xf8, 0xe2, 0x72, 0xc6, 0x4d, 0xa1, 0xa4, 0x81, 0x0b, 0x76, 0x95,
-	0xf9, 0xa6, 0xd5, 0xf5, 0xe2, 0x1a, 0xad, 0x09, 0xc7, 0x0d, 0x75, 0xfa, 0x43, 0xd2, 0x37, 0xe5,
-	0x7b, 0xe3, 0xc2, 0xb7, 0x60, 0xcc, 0x88, 0xd5, 0x2a, 0x73, 0x1d, 0xee, 0x6e, 0xdc, 0xc9, 0xbb,
-	0xb7, 0x80, 0xab, 0xb0, 0x53, 0xa5, 0x73, 0x66, 0xdd, 0xe6, 0x85, 0x6f, 0x81, 0x0a, 0x86, 0xf6,
-	0x35, 0x24, 0x53, 0x99, 0x30, 0x69, 0xcb, 0x8c, 0x0f, 0x95, 0xc0, 0x71, 0xe1, 0x76, 0xaf, 0x5e,
-	0xdc, 0xc9, 0x47, 0xff, 0xda, 0x20, 0xf7, 0xd7, 0xfa, 0x0f, 0x2e, 0x17, 0x5c, 0x0b, 0x2b, 0x38,
-	0xcb, 0x10, 0xc3, 0xd0, 0xaa, 0xa9, 0x0d, 0x63, 0xb9, 0x8d, 0xc2, 0x5e, 0x5f, 0x30, 0x6d, 0x45,
-	0x5d, 0xc1, 0xcf, 0xe8, 0x16, 0x06, 0xdf, 0x0d, 0x49, 0xf8, 0xb6, 0xf0, 0xbb, 0xfc, 0x18, 0x5b,
-	0x43, 0xe9, 0x2b, 0xb2, 0x5b, 0x22, 0x3e, 0x13, 0xbe, 0xdf, 0x45, 0xad, 0x99, 0x18, 0x54, 0x25,
-	0xe3, 0xba, 0x62, 0x74, 0x4c, 0x1e, 0xb5, 0x74, 0x00, 0x1c, 0x3a, 0x33, 0x96, 0x89, 0xc4, 0xb7,
-	0x25, 0x3e, 0x81, 0xdc, 0xef, 0x79, 0xb7, 0xe3, 0x06, 0x1e, 0x69, 0xf2, 0x60, 0x3d, 0xd9, 0xae,
-	0xee, 0x57, 0xd8, 0xf2, 0x05, 0x84, 0x75, 0x5f, 0x87, 0xf1, 0x89, 0x88, 0x4b, 0x44, 0xb8, 0x3e,
-	0xee, 0x33, 0x36, 0x3a, 0x0b, 0x73, 0x7b, 0x0e, 0xc6, 0xe0, 0x6c, 0xf4, 0x37, 0xa6, 0x0a, 0x45,
-	0x7f, 0xd9, 0x20, 0xbb, 0xb5, 0xdf, 0xe5, 0xd6, 0x8f, 0x00, 0x9c, 0x25, 0x21, 0x27, 0x15, 0x04,
-	0x47, 0x37, 0x73, 0x8b, 0x72, 0x08, 0x7f, 0x38, 0xe1, 0xbd, 0x5b, 0x46, 0x44, 0x5d, 0x83, 0x0c,
-	0xdf, 0x56, 0x07, 0xb1, 0x43, 0xd4, 0xe2, 0x76, 0xce, 0xe6, 0x23, 0xf1, 0x5b, 0x08, 0x0b, 0x44,
-	0x2b, 0x17, 0xfd, 0x63, 0x8b, 0x3c, 0x6e, 0x9f, 0x35, 0xb8, 0x4a, 0x72, 0xb7, 0xb3, 0x9e, 0xb0,
-	0x2c, 0xfb, 0x15, 0x13, 0x56, 0xc8, 0x34, 0x04, 0xa8, 0x49, 0x60, 0x37, 0xe3, 0x2c, 0xcb, 0x70,
-	0x8b, 0x28, 0x5f, 0x9e, 0xe5, 0xb9, 0xe4, 0x86, 0x95, 0xdd, 0xae, 0x3c, 0x63, 0x12, 0xf1, 0x33,
-	0xe8, 0xb3, 0xe4, 0x98, 0x5b, 0x31, 0x63, 0x16, 0xc2, 0x4b, 0xbc, 0x81, 0x63, 0xa5, 0x96, 0xd8,
-	0x00, 0x58, 0x29, 0xed, 0x1f, 0xe8, 0x2d, 0x0c, 0x3e, 0x52, 0x12, 0xf5, 0x5a, 0xd9, 0x81, 0x30,
-	0x76, 0xaa, 0xaf, 0x82, 0x1d, 0x0c, 0xaf, 0x6f, 0x2e, 0x1d, 0x2c, 0xde, 0xc9, 0x2a, 0xb3, 0xb4,
-	0x58, 0xee, 0xd2, 0xbd, 0xb8, 0x93, 0xc7, 0xe6, 0x57, 0xe5, 0x86, 0x42, 0x9e, 0x4c, 0x98, 0x0c,
-	0xcb, 0x53, 0x2f, 0x6e, 0x27, 0xd1, 0x53, 0xc8, 0x41, 0xa7, 0x20, 0xf9, 0x22, 0x0c, 0xd8, 0xd7,
-	0xd3, 0xfc, 0x0a, 0xb4, 0xeb, 0x31, 0xbd, 0xb8, 0x83, 0xc5, 0x12, 0x76, 0xad, 0x80, 0xab, 0x3c,
-	0x10, 0xa1, 0xc9, 0xac, 0xc3, 0xf8, 0x0d, 0x53, 0xc9, 0xac, 0x05, 0x99, 0x40, 0x82, 0x89, 0x73,
-	0xcd, 0x6a, 0xbc, 0xec, 0x32, 0x1d, 0x2c, 0x16, 0x55, 0xab, 0xd6, 0x8e, 0x1f, 0x3b, 0x6d, 0x5c,
-	0xf4, 0xe7, 0x2d, 0xf2, 0xc1, 0x8d, 0x4b, 0x05, 0x5e, 0x1e, 0x2e, 0x92, 0x50, 0x74, 0xe5, 0xff,
-	0x3a, 0x55, 0xc8, 0xf5, 0xb1, 0x55, 0x79, 0x2d, 0x25, 0x37, 0x43, 0x1f, 0x6b, 0x52, 0xf4, 0x94,
-	0x3c, 0x75, 0x55, 0xa5, 0x55, 0x8a, 0xc3, 0xef, 0x8d, 0x2e, 0xfd, 0x59, 0x2a, 0xfb, 0x3e, 0xf5,
-	0x3f, 0xa4, 0x30, 0xfb, 0x5e, 0x02, 0x0c, 0x48, 0xff, 0x7f, 0xee, 0xd2, 0x82, 0xbf, 0x4a, 0x9d,
-	0xbc, 0xbf, 0x82, 0x1a, 0x38, 0x8e, 0x00, 0x09, 0xdc, 0x06, 0x22, 0xbc, 0x44, 0x5a, 0x39, 0xfa,
-	0x03, 0xf2, 0x95, 0x1a, 0xfe, 0x56, 0x8b, 0x72, 0x00, 0xf8, 0x32, 0xed, 0xa2, 0xe9, 0x4f, 0xc8,
-	0x93, 0x2b, 0x2d, 0x92, 0x14, 0x92, 0xcf, 0x84, 0x04, 0x37, 0x1a, 0x2a, 0xca, 0xbe, 0x52, 0x6f,
-	0x90, 0xa0, 0x3f, 0x23, 0x5f, 0xe5, 0x4a, 0x8e, 0x41, 0xe3, 0xa3, 0xfb, 0x94, 0x71, 0xab, 0xf4,
-	0xa2, 0x62, 0xc0, 0x57, 0xec, 0x4d, 0x22, 0x78, 0x23, 0xb1, 0xad, 0x5c, 0x28, 0x09, 0x03, 0xc8,
-	0xd8, 0xc2, 0x6f, 0x33, 0x7e, 0xf3, 0x6f, 0x61, 0x5e, 0x8c, 0xc9, 0x27, 0x4a, 0xa7, 0x7b, 0xaa,
-	0x00, 0xc9, 0x95, 0x4e, 0xf6, 0xfc, 0x7f, 0xef, 0x6d, 0x13, 0xe1, 0xf3, 0x1f, 0xa5, 0xc2, 0x4e,
-	0xa6, 0x57, 0x7b, 0x5c, 0xe5, 0xfb, 0xa5, 0xfc, 0xbe, 0x97, 0xff, 0x4e, 0xf9, 0x5f, 0xfd, 0xf7,
-	0xf7, 0x53, 0xd5, 0xf6, 0x8f, 0xfd, 0xd5, 0x1d, 0x27, 0x71, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff,
-	0xff, 0xac, 0x32, 0x52, 0x2e, 0xdd, 0x17, 0x00, 0x00,
+func init() { file_voltha_protos_voip_system_profile_proto_init() }
+func file_voltha_protos_voip_system_profile_proto_init() {
+	if File_voltha_protos_voip_system_profile_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_system_profile_proto_rawDesc), len(file_voltha_protos_voip_system_profile_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_voip_system_profile_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voip_system_profile_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voip_system_profile_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voip_system_profile_proto = out.File
+	file_voltha_protos_voip_system_profile_proto_goTypes = nil
+	file_voltha_protos_voip_system_profile_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
index a4f90f7..3219dc8 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
@@ -1,200 +1,260 @@
+// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
+//
+// 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voip_user_profile.proto
 
 package voip_user_profile
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 // A user specific profile for voip service
 type VoipUserProfileRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// for the path in KV store
-	Key                  string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	VoipUserProfile      *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Key             string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipUserProfile *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *VoipUserProfileRequest) Reset()         { *m = VoipUserProfileRequest{} }
-func (m *VoipUserProfileRequest) String() string { return proto.CompactTextString(m) }
-func (*VoipUserProfileRequest) ProtoMessage()    {}
+func (x *VoipUserProfileRequest) Reset() {
+	*x = VoipUserProfileRequest{}
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipUserProfileRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipUserProfileRequest) ProtoMessage() {}
+
+func (x *VoipUserProfileRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipUserProfileRequest.ProtoReflect.Descriptor instead.
 func (*VoipUserProfileRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ecf0ef501fce1bc, []int{0}
+	return file_voltha_protos_voip_user_profile_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *VoipUserProfileRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipUserProfileRequest.Unmarshal(m, b)
-}
-func (m *VoipUserProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipUserProfileRequest.Marshal(b, m, deterministic)
-}
-func (m *VoipUserProfileRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipUserProfileRequest.Merge(m, src)
-}
-func (m *VoipUserProfileRequest) XXX_Size() int {
-	return xxx_messageInfo_VoipUserProfileRequest.Size(m)
-}
-func (m *VoipUserProfileRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipUserProfileRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipUserProfileRequest proto.InternalMessageInfo
-
-func (m *VoipUserProfileRequest) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *VoipUserProfileRequest) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
-	if m != nil {
-		return m.VoipUserProfile
+func (x *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
+	if x != nil {
+		return x.VoipUserProfile
 	}
 	return nil
 }
 
 type VoipUserProfile struct {
-	VoipSystemProfileKey string   `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
-	Username             string   `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
-	Password             string   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
-	Domain               string   `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
-	Proxy                string   `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
-	Port                 uint32   `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
-	SipDisplayName       string   `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
-	Realm                string   `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state                protoimpl.MessageState `protogen:"open.v1"`
+	VoipSystemProfileKey string                 `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
+	Username             string                 `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+	Password             string                 `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
+	Domain               string                 `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
+	Proxy                string                 `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
+	Port                 uint32                 `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
+	SipDisplayName       string                 `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
+	Realm                string                 `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
+	unknownFields        protoimpl.UnknownFields
+	sizeCache            protoimpl.SizeCache
 }
 
-func (m *VoipUserProfile) Reset()         { *m = VoipUserProfile{} }
-func (m *VoipUserProfile) String() string { return proto.CompactTextString(m) }
-func (*VoipUserProfile) ProtoMessage()    {}
+func (x *VoipUserProfile) Reset() {
+	*x = VoipUserProfile{}
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *VoipUserProfile) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VoipUserProfile) ProtoMessage() {}
+
+func (x *VoipUserProfile) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voip_user_profile_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use VoipUserProfile.ProtoReflect.Descriptor instead.
 func (*VoipUserProfile) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0ecf0ef501fce1bc, []int{1}
+	return file_voltha_protos_voip_user_profile_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *VoipUserProfile) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_VoipUserProfile.Unmarshal(m, b)
-}
-func (m *VoipUserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_VoipUserProfile.Marshal(b, m, deterministic)
-}
-func (m *VoipUserProfile) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VoipUserProfile.Merge(m, src)
-}
-func (m *VoipUserProfile) XXX_Size() int {
-	return xxx_messageInfo_VoipUserProfile.Size(m)
-}
-func (m *VoipUserProfile) XXX_DiscardUnknown() {
-	xxx_messageInfo_VoipUserProfile.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_VoipUserProfile proto.InternalMessageInfo
-
-func (m *VoipUserProfile) GetVoipSystemProfileKey() string {
-	if m != nil {
-		return m.VoipSystemProfileKey
+func (x *VoipUserProfile) GetVoipSystemProfileKey() string {
+	if x != nil {
+		return x.VoipSystemProfileKey
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *VoipUserProfile) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetPassword() string {
-	if m != nil {
-		return m.Password
+func (x *VoipUserProfile) GetPassword() string {
+	if x != nil {
+		return x.Password
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetDomain() string {
-	if m != nil {
-		return m.Domain
+func (x *VoipUserProfile) GetDomain() string {
+	if x != nil {
+		return x.Domain
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetProxy() string {
-	if m != nil {
-		return m.Proxy
+func (x *VoipUserProfile) GetProxy() string {
+	if x != nil {
+		return x.Proxy
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetPort() uint32 {
-	if m != nil {
-		return m.Port
+func (x *VoipUserProfile) GetPort() uint32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *VoipUserProfile) GetSipDisplayName() string {
-	if m != nil {
-		return m.SipDisplayName
+func (x *VoipUserProfile) GetSipDisplayName() string {
+	if x != nil {
+		return x.SipDisplayName
 	}
 	return ""
 }
 
-func (m *VoipUserProfile) GetRealm() string {
-	if m != nil {
-		return m.Realm
+func (x *VoipUserProfile) GetRealm() string {
+	if x != nil {
+		return x.Realm
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*VoipUserProfileRequest)(nil), "voip_user_profile.VoipUserProfileRequest")
-	proto.RegisterType((*VoipUserProfile)(nil), "voip_user_profile.VoipUserProfile")
+var File_voltha_protos_voip_user_profile_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_voip_user_profile_proto_rawDesc = "" +
+	"\n" +
+	"%voltha_protos/voip_user_profile.proto\x12\x11voip_user_profile\x1a\x1cgoogle/api/annotations.proto\"x\n" +
+	"\x16VoipUserProfileRequest\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12L\n" +
+	"\x0fvoipUserProfile\x18\x02 \x01(\v2\".voip_user_profile.VoipUserProfileR\x0fvoipUserProfile\"\xfd\x01\n" +
+	"\x0fVoipUserProfile\x122\n" +
+	"\x14voipSystemProfileKey\x18\x01 \x01(\tR\x14voipSystemProfileKey\x12\x1a\n" +
+	"\busername\x18\x02 \x01(\tR\busername\x12\x1a\n" +
+	"\bpassword\x18\x03 \x01(\tR\bpassword\x12\x16\n" +
+	"\x06domain\x18\x04 \x01(\tR\x06domain\x12\x14\n" +
+	"\x05proxy\x18\x05 \x01(\tR\x05proxy\x12\x12\n" +
+	"\x04port\x18\x06 \x01(\rR\x04port\x12&\n" +
+	"\x0esipDisplayName\x18\a \x01(\tR\x0esipDisplayName\x12\x14\n" +
+	"\x05realm\x18\b \x01(\tR\x05realmBb\n" +
+	"%org.opencord.voltha.voip_user_profileZ9github.com/opencord/voltha-protos/v5/go/voip_user_profileb\x06proto3"
+
+var (
+	file_voltha_protos_voip_user_profile_proto_rawDescOnce sync.Once
+	file_voltha_protos_voip_user_profile_proto_rawDescData []byte
+)
+
+func file_voltha_protos_voip_user_profile_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voip_user_profile_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voip_user_profile_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_user_profile_proto_rawDesc), len(file_voltha_protos_voip_user_profile_proto_rawDesc)))
+	})
+	return file_voltha_protos_voip_user_profile_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/voip_user_profile.proto", fileDescriptor_0ecf0ef501fce1bc)
+var file_voltha_protos_voip_user_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_voltha_protos_voip_user_profile_proto_goTypes = []any{
+	(*VoipUserProfileRequest)(nil), // 0: voip_user_profile.VoipUserProfileRequest
+	(*VoipUserProfile)(nil),        // 1: voip_user_profile.VoipUserProfile
+}
+var file_voltha_protos_voip_user_profile_proto_depIdxs = []int32{
+	1, // 0: voip_user_profile.VoipUserProfileRequest.voipUserProfile:type_name -> voip_user_profile.VoipUserProfile
+	1, // [1:1] is the sub-list for method output_type
+	1, // [1:1] is the sub-list for method input_type
+	1, // [1:1] is the sub-list for extension type_name
+	1, // [1:1] is the sub-list for extension extendee
+	0, // [0:1] is the sub-list for field type_name
 }
 
-var fileDescriptor_0ecf0ef501fce1bc = []byte{
-	// 322 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcb, 0x4b, 0x33, 0x31,
-	0x10, 0x67, 0xbf, 0x3e, 0xbe, 0x76, 0x44, 0xab, 0xa1, 0x94, 0x50, 0x3c, 0x94, 0x42, 0xa5, 0x17,
-	0x77, 0xa1, 0xe2, 0xc1, 0xab, 0x78, 0x53, 0x44, 0x56, 0xf4, 0xe0, 0xa5, 0xa4, 0x6d, 0xdc, 0x06,
-	0x77, 0x77, 0x62, 0x92, 0xd6, 0xee, 0x1f, 0x2f, 0x48, 0x92, 0x6e, 0xc1, 0x5d, 0x6f, 0xf3, 0x7b,
-	0xcd, 0x0c, 0xc9, 0xc0, 0x64, 0x8b, 0xa9, 0x59, 0xb3, 0xb9, 0x54, 0x68, 0x50, 0x47, 0x5b, 0x14,
-	0x72, 0xbe, 0xd1, 0x5c, 0x59, 0xe2, 0x5d, 0xa4, 0x3c, 0x74, 0x02, 0x39, 0xab, 0x09, 0xc3, 0xf3,
-	0x04, 0x31, 0x49, 0x79, 0xc4, 0xa4, 0x88, 0x58, 0x9e, 0xa3, 0x61, 0x46, 0x60, 0xae, 0x7d, 0x60,
-	0xbc, 0x83, 0xc1, 0x2b, 0x0a, 0xf9, 0xa2, 0xb9, 0x7a, 0xf2, 0x81, 0x98, 0x7f, 0x6e, 0xb8, 0x36,
-	0xe4, 0x14, 0x1a, 0x1f, 0xbc, 0xa0, 0xc1, 0x28, 0x98, 0x76, 0x63, 0x5b, 0x92, 0x07, 0xe8, 0x6d,
-	0x7f, 0x7b, 0xe9, 0xbf, 0x51, 0x30, 0x3d, 0x9a, 0x8d, 0xc3, 0xfa, 0x3e, 0xd5, 0xae, 0xd5, 0xe8,
-	0xf8, 0x3b, 0x80, 0x5e, 0xc5, 0x44, 0x66, 0xd0, 0xb7, 0xb6, 0xe7, 0x42, 0x1b, 0x9e, 0xed, 0xc9,
-	0xfb, 0xc3, 0x12, 0x7f, 0x6a, 0x64, 0x08, 0x1d, 0x3b, 0x38, 0x67, 0x99, 0x5f, 0xa7, 0x1b, 0x1f,
-	0xb0, 0xd5, 0x24, 0xd3, 0xfa, 0x0b, 0xd5, 0x8a, 0x36, 0xbc, 0x56, 0x62, 0x32, 0x80, 0xf6, 0x0a,
-	0x33, 0x26, 0x72, 0xda, 0x74, 0xca, 0x1e, 0x91, 0x3e, 0xb4, 0xa4, 0xc2, 0x5d, 0x41, 0x5b, 0x8e,
-	0xf6, 0x80, 0x10, 0x68, 0x4a, 0x54, 0x86, 0xb6, 0x47, 0xc1, 0xf4, 0x38, 0x76, 0x35, 0xb9, 0x80,
-	0x13, 0x2d, 0xe4, 0x9d, 0xd0, 0x32, 0x65, 0xc5, 0xa3, 0x9d, 0xff, 0xdf, 0x45, 0x2a, 0xac, 0xed,
-	0xa8, 0x38, 0x4b, 0x33, 0xda, 0xf1, 0x1d, 0x1d, 0xb8, 0x5d, 0xc0, 0x04, 0x55, 0x12, 0xa2, 0xe4,
-	0xf9, 0x12, 0xd5, 0x2a, 0xf4, 0x1f, 0x5c, 0x7f, 0xc9, 0xb7, 0x9b, 0x44, 0x98, 0xf5, 0x66, 0x11,
-	0x2e, 0x31, 0x8b, 0x4a, 0x77, 0xe4, 0xdd, 0x97, 0xe5, 0x39, 0x5c, 0x47, 0x09, 0xd6, 0x8f, 0x62,
-	0xd1, 0x76, 0xfa, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x23, 0x54, 0x5a, 0x3e, 0x02,
-	0x00, 0x00,
+func init() { file_voltha_protos_voip_user_profile_proto_init() }
+func file_voltha_protos_voip_user_profile_proto_init() {
+	if File_voltha_protos_voip_user_profile_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voip_user_profile_proto_rawDesc), len(file_voltha_protos_voip_user_profile_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_voip_user_profile_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voip_user_profile_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voip_user_profile_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voip_user_profile_proto = out.File
+	file_voltha_protos_voip_user_profile_proto_goTypes = nil
+	file_voltha_protos_voip_user_profile_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
index 04a40f2..e8ea3df 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/adapter.pb.go
@@ -1,68 +1,75 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/adapter.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type AdapterConfig struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Custom (vendor-specific) configuration attributes
-	AdditionalConfig     *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdditionalConfig *anypb.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
+	unknownFields    protoimpl.UnknownFields
+	sizeCache        protoimpl.SizeCache
 }
 
-func (m *AdapterConfig) Reset()         { *m = AdapterConfig{} }
-func (m *AdapterConfig) String() string { return proto.CompactTextString(m) }
-func (*AdapterConfig) ProtoMessage()    {}
+func (x *AdapterConfig) Reset() {
+	*x = AdapterConfig{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *AdapterConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AdapterConfig) ProtoMessage() {}
+
+func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AdapterConfig.ProtoReflect.Descriptor instead.
 func (*AdapterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{0}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AdapterConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AdapterConfig.Unmarshal(m, b)
-}
-func (m *AdapterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AdapterConfig.Marshal(b, m, deterministic)
-}
-func (m *AdapterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AdapterConfig.Merge(m, src)
-}
-func (m *AdapterConfig) XXX_Size() int {
-	return xxx_messageInfo_AdapterConfig.Size(m)
-}
-func (m *AdapterConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_AdapterConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
-
-func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
-	if m != nil {
-		return m.AdditionalConfig
+func (x *AdapterConfig) GetAdditionalConfig() *anypb.Any {
+	if x != nil {
+		return x.AdditionalConfig
 	}
 	return nil
 }
 
 // Adapter (software plugin)
 type Adapter struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// the adapter ID has to be unique,
 	// it will be generated as Type + CurrentReplica
 	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
@@ -71,8 +78,8 @@
 	// Adapter configuration
 	Config *AdapterConfig `protobuf:"bytes,16,opt,name=config,proto3" json:"config,omitempty"`
 	// Custom descriptors and custom configuration
-	AdditionalDescription *any.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
-	LogicalDeviceIds      []string `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"`
+	AdditionalDescription *anypb.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
+	LogicalDeviceIds      []string   `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"` // Logical devices "owned"
 	// timestamp when the adapter last sent a message to the core
 	LastCommunication int64  `protobuf:"varint,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
 	CurrentReplica    int32  `protobuf:"varint,6,opt,name=currentReplica,proto3" json:"currentReplica,omitempty"`
@@ -80,187 +87,236 @@
 	Endpoint          string `protobuf:"bytes,8,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
 	// all replicas of the same adapter will have the same type
 	// it is used to associate a device to an adapter
-	Type                 string   `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Type          string `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapter) Reset()         { *m = Adapter{} }
-func (m *Adapter) String() string { return proto.CompactTextString(m) }
-func (*Adapter) ProtoMessage()    {}
+func (x *Adapter) Reset() {
+	*x = Adapter{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapter) ProtoMessage() {}
+
+func (x *Adapter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapter.ProtoReflect.Descriptor instead.
 func (*Adapter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{1}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Adapter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Adapter.Unmarshal(m, b)
-}
-func (m *Adapter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Adapter.Marshal(b, m, deterministic)
-}
-func (m *Adapter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapter.Merge(m, src)
-}
-func (m *Adapter) XXX_Size() int {
-	return xxx_messageInfo_Adapter.Size(m)
-}
-func (m *Adapter) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapter proto.InternalMessageInfo
-
-func (m *Adapter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Adapter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Adapter) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Adapter) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Adapter) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Adapter) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Adapter) GetConfig() *AdapterConfig {
-	if m != nil {
-		return m.Config
+func (x *Adapter) GetConfig() *AdapterConfig {
+	if x != nil {
+		return x.Config
 	}
 	return nil
 }
 
-func (m *Adapter) GetAdditionalDescription() *any.Any {
-	if m != nil {
-		return m.AdditionalDescription
+func (x *Adapter) GetAdditionalDescription() *anypb.Any {
+	if x != nil {
+		return x.AdditionalDescription
 	}
 	return nil
 }
 
-func (m *Adapter) GetLogicalDeviceIds() []string {
-	if m != nil {
-		return m.LogicalDeviceIds
+func (x *Adapter) GetLogicalDeviceIds() []string {
+	if x != nil {
+		return x.LogicalDeviceIds
 	}
 	return nil
 }
 
-func (m *Adapter) GetLastCommunication() int64 {
-	if m != nil {
-		return m.LastCommunication
+func (x *Adapter) GetLastCommunication() int64 {
+	if x != nil {
+		return x.LastCommunication
 	}
 	return 0
 }
 
-func (m *Adapter) GetCurrentReplica() int32 {
-	if m != nil {
-		return m.CurrentReplica
+func (x *Adapter) GetCurrentReplica() int32 {
+	if x != nil {
+		return x.CurrentReplica
 	}
 	return 0
 }
 
-func (m *Adapter) GetTotalReplicas() int32 {
-	if m != nil {
-		return m.TotalReplicas
+func (x *Adapter) GetTotalReplicas() int32 {
+	if x != nil {
+		return x.TotalReplicas
 	}
 	return 0
 }
 
-func (m *Adapter) GetEndpoint() string {
-	if m != nil {
-		return m.Endpoint
+func (x *Adapter) GetEndpoint() string {
+	if x != nil {
+		return x.Endpoint
 	}
 	return ""
 }
 
-func (m *Adapter) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Adapter) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
 type Adapters struct {
-	Items                []*Adapter `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Adapter             `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Adapters) Reset()         { *m = Adapters{} }
-func (m *Adapters) String() string { return proto.CompactTextString(m) }
-func (*Adapters) ProtoMessage()    {}
+func (x *Adapters) Reset() {
+	*x = Adapters{}
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Adapters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Adapters) ProtoMessage() {}
+
+func (x *Adapters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_adapter_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Adapters.ProtoReflect.Descriptor instead.
 func (*Adapters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e998ce153307274, []int{2}
+	return file_voltha_protos_adapter_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *Adapters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Adapters.Unmarshal(m, b)
-}
-func (m *Adapters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Adapters.Marshal(b, m, deterministic)
-}
-func (m *Adapters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Adapters.Merge(m, src)
-}
-func (m *Adapters) XXX_Size() int {
-	return xxx_messageInfo_Adapters.Size(m)
-}
-func (m *Adapters) XXX_DiscardUnknown() {
-	xxx_messageInfo_Adapters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Adapters proto.InternalMessageInfo
-
-func (m *Adapters) GetItems() []*Adapter {
-	if m != nil {
-		return m.Items
+func (x *Adapters) GetItems() []*Adapter {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*AdapterConfig)(nil), "adapter.AdapterConfig")
-	proto.RegisterType((*Adapter)(nil), "adapter.Adapter")
-	proto.RegisterType((*Adapters)(nil), "adapter.Adapters")
+var File_voltha_protos_adapter_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_adapter_proto_rawDesc = "" +
+	"\n" +
+	"\x1bvoltha_protos/adapter.proto\x12\aadapter\x1a\x19google/protobuf/any.proto\"R\n" +
+	"\rAdapterConfig\x12A\n" +
+	"\x11additional_config\x18@ \x01(\v2\x14.google.protobuf.AnyR\x10additionalConfig\"\xa3\x03\n" +
+	"\aAdapter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06vendor\x18\x02 \x01(\tR\x06vendor\x12\x18\n" +
+	"\aversion\x18\x03 \x01(\tR\aversion\x12.\n" +
+	"\x06config\x18\x10 \x01(\v2\x16.adapter.AdapterConfigR\x06config\x12K\n" +
+	"\x16additional_description\x18@ \x01(\v2\x14.google.protobuf.AnyR\x15additionalDescription\x12,\n" +
+	"\x12logical_device_ids\x18\x04 \x03(\tR\x10logicalDeviceIds\x12-\n" +
+	"\x12last_communication\x18\x05 \x01(\x03R\x11lastCommunication\x12&\n" +
+	"\x0ecurrentReplica\x18\x06 \x01(\x05R\x0ecurrentReplica\x12$\n" +
+	"\rtotalReplicas\x18\a \x01(\x05R\rtotalReplicas\x12\x1a\n" +
+	"\bendpoint\x18\b \x01(\tR\bendpoint\x12\x12\n" +
+	"\x04type\x18\t \x01(\tR\x04type\"2\n" +
+	"\bAdapters\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.adapter.AdapterR\x05itemsB\\\n" +
+	"\x1borg.opencord.voltha.adapterB\rVolthaAdapterZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_adapter_proto_rawDescOnce sync.Once
+	file_voltha_protos_adapter_proto_rawDescData []byte
+)
+
+func file_voltha_protos_adapter_proto_rawDescGZIP() []byte {
+	file_voltha_protos_adapter_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_adapter_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)))
+	})
+	return file_voltha_protos_adapter_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
+var file_voltha_protos_adapter_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_adapter_proto_goTypes = []any{
+	(*AdapterConfig)(nil), // 0: adapter.AdapterConfig
+	(*Adapter)(nil),       // 1: adapter.Adapter
+	(*Adapters)(nil),      // 2: adapter.Adapters
+	(*anypb.Any)(nil),     // 3: google.protobuf.Any
+}
+var file_voltha_protos_adapter_proto_depIdxs = []int32{
+	3, // 0: adapter.AdapterConfig.additional_config:type_name -> google.protobuf.Any
+	0, // 1: adapter.Adapter.config:type_name -> adapter.AdapterConfig
+	3, // 2: adapter.Adapter.additional_description:type_name -> google.protobuf.Any
+	1, // 3: adapter.Adapters.items:type_name -> adapter.Adapter
+	4, // [4:4] is the sub-list for method output_type
+	4, // [4:4] is the sub-list for method input_type
+	4, // [4:4] is the sub-list for extension type_name
+	4, // [4:4] is the sub-list for extension extendee
+	0, // [0:4] is the sub-list for field type_name
+}
 
-var fileDescriptor_7e998ce153307274 = []byte{
-	// 413 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0x4f, 0x6b, 0xdb, 0x30,
-	0x14, 0xc7, 0x49, 0xf3, 0xef, 0x95, 0x94, 0x54, 0x6c, 0x41, 0x6b, 0x2f, 0x26, 0x8c, 0xe2, 0xc3,
-	0x2a, 0x43, 0xc6, 0xee, 0x4b, 0xdb, 0xcb, 0xd8, 0x4d, 0x87, 0x1d, 0xc6, 0x20, 0x28, 0x92, 0xea,
-	0x0a, 0x1c, 0x3d, 0x23, 0x29, 0x86, 0x7c, 0x9e, 0x7d, 0xd1, 0x51, 0x59, 0x5e, 0xda, 0x1e, 0x7a,
-	0xf3, 0xef, 0xaf, 0xdf, 0x7b, 0x08, 0xae, 0x5b, 0xac, 0xc3, 0x93, 0xd8, 0x36, 0x0e, 0x03, 0xfa,
-	0x52, 0x28, 0xd1, 0x04, 0xed, 0x58, 0x84, 0x64, 0x92, 0xe0, 0xd5, 0xa7, 0x0a, 0xb1, 0xaa, 0x75,
-	0x19, 0xe9, 0xdd, 0xe1, 0xb1, 0x14, 0xf6, 0xd8, 0x79, 0x56, 0x1c, 0xe6, 0x9b, 0xce, 0x75, 0x8f,
-	0xf6, 0xd1, 0x54, 0x64, 0x03, 0x97, 0x42, 0x29, 0x13, 0x0c, 0x5a, 0x51, 0x6f, 0x65, 0x24, 0xe9,
-	0xf7, 0x3c, 0x2b, 0xce, 0xd7, 0x1f, 0x58, 0xd7, 0xc3, 0xfa, 0x1e, 0xb6, 0xb1, 0x47, 0xbe, 0x38,
-	0xd9, 0xbb, 0x8a, 0xd5, 0xdf, 0x21, 0x4c, 0x52, 0x29, 0xb9, 0x80, 0x81, 0x51, 0x34, 0xcb, 0xb3,
-	0x62, 0xc6, 0x07, 0x46, 0x91, 0x25, 0x8c, 0x5b, 0x6d, 0x15, 0x3a, 0x3a, 0x88, 0x5c, 0x42, 0x84,
-	0xc2, 0xa4, 0xd5, 0xce, 0x1b, 0xb4, 0x74, 0x18, 0x85, 0x1e, 0x12, 0x06, 0xe3, 0x34, 0xc5, 0x22,
-	0x4e, 0xb1, 0x64, 0xfd, 0x96, 0xaf, 0x06, 0xe7, 0xc9, 0x45, 0x7e, 0xc2, 0xf2, 0xc5, 0x02, 0x4a,
-	0x7b, 0xe9, 0x4c, 0xf3, 0x8c, 0xde, 0xdd, 0xe2, 0xe3, 0x29, 0xf3, 0x70, 0x8a, 0x90, 0x2f, 0x40,
-	0x6a, 0xac, 0x8c, 0x8c, 0x4d, 0xad, 0x91, 0x7a, 0x6b, 0x94, 0xa7, 0x67, 0xf9, 0xb0, 0x98, 0xf1,
-	0x45, 0x52, 0x1e, 0xa2, 0xf0, 0x43, 0x79, 0x72, 0x0b, 0xa4, 0x16, 0x3e, 0x6c, 0x25, 0xee, 0xf7,
-	0x07, 0x6b, 0xa4, 0x88, 0xbf, 0x1d, 0xe5, 0x59, 0x31, 0xe4, 0x97, 0xcf, 0xca, 0xfd, 0x4b, 0x81,
-	0xdc, 0xc0, 0x85, 0x3c, 0x38, 0xa7, 0x6d, 0xe0, 0xba, 0xa9, 0x8d, 0x14, 0x74, 0x9c, 0x67, 0xc5,
-	0x88, 0xbf, 0x61, 0xc9, 0x67, 0x98, 0x07, 0x0c, 0xa2, 0x4e, 0xd8, 0xd3, 0x49, 0xb4, 0xbd, 0x26,
-	0xc9, 0x15, 0x4c, 0xb5, 0x55, 0x0d, 0x1a, 0x1b, 0xe8, 0x34, 0x9e, 0xf0, 0x3f, 0x26, 0x04, 0xce,
-	0xc2, 0xb1, 0xd1, 0x74, 0x16, 0xf9, 0xf8, 0xbd, 0x5a, 0xc3, 0x34, 0x1d, 0xd0, 0x93, 0x1b, 0x18,
-	0x99, 0xa0, 0xf7, 0x9e, 0x66, 0xf9, 0xb0, 0x38, 0x5f, 0x2f, 0xde, 0x9e, 0x98, 0x77, 0xf2, 0xdd,
-	0x1f, 0xb8, 0x46, 0x57, 0x31, 0x6c, 0xb4, 0x95, 0xe8, 0x14, 0xeb, 0x5e, 0x5f, 0xef, 0xbe, 0x9b,
-	0xff, 0x8a, 0x38, 0x85, 0x7e, 0xb3, 0xca, 0x84, 0xa7, 0xc3, 0x8e, 0x49, 0xdc, 0x97, 0x7d, 0xa4,
-	0xec, 0x22, 0xb7, 0xe9, 0xc1, 0xb6, 0xdf, 0xca, 0x0a, 0x13, 0xb7, 0x1b, 0x47, 0xf2, 0xeb, 0xbf,
-	0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x02, 0xed, 0xf9, 0xd5, 0x02, 0x00, 0x00,
+func init() { file_voltha_protos_adapter_proto_init() }
+func file_voltha_protos_adapter_proto_init() {
+	if File_voltha_protos_adapter_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_adapter_proto_rawDesc), len(file_voltha_protos_adapter_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_adapter_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_adapter_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_adapter_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_adapter_proto = out.File
+	file_voltha_protos_adapter_proto_goTypes = nil
+	file_voltha_protos_adapter_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
index 81c3b36..5e46934 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/device.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	anypb "google.golang.org/protobuf/types/known/anypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type PmConfig_PmType int32
 
@@ -32,26 +33,47 @@
 	PmConfig_CONTEXT PmConfig_PmType = 3
 )
 
-var PmConfig_PmType_name = map[int32]string{
-	0: "COUNTER",
-	1: "GAUGE",
-	2: "STATE",
-	3: "CONTEXT",
-}
+// Enum value maps for PmConfig_PmType.
+var (
+	PmConfig_PmType_name = map[int32]string{
+		0: "COUNTER",
+		1: "GAUGE",
+		2: "STATE",
+		3: "CONTEXT",
+	}
+	PmConfig_PmType_value = map[string]int32{
+		"COUNTER": 0,
+		"GAUGE":   1,
+		"STATE":   2,
+		"CONTEXT": 3,
+	}
+)
 
-var PmConfig_PmType_value = map[string]int32{
-	"COUNTER": 0,
-	"GAUGE":   1,
-	"STATE":   2,
-	"CONTEXT": 3,
+func (x PmConfig_PmType) Enum() *PmConfig_PmType {
+	p := new(PmConfig_PmType)
+	*p = x
+	return p
 }
 
 func (x PmConfig_PmType) String() string {
-	return proto.EnumName(PmConfig_PmType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PmConfig_PmType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[0].Descriptor()
+}
+
+func (PmConfig_PmType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[0]
+}
+
+func (x PmConfig_PmType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PmConfig_PmType.Descriptor instead.
 func (PmConfig_PmType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{2, 0}
 }
 
 type ImageDownload_ImageDownloadState int32
@@ -66,32 +88,53 @@
 	ImageDownload_DOWNLOAD_CANCELLED   ImageDownload_ImageDownloadState = 6
 )
 
-var ImageDownload_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadState.
+var (
+	ImageDownload_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLED",
+	}
+	ImageDownload_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLED":   6,
+	}
+)
 
-var ImageDownload_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLED":   6,
+func (x ImageDownload_ImageDownloadState) Enum() *ImageDownload_ImageDownloadState {
+	p := new(ImageDownload_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadState) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[1].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[1]
+}
+
+func (x ImageDownload_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadState.Descriptor instead.
 func (ImageDownload_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type ImageDownload_ImageDownloadFailureReason int32
@@ -105,30 +148,51 @@
 	ImageDownload_CANCELLED          ImageDownload_ImageDownloadFailureReason = 5
 )
 
-var ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED",
-}
+// Enum value maps for ImageDownload_ImageDownloadFailureReason.
+var (
+	ImageDownload_ImageDownloadFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED",
+	}
+	ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
+		"NO_ERROR":           0,
+		"INVALID_URL":        1,
+		"DEVICE_BUSY":        2,
+		"INSUFFICIENT_SPACE": 3,
+		"UNKNOWN_ERROR":      4,
+		"CANCELLED":          5,
+	}
+)
 
-var ImageDownload_ImageDownloadFailureReason_value = map[string]int32{
-	"NO_ERROR":           0,
-	"INVALID_URL":        1,
-	"DEVICE_BUSY":        2,
-	"INSUFFICIENT_SPACE": 3,
-	"UNKNOWN_ERROR":      4,
-	"CANCELLED":          5,
+func (x ImageDownload_ImageDownloadFailureReason) Enum() *ImageDownload_ImageDownloadFailureReason {
+	p := new(ImageDownload_ImageDownloadFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageDownloadFailureReason) String() string {
-	return proto.EnumName(ImageDownload_ImageDownloadFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageDownloadFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[2].Descriptor()
+}
+
+func (ImageDownload_ImageDownloadFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[2]
+}
+
+func (x ImageDownload_ImageDownloadFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageDownloadFailureReason.Descriptor instead.
 func (ImageDownload_ImageDownloadFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 1}
 }
 
 type ImageDownload_ImageActivateState int32
@@ -142,30 +206,51 @@
 	ImageDownload_IMAGE_REVERTED   ImageDownload_ImageActivateState = 5
 )
 
-var ImageDownload_ImageActivateState_name = map[int32]string{
-	0: "IMAGE_UNKNOWN",
-	1: "IMAGE_INACTIVE",
-	2: "IMAGE_ACTIVATING",
-	3: "IMAGE_ACTIVE",
-	4: "IMAGE_REVERTING",
-	5: "IMAGE_REVERTED",
-}
+// Enum value maps for ImageDownload_ImageActivateState.
+var (
+	ImageDownload_ImageActivateState_name = map[int32]string{
+		0: "IMAGE_UNKNOWN",
+		1: "IMAGE_INACTIVE",
+		2: "IMAGE_ACTIVATING",
+		3: "IMAGE_ACTIVE",
+		4: "IMAGE_REVERTING",
+		5: "IMAGE_REVERTED",
+	}
+	ImageDownload_ImageActivateState_value = map[string]int32{
+		"IMAGE_UNKNOWN":    0,
+		"IMAGE_INACTIVE":   1,
+		"IMAGE_ACTIVATING": 2,
+		"IMAGE_ACTIVE":     3,
+		"IMAGE_REVERTING":  4,
+		"IMAGE_REVERTED":   5,
+	}
+)
 
-var ImageDownload_ImageActivateState_value = map[string]int32{
-	"IMAGE_UNKNOWN":    0,
-	"IMAGE_INACTIVE":   1,
-	"IMAGE_ACTIVATING": 2,
-	"IMAGE_ACTIVE":     3,
-	"IMAGE_REVERTING":  4,
-	"IMAGE_REVERTED":   5,
+func (x ImageDownload_ImageActivateState) Enum() *ImageDownload_ImageActivateState {
+	p := new(ImageDownload_ImageActivateState)
+	*p = x
+	return p
 }
 
 func (x ImageDownload_ImageActivateState) String() string {
-	return proto.EnumName(ImageDownload_ImageActivateState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageDownload_ImageActivateState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[3].Descriptor()
+}
+
+func (ImageDownload_ImageActivateState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[3]
+}
+
+func (x ImageDownload_ImageActivateState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageDownload_ImageActivateState.Descriptor instead.
 func (ImageDownload_ImageActivateState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6, 2}
 }
 
 type ImageState_ImageDownloadState int32
@@ -181,34 +266,55 @@
 	ImageState_DOWNLOAD_CANCELLED   ImageState_ImageDownloadState = 7
 )
 
-var ImageState_ImageDownloadState_name = map[int32]string{
-	0: "DOWNLOAD_UNKNOWN",
-	1: "DOWNLOAD_SUCCEEDED",
-	2: "DOWNLOAD_REQUESTED",
-	3: "DOWNLOAD_STARTED",
-	4: "DOWNLOAD_FAILED",
-	5: "DOWNLOAD_UNSUPPORTED",
-	6: "DOWNLOAD_CANCELLING",
-	7: "DOWNLOAD_CANCELLED",
-}
+// Enum value maps for ImageState_ImageDownloadState.
+var (
+	ImageState_ImageDownloadState_name = map[int32]string{
+		0: "DOWNLOAD_UNKNOWN",
+		1: "DOWNLOAD_SUCCEEDED",
+		2: "DOWNLOAD_REQUESTED",
+		3: "DOWNLOAD_STARTED",
+		4: "DOWNLOAD_FAILED",
+		5: "DOWNLOAD_UNSUPPORTED",
+		6: "DOWNLOAD_CANCELLING",
+		7: "DOWNLOAD_CANCELLED",
+	}
+	ImageState_ImageDownloadState_value = map[string]int32{
+		"DOWNLOAD_UNKNOWN":     0,
+		"DOWNLOAD_SUCCEEDED":   1,
+		"DOWNLOAD_REQUESTED":   2,
+		"DOWNLOAD_STARTED":     3,
+		"DOWNLOAD_FAILED":      4,
+		"DOWNLOAD_UNSUPPORTED": 5,
+		"DOWNLOAD_CANCELLING":  6,
+		"DOWNLOAD_CANCELLED":   7,
+	}
+)
 
-var ImageState_ImageDownloadState_value = map[string]int32{
-	"DOWNLOAD_UNKNOWN":     0,
-	"DOWNLOAD_SUCCEEDED":   1,
-	"DOWNLOAD_REQUESTED":   2,
-	"DOWNLOAD_STARTED":     3,
-	"DOWNLOAD_FAILED":      4,
-	"DOWNLOAD_UNSUPPORTED": 5,
-	"DOWNLOAD_CANCELLING":  6,
-	"DOWNLOAD_CANCELLED":   7,
+func (x ImageState_ImageDownloadState) Enum() *ImageState_ImageDownloadState {
+	p := new(ImageState_ImageDownloadState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageDownloadState) String() string {
-	return proto.EnumName(ImageState_ImageDownloadState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageDownloadState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[4].Descriptor()
+}
+
+func (ImageState_ImageDownloadState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[4]
+}
+
+func (x ImageState_ImageDownloadState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageDownloadState.Descriptor instead.
 func (ImageState_ImageDownloadState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 0}
 }
 
 type ImageState_ImageFailureReason int32
@@ -217,8 +323,8 @@
 	ImageState_NO_ERROR               ImageState_ImageFailureReason = 0
 	ImageState_INVALID_URL            ImageState_ImageFailureReason = 1
 	ImageState_DEVICE_BUSY            ImageState_ImageFailureReason = 2
-	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3
-	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4
+	ImageState_INSUFFICIENT_SPACE     ImageState_ImageFailureReason = 3 // VOLTHA ONU ADAPTER has no more space to store images
+	ImageState_UNKNOWN_ERROR          ImageState_ImageFailureReason = 4 // Used also for Checksum failure on ONU
 	ImageState_CANCELLED_ON_REQUEST   ImageState_ImageFailureReason = 5
 	ImageState_CANCELLED_ON_ONU_STATE ImageState_ImageFailureReason = 6
 	ImageState_VENDOR_DEVICE_MISMATCH ImageState_ImageFailureReason = 7
@@ -226,38 +332,59 @@
 	ImageState_IMAGE_REFUSED_BY_ONU   ImageState_ImageFailureReason = 9
 )
 
-var ImageState_ImageFailureReason_name = map[int32]string{
-	0: "NO_ERROR",
-	1: "INVALID_URL",
-	2: "DEVICE_BUSY",
-	3: "INSUFFICIENT_SPACE",
-	4: "UNKNOWN_ERROR",
-	5: "CANCELLED_ON_REQUEST",
-	6: "CANCELLED_ON_ONU_STATE",
-	7: "VENDOR_DEVICE_MISMATCH",
-	8: "OMCI_TRANSFER_ERROR",
-	9: "IMAGE_REFUSED_BY_ONU",
-}
+// Enum value maps for ImageState_ImageFailureReason.
+var (
+	ImageState_ImageFailureReason_name = map[int32]string{
+		0: "NO_ERROR",
+		1: "INVALID_URL",
+		2: "DEVICE_BUSY",
+		3: "INSUFFICIENT_SPACE",
+		4: "UNKNOWN_ERROR",
+		5: "CANCELLED_ON_REQUEST",
+		6: "CANCELLED_ON_ONU_STATE",
+		7: "VENDOR_DEVICE_MISMATCH",
+		8: "OMCI_TRANSFER_ERROR",
+		9: "IMAGE_REFUSED_BY_ONU",
+	}
+	ImageState_ImageFailureReason_value = map[string]int32{
+		"NO_ERROR":               0,
+		"INVALID_URL":            1,
+		"DEVICE_BUSY":            2,
+		"INSUFFICIENT_SPACE":     3,
+		"UNKNOWN_ERROR":          4,
+		"CANCELLED_ON_REQUEST":   5,
+		"CANCELLED_ON_ONU_STATE": 6,
+		"VENDOR_DEVICE_MISMATCH": 7,
+		"OMCI_TRANSFER_ERROR":    8,
+		"IMAGE_REFUSED_BY_ONU":   9,
+	}
+)
 
-var ImageState_ImageFailureReason_value = map[string]int32{
-	"NO_ERROR":               0,
-	"INVALID_URL":            1,
-	"DEVICE_BUSY":            2,
-	"INSUFFICIENT_SPACE":     3,
-	"UNKNOWN_ERROR":          4,
-	"CANCELLED_ON_REQUEST":   5,
-	"CANCELLED_ON_ONU_STATE": 6,
-	"VENDOR_DEVICE_MISMATCH": 7,
-	"OMCI_TRANSFER_ERROR":    8,
-	"IMAGE_REFUSED_BY_ONU":   9,
+func (x ImageState_ImageFailureReason) Enum() *ImageState_ImageFailureReason {
+	p := new(ImageState_ImageFailureReason)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageFailureReason) String() string {
-	return proto.EnumName(ImageState_ImageFailureReason_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageFailureReason) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[5].Descriptor()
+}
+
+func (ImageState_ImageFailureReason) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[5]
+}
+
+func (x ImageState_ImageFailureReason) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageFailureReason.Descriptor instead.
 func (ImageState_ImageFailureReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 1}
 }
 
 type ImageState_ImageActivationState int32
@@ -265,7 +392,7 @@
 const (
 	ImageState_IMAGE_UNKNOWN             ImageState_ImageActivationState = 0
 	ImageState_IMAGE_INACTIVE            ImageState_ImageActivationState = 1
-	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2
+	ImageState_IMAGE_ACTIVATING          ImageState_ImageActivationState = 2 // Happens during Reboot of the ONU after activate call.
 	ImageState_IMAGE_ACTIVE              ImageState_ImageActivationState = 3
 	ImageState_IMAGE_COMMITTING          ImageState_ImageActivationState = 4
 	ImageState_IMAGE_COMMITTED           ImageState_ImageActivationState = 5
@@ -277,42 +404,63 @@
 	ImageState_IMAGE_DOWNLOADING_ABORTED ImageState_ImageActivationState = 11
 )
 
-var ImageState_ImageActivationState_name = map[int32]string{
-	0:  "IMAGE_UNKNOWN",
-	1:  "IMAGE_INACTIVE",
-	2:  "IMAGE_ACTIVATING",
-	3:  "IMAGE_ACTIVE",
-	4:  "IMAGE_COMMITTING",
-	5:  "IMAGE_COMMITTED",
-	6:  "IMAGE_ACTIVATION_ABORTING",
-	7:  "IMAGE_ACTIVATION_ABORTED",
-	8:  "IMAGE_COMMIT_ABORTING",
-	9:  "IMAGE_COMMIT_ABORTED",
-	10: "IMAGE_DOWNLOADING",
-	11: "IMAGE_DOWNLOADING_ABORTED",
-}
+// Enum value maps for ImageState_ImageActivationState.
+var (
+	ImageState_ImageActivationState_name = map[int32]string{
+		0:  "IMAGE_UNKNOWN",
+		1:  "IMAGE_INACTIVE",
+		2:  "IMAGE_ACTIVATING",
+		3:  "IMAGE_ACTIVE",
+		4:  "IMAGE_COMMITTING",
+		5:  "IMAGE_COMMITTED",
+		6:  "IMAGE_ACTIVATION_ABORTING",
+		7:  "IMAGE_ACTIVATION_ABORTED",
+		8:  "IMAGE_COMMIT_ABORTING",
+		9:  "IMAGE_COMMIT_ABORTED",
+		10: "IMAGE_DOWNLOADING",
+		11: "IMAGE_DOWNLOADING_ABORTED",
+	}
+	ImageState_ImageActivationState_value = map[string]int32{
+		"IMAGE_UNKNOWN":             0,
+		"IMAGE_INACTIVE":            1,
+		"IMAGE_ACTIVATING":          2,
+		"IMAGE_ACTIVE":              3,
+		"IMAGE_COMMITTING":          4,
+		"IMAGE_COMMITTED":           5,
+		"IMAGE_ACTIVATION_ABORTING": 6,
+		"IMAGE_ACTIVATION_ABORTED":  7,
+		"IMAGE_COMMIT_ABORTING":     8,
+		"IMAGE_COMMIT_ABORTED":      9,
+		"IMAGE_DOWNLOADING":         10,
+		"IMAGE_DOWNLOADING_ABORTED": 11,
+	}
+)
 
-var ImageState_ImageActivationState_value = map[string]int32{
-	"IMAGE_UNKNOWN":             0,
-	"IMAGE_INACTIVE":            1,
-	"IMAGE_ACTIVATING":          2,
-	"IMAGE_ACTIVE":              3,
-	"IMAGE_COMMITTING":          4,
-	"IMAGE_COMMITTED":           5,
-	"IMAGE_ACTIVATION_ABORTING": 6,
-	"IMAGE_ACTIVATION_ABORTED":  7,
-	"IMAGE_COMMIT_ABORTING":     8,
-	"IMAGE_COMMIT_ABORTED":      9,
-	"IMAGE_DOWNLOADING":         10,
-	"IMAGE_DOWNLOADING_ABORTED": 11,
+func (x ImageState_ImageActivationState) Enum() *ImageState_ImageActivationState {
+	p := new(ImageState_ImageActivationState)
+	*p = x
+	return p
 }
 
 func (x ImageState_ImageActivationState) String() string {
-	return proto.EnumName(ImageState_ImageActivationState_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ImageState_ImageActivationState) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[6].Descriptor()
+}
+
+func (ImageState_ImageActivationState) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[6]
+}
+
+func (x ImageState_ImageActivationState) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ImageState_ImageActivationState.Descriptor instead.
 func (ImageState_ImageActivationState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12, 2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12, 2}
 }
 
 type Port_PortType int32
@@ -327,32 +475,53 @@
 	Port_VENET_ONU    Port_PortType = 6
 )
 
-var Port_PortType_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "ETHERNET_NNI",
-	2: "ETHERNET_UNI",
-	3: "PON_OLT",
-	4: "PON_ONU",
-	5: "VENET_OLT",
-	6: "VENET_ONU",
-}
+// Enum value maps for Port_PortType.
+var (
+	Port_PortType_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "ETHERNET_NNI",
+		2: "ETHERNET_UNI",
+		3: "PON_OLT",
+		4: "PON_ONU",
+		5: "VENET_OLT",
+		6: "VENET_ONU",
+	}
+	Port_PortType_value = map[string]int32{
+		"UNKNOWN":      0,
+		"ETHERNET_NNI": 1,
+		"ETHERNET_UNI": 2,
+		"PON_OLT":      3,
+		"PON_ONU":      4,
+		"VENET_OLT":    5,
+		"VENET_ONU":    6,
+	}
+)
 
-var Port_PortType_value = map[string]int32{
-	"UNKNOWN":      0,
-	"ETHERNET_NNI": 1,
-	"ETHERNET_UNI": 2,
-	"PON_OLT":      3,
-	"PON_ONU":      4,
-	"VENET_OLT":    5,
-	"VENET_ONU":    6,
+func (x Port_PortType) Enum() *Port_PortType {
+	p := new(Port_PortType)
+	*p = x
+	return p
 }
 
 func (x Port_PortType) String() string {
-	return proto.EnumName(Port_PortType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Port_PortType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[7].Descriptor()
+}
+
+func (Port_PortType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[7]
+}
+
+func (x Port_PortType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Port_PortType.Descriptor instead.
 func (Port_PortType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
 }
 
 type SelfTestResponse_SelfTestResult int32
@@ -364,26 +533,47 @@
 	SelfTestResponse_UNKNOWN_ERROR SelfTestResponse_SelfTestResult = 3
 )
 
-var SelfTestResponse_SelfTestResult_name = map[int32]string{
-	0: "SUCCESS",
-	1: "FAILURE",
-	2: "NOT_SUPPORTED",
-	3: "UNKNOWN_ERROR",
-}
+// Enum value maps for SelfTestResponse_SelfTestResult.
+var (
+	SelfTestResponse_SelfTestResult_name = map[int32]string{
+		0: "SUCCESS",
+		1: "FAILURE",
+		2: "NOT_SUPPORTED",
+		3: "UNKNOWN_ERROR",
+	}
+	SelfTestResponse_SelfTestResult_value = map[string]int32{
+		"SUCCESS":       0,
+		"FAILURE":       1,
+		"NOT_SUPPORTED": 2,
+		"UNKNOWN_ERROR": 3,
+	}
+)
 
-var SelfTestResponse_SelfTestResult_value = map[string]int32{
-	"SUCCESS":       0,
-	"FAILURE":       1,
-	"NOT_SUPPORTED": 2,
-	"UNKNOWN_ERROR": 3,
+func (x SelfTestResponse_SelfTestResult) Enum() *SelfTestResponse_SelfTestResult {
+	p := new(SelfTestResponse_SelfTestResult)
+	*p = x
+	return p
 }
 
 func (x SelfTestResponse_SelfTestResult) String() string {
-	return proto.EnumName(SelfTestResponse_SelfTestResult_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SelfTestResponse_SelfTestResult) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[8].Descriptor()
+}
+
+func (SelfTestResponse_SelfTestResult) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[8]
+}
+
+func (x SelfTestResponse_SelfTestResult) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SelfTestResponse_SelfTestResult.Descriptor instead.
 func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19, 0}
 }
 
 type SimulateAlarmRequest_OperationType int32
@@ -393,26 +583,48 @@
 	SimulateAlarmRequest_CLEAR SimulateAlarmRequest_OperationType = 1
 )
 
-var SimulateAlarmRequest_OperationType_name = map[int32]string{
-	0: "RAISE",
-	1: "CLEAR",
-}
+// Enum value maps for SimulateAlarmRequest_OperationType.
+var (
+	SimulateAlarmRequest_OperationType_name = map[int32]string{
+		0: "RAISE",
+		1: "CLEAR",
+	}
+	SimulateAlarmRequest_OperationType_value = map[string]int32{
+		"RAISE": 0,
+		"CLEAR": 1,
+	}
+)
 
-var SimulateAlarmRequest_OperationType_value = map[string]int32{
-	"RAISE": 0,
-	"CLEAR": 1,
+func (x SimulateAlarmRequest_OperationType) Enum() *SimulateAlarmRequest_OperationType {
+	p := new(SimulateAlarmRequest_OperationType)
+	*p = x
+	return p
 }
 
 func (x SimulateAlarmRequest_OperationType) String() string {
-	return proto.EnumName(SimulateAlarmRequest_OperationType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SimulateAlarmRequest_OperationType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_device_proto_enumTypes[9].Descriptor()
+}
+
+func (SimulateAlarmRequest_OperationType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_device_proto_enumTypes[9]
+}
+
+func (x SimulateAlarmRequest_OperationType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest_OperationType.Descriptor instead.
 func (SimulateAlarmRequest_OperationType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21, 0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21, 0}
 }
 
 // A Device Type
 type DeviceType struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique name for the device type
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Unique vendor id for the device type applicable to ONU
@@ -427,351 +639,376 @@
 	AcceptsAddRemoveFlowUpdates     bool `protobuf:"varint,4,opt,name=accepts_add_remove_flow_updates,json=acceptsAddRemoveFlowUpdates,proto3" json:"accepts_add_remove_flow_updates,omitempty"`
 	AcceptsDirectLogicalFlowsUpdate bool `protobuf:"varint,7,opt,name=accepts_direct_logical_flows_update,json=acceptsDirectLogicalFlowsUpdate,proto3" json:"accepts_direct_logical_flows_update,omitempty"`
 	// Type of adapter that can handle this device type
-	AdapterType          string   `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AdapterType   string `protobuf:"bytes,8,opt,name=adapter_type,json=adapterType,proto3" json:"adapter_type,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceType) Reset()         { *m = DeviceType{} }
-func (m *DeviceType) String() string { return proto.CompactTextString(m) }
-func (*DeviceType) ProtoMessage()    {}
+func (x *DeviceType) Reset() {
+	*x = DeviceType{}
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceType) ProtoMessage() {}
+
+func (x *DeviceType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceType.ProtoReflect.Descriptor instead.
 func (*DeviceType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{0}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *DeviceType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceType.Unmarshal(m, b)
-}
-func (m *DeviceType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceType.Marshal(b, m, deterministic)
-}
-func (m *DeviceType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceType.Merge(m, src)
-}
-func (m *DeviceType) XXX_Size() int {
-	return xxx_messageInfo_DeviceType.Size(m)
-}
-func (m *DeviceType) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceType proto.InternalMessageInfo
-
-func (m *DeviceType) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *DeviceType) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *DeviceType) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *DeviceType) GetVendorIds() []string {
-	if m != nil {
-		return m.VendorIds
+func (x *DeviceType) GetVendorIds() []string {
+	if x != nil {
+		return x.VendorIds
 	}
 	return nil
 }
 
-func (m *DeviceType) GetAdapter() string {
-	if m != nil {
-		return m.Adapter
+func (x *DeviceType) GetAdapter() string {
+	if x != nil {
+		return x.Adapter
 	}
 	return ""
 }
 
-func (m *DeviceType) GetAcceptsBulkFlowUpdate() bool {
-	if m != nil {
-		return m.AcceptsBulkFlowUpdate
+func (x *DeviceType) GetAcceptsBulkFlowUpdate() bool {
+	if x != nil {
+		return x.AcceptsBulkFlowUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
-	if m != nil {
-		return m.AcceptsAddRemoveFlowUpdates
+func (x *DeviceType) GetAcceptsAddRemoveFlowUpdates() bool {
+	if x != nil {
+		return x.AcceptsAddRemoveFlowUpdates
 	}
 	return false
 }
 
-func (m *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
-	if m != nil {
-		return m.AcceptsDirectLogicalFlowsUpdate
+func (x *DeviceType) GetAcceptsDirectLogicalFlowsUpdate() bool {
+	if x != nil {
+		return x.AcceptsDirectLogicalFlowsUpdate
 	}
 	return false
 }
 
-func (m *DeviceType) GetAdapterType() string {
-	if m != nil {
-		return m.AdapterType
+func (x *DeviceType) GetAdapterType() string {
+	if x != nil {
+		return x.AdapterType
 	}
 	return ""
 }
 
 // A plurality of device types
 type DeviceTypes struct {
-	Items                []*DeviceType `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*DeviceType          `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceTypes) Reset()         { *m = DeviceTypes{} }
-func (m *DeviceTypes) String() string { return proto.CompactTextString(m) }
-func (*DeviceTypes) ProtoMessage()    {}
+func (x *DeviceTypes) Reset() {
+	*x = DeviceTypes{}
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceTypes) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceTypes) ProtoMessage() {}
+
+func (x *DeviceTypes) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceTypes.ProtoReflect.Descriptor instead.
 func (*DeviceTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{1}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *DeviceTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceTypes.Unmarshal(m, b)
-}
-func (m *DeviceTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceTypes.Marshal(b, m, deterministic)
-}
-func (m *DeviceTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceTypes.Merge(m, src)
-}
-func (m *DeviceTypes) XXX_Size() int {
-	return xxx_messageInfo_DeviceTypes.Size(m)
-}
-func (m *DeviceTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceTypes proto.InternalMessageInfo
-
-func (m *DeviceTypes) GetItems() []*DeviceType {
-	if m != nil {
-		return m.Items
+func (x *DeviceTypes) GetItems() []*DeviceType {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type PmConfig struct {
-	Name                 string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Type                 PmConfig_PmType `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
-	Enabled              bool            `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	SampleFreq           uint32          `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Type          PmConfig_PmType        `protobuf:"varint,2,opt,name=type,proto3,enum=device.PmConfig_PmType" json:"type,omitempty"`
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                         // Whether or not this metric makes it to Kafka
+	SampleFreq    uint32                 `protobuf:"varint,4,opt,name=sample_freq,json=sampleFreq,proto3" json:"sample_freq,omitempty"` // Sample rate in 10ths of a second
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfig) Reset()         { *m = PmConfig{} }
-func (m *PmConfig) String() string { return proto.CompactTextString(m) }
-func (*PmConfig) ProtoMessage()    {}
+func (x *PmConfig) Reset() {
+	*x = PmConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfig) ProtoMessage() {}
+
+func (x *PmConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfig.ProtoReflect.Descriptor instead.
 func (*PmConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{2}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *PmConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmConfig.Unmarshal(m, b)
-}
-func (m *PmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmConfig.Marshal(b, m, deterministic)
-}
-func (m *PmConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfig.Merge(m, src)
-}
-func (m *PmConfig) XXX_Size() int {
-	return xxx_messageInfo_PmConfig.Size(m)
-}
-func (m *PmConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfig proto.InternalMessageInfo
-
-func (m *PmConfig) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *PmConfig) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *PmConfig) GetType() PmConfig_PmType {
-	if m != nil {
-		return m.Type
+func (x *PmConfig) GetType() PmConfig_PmType {
+	if x != nil {
+		return x.Type
 	}
 	return PmConfig_COUNTER
 }
 
-func (m *PmConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmConfig) GetSampleFreq() uint32 {
-	if m != nil {
-		return m.SampleFreq
+func (x *PmConfig) GetSampleFreq() uint32 {
+	if x != nil {
+		return x.SampleFreq
 	}
 	return 0
 }
 
 type PmGroupConfig struct {
-	GroupName            string      `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
-	GroupFreq            uint32      `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"`
-	Enabled              bool        `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	Metrics              []*PmConfig `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	GroupName     string                 `protobuf:"bytes,1,opt,name=group_name,json=groupName,proto3" json:"group_name,omitempty"`
+	GroupFreq     uint32                 `protobuf:"varint,2,opt,name=group_freq,json=groupFreq,proto3" json:"group_freq,omitempty"` // Frequency applicable to the grop
+	Enabled       bool                   `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"`                      // Enable/disable group level only
+	Metrics       []*PmConfig            `protobuf:"bytes,4,rep,name=metrics,proto3" json:"metrics,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmGroupConfig) Reset()         { *m = PmGroupConfig{} }
-func (m *PmGroupConfig) String() string { return proto.CompactTextString(m) }
-func (*PmGroupConfig) ProtoMessage()    {}
+func (x *PmGroupConfig) Reset() {
+	*x = PmGroupConfig{}
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmGroupConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmGroupConfig) ProtoMessage() {}
+
+func (x *PmGroupConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmGroupConfig.ProtoReflect.Descriptor instead.
 func (*PmGroupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{3}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *PmGroupConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmGroupConfig.Unmarshal(m, b)
-}
-func (m *PmGroupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmGroupConfig.Marshal(b, m, deterministic)
-}
-func (m *PmGroupConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmGroupConfig.Merge(m, src)
-}
-func (m *PmGroupConfig) XXX_Size() int {
-	return xxx_messageInfo_PmGroupConfig.Size(m)
-}
-func (m *PmGroupConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmGroupConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmGroupConfig proto.InternalMessageInfo
-
-func (m *PmGroupConfig) GetGroupName() string {
-	if m != nil {
-		return m.GroupName
+func (x *PmGroupConfig) GetGroupName() string {
+	if x != nil {
+		return x.GroupName
 	}
 	return ""
 }
 
-func (m *PmGroupConfig) GetGroupFreq() uint32 {
-	if m != nil {
-		return m.GroupFreq
+func (x *PmGroupConfig) GetGroupFreq() uint32 {
+	if x != nil {
+		return x.GroupFreq
 	}
 	return 0
 }
 
-func (m *PmGroupConfig) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *PmGroupConfig) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
-func (m *PmGroupConfig) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmGroupConfig) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
 type PmConfigs struct {
-	Id          string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	DefaultFreq uint32 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"`
+	state       protoimpl.MessageState `protogen:"open.v1"`
+	Id          string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                       // To work around a chameleon POST bug
+	DefaultFreq uint32                 `protobuf:"varint,2,opt,name=default_freq,json=defaultFreq,proto3" json:"default_freq,omitempty"` // Default sample rate
 	// Forces group names and group semantics
 	Grouped bool `protobuf:"varint,3,opt,name=grouped,proto3" json:"grouped,omitempty"`
 	// Allows Pm to set an individual sample frequency
-	FreqOverride         bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
-	Groups               []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`
-	Metrics              []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`
-	MaxSkew              uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	FreqOverride  bool             `protobuf:"varint,4,opt,name=freq_override,json=freqOverride,proto3" json:"freq_override,omitempty"`
+	Groups        []*PmGroupConfig `protobuf:"bytes,5,rep,name=groups,proto3" json:"groups,omitempty"`                   // The groups if grouped is true
+	Metrics       []*PmConfig      `protobuf:"bytes,6,rep,name=metrics,proto3" json:"metrics,omitempty"`                 // The metrics themselves if grouped is false.
+	MaxSkew       uint32           `protobuf:"varint,7,opt,name=max_skew,json=maxSkew,proto3" json:"max_skew,omitempty"` //Default value is set to 5 seconds
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *PmConfigs) Reset()         { *m = PmConfigs{} }
-func (m *PmConfigs) String() string { return proto.CompactTextString(m) }
-func (*PmConfigs) ProtoMessage()    {}
+func (x *PmConfigs) Reset() {
+	*x = PmConfigs{}
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *PmConfigs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PmConfigs) ProtoMessage() {}
+
+func (x *PmConfigs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PmConfigs.ProtoReflect.Descriptor instead.
 func (*PmConfigs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{4}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *PmConfigs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PmConfigs.Unmarshal(m, b)
-}
-func (m *PmConfigs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PmConfigs.Marshal(b, m, deterministic)
-}
-func (m *PmConfigs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PmConfigs.Merge(m, src)
-}
-func (m *PmConfigs) XXX_Size() int {
-	return xxx_messageInfo_PmConfigs.Size(m)
-}
-func (m *PmConfigs) XXX_DiscardUnknown() {
-	xxx_messageInfo_PmConfigs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PmConfigs proto.InternalMessageInfo
-
-func (m *PmConfigs) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *PmConfigs) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *PmConfigs) GetDefaultFreq() uint32 {
-	if m != nil {
-		return m.DefaultFreq
+func (x *PmConfigs) GetDefaultFreq() uint32 {
+	if x != nil {
+		return x.DefaultFreq
 	}
 	return 0
 }
 
-func (m *PmConfigs) GetGrouped() bool {
-	if m != nil {
-		return m.Grouped
+func (x *PmConfigs) GetGrouped() bool {
+	if x != nil {
+		return x.Grouped
 	}
 	return false
 }
 
-func (m *PmConfigs) GetFreqOverride() bool {
-	if m != nil {
-		return m.FreqOverride
+func (x *PmConfigs) GetFreqOverride() bool {
+	if x != nil {
+		return x.FreqOverride
 	}
 	return false
 }
 
-func (m *PmConfigs) GetGroups() []*PmGroupConfig {
-	if m != nil {
-		return m.Groups
+func (x *PmConfigs) GetGroups() []*PmGroupConfig {
+	if x != nil {
+		return x.Groups
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMetrics() []*PmConfig {
-	if m != nil {
-		return m.Metrics
+func (x *PmConfigs) GetMetrics() []*PmConfig {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-func (m *PmConfigs) GetMaxSkew() uint32 {
-	if m != nil {
-		return m.MaxSkew
+func (x *PmConfigs) GetMaxSkew() uint32 {
+	if x != nil {
+		return x.MaxSkew
 	}
 	return 0
 }
 
-//Object representing an image
+// Object representing an image
 type Image struct {
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Name  string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // software patch name
 	// Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
@@ -779,24 +1016,24 @@
 	// Deprecated in voltha 2.8, will be removed
 	Hash uint32 `protobuf:"varint,3,opt,name=hash,proto3" json:"hash,omitempty"`
 	// Deprecated in voltha 2.8, will be removed
-	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"`
+	InstallDatetime string `protobuf:"bytes,4,opt,name=install_datetime,json=installDatetime,proto3" json:"install_datetime,omitempty"` // combined date and time expressed in UTC.
 	// The active software image is one that is currently loaded and executing
 	// in the ONU or circuit pack. Under normal operation, one software image
 	// is always active while the other is inactive. Under no circumstances are
 	// both software images allowed to be active at the same time
 	// Deprecated in voltha 2.8, will be removed
-	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
+	IsActive bool `protobuf:"varint,5,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` // True if the image is active
 	// The committed software image is loaded and executed upon reboot of the
 	// ONU and/or circuit pack. During normal operation, one software image is
 	// always committed, while the other is uncommitted.
 	// Deprecated in voltha 2.8, will be removed
-	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"`
+	IsCommitted bool `protobuf:"varint,6,opt,name=is_committed,json=isCommitted,proto3" json:"is_committed,omitempty"` // True if the image is committed
 	// A software image is valid if it has been verified to be an executable
 	// code image. The verification mechanism is not subject to standardization;
 	// however, it should include at least a data integrity (e.g., CRC) check of
 	// the entire code image.
 	// Deprecated in voltha 2.8, will be removed
-	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"`
+	IsValid bool `protobuf:"varint,7,opt,name=is_valid,json=isValid,proto3" json:"is_valid,omitempty"` // True if the image is valid
 	// URL where the image is available
 	// URL MUST be fully qualified,
 	// including filename, username and password
@@ -809,103 +1046,107 @@
 	// Default to value 0 if not specified.
 	// If different then 0 it's used to verify the image retrieved from outside before sending it to the ONU.
 	// Calculation of this needs to be done according to ITU-T I.363.5 as per OMCI spec (section A.2.27)
-	Crc32                uint32   `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Crc32         uint32 `protobuf:"varint,10,opt,name=crc32,proto3" json:"crc32,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Image) Reset()         { *m = Image{} }
-func (m *Image) String() string { return proto.CompactTextString(m) }
-func (*Image) ProtoMessage()    {}
+func (x *Image) Reset() {
+	*x = Image{}
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Image) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Image) ProtoMessage() {}
+
+func (x *Image) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Image.ProtoReflect.Descriptor instead.
 func (*Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{5}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *Image) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Image.Unmarshal(m, b)
-}
-func (m *Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Image.Marshal(b, m, deterministic)
-}
-func (m *Image) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Image.Merge(m, src)
-}
-func (m *Image) XXX_Size() int {
-	return xxx_messageInfo_Image.Size(m)
-}
-func (m *Image) XXX_DiscardUnknown() {
-	xxx_messageInfo_Image.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Image proto.InternalMessageInfo
-
-func (m *Image) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Image) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Image) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Image) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Image) GetHash() uint32 {
-	if m != nil {
-		return m.Hash
+func (x *Image) GetHash() uint32 {
+	if x != nil {
+		return x.Hash
 	}
 	return 0
 }
 
-func (m *Image) GetInstallDatetime() string {
-	if m != nil {
-		return m.InstallDatetime
+func (x *Image) GetInstallDatetime() string {
+	if x != nil {
+		return x.InstallDatetime
 	}
 	return ""
 }
 
-func (m *Image) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *Image) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *Image) GetIsCommitted() bool {
-	if m != nil {
-		return m.IsCommitted
+func (x *Image) GetIsCommitted() bool {
+	if x != nil {
+		return x.IsCommitted
 	}
 	return false
 }
 
-func (m *Image) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *Image) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *Image) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *Image) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *Image) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Image) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Image) GetCrc32() uint32 {
-	if m != nil {
-		return m.Crc32
+func (x *Image) GetCrc32() uint32 {
+	if x != nil {
+		return x.Crc32
 	}
 	return 0
 }
@@ -913,8 +1154,9 @@
 // Older version of the API please see DeviceImageDownloadRequest
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownload struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Image unique identifier
@@ -941,205 +1183,219 @@
 	// Image activation state
 	ImageState ImageDownload_ImageActivateState `protobuf:"varint,12,opt,name=image_state,json=imageState,proto3,enum=device.ImageDownload_ImageActivateState" json:"image_state,omitempty"`
 	// Image file size
-	FileSize             uint32   `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FileSize      uint32 `protobuf:"varint,13,opt,name=file_size,json=fileSize,proto3" json:"file_size,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownload) Reset()         { *m = ImageDownload{} }
-func (m *ImageDownload) String() string { return proto.CompactTextString(m) }
-func (*ImageDownload) ProtoMessage()    {}
+func (x *ImageDownload) Reset() {
+	*x = ImageDownload{}
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownload) ProtoMessage() {}
+
+func (x *ImageDownload) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownload.ProtoReflect.Descriptor instead.
 func (*ImageDownload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{6}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ImageDownload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageDownload.Unmarshal(m, b)
-}
-func (m *ImageDownload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageDownload.Marshal(b, m, deterministic)
-}
-func (m *ImageDownload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownload.Merge(m, src)
-}
-func (m *ImageDownload) XXX_Size() int {
-	return xxx_messageInfo_ImageDownload.Size(m)
-}
-func (m *ImageDownload) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownload proto.InternalMessageInfo
-
-func (m *ImageDownload) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *ImageDownload) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ImageDownload) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetUrl() string {
-	if m != nil {
-		return m.Url
+func (x *ImageDownload) GetUrl() string {
+	if x != nil {
+		return x.Url
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetCrc() uint32 {
-	if m != nil {
-		return m.Crc
+func (x *ImageDownload) GetCrc() uint32 {
+	if x != nil {
+		return x.Crc
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageDownload) GetDownloadState() ImageDownload_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageDownload_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageDownload) GetImageVersion() string {
-	if m != nil {
-		return m.ImageVersion
+func (x *ImageDownload) GetImageVersion() string {
+	if x != nil {
+		return x.ImageVersion
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetDownloadedBytes() uint32 {
-	if m != nil {
-		return m.DownloadedBytes
+func (x *ImageDownload) GetDownloadedBytes() uint32 {
+	if x != nil {
+		return x.DownloadedBytes
 	}
 	return 0
 }
 
-func (m *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageDownload) GetReason() ImageDownload_ImageDownloadFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageDownload_NO_ERROR
 }
 
-func (m *ImageDownload) GetAdditionalInfo() string {
-	if m != nil {
-		return m.AdditionalInfo
+func (x *ImageDownload) GetAdditionalInfo() string {
+	if x != nil {
+		return x.AdditionalInfo
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetSaveConfig() bool {
-	if m != nil {
-		return m.SaveConfig
+func (x *ImageDownload) GetSaveConfig() bool {
+	if x != nil {
+		return x.SaveConfig
 	}
 	return false
 }
 
-func (m *ImageDownload) GetLocalDir() string {
-	if m != nil {
-		return m.LocalDir
+func (x *ImageDownload) GetLocalDir() string {
+	if x != nil {
+		return x.LocalDir
 	}
 	return ""
 }
 
-func (m *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageDownload) GetImageState() ImageDownload_ImageActivateState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageDownload_IMAGE_UNKNOWN
 }
 
-func (m *ImageDownload) GetFileSize() uint32 {
-	if m != nil {
-		return m.FileSize
+func (x *ImageDownload) GetFileSize() uint32 {
+	if x != nil {
+		return x.FileSize
 	}
 	return 0
 }
 
 // Deprecated in voltha 2.8, will be removed
 //
-// Deprecated: Do not use.
+// Deprecated: Marked as deprecated in voltha_protos/device.proto.
 type ImageDownloads struct {
-	Items                []*ImageDownload `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*ImageDownload       `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageDownloads) Reset()         { *m = ImageDownloads{} }
-func (m *ImageDownloads) String() string { return proto.CompactTextString(m) }
-func (*ImageDownloads) ProtoMessage()    {}
+func (x *ImageDownloads) Reset() {
+	*x = ImageDownloads{}
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageDownloads) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageDownloads) ProtoMessage() {}
+
+func (x *ImageDownloads) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageDownloads.ProtoReflect.Descriptor instead.
 func (*ImageDownloads) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{7}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ImageDownloads) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageDownloads.Unmarshal(m, b)
-}
-func (m *ImageDownloads) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageDownloads.Marshal(b, m, deterministic)
-}
-func (m *ImageDownloads) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageDownloads.Merge(m, src)
-}
-func (m *ImageDownloads) XXX_Size() int {
-	return xxx_messageInfo_ImageDownloads.Size(m)
-}
-func (m *ImageDownloads) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageDownloads.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageDownloads proto.InternalMessageInfo
-
-func (m *ImageDownloads) GetItems() []*ImageDownload {
-	if m != nil {
-		return m.Items
+func (x *ImageDownloads) GetItems() []*ImageDownload {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type Images struct {
-	Image                []*Image `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Image         []*Image               `protobuf:"bytes,1,rep,name=image,proto3" json:"image,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Images) Reset()         { *m = Images{} }
-func (m *Images) String() string { return proto.CompactTextString(m) }
-func (*Images) ProtoMessage()    {}
+func (x *Images) Reset() {
+	*x = Images{}
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Images) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Images) ProtoMessage() {}
+
+func (x *Images) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Images.ProtoReflect.Descriptor instead.
 func (*Images) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{8}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *Images) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Images.Unmarshal(m, b)
-}
-func (m *Images) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Images.Marshal(b, m, deterministic)
-}
-func (m *Images) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Images.Merge(m, src)
-}
-func (m *Images) XXX_Size() int {
-	return xxx_messageInfo_Images.Size(m)
-}
-func (m *Images) XXX_DiscardUnknown() {
-	xxx_messageInfo_Images.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Images proto.InternalMessageInfo
-
-func (m *Images) GetImage() []*Image {
-	if m != nil {
-		return m.Image
+func (x *Images) GetImage() []*Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
@@ -1147,7 +1403,8 @@
 // OnuImage represents the OMCI information as per OMCI spec
 // the information will be populates exactly as extracted from the device.
 type OnuImage struct {
-	//image version
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// image version
 	Version     string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	IsCommited  bool   `protobuf:"varint,2,opt,name=isCommited,proto3" json:"isCommited,omitempty"`
 	IsActive    bool   `protobuf:"varint,3,opt,name=isActive,proto3" json:"isActive,omitempty"`
@@ -1155,166 +1412,181 @@
 	ProductCode string `protobuf:"bytes,5,opt,name=productCode,proto3" json:"productCode,omitempty"`
 	// Hash is computed by the ONU and is optional as per OMCI spec (paragraph 9.1.4)
 	// No assumption should be made on the existence of this attribute at any time.
-	Hash                 string   `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Hash          string `protobuf:"bytes,6,opt,name=hash,proto3" json:"hash,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImage) Reset()         { *m = OnuImage{} }
-func (m *OnuImage) String() string { return proto.CompactTextString(m) }
-func (*OnuImage) ProtoMessage()    {}
+func (x *OnuImage) Reset() {
+	*x = OnuImage{}
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImage) ProtoMessage() {}
+
+func (x *OnuImage) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImage.ProtoReflect.Descriptor instead.
 func (*OnuImage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{9}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *OnuImage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImage.Unmarshal(m, b)
-}
-func (m *OnuImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImage.Marshal(b, m, deterministic)
-}
-func (m *OnuImage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImage.Merge(m, src)
-}
-func (m *OnuImage) XXX_Size() int {
-	return xxx_messageInfo_OnuImage.Size(m)
-}
-func (m *OnuImage) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImage proto.InternalMessageInfo
-
-func (m *OnuImage) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *OnuImage) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *OnuImage) GetIsCommited() bool {
-	if m != nil {
-		return m.IsCommited
+func (x *OnuImage) GetIsCommited() bool {
+	if x != nil {
+		return x.IsCommited
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsActive() bool {
-	if m != nil {
-		return m.IsActive
+func (x *OnuImage) GetIsActive() bool {
+	if x != nil {
+		return x.IsActive
 	}
 	return false
 }
 
-func (m *OnuImage) GetIsValid() bool {
-	if m != nil {
-		return m.IsValid
+func (x *OnuImage) GetIsValid() bool {
+	if x != nil {
+		return x.IsValid
 	}
 	return false
 }
 
-func (m *OnuImage) GetProductCode() string {
-	if m != nil {
-		return m.ProductCode
+func (x *OnuImage) GetProductCode() string {
+	if x != nil {
+		return x.ProductCode
 	}
 	return ""
 }
 
-func (m *OnuImage) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *OnuImage) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
 type OnuImages struct {
-	Items                []*OnuImage `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*OnuImage            `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuImages) Reset()         { *m = OnuImages{} }
-func (m *OnuImages) String() string { return proto.CompactTextString(m) }
-func (*OnuImages) ProtoMessage()    {}
+func (x *OnuImages) Reset() {
+	*x = OnuImages{}
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuImages) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuImages) ProtoMessage() {}
+
+func (x *OnuImages) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuImages.ProtoReflect.Descriptor instead.
 func (*OnuImages) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{10}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *OnuImages) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuImages.Unmarshal(m, b)
-}
-func (m *OnuImages) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuImages.Marshal(b, m, deterministic)
-}
-func (m *OnuImages) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuImages.Merge(m, src)
-}
-func (m *OnuImages) XXX_Size() int {
-	return xxx_messageInfo_OnuImages.Size(m)
-}
-func (m *OnuImages) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuImages.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuImages proto.InternalMessageInfo
-
-func (m *OnuImages) GetItems() []*OnuImage {
-	if m != nil {
-		return m.Items
+func (x *OnuImages) GetItems() []*OnuImage {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type DeviceImageState struct {
-	DeviceId             string      `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	ImageState           *ImageState `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	ImageState    *ImageState            `protobuf:"bytes,2,opt,name=imageState,proto3" json:"imageState,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceImageState) Reset()         { *m = DeviceImageState{} }
-func (m *DeviceImageState) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageState) ProtoMessage()    {}
+func (x *DeviceImageState) Reset() {
+	*x = DeviceImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageState) ProtoMessage() {}
+
+func (x *DeviceImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageState.ProtoReflect.Descriptor instead.
 func (*DeviceImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{11}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *DeviceImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageState.Unmarshal(m, b)
-}
-func (m *DeviceImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageState.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageState.Merge(m, src)
-}
-func (m *DeviceImageState) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageState.Size(m)
-}
-func (m *DeviceImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageState proto.InternalMessageInfo
-
-func (m *DeviceImageState) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageState) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *DeviceImageState) GetImageState() *ImageState {
-	if m != nil {
-		return m.ImageState
+func (x *DeviceImageState) GetImageState() *ImageState {
+	if x != nil {
+		return x.ImageState
 	}
 	return nil
 }
 
 type ImageState struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// image version
 	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
 	// Download state
@@ -1322,72 +1594,77 @@
 	// Image Operation Failure reason (use for both Download and Activate)
 	Reason ImageState_ImageFailureReason `protobuf:"varint,3,opt,name=reason,proto3,enum=device.ImageState_ImageFailureReason" json:"reason,omitempty"`
 	// Image activation state
-	ImageState           ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	ImageState    ImageState_ImageActivationState `protobuf:"varint,4,opt,name=image_state,json=imageState,proto3,enum=device.ImageState_ImageActivationState" json:"image_state,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ImageState) Reset()         { *m = ImageState{} }
-func (m *ImageState) String() string { return proto.CompactTextString(m) }
-func (*ImageState) ProtoMessage()    {}
+func (x *ImageState) Reset() {
+	*x = ImageState{}
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ImageState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ImageState) ProtoMessage() {}
+
+func (x *ImageState) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ImageState.ProtoReflect.Descriptor instead.
 func (*ImageState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{12}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *ImageState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ImageState.Unmarshal(m, b)
-}
-func (m *ImageState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ImageState.Marshal(b, m, deterministic)
-}
-func (m *ImageState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ImageState.Merge(m, src)
-}
-func (m *ImageState) XXX_Size() int {
-	return xxx_messageInfo_ImageState.Size(m)
-}
-func (m *ImageState) XXX_DiscardUnknown() {
-	xxx_messageInfo_ImageState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ImageState proto.InternalMessageInfo
-
-func (m *ImageState) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *ImageState) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *ImageState) GetDownloadState() ImageState_ImageDownloadState {
-	if m != nil {
-		return m.DownloadState
+func (x *ImageState) GetDownloadState() ImageState_ImageDownloadState {
+	if x != nil {
+		return x.DownloadState
 	}
 	return ImageState_DOWNLOAD_UNKNOWN
 }
 
-func (m *ImageState) GetReason() ImageState_ImageFailureReason {
-	if m != nil {
-		return m.Reason
+func (x *ImageState) GetReason() ImageState_ImageFailureReason {
+	if x != nil {
+		return x.Reason
 	}
 	return ImageState_NO_ERROR
 }
 
-func (m *ImageState) GetImageState() ImageState_ImageActivationState {
-	if m != nil {
-		return m.ImageState
+func (x *ImageState) GetImageState() ImageState_ImageActivationState {
+	if x != nil {
+		return x.ImageState
 	}
 	return ImageState_IMAGE_UNKNOWN
 }
 
 type Port struct {
-	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
-	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"`
+	state      protoimpl.MessageState  `protogen:"open.v1"`
+	PortNo     uint32                  `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`         // Device-unique port number
+	Label      string                  `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`                          // Arbitrary port label
+	Type       Port_PortType           `protobuf:"varint,3,opt,name=type,proto3,enum=device.Port_PortType" json:"type,omitempty"` //  Type of port
 	AdminState common.AdminState_Types `protobuf:"varint,5,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus common.OperStatus_Types `protobuf:"varint,6,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DeviceId   string                  `protobuf:"bytes,7,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` // Unique .id of device that owns this port
 	Peers      []*Port_PeerPort        `protobuf:"bytes,8,rep,name=peers,proto3" json:"peers,omitempty"`
 	RxPackets  uint64                  `protobuf:"fixed64,9,opt,name=rx_packets,json=rxPackets,proto3" json:"rx_packets,omitempty"`
 	RxBytes    uint64                  `protobuf:"fixed64,10,opt,name=rx_bytes,json=rxBytes,proto3" json:"rx_bytes,omitempty"`
@@ -1398,223 +1675,186 @@
 	// ofp_port represents the characteristics of a port, e.g. hardware
 	// address and supported features.  This field is relevant only for
 	// UNI and NNI ports.   For PON ports, it can be left empty.
-	OfpPort              *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	OfpPort       *openflow_13.OfpPort `protobuf:"bytes,15,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Port) Reset()         { *m = Port{} }
-func (m *Port) String() string { return proto.CompactTextString(m) }
-func (*Port) ProtoMessage()    {}
+func (x *Port) Reset() {
+	*x = Port{}
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port) ProtoMessage() {}
+
+func (x *Port) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port.ProtoReflect.Descriptor instead.
 func (*Port) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *Port) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Port.Unmarshal(m, b)
-}
-func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Port.Marshal(b, m, deterministic)
-}
-func (m *Port) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port.Merge(m, src)
-}
-func (m *Port) XXX_Size() int {
-	return xxx_messageInfo_Port.Size(m)
-}
-func (m *Port) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port proto.InternalMessageInfo
-
-func (m *Port) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
+func (x *Port) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
 	}
 	return 0
 }
 
-func (m *Port) GetLabel() string {
-	if m != nil {
-		return m.Label
+func (x *Port) GetLabel() string {
+	if x != nil {
+		return x.Label
 	}
 	return ""
 }
 
-func (m *Port) GetType() Port_PortType {
-	if m != nil {
-		return m.Type
+func (x *Port) GetType() Port_PortType {
+	if x != nil {
+		return x.Type
 	}
 	return Port_UNKNOWN
 }
 
-func (m *Port) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
+func (x *Port) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
 	}
-	return common.AdminState_UNKNOWN
+	return common.AdminState_Types(0)
 }
 
-func (m *Port) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
+func (x *Port) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
 	}
-	return common.OperStatus_UNKNOWN
+	return common.OperStatus_Types(0)
 }
 
-func (m *Port) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *Port) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *Port) GetPeers() []*Port_PeerPort {
-	if m != nil {
-		return m.Peers
+func (x *Port) GetPeers() []*Port_PeerPort {
+	if x != nil {
+		return x.Peers
 	}
 	return nil
 }
 
-func (m *Port) GetRxPackets() uint64 {
-	if m != nil {
-		return m.RxPackets
+func (x *Port) GetRxPackets() uint64 {
+	if x != nil {
+		return x.RxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetRxBytes() uint64 {
-	if m != nil {
-		return m.RxBytes
+func (x *Port) GetRxBytes() uint64 {
+	if x != nil {
+		return x.RxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetRxErrors() uint64 {
-	if m != nil {
-		return m.RxErrors
+func (x *Port) GetRxErrors() uint64 {
+	if x != nil {
+		return x.RxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetTxPackets() uint64 {
-	if m != nil {
-		return m.TxPackets
+func (x *Port) GetTxPackets() uint64 {
+	if x != nil {
+		return x.TxPackets
 	}
 	return 0
 }
 
-func (m *Port) GetTxBytes() uint64 {
-	if m != nil {
-		return m.TxBytes
+func (x *Port) GetTxBytes() uint64 {
+	if x != nil {
+		return x.TxBytes
 	}
 	return 0
 }
 
-func (m *Port) GetTxErrors() uint64 {
-	if m != nil {
-		return m.TxErrors
+func (x *Port) GetTxErrors() uint64 {
+	if x != nil {
+		return x.TxErrors
 	}
 	return 0
 }
 
-func (m *Port) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *Port) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-type Port_PeerPort struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	PortNo               uint32   `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Port_PeerPort) Reset()         { *m = Port_PeerPort{} }
-func (m *Port_PeerPort) String() string { return proto.CompactTextString(m) }
-func (*Port_PeerPort) ProtoMessage()    {}
-func (*Port_PeerPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{13, 0}
-}
-
-func (m *Port_PeerPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Port_PeerPort.Unmarshal(m, b)
-}
-func (m *Port_PeerPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Port_PeerPort.Marshal(b, m, deterministic)
-}
-func (m *Port_PeerPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Port_PeerPort.Merge(m, src)
-}
-func (m *Port_PeerPort) XXX_Size() int {
-	return xxx_messageInfo_Port_PeerPort.Size(m)
-}
-func (m *Port_PeerPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_Port_PeerPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Port_PeerPort proto.InternalMessageInfo
-
-func (m *Port_PeerPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Port_PeerPort) GetPortNo() uint32 {
-	if m != nil {
-		return m.PortNo
-	}
-	return 0
-}
-
 type Ports struct {
-	Items                []*Port  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Port                `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Ports) Reset()         { *m = Ports{} }
-func (m *Ports) String() string { return proto.CompactTextString(m) }
-func (*Ports) ProtoMessage()    {}
+func (x *Ports) Reset() {
+	*x = Ports{}
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Ports) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Ports) ProtoMessage() {}
+
+func (x *Ports) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Ports.ProtoReflect.Descriptor instead.
 func (*Ports) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{14}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *Ports) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Ports.Unmarshal(m, b)
-}
-func (m *Ports) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Ports.Marshal(b, m, deterministic)
-}
-func (m *Ports) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Ports.Merge(m, src)
-}
-func (m *Ports) XXX_Size() int {
-	return xxx_messageInfo_Ports.Size(m)
-}
-func (m *Ports) XXX_DiscardUnknown() {
-	xxx_messageInfo_Ports.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Ports proto.InternalMessageInfo
-
-func (m *Ports) GetItems() []*Port {
-	if m != nil {
-		return m.Items
+func (x *Ports) GetItems() []*Port {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 // A Physical Device instance
 type Device struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Voltha's device identifier
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Device type, refers to one of the registered device types
@@ -1642,165 +1882,270 @@
 	// Device contact MAC address (format: "xx:xx:xx:xx:xx:xx")
 	MacAddress string `protobuf:"bytes,13,opt,name=mac_address,json=macAddress,proto3" json:"mac_address,omitempty"`
 	// Types that are valid to be assigned to Address:
+	//
 	//	*Device_Ipv4Address
 	//	*Device_Ipv6Address
 	//	*Device_HostAndPort
 	Address       isDevice_Address           `protobuf_oneof:"address"`
-	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
+	ExtraArgs     string                     `protobuf:"bytes,23,opt,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"` // Used to pass additional device specific arguments
 	ProxyAddress  *Device_ProxyAddress       `protobuf:"bytes,19,opt,name=proxy_address,json=proxyAddress,proto3" json:"proxy_address,omitempty"`
 	AdminState    common.AdminState_Types    `protobuf:"varint,16,opt,name=admin_state,json=adminState,proto3,enum=common.AdminState_Types" json:"admin_state,omitempty"`
 	OperStatus    common.OperStatus_Types    `protobuf:"varint,17,opt,name=oper_status,json=operStatus,proto3,enum=common.OperStatus_Types" json:"oper_status,omitempty"`
-	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"`
+	Reason        string                     `protobuf:"bytes,22,opt,name=reason,proto3" json:"reason,omitempty"` //  Used in FAILED state
 	ConnectStatus common.ConnectStatus_Types `protobuf:"varint,18,opt,name=connect_status,json=connectStatus,proto3,enum=common.ConnectStatus_Types" json:"connect_status,omitempty"`
 	// Device type specific attributes
-	Custom *any.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
+	Custom *anypb.Any `protobuf:"bytes,64,opt,name=custom,proto3" json:"custom,omitempty"`
 	// PmConfigs type
-	PmConfigs            *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
-	ImageDownloads       []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	PmConfigs      *PmConfigs       `protobuf:"bytes,131,opt,name=pm_configs,json=pmConfigs,proto3" json:"pm_configs,omitempty"`
+	ImageDownloads []*ImageDownload `protobuf:"bytes,133,rep,name=image_downloads,json=imageDownloads,proto3" json:"image_downloads,omitempty"`
+	unknownFields  protoimpl.UnknownFields
+	sizeCache      protoimpl.SizeCache
 }
 
-func (m *Device) Reset()         { *m = Device{} }
-func (m *Device) String() string { return proto.CompactTextString(m) }
-func (*Device) ProtoMessage()    {}
+func (x *Device) Reset() {
+	*x = Device{}
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device) ProtoMessage() {}
+
+func (x *Device) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device.ProtoReflect.Descriptor instead.
 func (*Device) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *Device) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Device.Unmarshal(m, b)
-}
-func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Device.Marshal(b, m, deterministic)
-}
-func (m *Device) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device.Merge(m, src)
-}
-func (m *Device) XXX_Size() int {
-	return xxx_messageInfo_Device.Size(m)
-}
-func (m *Device) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device proto.InternalMessageInfo
-
-func (m *Device) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *Device) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *Device) GetType() string {
-	if m != nil {
-		return m.Type
+func (x *Device) GetType() string {
+	if x != nil {
+		return x.Type
 	}
 	return ""
 }
 
-func (m *Device) GetRoot() bool {
-	if m != nil {
-		return m.Root
+func (x *Device) GetRoot() bool {
+	if x != nil {
+		return x.Root
 	}
 	return false
 }
 
-func (m *Device) GetParentId() string {
-	if m != nil {
-		return m.ParentId
+func (x *Device) GetParentId() string {
+	if x != nil {
+		return x.ParentId
 	}
 	return ""
 }
 
-func (m *Device) GetParentPortNo() uint32 {
-	if m != nil {
-		return m.ParentPortNo
+func (x *Device) GetParentPortNo() uint32 {
+	if x != nil {
+		return x.ParentPortNo
 	}
 	return 0
 }
 
-func (m *Device) GetVendor() string {
-	if m != nil {
-		return m.Vendor
+func (x *Device) GetVendor() string {
+	if x != nil {
+		return x.Vendor
 	}
 	return ""
 }
 
-func (m *Device) GetModel() string {
-	if m != nil {
-		return m.Model
+func (x *Device) GetModel() string {
+	if x != nil {
+		return x.Model
 	}
 	return ""
 }
 
-func (m *Device) GetHardwareVersion() string {
-	if m != nil {
-		return m.HardwareVersion
+func (x *Device) GetHardwareVersion() string {
+	if x != nil {
+		return x.HardwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetFirmwareVersion() string {
-	if m != nil {
-		return m.FirmwareVersion
+func (x *Device) GetFirmwareVersion() string {
+	if x != nil {
+		return x.FirmwareVersion
 	}
 	return ""
 }
 
-func (m *Device) GetImages() *Images {
-	if m != nil {
-		return m.Images
+func (x *Device) GetImages() *Images {
+	if x != nil {
+		return x.Images
 	}
 	return nil
 }
 
-func (m *Device) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *Device) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
-func (m *Device) GetVendorId() string {
-	if m != nil {
-		return m.VendorId
+func (x *Device) GetVendorId() string {
+	if x != nil {
+		return x.VendorId
 	}
 	return ""
 }
 
-func (m *Device) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
+func (x *Device) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
 	}
 	return ""
 }
 
-func (m *Device) GetVlan() uint32 {
-	if m != nil {
-		return m.Vlan
+func (x *Device) GetVlan() uint32 {
+	if x != nil {
+		return x.Vlan
 	}
 	return 0
 }
 
-func (m *Device) GetMacAddress() string {
-	if m != nil {
-		return m.MacAddress
+func (x *Device) GetMacAddress() string {
+	if x != nil {
+		return x.MacAddress
 	}
 	return ""
 }
 
+func (x *Device) GetAddress() isDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
+
+func (x *Device) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*Device_HostAndPort); ok {
+			return x.HostAndPort
+		}
+	}
+	return ""
+}
+
+func (x *Device) GetExtraArgs() string {
+	if x != nil {
+		return x.ExtraArgs
+	}
+	return ""
+}
+
+func (x *Device) GetProxyAddress() *Device_ProxyAddress {
+	if x != nil {
+		return x.ProxyAddress
+	}
+	return nil
+}
+
+func (x *Device) GetAdminState() common.AdminState_Types {
+	if x != nil {
+		return x.AdminState
+	}
+	return common.AdminState_Types(0)
+}
+
+func (x *Device) GetOperStatus() common.OperStatus_Types {
+	if x != nil {
+		return x.OperStatus
+	}
+	return common.OperStatus_Types(0)
+}
+
+func (x *Device) GetReason() string {
+	if x != nil {
+		return x.Reason
+	}
+	return ""
+}
+
+func (x *Device) GetConnectStatus() common.ConnectStatus_Types {
+	if x != nil {
+		return x.ConnectStatus
+	}
+	return common.ConnectStatus_Types(0)
+}
+
+func (x *Device) GetCustom() *anypb.Any {
+	if x != nil {
+		return x.Custom
+	}
+	return nil
+}
+
+func (x *Device) GetPmConfigs() *PmConfigs {
+	if x != nil {
+		return x.PmConfigs
+	}
+	return nil
+}
+
+func (x *Device) GetImageDownloads() []*ImageDownload {
+	if x != nil {
+		return x.ImageDownloads
+	}
+	return nil
+}
+
 type isDevice_Address interface {
 	isDevice_Address()
 }
 
 type Device_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
 	Ipv4Address string `protobuf:"bytes,14,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
 }
 
 type Device_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
 	Ipv6Address string `protobuf:"bytes,15,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
 }
 
@@ -1814,656 +2159,536 @@
 
 func (*Device_HostAndPort) isDevice_Address() {}
 
-func (m *Device) GetAddress() isDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
-}
-
-func (m *Device) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv4Address); ok {
-		return x.Ipv4Address
-	}
-	return ""
-}
-
-func (m *Device) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*Device_Ipv6Address); ok {
-		return x.Ipv6Address
-	}
-	return ""
-}
-
-func (m *Device) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*Device_HostAndPort); ok {
-		return x.HostAndPort
-	}
-	return ""
-}
-
-func (m *Device) GetExtraArgs() string {
-	if m != nil {
-		return m.ExtraArgs
-	}
-	return ""
-}
-
-func (m *Device) GetProxyAddress() *Device_ProxyAddress {
-	if m != nil {
-		return m.ProxyAddress
-	}
-	return nil
-}
-
-func (m *Device) GetAdminState() common.AdminState_Types {
-	if m != nil {
-		return m.AdminState
-	}
-	return common.AdminState_UNKNOWN
-}
-
-func (m *Device) GetOperStatus() common.OperStatus_Types {
-	if m != nil {
-		return m.OperStatus
-	}
-	return common.OperStatus_UNKNOWN
-}
-
-func (m *Device) GetReason() string {
-	if m != nil {
-		return m.Reason
-	}
-	return ""
-}
-
-func (m *Device) GetConnectStatus() common.ConnectStatus_Types {
-	if m != nil {
-		return m.ConnectStatus
-	}
-	return common.ConnectStatus_UNKNOWN
-}
-
-func (m *Device) GetCustom() *any.Any {
-	if m != nil {
-		return m.Custom
-	}
-	return nil
-}
-
-func (m *Device) GetPmConfigs() *PmConfigs {
-	if m != nil {
-		return m.PmConfigs
-	}
-	return nil
-}
-
-func (m *Device) GetImageDownloads() []*ImageDownload {
-	if m != nil {
-		return m.ImageDownloads
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Device) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Device_Ipv4Address)(nil),
-		(*Device_Ipv6Address)(nil),
-		(*Device_HostAndPort)(nil),
-	}
-}
-
-type Device_ProxyAddress struct {
-	DeviceId             string   `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DeviceType           string   `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`
-	ChannelId            uint32   `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	ChannelGroupId       uint32   `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`
-	ChannelTermination   string   `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"`
-	OnuId                uint32   `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	OnuSessionId         uint32   `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`
-	AdapterEndpoint      string   `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Device_ProxyAddress) Reset()         { *m = Device_ProxyAddress{} }
-func (m *Device_ProxyAddress) String() string { return proto.CompactTextString(m) }
-func (*Device_ProxyAddress) ProtoMessage()    {}
-func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{15, 0}
-}
-
-func (m *Device_ProxyAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Device_ProxyAddress.Unmarshal(m, b)
-}
-func (m *Device_ProxyAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Device_ProxyAddress.Marshal(b, m, deterministic)
-}
-func (m *Device_ProxyAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Device_ProxyAddress.Merge(m, src)
-}
-func (m *Device_ProxyAddress) XXX_Size() int {
-	return xxx_messageInfo_Device_ProxyAddress.Size(m)
-}
-func (m *Device_ProxyAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Device_ProxyAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Device_ProxyAddress proto.InternalMessageInfo
-
-func (m *Device_ProxyAddress) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetDeviceType() string {
-	if m != nil {
-		return m.DeviceType
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetChannelId() uint32 {
-	if m != nil {
-		return m.ChannelId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelGroupId() uint32 {
-	if m != nil {
-		return m.ChannelGroupId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetChannelTermination() string {
-	if m != nil {
-		return m.ChannelTermination
-	}
-	return ""
-}
-
-func (m *Device_ProxyAddress) GetOnuId() uint32 {
-	if m != nil {
-		return m.OnuId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetOnuSessionId() uint32 {
-	if m != nil {
-		return m.OnuSessionId
-	}
-	return 0
-}
-
-func (m *Device_ProxyAddress) GetAdapterEndpoint() string {
-	if m != nil {
-		return m.AdapterEndpoint
-	}
-	return ""
-}
-
 type DeviceImageDownloadRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Id
 	// allows for operations on multiple devices.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	//The image for the device containing all the information
+	// The image for the device containing all the information
 	Image *Image `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
-	//Activate the image if the download to the device is successful
+	// Activate the image if the download to the device is successful
 	ActivateOnSuccess bool `protobuf:"varint,3,opt,name=activateOnSuccess,proto3" json:"activateOnSuccess,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,4,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageDownloadRequest) Reset()         { *m = DeviceImageDownloadRequest{} }
-func (m *DeviceImageDownloadRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageDownloadRequest) ProtoMessage()    {}
+func (x *DeviceImageDownloadRequest) Reset() {
+	*x = DeviceImageDownloadRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageDownloadRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageDownloadRequest) ProtoMessage() {}
+
+func (x *DeviceImageDownloadRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageDownloadRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageDownloadRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{16}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *DeviceImageDownloadRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageDownloadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageDownloadRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageDownloadRequest.Merge(m, src)
-}
-func (m *DeviceImageDownloadRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageDownloadRequest.Size(m)
-}
-func (m *DeviceImageDownloadRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageDownloadRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageDownloadRequest proto.InternalMessageInfo
-
-func (m *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageDownloadRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetImage() *Image {
-	if m != nil {
-		return m.Image
+func (x *DeviceImageDownloadRequest) GetImage() *Image {
+	if x != nil {
+		return x.Image
 	}
 	return nil
 }
 
-func (m *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
-	if m != nil {
-		return m.ActivateOnSuccess
+func (x *DeviceImageDownloadRequest) GetActivateOnSuccess() bool {
+	if x != nil {
+		return x.ActivateOnSuccess
 	}
 	return false
 }
 
-func (m *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageDownloadRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageRequest struct {
-	//Device Id
-	//allows for operations on multiple adapters.
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Device Id
+	// allows for operations on multiple adapters.
 	DeviceId []*common.ID `protobuf:"bytes,1,rep,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	// Image Version, this is the sole identifier of the image. it's the vendor specified OMCI version
 	// must be known at the time of initiating a download, activate, commit image on an onu.
 	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
-	//Automatically commit the image if the activation on the device is successful
-	CommitOnSuccess      bool     `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	// Automatically commit the image if the activation on the device is successful
+	CommitOnSuccess bool `protobuf:"varint,3,opt,name=commitOnSuccess,proto3" json:"commitOnSuccess,omitempty"`
+	unknownFields   protoimpl.UnknownFields
+	sizeCache       protoimpl.SizeCache
 }
 
-func (m *DeviceImageRequest) Reset()         { *m = DeviceImageRequest{} }
-func (m *DeviceImageRequest) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageRequest) ProtoMessage()    {}
+func (x *DeviceImageRequest) Reset() {
+	*x = DeviceImageRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageRequest) ProtoMessage() {}
+
+func (x *DeviceImageRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageRequest.ProtoReflect.Descriptor instead.
 func (*DeviceImageRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{17}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *DeviceImageRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageRequest.Unmarshal(m, b)
-}
-func (m *DeviceImageRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageRequest.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageRequest.Merge(m, src)
-}
-func (m *DeviceImageRequest) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageRequest.Size(m)
-}
-func (m *DeviceImageRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageRequest proto.InternalMessageInfo
-
-func (m *DeviceImageRequest) GetDeviceId() []*common.ID {
-	if m != nil {
-		return m.DeviceId
+func (x *DeviceImageRequest) GetDeviceId() []*common.ID {
+	if x != nil {
+		return x.DeviceId
 	}
 	return nil
 }
 
-func (m *DeviceImageRequest) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *DeviceImageRequest) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *DeviceImageRequest) GetCommitOnSuccess() bool {
-	if m != nil {
-		return m.CommitOnSuccess
+func (x *DeviceImageRequest) GetCommitOnSuccess() bool {
+	if x != nil {
+		return x.CommitOnSuccess
 	}
 	return false
 }
 
 type DeviceImageResponse struct {
-	//Image state for the different devices
-	DeviceImageStates    []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	// Image state for the different devices
+	DeviceImageStates []*DeviceImageState `protobuf:"bytes,1,rep,name=device_image_states,json=deviceImageStates,proto3" json:"device_image_states,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *DeviceImageResponse) Reset()         { *m = DeviceImageResponse{} }
-func (m *DeviceImageResponse) String() string { return proto.CompactTextString(m) }
-func (*DeviceImageResponse) ProtoMessage()    {}
+func (x *DeviceImageResponse) Reset() {
+	*x = DeviceImageResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceImageResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceImageResponse) ProtoMessage() {}
+
+func (x *DeviceImageResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceImageResponse.ProtoReflect.Descriptor instead.
 func (*DeviceImageResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{18}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *DeviceImageResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceImageResponse.Unmarshal(m, b)
-}
-func (m *DeviceImageResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceImageResponse.Marshal(b, m, deterministic)
-}
-func (m *DeviceImageResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceImageResponse.Merge(m, src)
-}
-func (m *DeviceImageResponse) XXX_Size() int {
-	return xxx_messageInfo_DeviceImageResponse.Size(m)
-}
-func (m *DeviceImageResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceImageResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceImageResponse proto.InternalMessageInfo
-
-func (m *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
-	if m != nil {
-		return m.DeviceImageStates
+func (x *DeviceImageResponse) GetDeviceImageStates() []*DeviceImageState {
+	if x != nil {
+		return x.DeviceImageStates
 	}
 	return nil
 }
 
 // Device Self Test Response
 type SelfTestResponse struct {
-	Result               SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
-	XXX_unrecognized     []byte                          `json:"-"`
-	XXX_sizecache        int32                           `json:"-"`
+	state         protoimpl.MessageState          `protogen:"open.v1"`
+	Result        SelfTestResponse_SelfTestResult `protobuf:"varint,1,opt,name=result,proto3,enum=device.SelfTestResponse_SelfTestResult" json:"result,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *SelfTestResponse) Reset()         { *m = SelfTestResponse{} }
-func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
-func (*SelfTestResponse) ProtoMessage()    {}
+func (x *SelfTestResponse) Reset() {
+	*x = SelfTestResponse{}
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SelfTestResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SelfTestResponse) ProtoMessage() {}
+
+func (x *SelfTestResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SelfTestResponse.ProtoReflect.Descriptor instead.
 func (*SelfTestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{19}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *SelfTestResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SelfTestResponse.Unmarshal(m, b)
-}
-func (m *SelfTestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SelfTestResponse.Marshal(b, m, deterministic)
-}
-func (m *SelfTestResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SelfTestResponse.Merge(m, src)
-}
-func (m *SelfTestResponse) XXX_Size() int {
-	return xxx_messageInfo_SelfTestResponse.Size(m)
-}
-func (m *SelfTestResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SelfTestResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SelfTestResponse proto.InternalMessageInfo
-
-func (m *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
-	if m != nil {
-		return m.Result
+func (x *SelfTestResponse) GetResult() SelfTestResponse_SelfTestResult {
+	if x != nil {
+		return x.Result
 	}
 	return SelfTestResponse_SUCCESS
 }
 
 type Devices struct {
-	Items                []*Device `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*Device              `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Devices) Reset()         { *m = Devices{} }
-func (m *Devices) String() string { return proto.CompactTextString(m) }
-func (*Devices) ProtoMessage()    {}
+func (x *Devices) Reset() {
+	*x = Devices{}
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Devices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Devices) ProtoMessage() {}
+
+func (x *Devices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Devices.ProtoReflect.Descriptor instead.
 func (*Devices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{20}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *Devices) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Devices.Unmarshal(m, b)
-}
-func (m *Devices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Devices.Marshal(b, m, deterministic)
-}
-func (m *Devices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Devices.Merge(m, src)
-}
-func (m *Devices) XXX_Size() int {
-	return xxx_messageInfo_Devices.Size(m)
-}
-func (m *Devices) XXX_DiscardUnknown() {
-	xxx_messageInfo_Devices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Devices proto.InternalMessageInfo
-
-func (m *Devices) GetItems() []*Device {
-	if m != nil {
-		return m.Items
+func (x *Devices) GetItems() []*Device {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type SimulateAlarmRequest struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Device Identifier
-	Id                   string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Indicator            string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
-	IntfId               string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	PortTypeName         string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
-	OnuDeviceId          string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
-	InverseBitErrorRate  int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
-	Drift                int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
-	NewEqd               int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
-	OnuSerialNumber      string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
-	Operation            SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
-	XXX_unrecognized     []byte                             `json:"-"`
-	XXX_sizecache        int32                              `json:"-"`
+	Id                  string                             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Indicator           string                             `protobuf:"bytes,2,opt,name=indicator,proto3" json:"indicator,omitempty"`
+	IntfId              string                             `protobuf:"bytes,3,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	PortTypeName        string                             `protobuf:"bytes,4,opt,name=port_type_name,json=portTypeName,proto3" json:"port_type_name,omitempty"`
+	OnuDeviceId         string                             `protobuf:"bytes,5,opt,name=onu_device_id,json=onuDeviceId,proto3" json:"onu_device_id,omitempty"`
+	InverseBitErrorRate int32                              `protobuf:"varint,6,opt,name=inverse_bit_error_rate,json=inverseBitErrorRate,proto3" json:"inverse_bit_error_rate,omitempty"`
+	Drift               int32                              `protobuf:"varint,7,opt,name=drift,proto3" json:"drift,omitempty"`
+	NewEqd              int32                              `protobuf:"varint,8,opt,name=new_eqd,json=newEqd,proto3" json:"new_eqd,omitempty"`
+	OnuSerialNumber     string                             `protobuf:"bytes,9,opt,name=onu_serial_number,json=onuSerialNumber,proto3" json:"onu_serial_number,omitempty"`
+	Operation           SimulateAlarmRequest_OperationType `protobuf:"varint,10,opt,name=operation,proto3,enum=device.SimulateAlarmRequest_OperationType" json:"operation,omitempty"`
+	unknownFields       protoimpl.UnknownFields
+	sizeCache           protoimpl.SizeCache
 }
 
-func (m *SimulateAlarmRequest) Reset()         { *m = SimulateAlarmRequest{} }
-func (m *SimulateAlarmRequest) String() string { return proto.CompactTextString(m) }
-func (*SimulateAlarmRequest) ProtoMessage()    {}
+func (x *SimulateAlarmRequest) Reset() {
+	*x = SimulateAlarmRequest{}
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *SimulateAlarmRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimulateAlarmRequest) ProtoMessage() {}
+
+func (x *SimulateAlarmRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[21]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimulateAlarmRequest.ProtoReflect.Descriptor instead.
 func (*SimulateAlarmRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{21}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *SimulateAlarmRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimulateAlarmRequest.Unmarshal(m, b)
-}
-func (m *SimulateAlarmRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimulateAlarmRequest.Marshal(b, m, deterministic)
-}
-func (m *SimulateAlarmRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimulateAlarmRequest.Merge(m, src)
-}
-func (m *SimulateAlarmRequest) XXX_Size() int {
-	return xxx_messageInfo_SimulateAlarmRequest.Size(m)
-}
-func (m *SimulateAlarmRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimulateAlarmRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimulateAlarmRequest proto.InternalMessageInfo
-
-func (m *SimulateAlarmRequest) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *SimulateAlarmRequest) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIndicator() string {
-	if m != nil {
-		return m.Indicator
+func (x *SimulateAlarmRequest) GetIndicator() string {
+	if x != nil {
+		return x.Indicator
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetIntfId() string {
-	if m != nil {
-		return m.IntfId
+func (x *SimulateAlarmRequest) GetIntfId() string {
+	if x != nil {
+		return x.IntfId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetPortTypeName() string {
-	if m != nil {
-		return m.PortTypeName
+func (x *SimulateAlarmRequest) GetPortTypeName() string {
+	if x != nil {
+		return x.PortTypeName
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOnuDeviceId() string {
-	if m != nil {
-		return m.OnuDeviceId
+func (x *SimulateAlarmRequest) GetOnuDeviceId() string {
+	if x != nil {
+		return x.OnuDeviceId
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
-	if m != nil {
-		return m.InverseBitErrorRate
+func (x *SimulateAlarmRequest) GetInverseBitErrorRate() int32 {
+	if x != nil {
+		return x.InverseBitErrorRate
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetDrift() int32 {
-	if m != nil {
-		return m.Drift
+func (x *SimulateAlarmRequest) GetDrift() int32 {
+	if x != nil {
+		return x.Drift
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetNewEqd() int32 {
-	if m != nil {
-		return m.NewEqd
+func (x *SimulateAlarmRequest) GetNewEqd() int32 {
+	if x != nil {
+		return x.NewEqd
 	}
 	return 0
 }
 
-func (m *SimulateAlarmRequest) GetOnuSerialNumber() string {
-	if m != nil {
-		return m.OnuSerialNumber
+func (x *SimulateAlarmRequest) GetOnuSerialNumber() string {
+	if x != nil {
+		return x.OnuSerialNumber
 	}
 	return ""
 }
 
-func (m *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
-	if m != nil {
-		return m.Operation
+func (x *SimulateAlarmRequest) GetOperation() SimulateAlarmRequest_OperationType {
+	if x != nil {
+		return x.Operation
 	}
 	return SimulateAlarmRequest_RAISE
 }
 
 // Represents a serialNumber of a  child device on a olt pon port
 type OnuSerialNumberOnOLTPon struct {
-	OltDeviceId          *common.ID `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
-	Port                 *Port      `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
-	SerialNumber         string     `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	OltDeviceId   *common.ID             `protobuf:"bytes,1,opt,name=olt_device_id,json=oltDeviceId,proto3" json:"olt_device_id,omitempty"`
+	Port          *Port                  `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"`
+	SerialNumber  string                 `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *OnuSerialNumberOnOLTPon) Reset()         { *m = OnuSerialNumberOnOLTPon{} }
-func (m *OnuSerialNumberOnOLTPon) String() string { return proto.CompactTextString(m) }
-func (*OnuSerialNumberOnOLTPon) ProtoMessage()    {}
+func (x *OnuSerialNumberOnOLTPon) Reset() {
+	*x = OnuSerialNumberOnOLTPon{}
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *OnuSerialNumberOnOLTPon) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OnuSerialNumberOnOLTPon) ProtoMessage() {}
+
+func (x *OnuSerialNumberOnOLTPon) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[22]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OnuSerialNumberOnOLTPon.ProtoReflect.Descriptor instead.
 func (*OnuSerialNumberOnOLTPon) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{22}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *OnuSerialNumberOnOLTPon) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Unmarshal(m, b)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Marshal(b, m, deterministic)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.Merge(m, src)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_Size() int {
-	return xxx_messageInfo_OnuSerialNumberOnOLTPon.Size(m)
-}
-func (m *OnuSerialNumberOnOLTPon) XXX_DiscardUnknown() {
-	xxx_messageInfo_OnuSerialNumberOnOLTPon.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_OnuSerialNumberOnOLTPon proto.InternalMessageInfo
-
-func (m *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
-	if m != nil {
-		return m.OltDeviceId
+func (x *OnuSerialNumberOnOLTPon) GetOltDeviceId() *common.ID {
+	if x != nil {
+		return x.OltDeviceId
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetPort() *Port {
-	if m != nil {
-		return m.Port
+func (x *OnuSerialNumberOnOLTPon) GetPort() *Port {
+	if x != nil {
+		return x.Port
 	}
 	return nil
 }
 
-func (m *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
-	if m != nil {
-		return m.SerialNumber
+func (x *OnuSerialNumberOnOLTPon) GetSerialNumber() string {
+	if x != nil {
+		return x.SerialNumber
 	}
 	return ""
 }
 
 type UpdateDevice struct {
-	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	state protoimpl.MessageState `protogen:"open.v1"`
+	Id    string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` //Device id of the device, for now only updating the OLT device is supported, and only ip address of the OLT
 	// Types that are valid to be assigned to Address:
+	//
 	//	*UpdateDevice_Ipv4Address
 	//	*UpdateDevice_Ipv6Address
 	//	*UpdateDevice_HostAndPort
-	Address              isUpdateDevice_Address `protobuf_oneof:"address"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Address       isUpdateDevice_Address `protobuf_oneof:"address"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *UpdateDevice) Reset()         { *m = UpdateDevice{} }
-func (m *UpdateDevice) String() string { return proto.CompactTextString(m) }
-func (*UpdateDevice) ProtoMessage()    {}
+func (x *UpdateDevice) Reset() {
+	*x = UpdateDevice{}
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateDevice) ProtoMessage() {}
+
+func (x *UpdateDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[23]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateDevice.ProtoReflect.Descriptor instead.
 func (*UpdateDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_200940f73d155856, []int{23}
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *UpdateDevice) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UpdateDevice.Unmarshal(m, b)
-}
-func (m *UpdateDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UpdateDevice.Marshal(b, m, deterministic)
-}
-func (m *UpdateDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UpdateDevice.Merge(m, src)
-}
-func (m *UpdateDevice) XXX_Size() int {
-	return xxx_messageInfo_UpdateDevice.Size(m)
-}
-func (m *UpdateDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_UpdateDevice.DiscardUnknown(m)
+func (x *UpdateDevice) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
 }
 
-var xxx_messageInfo_UpdateDevice proto.InternalMessageInfo
+func (x *UpdateDevice) GetAddress() isUpdateDevice_Address {
+	if x != nil {
+		return x.Address
+	}
+	return nil
+}
 
-func (m *UpdateDevice) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *UpdateDevice) GetIpv4Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv4Address); ok {
+			return x.Ipv4Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetIpv6Address() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_Ipv6Address); ok {
+			return x.Ipv6Address
+		}
+	}
+	return ""
+}
+
+func (x *UpdateDevice) GetHostAndPort() string {
+	if x != nil {
+		if x, ok := x.Address.(*UpdateDevice_HostAndPort); ok {
+			return x.HostAndPort
+		}
 	}
 	return ""
 }
@@ -2473,10 +2698,13 @@
 }
 
 type UpdateDevice_Ipv4Address struct {
+	// Device contact IPv4 address (format: "a.b.c.d" or can use hostname too)
 	Ipv4Address string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof"`
 }
 
 type UpdateDevice_Ipv6Address struct {
+	// Device contact IPv6 address using the canonical string form
+	// ("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx")
 	Ipv6Address string `protobuf:"bytes,3,opt,name=ipv6_address,json=ipv6Address,proto3,oneof"`
 }
 
@@ -2490,268 +2718,579 @@
 
 func (*UpdateDevice_HostAndPort) isUpdateDevice_Address() {}
 
-func (m *UpdateDevice) GetAddress() isUpdateDevice_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
+type Port_PeerPort struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId      string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	PortNo        uint32                 `protobuf:"varint,2,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *UpdateDevice) GetIpv4Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv4Address); ok {
-		return x.Ipv4Address
+func (x *Port_PeerPort) Reset() {
+	*x = Port_PeerPort{}
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Port_PeerPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Port_PeerPort) ProtoMessage() {}
+
+func (x *Port_PeerPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[24]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Port_PeerPort.ProtoReflect.Descriptor instead.
+func (*Port_PeerPort) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{13, 0}
+}
+
+func (x *Port_PeerPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *UpdateDevice) GetIpv6Address() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_Ipv6Address); ok {
-		return x.Ipv6Address
+func (x *Port_PeerPort) GetPortNo() uint32 {
+	if x != nil {
+		return x.PortNo
+	}
+	return 0
+}
+
+type Device_ProxyAddress struct {
+	state              protoimpl.MessageState `protogen:"open.v1"`
+	DeviceId           string                 `protobuf:"bytes,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                               // Which device to use as proxy to this device
+	DeviceType         string                 `protobuf:"bytes,2,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"`                         // The device type of the proxy device to use as the adapter name
+	ChannelId          uint32                 `protobuf:"varint,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`                           // Sub-address within proxy
+	ChannelGroupId     uint32                 `protobuf:"varint,4,opt,name=channel_group_id,json=channelGroupId,proto3" json:"channel_group_id,omitempty"`          // Channel Group index
+	ChannelTermination string                 `protobuf:"bytes,5,opt,name=channel_termination,json=channelTermination,proto3" json:"channel_termination,omitempty"` // Channel Termination name
+	OnuId              uint32                 `protobuf:"varint,6,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`                                       // onu identifier; optional
+	OnuSessionId       uint32                 `protobuf:"varint,7,opt,name=onu_session_id,json=onuSessionId,proto3" json:"onu_session_id,omitempty"`                // session identifier for the ONU; optional
+	AdapterEndpoint    string                 `protobuf:"bytes,8,opt,name=adapter_endpoint,json=adapterEndpoint,proto3" json:"adapter_endpoint,omitempty"`          // endpoint of the adapter that handles the proxy device
+	unknownFields      protoimpl.UnknownFields
+	sizeCache          protoimpl.SizeCache
+}
+
+func (x *Device_ProxyAddress) Reset() {
+	*x = Device_ProxyAddress{}
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Device_ProxyAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Device_ProxyAddress) ProtoMessage() {}
+
+func (x *Device_ProxyAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_device_proto_msgTypes[25]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Device_ProxyAddress.ProtoReflect.Descriptor instead.
+func (*Device_ProxyAddress) Descriptor() ([]byte, []int) {
+	return file_voltha_protos_device_proto_rawDescGZIP(), []int{15, 0}
+}
+
+func (x *Device_ProxyAddress) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *UpdateDevice) GetHostAndPort() string {
-	if x, ok := m.GetAddress().(*UpdateDevice_HostAndPort); ok {
-		return x.HostAndPort
+func (x *Device_ProxyAddress) GetDeviceType() string {
+	if x != nil {
+		return x.DeviceType
 	}
 	return ""
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*UpdateDevice) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+func (x *Device_ProxyAddress) GetChannelId() uint32 {
+	if x != nil {
+		return x.ChannelId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelGroupId() uint32 {
+	if x != nil {
+		return x.ChannelGroupId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetChannelTermination() string {
+	if x != nil {
+		return x.ChannelTermination
+	}
+	return ""
+}
+
+func (x *Device_ProxyAddress) GetOnuId() uint32 {
+	if x != nil {
+		return x.OnuId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetOnuSessionId() uint32 {
+	if x != nil {
+		return x.OnuSessionId
+	}
+	return 0
+}
+
+func (x *Device_ProxyAddress) GetAdapterEndpoint() string {
+	if x != nil {
+		return x.AdapterEndpoint
+	}
+	return ""
+}
+
+var File_voltha_protos_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_device_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/device.proto\x12\x06device\x1a\x19google/protobuf/any.proto\x1a\x1avoltha_protos/common.proto\x1a\x1fvoltha_protos/openflow_13.proto\"\xe2\x02\n" +
+	"\n" +
+	"DeviceType\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" +
+	"\tvendor_id\x18\x05 \x01(\tR\bvendorId\x12\x1d\n" +
+	"\n" +
+	"vendor_ids\x18\x06 \x03(\tR\tvendorIds\x12\x18\n" +
+	"\aadapter\x18\x02 \x01(\tR\aadapter\x127\n" +
+	"\x18accepts_bulk_flow_update\x18\x03 \x01(\bR\x15acceptsBulkFlowUpdate\x12D\n" +
+	"\x1faccepts_add_remove_flow_updates\x18\x04 \x01(\bR\x1bacceptsAddRemoveFlowUpdates\x12L\n" +
+	"#accepts_direct_logical_flows_update\x18\a \x01(\bR\x1facceptsDirectLogicalFlowsUpdate\x12!\n" +
+	"\fadapter_type\x18\b \x01(\tR\vadapterType\"7\n" +
+	"\vDeviceTypes\x12(\n" +
+	"\x05items\x18\x01 \x03(\v2\x12.device.DeviceTypeR\x05items\"\xc0\x01\n" +
+	"\bPmConfig\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12+\n" +
+	"\x04type\x18\x02 \x01(\x0e2\x17.device.PmConfig.PmTypeR\x04type\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12\x1f\n" +
+	"\vsample_freq\x18\x04 \x01(\rR\n" +
+	"sampleFreq\"8\n" +
+	"\x06PmType\x12\v\n" +
+	"\aCOUNTER\x10\x00\x12\t\n" +
+	"\x05GAUGE\x10\x01\x12\t\n" +
+	"\x05STATE\x10\x02\x12\v\n" +
+	"\aCONTEXT\x10\x03\"\x93\x01\n" +
+	"\rPmGroupConfig\x12\x1d\n" +
+	"\n" +
+	"group_name\x18\x01 \x01(\tR\tgroupName\x12\x1d\n" +
+	"\n" +
+	"group_freq\x18\x02 \x01(\rR\tgroupFreq\x12\x18\n" +
+	"\aenabled\x18\x03 \x01(\bR\aenabled\x12*\n" +
+	"\ametrics\x18\x04 \x03(\v2\x10.device.PmConfigR\ametrics\"\xf3\x01\n" +
+	"\tPmConfigs\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12!\n" +
+	"\fdefault_freq\x18\x02 \x01(\rR\vdefaultFreq\x12\x18\n" +
+	"\agrouped\x18\x03 \x01(\bR\agrouped\x12#\n" +
+	"\rfreq_override\x18\x04 \x01(\bR\ffreqOverride\x12-\n" +
+	"\x06groups\x18\x05 \x03(\v2\x15.device.PmGroupConfigR\x06groups\x12*\n" +
+	"\ametrics\x18\x06 \x03(\v2\x10.device.PmConfigR\ametrics\x12\x19\n" +
+	"\bmax_skew\x18\a \x01(\rR\amaxSkew\"\x8f\x02\n" +
+	"\x05Image\x12\x12\n" +
+	"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12\x12\n" +
+	"\x04hash\x18\x03 \x01(\rR\x04hash\x12)\n" +
+	"\x10install_datetime\x18\x04 \x01(\tR\x0finstallDatetime\x12\x1b\n" +
+	"\tis_active\x18\x05 \x01(\bR\bisActive\x12!\n" +
+	"\fis_committed\x18\x06 \x01(\bR\visCommitted\x12\x19\n" +
+	"\bis_valid\x18\a \x01(\bR\aisValid\x12\x10\n" +
+	"\x03url\x18\b \x01(\tR\x03url\x12\x16\n" +
+	"\x06vendor\x18\t \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05crc32\x18\n" +
+	" \x01(\rR\x05crc32\"\xe7\a\n" +
+	"\rImageDownload\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" +
+	"\x03url\x18\x03 \x01(\tR\x03url\x12\x10\n" +
+	"\x03crc\x18\x04 \x01(\rR\x03crc\x12O\n" +
+	"\x0edownload_state\x18\x05 \x01(\x0e2(.device.ImageDownload.ImageDownloadStateR\rdownloadState\x12#\n" +
+	"\rimage_version\x18\x06 \x01(\tR\fimageVersion\x12)\n" +
+	"\x10downloaded_bytes\x18\a \x01(\rR\x0fdownloadedBytes\x12H\n" +
+	"\x06reason\x18\b \x01(\x0e20.device.ImageDownload.ImageDownloadFailureReasonR\x06reason\x12'\n" +
+	"\x0fadditional_info\x18\t \x01(\tR\x0eadditionalInfo\x12\x1f\n" +
+	"\vsave_config\x18\n" +
+	" \x01(\bR\n" +
+	"saveConfig\x12\x1b\n" +
+	"\tlocal_dir\x18\v \x01(\tR\blocalDir\x12I\n" +
+	"\vimage_state\x18\f \x01(\x0e2(.device.ImageDownload.ImageActivateStateR\n" +
+	"imageState\x12\x1b\n" +
+	"\tfile_size\x18\r \x01(\rR\bfileSize\"\xb7\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\x06\"\x86\x01\n" +
+	"\x1aImageDownloadFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\r\n" +
+	"\tCANCELLED\x10\x05\"\x8c\x01\n" +
+	"\x12ImageActivateState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x13\n" +
+	"\x0fIMAGE_REVERTING\x10\x04\x12\x12\n" +
+	"\x0eIMAGE_REVERTED\x10\x05:\x02\x18\x01\"A\n" +
+	"\x0eImageDownloads\x12+\n" +
+	"\x05items\x18\x02 \x03(\v2\x15.device.ImageDownloadR\x05items:\x02\x18\x01\"-\n" +
+	"\x06Images\x12#\n" +
+	"\x05image\x18\x01 \x03(\v2\r.device.ImageR\x05image\"\xb0\x01\n" +
+	"\bOnuImage\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12\x1e\n" +
+	"\n" +
+	"isCommited\x18\x02 \x01(\bR\n" +
+	"isCommited\x12\x1a\n" +
+	"\bisActive\x18\x03 \x01(\bR\bisActive\x12\x18\n" +
+	"\aisValid\x18\x04 \x01(\bR\aisValid\x12 \n" +
+	"\vproductCode\x18\x05 \x01(\tR\vproductCode\x12\x12\n" +
+	"\x04hash\x18\x06 \x01(\tR\x04hash\"3\n" +
+	"\tOnuImages\x12&\n" +
+	"\x05items\x18\x01 \x03(\v2\x10.device.OnuImageR\x05items\"c\n" +
+	"\x10DeviceImageState\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x122\n" +
+	"\n" +
+	"imageState\x18\x02 \x01(\v2\x12.device.ImageStateR\n" +
+	"imageState\"\x82\b\n" +
+	"\n" +
+	"ImageState\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12L\n" +
+	"\x0edownload_state\x18\x02 \x01(\x0e2%.device.ImageState.ImageDownloadStateR\rdownloadState\x12=\n" +
+	"\x06reason\x18\x03 \x01(\x0e2%.device.ImageState.ImageFailureReasonR\x06reason\x12H\n" +
+	"\vimage_state\x18\x04 \x01(\x0e2'.device.ImageState.ImageActivationStateR\n" +
+	"imageState\"\xd0\x01\n" +
+	"\x12ImageDownloadState\x12\x14\n" +
+	"\x10DOWNLOAD_UNKNOWN\x10\x00\x12\x16\n" +
+	"\x12DOWNLOAD_SUCCEEDED\x10\x01\x12\x16\n" +
+	"\x12DOWNLOAD_REQUESTED\x10\x02\x12\x14\n" +
+	"\x10DOWNLOAD_STARTED\x10\x03\x12\x13\n" +
+	"\x0fDOWNLOAD_FAILED\x10\x04\x12\x18\n" +
+	"\x14DOWNLOAD_UNSUPPORTED\x10\x05\x12\x17\n" +
+	"\x13DOWNLOAD_CANCELLING\x10\x06\x12\x16\n" +
+	"\x12DOWNLOAD_CANCELLED\x10\a\"\xf4\x01\n" +
+	"\x12ImageFailureReason\x12\f\n" +
+	"\bNO_ERROR\x10\x00\x12\x0f\n" +
+	"\vINVALID_URL\x10\x01\x12\x0f\n" +
+	"\vDEVICE_BUSY\x10\x02\x12\x16\n" +
+	"\x12INSUFFICIENT_SPACE\x10\x03\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x04\x12\x18\n" +
+	"\x14CANCELLED_ON_REQUEST\x10\x05\x12\x1a\n" +
+	"\x16CANCELLED_ON_ONU_STATE\x10\x06\x12\x1a\n" +
+	"\x16VENDOR_DEVICE_MISMATCH\x10\a\x12\x17\n" +
+	"\x13OMCI_TRANSFER_ERROR\x10\b\x12\x18\n" +
+	"\x14IMAGE_REFUSED_BY_ONU\x10\t\"\xb8\x02\n" +
+	"\x14ImageActivationState\x12\x11\n" +
+	"\rIMAGE_UNKNOWN\x10\x00\x12\x12\n" +
+	"\x0eIMAGE_INACTIVE\x10\x01\x12\x14\n" +
+	"\x10IMAGE_ACTIVATING\x10\x02\x12\x10\n" +
+	"\fIMAGE_ACTIVE\x10\x03\x12\x14\n" +
+	"\x10IMAGE_COMMITTING\x10\x04\x12\x13\n" +
+	"\x0fIMAGE_COMMITTED\x10\x05\x12\x1d\n" +
+	"\x19IMAGE_ACTIVATION_ABORTING\x10\x06\x12\x1c\n" +
+	"\x18IMAGE_ACTIVATION_ABORTED\x10\a\x12\x19\n" +
+	"\x15IMAGE_COMMIT_ABORTING\x10\b\x12\x18\n" +
+	"\x14IMAGE_COMMIT_ABORTED\x10\t\x12\x15\n" +
+	"\x11IMAGE_DOWNLOADING\x10\n" +
+	"\x12\x1d\n" +
+	"\x19IMAGE_DOWNLOADING_ABORTED\x10\v\"\xb7\x05\n" +
+	"\x04Port\x12\x17\n" +
+	"\aport_no\x18\x01 \x01(\rR\x06portNo\x12\x14\n" +
+	"\x05label\x18\x02 \x01(\tR\x05label\x12)\n" +
+	"\x04type\x18\x03 \x01(\x0e2\x15.device.Port.PortTypeR\x04type\x129\n" +
+	"\vadmin_state\x18\x05 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x06 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x1b\n" +
+	"\tdevice_id\x18\a \x01(\tR\bdeviceId\x12+\n" +
+	"\x05peers\x18\b \x03(\v2\x15.device.Port.PeerPortR\x05peers\x12\x1d\n" +
+	"\n" +
+	"rx_packets\x18\t \x01(\x06R\trxPackets\x12\x19\n" +
+	"\brx_bytes\x18\n" +
+	" \x01(\x06R\arxBytes\x12\x1b\n" +
+	"\trx_errors\x18\v \x01(\x06R\brxErrors\x12\x1d\n" +
+	"\n" +
+	"tx_packets\x18\f \x01(\x06R\ttxPackets\x12\x19\n" +
+	"\btx_bytes\x18\r \x01(\x06R\atxBytes\x12\x1b\n" +
+	"\ttx_errors\x18\x0e \x01(\x06R\btxErrors\x120\n" +
+	"\bofp_port\x18\x0f \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x1a@\n" +
+	"\bPeerPort\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x17\n" +
+	"\aport_no\x18\x02 \x01(\rR\x06portNo\"s\n" +
+	"\bPortType\x12\v\n" +
+	"\aUNKNOWN\x10\x00\x12\x10\n" +
+	"\fETHERNET_NNI\x10\x01\x12\x10\n" +
+	"\fETHERNET_UNI\x10\x02\x12\v\n" +
+	"\aPON_OLT\x10\x03\x12\v\n" +
+	"\aPON_ONU\x10\x04\x12\r\n" +
+	"\tVENET_OLT\x10\x05\x12\r\n" +
+	"\tVENET_ONU\x10\x06\"+\n" +
+	"\x05Ports\x12\"\n" +
+	"\x05items\x18\x01 \x03(\v2\f.device.PortR\x05items\"\xd8\n" +
+	"\n" +
+	"\x06Device\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
+	"\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" +
+	"\x04root\x18\x03 \x01(\bR\x04root\x12\x1b\n" +
+	"\tparent_id\x18\x04 \x01(\tR\bparentId\x12$\n" +
+	"\x0eparent_port_no\x18\x14 \x01(\rR\fparentPortNo\x12\x16\n" +
+	"\x06vendor\x18\x05 \x01(\tR\x06vendor\x12\x14\n" +
+	"\x05model\x18\x06 \x01(\tR\x05model\x12)\n" +
+	"\x10hardware_version\x18\a \x01(\tR\x0fhardwareVersion\x12)\n" +
+	"\x10firmware_version\x18\b \x01(\tR\x0ffirmwareVersion\x12&\n" +
+	"\x06images\x18\t \x01(\v2\x0e.device.ImagesR\x06images\x12#\n" +
+	"\rserial_number\x18\n" +
+	" \x01(\tR\fserialNumber\x12\x1b\n" +
+	"\tvendor_id\x18\x18 \x01(\tR\bvendorId\x12)\n" +
+	"\x10adapter_endpoint\x18\x19 \x01(\tR\x0fadapterEndpoint\x12\x12\n" +
+	"\x04vlan\x18\f \x01(\rR\x04vlan\x12\x1f\n" +
+	"\vmac_address\x18\r \x01(\tR\n" +
+	"macAddress\x12#\n" +
+	"\fipv4_address\x18\x0e \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x0f \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x15 \x01(\tH\x00R\vhostAndPort\x12\x1d\n" +
+	"\n" +
+	"extra_args\x18\x17 \x01(\tR\textraArgs\x12@\n" +
+	"\rproxy_address\x18\x13 \x01(\v2\x1b.device.Device.ProxyAddressR\fproxyAddress\x129\n" +
+	"\vadmin_state\x18\x10 \x01(\x0e2\x18.common.AdminState.TypesR\n" +
+	"adminState\x129\n" +
+	"\voper_status\x18\x11 \x01(\x0e2\x18.common.OperStatus.TypesR\n" +
+	"operStatus\x12\x16\n" +
+	"\x06reason\x18\x16 \x01(\tR\x06reason\x12B\n" +
+	"\x0econnect_status\x18\x12 \x01(\x0e2\x1b.common.ConnectStatus.TypesR\rconnectStatus\x12,\n" +
+	"\x06custom\x18@ \x01(\v2\x14.google.protobuf.AnyR\x06custom\x121\n" +
+	"\n" +
+	"pm_configs\x18\x83\x01 \x01(\v2\x11.device.PmConfigsR\tpmConfigs\x12?\n" +
+	"\x0fimage_downloads\x18\x85\x01 \x03(\v2\x15.device.ImageDownloadR\x0eimageDownloads\x1a\xae\x02\n" +
+	"\fProxyAddress\x12\x1b\n" +
+	"\tdevice_id\x18\x01 \x01(\tR\bdeviceId\x12\x1f\n" +
+	"\vdevice_type\x18\x02 \x01(\tR\n" +
+	"deviceType\x12\x1d\n" +
+	"\n" +
+	"channel_id\x18\x03 \x01(\rR\tchannelId\x12(\n" +
+	"\x10channel_group_id\x18\x04 \x01(\rR\x0echannelGroupId\x12/\n" +
+	"\x13channel_termination\x18\x05 \x01(\tR\x12channelTermination\x12\x15\n" +
+	"\x06onu_id\x18\x06 \x01(\rR\x05onuId\x12$\n" +
+	"\x0eonu_session_id\x18\a \x01(\rR\fonuSessionId\x12)\n" +
+	"\x10adapter_endpoint\x18\b \x01(\tR\x0fadapterEndpointB\t\n" +
+	"\aaddressJ\x04\b\v\x10\f\"\xc2\x01\n" +
+	"\x1aDeviceImageDownloadRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12#\n" +
+	"\x05image\x18\x02 \x01(\v2\r.device.ImageR\x05image\x12,\n" +
+	"\x11activateOnSuccess\x18\x03 \x01(\bR\x11activateOnSuccess\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x04 \x01(\bR\x0fcommitOnSuccess\"\x81\x01\n" +
+	"\x12DeviceImageRequest\x12'\n" +
+	"\tdevice_id\x18\x01 \x03(\v2\n" +
+	".common.IDR\bdeviceId\x12\x18\n" +
+	"\aversion\x18\x02 \x01(\tR\aversion\x12(\n" +
+	"\x0fcommitOnSuccess\x18\x03 \x01(\bR\x0fcommitOnSuccess\"_\n" +
+	"\x13DeviceImageResponse\x12H\n" +
+	"\x13device_image_states\x18\x01 \x03(\v2\x18.device.DeviceImageStateR\x11deviceImageStates\"\xa5\x01\n" +
+	"\x10SelfTestResponse\x12?\n" +
+	"\x06result\x18\x01 \x01(\x0e2'.device.SelfTestResponse.SelfTestResultR\x06result\"P\n" +
+	"\x0eSelfTestResult\x12\v\n" +
+	"\aSUCCESS\x10\x00\x12\v\n" +
+	"\aFAILURE\x10\x01\x12\x11\n" +
+	"\rNOT_SUPPORTED\x10\x02\x12\x11\n" +
+	"\rUNKNOWN_ERROR\x10\x03\"/\n" +
+	"\aDevices\x12$\n" +
+	"\x05items\x18\x01 \x03(\v2\x0e.device.DeviceR\x05items\"\xa8\x03\n" +
+	"\x14SimulateAlarmRequest\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1c\n" +
+	"\tindicator\x18\x02 \x01(\tR\tindicator\x12\x17\n" +
+	"\aintf_id\x18\x03 \x01(\tR\x06intfId\x12$\n" +
+	"\x0eport_type_name\x18\x04 \x01(\tR\fportTypeName\x12\"\n" +
+	"\ronu_device_id\x18\x05 \x01(\tR\vonuDeviceId\x123\n" +
+	"\x16inverse_bit_error_rate\x18\x06 \x01(\x05R\x13inverseBitErrorRate\x12\x14\n" +
+	"\x05drift\x18\a \x01(\x05R\x05drift\x12\x17\n" +
+	"\anew_eqd\x18\b \x01(\x05R\x06newEqd\x12*\n" +
+	"\x11onu_serial_number\x18\t \x01(\tR\x0fonuSerialNumber\x12H\n" +
+	"\toperation\x18\n" +
+	" \x01(\x0e2*.device.SimulateAlarmRequest.OperationTypeR\toperation\"%\n" +
+	"\rOperationType\x12\t\n" +
+	"\x05RAISE\x10\x00\x12\t\n" +
+	"\x05CLEAR\x10\x01\"\x90\x01\n" +
+	"\x17OnuSerialNumberOnOLTPon\x12.\n" +
+	"\rolt_device_id\x18\x01 \x01(\v2\n" +
+	".common.IDR\voltDeviceId\x12 \n" +
+	"\x04port\x18\x02 \x01(\v2\f.device.PortR\x04port\x12#\n" +
+	"\rserial_number\x18\x03 \x01(\tR\fserialNumber\"\x99\x01\n" +
+	"\fUpdateDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12#\n" +
+	"\fipv4_address\x18\x02 \x01(\tH\x00R\vipv4Address\x12#\n" +
+	"\fipv6_address\x18\x03 \x01(\tH\x00R\vipv6Address\x12$\n" +
+	"\rhost_and_port\x18\x04 \x01(\tH\x00R\vhostAndPortB\t\n" +
+	"\aaddressBZ\n" +
+	"\x1aorg.opencord.voltha.deviceB\fVolthaDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_device_proto_rawDescData
+}
+
+var file_voltha_protos_device_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
+var file_voltha_protos_device_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_voltha_protos_device_proto_goTypes = []any{
+	(PmConfig_PmType)(0),                          // 0: device.PmConfig.PmType
+	(ImageDownload_ImageDownloadState)(0),         // 1: device.ImageDownload.ImageDownloadState
+	(ImageDownload_ImageDownloadFailureReason)(0), // 2: device.ImageDownload.ImageDownloadFailureReason
+	(ImageDownload_ImageActivateState)(0),         // 3: device.ImageDownload.ImageActivateState
+	(ImageState_ImageDownloadState)(0),            // 4: device.ImageState.ImageDownloadState
+	(ImageState_ImageFailureReason)(0),            // 5: device.ImageState.ImageFailureReason
+	(ImageState_ImageActivationState)(0),          // 6: device.ImageState.ImageActivationState
+	(Port_PortType)(0),                            // 7: device.Port.PortType
+	(SelfTestResponse_SelfTestResult)(0),          // 8: device.SelfTestResponse.SelfTestResult
+	(SimulateAlarmRequest_OperationType)(0),       // 9: device.SimulateAlarmRequest.OperationType
+	(*DeviceType)(nil),                            // 10: device.DeviceType
+	(*DeviceTypes)(nil),                           // 11: device.DeviceTypes
+	(*PmConfig)(nil),                              // 12: device.PmConfig
+	(*PmGroupConfig)(nil),                         // 13: device.PmGroupConfig
+	(*PmConfigs)(nil),                             // 14: device.PmConfigs
+	(*Image)(nil),                                 // 15: device.Image
+	(*ImageDownload)(nil),                         // 16: device.ImageDownload
+	(*ImageDownloads)(nil),                        // 17: device.ImageDownloads
+	(*Images)(nil),                                // 18: device.Images
+	(*OnuImage)(nil),                              // 19: device.OnuImage
+	(*OnuImages)(nil),                             // 20: device.OnuImages
+	(*DeviceImageState)(nil),                      // 21: device.DeviceImageState
+	(*ImageState)(nil),                            // 22: device.ImageState
+	(*Port)(nil),                                  // 23: device.Port
+	(*Ports)(nil),                                 // 24: device.Ports
+	(*Device)(nil),                                // 25: device.Device
+	(*DeviceImageDownloadRequest)(nil),            // 26: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                    // 27: device.DeviceImageRequest
+	(*DeviceImageResponse)(nil),                   // 28: device.DeviceImageResponse
+	(*SelfTestResponse)(nil),                      // 29: device.SelfTestResponse
+	(*Devices)(nil),                               // 30: device.Devices
+	(*SimulateAlarmRequest)(nil),                  // 31: device.SimulateAlarmRequest
+	(*OnuSerialNumberOnOLTPon)(nil),               // 32: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                          // 33: device.UpdateDevice
+	(*Port_PeerPort)(nil),                         // 34: device.Port.PeerPort
+	(*Device_ProxyAddress)(nil),                   // 35: device.Device.ProxyAddress
+	(common.AdminState_Types)(0),                  // 36: common.AdminState.Types
+	(common.OperStatus_Types)(0),                  // 37: common.OperStatus.Types
+	(*openflow_13.OfpPort)(nil),                   // 38: openflow_13.ofp_port
+	(common.ConnectStatus_Types)(0),               // 39: common.ConnectStatus.Types
+	(*anypb.Any)(nil),                             // 40: google.protobuf.Any
+	(*common.ID)(nil),                             // 41: common.ID
+}
+var file_voltha_protos_device_proto_depIdxs = []int32{
+	10, // 0: device.DeviceTypes.items:type_name -> device.DeviceType
+	0,  // 1: device.PmConfig.type:type_name -> device.PmConfig.PmType
+	12, // 2: device.PmGroupConfig.metrics:type_name -> device.PmConfig
+	13, // 3: device.PmConfigs.groups:type_name -> device.PmGroupConfig
+	12, // 4: device.PmConfigs.metrics:type_name -> device.PmConfig
+	1,  // 5: device.ImageDownload.download_state:type_name -> device.ImageDownload.ImageDownloadState
+	2,  // 6: device.ImageDownload.reason:type_name -> device.ImageDownload.ImageDownloadFailureReason
+	3,  // 7: device.ImageDownload.image_state:type_name -> device.ImageDownload.ImageActivateState
+	16, // 8: device.ImageDownloads.items:type_name -> device.ImageDownload
+	15, // 9: device.Images.image:type_name -> device.Image
+	19, // 10: device.OnuImages.items:type_name -> device.OnuImage
+	22, // 11: device.DeviceImageState.imageState:type_name -> device.ImageState
+	4,  // 12: device.ImageState.download_state:type_name -> device.ImageState.ImageDownloadState
+	5,  // 13: device.ImageState.reason:type_name -> device.ImageState.ImageFailureReason
+	6,  // 14: device.ImageState.image_state:type_name -> device.ImageState.ImageActivationState
+	7,  // 15: device.Port.type:type_name -> device.Port.PortType
+	36, // 16: device.Port.admin_state:type_name -> common.AdminState.Types
+	37, // 17: device.Port.oper_status:type_name -> common.OperStatus.Types
+	34, // 18: device.Port.peers:type_name -> device.Port.PeerPort
+	38, // 19: device.Port.ofp_port:type_name -> openflow_13.ofp_port
+	23, // 20: device.Ports.items:type_name -> device.Port
+	18, // 21: device.Device.images:type_name -> device.Images
+	35, // 22: device.Device.proxy_address:type_name -> device.Device.ProxyAddress
+	36, // 23: device.Device.admin_state:type_name -> common.AdminState.Types
+	37, // 24: device.Device.oper_status:type_name -> common.OperStatus.Types
+	39, // 25: device.Device.connect_status:type_name -> common.ConnectStatus.Types
+	40, // 26: device.Device.custom:type_name -> google.protobuf.Any
+	14, // 27: device.Device.pm_configs:type_name -> device.PmConfigs
+	16, // 28: device.Device.image_downloads:type_name -> device.ImageDownload
+	41, // 29: device.DeviceImageDownloadRequest.device_id:type_name -> common.ID
+	15, // 30: device.DeviceImageDownloadRequest.image:type_name -> device.Image
+	41, // 31: device.DeviceImageRequest.device_id:type_name -> common.ID
+	21, // 32: device.DeviceImageResponse.device_image_states:type_name -> device.DeviceImageState
+	8,  // 33: device.SelfTestResponse.result:type_name -> device.SelfTestResponse.SelfTestResult
+	25, // 34: device.Devices.items:type_name -> device.Device
+	9,  // 35: device.SimulateAlarmRequest.operation:type_name -> device.SimulateAlarmRequest.OperationType
+	41, // 36: device.OnuSerialNumberOnOLTPon.olt_device_id:type_name -> common.ID
+	23, // 37: device.OnuSerialNumberOnOLTPon.port:type_name -> device.Port
+	38, // [38:38] is the sub-list for method output_type
+	38, // [38:38] is the sub-list for method input_type
+	38, // [38:38] is the sub-list for extension type_name
+	38, // [38:38] is the sub-list for extension extendee
+	0,  // [0:38] is the sub-list for field type_name
+}
+
+func init() { file_voltha_protos_device_proto_init() }
+func file_voltha_protos_device_proto_init() {
+	if File_voltha_protos_device_proto != nil {
+		return
+	}
+	file_voltha_protos_device_proto_msgTypes[15].OneofWrappers = []any{
+		(*Device_Ipv4Address)(nil),
+		(*Device_Ipv6Address)(nil),
+		(*Device_HostAndPort)(nil),
+	}
+	file_voltha_protos_device_proto_msgTypes[23].OneofWrappers = []any{
 		(*UpdateDevice_Ipv4Address)(nil),
 		(*UpdateDevice_Ipv6Address)(nil),
 		(*UpdateDevice_HostAndPort)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterEnum("device.PmConfig_PmType", PmConfig_PmType_name, PmConfig_PmType_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadState", ImageDownload_ImageDownloadState_name, ImageDownload_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageDownload_ImageDownloadFailureReason", ImageDownload_ImageDownloadFailureReason_name, ImageDownload_ImageDownloadFailureReason_value)
-	proto.RegisterEnum("device.ImageDownload_ImageActivateState", ImageDownload_ImageActivateState_name, ImageDownload_ImageActivateState_value)
-	proto.RegisterEnum("device.ImageState_ImageDownloadState", ImageState_ImageDownloadState_name, ImageState_ImageDownloadState_value)
-	proto.RegisterEnum("device.ImageState_ImageFailureReason", ImageState_ImageFailureReason_name, ImageState_ImageFailureReason_value)
-	proto.RegisterEnum("device.ImageState_ImageActivationState", ImageState_ImageActivationState_name, ImageState_ImageActivationState_value)
-	proto.RegisterEnum("device.Port_PortType", Port_PortType_name, Port_PortType_value)
-	proto.RegisterEnum("device.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
-	proto.RegisterEnum("device.SimulateAlarmRequest_OperationType", SimulateAlarmRequest_OperationType_name, SimulateAlarmRequest_OperationType_value)
-	proto.RegisterType((*DeviceType)(nil), "device.DeviceType")
-	proto.RegisterType((*DeviceTypes)(nil), "device.DeviceTypes")
-	proto.RegisterType((*PmConfig)(nil), "device.PmConfig")
-	proto.RegisterType((*PmGroupConfig)(nil), "device.PmGroupConfig")
-	proto.RegisterType((*PmConfigs)(nil), "device.PmConfigs")
-	proto.RegisterType((*Image)(nil), "device.Image")
-	proto.RegisterType((*ImageDownload)(nil), "device.ImageDownload")
-	proto.RegisterType((*ImageDownloads)(nil), "device.ImageDownloads")
-	proto.RegisterType((*Images)(nil), "device.Images")
-	proto.RegisterType((*OnuImage)(nil), "device.OnuImage")
-	proto.RegisterType((*OnuImages)(nil), "device.OnuImages")
-	proto.RegisterType((*DeviceImageState)(nil), "device.DeviceImageState")
-	proto.RegisterType((*ImageState)(nil), "device.ImageState")
-	proto.RegisterType((*Port)(nil), "device.Port")
-	proto.RegisterType((*Port_PeerPort)(nil), "device.Port.PeerPort")
-	proto.RegisterType((*Ports)(nil), "device.Ports")
-	proto.RegisterType((*Device)(nil), "device.Device")
-	proto.RegisterType((*Device_ProxyAddress)(nil), "device.Device.ProxyAddress")
-	proto.RegisterType((*DeviceImageDownloadRequest)(nil), "device.DeviceImageDownloadRequest")
-	proto.RegisterType((*DeviceImageRequest)(nil), "device.DeviceImageRequest")
-	proto.RegisterType((*DeviceImageResponse)(nil), "device.DeviceImageResponse")
-	proto.RegisterType((*SelfTestResponse)(nil), "device.SelfTestResponse")
-	proto.RegisterType((*Devices)(nil), "device.Devices")
-	proto.RegisterType((*SimulateAlarmRequest)(nil), "device.SimulateAlarmRequest")
-	proto.RegisterType((*OnuSerialNumberOnOLTPon)(nil), "device.OnuSerialNumberOnOLTPon")
-	proto.RegisterType((*UpdateDevice)(nil), "device.UpdateDevice")
-}
-
-func init() { proto.RegisterFile("voltha_protos/device.proto", fileDescriptor_200940f73d155856) }
-
-var fileDescriptor_200940f73d155856 = []byte{
-	// 2938 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4b, 0x6f, 0x1b, 0xc9,
-	0xf1, 0x37, 0x49, 0xf1, 0x31, 0xc5, 0x87, 0x46, 0x2d, 0xc9, 0x1e, 0x4b, 0xeb, 0xbf, 0xbd, 0xe3,
-	0x7d, 0xc8, 0xeb, 0x5d, 0x69, 0xd7, 0xfe, 0x67, 0x37, 0x09, 0x10, 0xac, 0x29, 0x72, 0x64, 0x31,
-	0x91, 0x87, 0xca, 0x90, 0xd4, 0x66, 0xf7, 0x32, 0x18, 0x71, 0x9a, 0xd2, 0xc0, 0xc3, 0x69, 0x7a,
-	0x66, 0x28, 0xc9, 0x7b, 0x4b, 0x82, 0xe4, 0x14, 0x20, 0x01, 0x72, 0xca, 0x07, 0x08, 0x90, 0x53,
-	0x90, 0xdb, 0xe6, 0x18, 0xe4, 0x13, 0xe4, 0x98, 0x73, 0x2e, 0xf9, 0x00, 0xc9, 0x07, 0x08, 0xfa,
-	0x35, 0x0f, 0x4a, 0xf2, 0x7a, 0x83, 0x20, 0xc8, 0x85, 0x98, 0xfe, 0x55, 0x75, 0x75, 0x77, 0x75,
-	0xd7, 0xaf, 0xab, 0x9a, 0xb0, 0x71, 0x46, 0xfc, 0xf8, 0xd4, 0xb1, 0x67, 0x21, 0x89, 0x49, 0xb4,
-	0xe3, 0xe2, 0x33, 0x6f, 0x8c, 0xb7, 0x59, 0x0b, 0x55, 0x78, 0x6b, 0xe3, 0xf6, 0x09, 0x21, 0x27,
-	0x3e, 0xde, 0x61, 0xe8, 0xf1, 0x7c, 0xb2, 0xe3, 0x04, 0x2f, 0xb9, 0xca, 0xc6, 0x42, 0xf7, 0x31,
-	0x99, 0x4e, 0x49, 0x20, 0x64, 0x77, 0xf3, 0x32, 0x32, 0xc3, 0xc1, 0xc4, 0x27, 0xe7, 0xf6, 0x47,
-	0x8f, 0xb9, 0x82, 0xfe, 0xb7, 0x22, 0x40, 0x97, 0x0d, 0x31, 0x7c, 0x39, 0xc3, 0xa8, 0x05, 0x45,
-	0xcf, 0xd5, 0x0a, 0xf7, 0x0a, 0x5b, 0x8a, 0x55, 0xf4, 0x5c, 0xb4, 0x09, 0xca, 0x19, 0x0e, 0x5c,
-	0x12, 0xda, 0x9e, 0xab, 0x95, 0x19, 0x5c, 0xe3, 0x40, 0xcf, 0x45, 0x77, 0x00, 0x12, 0x61, 0xa4,
-	0x55, 0xee, 0x95, 0xb6, 0x14, 0x4b, 0x91, 0xd2, 0x08, 0x69, 0x50, 0x75, 0x5c, 0x67, 0x16, 0xe3,
-	0x50, 0x2b, 0xb2, 0x9e, 0xb2, 0x89, 0x3e, 0x01, 0xcd, 0x19, 0x8f, 0xf1, 0x2c, 0x8e, 0xec, 0xe3,
-	0xb9, 0xff, 0xdc, 0x66, 0x53, 0x9a, 0xcf, 0x5c, 0x27, 0xc6, 0x5a, 0xe9, 0x5e, 0x61, 0xab, 0x66,
-	0xad, 0x0b, 0xf9, 0xee, 0xdc, 0x7f, 0xbe, 0xe7, 0x93, 0xf3, 0x11, 0x13, 0xa2, 0x2e, 0xdc, 0x95,
-	0x1d, 0x1d, 0xd7, 0xb5, 0x43, 0x3c, 0x25, 0x67, 0x38, 0xdb, 0x3d, 0xd2, 0x96, 0x58, 0xff, 0x4d,
-	0xa1, 0xd6, 0x76, 0x5d, 0x8b, 0x29, 0xa5, 0x46, 0x22, 0x74, 0x00, 0xf7, 0xa5, 0x15, 0xd7, 0x0b,
-	0xf1, 0x38, 0xb6, 0x7d, 0x72, 0xe2, 0x8d, 0x1d, 0x9f, 0x59, 0x8a, 0xe4, 0x4c, 0xaa, 0xcc, 0x92,
-	0x1c, 0xb0, 0xcb, 0x34, 0x0f, 0xb8, 0x22, 0xb5, 0x16, 0x89, 0x39, 0xbd, 0x09, 0x0d, 0xb1, 0x2e,
-	0x3b, 0x7e, 0x39, 0xc3, 0x5a, 0x8d, 0xad, 0xb5, 0x2e, 0x30, 0xea, 0x55, 0xfd, 0x13, 0xa8, 0xa7,
-	0x3e, 0x8e, 0xd0, 0x16, 0x94, 0xbd, 0x18, 0x4f, 0x23, 0xad, 0x70, 0xaf, 0xb4, 0x55, 0x7f, 0x84,
-	0xb6, 0xc5, 0x8e, 0xa7, 0x3a, 0x16, 0x57, 0xd0, 0xff, 0x54, 0x80, 0xda, 0xe1, 0xb4, 0x43, 0x82,
-	0x89, 0x77, 0x82, 0x10, 0x2c, 0x05, 0xce, 0x14, 0x8b, 0xdd, 0x61, 0xdf, 0xe8, 0x21, 0x2c, 0xb1,
-	0x41, 0xa9, 0x83, 0x5b, 0x8f, 0x6e, 0x49, 0x4b, 0xb2, 0xcf, 0xf6, 0xe1, 0x94, 0x99, 0x63, 0x4a,
-	0x74, 0x43, 0x70, 0xe0, 0x1c, 0xfb, 0xd8, 0x15, 0x5e, 0x96, 0x4d, 0x74, 0x17, 0xea, 0x91, 0x33,
-	0x9d, 0xf9, 0xd8, 0x9e, 0x84, 0xf8, 0x05, 0xf3, 0x61, 0xd3, 0x02, 0x0e, 0xed, 0x85, 0xf8, 0x85,
-	0xfe, 0x6d, 0xa8, 0x70, 0x53, 0xa8, 0x0e, 0xd5, 0x4e, 0x7f, 0x64, 0x0e, 0x0d, 0x4b, 0xbd, 0x81,
-	0x14, 0x28, 0x3f, 0x6d, 0x8f, 0x9e, 0x1a, 0x6a, 0x81, 0x7e, 0x0e, 0x86, 0xed, 0xa1, 0xa1, 0x16,
-	0xb9, 0x8a, 0x39, 0x34, 0x7e, 0x34, 0x54, 0x4b, 0xfa, 0xaf, 0x0b, 0xd0, 0x3c, 0x9c, 0x3e, 0x0d,
-	0xc9, 0x7c, 0x26, 0xd6, 0x71, 0x07, 0xe0, 0x84, 0x36, 0xed, 0xcc, 0x6a, 0x14, 0x86, 0x98, 0x74,
-	0x49, 0x89, 0x98, 0x4d, 0xa5, 0xc8, 0xa6, 0xc2, 0xc5, 0x74, 0x26, 0xaf, 0x58, 0xc4, 0x7b, 0x50,
-	0x9d, 0xe2, 0x38, 0xf4, 0xc6, 0xf4, 0x10, 0x50, 0xc7, 0xaa, 0x8b, 0xee, 0xb0, 0xa4, 0x82, 0xfe,
-	0x8f, 0x02, 0x28, 0x12, 0x8d, 0x2e, 0x9d, 0xfa, 0x37, 0xa1, 0xe1, 0xe2, 0x89, 0x33, 0xf7, 0xe3,
-	0xec, 0x24, 0xea, 0x02, 0x93, 0xd3, 0x60, 0x73, 0x4a, 0xa7, 0x21, 0x9a, 0xe8, 0x3e, 0x34, 0x69,
-	0x27, 0x9b, 0x9c, 0xe1, 0x30, 0xf4, 0x5c, 0x2c, 0x4e, 0x64, 0x83, 0x82, 0x7d, 0x81, 0xa1, 0x0f,
-	0xa0, 0xc2, 0xf4, 0x23, 0xad, 0xcc, 0xa6, 0xba, 0x9e, 0x4e, 0x35, 0xe3, 0x2a, 0x4b, 0x28, 0x65,
-	0x97, 0x56, 0xf9, 0x9a, 0xa5, 0xa1, 0xdb, 0x50, 0x9b, 0x3a, 0x17, 0x76, 0xf4, 0x1c, 0x9f, 0xb3,
-	0x23, 0xdc, 0xb4, 0xaa, 0x53, 0xe7, 0x62, 0xf0, 0x1c, 0x9f, 0xeb, 0xbf, 0x2c, 0x42, 0xb9, 0x37,
-	0x75, 0x4e, 0xf0, 0x95, 0x67, 0x49, 0x83, 0xea, 0x19, 0x0e, 0x23, 0x8f, 0x04, 0x32, 0x5e, 0x45,
-	0x93, 0x6a, 0x9f, 0x3a, 0xd1, 0x29, 0x5b, 0x69, 0xd3, 0x62, 0xdf, 0xe8, 0x01, 0xa8, 0x5e, 0x10,
-	0xc5, 0x8e, 0xef, 0xdb, 0x34, 0x0c, 0x62, 0x6f, 0xca, 0x57, 0xaa, 0x58, 0xcb, 0x02, 0xef, 0x0a,
-	0x98, 0x92, 0x88, 0x17, 0xd9, 0xce, 0x38, 0xf6, 0xce, 0x30, 0x23, 0x91, 0x9a, 0x55, 0xf3, 0xa2,
-	0x36, 0x6b, 0x53, 0x5f, 0x7b, 0x91, 0x4d, 0x49, 0xcb, 0x8b, 0x63, 0xec, 0x6a, 0x15, 0x26, 0xaf,
-	0x7b, 0x51, 0x47, 0x42, 0x74, 0x45, 0x5e, 0x64, 0x9f, 0x39, 0xbe, 0xe7, 0x8a, 0xa0, 0xac, 0x7a,
-	0xd1, 0x11, 0x6d, 0x22, 0x15, 0x4a, 0xf3, 0xd0, 0x17, 0x31, 0x47, 0x3f, 0xd1, 0x4d, 0xa8, 0x70,
-	0x0a, 0xd2, 0x14, 0x06, 0x8a, 0x16, 0x5a, 0x83, 0xf2, 0x38, 0x1c, 0x3f, 0x7e, 0xa4, 0x01, 0x5b,
-	0x04, 0x6f, 0xe8, 0x7f, 0xaf, 0x42, 0x93, 0x79, 0xa4, 0x4b, 0xce, 0x03, 0x9f, 0x38, 0xee, 0xa5,
-	0xb3, 0x20, 0x3d, 0x55, 0xcc, 0x78, 0x4a, 0x8c, 0x5a, 0x4a, 0x47, 0x55, 0xa1, 0x34, 0x0e, 0xc7,
-	0x22, 0x70, 0xe8, 0x27, 0xea, 0x43, 0xcb, 0x15, 0x36, 0xed, 0x28, 0xa6, 0x7c, 0x52, 0x66, 0x31,
-	0xba, 0x25, 0x77, 0x2e, 0x37, 0x6c, 0xbe, 0x35, 0xa0, 0xfa, 0x56, 0xd3, 0xcd, 0x36, 0xe9, 0xb9,
-	0xf2, 0xa8, 0x92, 0x2d, 0x37, 0xa9, 0xc2, 0x86, 0x6f, 0x30, 0xf0, 0x48, 0xec, 0xd4, 0x03, 0x50,
-	0x65, 0x2f, 0xec, 0xda, 0xc7, 0x2f, 0x29, 0x23, 0xf2, 0x43, 0xb0, 0x9c, 0xe2, 0xbb, 0x14, 0x46,
-	0xfb, 0x50, 0x09, 0xb1, 0x13, 0x91, 0x80, 0x79, 0xaf, 0xf5, 0xe8, 0xc3, 0xd7, 0x98, 0xd8, 0x9e,
-	0xe3, 0xf9, 0xf3, 0x10, 0x5b, 0xac, 0x9f, 0x25, 0xfa, 0xa3, 0x77, 0x61, 0xd9, 0x71, 0x5d, 0x2f,
-	0xf6, 0x48, 0xe0, 0xf8, 0xb6, 0x17, 0x4c, 0x88, 0xf0, 0x7d, 0x2b, 0x85, 0x7b, 0xc1, 0x84, 0x70,
-	0x9a, 0x39, 0xc3, 0xf6, 0x98, 0x1d, 0x59, 0xb6, 0x13, 0x35, 0x4a, 0x33, 0x67, 0x58, 0x50, 0xc3,
-	0x26, 0x28, 0x3e, 0xa1, 0x44, 0xec, 0x7a, 0xa1, 0x56, 0xe7, 0xd7, 0x0d, 0x03, 0xba, 0x5e, 0x88,
-	0x7a, 0x50, 0xe7, 0x0e, 0xe0, 0xee, 0x6c, 0x7c, 0xad, 0x3b, 0xd9, 0x09, 0x73, 0x62, 0xcc, 0xdd,
-	0x09, 0xac, 0x33, 0xf7, 0xe5, 0x26, 0x28, 0x13, 0xcf, 0xc7, 0x76, 0xe4, 0x7d, 0x89, 0xb5, 0x26,
-	0xf3, 0x4f, 0x8d, 0x02, 0x03, 0xef, 0x4b, 0xac, 0x7f, 0x55, 0x00, 0x74, 0x79, 0x3b, 0xd0, 0x1a,
-	0xa8, 0xdd, 0xfe, 0x67, 0xe6, 0x41, 0xbf, 0xdd, 0xb5, 0x47, 0xe6, 0x0f, 0xcc, 0xfe, 0x67, 0xa6,
-	0x7a, 0x03, 0xdd, 0x04, 0x94, 0xa0, 0x83, 0x51, 0xa7, 0x63, 0x18, 0x5d, 0xa3, 0xab, 0x16, 0x72,
-	0xb8, 0x65, 0xfc, 0x70, 0x64, 0x0c, 0x86, 0x46, 0x57, 0x2d, 0xe6, 0xac, 0x0c, 0x86, 0x6d, 0x8b,
-	0xa2, 0x25, 0xb4, 0x0a, 0xcb, 0x09, 0xba, 0xd7, 0xee, 0x1d, 0x18, 0x5d, 0x75, 0x09, 0x69, 0xb0,
-	0x96, 0x19, 0x70, 0x30, 0x3a, 0x3c, 0xec, 0x33, 0xf5, 0x72, 0xce, 0x78, 0xa7, 0x6d, 0x76, 0x8c,
-	0x03, 0xda, 0xa3, 0xa2, 0xff, 0xbc, 0x00, 0x1b, 0xd7, 0xef, 0x17, 0x6a, 0x40, 0xcd, 0xec, 0xdb,
-	0x86, 0x65, 0xf5, 0x29, 0x77, 0x2f, 0x43, 0xbd, 0x67, 0x1e, 0xb5, 0x0f, 0x7a, 0x5d, 0x7b, 0x64,
-	0x1d, 0xa8, 0x05, 0x0a, 0x74, 0x8d, 0xa3, 0x5e, 0xc7, 0xb0, 0x77, 0x47, 0x83, 0xcf, 0xd5, 0x22,
-	0x1d, 0xa6, 0x67, 0x0e, 0x46, 0x7b, 0x7b, 0xbd, 0x4e, 0xcf, 0x30, 0x87, 0xf6, 0xe0, 0xb0, 0xdd,
-	0x31, 0xd4, 0x12, 0x5a, 0x81, 0xa6, 0x70, 0x80, 0x30, 0xb6, 0x84, 0x9a, 0xa0, 0xa4, 0x13, 0x29,
-	0xeb, 0xbf, 0x90, 0x2e, 0xcc, 0x6d, 0x01, 0xed, 0xd8, 0x7b, 0xd6, 0x7e, 0x6a, 0x64, 0xfc, 0x87,
-	0xa0, 0xc5, 0xa1, 0x9e, 0xd9, 0xee, 0x0c, 0x7b, 0x47, 0xf4, 0x2a, 0x59, 0x03, 0x95, 0x63, 0x0c,
-	0x69, 0x0f, 0x7b, 0xe6, 0x53, 0xb5, 0x88, 0x54, 0x68, 0x64, 0x50, 0x83, 0x7b, 0x8d, 0x23, 0x96,
-	0x71, 0x64, 0x58, 0x4c, 0x6d, 0x29, 0x35, 0xc8, 0x41, 0x3a, 0x9d, 0xef, 0x16, 0xb5, 0x82, 0xde,
-	0x86, 0x56, 0xce, 0x35, 0x11, 0x7a, 0x28, 0xaf, 0xe1, 0x62, 0x9e, 0x82, 0x73, 0x6a, 0xe2, 0x26,
-	0x66, 0x26, 0x3e, 0x80, 0x0a, 0x93, 0x45, 0xe8, 0x3e, 0x94, 0xd9, 0x69, 0x12, 0x37, 0x78, 0x33,
-	0xd7, 0xd5, 0xe2, 0x32, 0xfd, 0x0f, 0x05, 0xa8, 0xf5, 0x83, 0x39, 0x27, 0xdc, 0x0c, 0xb9, 0x16,
-	0xf2, 0xe4, 0xfa, 0x7f, 0x00, 0x92, 0xec, 0xb0, 0xcb, 0x68, 0xa6, 0x66, 0x65, 0x10, 0xb4, 0x01,
-	0x09, 0x59, 0x8a, 0xab, 0x26, 0x25, 0x4f, 0x0d, 0x24, 0x13, 0x8a, 0x5b, 0x26, 0x21, 0xc6, 0x7b,
-	0x50, 0x9f, 0x85, 0xc4, 0x9d, 0x8f, 0xe3, 0x0e, 0x71, 0xb1, 0x48, 0xdd, 0xb2, 0x50, 0x42, 0xea,
-	0x9c, 0x46, 0xd8, 0xb7, 0xfe, 0x18, 0x14, 0x39, 0xe3, 0x08, 0xbd, 0x93, 0x4f, 0x53, 0x92, 0x2b,
-	0x47, 0x6a, 0xc8, 0x24, 0x65, 0x0c, 0x2a, 0xcf, 0x5c, 0x7a, 0xb9, 0x00, 0xe3, 0xda, 0x76, 0x42,
-	0xa6, 0x35, 0x0e, 0xf4, 0x5c, 0xf4, 0x08, 0x32, 0xb1, 0xc8, 0x56, 0x9c, 0x49, 0x82, 0x52, 0x23,
-	0xd9, 0x88, 0xd5, 0x7f, 0x52, 0x03, 0xc8, 0xd8, 0xbf, 0xde, 0x9d, 0x07, 0x97, 0x78, 0x97, 0xe7,
-	0x46, 0x6f, 0x5f, 0x1e, 0xe0, 0x35, 0x48, 0xf7, 0x7b, 0x09, 0x49, 0x96, 0x5e, 0x6d, 0xe5, 0x6a,
-	0x66, 0xdc, 0xcf, 0x53, 0xd6, 0x12, 0xb3, 0xf1, 0xee, 0x75, 0x36, 0x44, 0xb0, 0x78, 0x24, 0xb8,
-	0xbc, 0xfe, 0xbf, 0xfc, 0xcf, 0x93, 0xd2, 0x2d, 0x58, 0x5d, 0x24, 0x25, 0x1a, 0x91, 0x95, 0x6b,
-	0xd8, 0xaa, 0xaa, 0xff, 0x53, 0x2e, 0xe9, 0xbf, 0xc6, 0x52, 0x1a, 0xac, 0x25, 0x13, 0xb0, 0xfb,
-	0xa6, 0xf4, 0x81, 0x5a, 0x46, 0x1b, 0x70, 0x33, 0x27, 0xe9, 0x9b, 0x23, 0x9b, 0xa7, 0xb3, 0x15,
-	0x2a, 0x3b, 0x32, 0xcc, 0x6e, 0xdf, 0xb2, 0xc5, 0xc0, 0xcf, 0x7a, 0x83, 0x67, 0xed, 0x61, 0x67,
-	0x5f, 0xad, 0xd2, 0x45, 0xf7, 0x9f, 0x75, 0x7a, 0xf6, 0xd0, 0x6a, 0x9b, 0x83, 0x3d, 0xc3, 0x12,
-	0x43, 0xd5, 0xe8, 0x50, 0x92, 0x86, 0xf6, 0x46, 0x03, 0xa3, 0x6b, 0xef, 0x7e, 0x4e, 0x8d, 0xaa,
-	0x8a, 0xfe, 0xc7, 0x22, 0xac, 0x5d, 0xb5, 0xdd, 0xff, 0x69, 0x76, 0x4c, 0xf4, 0x3a, 0xfd, 0x67,
-	0xcf, 0x7a, 0x43, 0x41, 0x8f, 0x09, 0x67, 0x0a, 0x94, 0x6d, 0xdd, 0x1d, 0xb8, 0x9d, 0x37, 0xd9,
-	0x37, 0xed, 0xf6, 0x6e, 0x9f, 0x53, 0x6a, 0x05, 0xbd, 0x01, 0xda, 0xd5, 0x62, 0xba, 0x8d, 0xe8,
-	0x36, 0xac, 0x67, 0x2d, 0xa6, 0x1d, 0x33, 0x4e, 0xc8, 0x8a, 0x8c, 0xae, 0xaa, 0xa0, 0x75, 0x58,
-	0xe1, 0x12, 0x79, 0x32, 0x68, 0x07, 0x48, 0x27, 0x92, 0x81, 0x93, 0x5e, 0x75, 0xfd, 0xab, 0x32,
-	0x2c, 0x1d, 0x92, 0x30, 0x46, 0xb7, 0xa0, 0x3a, 0x23, 0x61, 0x6c, 0x07, 0x84, 0x85, 0x7f, 0xd3,
-	0xaa, 0xd0, 0xa6, 0x49, 0x68, 0x96, 0xe7, 0x3b, 0xc7, 0xd8, 0x17, 0xe9, 0x1a, 0x6f, 0xa0, 0x07,
-	0xa2, 0x4a, 0xe2, 0x31, 0x9c, 0xe6, 0xda, 0x24, 0x8c, 0xd9, 0x4f, 0xa6, 0x46, 0xfa, 0x0e, 0xd4,
-	0x1d, 0x77, 0xea, 0x05, 0xb9, 0x9c, 0x4d, 0xdb, 0x16, 0x45, 0x75, 0x9b, 0x8a, 0x78, 0xc4, 0xb2,
-	0x52, 0xce, 0x02, 0x27, 0x41, 0x68, 0x57, 0x32, 0xc3, 0x21, 0xeb, 0x39, 0x8f, 0x18, 0xaf, 0x66,
-	0xba, 0xf6, 0x67, 0x38, 0x1c, 0x30, 0x89, 0xec, 0x4a, 0x12, 0x24, 0x4f, 0x97, 0xd5, 0x05, 0xba,
-	0x7c, 0x08, 0xe5, 0x19, 0xc6, 0x61, 0xa4, 0xd5, 0x16, 0x4a, 0x05, 0x36, 0x7d, 0x8c, 0x43, 0xfa,
-	0x61, 0x71, 0x1d, 0x5a, 0x3d, 0x85, 0x17, 0xf6, 0xcc, 0x19, 0x3f, 0xc7, 0x71, 0xc4, 0xd2, 0xb0,
-	0x8a, 0xa5, 0x84, 0x17, 0x87, 0x1c, 0xa0, 0xa9, 0x74, 0x78, 0x21, 0xf2, 0x42, 0x60, 0xc2, 0x6a,
-	0x78, 0xc1, 0xf3, 0xc1, 0x4d, 0x50, 0xc2, 0x0b, 0x1b, 0x87, 0x21, 0x09, 0x23, 0x96, 0x7b, 0x55,
-	0xac, 0x5a, 0x78, 0x61, 0xb0, 0x36, 0x35, 0x1b, 0xa7, 0x66, 0x1b, 0xdc, 0x6c, 0x9c, 0x35, 0x1b,
-	0x4b, 0xb3, 0x4d, 0x6e, 0x36, 0x4e, 0xcd, 0xc6, 0x89, 0xd9, 0x16, 0x37, 0x1b, 0x4b, 0xb3, 0x1f,
-	0x42, 0x8d, 0x4c, 0x66, 0x36, 0xdd, 0x3c, 0x6d, 0x99, 0xdd, 0x03, 0xeb, 0xdb, 0xd9, 0x37, 0x0a,
-	0x29, 0xb4, 0xaa, 0x64, 0x32, 0xa3, 0xcb, 0xdc, 0x78, 0x02, 0x35, 0xb9, 0xe4, 0x57, 0x5f, 0x32,
-	0x99, 0x23, 0x52, 0xcc, 0x1e, 0x11, 0x3d, 0x82, 0x9a, 0xdc, 0x73, 0x5a, 0xa9, 0xa6, 0xc1, 0xa6,
-	0x42, 0xc3, 0x18, 0xee, 0x1b, 0x96, 0x69, 0x0c, 0x6d, 0xd3, 0xec, 0xa9, 0x85, 0x1c, 0x32, 0x32,
-	0x7b, 0xbc, 0xb4, 0x3d, 0xa4, 0xf4, 0x70, 0x30, 0x54, 0x4b, 0x49, 0xc3, 0x1c, 0xf1, 0x0c, 0xe8,
-	0xc8, 0xa0, 0x8a, 0x54, 0x56, 0xce, 0x34, 0xcd, 0x91, 0x5a, 0xd1, 0x1f, 0x42, 0x99, 0x0e, 0x1a,
-	0x21, 0x3d, 0x7f, 0xa9, 0x36, 0xb2, 0x9b, 0x29, 0x2f, 0xd4, 0xbf, 0x02, 0x54, 0xf8, 0x8d, 0x7a,
-	0x55, 0x35, 0x92, 0xd4, 0xfb, 0x8a, 0x38, 0xb2, 0x08, 0x96, 0x42, 0x42, 0x62, 0x91, 0x1c, 0xb0,
-	0x6f, 0xea, 0x9a, 0x99, 0x13, 0xe2, 0x20, 0xb6, 0x45, 0x6a, 0xa0, 0x58, 0x35, 0x0e, 0xf4, 0x5c,
-	0xf4, 0x16, 0xb4, 0x84, 0x50, 0x7a, 0x68, 0x8d, 0x79, 0xa8, 0xc1, 0xd1, 0x43, 0x1e, 0x4a, 0x69,
-	0x21, 0x55, 0x5e, 0x2c, 0xa4, 0xa6, 0xc4, 0xc5, 0xbe, 0x48, 0x1c, 0x78, 0x83, 0x16, 0x1e, 0xa7,
-	0x4e, 0xe8, 0x9e, 0x3b, 0x61, 0x5a, 0xa0, 0xf0, 0x83, 0xbc, 0x2c, 0xf1, 0x4c, 0x8d, 0x32, 0xf1,
-	0xc2, 0x69, 0x4e, 0x95, 0x17, 0x70, 0xcb, 0x12, 0x97, 0xaa, 0xef, 0x40, 0x85, 0xdd, 0x81, 0xfc,
-	0x24, 0xd7, 0x1f, 0xb5, 0x72, 0x57, 0x67, 0x64, 0x09, 0x29, 0xad, 0x8d, 0x22, 0x1c, 0x7a, 0x8e,
-	0x6f, 0x07, 0xf3, 0xe9, 0x31, 0x0e, 0xd9, 0xd9, 0x56, 0xac, 0x06, 0x07, 0x4d, 0x86, 0xe5, 0xdf,
-	0xb2, 0xb4, 0x85, 0xb7, 0xac, 0x07, 0xa0, 0xca, 0x57, 0x1c, 0x1c, 0xb8, 0x33, 0xe2, 0x05, 0xb1,
-	0x76, 0x9b, 0x4f, 0x4a, 0xe0, 0x86, 0x80, 0xa9, 0xbf, 0xcf, 0x7c, 0x27, 0x60, 0x51, 0xd0, 0xb4,
-	0xd8, 0x37, 0xad, 0x6c, 0xa6, 0xce, 0xd8, 0x76, 0x5c, 0x37, 0xc4, 0x11, 0x8f, 0x01, 0xc5, 0x82,
-	0xa9, 0x33, 0x6e, 0x73, 0x04, 0xdd, 0x87, 0x86, 0x37, 0x3b, 0xfb, 0xff, 0x44, 0x83, 0x46, 0x82,
-	0xb2, 0x7f, 0xc3, 0xaa, 0x53, 0x34, 0xaf, 0xf4, 0x71, 0xa2, 0xb4, 0x9c, 0x51, 0xfa, 0x58, 0x2a,
-	0xbd, 0x05, 0xcd, 0x53, 0x12, 0xc5, 0xb6, 0x13, 0xb8, 0x3c, 0x70, 0xd6, 0xa5, 0x16, 0x85, 0xdb,
-	0x81, 0xcb, 0x62, 0xe3, 0x0e, 0x00, 0xbe, 0x88, 0x43, 0xc7, 0x76, 0xc2, 0x93, 0x48, 0xbb, 0xc5,
-	0x1f, 0x59, 0x18, 0xd2, 0x0e, 0x4f, 0x22, 0xf4, 0x04, 0x9a, 0xb3, 0x90, 0x5c, 0xbc, 0x4c, 0x86,
-	0x5a, 0x65, 0xfe, 0xdd, 0xcc, 0x3f, 0x45, 0x6d, 0x1f, 0x52, 0x1d, 0x31, 0xb0, 0xd5, 0x98, 0x65,
-	0x5a, 0x8b, 0x44, 0xa9, 0xfe, 0xfb, 0x44, 0xb9, 0xf2, 0x0d, 0x88, 0xf2, 0x66, 0x92, 0x8f, 0xdd,
-	0xe4, 0x87, 0x52, 0x24, 0x5a, 0xbb, 0xd0, 0x1a, 0x93, 0x20, 0xc0, 0xe3, 0x58, 0x5a, 0x45, 0xcc,
-	0xea, 0xa6, 0xb4, 0xda, 0xe1, 0xd2, 0x9c, 0xe1, 0xe6, 0x38, 0x0b, 0xa2, 0xf7, 0xa1, 0x32, 0x9e,
-	0x47, 0x31, 0x99, 0x6a, 0x4f, 0x98, 0x33, 0xd6, 0xb6, 0xf9, 0x9b, 0xeb, 0xb6, 0x7c, 0x73, 0xdd,
-	0x6e, 0x07, 0x2f, 0x2d, 0xa1, 0x83, 0x3e, 0x02, 0x98, 0x4d, 0x45, 0x25, 0x1b, 0x69, 0x3f, 0x2d,
-	0xb0, 0x2e, 0x2b, 0x8b, 0xcf, 0x32, 0x91, 0xa5, 0xcc, 0x92, 0x67, 0xa6, 0x4f, 0x61, 0x99, 0x67,
-	0x83, 0x32, 0xc7, 0x8c, 0xb4, 0x9f, 0x15, 0x5e, 0x55, 0x7b, 0xb4, 0xbc, 0x5c, 0xc5, 0xb2, 0xf1,
-	0xfb, 0x22, 0x34, 0xb2, 0x5b, 0xf2, 0x6a, 0x06, 0xbc, 0x0b, 0x75, 0x21, 0xcc, 0x50, 0x06, 0xb8,
-	0xe9, 0x63, 0xef, 0x1d, 0x80, 0xf1, 0xa9, 0x13, 0x04, 0xd8, 0xa7, 0xdd, 0xf9, 0xe3, 0x8e, 0x22,
-	0x90, 0x9e, 0x8b, 0xb6, 0x40, 0x95, 0x62, 0xfe, 0x20, 0x27, 0xa8, 0xa4, 0x69, 0xb5, 0x04, 0xce,
-	0x9e, 0xaa, 0x7a, 0x2e, 0xda, 0x81, 0x55, 0xa9, 0x19, 0xe3, 0x70, 0xea, 0x05, 0x2c, 0xab, 0x11,
-	0xbc, 0x81, 0x84, 0x68, 0x98, 0x4a, 0xd0, 0x3a, 0x54, 0x48, 0x30, 0xa7, 0x06, 0x2b, 0xfc, 0x35,
-	0x86, 0x04, 0x73, 0x4e, 0x4c, 0x14, 0x8e, 0x70, 0x44, 0xa3, 0x5f, 0xde, 0x85, 0x4d, 0xab, 0x41,
-	0x82, 0xf9, 0x80, 0x83, 0xd7, 0x84, 0x6a, 0xed, 0xca, 0x50, 0xdd, 0x55, 0xa0, 0x2a, 0x0e, 0xf8,
-	0xf7, 0x97, 0x6a, 0x75, 0xb5, 0xa1, 0xff, 0xb9, 0x00, 0x1b, 0x99, 0x62, 0x25, 0xf1, 0x34, 0x7e,
-	0x31, 0xc7, 0x51, 0x8c, 0xde, 0xcd, 0xfb, 0x93, 0x6e, 0x0d, 0xc8, 0x13, 0xd4, 0xeb, 0x66, 0x7c,
-	0x9b, 0x14, 0x80, 0xbc, 0x7a, 0xb9, 0xb2, 0x00, 0x44, 0xef, 0xc3, 0x8a, 0x23, 0xea, 0xdf, 0x7e,
-	0x30, 0x98, 0x8f, 0xc7, 0x34, 0xd0, 0x38, 0x4b, 0x5f, 0x16, 0xa0, 0x2d, 0x58, 0xe6, 0xaf, 0x60,
-	0xa9, 0x2e, 0xaf, 0xe9, 0x16, 0x61, 0xfd, 0xc7, 0x05, 0x40, 0x99, 0x45, 0x7c, 0xe3, 0xc9, 0x5f,
-	0xff, 0xd0, 0x77, 0xc5, 0x1c, 0x4a, 0x57, 0xcf, 0xc1, 0x86, 0xd5, 0xdc, 0x14, 0xa2, 0x19, 0x09,
-	0x22, 0x8c, 0xf6, 0x61, 0x55, 0xce, 0x21, 0xad, 0x7b, 0xe4, 0x65, 0xa7, 0xe5, 0xd9, 0x25, 0x53,
-	0xe9, 0xad, 0xb8, 0x0b, 0x48, 0xa4, 0xff, 0xb6, 0x00, 0xea, 0x00, 0xfb, 0x93, 0x21, 0x8e, 0xe2,
-	0xc4, 0xfc, 0xa7, 0x34, 0xfc, 0xa3, 0xb9, 0x1f, 0xb3, 0xc3, 0x9e, 0x29, 0xa5, 0x16, 0x35, 0xb3,
-	0xc0, 0xdc, 0x8f, 0x2d, 0xd1, 0x4d, 0x3f, 0x84, 0x56, 0x5e, 0x42, 0x2f, 0x71, 0x56, 0x22, 0x0d,
-	0x06, 0xea, 0x0d, 0xda, 0xa0, 0x95, 0xce, 0xc8, 0xa2, 0x89, 0xf6, 0x0a, 0x34, 0xcd, 0xfe, 0xd0,
-	0x4e, 0x6b, 0x9c, 0xe2, 0xe5, 0x9a, 0xa2, 0xa4, 0xef, 0x40, 0x95, 0x2f, 0x87, 0x32, 0x73, 0xee,
-	0x6e, 0x6f, 0xe5, 0x97, 0x2b, 0x6f, 0xf7, 0xdf, 0x95, 0x60, 0x6d, 0xe0, 0x4d, 0xe7, 0xbe, 0x13,
-	0xe3, 0xb6, 0xef, 0x84, 0x53, 0xb9, 0x7f, 0x8b, 0x77, 0xfd, 0x1b, 0xa0, 0x78, 0x81, 0xeb, 0x8d,
-	0x9d, 0x98, 0xc8, 0x7f, 0x50, 0x52, 0x80, 0xe6, 0x37, 0x5e, 0x10, 0x4f, 0x64, 0xe4, 0x2a, 0x56,
-	0x85, 0x36, 0xc5, 0xed, 0x4e, 0xaf, 0x75, 0x1a, 0xf4, 0xfc, 0x89, 0x9d, 0xdf, 0xff, 0x8d, 0x99,
-	0xc8, 0x7a, 0xd8, 0x2b, 0xbb, 0x0e, 0x4d, 0x1a, 0x6a, 0xe9, 0x81, 0x11, 0x2f, 0x04, 0x24, 0x98,
-	0x77, 0xe5, 0x39, 0x79, 0x0c, 0x37, 0xbd, 0x80, 0x1e, 0x0d, 0x6c, 0x1f, 0x7b, 0x31, 0xcf, 0xe1,
-	0xec, 0x90, 0xb2, 0x3d, 0x8d, 0xda, 0xb2, 0xb5, 0x2a, 0xa4, 0xbb, 0x5e, 0xcc, 0xf2, 0x39, 0x8b,
-	0x57, 0xa4, 0x65, 0x37, 0xf4, 0x26, 0x31, 0x0b, 0xdd, 0xb2, 0xc5, 0x1b, 0x74, 0xb6, 0x01, 0x3e,
-	0xb7, 0xf1, 0x0b, 0x97, 0x85, 0x6a, 0xd9, 0xaa, 0x04, 0xf8, 0xdc, 0x78, 0xe1, 0xa2, 0xf7, 0x60,
-	0x85, 0x87, 0x7c, 0xf6, 0xf6, 0xe6, 0xaf, 0x87, 0xcb, 0x2c, 0xea, 0x33, 0x17, 0xf8, 0x3e, 0x28,
-	0xf4, 0x2a, 0xe0, 0xe4, 0x02, 0xec, 0x00, 0xbc, 0x97, 0x1c, 0x80, 0x2b, 0x3c, 0xca, 0xae, 0x12,
-	0xa6, 0xcd, 0x12, 0xfc, 0xb4, 0xb3, 0xfe, 0x36, 0x34, 0x73, 0x32, 0xa4, 0x40, 0xd9, 0x6a, 0xf7,
-	0x06, 0x06, 0xff, 0x4f, 0xa3, 0x73, 0x60, 0xb4, 0x2d, 0xb5, 0xa0, 0xff, 0xaa, 0x00, 0xb7, 0xfa,
-	0xf9, 0x49, 0xf4, 0x83, 0xfe, 0xc1, 0xf0, 0x90, 0x04, 0x68, 0x1b, 0x9a, 0xc4, 0x8f, 0xed, 0x3c,
-	0xfd, 0xe6, 0x23, 0xae, 0x4e, 0xfc, 0x38, 0x71, 0xe6, 0x3d, 0x58, 0x62, 0xb7, 0x35, 0x27, 0x8c,
-	0x7c, 0xde, 0xc7, 0x24, 0x97, 0x93, 0x98, 0xd2, 0xe5, 0x24, 0x46, 0xff, 0x4d, 0x01, 0x1a, 0xfc,
-	0x8f, 0xa7, 0x6b, 0x32, 0xc4, 0xc5, 0x44, 0xa3, 0xf8, 0x3a, 0x89, 0x46, 0xe9, 0xb5, 0x12, 0x8d,
-	0xa5, 0x2b, 0x12, 0x8d, 0x0c, 0xc5, 0xee, 0x7e, 0x01, 0x1b, 0x24, 0x3c, 0x61, 0x09, 0xfc, 0x98,
-	0x84, 0xee, 0x36, 0xff, 0xef, 0x51, 0xac, 0x74, 0xb7, 0x71, 0xc4, 0x9a, 0x7c, 0xda, 0x5f, 0x6c,
-	0x9f, 0x78, 0xf1, 0xe9, 0xfc, 0x98, 0x7a, 0x6b, 0x47, 0x76, 0xd8, 0xe1, 0x1d, 0x3e, 0x10, 0x7f,
-	0x56, 0x9e, 0x7d, 0x6b, 0xe7, 0x84, 0x08, 0xec, 0xb8, 0xc2, 0xc0, 0xc7, 0xff, 0x0a, 0x00, 0x00,
-	0xff, 0xff, 0x7b, 0x3a, 0xcb, 0x63, 0x2c, 0x1d, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_device_proto_rawDesc), len(file_voltha_protos_device_proto_rawDesc)),
+			NumEnums:      10,
+			NumMessages:   26,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_device_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_device_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_device_proto = out.File
+	file_voltha_protos_device_proto_goTypes = nil
+	file_voltha_protos_device_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
index 13624b1..38bd8c3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/events.pb.go
@@ -1,27 +1,28 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/events.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type EventFilterRuleKey_EventFilterRuleType int32
 
@@ -34,83 +35,146 @@
 	EventFilterRuleKey_device_event_type EventFilterRuleKey_EventFilterRuleType = 5
 )
 
-var EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
-	0: "filter_all",
-	1: "category",
-	2: "sub_category",
-	3: "kpi_event_type",
-	4: "config_event_type",
-	5: "device_event_type",
-}
+// Enum value maps for EventFilterRuleKey_EventFilterRuleType.
+var (
+	EventFilterRuleKey_EventFilterRuleType_name = map[int32]string{
+		0: "filter_all",
+		1: "category",
+		2: "sub_category",
+		3: "kpi_event_type",
+		4: "config_event_type",
+		5: "device_event_type",
+	}
+	EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
+		"filter_all":        0,
+		"category":          1,
+		"sub_category":      2,
+		"kpi_event_type":    3,
+		"config_event_type": 4,
+		"device_event_type": 5,
+	}
+)
 
-var EventFilterRuleKey_EventFilterRuleType_value = map[string]int32{
-	"filter_all":        0,
-	"category":          1,
-	"sub_category":      2,
-	"kpi_event_type":    3,
-	"config_event_type": 4,
-	"device_event_type": 5,
+func (x EventFilterRuleKey_EventFilterRuleType) Enum() *EventFilterRuleKey_EventFilterRuleType {
+	p := new(EventFilterRuleKey_EventFilterRuleType)
+	*p = x
+	return p
 }
 
 func (x EventFilterRuleKey_EventFilterRuleType) String() string {
-	return proto.EnumName(EventFilterRuleKey_EventFilterRuleType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventFilterRuleKey_EventFilterRuleType) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[0].Descriptor()
+}
+
+func (EventFilterRuleKey_EventFilterRuleType) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[0]
+}
+
+func (x EventFilterRuleKey_EventFilterRuleType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventFilterRuleKey_EventFilterRuleType.Descriptor instead.
 func (EventFilterRuleKey_EventFilterRuleType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0, 0}
 }
 
 type ConfigEventType_Types int32
 
 const (
-	ConfigEventType_add    ConfigEventType_Types = 0
-	ConfigEventType_remove ConfigEventType_Types = 1
-	ConfigEventType_update ConfigEventType_Types = 2
+	ConfigEventType_add    ConfigEventType_Types = 0 // A new config has been added
+	ConfigEventType_remove ConfigEventType_Types = 1 // A config has been removed
+	ConfigEventType_update ConfigEventType_Types = 2 // A config has been updated
 )
 
-var ConfigEventType_Types_name = map[int32]string{
-	0: "add",
-	1: "remove",
-	2: "update",
-}
+// Enum value maps for ConfigEventType_Types.
+var (
+	ConfigEventType_Types_name = map[int32]string{
+		0: "add",
+		1: "remove",
+		2: "update",
+	}
+	ConfigEventType_Types_value = map[string]int32{
+		"add":    0,
+		"remove": 1,
+		"update": 2,
+	}
+)
 
-var ConfigEventType_Types_value = map[string]int32{
-	"add":    0,
-	"remove": 1,
-	"update": 2,
+func (x ConfigEventType_Types) Enum() *ConfigEventType_Types {
+	p := new(ConfigEventType_Types)
+	*p = x
+	return p
 }
 
 func (x ConfigEventType_Types) String() string {
-	return proto.EnumName(ConfigEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ConfigEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[1].Descriptor()
+}
+
+func (ConfigEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[1]
+}
+
+func (x ConfigEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ConfigEventType_Types.Descriptor instead.
 func (ConfigEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4, 0}
 }
 
 type KpiEventType_Types int32
 
 const (
-	KpiEventType_slice KpiEventType_Types = 0
-	KpiEventType_ts    KpiEventType_Types = 1
+	KpiEventType_slice KpiEventType_Types = 0 // slice: a set of path/metric data for same time-stamp
+	KpiEventType_ts    KpiEventType_Types = 1 // time-series: array of data for same metric
 )
 
-var KpiEventType_Types_name = map[int32]string{
-	0: "slice",
-	1: "ts",
-}
+// Enum value maps for KpiEventType_Types.
+var (
+	KpiEventType_Types_name = map[int32]string{
+		0: "slice",
+		1: "ts",
+	}
+	KpiEventType_Types_value = map[string]int32{
+		"slice": 0,
+		"ts":    1,
+	}
+)
 
-var KpiEventType_Types_value = map[string]int32{
-	"slice": 0,
-	"ts":    1,
+func (x KpiEventType_Types) Enum() *KpiEventType_Types {
+	p := new(KpiEventType_Types)
+	*p = x
+	return p
 }
 
 func (x KpiEventType_Types) String() string {
-	return proto.EnumName(KpiEventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (KpiEventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[2].Descriptor()
+}
+
+func (KpiEventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[2]
+}
+
+func (x KpiEventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use KpiEventType_Types.Descriptor instead.
 func (KpiEventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6, 0}
 }
 
 type EventCategory_Types int32
@@ -121,33 +185,54 @@
 	EventCategory_EQUIPMENT     EventCategory_Types = 2
 	EventCategory_SERVICE       EventCategory_Types = 3
 	EventCategory_PROCESSING    EventCategory_Types = 4
-	EventCategory_SECURITY      EventCategory_Types = 5
+	EventCategory_SECURITY      EventCategory_Types = 5 // Add new event areas here
 )
 
-var EventCategory_Types_name = map[int32]string{
-	0: "COMMUNICATION",
-	1: "ENVIRONMENT",
-	2: "EQUIPMENT",
-	3: "SERVICE",
-	4: "PROCESSING",
-	5: "SECURITY",
-}
+// Enum value maps for EventCategory_Types.
+var (
+	EventCategory_Types_name = map[int32]string{
+		0: "COMMUNICATION",
+		1: "ENVIRONMENT",
+		2: "EQUIPMENT",
+		3: "SERVICE",
+		4: "PROCESSING",
+		5: "SECURITY",
+	}
+	EventCategory_Types_value = map[string]int32{
+		"COMMUNICATION": 0,
+		"ENVIRONMENT":   1,
+		"EQUIPMENT":     2,
+		"SERVICE":       3,
+		"PROCESSING":    4,
+		"SECURITY":      5,
+	}
+)
 
-var EventCategory_Types_value = map[string]int32{
-	"COMMUNICATION": 0,
-	"ENVIRONMENT":   1,
-	"EQUIPMENT":     2,
-	"SERVICE":       3,
-	"PROCESSING":    4,
-	"SECURITY":      5,
+func (x EventCategory_Types) Enum() *EventCategory_Types {
+	p := new(EventCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventCategory_Types) String() string {
-	return proto.EnumName(EventCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[3].Descriptor()
+}
+
+func (EventCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[3]
+}
+
+func (x EventCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventCategory_Types.Descriptor instead.
 func (EventCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16, 0}
 }
 
 type EventSubCategory_Types int32
@@ -158,33 +243,54 @@
 	EventSubCategory_ONT  EventSubCategory_Types = 2
 	EventSubCategory_ONU  EventSubCategory_Types = 3
 	EventSubCategory_NNI  EventSubCategory_Types = 4
-	EventSubCategory_NONE EventSubCategory_Types = 5
+	EventSubCategory_NONE EventSubCategory_Types = 5 //Adding None for RPC Events
 )
 
-var EventSubCategory_Types_name = map[int32]string{
-	0: "PON",
-	1: "OLT",
-	2: "ONT",
-	3: "ONU",
-	4: "NNI",
-	5: "NONE",
-}
+// Enum value maps for EventSubCategory_Types.
+var (
+	EventSubCategory_Types_name = map[int32]string{
+		0: "PON",
+		1: "OLT",
+		2: "ONT",
+		3: "ONU",
+		4: "NNI",
+		5: "NONE",
+	}
+	EventSubCategory_Types_value = map[string]int32{
+		"PON":  0,
+		"OLT":  1,
+		"ONT":  2,
+		"ONU":  3,
+		"NNI":  4,
+		"NONE": 5,
+	}
+)
 
-var EventSubCategory_Types_value = map[string]int32{
-	"PON":  0,
-	"OLT":  1,
-	"ONT":  2,
-	"ONU":  3,
-	"NNI":  4,
-	"NONE": 5,
+func (x EventSubCategory_Types) Enum() *EventSubCategory_Types {
+	p := new(EventSubCategory_Types)
+	*p = x
+	return p
 }
 
 func (x EventSubCategory_Types) String() string {
-	return proto.EnumName(EventSubCategory_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventSubCategory_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[4].Descriptor()
+}
+
+func (EventSubCategory_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[4]
+}
+
+func (x EventSubCategory_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventSubCategory_Types.Descriptor instead.
 func (EventSubCategory_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{17, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17, 0}
 }
 
 type EventType_Types int32
@@ -198,752 +304,840 @@
 	EventType_KPI_EVENT3   EventType_Types = 5
 )
 
-var EventType_Types_name = map[int32]string{
-	0: "CONFIG_EVENT",
-	1: "KPI_EVENT",
-	2: "KPI_EVENT2",
-	3: "DEVICE_EVENT",
-	4: "RPC_EVENT",
-	5: "KPI_EVENT3",
-}
+// Enum value maps for EventType_Types.
+var (
+	EventType_Types_name = map[int32]string{
+		0: "CONFIG_EVENT",
+		1: "KPI_EVENT",
+		2: "KPI_EVENT2",
+		3: "DEVICE_EVENT",
+		4: "RPC_EVENT",
+		5: "KPI_EVENT3",
+	}
+	EventType_Types_value = map[string]int32{
+		"CONFIG_EVENT": 0,
+		"KPI_EVENT":    1,
+		"KPI_EVENT2":   2,
+		"DEVICE_EVENT": 3,
+		"RPC_EVENT":    4,
+		"KPI_EVENT3":   5,
+	}
+)
 
-var EventType_Types_value = map[string]int32{
-	"CONFIG_EVENT": 0,
-	"KPI_EVENT":    1,
-	"KPI_EVENT2":   2,
-	"DEVICE_EVENT": 3,
-	"RPC_EVENT":    4,
-	"KPI_EVENT3":   5,
+func (x EventType_Types) Enum() *EventType_Types {
+	p := new(EventType_Types)
+	*p = x
+	return p
 }
 
 func (x EventType_Types) String() string {
-	return proto.EnumName(EventType_Types_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (EventType_Types) Descriptor() protoreflect.EnumDescriptor {
+	return file_voltha_protos_events_proto_enumTypes[5].Descriptor()
+}
+
+func (EventType_Types) Type() protoreflect.EnumType {
+	return &file_voltha_protos_events_proto_enumTypes[5]
+}
+
+func (x EventType_Types) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use EventType_Types.Descriptor instead.
 func (EventType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{18, 0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18, 0}
 }
 
 type EventFilterRuleKey struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRuleKey) Reset()         { *m = EventFilterRuleKey{} }
-func (m *EventFilterRuleKey) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRuleKey) ProtoMessage()    {}
+func (x *EventFilterRuleKey) Reset() {
+	*x = EventFilterRuleKey{}
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRuleKey) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRuleKey) ProtoMessage() {}
+
+func (x *EventFilterRuleKey) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRuleKey.ProtoReflect.Descriptor instead.
 func (*EventFilterRuleKey) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{0}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *EventFilterRuleKey) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRuleKey.Unmarshal(m, b)
-}
-func (m *EventFilterRuleKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRuleKey.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRuleKey) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRuleKey.Merge(m, src)
-}
-func (m *EventFilterRuleKey) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRuleKey.Size(m)
-}
-func (m *EventFilterRuleKey) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRuleKey.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRuleKey proto.InternalMessageInfo
-
 type EventFilterRule struct {
-	Key                  EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
-	Value                string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
-	XXX_unrecognized     []byte                                 `json:"-"`
-	XXX_sizecache        int32                                  `json:"-"`
+	state         protoimpl.MessageState                 `protogen:"open.v1"`
+	Key           EventFilterRuleKey_EventFilterRuleType `protobuf:"varint,1,opt,name=key,proto3,enum=event.EventFilterRuleKey_EventFilterRuleType" json:"key,omitempty"`
+	Value         string                                 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilterRule) Reset()         { *m = EventFilterRule{} }
-func (m *EventFilterRule) String() string { return proto.CompactTextString(m) }
-func (*EventFilterRule) ProtoMessage()    {}
+func (x *EventFilterRule) Reset() {
+	*x = EventFilterRule{}
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilterRule) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilterRule) ProtoMessage() {}
+
+func (x *EventFilterRule) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilterRule.ProtoReflect.Descriptor instead.
 func (*EventFilterRule) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{1}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EventFilterRule) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilterRule.Unmarshal(m, b)
-}
-func (m *EventFilterRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilterRule.Marshal(b, m, deterministic)
-}
-func (m *EventFilterRule) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilterRule.Merge(m, src)
-}
-func (m *EventFilterRule) XXX_Size() int {
-	return xxx_messageInfo_EventFilterRule.Size(m)
-}
-func (m *EventFilterRule) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilterRule.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilterRule proto.InternalMessageInfo
-
-func (m *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
-	if m != nil {
-		return m.Key
+func (x *EventFilterRule) GetKey() EventFilterRuleKey_EventFilterRuleType {
+	if x != nil {
+		return x.Key
 	}
 	return EventFilterRuleKey_filter_all
 }
 
-func (m *EventFilterRule) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *EventFilterRule) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
 type EventFilter struct {
-	Id                   string             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	Enable               bool               `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
-	DeviceId             string             `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	EventType            string             `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
-	Rules                []*EventFilterRule `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Enable        bool                   `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`
+	DeviceId      string                 `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	EventType     string                 `protobuf:"bytes,4,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"`
+	Rules         []*EventFilterRule     `protobuf:"bytes,5,rep,name=rules,proto3" json:"rules,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilter) Reset()         { *m = EventFilter{} }
-func (m *EventFilter) String() string { return proto.CompactTextString(m) }
-func (*EventFilter) ProtoMessage()    {}
+func (x *EventFilter) Reset() {
+	*x = EventFilter{}
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilter) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilter) ProtoMessage() {}
+
+func (x *EventFilter) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilter.ProtoReflect.Descriptor instead.
 func (*EventFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{2}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *EventFilter) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilter.Unmarshal(m, b)
-}
-func (m *EventFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilter.Marshal(b, m, deterministic)
-}
-func (m *EventFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilter.Merge(m, src)
-}
-func (m *EventFilter) XXX_Size() int {
-	return xxx_messageInfo_EventFilter.Size(m)
-}
-func (m *EventFilter) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilter proto.InternalMessageInfo
-
-func (m *EventFilter) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventFilter) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEnable() bool {
-	if m != nil {
-		return m.Enable
+func (x *EventFilter) GetEnable() bool {
+	if x != nil {
+		return x.Enable
 	}
 	return false
 }
 
-func (m *EventFilter) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *EventFilter) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *EventFilter) GetEventType() string {
-	if m != nil {
-		return m.EventType
+func (x *EventFilter) GetEventType() string {
+	if x != nil {
+		return x.EventType
 	}
 	return ""
 }
 
-func (m *EventFilter) GetRules() []*EventFilterRule {
-	if m != nil {
-		return m.Rules
+func (x *EventFilter) GetRules() []*EventFilterRule {
+	if x != nil {
+		return x.Rules
 	}
 	return nil
 }
 
 type EventFilters struct {
-	Filters              []*EventFilter `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Filters       []*EventFilter         `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventFilters) Reset()         { *m = EventFilters{} }
-func (m *EventFilters) String() string { return proto.CompactTextString(m) }
-func (*EventFilters) ProtoMessage()    {}
+func (x *EventFilters) Reset() {
+	*x = EventFilters{}
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventFilters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventFilters) ProtoMessage() {}
+
+func (x *EventFilters) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventFilters.ProtoReflect.Descriptor instead.
 func (*EventFilters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{3}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *EventFilters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventFilters.Unmarshal(m, b)
-}
-func (m *EventFilters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventFilters.Marshal(b, m, deterministic)
-}
-func (m *EventFilters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventFilters.Merge(m, src)
-}
-func (m *EventFilters) XXX_Size() int {
-	return xxx_messageInfo_EventFilters.Size(m)
-}
-func (m *EventFilters) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventFilters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventFilters proto.InternalMessageInfo
-
-func (m *EventFilters) GetFilters() []*EventFilter {
-	if m != nil {
-		return m.Filters
+func (x *EventFilters) GetFilters() []*EventFilter {
+	if x != nil {
+		return x.Filters
 	}
 	return nil
 }
 
 type ConfigEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEventType) Reset()         { *m = ConfigEventType{} }
-func (m *ConfigEventType) String() string { return proto.CompactTextString(m) }
-func (*ConfigEventType) ProtoMessage()    {}
+func (x *ConfigEventType) Reset() {
+	*x = ConfigEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEventType) ProtoMessage() {}
+
+func (x *ConfigEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEventType.ProtoReflect.Descriptor instead.
 func (*ConfigEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{4}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ConfigEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConfigEventType.Unmarshal(m, b)
-}
-func (m *ConfigEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConfigEventType.Marshal(b, m, deterministic)
-}
-func (m *ConfigEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEventType.Merge(m, src)
-}
-func (m *ConfigEventType) XXX_Size() int {
-	return xxx_messageInfo_ConfigEventType.Size(m)
-}
-func (m *ConfigEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEventType proto.InternalMessageInfo
-
 type ConfigEvent struct {
-	Type                 ConfigEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
-	Hash                 string                `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
-	Data                 string                `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Type          ConfigEventType_Types  `protobuf:"varint,1,opt,name=type,proto3,enum=event.ConfigEventType_Types" json:"type,omitempty"`
+	Hash          string                 `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` // hash for this change, can be used for quick lookup
+	Data          string                 `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` // the actual new data, in json format
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *ConfigEvent) Reset()         { *m = ConfigEvent{} }
-func (m *ConfigEvent) String() string { return proto.CompactTextString(m) }
-func (*ConfigEvent) ProtoMessage()    {}
+func (x *ConfigEvent) Reset() {
+	*x = ConfigEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ConfigEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ConfigEvent) ProtoMessage() {}
+
+func (x *ConfigEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[5]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ConfigEvent.ProtoReflect.Descriptor instead.
 func (*ConfigEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{5}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *ConfigEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ConfigEvent.Unmarshal(m, b)
-}
-func (m *ConfigEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ConfigEvent.Marshal(b, m, deterministic)
-}
-func (m *ConfigEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ConfigEvent.Merge(m, src)
-}
-func (m *ConfigEvent) XXX_Size() int {
-	return xxx_messageInfo_ConfigEvent.Size(m)
-}
-func (m *ConfigEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ConfigEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigEvent proto.InternalMessageInfo
-
-func (m *ConfigEvent) GetType() ConfigEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *ConfigEvent) GetType() ConfigEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return ConfigEventType_add
 }
 
-func (m *ConfigEvent) GetHash() string {
-	if m != nil {
-		return m.Hash
+func (x *ConfigEvent) GetHash() string {
+	if x != nil {
+		return x.Hash
 	}
 	return ""
 }
 
-func (m *ConfigEvent) GetData() string {
-	if m != nil {
-		return m.Data
+func (x *ConfigEvent) GetData() string {
+	if x != nil {
+		return x.Data
 	}
 	return ""
 }
 
 type KpiEventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEventType) Reset()         { *m = KpiEventType{} }
-func (m *KpiEventType) String() string { return proto.CompactTextString(m) }
-func (*KpiEventType) ProtoMessage()    {}
+func (x *KpiEventType) Reset() {
+	*x = KpiEventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEventType) ProtoMessage() {}
+
+func (x *KpiEventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[6]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEventType.ProtoReflect.Descriptor instead.
 func (*KpiEventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{6}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *KpiEventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEventType.Unmarshal(m, b)
-}
-func (m *KpiEventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEventType.Marshal(b, m, deterministic)
-}
-func (m *KpiEventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEventType.Merge(m, src)
-}
-func (m *KpiEventType) XXX_Size() int {
-	return xxx_messageInfo_KpiEventType.Size(m)
-}
-func (m *KpiEventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEventType proto.InternalMessageInfo
-
-//
 // Struct to convey a dictionary of metric metadata.
 type MetricMetaData struct {
-	Title           string  `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
-	Ts              float64 `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	LogicalDeviceId string  `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"`
+	state           protoimpl.MessageState `protogen:"open.v1"`
+	Title           string                 `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`                                              // Metric group or individual metric name
+	Ts              float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`                                                  // UTC time-stamp of data (seconds since epoch) of
+	LogicalDeviceId string                 `protobuf:"bytes,3,opt,name=logical_device_id,json=logicalDeviceId,proto3" json:"logical_device_id,omitempty"` // The logical device ID of the VOLTHA
 	// (equivalent to the DPID that ONOS has
 	// for the VOLTHA device without the
-	//  'of:' prefix
-	SerialNo             string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`
-	DeviceId             string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	Context              map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	Uuid                 string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	//
+	//	'of:' prefix
+	SerialNo      string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`                                                         // The OLT, ONU, ... device serial number
+	DeviceId      string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`                                                         // The OLT, ONU, ... physical device ID
+	Context       map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Name value pairs that provide additional
+	Uuid          string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`                                                                                 // Transaction identifier used to match On
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricMetaData) Reset()         { *m = MetricMetaData{} }
-func (m *MetricMetaData) String() string { return proto.CompactTextString(m) }
-func (*MetricMetaData) ProtoMessage()    {}
+func (x *MetricMetaData) Reset() {
+	*x = MetricMetaData{}
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricMetaData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricMetaData) ProtoMessage() {}
+
+func (x *MetricMetaData) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[7]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricMetaData.ProtoReflect.Descriptor instead.
 func (*MetricMetaData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{7}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *MetricMetaData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricMetaData.Unmarshal(m, b)
-}
-func (m *MetricMetaData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricMetaData.Marshal(b, m, deterministic)
-}
-func (m *MetricMetaData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricMetaData.Merge(m, src)
-}
-func (m *MetricMetaData) XXX_Size() int {
-	return xxx_messageInfo_MetricMetaData.Size(m)
-}
-func (m *MetricMetaData) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricMetaData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricMetaData proto.InternalMessageInfo
-
-func (m *MetricMetaData) GetTitle() string {
-	if m != nil {
-		return m.Title
+func (x *MetricMetaData) GetTitle() string {
+	if x != nil {
+		return x.Title
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *MetricMetaData) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *MetricMetaData) GetLogicalDeviceId() string {
-	if m != nil {
-		return m.LogicalDeviceId
+func (x *MetricMetaData) GetLogicalDeviceId() string {
+	if x != nil {
+		return x.LogicalDeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetSerialNo() string {
-	if m != nil {
-		return m.SerialNo
+func (x *MetricMetaData) GetSerialNo() string {
+	if x != nil {
+		return x.SerialNo
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *MetricMetaData) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *MetricMetaData) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *MetricMetaData) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *MetricMetaData) GetUuid() string {
-	if m != nil {
-		return m.Uuid
+func (x *MetricMetaData) GetUuid() string {
+	if x != nil {
+		return x.Uuid
 	}
 	return ""
 }
 
-//
 // Struct to convey a dictionary of metric->value pairs. Typically used in
 // pure shared-timestamp or shared-timestamp + shared object prefix situations.
 type MetricValuePairs struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Metric / value pairs.
-	Metrics              map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Metrics       map[string]float32 `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricValuePairs) Reset()         { *m = MetricValuePairs{} }
-func (m *MetricValuePairs) String() string { return proto.CompactTextString(m) }
-func (*MetricValuePairs) ProtoMessage()    {}
+func (x *MetricValuePairs) Reset() {
+	*x = MetricValuePairs{}
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricValuePairs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricValuePairs) ProtoMessage() {}
+
+func (x *MetricValuePairs) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricValuePairs.ProtoReflect.Descriptor instead.
 func (*MetricValuePairs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{8}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *MetricValuePairs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricValuePairs.Unmarshal(m, b)
-}
-func (m *MetricValuePairs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricValuePairs.Marshal(b, m, deterministic)
-}
-func (m *MetricValuePairs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricValuePairs.Merge(m, src)
-}
-func (m *MetricValuePairs) XXX_Size() int {
-	return xxx_messageInfo_MetricValuePairs.Size(m)
-}
-func (m *MetricValuePairs) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricValuePairs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricValuePairs proto.InternalMessageInfo
-
-func (m *MetricValuePairs) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricValuePairs) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Struct to group metadata for a metric (or group of metrics) with the key-value
 // pairs of collected metrics
 type MetricInformation struct {
-	Metadata             *MetricMetaData    `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	Metrics              map[string]float32 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float32     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricInformation) Reset()         { *m = MetricInformation{} }
-func (m *MetricInformation) String() string { return proto.CompactTextString(m) }
-func (*MetricInformation) ProtoMessage()    {}
+func (x *MetricInformation) Reset() {
+	*x = MetricInformation{}
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation) ProtoMessage() {}
+
+func (x *MetricInformation) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation.ProtoReflect.Descriptor instead.
 func (*MetricInformation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{9}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *MetricInformation) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricInformation.Unmarshal(m, b)
-}
-func (m *MetricInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricInformation.Marshal(b, m, deterministic)
-}
-func (m *MetricInformation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricInformation.Merge(m, src)
-}
-func (m *MetricInformation) XXX_Size() int {
-	return xxx_messageInfo_MetricInformation.Size(m)
-}
-func (m *MetricInformation) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricInformation.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricInformation proto.InternalMessageInfo
-
-func (m *MetricInformation) GetMetadata() *MetricMetaData {
-	if m != nil {
-		return m.Metadata
+func (x *MetricInformation) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *MetricInformation) GetMetrics() map[string]float32 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricInformation) GetMetrics() map[string]float32 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Struct to group metadata for a metric (or group of metrics) with the key-value
-// pairs of collected metrics using 64-bit unsigned integers.
-// This is used for counters that can exceed the precision of float (e.g., FEC, GEM counters).
+// pairs of collected metrics using 64-bit double precision floating point.
+// This supports both floating-point metrics and large integer counters up to 2^53
+// (e.g., FEC counters, GEM counters, optical power levels).
 type MetricInformation64 struct {
-	Metadata             *MetricMetaData   `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	Metrics              map[string]uint64 `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Metadata      *MetricMetaData        `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Metrics       map[string]float64     `protobuf:"bytes,2,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *MetricInformation64) Reset()         { *m = MetricInformation64{} }
-func (m *MetricInformation64) String() string { return proto.CompactTextString(m) }
-func (*MetricInformation64) ProtoMessage()    {}
+func (x *MetricInformation64) Reset() {
+	*x = MetricInformation64{}
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *MetricInformation64) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetricInformation64) ProtoMessage() {}
+
+func (x *MetricInformation64) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetricInformation64.ProtoReflect.Descriptor instead.
 func (*MetricInformation64) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{10}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *MetricInformation64) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetricInformation64.Unmarshal(m, b)
-}
-func (m *MetricInformation64) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetricInformation64.Marshal(b, m, deterministic)
-}
-func (m *MetricInformation64) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricInformation64.Merge(m, src)
-}
-func (m *MetricInformation64) XXX_Size() int {
-	return xxx_messageInfo_MetricInformation64.Size(m)
-}
-func (m *MetricInformation64) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetricInformation64.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetricInformation64 proto.InternalMessageInfo
-
-func (m *MetricInformation64) GetMetadata() *MetricMetaData {
-	if m != nil {
-		return m.Metadata
+func (x *MetricInformation64) GetMetadata() *MetricMetaData {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *MetricInformation64) GetMetrics() map[string]uint64 {
-	if m != nil {
-		return m.Metrics
+func (x *MetricInformation64) GetMetrics() map[string]float64 {
+	if x != nil {
+		return x.Metrics
 	}
 	return nil
 }
 
-//
 // Legacy KPI Event structured.  In mid-August, the KPI event format was updated
-//                               to a more easily parsable format. See VOL-1140
-//                               for more information.
+//
+//	to a more easily parsable format. See VOL-1140
+//	for more information.
 type KpiEvent struct {
-	Type                 KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
-	Ts                   float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	Prefixes             map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	state         protoimpl.MessageState       `protogen:"open.v1"`
+	Type          KpiEventType_Types           `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
+	Ts            float32                      `protobuf:"fixed32,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoc)
+	Prefixes      map[string]*MetricValuePairs `protobuf:"bytes,3,rep,name=prefixes,proto3" json:"prefixes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent) Reset()         { *m = KpiEvent{} }
-func (m *KpiEvent) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent) ProtoMessage()    {}
+func (x *KpiEvent) Reset() {
+	*x = KpiEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent) ProtoMessage() {}
+
+func (x *KpiEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[11]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent.ProtoReflect.Descriptor instead.
 func (*KpiEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{11}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *KpiEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent.Unmarshal(m, b)
-}
-func (m *KpiEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent.Merge(m, src)
-}
-func (m *KpiEvent) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent.Size(m)
-}
-func (m *KpiEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent proto.InternalMessageInfo
-
-func (m *KpiEvent) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent) GetTs() float32 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent) GetTs() float32 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
-	if m != nil {
-		return m.Prefixes
+func (x *KpiEvent) GetPrefixes() map[string]*MetricValuePairs {
+	if x != nil {
+		return x.Prefixes
 	}
 	return nil
 }
 
 type KpiEvent2 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Type of KPI Event
 	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
 	// Fields used when for slice:
-	Ts                   float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	SliceData            []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Ts            float64              `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent2) Reset()         { *m = KpiEvent2{} }
-func (m *KpiEvent2) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent2) ProtoMessage()    {}
+func (x *KpiEvent2) Reset() {
+	*x = KpiEvent2{}
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent2) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent2) ProtoMessage() {}
+
+func (x *KpiEvent2) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[12]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent2.ProtoReflect.Descriptor instead.
 func (*KpiEvent2) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{12}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *KpiEvent2) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent2.Unmarshal(m, b)
-}
-func (m *KpiEvent2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent2.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent2) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent2.Merge(m, src)
-}
-func (m *KpiEvent2) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent2.Size(m)
-}
-func (m *KpiEvent2) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent2.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent2 proto.InternalMessageInfo
-
-func (m *KpiEvent2) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent2) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent2) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent2) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent2) GetSliceData() []*MetricInformation {
-	if m != nil {
-		return m.SliceData
+func (x *KpiEvent2) GetSliceData() []*MetricInformation {
+	if x != nil {
+		return x.SliceData
 	}
 	return nil
 }
 
-//
 // KpiEvent3 with support for 64-bit unsigned integer counters.
 // Use this for metrics that require full 64-bit precision (e.g., FEC counters, GEM counters).
 type KpiEvent3 struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Type of KPI Event
 	Type KpiEventType_Types `protobuf:"varint,1,opt,name=type,proto3,enum=event.KpiEventType_Types" json:"type,omitempty"`
 	// Fields used when for slice:
-	Ts                   float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"`
-	SliceData            []*MetricInformation64 `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	Ts            float64                `protobuf:"fixed64,2,opt,name=ts,proto3" json:"ts,omitempty"` // UTC time-stamp of data in slice mode (seconds since epoch)
+	SliceData     []*MetricInformation64 `protobuf:"bytes,3,rep,name=slice_data,json=sliceData,proto3" json:"slice_data,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *KpiEvent3) Reset()         { *m = KpiEvent3{} }
-func (m *KpiEvent3) String() string { return proto.CompactTextString(m) }
-func (*KpiEvent3) ProtoMessage()    {}
+func (x *KpiEvent3) Reset() {
+	*x = KpiEvent3{}
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *KpiEvent3) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KpiEvent3) ProtoMessage() {}
+
+func (x *KpiEvent3) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[13]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use KpiEvent3.ProtoReflect.Descriptor instead.
 func (*KpiEvent3) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{13}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *KpiEvent3) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KpiEvent3.Unmarshal(m, b)
-}
-func (m *KpiEvent3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KpiEvent3.Marshal(b, m, deterministic)
-}
-func (m *KpiEvent3) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KpiEvent3.Merge(m, src)
-}
-func (m *KpiEvent3) XXX_Size() int {
-	return xxx_messageInfo_KpiEvent3.Size(m)
-}
-func (m *KpiEvent3) XXX_DiscardUnknown() {
-	xxx_messageInfo_KpiEvent3.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KpiEvent3 proto.InternalMessageInfo
-
-func (m *KpiEvent3) GetType() KpiEventType_Types {
-	if m != nil {
-		return m.Type
+func (x *KpiEvent3) GetType() KpiEventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return KpiEventType_slice
 }
 
-func (m *KpiEvent3) GetTs() float64 {
-	if m != nil {
-		return m.Ts
+func (x *KpiEvent3) GetTs() float64 {
+	if x != nil {
+		return x.Ts
 	}
 	return 0
 }
 
-func (m *KpiEvent3) GetSliceData() []*MetricInformation64 {
-	if m != nil {
-		return m.SliceData
+func (x *KpiEvent3) GetSliceData() []*MetricInformation64 {
+	if x != nil {
+		return x.SliceData
 	}
 	return nil
 }
 
-//
 // Describes the events specific to device
 type DeviceEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Identifier of the originating resource of the event, for ex: device_id
 	ResourceId string `protobuf:"bytes,1,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"`
 	// device_event_name indicates clearly the name of the device event
@@ -951,68 +1145,72 @@
 	// Textual explanation of the device event
 	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context              map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Context       map[string]string `protobuf:"bytes,4,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *DeviceEvent) Reset()         { *m = DeviceEvent{} }
-func (m *DeviceEvent) String() string { return proto.CompactTextString(m) }
-func (*DeviceEvent) ProtoMessage()    {}
+func (x *DeviceEvent) Reset() {
+	*x = DeviceEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *DeviceEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeviceEvent) ProtoMessage() {}
+
+func (x *DeviceEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[14]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeviceEvent.ProtoReflect.Descriptor instead.
 func (*DeviceEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{14}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *DeviceEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeviceEvent.Unmarshal(m, b)
-}
-func (m *DeviceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeviceEvent.Marshal(b, m, deterministic)
-}
-func (m *DeviceEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeviceEvent.Merge(m, src)
-}
-func (m *DeviceEvent) XXX_Size() int {
-	return xxx_messageInfo_DeviceEvent.Size(m)
-}
-func (m *DeviceEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeviceEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeviceEvent proto.InternalMessageInfo
-
-func (m *DeviceEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *DeviceEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDeviceEventName() string {
-	if m != nil {
-		return m.DeviceEventName
+func (x *DeviceEvent) GetDeviceEventName() string {
+	if x != nil {
+		return x.DeviceEventName
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *DeviceEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *DeviceEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *DeviceEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-//
 // Describes the events specific to an RPC request
 type RPCEvent struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// RPC name
 	Rpc string `protobuf:"bytes,1,opt,name=rpc,proto3" json:"rpc,omitempty"`
 	// The operation id of that request.  Can be a log correlation ID
@@ -1026,197 +1224,213 @@
 	// Textual explanation of the event
 	Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
 	// Key/Value storage for extra information that may give context to the event
-	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Context map[string]string `protobuf:"bytes,7,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
 	// Status of the RPC Event
-	Status               *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Status        *common.OperationResp `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *RPCEvent) Reset()         { *m = RPCEvent{} }
-func (m *RPCEvent) String() string { return proto.CompactTextString(m) }
-func (*RPCEvent) ProtoMessage()    {}
+func (x *RPCEvent) Reset() {
+	*x = RPCEvent{}
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *RPCEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RPCEvent) ProtoMessage() {}
+
+func (x *RPCEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[15]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RPCEvent.ProtoReflect.Descriptor instead.
 func (*RPCEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{15}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *RPCEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RPCEvent.Unmarshal(m, b)
-}
-func (m *RPCEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RPCEvent.Marshal(b, m, deterministic)
-}
-func (m *RPCEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RPCEvent.Merge(m, src)
-}
-func (m *RPCEvent) XXX_Size() int {
-	return xxx_messageInfo_RPCEvent.Size(m)
-}
-func (m *RPCEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_RPCEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RPCEvent proto.InternalMessageInfo
-
-func (m *RPCEvent) GetRpc() string {
-	if m != nil {
-		return m.Rpc
+func (x *RPCEvent) GetRpc() string {
+	if x != nil {
+		return x.Rpc
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetOperationId() string {
-	if m != nil {
-		return m.OperationId
+func (x *RPCEvent) GetOperationId() string {
+	if x != nil {
+		return x.OperationId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetService() string {
-	if m != nil {
-		return m.Service
+func (x *RPCEvent) GetService() string {
+	if x != nil {
+		return x.Service
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetStackId() string {
-	if m != nil {
-		return m.StackId
+func (x *RPCEvent) GetStackId() string {
+	if x != nil {
+		return x.StackId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetResourceId() string {
-	if m != nil {
-		return m.ResourceId
+func (x *RPCEvent) GetResourceId() string {
+	if x != nil {
+		return x.ResourceId
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *RPCEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *RPCEvent) GetContext() map[string]string {
-	if m != nil {
-		return m.Context
+func (x *RPCEvent) GetContext() map[string]string {
+	if x != nil {
+		return x.Context
 	}
 	return nil
 }
 
-func (m *RPCEvent) GetStatus() *common.OperationResp {
-	if m != nil {
-		return m.Status
+func (x *RPCEvent) GetStatus() *common.OperationResp {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-//
 // Identify the area of the system impacted by the event.
 type EventCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventCategory) Reset()         { *m = EventCategory{} }
-func (m *EventCategory) String() string { return proto.CompactTextString(m) }
-func (*EventCategory) ProtoMessage()    {}
+func (x *EventCategory) Reset() {
+	*x = EventCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventCategory) ProtoMessage() {}
+
+func (x *EventCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[16]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventCategory.ProtoReflect.Descriptor instead.
 func (*EventCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{16}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *EventCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventCategory.Unmarshal(m, b)
-}
-func (m *EventCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventCategory.Marshal(b, m, deterministic)
-}
-func (m *EventCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventCategory.Merge(m, src)
-}
-func (m *EventCategory) XXX_Size() int {
-	return xxx_messageInfo_EventCategory.Size(m)
-}
-func (m *EventCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventCategory proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventSubCategory struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventSubCategory) Reset()         { *m = EventSubCategory{} }
-func (m *EventSubCategory) String() string { return proto.CompactTextString(m) }
-func (*EventSubCategory) ProtoMessage()    {}
+func (x *EventSubCategory) Reset() {
+	*x = EventSubCategory{}
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventSubCategory) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventSubCategory) ProtoMessage() {}
+
+func (x *EventSubCategory) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[17]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventSubCategory.ProtoReflect.Descriptor instead.
 func (*EventSubCategory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{17}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *EventSubCategory) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventSubCategory.Unmarshal(m, b)
-}
-func (m *EventSubCategory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventSubCategory.Marshal(b, m, deterministic)
-}
-func (m *EventSubCategory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventSubCategory.Merge(m, src)
-}
-func (m *EventSubCategory) XXX_Size() int {
-	return xxx_messageInfo_EventSubCategory.Size(m)
-}
-func (m *EventSubCategory) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventSubCategory.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventSubCategory proto.InternalMessageInfo
-
-//
 // Identify the type of event
 type EventType struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventType) Reset()         { *m = EventType{} }
-func (m *EventType) String() string { return proto.CompactTextString(m) }
-func (*EventType) ProtoMessage()    {}
+func (x *EventType) Reset() {
+	*x = EventType{}
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventType) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventType) ProtoMessage() {}
+
+func (x *EventType) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[18]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventType.ProtoReflect.Descriptor instead.
 func (*EventType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{18}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *EventType) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventType.Unmarshal(m, b)
-}
-func (m *EventType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventType.Marshal(b, m, deterministic)
-}
-func (m *EventType) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventType.Merge(m, src)
-}
-func (m *EventType) XXX_Size() int {
-	return xxx_messageInfo_EventType.Size(m)
-}
-func (m *EventType) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventType.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventType proto.InternalMessageInfo
-
-//
 // Identify the functional category originating the event
 type EventHeader struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// Unique ID for this event.  e.g. voltha.some_olt.1234
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Refers to the functional area affect by the event
@@ -1235,140 +1449,210 @@
 	// the event was first raised from the source entity.
 	// If the source entity doesn't send the raised_ts, this shall be set
 	// to timestamp when the event was received.
-	RaisedTs *timestamp.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
+	RaisedTs *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=raised_ts,json=raisedTs,proto3" json:"raised_ts,omitempty"`
 	// Timestamp at which the event was reported.
 	// This represents the UTC time stamp since epoch (in seconds) when the
 	// the event was reported (this time stamp is >= raised_ts).
 	// If the source entity that reported this event doesn't send the
 	// reported_ts, this shall be set to the same value as raised_ts.
-	ReportedTs           *timestamp.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	ReportedTs    *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=reported_ts,json=reportedTs,proto3" json:"reported_ts,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *EventHeader) Reset()         { *m = EventHeader{} }
-func (m *EventHeader) String() string { return proto.CompactTextString(m) }
-func (*EventHeader) ProtoMessage()    {}
+func (x *EventHeader) Reset() {
+	*x = EventHeader{}
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *EventHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EventHeader) ProtoMessage() {}
+
+func (x *EventHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[19]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EventHeader.ProtoReflect.Descriptor instead.
 func (*EventHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{19}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *EventHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EventHeader.Unmarshal(m, b)
-}
-func (m *EventHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EventHeader.Marshal(b, m, deterministic)
-}
-func (m *EventHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EventHeader.Merge(m, src)
-}
-func (m *EventHeader) XXX_Size() int {
-	return xxx_messageInfo_EventHeader.Size(m)
-}
-func (m *EventHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_EventHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EventHeader proto.InternalMessageInfo
-
-func (m *EventHeader) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *EventHeader) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *EventHeader) GetCategory() EventCategory_Types {
-	if m != nil {
-		return m.Category
+func (x *EventHeader) GetCategory() EventCategory_Types {
+	if x != nil {
+		return x.Category
 	}
 	return EventCategory_COMMUNICATION
 }
 
-func (m *EventHeader) GetSubCategory() EventSubCategory_Types {
-	if m != nil {
-		return m.SubCategory
+func (x *EventHeader) GetSubCategory() EventSubCategory_Types {
+	if x != nil {
+		return x.SubCategory
 	}
 	return EventSubCategory_PON
 }
 
-func (m *EventHeader) GetType() EventType_Types {
-	if m != nil {
-		return m.Type
+func (x *EventHeader) GetType() EventType_Types {
+	if x != nil {
+		return x.Type
 	}
 	return EventType_CONFIG_EVENT
 }
 
-func (m *EventHeader) GetTypeVersion() string {
-	if m != nil {
-		return m.TypeVersion
+func (x *EventHeader) GetTypeVersion() string {
+	if x != nil {
+		return x.TypeVersion
 	}
 	return ""
 }
 
-func (m *EventHeader) GetRaisedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.RaisedTs
+func (x *EventHeader) GetRaisedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.RaisedTs
 	}
 	return nil
 }
 
-func (m *EventHeader) GetReportedTs() *timestamp.Timestamp {
-	if m != nil {
-		return m.ReportedTs
+func (x *EventHeader) GetReportedTs() *timestamppb.Timestamp {
+	if x != nil {
+		return x.ReportedTs
 	}
 	return nil
 }
 
-//
 // Event Structure
 type Event struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// event header
 	Header *EventHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
 	// oneof event types referred by EventType.
 	//
 	// Types that are valid to be assigned to EventType:
+	//
 	//	*Event_ConfigEvent
 	//	*Event_KpiEvent
 	//	*Event_KpiEvent2
 	//	*Event_DeviceEvent
 	//	*Event_RpcEvent
 	//	*Event_KpiEvent3
-	EventType            isEvent_EventType `protobuf_oneof:"event_type"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	EventType     isEvent_EventType `protobuf_oneof:"event_type"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *Event) Reset()         { *m = Event{} }
-func (m *Event) String() string { return proto.CompactTextString(m) }
-func (*Event) ProtoMessage()    {}
+func (x *Event) Reset() {
+	*x = Event{}
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Event) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Event) ProtoMessage() {}
+
+func (x *Event) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_events_proto_msgTypes[20]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Event.ProtoReflect.Descriptor instead.
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e63e6c07044fd2c4, []int{20}
+	return file_voltha_protos_events_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *Event) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Event.Unmarshal(m, b)
-}
-func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Event.Marshal(b, m, deterministic)
-}
-func (m *Event) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Event.Merge(m, src)
-}
-func (m *Event) XXX_Size() int {
-	return xxx_messageInfo_Event.Size(m)
-}
-func (m *Event) XXX_DiscardUnknown() {
-	xxx_messageInfo_Event.DiscardUnknown(m)
+func (x *Event) GetHeader() *EventHeader {
+	if x != nil {
+		return x.Header
+	}
+	return nil
 }
 
-var xxx_messageInfo_Event proto.InternalMessageInfo
+func (x *Event) GetEventType() isEvent_EventType {
+	if x != nil {
+		return x.EventType
+	}
+	return nil
+}
 
-func (m *Event) GetHeader() *EventHeader {
-	if m != nil {
-		return m.Header
+func (x *Event) GetConfigEvent() *ConfigEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_ConfigEvent); ok {
+			return x.ConfigEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent() *KpiEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent); ok {
+			return x.KpiEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent2() *KpiEvent2 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent2); ok {
+			return x.KpiEvent2
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetDeviceEvent() *DeviceEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_DeviceEvent); ok {
+			return x.DeviceEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetRpcEvent() *RPCEvent {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_RpcEvent); ok {
+			return x.RpcEvent
+		}
+	}
+	return nil
+}
+
+func (x *Event) GetKpiEvent3() *KpiEvent3 {
+	if x != nil {
+		if x, ok := x.EventType.(*Event_KpiEvent3); ok {
+			return x.KpiEvent3
+		}
 	}
 	return nil
 }
@@ -1378,26 +1662,32 @@
 }
 
 type Event_ConfigEvent struct {
+	// Refers to ConfigEvent
 	ConfigEvent *ConfigEvent `protobuf:"bytes,2,opt,name=config_event,json=configEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent struct {
+	// Refers to KpiEvent
 	KpiEvent *KpiEvent `protobuf:"bytes,3,opt,name=kpi_event,json=kpiEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent2 struct {
+	// Refers to KpiEvent2
 	KpiEvent2 *KpiEvent2 `protobuf:"bytes,4,opt,name=kpi_event2,json=kpiEvent2,proto3,oneof"`
 }
 
 type Event_DeviceEvent struct {
+	// Refers to DeviceEvent
 	DeviceEvent *DeviceEvent `protobuf:"bytes,5,opt,name=device_event,json=deviceEvent,proto3,oneof"`
 }
 
 type Event_RpcEvent struct {
+	// Refers to an RPC Event
 	RpcEvent *RPCEvent `protobuf:"bytes,6,opt,name=rpc_event,json=rpcEvent,proto3,oneof"`
 }
 
 type Event_KpiEvent3 struct {
+	// Refers to KpiEvent3 (64-bit counter support)
 	KpiEvent3 *KpiEvent3 `protobuf:"bytes,7,opt,name=kpi_event3,json=kpiEvent3,proto3,oneof"`
 }
 
@@ -1413,58 +1703,262 @@
 
 func (*Event_KpiEvent3) isEvent_EventType() {}
 
-func (m *Event) GetEventType() isEvent_EventType {
-	if m != nil {
-		return m.EventType
-	}
-	return nil
+var File_voltha_protos_events_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_events_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/events.proto\x12\x05event\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1avoltha_protos/common.proto\"\x9e\x01\n" +
+	"\x12EventFilterRuleKey\"\x87\x01\n" +
+	"\x13EventFilterRuleType\x12\x0e\n" +
+	"\n" +
+	"filter_all\x10\x00\x12\f\n" +
+	"\bcategory\x10\x01\x12\x10\n" +
+	"\fsub_category\x10\x02\x12\x12\n" +
+	"\x0ekpi_event_type\x10\x03\x12\x15\n" +
+	"\x11config_event_type\x10\x04\x12\x15\n" +
+	"\x11device_event_type\x10\x05\"h\n" +
+	"\x0fEventFilterRule\x12?\n" +
+	"\x03key\x18\x01 \x01(\x0e2-.event.EventFilterRuleKey.EventFilterRuleTypeR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value\"\x9f\x01\n" +
+	"\vEventFilter\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
+	"\x06enable\x18\x02 \x01(\bR\x06enable\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12\x1d\n" +
+	"\n" +
+	"event_type\x18\x04 \x01(\tR\teventType\x12,\n" +
+	"\x05rules\x18\x05 \x03(\v2\x16.event.EventFilterRuleR\x05rules\"<\n" +
+	"\fEventFilters\x12,\n" +
+	"\afilters\x18\x01 \x03(\v2\x12.event.EventFilterR\afilters\";\n" +
+	"\x0fConfigEventType\"(\n" +
+	"\x05Types\x12\a\n" +
+	"\x03add\x10\x00\x12\n" +
+	"\n" +
+	"\x06remove\x10\x01\x12\n" +
+	"\n" +
+	"\x06update\x10\x02\"g\n" +
+	"\vConfigEvent\x120\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x1c.event.ConfigEventType.TypesR\x04type\x12\x12\n" +
+	"\x04hash\x18\x02 \x01(\tR\x04hash\x12\x12\n" +
+	"\x04data\x18\x03 \x01(\tR\x04data\"*\n" +
+	"\fKpiEventType\"\x1a\n" +
+	"\x05Types\x12\t\n" +
+	"\x05slice\x10\x00\x12\x06\n" +
+	"\x02ts\x10\x01\"\xaa\x02\n" +
+	"\x0eMetricMetaData\x12\x14\n" +
+	"\x05title\x18\x01 \x01(\tR\x05title\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x12*\n" +
+	"\x11logical_device_id\x18\x03 \x01(\tR\x0flogicalDeviceId\x12\x1b\n" +
+	"\tserial_no\x18\x04 \x01(\tR\bserialNo\x12\x1b\n" +
+	"\tdevice_id\x18\x05 \x01(\tR\bdeviceId\x12<\n" +
+	"\acontext\x18\x06 \x03(\v2\".event.MetricMetaData.ContextEntryR\acontext\x12\x12\n" +
+	"\x04uuid\x18\a \x01(\tR\x04uuid\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8e\x01\n" +
+	"\x10MetricValuePairs\x12>\n" +
+	"\ametrics\x18\x01 \x03(\v2$.event.MetricValuePairs.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc3\x01\n" +
+	"\x11MetricInformation\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12?\n" +
+	"\ametrics\x18\x02 \x03(\v2%.event.MetricInformation.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x02R\x05value:\x028\x01\"\xc7\x01\n" +
+	"\x13MetricInformation64\x121\n" +
+	"\bmetadata\x18\x01 \x01(\v2\x15.event.MetricMetaDataR\bmetadata\x12A\n" +
+	"\ametrics\x18\x02 \x03(\v2'.event.MetricInformation64.MetricsEntryR\ametrics\x1a:\n" +
+	"\fMetricsEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\x01R\x05value:\x028\x01\"\xda\x01\n" +
+	"\bKpiEvent\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x02R\x02ts\x129\n" +
+	"\bprefixes\x18\x03 \x03(\v2\x1d.event.KpiEvent.PrefixesEntryR\bprefixes\x1aT\n" +
+	"\rPrefixesEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12-\n" +
+	"\x05value\x18\x02 \x01(\v2\x17.event.MetricValuePairsR\x05value:\x028\x01\"\x83\x01\n" +
+	"\tKpiEvent2\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x127\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x18.event.MetricInformationR\tsliceData\"\x85\x01\n" +
+	"\tKpiEvent3\x12-\n" +
+	"\x04type\x18\x01 \x01(\x0e2\x19.event.KpiEventType.TypesR\x04type\x12\x0e\n" +
+	"\x02ts\x18\x02 \x01(\x01R\x02ts\x129\n" +
+	"\n" +
+	"slice_data\x18\x03 \x03(\v2\x1a.event.MetricInformation64R\tsliceData\"\xf3\x01\n" +
+	"\vDeviceEvent\x12\x1f\n" +
+	"\vresource_id\x18\x01 \x01(\tR\n" +
+	"resourceId\x12*\n" +
+	"\x11device_event_name\x18\x02 \x01(\tR\x0fdeviceEventName\x12 \n" +
+	"\vdescription\x18\x03 \x01(\tR\vdescription\x129\n" +
+	"\acontext\x18\x04 \x03(\v2\x1f.event.DeviceEvent.ContextEntryR\acontext\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xda\x02\n" +
+	"\bRPCEvent\x12\x10\n" +
+	"\x03rpc\x18\x01 \x01(\tR\x03rpc\x12!\n" +
+	"\foperation_id\x18\x02 \x01(\tR\voperationId\x12\x18\n" +
+	"\aservice\x18\x03 \x01(\tR\aservice\x12\x19\n" +
+	"\bstack_id\x18\x04 \x01(\tR\astackId\x12\x1f\n" +
+	"\vresource_id\x18\x05 \x01(\tR\n" +
+	"resourceId\x12 \n" +
+	"\vdescription\x18\x06 \x01(\tR\vdescription\x126\n" +
+	"\acontext\x18\a \x03(\v2\x1c.event.RPCEvent.ContextEntryR\acontext\x12-\n" +
+	"\x06status\x18\b \x01(\v2\x15.common.OperationRespR\x06status\x1a:\n" +
+	"\fContextEntry\x12\x10\n" +
+	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
+	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"v\n" +
+	"\rEventCategory\"e\n" +
+	"\x05Types\x12\x11\n" +
+	"\rCOMMUNICATION\x10\x00\x12\x0f\n" +
+	"\vENVIRONMENT\x10\x01\x12\r\n" +
+	"\tEQUIPMENT\x10\x02\x12\v\n" +
+	"\aSERVICE\x10\x03\x12\x0e\n" +
+	"\n" +
+	"PROCESSING\x10\x04\x12\f\n" +
+	"\bSECURITY\x10\x05\"R\n" +
+	"\x10EventSubCategory\">\n" +
+	"\x05Types\x12\a\n" +
+	"\x03PON\x10\x00\x12\a\n" +
+	"\x03OLT\x10\x01\x12\a\n" +
+	"\x03ONT\x10\x02\x12\a\n" +
+	"\x03ONU\x10\x03\x12\a\n" +
+	"\x03NNI\x10\x04\x12\b\n" +
+	"\x04NONE\x10\x05\"v\n" +
+	"\tEventType\"i\n" +
+	"\x05Types\x12\x10\n" +
+	"\fCONFIG_EVENT\x10\x00\x12\r\n" +
+	"\tKPI_EVENT\x10\x01\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT2\x10\x02\x12\x10\n" +
+	"\fDEVICE_EVENT\x10\x03\x12\r\n" +
+	"\tRPC_EVENT\x10\x04\x12\x0e\n" +
+	"\n" +
+	"KPI_EVENT3\x10\x05\"\xdc\x02\n" +
+	"\vEventHeader\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x126\n" +
+	"\bcategory\x18\x02 \x01(\x0e2\x1a.event.EventCategory.TypesR\bcategory\x12@\n" +
+	"\fsub_category\x18\x03 \x01(\x0e2\x1d.event.EventSubCategory.TypesR\vsubCategory\x12*\n" +
+	"\x04type\x18\x04 \x01(\x0e2\x16.event.EventType.TypesR\x04type\x12!\n" +
+	"\ftype_version\x18\x05 \x01(\tR\vtypeVersion\x127\n" +
+	"\traised_ts\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\braisedTs\x12;\n" +
+	"\vreported_ts\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\n" +
+	"reportedTs\"\xf9\x02\n" +
+	"\x05Event\x12*\n" +
+	"\x06header\x18\x01 \x01(\v2\x12.event.EventHeaderR\x06header\x127\n" +
+	"\fconfig_event\x18\x02 \x01(\v2\x12.event.ConfigEventH\x00R\vconfigEvent\x12.\n" +
+	"\tkpi_event\x18\x03 \x01(\v2\x0f.event.KpiEventH\x00R\bkpiEvent\x121\n" +
+	"\n" +
+	"kpi_event2\x18\x04 \x01(\v2\x10.event.KpiEvent2H\x00R\tkpiEvent2\x127\n" +
+	"\fdevice_event\x18\x05 \x01(\v2\x12.event.DeviceEventH\x00R\vdeviceEvent\x12.\n" +
+	"\trpc_event\x18\x06 \x01(\v2\x0f.event.RPCEventH\x00R\brpcEvent\x121\n" +
+	"\n" +
+	"kpi_event3\x18\a \x01(\v2\x10.event.KpiEvent3H\x00R\tkpiEvent3B\f\n" +
+	"\n" +
+	"event_typeBL\n" +
+	"\x1aorg.opencord.voltha.eventsZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_events_proto_rawDescOnce sync.Once
+	file_voltha_protos_events_proto_rawDescData []byte
+)
+
+func file_voltha_protos_events_proto_rawDescGZIP() []byte {
+	file_voltha_protos_events_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_events_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)))
+	})
+	return file_voltha_protos_events_proto_rawDescData
 }
 
-func (m *Event) GetConfigEvent() *ConfigEvent {
-	if x, ok := m.GetEventType().(*Event_ConfigEvent); ok {
-		return x.ConfigEvent
-	}
-	return nil
+var file_voltha_protos_events_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
+var file_voltha_protos_events_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
+var file_voltha_protos_events_proto_goTypes = []any{
+	(EventFilterRuleKey_EventFilterRuleType)(0), // 0: event.EventFilterRuleKey.EventFilterRuleType
+	(ConfigEventType_Types)(0),                  // 1: event.ConfigEventType.Types
+	(KpiEventType_Types)(0),                     // 2: event.KpiEventType.Types
+	(EventCategory_Types)(0),                    // 3: event.EventCategory.Types
+	(EventSubCategory_Types)(0),                 // 4: event.EventSubCategory.Types
+	(EventType_Types)(0),                        // 5: event.EventType.Types
+	(*EventFilterRuleKey)(nil),                  // 6: event.EventFilterRuleKey
+	(*EventFilterRule)(nil),                     // 7: event.EventFilterRule
+	(*EventFilter)(nil),                         // 8: event.EventFilter
+	(*EventFilters)(nil),                        // 9: event.EventFilters
+	(*ConfigEventType)(nil),                     // 10: event.ConfigEventType
+	(*ConfigEvent)(nil),                         // 11: event.ConfigEvent
+	(*KpiEventType)(nil),                        // 12: event.KpiEventType
+	(*MetricMetaData)(nil),                      // 13: event.MetricMetaData
+	(*MetricValuePairs)(nil),                    // 14: event.MetricValuePairs
+	(*MetricInformation)(nil),                   // 15: event.MetricInformation
+	(*MetricInformation64)(nil),                 // 16: event.MetricInformation64
+	(*KpiEvent)(nil),                            // 17: event.KpiEvent
+	(*KpiEvent2)(nil),                           // 18: event.KpiEvent2
+	(*KpiEvent3)(nil),                           // 19: event.KpiEvent3
+	(*DeviceEvent)(nil),                         // 20: event.DeviceEvent
+	(*RPCEvent)(nil),                            // 21: event.RPCEvent
+	(*EventCategory)(nil),                       // 22: event.EventCategory
+	(*EventSubCategory)(nil),                    // 23: event.EventSubCategory
+	(*EventType)(nil),                           // 24: event.EventType
+	(*EventHeader)(nil),                         // 25: event.EventHeader
+	(*Event)(nil),                               // 26: event.Event
+	nil,                                         // 27: event.MetricMetaData.ContextEntry
+	nil,                                         // 28: event.MetricValuePairs.MetricsEntry
+	nil,                                         // 29: event.MetricInformation.MetricsEntry
+	nil,                                         // 30: event.MetricInformation64.MetricsEntry
+	nil,                                         // 31: event.KpiEvent.PrefixesEntry
+	nil,                                         // 32: event.DeviceEvent.ContextEntry
+	nil,                                         // 33: event.RPCEvent.ContextEntry
+	(*common.OperationResp)(nil),                // 34: common.OperationResp
+	(*timestamppb.Timestamp)(nil),               // 35: google.protobuf.Timestamp
+}
+var file_voltha_protos_events_proto_depIdxs = []int32{
+	0,  // 0: event.EventFilterRule.key:type_name -> event.EventFilterRuleKey.EventFilterRuleType
+	7,  // 1: event.EventFilter.rules:type_name -> event.EventFilterRule
+	8,  // 2: event.EventFilters.filters:type_name -> event.EventFilter
+	1,  // 3: event.ConfigEvent.type:type_name -> event.ConfigEventType.Types
+	27, // 4: event.MetricMetaData.context:type_name -> event.MetricMetaData.ContextEntry
+	28, // 5: event.MetricValuePairs.metrics:type_name -> event.MetricValuePairs.MetricsEntry
+	13, // 6: event.MetricInformation.metadata:type_name -> event.MetricMetaData
+	29, // 7: event.MetricInformation.metrics:type_name -> event.MetricInformation.MetricsEntry
+	13, // 8: event.MetricInformation64.metadata:type_name -> event.MetricMetaData
+	30, // 9: event.MetricInformation64.metrics:type_name -> event.MetricInformation64.MetricsEntry
+	2,  // 10: event.KpiEvent.type:type_name -> event.KpiEventType.Types
+	31, // 11: event.KpiEvent.prefixes:type_name -> event.KpiEvent.PrefixesEntry
+	2,  // 12: event.KpiEvent2.type:type_name -> event.KpiEventType.Types
+	15, // 13: event.KpiEvent2.slice_data:type_name -> event.MetricInformation
+	2,  // 14: event.KpiEvent3.type:type_name -> event.KpiEventType.Types
+	16, // 15: event.KpiEvent3.slice_data:type_name -> event.MetricInformation64
+	32, // 16: event.DeviceEvent.context:type_name -> event.DeviceEvent.ContextEntry
+	33, // 17: event.RPCEvent.context:type_name -> event.RPCEvent.ContextEntry
+	34, // 18: event.RPCEvent.status:type_name -> common.OperationResp
+	3,  // 19: event.EventHeader.category:type_name -> event.EventCategory.Types
+	4,  // 20: event.EventHeader.sub_category:type_name -> event.EventSubCategory.Types
+	5,  // 21: event.EventHeader.type:type_name -> event.EventType.Types
+	35, // 22: event.EventHeader.raised_ts:type_name -> google.protobuf.Timestamp
+	35, // 23: event.EventHeader.reported_ts:type_name -> google.protobuf.Timestamp
+	25, // 24: event.Event.header:type_name -> event.EventHeader
+	11, // 25: event.Event.config_event:type_name -> event.ConfigEvent
+	17, // 26: event.Event.kpi_event:type_name -> event.KpiEvent
+	18, // 27: event.Event.kpi_event2:type_name -> event.KpiEvent2
+	20, // 28: event.Event.device_event:type_name -> event.DeviceEvent
+	21, // 29: event.Event.rpc_event:type_name -> event.RPCEvent
+	19, // 30: event.Event.kpi_event3:type_name -> event.KpiEvent3
+	14, // 31: event.KpiEvent.PrefixesEntry.value:type_name -> event.MetricValuePairs
+	32, // [32:32] is the sub-list for method output_type
+	32, // [32:32] is the sub-list for method input_type
+	32, // [32:32] is the sub-list for extension type_name
+	32, // [32:32] is the sub-list for extension extendee
+	0,  // [0:32] is the sub-list for field type_name
 }
 
-func (m *Event) GetKpiEvent() *KpiEvent {
-	if x, ok := m.GetEventType().(*Event_KpiEvent); ok {
-		return x.KpiEvent
+func init() { file_voltha_protos_events_proto_init() }
+func file_voltha_protos_events_proto_init() {
+	if File_voltha_protos_events_proto != nil {
+		return
 	}
-	return nil
-}
-
-func (m *Event) GetKpiEvent2() *KpiEvent2 {
-	if x, ok := m.GetEventType().(*Event_KpiEvent2); ok {
-		return x.KpiEvent2
-	}
-	return nil
-}
-
-func (m *Event) GetDeviceEvent() *DeviceEvent {
-	if x, ok := m.GetEventType().(*Event_DeviceEvent); ok {
-		return x.DeviceEvent
-	}
-	return nil
-}
-
-func (m *Event) GetRpcEvent() *RPCEvent {
-	if x, ok := m.GetEventType().(*Event_RpcEvent); ok {
-		return x.RpcEvent
-	}
-	return nil
-}
-
-func (m *Event) GetKpiEvent3() *KpiEvent3 {
-	if x, ok := m.GetEventType().(*Event_KpiEvent3); ok {
-		return x.KpiEvent3
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Event) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	file_voltha_protos_events_proto_msgTypes[20].OneofWrappers = []any{
 		(*Event_ConfigEvent)(nil),
 		(*Event_KpiEvent)(nil),
 		(*Event_KpiEvent2)(nil),
@@ -1472,141 +1966,22 @@
 		(*Event_RpcEvent)(nil),
 		(*Event_KpiEvent3)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterEnum("event.EventFilterRuleKey_EventFilterRuleType", EventFilterRuleKey_EventFilterRuleType_name, EventFilterRuleKey_EventFilterRuleType_value)
-	proto.RegisterEnum("event.ConfigEventType_Types", ConfigEventType_Types_name, ConfigEventType_Types_value)
-	proto.RegisterEnum("event.KpiEventType_Types", KpiEventType_Types_name, KpiEventType_Types_value)
-	proto.RegisterEnum("event.EventCategory_Types", EventCategory_Types_name, EventCategory_Types_value)
-	proto.RegisterEnum("event.EventSubCategory_Types", EventSubCategory_Types_name, EventSubCategory_Types_value)
-	proto.RegisterEnum("event.EventType_Types", EventType_Types_name, EventType_Types_value)
-	proto.RegisterType((*EventFilterRuleKey)(nil), "event.EventFilterRuleKey")
-	proto.RegisterType((*EventFilterRule)(nil), "event.EventFilterRule")
-	proto.RegisterType((*EventFilter)(nil), "event.EventFilter")
-	proto.RegisterType((*EventFilters)(nil), "event.EventFilters")
-	proto.RegisterType((*ConfigEventType)(nil), "event.ConfigEventType")
-	proto.RegisterType((*ConfigEvent)(nil), "event.ConfigEvent")
-	proto.RegisterType((*KpiEventType)(nil), "event.KpiEventType")
-	proto.RegisterType((*MetricMetaData)(nil), "event.MetricMetaData")
-	proto.RegisterMapType((map[string]string)(nil), "event.MetricMetaData.ContextEntry")
-	proto.RegisterType((*MetricValuePairs)(nil), "event.MetricValuePairs")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricValuePairs.MetricsEntry")
-	proto.RegisterType((*MetricInformation)(nil), "event.MetricInformation")
-	proto.RegisterMapType((map[string]float32)(nil), "event.MetricInformation.MetricsEntry")
-	proto.RegisterType((*MetricInformation64)(nil), "event.MetricInformation64")
-	proto.RegisterMapType((map[string]uint64)(nil), "event.MetricInformation64.MetricsEntry")
-	proto.RegisterType((*KpiEvent)(nil), "event.KpiEvent")
-	proto.RegisterMapType((map[string]*MetricValuePairs)(nil), "event.KpiEvent.PrefixesEntry")
-	proto.RegisterType((*KpiEvent2)(nil), "event.KpiEvent2")
-	proto.RegisterType((*KpiEvent3)(nil), "event.KpiEvent3")
-	proto.RegisterType((*DeviceEvent)(nil), "event.DeviceEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.DeviceEvent.ContextEntry")
-	proto.RegisterType((*RPCEvent)(nil), "event.RPCEvent")
-	proto.RegisterMapType((map[string]string)(nil), "event.RPCEvent.ContextEntry")
-	proto.RegisterType((*EventCategory)(nil), "event.EventCategory")
-	proto.RegisterType((*EventSubCategory)(nil), "event.EventSubCategory")
-	proto.RegisterType((*EventType)(nil), "event.EventType")
-	proto.RegisterType((*EventHeader)(nil), "event.EventHeader")
-	proto.RegisterType((*Event)(nil), "event.Event")
-}
-
-func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
-
-var fileDescriptor_e63e6c07044fd2c4 = []byte{
-	// 1493 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
-	0x10, 0x16, 0xa9, 0xff, 0xa1, 0x6c, 0xd3, 0x9b, 0x26, 0x55, 0x94, 0x04, 0x71, 0x88, 0x16, 0x35,
-	0x8c, 0x58, 0x6e, 0xe4, 0xd4, 0x6e, 0x7e, 0x90, 0x34, 0x51, 0x94, 0x98, 0x48, 0x2c, 0xa9, 0xb4,
-	0x6c, 0xa0, 0xbd, 0x08, 0x34, 0xb9, 0x96, 0x09, 0x4b, 0x22, 0xc1, 0x5d, 0x09, 0xf1, 0xb9, 0x28,
-	0x7a, 0xeb, 0x23, 0xb4, 0xf7, 0xbe, 0x46, 0x0f, 0x7d, 0x87, 0xa0, 0x6f, 0xd1, 0x53, 0x6f, 0xc5,
-	0xfe, 0x50, 0x22, 0x69, 0xb9, 0x01, 0x92, 0xf6, 0x44, 0xee, 0xec, 0xcc, 0xce, 0x37, 0xdf, 0xec,
-	0xce, 0xce, 0x42, 0x6d, 0xea, 0x0f, 0xe9, 0xa9, 0xdd, 0x0f, 0x42, 0x9f, 0xfa, 0x64, 0x0b, 0x4f,
-	0xf1, 0x98, 0x92, 0x3a, 0x1f, 0xa1, 0x3c, 0x1f, 0xd5, 0x6e, 0x0e, 0x7c, 0x7f, 0x30, 0xc4, 0x5b,
-	0x76, 0xe0, 0x6d, 0xd9, 0xe3, 0xb1, 0x4f, 0x6d, 0xea, 0xf9, 0x63, 0xa9, 0x54, 0xbb, 0x2d, 0x67,
-	0xf9, 0xe8, 0x78, 0x72, 0xb2, 0x45, 0xbd, 0x11, 0x26, 0xd4, 0x1e, 0x05, 0x52, 0x21, 0xe5, 0xc1,
-	0xf1, 0x47, 0x23, 0x7f, 0x2c, 0xe6, 0x8c, 0x5f, 0x14, 0x40, 0x2d, 0xe6, 0xe4, 0xa5, 0x37, 0xa4,
-	0x38, 0xb4, 0x26, 0x43, 0xfc, 0x1a, 0x9f, 0x1b, 0x3f, 0x29, 0x70, 0x25, 0x25, 0xee, 0x9d, 0x07,
-	0x18, 0x2d, 0x03, 0x9c, 0x70, 0x49, 0xdf, 0x1e, 0x0e, 0xf5, 0x0c, 0xaa, 0x40, 0xc9, 0xb1, 0x29,
-	0x1e, 0xf8, 0xe1, 0xb9, 0xae, 0x20, 0x1d, 0x2a, 0x64, 0x72, 0xdc, 0x9f, 0x49, 0x54, 0x84, 0x60,
-	0xf9, 0x2c, 0xf0, 0xfa, 0x3c, 0x8c, 0x3e, 0x3d, 0x0f, 0xb0, 0x9e, 0x45, 0x57, 0x61, 0xd5, 0xf1,
-	0xc7, 0x27, 0xde, 0x20, 0x2e, 0xce, 0x31, 0xb1, 0x8b, 0xa7, 0x9e, 0x83, 0xe3, 0xe2, 0xbc, 0x71,
-	0x0a, 0x2b, 0x29, 0x20, 0xe8, 0x29, 0x64, 0xcf, 0xf0, 0x79, 0x55, 0x59, 0x53, 0xd6, 0x97, 0x1b,
-	0x9b, 0x75, 0xae, 0x5e, 0xbf, 0x18, 0x44, 0x7d, 0x41, 0x00, 0x16, 0xb3, 0x44, 0x9f, 0x40, 0x7e,
-	0x6a, 0x0f, 0x27, 0xb8, 0xaa, 0xae, 0x29, 0xeb, 0x65, 0x4b, 0x0c, 0x8c, 0x5f, 0x15, 0xd0, 0x62,
-	0x26, 0x68, 0x19, 0x54, 0xcf, 0xe5, 0x5e, 0xca, 0x96, 0xea, 0xb9, 0xe8, 0x1a, 0x14, 0xf0, 0xd8,
-	0x3e, 0x1e, 0x0a, 0xb3, 0x92, 0x25, 0x47, 0xe8, 0x06, 0x94, 0x25, 0x70, 0xcf, 0xad, 0x66, 0xb9,
-	0x7a, 0x49, 0x08, 0x4c, 0x17, 0xdd, 0x02, 0x98, 0x87, 0x53, 0xcd, 0xf1, 0xd9, 0x32, 0x97, 0x70,
-	0x3e, 0xef, 0x42, 0x3e, 0x9c, 0x0c, 0x31, 0xa9, 0xe6, 0xd7, 0xb2, 0xeb, 0x5a, 0xe3, 0xda, 0xe2,
-	0x60, 0x2c, 0xa1, 0x64, 0x3c, 0x86, 0x4a, 0x6c, 0x86, 0xa0, 0xbb, 0x50, 0x14, 0xd9, 0x20, 0x55,
-	0x85, 0xdb, 0xa3, 0x05, 0xf6, 0x91, 0x8a, 0xf1, 0x08, 0x56, 0x9a, 0x9c, 0xf7, 0x56, 0xe4, 0xde,
-	0x58, 0x87, 0x3c, 0xfb, 0x12, 0x54, 0x84, 0xac, 0xed, 0xba, 0x7a, 0x06, 0x01, 0x14, 0x42, 0x3c,
-	0xf2, 0xa7, 0x58, 0x57, 0xd8, 0xff, 0x24, 0x70, 0x6d, 0x8a, 0x75, 0xd5, 0x18, 0x80, 0x16, 0x33,
-	0x46, 0x5f, 0x42, 0x8e, 0x07, 0x24, 0x72, 0x70, 0x53, 0xba, 0x4d, 0x2d, 0x5f, 0xe7, 0x6b, 0x5b,
-	0x5c, 0x13, 0x21, 0xc8, 0x9d, 0xda, 0xe4, 0x54, 0x52, 0xce, 0xff, 0x99, 0xcc, 0xb5, 0xa9, 0x2d,
-	0x49, 0xe3, 0xff, 0xc6, 0x06, 0x54, 0x5e, 0x07, 0xde, 0x1c, 0x62, 0x2d, 0x82, 0x58, 0x86, 0x3c,
-	0x19, 0x7a, 0x0e, 0xd6, 0x33, 0xa8, 0x00, 0x2a, 0x25, 0xba, 0x62, 0xfc, 0xa6, 0xc2, 0xf2, 0x3e,
-	0xa6, 0xa1, 0xe7, 0xec, 0x63, 0x6a, 0xbf, 0xb0, 0xa9, 0xcd, 0x52, 0x4b, 0x3d, 0x3a, 0xc4, 0x32,
-	0x6f, 0x62, 0xc0, 0x52, 0x49, 0x09, 0x77, 0xad, 0x58, 0x2a, 0x25, 0x68, 0x03, 0x56, 0x87, 0xfe,
-	0xc0, 0x73, 0xec, 0x61, 0x3f, 0x9d, 0xba, 0x15, 0x39, 0xf1, 0x22, 0xca, 0xe0, 0x0d, 0x28, 0x13,
-	0x1c, 0x7a, 0xf6, 0xb0, 0x3f, 0xf6, 0x65, 0x02, 0x4b, 0x42, 0xd0, 0xf6, 0x93, 0xb9, 0xcf, 0xa7,
-	0x72, 0xff, 0x18, 0x8a, 0x8e, 0x3f, 0xa6, 0xf8, 0x2d, 0xad, 0x16, 0x78, 0x7a, 0x0c, 0xc9, 0x53,
-	0x12, 0x33, 0xa3, 0x8d, 0x29, 0xb5, 0xc6, 0x34, 0x3c, 0xb7, 0x22, 0x13, 0x46, 0xce, 0x64, 0xe2,
-	0xb9, 0xd5, 0xa2, 0x20, 0x87, 0xfd, 0xd7, 0x1e, 0x42, 0x25, 0xae, 0x8c, 0xf4, 0xf9, 0x49, 0x28,
-	0xff, 0xcb, 0xd6, 0x7e, 0xa8, 0x7e, 0xad, 0x18, 0x3f, 0x2b, 0xa0, 0x0b, 0xc7, 0x47, 0x4c, 0xd6,
-	0xb5, 0xbd, 0x90, 0xa0, 0x27, 0x50, 0x1c, 0x71, 0x59, 0xb4, 0x83, 0x3e, 0x4b, 0x40, 0x9c, 0x6b,
-	0x4a, 0x01, 0x91, 0x20, 0xa5, 0x11, 0x03, 0x14, 0x9f, 0x78, 0x1f, 0x20, 0x35, 0x0e, 0xe8, 0x77,
-	0x05, 0x56, 0x85, 0xb1, 0x39, 0x3e, 0xf1, 0xc3, 0x11, 0x2f, 0x6a, 0xe8, 0x1e, 0x94, 0x46, 0x98,
-	0xda, 0x7c, 0x5f, 0xb0, 0x65, 0xb4, 0xc6, 0xd5, 0x85, 0xac, 0x59, 0x33, 0x35, 0xf4, 0x74, 0x1e,
-	0x84, 0xca, 0x83, 0xf8, 0x3c, 0x61, 0x11, 0x5b, 0xfd, 0x7f, 0x88, 0xe2, 0x0f, 0x05, 0xae, 0x5c,
-	0xf0, 0xb3, 0x73, 0xff, 0x43, 0xe2, 0x78, 0x96, 0x8e, 0xe3, 0x8b, 0xcb, 0xe2, 0xd8, 0xb9, 0xff,
-	0xdf, 0x44, 0x92, 0x8b, 0x47, 0xf2, 0x4e, 0x81, 0x52, 0x74, 0xf4, 0xd0, 0x66, 0xe2, 0x80, 0x5f,
-	0x97, 0x40, 0xe2, 0x27, 0x33, 0x71, 0xba, 0xe7, 0x07, 0x4c, 0xe5, 0x07, 0xec, 0x01, 0x94, 0x82,
-	0x10, 0x9f, 0x78, 0x6f, 0x31, 0xa9, 0x66, 0x79, 0x2c, 0xb7, 0x52, 0x4b, 0xd4, 0xbb, 0x72, 0x5e,
-	0x44, 0x30, 0x53, 0xaf, 0xf5, 0x60, 0x29, 0x31, 0xb5, 0x20, 0x86, 0xcd, 0x78, 0x0c, 0x5a, 0xe3,
-	0xd3, 0x4b, 0xf6, 0x6c, 0x3c, 0xb8, 0x1f, 0x14, 0x28, 0x47, 0xae, 0x1b, 0x1f, 0x1e, 0x9d, 0x28,
-	0x1f, 0xbb, 0x00, 0xbc, 0x14, 0xf5, 0x65, 0xf5, 0x62, 0xf1, 0x55, 0x2f, 0xcb, 0x95, 0x55, 0xe6,
-	0xba, 0x2c, 0xd7, 0xc6, 0x8f, 0x31, 0x14, 0xdb, 0x1f, 0x8b, 0xe2, 0xc1, 0x02, 0x14, 0xb5, 0xcb,
-	0x77, 0x4c, 0x1c, 0xc7, 0x5f, 0x0a, 0x68, 0xa2, 0xc0, 0x89, 0x6c, 0xdf, 0x06, 0x2d, 0xc4, 0xc4,
-	0x9f, 0x84, 0xa2, 0x90, 0x09, 0xaa, 0x21, 0x12, 0x99, 0x2e, 0x2b, 0x98, 0x89, 0xcb, 0x79, 0x6c,
-	0x8f, 0xa2, 0x12, 0xb3, 0xe2, 0xce, 0x17, 0x6a, 0xdb, 0x23, 0x8c, 0xd6, 0x40, 0x73, 0x31, 0x71,
-	0x42, 0x2f, 0x60, 0x8e, 0x65, 0x59, 0x8d, 0x8b, 0xd0, 0x83, 0x79, 0x61, 0xcc, 0x71, 0xd8, 0xb7,
-	0x25, 0xec, 0x18, 0xa6, 0xc5, 0x55, 0xf1, 0xa3, 0x2a, 0xe0, 0x3b, 0x15, 0x4a, 0x56, 0xb7, 0x29,
-	0x42, 0xd6, 0x21, 0x1b, 0x06, 0x4e, 0x64, 0x18, 0x06, 0x0e, 0xba, 0x03, 0x15, 0x3f, 0xc0, 0x21,
-	0xa7, 0x8b, 0xb1, 0x20, 0xec, 0xb5, 0x99, 0xcc, 0x74, 0x51, 0x15, 0x8a, 0x04, 0x87, 0x0c, 0xa3,
-	0x0c, 0x2b, 0x1a, 0xa2, 0xeb, 0x50, 0x22, 0xd4, 0x76, 0xce, 0x98, 0x61, 0x4e, 0x4e, 0xb1, 0xb1,
-	0xe9, 0xa6, 0xc9, 0xcd, 0x5f, 0x20, 0x37, 0x45, 0x58, 0xe1, 0x22, 0x61, 0x3b, 0x73, 0xc2, 0x8a,
-	0x9c, 0xb0, 0xe8, 0xc6, 0x8d, 0xc2, 0xb9, 0xe4, 0x0e, 0xd9, 0x84, 0x02, 0xa1, 0x36, 0x9d, 0x90,
-	0x6a, 0x49, 0x96, 0x20, 0xd9, 0xfc, 0x75, 0xa2, 0xa0, 0x2c, 0x4c, 0x02, 0x4b, 0x2a, 0x7d, 0x14,
-	0xb9, 0x53, 0x58, 0xe2, 0x48, 0x9a, 0xb2, 0xf9, 0x33, 0x70, 0x74, 0x71, 0xaf, 0xc2, 0x52, 0xb3,
-	0xb3, 0xbf, 0x7f, 0xd8, 0x36, 0x9b, 0xcf, 0x7a, 0x66, 0xa7, 0xad, 0x67, 0xd0, 0x0a, 0x68, 0xad,
-	0xf6, 0x91, 0x69, 0x75, 0xda, 0xfb, 0xad, 0x76, 0x4f, 0x57, 0xd0, 0x12, 0x94, 0x5b, 0xdf, 0x1e,
-	0x9a, 0x5d, 0x3e, 0x54, 0x91, 0x06, 0xc5, 0x83, 0x96, 0x75, 0x64, 0x36, 0x5b, 0x7a, 0x96, 0xf5,
-	0x9c, 0x5d, 0xab, 0xd3, 0x6c, 0x1d, 0x1c, 0x98, 0xed, 0x57, 0x7a, 0x8e, 0xf5, 0x9c, 0x07, 0xad,
-	0xe6, 0xa1, 0x65, 0xf6, 0xbe, 0xd3, 0xf3, 0x86, 0x05, 0x3a, 0xf7, 0x7b, 0x30, 0x39, 0x9e, 0xb9,
-	0x7e, 0x12, 0x6b, 0x6b, 0xba, 0xdc, 0x61, 0x11, 0xb2, 0x9d, 0x37, 0xcc, 0x11, 0xfb, 0xe1, 0x2e,
-	0xf8, 0xcf, 0xa1, 0x9e, 0x65, 0x3f, 0xed, 0xb6, 0xa9, 0xe7, 0x50, 0x09, 0x72, 0xed, 0x4e, 0xbb,
-	0xa5, 0xe7, 0x8d, 0x29, 0x94, 0xe7, 0x0d, 0x88, 0x17, 0x2d, 0xa6, 0x43, 0xa5, 0xd9, 0x69, 0xbf,
-	0x34, 0x5f, 0xf5, 0x5b, 0x47, 0x0c, 0x66, 0x86, 0xa1, 0x7e, 0xdd, 0x35, 0xe5, 0x50, 0x61, 0x40,
-	0x67, 0xc3, 0x86, 0xae, 0x32, 0x83, 0x17, 0x2d, 0x16, 0x84, 0xd4, 0xc8, 0x32, 0x03, 0xab, 0xdb,
-	0x94, 0xc3, 0x5c, 0xc2, 0x60, 0x5b, 0xcf, 0x1b, 0x7f, 0xaa, 0xb2, 0x03, 0xdd, 0xc3, 0xb6, 0xbb,
-	0xa0, 0x03, 0xdd, 0x99, 0x77, 0xdb, 0x3c, 0x01, 0xcb, 0xb3, 0xf3, 0x9e, 0xa0, 0x5e, 0x56, 0x8d,
-	0x99, 0x2e, 0xfa, 0x26, 0xd9, 0x97, 0xf3, 0xbd, 0xbb, 0x3c, 0xab, 0xc8, 0x69, 0xfa, 0xa4, 0xb9,
-	0x46, 0xe6, 0x22, 0xb4, 0x21, 0x4b, 0x55, 0x8e, 0x5b, 0x26, 0xda, 0xd4, 0x0b, 0x75, 0xea, 0x0e,
-	0x54, 0xd8, 0xb7, 0x3f, 0xc5, 0x21, 0x61, 0xfb, 0x59, 0x6c, 0x78, 0x8d, 0xc9, 0x8e, 0x84, 0x08,
-	0xed, 0x42, 0x39, 0xb4, 0x3d, 0x82, 0xdd, 0x3e, 0x25, 0x7c, 0xbf, 0xb3, 0xca, 0x25, 0x9e, 0x31,
-	0xf5, 0xe8, 0x19, 0x53, 0xef, 0x45, 0xcf, 0x18, 0xab, 0x24, 0x94, 0x7b, 0x04, 0x3d, 0x62, 0x67,
-	0x29, 0xf0, 0x43, 0x2a, 0x4c, 0x8b, 0xef, 0x35, 0x85, 0x48, 0xbd, 0x47, 0x8c, 0xbf, 0x55, 0xc8,
-	0x8b, 0xc3, 0xbf, 0x01, 0x85, 0x53, 0x4e, 0xb1, 0xbc, 0x9a, 0x13, 0x7d, 0xb3, 0x20, 0xdf, 0x92,
-	0x1a, 0x68, 0x17, 0x2a, 0xf1, 0xe7, 0x8a, 0xbc, 0x73, 0xd0, 0xc5, 0x96, 0x77, 0x2f, 0x63, 0x69,
-	0x4e, 0xac, 0x47, 0xae, 0x43, 0x79, 0xf6, 0xf6, 0xe1, 0x94, 0x6b, 0x8d, 0x95, 0x54, 0x8d, 0xdf,
-	0xcb, 0x58, 0xa5, 0xb3, 0xe8, 0xca, 0xbd, 0x07, 0x30, 0xd3, 0x6f, 0x70, 0xa6, 0xb5, 0x86, 0x9e,
-	0x32, 0x68, 0xec, 0x65, 0xac, 0xf2, 0xd9, 0xec, 0x1e, 0xdb, 0x85, 0x4a, 0xbc, 0x2c, 0x73, 0xaa,
-	0xe7, 0xd8, 0x62, 0xd5, 0x94, 0x61, 0x8b, 0xd5, 0x69, 0x86, 0x2d, 0x0c, 0x1c, 0x69, 0x55, 0x48,
-	0x60, 0x8b, 0x4a, 0x0a, 0xc3, 0x16, 0x06, 0xce, 0x45, 0x6c, 0xdb, 0x92, 0xf6, 0x34, 0xb6, 0xed,
-	0x38, 0xb6, 0xed, 0xe7, 0x95, 0xf8, 0xcb, 0xe7, 0xf9, 0x1b, 0xa8, 0xf9, 0xe1, 0xa0, 0xee, 0x07,
-	0x78, 0xec, 0xf8, 0xa1, 0x5b, 0x17, 0x4f, 0x52, 0xb1, 0x02, 0xf9, 0xbe, 0x3e, 0xf0, 0xe8, 0xe9,
-	0xe4, 0x98, 0x55, 0xa7, 0xad, 0x48, 0x65, 0x4b, 0xa8, 0x6c, 0xca, 0x57, 0xeb, 0xf4, 0xab, 0xad,
-	0x81, 0x2f, 0x65, 0xc7, 0x05, 0x2e, 0xdc, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xa1, 0x28,
-	0xad, 0x3c, 0x0f, 0x00, 0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_events_proto_rawDesc), len(file_voltha_protos_events_proto_rawDesc)),
+			NumEnums:      6,
+			NumMessages:   28,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_events_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_events_proto_depIdxs,
+		EnumInfos:         file_voltha_protos_events_proto_enumTypes,
+		MessageInfos:      file_voltha_protos_events_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_events_proto = out.File
+	file_voltha_protos_events_proto_goTypes = nil
+	file_voltha_protos_events_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
index bd0e4c4..ba19ad1 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/logical_device.pb.go
@@ -1,195 +1,212 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/logical_device.proto
 
 package voltha
 
 import (
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// 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
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
 type LogicalPortId struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// id of the port on the logical device
-	PortId               string   `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	PortId        string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPortId) Reset()         { *m = LogicalPortId{} }
-func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
-func (*LogicalPortId) ProtoMessage()    {}
+func (x *LogicalPortId) Reset() {
+	*x = LogicalPortId{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPortId) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPortId) ProtoMessage() {}
+
+func (x *LogicalPortId) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPortId.ProtoReflect.Descriptor instead.
 func (*LogicalPortId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{0}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *LogicalPortId) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPortId.Unmarshal(m, b)
-}
-func (m *LogicalPortId) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPortId.Marshal(b, m, deterministic)
-}
-func (m *LogicalPortId) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPortId.Merge(m, src)
-}
-func (m *LogicalPortId) XXX_Size() int {
-	return xxx_messageInfo_LogicalPortId.Size(m)
-}
-func (m *LogicalPortId) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPortId.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPortId proto.InternalMessageInfo
-
-func (m *LogicalPortId) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPortId) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPortId) GetPortId() string {
-	if m != nil {
-		return m.PortId
+func (x *LogicalPortId) GetPortId() string {
+	if x != nil {
+		return x.PortId
 	}
 	return ""
 }
 
 type LogicalPort struct {
-	Id                   string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	OfpPort              *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	DeviceId             string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DevicePortNo         uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
-	RootPort             bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
-	OfpPortStats         *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
-	XXX_unrecognized     []byte                    `json:"-"`
-	XXX_sizecache        int32                     `json:"-"`
+	state         protoimpl.MessageState    `protogen:"open.v1"`
+	Id            string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	OfpPort       *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	DeviceId      string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DevicePortNo  uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
+	RootPort      bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
+	OfpPortStats  *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPort) Reset()         { *m = LogicalPort{} }
-func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
-func (*LogicalPort) ProtoMessage()    {}
+func (x *LogicalPort) Reset() {
+	*x = LogicalPort{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPort) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPort) ProtoMessage() {}
+
+func (x *LogicalPort) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPort.ProtoReflect.Descriptor instead.
 func (*LogicalPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{1}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *LogicalPort) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPort.Unmarshal(m, b)
-}
-func (m *LogicalPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPort.Marshal(b, m, deterministic)
-}
-func (m *LogicalPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPort.Merge(m, src)
-}
-func (m *LogicalPort) XXX_Size() int {
-	return xxx_messageInfo_LogicalPort.Size(m)
-}
-func (m *LogicalPort) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPort proto.InternalMessageInfo
-
-func (m *LogicalPort) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalPort) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
-	if m != nil {
-		return m.OfpPort
+func (x *LogicalPort) GetOfpPort() *openflow_13.OfpPort {
+	if x != nil {
+		return x.OfpPort
 	}
 	return nil
 }
 
-func (m *LogicalPort) GetDeviceId() string {
-	if m != nil {
-		return m.DeviceId
+func (x *LogicalPort) GetDeviceId() string {
+	if x != nil {
+		return x.DeviceId
 	}
 	return ""
 }
 
-func (m *LogicalPort) GetDevicePortNo() uint32 {
-	if m != nil {
-		return m.DevicePortNo
+func (x *LogicalPort) GetDevicePortNo() uint32 {
+	if x != nil {
+		return x.DevicePortNo
 	}
 	return 0
 }
 
-func (m *LogicalPort) GetRootPort() bool {
-	if m != nil {
-		return m.RootPort
+func (x *LogicalPort) GetRootPort() bool {
+	if x != nil {
+		return x.RootPort
 	}
 	return false
 }
 
-func (m *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
-	if m != nil {
-		return m.OfpPortStats
+func (x *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
+	if x != nil {
+		return x.OfpPortStats
 	}
 	return nil
 }
 
 type LogicalPorts struct {
-	Items                []*LogicalPort `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalPort         `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalPorts) Reset()         { *m = LogicalPorts{} }
-func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
-func (*LogicalPorts) ProtoMessage()    {}
+func (x *LogicalPorts) Reset() {
+	*x = LogicalPorts{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalPorts) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalPorts) ProtoMessage() {}
+
+func (x *LogicalPorts) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalPorts.ProtoReflect.Descriptor instead.
 func (*LogicalPorts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{2}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *LogicalPorts) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalPorts.Unmarshal(m, b)
-}
-func (m *LogicalPorts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalPorts.Marshal(b, m, deterministic)
-}
-func (m *LogicalPorts) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalPorts.Merge(m, src)
-}
-func (m *LogicalPorts) XXX_Size() int {
-	return xxx_messageInfo_LogicalPorts.Size(m)
-}
-func (m *LogicalPorts) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalPorts.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalPorts proto.InternalMessageInfo
-
-func (m *LogicalPorts) GetItems() []*LogicalPort {
-	if m != nil {
-		return m.Items
+func (x *LogicalPorts) GetItems() []*LogicalPort {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
 type LogicalDevice struct {
+	state protoimpl.MessageState `protogen:"open.v1"`
 	// unique id of logical device
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// unique datapath id for the logical device (used by the SDN controller)
@@ -199,151 +216,206 @@
 	// device features
 	SwitchFeatures *openflow_13.OfpSwitchFeatures `protobuf:"bytes,4,opt,name=switch_features,json=switchFeatures,proto3" json:"switch_features,omitempty"`
 	// name of the root device anchoring logical device
-	RootDeviceId         string   `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RootDeviceId  string `protobuf:"bytes,5,opt,name=root_device_id,json=rootDeviceId,proto3" json:"root_device_id,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevice) Reset()         { *m = LogicalDevice{} }
-func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevice) ProtoMessage()    {}
+func (x *LogicalDevice) Reset() {
+	*x = LogicalDevice{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevice) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevice) ProtoMessage() {}
+
+func (x *LogicalDevice) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[3]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevice.ProtoReflect.Descriptor instead.
 func (*LogicalDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{3}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *LogicalDevice) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalDevice.Unmarshal(m, b)
-}
-func (m *LogicalDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalDevice.Marshal(b, m, deterministic)
-}
-func (m *LogicalDevice) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevice.Merge(m, src)
-}
-func (m *LogicalDevice) XXX_Size() int {
-	return xxx_messageInfo_LogicalDevice.Size(m)
-}
-func (m *LogicalDevice) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevice.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevice proto.InternalMessageInfo
-
-func (m *LogicalDevice) GetId() string {
-	if m != nil {
-		return m.Id
+func (x *LogicalDevice) GetId() string {
+	if x != nil {
+		return x.Id
 	}
 	return ""
 }
 
-func (m *LogicalDevice) GetDatapathId() uint64 {
-	if m != nil {
-		return m.DatapathId
+func (x *LogicalDevice) GetDatapathId() uint64 {
+	if x != nil {
+		return x.DatapathId
 	}
 	return 0
 }
 
-func (m *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
-	if m != nil {
-		return m.Desc
+func (x *LogicalDevice) GetDesc() *openflow_13.OfpDesc {
+	if x != nil {
+		return x.Desc
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
-	if m != nil {
-		return m.SwitchFeatures
+func (x *LogicalDevice) GetSwitchFeatures() *openflow_13.OfpSwitchFeatures {
+	if x != nil {
+		return x.SwitchFeatures
 	}
 	return nil
 }
 
-func (m *LogicalDevice) GetRootDeviceId() string {
-	if m != nil {
-		return m.RootDeviceId
+func (x *LogicalDevice) GetRootDeviceId() string {
+	if x != nil {
+		return x.RootDeviceId
 	}
 	return ""
 }
 
 type LogicalDevices struct {
-	Items                []*LogicalDevice `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*LogicalDevice       `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *LogicalDevices) Reset()         { *m = LogicalDevices{} }
-func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
-func (*LogicalDevices) ProtoMessage()    {}
+func (x *LogicalDevices) Reset() {
+	*x = LogicalDevices{}
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *LogicalDevices) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LogicalDevices) ProtoMessage() {}
+
+func (x *LogicalDevices) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_logical_device_proto_msgTypes[4]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LogicalDevices.ProtoReflect.Descriptor instead.
 func (*LogicalDevices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_caf139ab3abc8240, []int{4}
+	return file_voltha_protos_logical_device_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *LogicalDevices) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogicalDevices.Unmarshal(m, b)
-}
-func (m *LogicalDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogicalDevices.Marshal(b, m, deterministic)
-}
-func (m *LogicalDevices) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogicalDevices.Merge(m, src)
-}
-func (m *LogicalDevices) XXX_Size() int {
-	return xxx_messageInfo_LogicalDevices.Size(m)
-}
-func (m *LogicalDevices) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogicalDevices.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogicalDevices proto.InternalMessageInfo
-
-func (m *LogicalDevices) GetItems() []*LogicalDevice {
-	if m != nil {
-		return m.Items
+func (x *LogicalDevices) GetItems() []*LogicalDevice {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*LogicalPortId)(nil), "logical_device.LogicalPortId")
-	proto.RegisterType((*LogicalPort)(nil), "logical_device.LogicalPort")
-	proto.RegisterType((*LogicalPorts)(nil), "logical_device.LogicalPorts")
-	proto.RegisterType((*LogicalDevice)(nil), "logical_device.LogicalDevice")
-	proto.RegisterType((*LogicalDevices)(nil), "logical_device.LogicalDevices")
+var File_voltha_protos_logical_device_proto protoreflect.FileDescriptor
+
+const file_voltha_protos_logical_device_proto_rawDesc = "" +
+	"\n" +
+	"\"voltha_protos/logical_device.proto\x12\x0elogical_device\x1a\x1cgoogle/api/annotations.proto\x1a\x1fvoltha_protos/openflow_13.proto\"8\n" +
+	"\rLogicalPortId\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
+	"\aport_id\x18\x02 \x01(\tR\x06portId\"\xf2\x01\n" +
+	"\vLogicalPort\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x120\n" +
+	"\bofp_port\x18\x02 \x01(\v2\x15.openflow_13.ofp_portR\aofpPort\x12\x1b\n" +
+	"\tdevice_id\x18\x03 \x01(\tR\bdeviceId\x12$\n" +
+	"\x0edevice_port_no\x18\x04 \x01(\rR\fdevicePortNo\x12\x1b\n" +
+	"\troot_port\x18\x05 \x01(\bR\brootPort\x12A\n" +
+	"\x0eofp_port_stats\x18\x06 \x01(\v2\x1b.openflow_13.ofp_port_statsR\fofpPortStats\"A\n" +
+	"\fLogicalPorts\x121\n" +
+	"\x05items\x18\x01 \x03(\v2\x1b.logical_device.LogicalPortR\x05items\"\xdc\x01\n" +
+	"\rLogicalDevice\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
+	"\vdatapath_id\x18\x02 \x01(\x04R\n" +
+	"datapathId\x12)\n" +
+	"\x04desc\x18\x03 \x01(\v2\x15.openflow_13.ofp_descR\x04desc\x12I\n" +
+	"\x0fswitch_features\x18\x04 \x01(\v2 .openflow_13.ofp_switch_featuresR\x0eswitchFeatures\x12$\n" +
+	"\x0eroot_device_id\x18\x05 \x01(\tR\frootDeviceId\"E\n" +
+	"\x0eLogicalDevices\x123\n" +
+	"\x05items\x18\x01 \x03(\v2\x1d.logical_device.LogicalDeviceR\x05itemsBe\n" +
+	"\"org.opencord.voltha.logical_deviceB\x0fOFLogicalDeviceZ.github.com/opencord/voltha-protos/v5/go/volthab\x06proto3"
+
+var (
+	file_voltha_protos_logical_device_proto_rawDescOnce sync.Once
+	file_voltha_protos_logical_device_proto_rawDescData []byte
+)
+
+func file_voltha_protos_logical_device_proto_rawDescGZIP() []byte {
+	file_voltha_protos_logical_device_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_logical_device_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)))
+	})
+	return file_voltha_protos_logical_device_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_caf139ab3abc8240)
+var file_voltha_protos_logical_device_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_voltha_protos_logical_device_proto_goTypes = []any{
+	(*LogicalPortId)(nil),                 // 0: logical_device.LogicalPortId
+	(*LogicalPort)(nil),                   // 1: logical_device.LogicalPort
+	(*LogicalPorts)(nil),                  // 2: logical_device.LogicalPorts
+	(*LogicalDevice)(nil),                 // 3: logical_device.LogicalDevice
+	(*LogicalDevices)(nil),                // 4: logical_device.LogicalDevices
+	(*openflow_13.OfpPort)(nil),           // 5: openflow_13.ofp_port
+	(*openflow_13.OfpPortStats)(nil),      // 6: openflow_13.ofp_port_stats
+	(*openflow_13.OfpDesc)(nil),           // 7: openflow_13.ofp_desc
+	(*openflow_13.OfpSwitchFeatures)(nil), // 8: openflow_13.ofp_switch_features
+}
+var file_voltha_protos_logical_device_proto_depIdxs = []int32{
+	5, // 0: logical_device.LogicalPort.ofp_port:type_name -> openflow_13.ofp_port
+	6, // 1: logical_device.LogicalPort.ofp_port_stats:type_name -> openflow_13.ofp_port_stats
+	1, // 2: logical_device.LogicalPorts.items:type_name -> logical_device.LogicalPort
+	7, // 3: logical_device.LogicalDevice.desc:type_name -> openflow_13.ofp_desc
+	8, // 4: logical_device.LogicalDevice.switch_features:type_name -> openflow_13.ofp_switch_features
+	3, // 5: logical_device.LogicalDevices.items:type_name -> logical_device.LogicalDevice
+	6, // [6:6] is the sub-list for method output_type
+	6, // [6:6] is the sub-list for method input_type
+	6, // [6:6] is the sub-list for extension type_name
+	6, // [6:6] is the sub-list for extension extendee
+	0, // [0:6] is the sub-list for field type_name
 }
 
-var fileDescriptor_caf139ab3abc8240 = []byte{
-	// 447 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0xd1, 0x6a, 0xdb, 0x30,
-	0x14, 0xc5, 0x69, 0x92, 0xa6, 0x37, 0xa9, 0x0b, 0x86, 0x31, 0xd3, 0x6e, 0xd4, 0x98, 0x3d, 0x64,
-	0x0f, 0xb3, 0xd7, 0x86, 0xc1, 0x5e, 0x5b, 0xba, 0x42, 0x60, 0x6c, 0x43, 0x7b, 0xdb, 0x8b, 0x51,
-	0x2d, 0xc5, 0x11, 0xb8, 0xbe, 0xc6, 0x52, 0xd3, 0x9f, 0xdd, 0x57, 0xec, 0x0b, 0x86, 0xae, 0xec,
-	0x2d, 0x4e, 0xd2, 0x47, 0x1d, 0x9d, 0x73, 0xee, 0xd1, 0xb9, 0x36, 0xc4, 0x1b, 0x2c, 0xcd, 0x9a,
-	0x67, 0x75, 0x83, 0x06, 0x75, 0x5a, 0x62, 0xa1, 0x72, 0x5e, 0x66, 0x42, 0x6e, 0x54, 0x2e, 0x13,
-	0x42, 0x03, 0xbf, 0x8f, 0x9e, 0xbf, 0x29, 0x10, 0x8b, 0x52, 0xa6, 0xbc, 0x56, 0x29, 0xaf, 0x2a,
-	0x34, 0xdc, 0x28, 0xac, 0xb4, 0x63, 0x9f, 0x5f, 0xf6, 0x1d, 0xb1, 0x96, 0xd5, 0xaa, 0xc4, 0xe7,
-	0xec, 0x6a, 0xe1, 0x08, 0xf1, 0x67, 0x38, 0xfd, 0xea, 0x0c, 0x7f, 0x60, 0x63, 0x96, 0x22, 0xf0,
-	0x61, 0xa0, 0x44, 0xe8, 0x45, 0xde, 0xfc, 0x84, 0x0d, 0x94, 0x08, 0x5e, 0xc3, 0x71, 0x8d, 0x8d,
-	0xc9, 0x94, 0x08, 0x07, 0x04, 0x8e, 0x6b, 0x22, 0xc6, 0x7f, 0x3c, 0x98, 0x6e, 0x49, 0xf7, 0x84,
-	0x1f, 0x61, 0x82, 0xab, 0x3a, 0xb3, 0x6c, 0x52, 0x4e, 0xaf, 0x5f, 0x25, 0xdb, 0xf3, 0xbb, 0x4b,
-	0x76, 0x8c, 0xab, 0x9a, 0x1c, 0x2e, 0xe0, 0xc4, 0x3d, 0xca, 0x0e, 0x3b, 0x22, 0xa3, 0x89, 0x03,
-	0x96, 0x22, 0x78, 0x07, 0x7e, 0x7b, 0x49, 0x71, 0x2a, 0x0c, 0x87, 0x91, 0x37, 0x3f, 0x65, 0x33,
-	0x87, 0x5a, 0x83, 0x6f, 0x68, 0x2d, 0x1a, 0x44, 0xe3, 0xa6, 0x8e, 0x22, 0x6f, 0x3e, 0x61, 0x13,
-	0x0b, 0x90, 0xff, 0x0d, 0xf8, 0xdd, 0xd0, 0x4c, 0x1b, 0x6e, 0x74, 0x38, 0xa6, 0x5c, 0x17, 0x07,
-	0x73, 0x39, 0x0a, 0x9b, 0xb5, 0xe9, 0x7e, 0xda, 0x53, 0x7c, 0x03, 0xb3, 0xad, 0x37, 0xeb, 0xe0,
-	0x0a, 0x46, 0xca, 0xc8, 0x47, 0x1d, 0x7a, 0xd1, 0x11, 0x39, 0xed, 0xec, 0x6c, 0x8b, 0xcc, 0x1c,
-	0x33, 0xfe, 0xed, 0xfd, 0xab, 0xfc, 0x8e, 0x48, 0x7b, 0xcd, 0x5d, 0xc2, 0x54, 0x70, 0xc3, 0x6b,
-	0x6e, 0xd6, 0x5d, 0xed, 0x43, 0x06, 0x1d, 0xb4, 0x14, 0xc1, 0x7b, 0x18, 0x0a, 0xa9, 0x73, 0xea,
-	0xe8, 0x50, 0xad, 0xf6, 0x92, 0x11, 0x25, 0x58, 0xc2, 0x99, 0x7e, 0x56, 0x26, 0x5f, 0x67, 0x2b,
-	0xc9, 0xcd, 0x53, 0x23, 0x35, 0xf5, 0x36, 0xbd, 0x8e, 0xf6, 0x54, 0x3b, 0x3c, 0xe6, 0x3b, 0xe0,
-	0xbe, 0x3d, 0xdb, 0x0d, 0x50, 0xb7, 0xff, 0x77, 0x34, 0xa2, 0xc8, 0x33, 0x8b, 0xde, 0xb5, 0x7b,
-	0x8a, 0xbf, 0x80, 0xdf, 0x7b, 0x9d, 0x0e, 0x16, 0xfd, 0x8e, 0xde, 0xbe, 0xd0, 0x91, 0xa3, 0xb7,
-	0x2d, 0xdd, 0x4a, 0x88, 0xb1, 0x29, 0x28, 0x63, 0x8e, 0x8d, 0x48, 0xdc, 0x77, 0xbc, 0x23, 0xbd,
-	0x3d, 0xfb, 0x7e, 0xdf, 0x53, 0xff, 0x4a, 0x0a, 0x65, 0xd6, 0x4f, 0x0f, 0x49, 0x8e, 0x8f, 0x69,
-	0xa7, 0x4d, 0x9d, 0xf6, 0x43, 0xfb, 0x0f, 0x6c, 0x3e, 0xa5, 0x05, 0xb6, 0xd8, 0xc3, 0x98, 0xc0,
-	0xc5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xd8, 0xd6, 0x61, 0x7a, 0x03, 0x00, 0x00,
+func init() { file_voltha_protos_logical_device_proto_init() }
+func file_voltha_protos_logical_device_proto_init() {
+	if File_voltha_protos_logical_device_proto != nil {
+		return
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_logical_device_proto_rawDesc), len(file_voltha_protos_logical_device_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_voltha_protos_logical_device_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_logical_device_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_logical_device_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_logical_device_proto = out.File
+	file_voltha_protos_logical_device_proto_goTypes = nil
+	file_voltha_protos_logical_device_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 9870cc4..9be170a 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -1,13 +1,17 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.36.11
+// 	protoc        v4.25.8
 // source: voltha_protos/voltha.proto
 
 package voltha
 
 import (
-	context "context"
-	fmt "fmt"
-	proto "github.com/golang/protobuf/proto"
-	empty "github.com/golang/protobuf/ptypes/empty"
 	common "github.com/opencord/voltha-protos/v5/go/common"
 	extension "github.com/opencord/voltha-protos/v5/go/extension"
 	health "github.com/opencord/voltha-protos/v5/go/health"
@@ -16,191 +20,179 @@
 	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
 	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+	reflect "reflect"
+	sync "sync"
+	unsafe "unsafe"
 )
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
 
-// 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
+// Symbols defined in public import of voltha_protos/common.proto.
 
-// Key from public import voltha_protos/common.proto
-type Key = common.Key
-
-// ID from public import voltha_protos/common.proto
-type ID = common.ID
-
-// IDs from public import voltha_protos/common.proto
-type IDs = common.IDs
-
-// Connection from public import voltha_protos/common.proto
-type Connection = common.Connection
-
-// 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
-
-// PortStatistics from public import voltha_protos/common.proto
-type PortStatistics = common.PortStatistics
-
-// TestModeKeys from public import voltha_protos/common.proto
 type TestModeKeys = common.TestModeKeys
 
+const TestModeKeys_api_test = common.TestModeKeys_api_test
+
 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
 
+const AdminState_UNKNOWN = common.AdminState_UNKNOWN
+const AdminState_PREPROVISIONED = common.AdminState_PREPROVISIONED
+const AdminState_ENABLED = common.AdminState_ENABLED
+const AdminState_DISABLED = common.AdminState_DISABLED
+const AdminState_DOWNLOADING_IMAGE = common.AdminState_DOWNLOADING_IMAGE
+
 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)
-
-// OperStatus_Types from public import voltha_protos/common.proto
 type OperStatus_Types = common.OperStatus_Types
 
+const OperStatus_UNKNOWN = common.OperStatus_UNKNOWN
+const OperStatus_DISCOVERED = common.OperStatus_DISCOVERED
+const OperStatus_ACTIVATING = common.OperStatus_ACTIVATING
+const OperStatus_TESTING = common.OperStatus_TESTING
+const OperStatus_ACTIVE = common.OperStatus_ACTIVE
+const OperStatus_FAILED = common.OperStatus_FAILED
+const OperStatus_RECONCILING = common.OperStatus_RECONCILING
+const OperStatus_RECONCILING_FAILED = common.OperStatus_RECONCILING_FAILED
+const OperStatus_REBOOTED = common.OperStatus_REBOOTED
+
 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)
-const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
-const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
-const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
-
-// ConnectStatus_Types from public import voltha_protos/common.proto
 type ConnectStatus_Types = common.ConnectStatus_Types
 
+const ConnectStatus_UNKNOWN = common.ConnectStatus_UNKNOWN
+const ConnectStatus_UNREACHABLE = common.ConnectStatus_UNREACHABLE
+const ConnectStatus_REACHABLE = common.ConnectStatus_REACHABLE
+
 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
 
+const OperationResp_OPERATION_SUCCESS = common.OperationResp_OPERATION_SUCCESS
+const OperationResp_OPERATION_FAILURE = common.OperationResp_OPERATION_FAILURE
+const OperationResp_OPERATION_UNSUPPORTED = common.OperationResp_OPERATION_UNSUPPORTED
+const OperationResp_OPERATION_IN_PROGRESS = common.OperationResp_OPERATION_IN_PROGRESS
+
 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)
-const OperationResp_OPERATION_IN_PROGRESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_IN_PROGRESS)
+type Key = common.Key
+type ID = common.ID
+type IDs = common.IDs
+type Connection = common.Connection
+type AdminState = common.AdminState
+type OperStatus = common.OperStatus
+type ConnectStatus = common.ConnectStatus
+type OperationResp = common.OperationResp
+type PortStatistics = common.PortStatistics
 
 // CoreInstance represents a core instance.  It is data held in memory when a core
 // is running.  This data is not persistent.
 type CoreInstance struct {
-	InstanceId           string               `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
-	Health               *health.HealthStatus `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	InstanceId    string                 `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Health        *health.HealthStatus   `protobuf:"bytes,2,opt,name=health,proto3" json:"health,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstance) Reset()         { *m = CoreInstance{} }
-func (m *CoreInstance) String() string { return proto.CompactTextString(m) }
-func (*CoreInstance) ProtoMessage()    {}
+func (x *CoreInstance) Reset() {
+	*x = CoreInstance{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstance) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstance) ProtoMessage() {}
+
+func (x *CoreInstance) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[0]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstance.ProtoReflect.Descriptor instead.
 func (*CoreInstance) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{0}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *CoreInstance) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreInstance.Unmarshal(m, b)
-}
-func (m *CoreInstance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreInstance.Marshal(b, m, deterministic)
-}
-func (m *CoreInstance) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstance.Merge(m, src)
-}
-func (m *CoreInstance) XXX_Size() int {
-	return xxx_messageInfo_CoreInstance.Size(m)
-}
-func (m *CoreInstance) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstance.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstance proto.InternalMessageInfo
-
-func (m *CoreInstance) GetInstanceId() string {
-	if m != nil {
-		return m.InstanceId
+func (x *CoreInstance) GetInstanceId() string {
+	if x != nil {
+		return x.InstanceId
 	}
 	return ""
 }
 
-func (m *CoreInstance) GetHealth() *health.HealthStatus {
-	if m != nil {
-		return m.Health
+func (x *CoreInstance) GetHealth() *health.HealthStatus {
+	if x != nil {
+		return x.Health
 	}
 	return nil
 }
 
 type CoreInstances struct {
-	Items                []*CoreInstance `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	Items         []*CoreInstance        `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
 }
 
-func (m *CoreInstances) Reset()         { *m = CoreInstances{} }
-func (m *CoreInstances) String() string { return proto.CompactTextString(m) }
-func (*CoreInstances) ProtoMessage()    {}
+func (x *CoreInstances) Reset() {
+	*x = CoreInstances{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *CoreInstances) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreInstances) ProtoMessage() {}
+
+func (x *CoreInstances) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[1]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreInstances.ProtoReflect.Descriptor instead.
 func (*CoreInstances) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{1}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *CoreInstances) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreInstances.Unmarshal(m, b)
-}
-func (m *CoreInstances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreInstances.Marshal(b, m, deterministic)
-}
-func (m *CoreInstances) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreInstances.Merge(m, src)
-}
-func (m *CoreInstances) XXX_Size() int {
-	return xxx_messageInfo_CoreInstances.Size(m)
-}
-func (m *CoreInstances) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreInstances.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreInstances proto.InternalMessageInfo
-
-func (m *CoreInstances) GetItems() []*CoreInstance {
-	if m != nil {
-		return m.Items
+func (x *CoreInstances) GetItems() []*CoreInstance {
+	if x != nil {
+		return x.Items
 	}
 	return nil
 }
@@ -209,3230 +201,484 @@
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
 type Voltha struct {
-	Version              string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
-	Adapters             []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
-	LogicalDevices       []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
-	Devices              []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
-	DeviceTypes          []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
-	EventFilters         []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
-	OmciMibDatabase      []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
-	OmciAlarmDatabase    []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	state             protoimpl.MessageState  `protogen:"open.v1"`
+	Version           string                  `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
+	Adapters          []*Adapter              `protobuf:"bytes,2,rep,name=adapters,proto3" json:"adapters,omitempty"`
+	LogicalDevices    []*LogicalDevice        `protobuf:"bytes,3,rep,name=logical_devices,json=logicalDevices,proto3" json:"logical_devices,omitempty"`
+	Devices           []*Device               `protobuf:"bytes,4,rep,name=devices,proto3" json:"devices,omitempty"`
+	DeviceTypes       []*DeviceType           `protobuf:"bytes,5,rep,name=device_types,json=deviceTypes,proto3" json:"device_types,omitempty"`
+	EventFilters      []*EventFilter          `protobuf:"bytes,7,rep,name=event_filters,json=eventFilters,proto3" json:"event_filters,omitempty"`
+	OmciMibDatabase   []*omci.MibDeviceData   `protobuf:"bytes,28,rep,name=omci_mib_database,json=omciMibDatabase,proto3" json:"omci_mib_database,omitempty"`
+	OmciAlarmDatabase []*omci.AlarmDeviceData `protobuf:"bytes,29,rep,name=omci_alarm_database,json=omciAlarmDatabase,proto3" json:"omci_alarm_database,omitempty"`
+	unknownFields     protoimpl.UnknownFields
+	sizeCache         protoimpl.SizeCache
 }
 
-func (m *Voltha) Reset()         { *m = Voltha{} }
-func (m *Voltha) String() string { return proto.CompactTextString(m) }
-func (*Voltha) ProtoMessage()    {}
+func (x *Voltha) Reset() {
+	*x = Voltha{}
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Voltha) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Voltha) ProtoMessage() {}
+
+func (x *Voltha) ProtoReflect() protoreflect.Message {
+	mi := &file_voltha_protos_voltha_proto_msgTypes[2]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Voltha.ProtoReflect.Descriptor instead.
 func (*Voltha) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{2}
+	return file_voltha_protos_voltha_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *Voltha) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Voltha.Unmarshal(m, b)
-}
-func (m *Voltha) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Voltha.Marshal(b, m, deterministic)
-}
-func (m *Voltha) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Voltha.Merge(m, src)
-}
-func (m *Voltha) XXX_Size() int {
-	return xxx_messageInfo_Voltha.Size(m)
-}
-func (m *Voltha) XXX_DiscardUnknown() {
-	xxx_messageInfo_Voltha.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Voltha proto.InternalMessageInfo
-
-func (m *Voltha) GetVersion() string {
-	if m != nil {
-		return m.Version
+func (x *Voltha) GetVersion() string {
+	if x != nil {
+		return x.Version
 	}
 	return ""
 }
 
-func (m *Voltha) GetAdapters() []*Adapter {
-	if m != nil {
-		return m.Adapters
+func (x *Voltha) GetAdapters() []*Adapter {
+	if x != nil {
+		return x.Adapters
 	}
 	return nil
 }
 
-func (m *Voltha) GetLogicalDevices() []*LogicalDevice {
-	if m != nil {
-		return m.LogicalDevices
+func (x *Voltha) GetLogicalDevices() []*LogicalDevice {
+	if x != nil {
+		return x.LogicalDevices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDevices() []*Device {
-	if m != nil {
-		return m.Devices
+func (x *Voltha) GetDevices() []*Device {
+	if x != nil {
+		return x.Devices
 	}
 	return nil
 }
 
-func (m *Voltha) GetDeviceTypes() []*DeviceType {
-	if m != nil {
-		return m.DeviceTypes
+func (x *Voltha) GetDeviceTypes() []*DeviceType {
+	if x != nil {
+		return x.DeviceTypes
 	}
 	return nil
 }
 
-func (m *Voltha) GetEventFilters() []*EventFilter {
-	if m != nil {
-		return m.EventFilters
+func (x *Voltha) GetEventFilters() []*EventFilter {
+	if x != nil {
+		return x.EventFilters
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
-	if m != nil {
-		return m.OmciMibDatabase
+func (x *Voltha) GetOmciMibDatabase() []*omci.MibDeviceData {
+	if x != nil {
+		return x.OmciMibDatabase
 	}
 	return nil
 }
 
-func (m *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
-	if m != nil {
-		return m.OmciAlarmDatabase
+func (x *Voltha) GetOmciAlarmDatabase() []*omci.AlarmDeviceData {
+	if x != nil {
+		return x.OmciAlarmDatabase
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*CoreInstance)(nil), "voltha.CoreInstance")
-	proto.RegisterType((*CoreInstances)(nil), "voltha.CoreInstances")
-	proto.RegisterType((*Voltha)(nil), "voltha.Voltha")
-}
+var File_voltha_protos_voltha_proto protoreflect.FileDescriptor
 
-func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
+const file_voltha_protos_voltha_proto_rawDesc = "" +
+	"\n" +
+	"\x1avoltha_protos/voltha.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1avoltha_protos/common.proto\x1a\x1avoltha_protos/health.proto\x1a\"voltha_protos/logical_device.proto\x1a\x1avoltha_protos/device.proto\x1a\x1bvoltha_protos/adapter.proto\x1a\x1fvoltha_protos/openflow_13.proto\x1a\x1avoltha_protos/events.proto\x1a\x1evoltha_protos/extensions.proto\x1a'voltha_protos/voip_system_profile.proto\x1a%voltha_protos/voip_user_profile.proto\x1a\x1fvoltha_protos/omci_mib_db.proto\x1a!voltha_protos/omci_alarm_db.proto\x1a\x1dvoltha_protos/omci_test.proto\"]\n" +
+	"\fCoreInstance\x12\x1f\n" +
+	"\vinstance_id\x18\x01 \x01(\tR\n" +
+	"instanceId\x12,\n" +
+	"\x06health\x18\x02 \x01(\v2\x14.health.HealthStatusR\x06health\";\n" +
+	"\rCoreInstances\x12*\n" +
+	"\x05items\x18\x01 \x03(\v2\x14.voltha.CoreInstanceR\x05items\"\xc0\x03\n" +
+	"\x06Voltha\x12\x18\n" +
+	"\aversion\x18\x01 \x01(\tR\aversion\x12,\n" +
+	"\badapters\x18\x02 \x03(\v2\x10.adapter.AdapterR\badapters\x12F\n" +
+	"\x0flogical_devices\x18\x03 \x03(\v2\x1d.logical_device.LogicalDeviceR\x0elogicalDevices\x12(\n" +
+	"\adevices\x18\x04 \x03(\v2\x0e.device.DeviceR\adevices\x125\n" +
+	"\fdevice_types\x18\x05 \x03(\v2\x12.device.DeviceTypeR\vdeviceTypes\x127\n" +
+	"\revent_filters\x18\a \x03(\v2\x12.event.EventFilterR\feventFilters\x12?\n" +
+	"\x11omci_mib_database\x18\x1c \x03(\v2\x13.omci.MibDeviceDataR\x0fomciMibDatabase\x12E\n" +
+	"\x13omci_alarm_database\x18\x1d \x03(\v2\x15.omci.AlarmDeviceDataR\x11omciAlarmDatabaseJ\x04\b\x06\x10\a2\xbb;\n" +
+	"\rVolthaService\x12D\n" +
+	"\tGetVoltha\x12\x16.google.protobuf.Empty\x1a\x0e.voltha.Voltha\"\x0f\x82\xd3\xe4\x93\x02\t\x12\a/api/v1\x12]\n" +
+	"\x11ListCoreInstances\x12\x16.google.protobuf.Empty\x1a\x15.voltha.CoreInstances\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/instances\x12S\n" +
+	"\x0fGetCoreInstance\x12\n" +
+	".common.ID\x1a\x14.voltha.CoreInstance\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/v1/instances/{id}\x12S\n" +
+	"\fListAdapters\x12\x16.google.protobuf.Empty\x1a\x11.adapter.Adapters\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/api/v1/adapters\x12m\n" +
+	"\x12ListLogicalDevices\x12\x16.google.protobuf.Empty\x1a\x1e.logical_device.LogicalDevices\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/v1/logical_devices\x12c\n" +
+	"\x10GetLogicalDevice\x12\n" +
+	".common.ID\x1a\x1d.logical_device.LogicalDevice\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/v1/logical_devices/{id}\x12n\n" +
+	"\x16ListLogicalDevicePorts\x12\n" +
+	".common.ID\x1a\x1c.logical_device.LogicalPorts\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/ports\x12\x88\x01\n" +
+	"\x14GetLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x1b.logical_device.LogicalPort\"4\x82\xd3\xe4\x93\x02.\x12,/api/v1/logical_devices/{id}/ports/{port_id}\x12\x8d\x01\n" +
+	"\x17EnableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\";\x82\xd3\xe4\x93\x025\"3/api/v1/logical_devices/{id}/ports/{port_id}/enable\x12\x8f\x01\n" +
+	"\x18DisableLogicalDevicePort\x12\x1d.logical_device.LogicalPortId\x1a\x16.google.protobuf.Empty\"<\x82\xd3\xe4\x93\x026\"4/api/v1/logical_devices/{id}/ports/{port_id}/disable\x12d\n" +
+	"\x16ListLogicalDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"*\x82\xd3\xe4\x93\x02$\x12\"/api/v1/logical_devices/{id}/flows\x12\x83\x01\n" +
+	"\x1cUpdateLogicalDeviceFlowTable\x12\x1c.openflow_13.FlowTableUpdate\x1a\x16.google.protobuf.Empty\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/logical_devices/{id}/flows\x12\x84\x01\n" +
+	"\x1dUpdateLogicalDeviceMeterTable\x12\x1b.openflow_13.MeterModUpdate\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(:\x01*\"#/api/v1/logical_devices/{id}/meters\x12g\n" +
+	"\x17ListLogicalDeviceMeters\x12\n" +
+	".common.ID\x1a\x13.openflow_13.Meters\"+\x82\xd3\xe4\x93\x02%\x12#/api/v1/logical_devices/{id}/meters\x12t\n" +
+	"\x1bListLogicalDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"0\x82\xd3\xe4\x93\x02*\x12(/api/v1/logical_devices/{id}/flow_groups\x12\x93\x01\n" +
+	"!UpdateLogicalDeviceFlowGroupTable\x12!.openflow_13.FlowGroupTableUpdate\x1a\x16.google.protobuf.Empty\"3\x82\xd3\xe4\x93\x02-:\x01*\"(/api/v1/logical_devices/{id}/flow_groups\x12O\n" +
+	"\vListDevices\x12\x16.google.protobuf.Empty\x1a\x0f.device.Devices\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/api/v1/devices\x12O\n" +
+	"\rListDeviceIds\x12\x16.google.protobuf.Empty\x1a\v.common.IDs\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/v1/deviceids\x12U\n" +
+	"\x10ReconcileDevices\x12\v.common.IDs\x1a\x16.google.protobuf.Empty\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/v1/deviceids\x12E\n" +
+	"\tGetDevice\x12\n" +
+	".common.ID\x1a\x0e.device.Device\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/devices/{id}\x12J\n" +
+	"\fCreateDevice\x12\x0e.device.Device\x1a\x0e.device.Device\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/api/v1/devices\x12W\n" +
+	"\fEnableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/enable\x12Y\n" +
+	"\rDisableDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e\"\x1c/api/v1/devices/{id}/disable\x12W\n" +
+	"\fRebootDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d\"\x1b/api/v1/devices/{id}/reboot\x12W\n" +
+	"\fDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d*\x1b/api/v1/devices/{id}/delete\x12b\n" +
+	"\x11ForceDeleteDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#*!/api/v1/devices/{id}/force_delete\x12x\n" +
+	"\rDownloadImage\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"9\x82\xd3\xe4\x93\x020:\x01*\"+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x85\x01\n" +
+	"\x16GetImageDownloadStatus\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"=\x82\xd3\xe4\x93\x024\x122/api/v1/devices/{id}/image_downloads/{name}/status\x88\x02\x01\x12x\n" +
+	"\x10GetImageDownload\x12\x15.device.ImageDownload\x1a\x15.device.ImageDownload\"6\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12i\n" +
+	"\x12ListImageDownloads\x12\n" +
+	".common.ID\x1a\x16.device.ImageDownloads\"/\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/{id}/image_downloads\x88\x02\x01\x12{\n" +
+	"\x13CancelImageDownload\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"6\x82\xd3\xe4\x93\x02-*+/api/v1/devices/{id}/image_downloads/{name}\x88\x02\x01\x12\x8b\x01\n" +
+	"\x13ActivateImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_update\x88\x02\x01\x12\x89\x01\n" +
+	"\x11RevertImageUpdate\x12\x15.device.ImageDownload\x1a\x15.common.OperationResp\"F\x82\xd3\xe4\x93\x02=:\x01*\"8/api/v1/devices/{id}/image_downloads/{name}/image_revert\x88\x02\x01\x12\x88\x01\n" +
+	"\x15DownloadImageToDevice\x12\".device.DeviceImageDownloadRequest\x1a\x1b.device.DeviceImageResponse\".\x82\xd3\xe4\x93\x02(\x12&/api/v1/devices/images/download_images\x12w\n" +
+	"\x0eGetImageStatus\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\",\x82\xd3\xe4\x93\x02&\x12$/api/v1/devices/images/images_status\x12\x89\x01\n" +
+	"\x19AbortImageUpgradeToDevice\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"3\x82\xd3\xe4\x93\x02-\x12+/api/v1/devices/images/abort_upgrade_images\x12V\n" +
+	"\fGetOnuImages\x12\n" +
+	".common.ID\x1a\x11.device.OnuImages\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/onu_images\x12{\n" +
+	"\rActivateImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"1\x82\xd3\xe4\x93\x02+:\x01*\"&/api/v1/devices/images/activate_images\x12w\n" +
+	"\vCommitImage\x12\x1a.device.DeviceImageRequest\x1a\x1b.device.DeviceImageResponse\"/\x82\xd3\xe4\x93\x02):\x01*\"$/api/v1/devices/images/commit_images\x12P\n" +
+	"\x0fListDevicePorts\x12\n" +
+	".common.ID\x1a\r.device.Ports\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/ports\x12]\n" +
+	"\x13ListDevicePmConfigs\x12\n" +
+	".common.ID\x1a\x11.device.PmConfigs\"'\x82\xd3\xe4\x93\x02!\x12\x1f/api/v1/devices/{id}/pm_configs\x12n\n" +
+	"\x15UpdateDevicePmConfigs\x12\x11.device.PmConfigs\x1a\x16.google.protobuf.Empty\"*\x82\xd3\xe4\x93\x02$:\x01*\"\x1f/api/v1/devices/{id}/pm_configs\x12U\n" +
+	"\x0fListDeviceFlows\x12\n" +
+	".common.ID\x1a\x12.openflow_13.Flows\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/devices/{id}/flows\x12e\n" +
+	"\x14ListDeviceFlowGroups\x12\n" +
+	".common.ID\x1a\x17.openflow_13.FlowGroups\"(\x82\xd3\xe4\x93\x02\"\x12 /api/v1/devices/{id}/flow_groups\x12\\\n" +
+	"\x0fListDeviceTypes\x12\x16.google.protobuf.Empty\x1a\x13.device.DeviceTypes\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/device_types\x12R\n" +
+	"\rGetDeviceType\x12\n" +
+	".common.ID\x1a\x12.device.DeviceType\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/device_types/{id}\x12F\n" +
+	"\x10StreamPacketsOut\x12\x16.openflow_13.PacketOut\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12E\n" +
+	"\x10ReceivePacketsIn\x12\x16.google.protobuf.Empty\x1a\x15.openflow_13.PacketIn\"\x000\x01\x12K\n" +
+	"\x13ReceiveChangeEvents\x12\x16.google.protobuf.Empty\x1a\x18.openflow_13.ChangeEvent\"\x000\x01\x12]\n" +
+	"\x11CreateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/api/v1/event_filters\x12U\n" +
+	"\x0eGetEventFilter\x12\n" +
+	".common.ID\x1a\x13.event.EventFilters\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/api/v1/event_filters/{id}\x12b\n" +
+	"\x11UpdateEventFilter\x12\x12.event.EventFilter\x1a\x12.event.EventFilter\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\x1a\x1a/api/v1/event_filters/{id}\x12c\n" +
+	"\x11DeleteEventFilter\x12\x12.event.EventFilter\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c*\x1a/api/v1/event_filters/{id}\x12^\n" +
+	"\x10ListEventFilters\x12\x16.google.protobuf.Empty\x1a\x13.event.EventFilters\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v1/event_filters\x12L\n" +
+	"\tGetImages\x12\n" +
+	".common.ID\x1a\x0e.device.Images\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/devices/{id}/images\x12X\n" +
+	"\bSelfTest\x12\n" +
+	".common.ID\x1a\x18.device.SelfTestResponse\"&\x82\xd3\xe4\x93\x02 \"\x1e/api/v1/devices/{id}/self_test\x12V\n" +
+	"\x10GetMibDeviceData\x12\n" +
+	".common.ID\x1a\x13.omci.MibDeviceData\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/v1/openomci/{id}/mib\x12\\\n" +
+	"\x12GetAlarmDeviceData\x12\n" +
+	".common.ID\x1a\x15.omci.AlarmDeviceData\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v1/openomci/{id}/alarm\x12s\n" +
+	"\rSimulateAlarm\x12\x1c.device.SimulateAlarmRequest\x1a\x15.common.OperationResp\"-\x82\xd3\xe4\x93\x02':\x01*\"\"/api/v1/devices/{id}/simulate_larm\x12M\n" +
+	"\n" +
+	"EnablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/v1/EnablePort\x12O\n" +
+	"\vDisablePort\x12\f.device.Port\x1a\x16.google.protobuf.Empty\"\x1a\x82\xd3\xe4\x93\x02\x14:\x01*\"\x0f/v1/DisablePort\x12^\n" +
+	"\vGetExtValue\x12\x19.extension.ValueSpecifier\x1a\x17.extension.ReturnValues\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/GetExtValue\x12W\n" +
+	"\vSetExtValue\x12\x13.extension.ValueSet\x1a\x16.google.protobuf.Empty\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/api/v1/SetExtValue\x12d\n" +
+	"\x13StartOmciTestAction\x12\x15.omci.OmciTestRequest\x1a\x12.omci.TestResponse\"\"\x82\xd3\xe4\x93\x02\x1c:\x01*\"\x17/api/v1/start_omci_test\x12\x85\x01\n" +
+	"\x14PutVoipSystemProfile\x12-.voip_system_profile.VoipSystemProfileRequest\x1a\x16.google.protobuf.Empty\"&\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/v1/voip_system_profile\x12p\n" +
+	"\x17DeleteVoipSystemProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/v1/voip_system_profile/{key}/delete\x12}\n" +
+	"\x12PutVoipUserProfile\x12).voip_user_profile.VoipUserProfileRequest\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v1/voip_user_profile\x12l\n" +
+	"\x15DeleteVoipUserProfile\x12\v.common.Key\x1a\x16.google.protobuf.Empty\".\x82\xd3\xe4\x93\x02(*&/api/v1/voip_user_profile/{key}/delete\x12Z\n" +
+	"\x10DisableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"\"\x82\xd3\xe4\x93\x02\x1c\"\x1a/api/v1/disable_onu_device\x12X\n" +
+	"\x0fEnableOnuDevice\x12\n" +
+	".common.ID\x1a\x16.google.protobuf.Empty\"!\x82\xd3\xe4\x93\x02\x1b\"\x19/api/v1/enable_onu_device\x12|\n" +
+	"\x16DisableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\")\x82\xd3\xe4\x93\x02#\"!/api/v1/disable_onu_serial_number\x12z\n" +
+	"\x15EnableOnuSerialNumber\x12\x1f.device.OnuSerialNumberOnOLTPon\x1a\x16.google.protobuf.Empty\"(\x82\xd3\xe4\x93\x02\"\" /api/v1/enable_onu_serial_number\x12[\n" +
+	"\fUpdateDevice\x12\x14.device.UpdateDevice\x1a\x16.google.protobuf.Empty\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x15/api/v1/update_deviceBl\n" +
+	"\x13org.opencord.volthaB\fVolthaProtosZ.github.com/opencord/voltha-protos/v5/go/voltha\xaa\x02\x16Opencord.Voltha.VolthaP\x02b\x06proto3"
 
-var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2389 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xeb, 0x72, 0x1b, 0xb7,
-	0x15, 0x0e, 0xe5, 0xc4, 0x17, 0x88, 0xba, 0x10, 0xd4, 0x85, 0xa2, 0x24, 0x4b, 0x82, 0x6f, 0x32,
-	0x6d, 0x93, 0xbe, 0xa6, 0x6d, 0xdc, 0x4c, 0xc7, 0xd1, 0xad, 0x4a, 0xec, 0x52, 0x43, 0xda, 0x72,
-	0x9a, 0xc6, 0xd9, 0x59, 0x92, 0x10, 0xbd, 0x93, 0xe5, 0x2e, 0xbb, 0x00, 0x25, 0xab, 0xaa, 0xff,
-	0xb4, 0xcd, 0x8c, 0x3b, 0x9d, 0x4e, 0x7f, 0xe4, 0x2d, 0xfa, 0x0a, 0xfd, 0xd3, 0x77, 0xe8, 0x2b,
-	0xf4, 0x41, 0x3a, 0x38, 0x00, 0xc8, 0xbd, 0x60, 0x29, 0xd1, 0xf5, 0x4c, 0xfe, 0x98, 0x5e, 0x9c,
-	0x83, 0xef, 0xfb, 0x70, 0x70, 0x80, 0x05, 0xce, 0x0a, 0x15, 0x0f, 0x7d, 0x97, 0xbf, 0xb6, 0xad,
-	0x6e, 0xe0, 0x73, 0x9f, 0x55, 0xe4, 0x53, 0x19, 0x9e, 0xf0, 0x79, 0xf9, 0x54, 0x5c, 0x6a, 0xfb,
-	0x7e, 0xdb, 0xa5, 0x15, 0xbb, 0xeb, 0x54, 0x6c, 0xcf, 0xf3, 0xb9, 0xcd, 0x1d, 0xdf, 0x63, 0xd2,
-	0xab, 0xb8, 0xa8, 0xac, 0xf0, 0xd4, 0xe8, 0x1d, 0x54, 0x68, 0xa7, 0xcb, 0x8f, 0x95, 0x31, 0x06,
-	0xdf, 0xf4, 0x3b, 0x1d, 0xdf, 0x33, 0xdb, 0x5e, 0x53, 0xdb, 0xe5, 0xaf, 0x95, 0x8d, 0x44, 0x6d,
-	0xae, 0xdf, 0x76, 0x9a, 0xb6, 0x6b, 0xb5, 0xe8, 0xa1, 0xd3, 0xa4, 0xe6, 0xfe, 0x11, 0xdb, 0x62,
-	0xd4, 0x66, 0xb7, 0xec, 0x2e, 0xa7, 0x81, 0x32, 0xae, 0x44, 0x8d, 0x7e, 0x97, 0x7a, 0x07, 0xae,
-	0x7f, 0x64, 0xdd, 0x7b, 0x60, 0x46, 0xa6, 0x87, 0xd4, 0xe3, 0x7a, 0xb8, 0x97, 0x63, 0xb6, 0x37,
-	0x9c, 0x7a, 0x2c, 0x14, 0x8e, 0x1b, 0xf1, 0x80, 0x3a, 0x5d, 0x8b, 0x1d, 0x33, 0x4e, 0x3b, 0xa2,
-	0xe9, 0xc0, 0x71, 0xb5, 0xc4, 0x6b, 0x06, 0xc7, 0x1e, 0xa3, 0x41, 0xcc, 0x2d, 0x2e, 0xb6, 0xd3,
-	0x74, 0xac, 0x8e, 0xd3, 0xb0, 0x5a, 0x0d, 0xe5, 0xb0, 0x66, 0x70, 0xb0, 0x5d, 0x3b, 0xe8, 0x0c,
-	0x5c, 0x96, 0x0d, 0x2e, 0x9c, 0x32, 0x2e, 0xcd, 0xe4, 0x15, 0xca, 0x6e, 0xf8, 0x01, 0xdd, 0xf5,
-	0x18, 0xb7, 0xbd, 0x26, 0xc5, 0x2b, 0x68, 0xdc, 0x51, 0xff, 0xb7, 0x9c, 0x56, 0x21, 0xb3, 0x9a,
-	0x59, 0xbf, 0x54, 0x43, 0xba, 0x69, 0xb7, 0x85, 0x6f, 0xa3, 0xf3, 0x72, 0xb6, 0x0a, 0x63, 0xab,
-	0x99, 0xf5, 0xf1, 0xfb, 0x33, 0x65, 0x35, 0x79, 0xbf, 0x86, 0x9f, 0x3a, 0xb7, 0x79, 0x8f, 0xd5,
-	0x94, 0x0f, 0x79, 0x8c, 0x26, 0xc2, 0xf0, 0x0c, 0x97, 0xd0, 0x27, 0x0e, 0xa7, 0x1d, 0x56, 0xc8,
-	0xac, 0x9e, 0x83, 0xde, 0x2a, 0xeb, 0xc2, 0x5e, 0x35, 0xe9, 0x42, 0xfe, 0x7d, 0x0e, 0x9d, 0xdf,
-	0x07, 0x33, 0x2e, 0xa0, 0x0b, 0x87, 0x34, 0x10, 0xb1, 0x56, 0x92, 0xf4, 0x23, 0xbe, 0x8d, 0x2e,
-	0xaa, 0x19, 0x66, 0x85, 0x31, 0xc0, 0x9c, 0x2e, 0xeb, 0x29, 0x7f, 0x22, 0x7f, 0x6b, 0x7d, 0x0f,
-	0xbc, 0x8d, 0xa6, 0xa2, 0xf9, 0xc4, 0x0a, 0xe7, 0xa0, 0xd3, 0x72, 0x39, 0x96, 0x67, 0x4f, 0xe5,
-	0xe3, 0x26, 0x3c, 0xd5, 0x26, 0xdd, 0xf0, 0x23, 0xc3, 0xeb, 0xe8, 0x82, 0xee, 0xff, 0x31, 0xf4,
-	0x9f, 0x2c, 0xab, 0x7e, 0xaa, 0x83, 0x36, 0xe3, 0x47, 0x28, 0x2b, 0xff, 0x6b, 0xf1, 0xe3, 0x2e,
-	0x65, 0x85, 0x4f, 0xc0, 0x1d, 0x47, 0xdd, 0x9f, 0x1f, 0x77, 0x69, 0x6d, 0xbc, 0xd5, 0xff, 0x3f,
-	0xc3, 0x3f, 0x43, 0x13, 0x90, 0x7a, 0xd6, 0x81, 0xe3, 0xc2, 0xd8, 0x2e, 0xa8, 0x7e, 0xd0, 0x5a,
-	0xde, 0x12, 0xff, 0x6e, 0x83, 0xa9, 0x96, 0xa5, 0x83, 0x07, 0x86, 0x7f, 0x85, 0x72, 0x83, 0x3c,
-	0xb1, 0xb9, 0xdd, 0xb0, 0x19, 0x2d, 0x2c, 0x41, 0xe7, 0x7c, 0x59, 0x58, 0xca, 0xcf, 0x9c, 0x86,
-	0x64, 0xdd, 0xb4, 0xb9, 0x5d, 0x9b, 0x12, 0x6d, 0xa2, 0x49, 0xf9, 0xe2, 0x2d, 0x94, 0x0f, 0xe7,
-	0x91, 0x86, 0x58, 0x06, 0x88, 0x59, 0x09, 0xf1, 0x44, 0xd8, 0x42, 0x20, 0x40, 0x29, 0x1b, 0x95,
-	0xff, 0x97, 0x1f, 0x5f, 0x3c, 0x3f, 0x7d, 0xe1, 0xfe, 0xbf, 0x1e, 0xa3, 0x09, 0x39, 0x85, 0x75,
-	0x1a, 0x08, 0x77, 0xbc, 0x89, 0x2e, 0xed, 0x50, 0xae, 0xa6, 0x75, 0xae, 0x2c, 0x37, 0x90, 0xb2,
-	0xde, 0x40, 0xca, 0x5b, 0x62, 0x03, 0x29, 0x4e, 0xea, 0xb4, 0x90, 0x7e, 0x64, 0xea, 0x4f, 0xff,
-	0xf9, 0xef, 0x8f, 0x63, 0x97, 0xf0, 0x05, 0xd8, 0x87, 0x0e, 0xef, 0xe1, 0x57, 0x28, 0xf7, 0xd4,
-	0x61, 0x3c, 0x9a, 0x5b, 0x69, 0x68, 0xb3, 0xa6, 0x24, 0x63, 0x64, 0x01, 0x40, 0xf3, 0x38, 0xa7,
-	0x40, 0x2b, 0x4e, 0x1f, 0xa9, 0x8e, 0xa6, 0x76, 0x68, 0x04, 0x1d, 0xa3, 0xb2, 0xda, 0xc0, 0x76,
-	0x37, 0x8b, 0xc6, 0xac, 0x25, 0x97, 0x01, 0xaf, 0x80, 0xe7, 0x12, 0x78, 0x95, 0x13, 0xa7, 0xf5,
-	0x16, 0xd7, 0x51, 0x56, 0x68, 0x7e, 0xa2, 0x73, 0x31, 0x4d, 0x6e, 0x2e, 0x9e, 0xbf, 0x8c, 0x14,
-	0x00, 0x1a, 0xe3, 0x69, 0x0d, 0xdd, 0x4f, 0xe8, 0x0e, 0xc2, 0x02, 0xf4, 0x69, 0x34, 0x3d, 0xd3,
-	0xa0, 0x2f, 0x0f, 0xcd, 0x72, 0x46, 0x56, 0x80, 0x67, 0x01, 0xcf, 0x6b, 0x9e, 0xd8, 0x62, 0xc1,
-	0x4d, 0x34, 0xbd, 0x43, 0xa3, 0x6c, 0x91, 0xc8, 0x0c, 0x5f, 0x46, 0xe4, 0x2a, 0xe0, 0x5f, 0xc6,
-	0x4b, 0x29, 0xf8, 0x32, 0x50, 0x1e, 0x9a, 0x4b, 0x8c, 0x69, 0xcf, 0x0f, 0x38, 0x8b, 0x50, 0x2d,
-	0xa5, 0x50, 0x81, 0x27, 0x29, 0x01, 0xd3, 0x55, 0x4c, 0x86, 0x31, 0x55, 0xba, 0x80, 0xfa, 0x2e,
-	0x83, 0x66, 0xe2, 0xa3, 0x12, 0x28, 0x78, 0x79, 0x08, 0xc5, 0x6e, 0xab, 0xb8, 0x38, 0xc4, 0x4c,
-	0x1e, 0x82, 0x80, 0x32, 0xbe, 0x7d, 0xba, 0x80, 0xca, 0x89, 0xf8, 0xb1, 0xc4, 0xd0, 0xff, 0x9e,
-	0x41, 0xf3, 0x5b, 0x9e, 0xdd, 0x70, 0xe9, 0xc8, 0x6a, 0x52, 0xe6, 0x9c, 0x3c, 0x06, 0x21, 0x8f,
-	0xc8, 0x83, 0x51, 0x84, 0x54, 0x28, 0x88, 0xc0, 0xff, 0xc8, 0xa0, 0xc2, 0xa6, 0xc3, 0x3e, 0xa8,
-	0xa0, 0x5f, 0x82, 0xa0, 0x4f, 0xc9, 0xc3, 0x91, 0x04, 0xb5, 0xa4, 0x0a, 0xdc, 0x32, 0x24, 0xc7,
-	0xb6, 0xeb, 0x1f, 0x45, 0x93, 0x03, 0x97, 0xc3, 0x6f, 0x76, 0xb0, 0x9f, 0x31, 0x25, 0x0e, 0x00,
-	0xeb, 0xcf, 0x19, 0xb4, 0xf4, 0xa2, 0xdb, 0xb2, 0x39, 0x4d, 0x10, 0x3d, 0x07, 0x19, 0x4b, 0x09,
-	0x02, 0x68, 0x97, 0x7d, 0x52, 0x87, 0x7e, 0x07, 0x24, 0xdc, 0x20, 0x67, 0x90, 0xf0, 0x59, 0xa6,
-	0x84, 0xff, 0x92, 0x41, 0xcb, 0x06, 0x15, 0xcf, 0x28, 0xa7, 0x81, 0x94, 0xb1, 0x18, 0x91, 0x01,
-	0x86, 0x67, 0x7e, 0xeb, 0x14, 0x15, 0x65, 0x50, 0xb1, 0x4e, 0xae, 0x0c, 0x55, 0xd1, 0x11, 0x60,
-	0x20, 0xa3, 0x8d, 0xe6, 0x13, 0x21, 0x07, 0xaa, 0x68, 0xcc, 0xf3, 0x49, 0x2d, 0x8c, 0xdc, 0x02,
-	0xae, 0x6b, 0xf8, 0x2c, 0x5c, 0x98, 0xa3, 0x45, 0xe3, 0xdc, 0xee, 0x04, 0x7e, 0xaf, 0x1b, 0x25,
-	0x9b, 0x4f, 0xc4, 0x5f, 0x3a, 0x91, 0xbb, 0x40, 0x58, 0xc2, 0xeb, 0xa7, 0x86, 0xd8, 0x6a, 0x4b,
-	0xd8, 0x1f, 0x33, 0x68, 0x2d, 0x65, 0xae, 0x01, 0x53, 0x46, 0x7a, 0xcd, 0x4c, 0x78, 0x96, 0x59,
-	0x7f, 0x00, 0x92, 0xee, 0x90, 0x33, 0x4b, 0x12, 0x41, 0xaf, 0xa2, 0x71, 0x11, 0x8b, 0xd3, 0x76,
-	0xf4, 0xa9, 0xe8, 0x41, 0x82, 0x91, 0x79, 0x20, 0xcb, 0xe1, 0x29, 0x4d, 0xa6, 0xb7, 0xee, 0x2a,
-	0x9a, 0x18, 0x00, 0xee, 0xb6, 0xd2, 0x21, 0xc7, 0x07, 0x61, 0x36, 0xbc, 0x24, 0x25, 0x9c, 0xd3,
-	0x62, 0xf8, 0x05, 0x9a, 0xae, 0xd1, 0xa6, 0xef, 0x35, 0x1d, 0x97, 0x6a, 0x99, 0xe1, 0xbe, 0xa9,
-	0xf1, 0x58, 0x02, 0xcc, 0x39, 0x92, 0xc4, 0x14, 0x03, 0xdf, 0x82, 0x03, 0x82, 0xe1, 0xdd, 0x12,
-	0x3b, 0x62, 0x69, 0x18, 0x3c, 0x13, 0x1b, 0xa9, 0x7c, 0x89, 0x7c, 0x89, 0xb2, 0x1b, 0x01, 0xb5,
-	0xb9, 0x92, 0x86, 0x63, 0xbd, 0x13, 0x68, 0x45, 0x40, 0x9b, 0x21, 0xf1, 0xb8, 0x09, 0x49, 0x2f,
-	0x51, 0x56, 0x6e, 0xca, 0x06, 0x55, 0x69, 0x83, 0xbc, 0x02, 0x78, 0xcb, 0x64, 0xd1, 0xa4, 0x4e,
-	0x6f, 0xaf, 0xbf, 0x45, 0x13, 0x6a, 0x77, 0x1d, 0x01, 0x59, 0xbd, 0x44, 0xc9, 0x92, 0x11, 0x59,
-	0xef, 0x93, 0x2f, 0x51, 0xb6, 0x46, 0x1b, 0xbe, 0xcf, 0x3f, 0x98, 0xe6, 0x00, 0xe0, 0x04, 0xf0,
-	0x26, 0x75, 0x29, 0x7f, 0x8f, 0x60, 0x94, 0xcc, 0xc0, 0x2d, 0x80, 0xc3, 0x0d, 0x94, 0xdb, 0xf6,
-	0x83, 0x26, 0x1d, 0x19, 0xfd, 0x26, 0xa0, 0x5f, 0x29, 0xad, 0x19, 0xd1, 0x0f, 0x04, 0xa6, 0xa5,
-	0x38, 0xde, 0xa0, 0x89, 0x4d, 0xff, 0xc8, 0x73, 0x7d, 0xbb, 0xb5, 0xdb, 0xb1, 0xdb, 0x14, 0xcf,
-	0xea, 0x34, 0x80, 0x47, 0x6d, 0x2b, 0xce, 0x6a, 0xda, 0x6a, 0x97, 0x06, 0x70, 0xe5, 0xad, 0x51,
-	0xd6, 0x25, 0xbf, 0x00, 0xa6, 0xbb, 0xe4, 0x96, 0x91, 0xc9, 0x11, 0x10, 0x56, 0x4b, 0x61, 0xb0,
-	0xca, 0x89, 0x67, 0x77, 0xe8, 0xdb, 0xcf, 0x32, 0xa5, 0x77, 0x63, 0x19, 0xfc, 0x43, 0x06, 0xcd,
-	0xed, 0x50, 0x1e, 0xa1, 0x91, 0x97, 0xa5, 0x74, 0x0d, 0xa6, 0x66, 0xf2, 0x39, 0x68, 0x78, 0x88,
-	0xef, 0x8f, 0xa0, 0xa1, 0xc2, 0x80, 0x49, 0xe8, 0x78, 0x03, 0x27, 0xb8, 0x08, 0xe4, 0x88, 0x02,
-	0x3e, 0x95, 0xdb, 0x19, 0x1e, 0x25, 0x08, 0x82, 0xd9, 0x91, 0x47, 0xd5, 0x08, 0x18, 0x8b, 0x4d,
-	0xb0, 0x89, 0x90, 0x91, 0x0a, 0x30, 0x5e, 0xc7, 0x57, 0xcf, 0xc2, 0x28, 0xa8, 0x4e, 0x50, 0x7e,
-	0x43, 0x9c, 0xbc, 0xdd, 0x33, 0x8e, 0xd3, 0x38, 0xd9, 0x6a, 0x9c, 0xa5, 0x51, 0xc7, 0xf9, 0xb7,
-	0x0c, 0xca, 0x3f, 0x69, 0x72, 0xe7, 0xd0, 0xe6, 0x14, 0x88, 0xe4, 0xeb, 0x61, 0x44, 0xf6, 0x6d,
-	0x60, 0xff, 0x9c, 0xfc, 0x7c, 0x94, 0x69, 0x96, 0xcd, 0x3d, 0xe0, 0x53, 0x79, 0xf7, 0xd7, 0x0c,
-	0xca, 0xd5, 0xe8, 0x21, 0x0d, 0xf8, 0x4f, 0xa2, 0x25, 0x00, 0x6a, 0xa5, 0xe5, 0x5d, 0x06, 0xcd,
-	0x46, 0x96, 0xdf, 0x73, 0x5f, 0x2d, 0x73, 0x12, 0xdd, 0x8d, 0x23, 0xaa, 0x6a, 0xf4, 0xf7, 0x3d,
-	0xca, 0x78, 0x71, 0xd1, 0xe0, 0x23, 0xe4, 0xf9, 0x1e, 0xa3, 0xfa, 0x4c, 0x83, 0xaf, 0xc7, 0x25,
-	0x82, 0x0c, 0x56, 0xd1, 0xf2, 0x2c, 0xf9, 0x8c, 0x8f, 0xd0, 0xa4, 0x5e, 0x06, 0x6a, 0x15, 0x16,
-	0x8d, 0xf0, 0x67, 0xa0, 0xbe, 0x9d, 0x96, 0x9d, 0x8a, 0x5a, 0xfe, 0x58, 0x72, 0x09, 0x8a, 0xf9,
-	0x58, 0x78, 0xd2, 0xf0, 0xfb, 0xd3, 0xd1, 0x0e, 0xec, 0xd6, 0x20, 0x0e, 0xef, 0x2d, 0xe2, 0x41,
-	0xda, 0xa2, 0x54, 0x22, 0x6c, 0x41, 0x69, 0xf5, 0x24, 0x9d, 0x0e, 0xc2, 0x3e, 0xca, 0xee, 0x50,
-	0x5e, 0xf5, 0x7a, 0xbb, 0xf2, 0x39, 0xbc, 0x16, 0x73, 0x9a, 0xad, 0x6f, 0x26, 0x37, 0x80, 0x63,
-	0x0d, 0xaf, 0x18, 0xd3, 0xc0, 0xf7, 0x7a, 0x1a, 0xf7, 0x04, 0x4d, 0x44, 0x16, 0xc0, 0xfb, 0x0f,
-	0xeb, 0x1e, 0x50, 0xde, 0x22, 0x69, 0xd3, 0x6a, 0x2b, 0x1a, 0xc5, 0x2c, 0x5e, 0xd6, 0x47, 0x68,
-	0x7c, 0xc3, 0xef, 0x74, 0x1c, 0xfe, 0x7f, 0x52, 0xcb, 0x4d, 0xe7, 0x26, 0x49, 0x9b, 0xd6, 0x26,
-	0x90, 0x84, 0x88, 0xf7, 0xd0, 0xd4, 0xe0, 0x80, 0x95, 0xbc, 0xaf, 0x4e, 0x68, 0x32, 0x79, 0x41,
-	0x25, 0x00, 0xbf, 0x84, 0x8b, 0xc6, 0x60, 0xca, 0x8b, 0xe9, 0x2b, 0x94, 0x0f, 0x21, 0x76, 0x36,
-	0x7c, 0xef, 0xc0, 0x69, 0xa7, 0x4c, 0x53, 0xdf, 0x7c, 0xca, 0x34, 0x75, 0x3b, 0x56, 0x53, 0xe1,
-	0x78, 0x68, 0x56, 0x6e, 0x07, 0x71, 0x82, 0x24, 0x68, 0xea, 0xbb, 0x57, 0x5d, 0xaa, 0xc8, 0x69,
-	0x64, 0x22, 0x40, 0x2f, 0xc2, 0x01, 0x3a, 0xdb, 0x9d, 0x6d, 0x78, 0x94, 0xe4, 0x5d, 0x8d, 0xa2,
-	0x99, 0x28, 0xec, 0x28, 0xd7, 0x85, 0x75, 0x20, 0x20, 0x78, 0x35, 0x95, 0x40, 0x5f, 0x13, 0xbe,
-	0x0d, 0xab, 0x97, 0x45, 0xba, 0xb4, 0x13, 0x74, 0x3e, 0x59, 0xdd, 0x63, 0x69, 0xc7, 0x55, 0x59,
-	0x16, 0xc4, 0x35, 0x34, 0xd1, 0x3f, 0xf5, 0x0a, 0xff, 0x58, 0x64, 0x12, 0x78, 0x64, 0x0d, 0xe0,
-	0x16, 0xf1, 0x82, 0x09, 0x4e, 0x1e, 0x81, 0xb7, 0xd1, 0x74, 0x9d, 0x07, 0xd4, 0xee, 0xec, 0xd9,
-	0xcd, 0xef, 0x29, 0x67, 0xd5, 0x1e, 0xc7, 0x73, 0x91, 0x40, 0x48, 0x43, 0xb5, 0xc7, 0x53, 0xe7,
-	0xf7, 0xa3, 0xf5, 0x0c, 0xde, 0x82, 0x83, 0x3e, 0x75, 0x0e, 0xa9, 0x02, 0xda, 0xf5, 0x86, 0xd4,
-	0xda, 0x92, 0xf8, 0xbb, 0x1e, 0xf9, 0xe8, 0x6e, 0x06, 0x7f, 0x85, 0xf2, 0x0a, 0x66, 0xe3, 0xb5,
-	0xed, 0xb5, 0x29, 0xd4, 0x30, 0xd3, 0x83, 0x58, 0x88, 0x20, 0x85, 0xba, 0x00, 0xd8, 0x2b, 0x94,
-	0x93, 0xc7, 0xfb, 0x50, 0x25, 0x14, 0x1b, 0xaa, 0xa3, 0x45, 0x43, 0x1b, 0x59, 0x85, 0xd8, 0x15,
-	0xc9, 0xac, 0x8e, 0x5d, 0xa4, 0xd4, 0x2a, 0x53, 0x55, 0xbc, 0x1e, 0xc2, 0xd8, 0xd1, 0x9b, 0x6e,
-	0x02, 0xd3, 0x90, 0xaa, 0x11, 0x50, 0x39, 0x23, 0x0d, 0x94, 0x93, 0x2b, 0xee, 0x7d, 0x54, 0x5f,
-	0x03, 0x82, 0x95, 0xe2, 0x10, 0x02, 0x21, 0xbd, 0x89, 0x72, 0xf2, 0x04, 0x7d, 0x1a, 0x47, 0xda,
-	0x94, 0xab, 0x81, 0x94, 0x86, 0x0d, 0xe4, 0x3b, 0x34, 0x2d, 0x16, 0x43, 0x38, 0x00, 0x43, 0x56,
-	0x83, 0x21, 0x5a, 0xcb, 0x40, 0x32, 0x8f, 0xcd, 0x53, 0x80, 0x9f, 0xc2, 0x25, 0xd0, 0xf0, 0x5a,
-	0x9a, 0x8c, 0x1c, 0x5c, 0x98, 0xbe, 0x59, 0xe0, 0xc5, 0xf4, 0xa3, 0x09, 0xc3, 0x5f, 0xa3, 0x8b,
-	0x75, 0xea, 0x1e, 0x3c, 0xa7, 0x8c, 0x47, 0xc0, 0x0a, 0x1a, 0x4c, 0x5b, 0xfb, 0x9b, 0xff, 0x75,
-	0x80, 0x5d, 0x25, 0x97, 0x8d, 0xb0, 0x8c, 0xba, 0x07, 0xf0, 0x11, 0x05, 0xef, 0xc3, 0x69, 0x3a,
-	0x52, 0x51, 0x8f, 0xd7, 0x44, 0x12, 0x25, 0xf7, 0xe4, 0xd2, 0x15, 0x89, 0x2e, 0xfc, 0x54, 0x31,
-	0xc4, 0x69, 0xe0, 0x6f, 0x11, 0xde, 0xa1, 0x3c, 0x56, 0x66, 0x8f, 0x20, 0x9b, 0x2b, 0xf1, 0xc9,
-	0x78, 0x44, 0xb1, 0xa1, 0xa8, 0x8f, 0x19, 0x9a, 0xa8, 0x3b, 0x9d, 0x9e, 0x6b, 0x73, 0x0a, 0xfd,
-	0xf1, 0x52, 0x3f, 0x10, 0xe1, 0x66, 0xfd, 0x9a, 0x4c, 0x39, 0x15, 0x26, 0x8a, 0x59, 0xd1, 0x18,
-	0x29, 0x24, 0x4b, 0x20, 0x89, 0xbc, 0x7c, 0x86, 0x90, 0xbc, 0x44, 0x43, 0xed, 0x30, 0x1b, 0x7e,
-	0x1b, 0xa6, 0xa6, 0xa2, 0xaa, 0x3e, 0x90, 0x49, 0x01, 0x3f, 0xe8, 0xad, 0xea, 0x23, 0xea, 0xea,
-	0x3c, 0x02, 0xde, 0xe0, 0x92, 0x7f, 0x78, 0xaf, 0x12, 0xea, 0x2e, 0x00, 0xbf, 0x43, 0xe3, 0x62,
-	0xc9, 0xbf, 0xe1, 0xfb, 0xb6, 0xdb, 0xa3, 0x78, 0xa1, 0xdc, 0xff, 0xbc, 0x57, 0x86, 0x96, 0x7a,
-	0x97, 0x36, 0x9d, 0x03, 0x87, 0x06, 0xc5, 0xf9, 0x90, 0xa9, 0x46, 0x79, 0x2f, 0xf0, 0xc0, 0x81,
-	0x91, 0x45, 0x80, 0x9f, 0xc5, 0x79, 0x1d, 0x91, 0x30, 0xe0, 0x4b, 0x34, 0x5e, 0x0f, 0x3d, 0xe6,
-	0x13, 0xf8, 0x34, 0x5d, 0x77, 0x02, 0x38, 0x8c, 0xd4, 0x42, 0xf9, 0x3a, 0xb7, 0x03, 0x5e, 0xed,
-	0x34, 0x1d, 0x91, 0xc4, 0xe2, 0xe8, 0xe5, 0x7b, 0x58, 0x25, 0x88, 0x6e, 0xd5, 0x93, 0x89, 0x65,
-	0x73, 0x24, 0xdb, 0xd5, 0x8a, 0x27, 0xfd, 0xb2, 0x3f, 0x13, 0x78, 0x56, 0xff, 0x5b, 0xa1, 0x08,
-	0xcf, 0x0f, 0x19, 0x34, 0xb3, 0xd7, 0xe3, 0xfb, 0xbe, 0xd3, 0xad, 0xc3, 0x27, 0xcd, 0x3d, 0xf9,
-	0xa9, 0x12, 0xdf, 0x29, 0x9b, 0xbe, 0x73, 0x26, 0xfc, 0x34, 0x7f, 0xda, 0x10, 0xf5, 0x8a, 0xeb,
-	0x27, 0xae, 0x01, 0x55, 0xe8, 0xe8, 0xa2, 0x79, 0xb9, 0xbd, 0x25, 0x95, 0xf4, 0x8b, 0x4f, 0x5f,
-	0xd1, 0xe3, 0x54, 0x1e, 0x55, 0x1f, 0x2c, 0xad, 0x0f, 0xe1, 0xa9, 0x9c, 0x7c, 0x4f, 0x8f, 0xfb,
-	0x75, 0x89, 0xb7, 0x08, 0xab, 0x81, 0xbf, 0x60, 0x34, 0xd0, 0x64, 0x37, 0xcb, 0xc9, 0xaf, 0xb6,
-	0x31, 0x9f, 0xd3, 0x86, 0xac, 0x0b, 0x39, 0x0b, 0x11, 0x29, 0x61, 0x44, 0x31, 0x60, 0x17, 0xcd,
-	0x0e, 0x06, 0x1c, 0x56, 0x70, 0xa6, 0xe1, 0xaa, 0x7b, 0x51, 0xe9, 0x7a, 0x2a, 0x47, 0x74, 0xb0,
-	0xdf, 0xa0, 0x69, 0xb5, 0x2e, 0xaa, 0x5e, 0x6f, 0x84, 0x1a, 0x8c, 0x4e, 0xa1, 0xc1, 0x41, 0x4d,
-	0xa2, 0x58, 0xe2, 0x5a, 0x20, 0x97, 0x26, 0xfe, 0x1a, 0x4d, 0xc9, 0x35, 0x3c, 0x1a, 0xb4, 0xda,
-	0x2e, 0x07, 0x61, 0x92, 0xc5, 0xb3, 0x30, 0xf2, 0x1f, 0xd1, 0xdc, 0x40, 0x75, 0x9d, 0x06, 0x8e,
-	0xed, 0xfe, 0xa6, 0xd7, 0x69, 0xd0, 0x00, 0xaf, 0x84, 0xae, 0x31, 0x61, 0x43, 0xd5, 0xab, 0x3e,
-	0x7d, 0xbe, 0xe7, 0x7b, 0xa7, 0x15, 0x95, 0xc8, 0x9a, 0x69, 0x40, 0x0c, 0x90, 0x2c, 0x4f, 0x72,
-	0xfc, 0x01, 0xcd, 0xf6, 0xc7, 0xf5, 0x61, 0xc8, 0xd5, 0xa9, 0x94, 0xac, 0x1a, 0x86, 0x1c, 0xe5,
-	0xfe, 0x1d, 0xca, 0x86, 0xcf, 0xf0, 0x78, 0x46, 0x53, 0x86, 0x5b, 0x53, 0x79, 0xd4, 0x5b, 0x78,
-	0x70, 0x10, 0x92, 0xa5, 0x03, 0x15, 0xd6, 0x2f, 0x5c, 0x94, 0xf7, 0x83, 0x36, 0x9c, 0xc3, 0x9a,
-	0x7e, 0xd0, 0x52, 0x5f, 0x3d, 0xbf, 0xc8, 0xca, 0xaf, 0xb2, 0x7b, 0xf0, 0x17, 0x05, 0xdf, 0x94,
-	0xdb, 0x0e, 0x7f, 0xdd, 0x6b, 0x88, 0x89, 0xac, 0x68, 0x4f, 0xf5, 0xb7, 0x24, 0x77, 0xf4, 0xdf,
-	0x37, 0x3c, 0xaa, 0xb4, 0x7d, 0xd5, 0xf6, 0xcf, 0xb1, 0xb9, 0xaa, 0xc6, 0xdb, 0x0f, 0x7f, 0xe4,
-	0xdd, 0x1b, 0x6b, 0x9c, 0x07, 0xff, 0x07, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x88, 0xec, 0xd4,
-	0x9c, 0x99, 0x22, 0x00, 0x00,
-}
+var (
+	file_voltha_protos_voltha_proto_rawDescOnce sync.Once
+	file_voltha_protos_voltha_proto_rawDescData []byte
+)
 
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConn
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
-
-// VolthaServiceClient is the client API for VolthaService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type VolthaServiceClient interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error)
-	// Receive control packet stream
-	ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error)
-	ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error)
-	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
-	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
-	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error)
-	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
-	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
-	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
-	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
-	// Update the Device configuration, for now only ip address updation is supported
-	UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error)
+func file_voltha_protos_voltha_proto_rawDescGZIP() []byte {
+	file_voltha_protos_voltha_proto_rawDescOnce.Do(func() {
+		file_voltha_protos_voltha_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)))
+	})
+	return file_voltha_protos_voltha_proto_rawDescData
 }
 
-type volthaServiceClient struct {
-	cc *grpc.ClientConn
+var file_voltha_protos_voltha_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_voltha_protos_voltha_proto_goTypes = []any{
+	(*CoreInstance)(nil),                                 // 0: voltha.CoreInstance
+	(*CoreInstances)(nil),                                // 1: voltha.CoreInstances
+	(*Voltha)(nil),                                       // 2: voltha.Voltha
+	(*health.HealthStatus)(nil),                          // 3: health.HealthStatus
+	(*Adapter)(nil),                                      // 4: adapter.Adapter
+	(*LogicalDevice)(nil),                                // 5: logical_device.LogicalDevice
+	(*Device)(nil),                                       // 6: device.Device
+	(*DeviceType)(nil),                                   // 7: device.DeviceType
+	(*EventFilter)(nil),                                  // 8: event.EventFilter
+	(*omci.MibDeviceData)(nil),                           // 9: omci.MibDeviceData
+	(*omci.AlarmDeviceData)(nil),                         // 10: omci.AlarmDeviceData
+	(*emptypb.Empty)(nil),                                // 11: google.protobuf.Empty
+	(*common.ID)(nil),                                    // 12: common.ID
+	(*LogicalPortId)(nil),                                // 13: logical_device.LogicalPortId
+	(*openflow_13.FlowTableUpdate)(nil),                  // 14: openflow_13.FlowTableUpdate
+	(*openflow_13.MeterModUpdate)(nil),                   // 15: openflow_13.MeterModUpdate
+	(*openflow_13.FlowGroupTableUpdate)(nil),             // 16: openflow_13.FlowGroupTableUpdate
+	(*common.IDs)(nil),                                   // 17: common.IDs
+	(*ImageDownload)(nil),                                // 18: device.ImageDownload
+	(*DeviceImageDownloadRequest)(nil),                   // 19: device.DeviceImageDownloadRequest
+	(*DeviceImageRequest)(nil),                           // 20: device.DeviceImageRequest
+	(*PmConfigs)(nil),                                    // 21: device.PmConfigs
+	(*openflow_13.PacketOut)(nil),                        // 22: openflow_13.PacketOut
+	(*SimulateAlarmRequest)(nil),                         // 23: device.SimulateAlarmRequest
+	(*Port)(nil),                                         // 24: device.Port
+	(*extension.ValueSpecifier)(nil),                     // 25: extension.ValueSpecifier
+	(*extension.ValueSet)(nil),                           // 26: extension.ValueSet
+	(*omci.OmciTestRequest)(nil),                         // 27: omci.OmciTestRequest
+	(*voip_system_profile.VoipSystemProfileRequest)(nil), // 28: voip_system_profile.VoipSystemProfileRequest
+	(*common.Key)(nil),                                   // 29: common.Key
+	(*voip_user_profile.VoipUserProfileRequest)(nil),     // 30: voip_user_profile.VoipUserProfileRequest
+	(*OnuSerialNumberOnOLTPon)(nil),                      // 31: device.OnuSerialNumberOnOLTPon
+	(*UpdateDevice)(nil),                                 // 32: device.UpdateDevice
+	(*Adapters)(nil),                                     // 33: adapter.Adapters
+	(*LogicalDevices)(nil),                               // 34: logical_device.LogicalDevices
+	(*LogicalPorts)(nil),                                 // 35: logical_device.LogicalPorts
+	(*LogicalPort)(nil),                                  // 36: logical_device.LogicalPort
+	(*openflow_13.Flows)(nil),                            // 37: openflow_13.Flows
+	(*openflow_13.Meters)(nil),                           // 38: openflow_13.Meters
+	(*openflow_13.FlowGroups)(nil),                       // 39: openflow_13.FlowGroups
+	(*Devices)(nil),                                      // 40: device.Devices
+	(*common.OperationResp)(nil),                         // 41: common.OperationResp
+	(*ImageDownloads)(nil),                               // 42: device.ImageDownloads
+	(*DeviceImageResponse)(nil),                          // 43: device.DeviceImageResponse
+	(*OnuImages)(nil),                                    // 44: device.OnuImages
+	(*Ports)(nil),                                        // 45: device.Ports
+	(*DeviceTypes)(nil),                                  // 46: device.DeviceTypes
+	(*openflow_13.PacketIn)(nil),                         // 47: openflow_13.PacketIn
+	(*openflow_13.ChangeEvent)(nil),                      // 48: openflow_13.ChangeEvent
+	(*EventFilters)(nil),                                 // 49: event.EventFilters
+	(*Images)(nil),                                       // 50: device.Images
+	(*SelfTestResponse)(nil),                             // 51: device.SelfTestResponse
+	(*extension.ReturnValues)(nil),                       // 52: extension.ReturnValues
+	(*omci.TestResponse)(nil),                            // 53: omci.TestResponse
 }
-
-func NewVolthaServiceClient(cc *grpc.ClientConn) VolthaServiceClient {
-	return &volthaServiceClient{cc}
+var file_voltha_protos_voltha_proto_depIdxs = []int32{
+	3,  // 0: voltha.CoreInstance.health:type_name -> health.HealthStatus
+	0,  // 1: voltha.CoreInstances.items:type_name -> voltha.CoreInstance
+	4,  // 2: voltha.Voltha.adapters:type_name -> adapter.Adapter
+	5,  // 3: voltha.Voltha.logical_devices:type_name -> logical_device.LogicalDevice
+	6,  // 4: voltha.Voltha.devices:type_name -> device.Device
+	7,  // 5: voltha.Voltha.device_types:type_name -> device.DeviceType
+	8,  // 6: voltha.Voltha.event_filters:type_name -> event.EventFilter
+	9,  // 7: voltha.Voltha.omci_mib_database:type_name -> omci.MibDeviceData
+	10, // 8: voltha.Voltha.omci_alarm_database:type_name -> omci.AlarmDeviceData
+	11, // 9: voltha.VolthaService.GetVoltha:input_type -> google.protobuf.Empty
+	11, // 10: voltha.VolthaService.ListCoreInstances:input_type -> google.protobuf.Empty
+	12, // 11: voltha.VolthaService.GetCoreInstance:input_type -> common.ID
+	11, // 12: voltha.VolthaService.ListAdapters:input_type -> google.protobuf.Empty
+	11, // 13: voltha.VolthaService.ListLogicalDevices:input_type -> google.protobuf.Empty
+	12, // 14: voltha.VolthaService.GetLogicalDevice:input_type -> common.ID
+	12, // 15: voltha.VolthaService.ListLogicalDevicePorts:input_type -> common.ID
+	13, // 16: voltha.VolthaService.GetLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 17: voltha.VolthaService.EnableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	13, // 18: voltha.VolthaService.DisableLogicalDevicePort:input_type -> logical_device.LogicalPortId
+	12, // 19: voltha.VolthaService.ListLogicalDeviceFlows:input_type -> common.ID
+	14, // 20: voltha.VolthaService.UpdateLogicalDeviceFlowTable:input_type -> openflow_13.FlowTableUpdate
+	15, // 21: voltha.VolthaService.UpdateLogicalDeviceMeterTable:input_type -> openflow_13.MeterModUpdate
+	12, // 22: voltha.VolthaService.ListLogicalDeviceMeters:input_type -> common.ID
+	12, // 23: voltha.VolthaService.ListLogicalDeviceFlowGroups:input_type -> common.ID
+	16, // 24: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:input_type -> openflow_13.FlowGroupTableUpdate
+	11, // 25: voltha.VolthaService.ListDevices:input_type -> google.protobuf.Empty
+	11, // 26: voltha.VolthaService.ListDeviceIds:input_type -> google.protobuf.Empty
+	17, // 27: voltha.VolthaService.ReconcileDevices:input_type -> common.IDs
+	12, // 28: voltha.VolthaService.GetDevice:input_type -> common.ID
+	6,  // 29: voltha.VolthaService.CreateDevice:input_type -> device.Device
+	12, // 30: voltha.VolthaService.EnableDevice:input_type -> common.ID
+	12, // 31: voltha.VolthaService.DisableDevice:input_type -> common.ID
+	12, // 32: voltha.VolthaService.RebootDevice:input_type -> common.ID
+	12, // 33: voltha.VolthaService.DeleteDevice:input_type -> common.ID
+	12, // 34: voltha.VolthaService.ForceDeleteDevice:input_type -> common.ID
+	18, // 35: voltha.VolthaService.DownloadImage:input_type -> device.ImageDownload
+	18, // 36: voltha.VolthaService.GetImageDownloadStatus:input_type -> device.ImageDownload
+	18, // 37: voltha.VolthaService.GetImageDownload:input_type -> device.ImageDownload
+	12, // 38: voltha.VolthaService.ListImageDownloads:input_type -> common.ID
+	18, // 39: voltha.VolthaService.CancelImageDownload:input_type -> device.ImageDownload
+	18, // 40: voltha.VolthaService.ActivateImageUpdate:input_type -> device.ImageDownload
+	18, // 41: voltha.VolthaService.RevertImageUpdate:input_type -> device.ImageDownload
+	19, // 42: voltha.VolthaService.DownloadImageToDevice:input_type -> device.DeviceImageDownloadRequest
+	20, // 43: voltha.VolthaService.GetImageStatus:input_type -> device.DeviceImageRequest
+	20, // 44: voltha.VolthaService.AbortImageUpgradeToDevice:input_type -> device.DeviceImageRequest
+	12, // 45: voltha.VolthaService.GetOnuImages:input_type -> common.ID
+	20, // 46: voltha.VolthaService.ActivateImage:input_type -> device.DeviceImageRequest
+	20, // 47: voltha.VolthaService.CommitImage:input_type -> device.DeviceImageRequest
+	12, // 48: voltha.VolthaService.ListDevicePorts:input_type -> common.ID
+	12, // 49: voltha.VolthaService.ListDevicePmConfigs:input_type -> common.ID
+	21, // 50: voltha.VolthaService.UpdateDevicePmConfigs:input_type -> device.PmConfigs
+	12, // 51: voltha.VolthaService.ListDeviceFlows:input_type -> common.ID
+	12, // 52: voltha.VolthaService.ListDeviceFlowGroups:input_type -> common.ID
+	11, // 53: voltha.VolthaService.ListDeviceTypes:input_type -> google.protobuf.Empty
+	12, // 54: voltha.VolthaService.GetDeviceType:input_type -> common.ID
+	22, // 55: voltha.VolthaService.StreamPacketsOut:input_type -> openflow_13.PacketOut
+	11, // 56: voltha.VolthaService.ReceivePacketsIn:input_type -> google.protobuf.Empty
+	11, // 57: voltha.VolthaService.ReceiveChangeEvents:input_type -> google.protobuf.Empty
+	8,  // 58: voltha.VolthaService.CreateEventFilter:input_type -> event.EventFilter
+	12, // 59: voltha.VolthaService.GetEventFilter:input_type -> common.ID
+	8,  // 60: voltha.VolthaService.UpdateEventFilter:input_type -> event.EventFilter
+	8,  // 61: voltha.VolthaService.DeleteEventFilter:input_type -> event.EventFilter
+	11, // 62: voltha.VolthaService.ListEventFilters:input_type -> google.protobuf.Empty
+	12, // 63: voltha.VolthaService.GetImages:input_type -> common.ID
+	12, // 64: voltha.VolthaService.SelfTest:input_type -> common.ID
+	12, // 65: voltha.VolthaService.GetMibDeviceData:input_type -> common.ID
+	12, // 66: voltha.VolthaService.GetAlarmDeviceData:input_type -> common.ID
+	23, // 67: voltha.VolthaService.SimulateAlarm:input_type -> device.SimulateAlarmRequest
+	24, // 68: voltha.VolthaService.EnablePort:input_type -> device.Port
+	24, // 69: voltha.VolthaService.DisablePort:input_type -> device.Port
+	25, // 70: voltha.VolthaService.GetExtValue:input_type -> extension.ValueSpecifier
+	26, // 71: voltha.VolthaService.SetExtValue:input_type -> extension.ValueSet
+	27, // 72: voltha.VolthaService.StartOmciTestAction:input_type -> omci.OmciTestRequest
+	28, // 73: voltha.VolthaService.PutVoipSystemProfile:input_type -> voip_system_profile.VoipSystemProfileRequest
+	29, // 74: voltha.VolthaService.DeleteVoipSystemProfile:input_type -> common.Key
+	30, // 75: voltha.VolthaService.PutVoipUserProfile:input_type -> voip_user_profile.VoipUserProfileRequest
+	29, // 76: voltha.VolthaService.DeleteVoipUserProfile:input_type -> common.Key
+	12, // 77: voltha.VolthaService.DisableOnuDevice:input_type -> common.ID
+	12, // 78: voltha.VolthaService.EnableOnuDevice:input_type -> common.ID
+	31, // 79: voltha.VolthaService.DisableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	31, // 80: voltha.VolthaService.EnableOnuSerialNumber:input_type -> device.OnuSerialNumberOnOLTPon
+	32, // 81: voltha.VolthaService.UpdateDevice:input_type -> device.UpdateDevice
+	2,  // 82: voltha.VolthaService.GetVoltha:output_type -> voltha.Voltha
+	1,  // 83: voltha.VolthaService.ListCoreInstances:output_type -> voltha.CoreInstances
+	0,  // 84: voltha.VolthaService.GetCoreInstance:output_type -> voltha.CoreInstance
+	33, // 85: voltha.VolthaService.ListAdapters:output_type -> adapter.Adapters
+	34, // 86: voltha.VolthaService.ListLogicalDevices:output_type -> logical_device.LogicalDevices
+	5,  // 87: voltha.VolthaService.GetLogicalDevice:output_type -> logical_device.LogicalDevice
+	35, // 88: voltha.VolthaService.ListLogicalDevicePorts:output_type -> logical_device.LogicalPorts
+	36, // 89: voltha.VolthaService.GetLogicalDevicePort:output_type -> logical_device.LogicalPort
+	11, // 90: voltha.VolthaService.EnableLogicalDevicePort:output_type -> google.protobuf.Empty
+	11, // 91: voltha.VolthaService.DisableLogicalDevicePort:output_type -> google.protobuf.Empty
+	37, // 92: voltha.VolthaService.ListLogicalDeviceFlows:output_type -> openflow_13.Flows
+	11, // 93: voltha.VolthaService.UpdateLogicalDeviceFlowTable:output_type -> google.protobuf.Empty
+	11, // 94: voltha.VolthaService.UpdateLogicalDeviceMeterTable:output_type -> google.protobuf.Empty
+	38, // 95: voltha.VolthaService.ListLogicalDeviceMeters:output_type -> openflow_13.Meters
+	39, // 96: voltha.VolthaService.ListLogicalDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	11, // 97: voltha.VolthaService.UpdateLogicalDeviceFlowGroupTable:output_type -> google.protobuf.Empty
+	40, // 98: voltha.VolthaService.ListDevices:output_type -> device.Devices
+	17, // 99: voltha.VolthaService.ListDeviceIds:output_type -> common.IDs
+	11, // 100: voltha.VolthaService.ReconcileDevices:output_type -> google.protobuf.Empty
+	6,  // 101: voltha.VolthaService.GetDevice:output_type -> device.Device
+	6,  // 102: voltha.VolthaService.CreateDevice:output_type -> device.Device
+	11, // 103: voltha.VolthaService.EnableDevice:output_type -> google.protobuf.Empty
+	11, // 104: voltha.VolthaService.DisableDevice:output_type -> google.protobuf.Empty
+	11, // 105: voltha.VolthaService.RebootDevice:output_type -> google.protobuf.Empty
+	11, // 106: voltha.VolthaService.DeleteDevice:output_type -> google.protobuf.Empty
+	11, // 107: voltha.VolthaService.ForceDeleteDevice:output_type -> google.protobuf.Empty
+	41, // 108: voltha.VolthaService.DownloadImage:output_type -> common.OperationResp
+	18, // 109: voltha.VolthaService.GetImageDownloadStatus:output_type -> device.ImageDownload
+	18, // 110: voltha.VolthaService.GetImageDownload:output_type -> device.ImageDownload
+	42, // 111: voltha.VolthaService.ListImageDownloads:output_type -> device.ImageDownloads
+	41, // 112: voltha.VolthaService.CancelImageDownload:output_type -> common.OperationResp
+	41, // 113: voltha.VolthaService.ActivateImageUpdate:output_type -> common.OperationResp
+	41, // 114: voltha.VolthaService.RevertImageUpdate:output_type -> common.OperationResp
+	43, // 115: voltha.VolthaService.DownloadImageToDevice:output_type -> device.DeviceImageResponse
+	43, // 116: voltha.VolthaService.GetImageStatus:output_type -> device.DeviceImageResponse
+	43, // 117: voltha.VolthaService.AbortImageUpgradeToDevice:output_type -> device.DeviceImageResponse
+	44, // 118: voltha.VolthaService.GetOnuImages:output_type -> device.OnuImages
+	43, // 119: voltha.VolthaService.ActivateImage:output_type -> device.DeviceImageResponse
+	43, // 120: voltha.VolthaService.CommitImage:output_type -> device.DeviceImageResponse
+	45, // 121: voltha.VolthaService.ListDevicePorts:output_type -> device.Ports
+	21, // 122: voltha.VolthaService.ListDevicePmConfigs:output_type -> device.PmConfigs
+	11, // 123: voltha.VolthaService.UpdateDevicePmConfigs:output_type -> google.protobuf.Empty
+	37, // 124: voltha.VolthaService.ListDeviceFlows:output_type -> openflow_13.Flows
+	39, // 125: voltha.VolthaService.ListDeviceFlowGroups:output_type -> openflow_13.FlowGroups
+	46, // 126: voltha.VolthaService.ListDeviceTypes:output_type -> device.DeviceTypes
+	7,  // 127: voltha.VolthaService.GetDeviceType:output_type -> device.DeviceType
+	11, // 128: voltha.VolthaService.StreamPacketsOut:output_type -> google.protobuf.Empty
+	47, // 129: voltha.VolthaService.ReceivePacketsIn:output_type -> openflow_13.PacketIn
+	48, // 130: voltha.VolthaService.ReceiveChangeEvents:output_type -> openflow_13.ChangeEvent
+	8,  // 131: voltha.VolthaService.CreateEventFilter:output_type -> event.EventFilter
+	49, // 132: voltha.VolthaService.GetEventFilter:output_type -> event.EventFilters
+	8,  // 133: voltha.VolthaService.UpdateEventFilter:output_type -> event.EventFilter
+	11, // 134: voltha.VolthaService.DeleteEventFilter:output_type -> google.protobuf.Empty
+	49, // 135: voltha.VolthaService.ListEventFilters:output_type -> event.EventFilters
+	50, // 136: voltha.VolthaService.GetImages:output_type -> device.Images
+	51, // 137: voltha.VolthaService.SelfTest:output_type -> device.SelfTestResponse
+	9,  // 138: voltha.VolthaService.GetMibDeviceData:output_type -> omci.MibDeviceData
+	10, // 139: voltha.VolthaService.GetAlarmDeviceData:output_type -> omci.AlarmDeviceData
+	41, // 140: voltha.VolthaService.SimulateAlarm:output_type -> common.OperationResp
+	11, // 141: voltha.VolthaService.EnablePort:output_type -> google.protobuf.Empty
+	11, // 142: voltha.VolthaService.DisablePort:output_type -> google.protobuf.Empty
+	52, // 143: voltha.VolthaService.GetExtValue:output_type -> extension.ReturnValues
+	11, // 144: voltha.VolthaService.SetExtValue:output_type -> google.protobuf.Empty
+	53, // 145: voltha.VolthaService.StartOmciTestAction:output_type -> omci.TestResponse
+	11, // 146: voltha.VolthaService.PutVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 147: voltha.VolthaService.DeleteVoipSystemProfile:output_type -> google.protobuf.Empty
+	11, // 148: voltha.VolthaService.PutVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 149: voltha.VolthaService.DeleteVoipUserProfile:output_type -> google.protobuf.Empty
+	11, // 150: voltha.VolthaService.DisableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 151: voltha.VolthaService.EnableOnuDevice:output_type -> google.protobuf.Empty
+	11, // 152: voltha.VolthaService.DisableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 153: voltha.VolthaService.EnableOnuSerialNumber:output_type -> google.protobuf.Empty
+	11, // 154: voltha.VolthaService.UpdateDevice:output_type -> google.protobuf.Empty
+	82, // [82:155] is the sub-list for method output_type
+	9,  // [9:82] is the sub-list for method input_type
+	9,  // [9:9] is the sub-list for extension type_name
+	9,  // [9:9] is the sub-list for extension extendee
+	0,  // [0:9] is the sub-list for field type_name
 }
 
-func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Voltha, error) {
-	out := new(Voltha)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetVoltha", in, out, opts...)
-	if err != nil {
-		return nil, err
+func init() { file_voltha_protos_voltha_proto_init() }
+func file_voltha_protos_voltha_proto_init() {
+	if File_voltha_protos_voltha_proto != nil {
+		return
 	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
-	out := new(CoreInstances)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListCoreInstances", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
-	out := new(CoreInstance)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetCoreInstance", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Adapters, error) {
-	out := new(Adapters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListAdapters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
-	out := new(LogicalDevices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
-	out := new(LogicalDevice)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
-	out := new(LogicalPorts)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
-	out := new(LogicalPort)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableLogicalDevicePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceMeterTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
-	out := new(openflow_13.Meters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceMeters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListLogicalDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevices(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Devices, error) {
-	out := new(Devices)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
-	out := new(common.IDs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceIds", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ReconcileDevices", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
-	out := new(Device)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RebootDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ForceDeleteDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownloadStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
-	out := new(ImageDownload)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
-	out := new(ImageDownloads)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListImageDownloads", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CancelImageDownload", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// Deprecated: Do not use.
-func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/RevertImageUpdate", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImageToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImageStatus", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/AbortImageUpgradeToDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
-	out := new(OnuImages)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetOnuImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ActivateImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
-	out := new(DeviceImageResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CommitImage", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
-	out := new(Ports)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePorts", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
-	out := new(PmConfigs)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevicePmConfigs", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
-	out := new(openflow_13.Flows)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlows", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
-	out := new(openflow_13.FlowGroups)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceFlowGroups", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
-	out := new(DeviceTypes)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListDeviceTypes", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
-	out := new(DeviceType)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetDeviceType", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (VolthaService_StreamPacketsOutClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[0], "/voltha.VolthaService/StreamPacketsOut", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceStreamPacketsOutClient{stream}
-	return x, nil
-}
-
-type VolthaService_StreamPacketsOutClient interface {
-	Send(*openflow_13.PacketOut) error
-	CloseAndRecv() (*empty.Empty, error)
-	grpc.ClientStream
-}
-
-type volthaServiceStreamPacketsOutClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceStreamPacketsOutClient) Send(m *openflow_13.PacketOut) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutClient) CloseAndRecv() (*empty.Empty, error) {
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	m := new(empty.Empty)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceivePacketsInClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[1], "/voltha.VolthaService/ReceivePacketsIn", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceivePacketsInClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceivePacketsInClient interface {
-	Recv() (*openflow_13.PacketIn, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceivePacketsInClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceivePacketsInClient) Recv() (*openflow_13.PacketIn, error) {
-	m := new(openflow_13.PacketIn)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (VolthaService_ReceiveChangeEventsClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_VolthaService_serviceDesc.Streams[2], "/voltha.VolthaService/ReceiveChangeEvents", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &volthaServiceReceiveChangeEventsClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type VolthaService_ReceiveChangeEventsClient interface {
-	Recv() (*openflow_13.ChangeEvent, error)
-	grpc.ClientStream
-}
-
-type volthaServiceReceiveChangeEventsClient struct {
-	grpc.ClientStream
-}
-
-func (x *volthaServiceReceiveChangeEventsClient) Recv() (*openflow_13.ChangeEvent, error) {
-	m := new(openflow_13.ChangeEvent)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/CreateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
-	out := new(EventFilter)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteEventFilter", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
-	out := new(EventFilters)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/ListEventFilters", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
-	out := new(Images)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetImages", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
-	out := new(SelfTestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SelfTest", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
-	out := new(omci.MibDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMibDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
-	out := new(omci.AlarmDeviceData)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetAlarmDeviceData", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
-	out := new(common.OperationResp)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SimulateAlarm", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisablePort", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
-	out := new(extension.ReturnValues)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/SetExtValue", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
-	out := new(omci.TestResponse)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/StartOmciTestAction", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipSystemProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipUserProfile", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DisableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/EnableOnuSerialNumber", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateDevice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// VolthaServiceServer is the server API for VolthaService service.
-type VolthaServiceServer interface {
-	// Get high level information on the Voltha cluster
-	GetVoltha(context.Context, *empty.Empty) (*Voltha, error)
-	// List all Voltha cluster core instances
-	ListCoreInstances(context.Context, *empty.Empty) (*CoreInstances, error)
-	// Get details on a Voltha cluster instance
-	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
-	// List all active adapters (plugins) in the Voltha cluster
-	ListAdapters(context.Context, *empty.Empty) (*Adapters, error)
-	// List all logical devices managed by the Voltha cluster
-	ListLogicalDevices(context.Context, *empty.Empty) (*LogicalDevices, error)
-	// Get additional information on a given logical device
-	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
-	// List ports of a logical device
-	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
-	// Gets a logical device port
-	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
-	// Enables a logical device port
-	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// Disables a logical device port
-	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*empty.Empty, error)
-	// List all flows of a logical device
-	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// Update flow table for logical device
-	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*empty.Empty, error)
-	// Update meter table for logical device
-	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*empty.Empty, error)
-	// List all meters of a logical device
-	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
-	// List all flow groups of a logical device
-	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// Update group table for device
-	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error)
-	// List all physical devices controlled by the Voltha cluster
-	ListDevices(context.Context, *empty.Empty) (*Devices, error)
-	// List all physical devices IDs controlled by the Voltha cluster
-	ListDeviceIds(context.Context, *empty.Empty) (*common.IDs, error)
-	// Request to a voltha Core to reconcile a set of devices based on their IDs
-	ReconcileDevices(context.Context, *common.IDs) (*empty.Empty, error)
-	// Get more information on a given physical device
-	GetDevice(context.Context, *common.ID) (*Device, error)
-	// Pre-provision a new physical device
-	CreateDevice(context.Context, *Device) (*Device, error)
-	// Enable a device.  If the device was in pre-provisioned state then it
-	// will transition to ENABLED state.  If it was is DISABLED state then it
-	// will transition to ENABLED state as well.
-	EnableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disable a device
-	DisableDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Reboot a device
-	RebootDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Delete a device
-	DeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Forcefully delete a device
-	ForceDeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Request an image download to the standby partition
-	// of a device.
-	// Note that the call is expected to be non-blocking.
-	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Get image download status on a device
-	// The request retrieves progress on device and updates db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
-	// Get image download db record
-	// Deprecated in voltha 2.8, will be removed
-	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
-	// List image download db records for a given device
-	// Deprecated in voltha 2.8, will be removed
-	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
-	// Cancel an existing image download process on a device
-	// Deprecated in voltha 2.8, will be removed
-	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Activate the specified image at a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Revert the specified image at standby partition
-	// to active partition, and revert to previous image
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// previous image running on device
-	// Note that the call is expected to be non-blocking.
-	// Deprecated in voltha 2.8, will be removed
-	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
-	// Downloads a certain image to the standby partition of the devices
-	// Note that the call is expected to be non-blocking.
-	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
-	// Get image status on a number of devices devices
-	// Polled from northbound systems to get state of download/activate/commit
-	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Aborts the upgrade of an image on a device
-	// To be used carefully, stops any further operations for the Image on the given devices
-	// Might also stop if possible existing work, but no guarantees are given,
-	// depends on implementation and procedure status.
-	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Get Both Active and Standby image for a given device
-	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
-	// Activate the specified image from a standby partition
-	// to active partition.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device
-	// Note that the call is expected to be non-blocking.
-	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// Commit the specified image to be default.
-	// Depending on the device implementation, this call
-	// may or may not cause device reboot.
-	// If no reboot, then a reboot is required to make the
-	// activated image running on device upon next reboot
-	// Note that the call is expected to be non-blocking.
-	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
-	// List ports of a device
-	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
-	// List pm config of a device
-	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
-	// Update the pm config of a device
-	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*empty.Empty, error)
-	// List all flows of a device
-	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
-	// List all flow groups of a device
-	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
-	// List device types known to Voltha
-	ListDeviceTypes(context.Context, *empty.Empty) (*DeviceTypes, error)
-	// Get additional information on a device type
-	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
-	// Stream control packets to the dataplane
-	StreamPacketsOut(VolthaService_StreamPacketsOutServer) error
-	// Receive control packet stream
-	ReceivePacketsIn(*empty.Empty, VolthaService_ReceivePacketsInServer) error
-	ReceiveChangeEvents(*empty.Empty, VolthaService_ReceiveChangeEventsServer) error
-	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	// Get all filters present for a device
-	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
-	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
-	DeleteEventFilter(context.Context, *EventFilter) (*empty.Empty, error)
-	// Get all the filters present
-	ListEventFilters(context.Context, *empty.Empty) (*EventFilters, error)
-	GetImages(context.Context, *common.ID) (*Images, error)
-	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
-	// OpenOMCI MIB information
-	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
-	// OpenOMCI ALARM information
-	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
-	// Simulate an Alarm
-	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
-	EnablePort(context.Context, *Port) (*empty.Empty, error)
-	DisablePort(context.Context, *Port) (*empty.Empty, error)
-	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
-	SetExtValue(context.Context, *extension.ValueSet) (*empty.Empty, error)
-	// omci start and stop cli implementation
-	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
-	// Saves or updates system wide configuration into voltha KV
-	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipSystemProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Saves or updates a profile (VOIP) into voltha KV
-	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error)
-	// Deletes the given profile from voltha KV
-	DeleteVoipUserProfile(context.Context, *common.Key) (*empty.Empty, error)
-	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
-	DisableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
-	EnableOnuDevice(context.Context, *common.ID) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
-	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
-	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*empty.Empty, error)
-	// Update the Device configuration, for now only ip address updation is supported
-	UpdateDevice(context.Context, *UpdateDevice) (*empty.Empty, error)
-}
-
-// UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedVolthaServiceServer struct {
-}
-
-func (*UnimplementedVolthaServiceServer) GetVoltha(ctx context.Context, req *empty.Empty) (*Voltha, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetVoltha not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListCoreInstances(ctx context.Context, req *empty.Empty) (*CoreInstances, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListCoreInstances not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetCoreInstance(ctx context.Context, req *common.ID) (*CoreInstance, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetCoreInstance not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListAdapters(ctx context.Context, req *empty.Empty) (*Adapters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListAdapters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDevices(ctx context.Context, req *empty.Empty) (*LogicalDevices, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetLogicalDevice(ctx context.Context, req *common.ID) (*LogicalDevice, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDevicePorts(ctx context.Context, req *common.ID) (*LogicalPorts, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*LogicalPort, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableLogicalDevicePort(ctx context.Context, req *LogicalPortId) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(ctx context.Context, req *openflow_13.FlowTableUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(ctx context.Context, req *openflow_13.MeterModUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceMeters(ctx context.Context, req *common.ID) (*openflow_13.Meters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceMeters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, req *openflow_13.FlowGroupTableUpdate) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevices(ctx context.Context, req *empty.Empty) (*Devices, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceIds(ctx context.Context, req *empty.Empty) (*common.IDs, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceIds not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReconcileDevices(ctx context.Context, req *common.IDs) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ReconcileDevices not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetDevice(ctx context.Context, req *common.ID) (*Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CreateDevice(ctx context.Context, req *Device) (*Device, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) RebootDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RebootDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ForceDeleteDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ForceDeleteDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DownloadImage(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageDownloadStatus(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageDownload(ctx context.Context, req *ImageDownload) (*ImageDownload, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageDownload not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListImageDownloads(ctx context.Context, req *common.ID) (*ImageDownloads, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListImageDownloads not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CancelImageDownload(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CancelImageDownload not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ActivateImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImageUpdate not implemented")
-}
-func (*UnimplementedVolthaServiceServer) RevertImageUpdate(ctx context.Context, req *ImageDownload) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method RevertImageUpdate not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DownloadImageToDevice(ctx context.Context, req *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DownloadImageToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImageStatus(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImageStatus not implemented")
-}
-func (*UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetOnuImages(ctx context.Context, req *common.ID) (*OnuImages, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetOnuImages not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ActivateImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ActivateImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CommitImage(ctx context.Context, req *DeviceImageRequest) (*DeviceImageResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CommitImage not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevicePorts(ctx context.Context, req *common.ID) (*Ports, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePorts not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDevicePmConfigs(ctx context.Context, req *common.ID) (*PmConfigs, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(ctx context.Context, req *PmConfigs) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceFlows(ctx context.Context, req *common.ID) (*openflow_13.Flows, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlows not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceFlowGroups(ctx context.Context, req *common.ID) (*openflow_13.FlowGroups, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListDeviceTypes(ctx context.Context, req *empty.Empty) (*DeviceTypes, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListDeviceTypes not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetDeviceType(ctx context.Context, req *common.ID) (*DeviceType, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetDeviceType not implemented")
-}
-func (*UnimplementedVolthaServiceServer) StreamPacketsOut(srv VolthaService_StreamPacketsOutServer) error {
-	return status.Errorf(codes.Unimplemented, "method StreamPacketsOut not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReceivePacketsIn(req *empty.Empty, srv VolthaService_ReceivePacketsInServer) error {
-	return status.Errorf(codes.Unimplemented, "method ReceivePacketsIn not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ReceiveChangeEvents(req *empty.Empty, srv VolthaService_ReceiveChangeEventsServer) error {
-	return status.Errorf(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
-}
-func (*UnimplementedVolthaServiceServer) CreateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method CreateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetEventFilter(ctx context.Context, req *common.ID) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateEventFilter(ctx context.Context, req *EventFilter) (*EventFilter, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteEventFilter(ctx context.Context, req *EventFilter) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteEventFilter not implemented")
-}
-func (*UnimplementedVolthaServiceServer) ListEventFilters(ctx context.Context, req *empty.Empty) (*EventFilters, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method ListEventFilters not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetImages(ctx context.Context, req *common.ID) (*Images, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetImages not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SelfTest(ctx context.Context, req *common.ID) (*SelfTestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SelfTest not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetMibDeviceData(ctx context.Context, req *common.ID) (*omci.MibDeviceData, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetMibDeviceData not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetAlarmDeviceData(ctx context.Context, req *common.ID) (*omci.AlarmDeviceData, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SimulateAlarm(ctx context.Context, req *SimulateAlarmRequest) (*common.OperationResp, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SimulateAlarm not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisablePort(ctx context.Context, req *Port) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisablePort not implemented")
-}
-func (*UnimplementedVolthaServiceServer) GetExtValue(ctx context.Context, req *extension.ValueSpecifier) (*extension.ReturnValues, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method GetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) SetExtValue(ctx context.Context, req *extension.ValueSet) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SetExtValue not implemented")
-}
-func (*UnimplementedVolthaServiceServer) StartOmciTestAction(ctx context.Context, req *omci.OmciTestRequest) (*omci.TestResponse, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTestAction not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipSystemProfile(ctx context.Context, req *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) PutVoipUserProfile(ctx context.Context, req *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method PutVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DeleteVoipUserProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuDevice(ctx context.Context, req *common.ID) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuDevice not implemented")
-}
-func (*UnimplementedVolthaServiceServer) DisableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
-}
-func (*UnimplementedVolthaServiceServer) EnableOnuSerialNumber(ctx context.Context, req *OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
-}
-func (*UnimplementedVolthaServiceServer) UpdateDevice(ctx context.Context, req *UpdateDevice) (*empty.Empty, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UpdateDevice not implemented")
-}
-
-func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
-	s.RegisterService(&_VolthaService_serviceDesc, srv)
-}
-
-func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetVoltha(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetVoltha",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListCoreInstances",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetCoreInstance",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListAdapters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListAdapters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(LogicalPortId)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableLogicalDevicePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.MeterModUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceMeterTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceMeters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListLogicalDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(openflow_13.FlowGroupTableUpdate)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceIds",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.IDs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ReconcileDevices",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Device)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RebootDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ForceDeleteDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownloadStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListImageDownloads",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CancelImageDownload",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(ImageDownload)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/RevertImageUpdate",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageDownloadRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DownloadImageToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImageStatus",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/AbortImageUpgradeToDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetOnuImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ActivateImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(DeviceImageRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CommitImage(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CommitImage",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePorts",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(PmConfigs)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateDevicePmConfigs",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlows",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceFlowGroups",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListDeviceTypes",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetDeviceType",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(VolthaServiceServer).StreamPacketsOut(&volthaServiceStreamPacketsOutServer{stream})
-}
-
-type VolthaService_StreamPacketsOutServer interface {
-	SendAndClose(*empty.Empty) error
-	Recv() (*openflow_13.PacketOut, error)
-	grpc.ServerStream
-}
-
-type volthaServiceStreamPacketsOutServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceStreamPacketsOutServer) SendAndClose(m *empty.Empty) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *volthaServiceStreamPacketsOutServer) Recv() (*openflow_13.PacketOut, error) {
-	m := new(openflow_13.PacketOut)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &volthaServiceReceivePacketsInServer{stream})
-}
-
-type VolthaService_ReceivePacketsInServer interface {
-	Send(*openflow_13.PacketIn) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceivePacketsInServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceivePacketsInServer) Send(m *openflow_13.PacketIn) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(empty.Empty)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &volthaServiceReceiveChangeEventsServer{stream})
-}
-
-type VolthaService_ReceiveChangeEventsServer interface {
-	Send(*openflow_13.ChangeEvent) error
-	grpc.ServerStream
-}
-
-type volthaServiceReceiveChangeEventsServer struct {
-	grpc.ServerStream
-}
-
-func (x *volthaServiceReceiveChangeEventsServer) Send(m *openflow_13.ChangeEvent) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/CreateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(EventFilter)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteEventFilter",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(empty.Empty)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/ListEventFilters",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*empty.Empty))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetImages(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetImages",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SelfTest(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SelfTest",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetMibDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetAlarmDeviceData",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(SimulateAlarmRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SimulateAlarm",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(Port)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisablePort(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisablePort",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSpecifier)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(extension.ValueSet)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/SetExtValue",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(omci.OmciTestRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/StartOmciTestAction",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_system_profile.VoipSystemProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipSystemProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(voip_user_profile.VoipUserProfileRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/PutVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Key)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DeleteVoipUserProfile",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.ID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/DisableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(OnuSerialNumberOnOLTPon)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/EnableOnuSerialNumber",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(UpdateDevice)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateDevice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateDevice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateDevice(ctx, req.(*UpdateDevice))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _VolthaService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "voltha.VolthaService",
-	HandlerType: (*VolthaServiceServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "GetVoltha",
-			Handler:    _VolthaService_GetVoltha_Handler,
-		},
-		{
-			MethodName: "ListCoreInstances",
-			Handler:    _VolthaService_ListCoreInstances_Handler,
-		},
-		{
-			MethodName: "GetCoreInstance",
-			Handler:    _VolthaService_GetCoreInstance_Handler,
-		},
-		{
-			MethodName: "ListAdapters",
-			Handler:    _VolthaService_ListAdapters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevices",
-			Handler:    _VolthaService_ListLogicalDevices_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevice",
-			Handler:    _VolthaService_GetLogicalDevice_Handler,
-		},
-		{
-			MethodName: "ListLogicalDevicePorts",
-			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
-		},
-		{
-			MethodName: "GetLogicalDevicePort",
-			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "EnableLogicalDevicePort",
-			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "DisableLogicalDevicePort",
-			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlows",
-			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceMeterTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceMeters",
-			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
-		},
-		{
-			MethodName: "ListLogicalDeviceFlowGroups",
-			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "UpdateLogicalDeviceFlowGroupTable",
-			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
-		},
-		{
-			MethodName: "ListDevices",
-			Handler:    _VolthaService_ListDevices_Handler,
-		},
-		{
-			MethodName: "ListDeviceIds",
-			Handler:    _VolthaService_ListDeviceIds_Handler,
-		},
-		{
-			MethodName: "ReconcileDevices",
-			Handler:    _VolthaService_ReconcileDevices_Handler,
-		},
-		{
-			MethodName: "GetDevice",
-			Handler:    _VolthaService_GetDevice_Handler,
-		},
-		{
-			MethodName: "CreateDevice",
-			Handler:    _VolthaService_CreateDevice_Handler,
-		},
-		{
-			MethodName: "EnableDevice",
-			Handler:    _VolthaService_EnableDevice_Handler,
-		},
-		{
-			MethodName: "DisableDevice",
-			Handler:    _VolthaService_DisableDevice_Handler,
-		},
-		{
-			MethodName: "RebootDevice",
-			Handler:    _VolthaService_RebootDevice_Handler,
-		},
-		{
-			MethodName: "DeleteDevice",
-			Handler:    _VolthaService_DeleteDevice_Handler,
-		},
-		{
-			MethodName: "ForceDeleteDevice",
-			Handler:    _VolthaService_ForceDeleteDevice_Handler,
-		},
-		{
-			MethodName: "DownloadImage",
-			Handler:    _VolthaService_DownloadImage_Handler,
-		},
-		{
-			MethodName: "GetImageDownloadStatus",
-			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
-		},
-		{
-			MethodName: "GetImageDownload",
-			Handler:    _VolthaService_GetImageDownload_Handler,
-		},
-		{
-			MethodName: "ListImageDownloads",
-			Handler:    _VolthaService_ListImageDownloads_Handler,
-		},
-		{
-			MethodName: "CancelImageDownload",
-			Handler:    _VolthaService_CancelImageDownload_Handler,
-		},
-		{
-			MethodName: "ActivateImageUpdate",
-			Handler:    _VolthaService_ActivateImageUpdate_Handler,
-		},
-		{
-			MethodName: "RevertImageUpdate",
-			Handler:    _VolthaService_RevertImageUpdate_Handler,
-		},
-		{
-			MethodName: "DownloadImageToDevice",
-			Handler:    _VolthaService_DownloadImageToDevice_Handler,
-		},
-		{
-			MethodName: "GetImageStatus",
-			Handler:    _VolthaService_GetImageStatus_Handler,
-		},
-		{
-			MethodName: "AbortImageUpgradeToDevice",
-			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
-		},
-		{
-			MethodName: "GetOnuImages",
-			Handler:    _VolthaService_GetOnuImages_Handler,
-		},
-		{
-			MethodName: "ActivateImage",
-			Handler:    _VolthaService_ActivateImage_Handler,
-		},
-		{
-			MethodName: "CommitImage",
-			Handler:    _VolthaService_CommitImage_Handler,
-		},
-		{
-			MethodName: "ListDevicePorts",
-			Handler:    _VolthaService_ListDevicePorts_Handler,
-		},
-		{
-			MethodName: "ListDevicePmConfigs",
-			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "UpdateDevicePmConfigs",
-			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlows",
-			Handler:    _VolthaService_ListDeviceFlows_Handler,
-		},
-		{
-			MethodName: "ListDeviceFlowGroups",
-			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
-		},
-		{
-			MethodName: "ListDeviceTypes",
-			Handler:    _VolthaService_ListDeviceTypes_Handler,
-		},
-		{
-			MethodName: "GetDeviceType",
-			Handler:    _VolthaService_GetDeviceType_Handler,
-		},
-		{
-			MethodName: "CreateEventFilter",
-			Handler:    _VolthaService_CreateEventFilter_Handler,
-		},
-		{
-			MethodName: "GetEventFilter",
-			Handler:    _VolthaService_GetEventFilter_Handler,
-		},
-		{
-			MethodName: "UpdateEventFilter",
-			Handler:    _VolthaService_UpdateEventFilter_Handler,
-		},
-		{
-			MethodName: "DeleteEventFilter",
-			Handler:    _VolthaService_DeleteEventFilter_Handler,
-		},
-		{
-			MethodName: "ListEventFilters",
-			Handler:    _VolthaService_ListEventFilters_Handler,
-		},
-		{
-			MethodName: "GetImages",
-			Handler:    _VolthaService_GetImages_Handler,
-		},
-		{
-			MethodName: "SelfTest",
-			Handler:    _VolthaService_SelfTest_Handler,
-		},
-		{
-			MethodName: "GetMibDeviceData",
-			Handler:    _VolthaService_GetMibDeviceData_Handler,
-		},
-		{
-			MethodName: "GetAlarmDeviceData",
-			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
-		},
-		{
-			MethodName: "SimulateAlarm",
-			Handler:    _VolthaService_SimulateAlarm_Handler,
-		},
-		{
-			MethodName: "EnablePort",
-			Handler:    _VolthaService_EnablePort_Handler,
-		},
-		{
-			MethodName: "DisablePort",
-			Handler:    _VolthaService_DisablePort_Handler,
-		},
-		{
-			MethodName: "GetExtValue",
-			Handler:    _VolthaService_GetExtValue_Handler,
-		},
-		{
-			MethodName: "SetExtValue",
-			Handler:    _VolthaService_SetExtValue_Handler,
-		},
-		{
-			MethodName: "StartOmciTestAction",
-			Handler:    _VolthaService_StartOmciTestAction_Handler,
-		},
-		{
-			MethodName: "PutVoipSystemProfile",
-			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipSystemProfile",
-			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
-		},
-		{
-			MethodName: "PutVoipUserProfile",
-			Handler:    _VolthaService_PutVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DeleteVoipUserProfile",
-			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
-		},
-		{
-			MethodName: "DisableOnuDevice",
-			Handler:    _VolthaService_DisableOnuDevice_Handler,
-		},
-		{
-			MethodName: "EnableOnuDevice",
-			Handler:    _VolthaService_EnableOnuDevice_Handler,
-		},
-		{
-			MethodName: "DisableOnuSerialNumber",
-			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "EnableOnuSerialNumber",
-			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
-		},
-		{
-			MethodName: "UpdateDevice",
-			Handler:    _VolthaService_UpdateDevice_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "StreamPacketsOut",
-			Handler:       _VolthaService_StreamPacketsOut_Handler,
-			ClientStreams: true,
-		},
-		{
-			StreamName:    "ReceivePacketsIn",
-			Handler:       _VolthaService_ReceivePacketsIn_Handler,
-			ServerStreams: true,
-		},
-		{
-			StreamName:    "ReceiveChangeEvents",
-			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
-			ServerStreams: true,
+	file_voltha_protos_logical_device_proto_init()
+	file_voltha_protos_device_proto_init()
+	file_voltha_protos_adapter_proto_init()
+	file_voltha_protos_events_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: unsafe.Slice(unsafe.StringData(file_voltha_protos_voltha_proto_rawDesc), len(file_voltha_protos_voltha_proto_rawDesc)),
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
 		},
-	},
-	Metadata: "voltha_protos/voltha.proto",
+		GoTypes:           file_voltha_protos_voltha_proto_goTypes,
+		DependencyIndexes: file_voltha_protos_voltha_proto_depIdxs,
+		MessageInfos:      file_voltha_protos_voltha_proto_msgTypes,
+	}.Build()
+	File_voltha_protos_voltha_proto = out.File
+	file_voltha_protos_voltha_proto_goTypes = nil
+	file_voltha_protos_voltha_proto_depIdxs = nil
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go
new file mode 100644
index 0000000..3f944a6
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha_grpc.pb.go
@@ -0,0 +1,3098 @@
+//
+// Top-level Voltha API definition
+//
+// For details, see individual definition files.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+// versions:
+// - protoc-gen-go-grpc v1.6.0
+// - protoc             v4.25.8
+// source: voltha_protos/voltha.proto
+
+package voltha
+
+import (
+	context "context"
+	common "github.com/opencord/voltha-protos/v5/go/common"
+	extension "github.com/opencord/voltha-protos/v5/go/extension"
+	omci "github.com/opencord/voltha-protos/v5/go/omci"
+	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
+	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	emptypb "google.golang.org/protobuf/types/known/emptypb"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
+
+const (
+	VolthaService_GetVoltha_FullMethodName                         = "/voltha.VolthaService/GetVoltha"
+	VolthaService_ListCoreInstances_FullMethodName                 = "/voltha.VolthaService/ListCoreInstances"
+	VolthaService_GetCoreInstance_FullMethodName                   = "/voltha.VolthaService/GetCoreInstance"
+	VolthaService_ListAdapters_FullMethodName                      = "/voltha.VolthaService/ListAdapters"
+	VolthaService_ListLogicalDevices_FullMethodName                = "/voltha.VolthaService/ListLogicalDevices"
+	VolthaService_GetLogicalDevice_FullMethodName                  = "/voltha.VolthaService/GetLogicalDevice"
+	VolthaService_ListLogicalDevicePorts_FullMethodName            = "/voltha.VolthaService/ListLogicalDevicePorts"
+	VolthaService_GetLogicalDevicePort_FullMethodName              = "/voltha.VolthaService/GetLogicalDevicePort"
+	VolthaService_EnableLogicalDevicePort_FullMethodName           = "/voltha.VolthaService/EnableLogicalDevicePort"
+	VolthaService_DisableLogicalDevicePort_FullMethodName          = "/voltha.VolthaService/DisableLogicalDevicePort"
+	VolthaService_ListLogicalDeviceFlows_FullMethodName            = "/voltha.VolthaService/ListLogicalDeviceFlows"
+	VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName      = "/voltha.VolthaService/UpdateLogicalDeviceFlowTable"
+	VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName     = "/voltha.VolthaService/UpdateLogicalDeviceMeterTable"
+	VolthaService_ListLogicalDeviceMeters_FullMethodName           = "/voltha.VolthaService/ListLogicalDeviceMeters"
+	VolthaService_ListLogicalDeviceFlowGroups_FullMethodName       = "/voltha.VolthaService/ListLogicalDeviceFlowGroups"
+	VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName = "/voltha.VolthaService/UpdateLogicalDeviceFlowGroupTable"
+	VolthaService_ListDevices_FullMethodName                       = "/voltha.VolthaService/ListDevices"
+	VolthaService_ListDeviceIds_FullMethodName                     = "/voltha.VolthaService/ListDeviceIds"
+	VolthaService_ReconcileDevices_FullMethodName                  = "/voltha.VolthaService/ReconcileDevices"
+	VolthaService_GetDevice_FullMethodName                         = "/voltha.VolthaService/GetDevice"
+	VolthaService_CreateDevice_FullMethodName                      = "/voltha.VolthaService/CreateDevice"
+	VolthaService_EnableDevice_FullMethodName                      = "/voltha.VolthaService/EnableDevice"
+	VolthaService_DisableDevice_FullMethodName                     = "/voltha.VolthaService/DisableDevice"
+	VolthaService_RebootDevice_FullMethodName                      = "/voltha.VolthaService/RebootDevice"
+	VolthaService_DeleteDevice_FullMethodName                      = "/voltha.VolthaService/DeleteDevice"
+	VolthaService_ForceDeleteDevice_FullMethodName                 = "/voltha.VolthaService/ForceDeleteDevice"
+	VolthaService_DownloadImage_FullMethodName                     = "/voltha.VolthaService/DownloadImage"
+	VolthaService_GetImageDownloadStatus_FullMethodName            = "/voltha.VolthaService/GetImageDownloadStatus"
+	VolthaService_GetImageDownload_FullMethodName                  = "/voltha.VolthaService/GetImageDownload"
+	VolthaService_ListImageDownloads_FullMethodName                = "/voltha.VolthaService/ListImageDownloads"
+	VolthaService_CancelImageDownload_FullMethodName               = "/voltha.VolthaService/CancelImageDownload"
+	VolthaService_ActivateImageUpdate_FullMethodName               = "/voltha.VolthaService/ActivateImageUpdate"
+	VolthaService_RevertImageUpdate_FullMethodName                 = "/voltha.VolthaService/RevertImageUpdate"
+	VolthaService_DownloadImageToDevice_FullMethodName             = "/voltha.VolthaService/DownloadImageToDevice"
+	VolthaService_GetImageStatus_FullMethodName                    = "/voltha.VolthaService/GetImageStatus"
+	VolthaService_AbortImageUpgradeToDevice_FullMethodName         = "/voltha.VolthaService/AbortImageUpgradeToDevice"
+	VolthaService_GetOnuImages_FullMethodName                      = "/voltha.VolthaService/GetOnuImages"
+	VolthaService_ActivateImage_FullMethodName                     = "/voltha.VolthaService/ActivateImage"
+	VolthaService_CommitImage_FullMethodName                       = "/voltha.VolthaService/CommitImage"
+	VolthaService_ListDevicePorts_FullMethodName                   = "/voltha.VolthaService/ListDevicePorts"
+	VolthaService_ListDevicePmConfigs_FullMethodName               = "/voltha.VolthaService/ListDevicePmConfigs"
+	VolthaService_UpdateDevicePmConfigs_FullMethodName             = "/voltha.VolthaService/UpdateDevicePmConfigs"
+	VolthaService_ListDeviceFlows_FullMethodName                   = "/voltha.VolthaService/ListDeviceFlows"
+	VolthaService_ListDeviceFlowGroups_FullMethodName              = "/voltha.VolthaService/ListDeviceFlowGroups"
+	VolthaService_ListDeviceTypes_FullMethodName                   = "/voltha.VolthaService/ListDeviceTypes"
+	VolthaService_GetDeviceType_FullMethodName                     = "/voltha.VolthaService/GetDeviceType"
+	VolthaService_StreamPacketsOut_FullMethodName                  = "/voltha.VolthaService/StreamPacketsOut"
+	VolthaService_ReceivePacketsIn_FullMethodName                  = "/voltha.VolthaService/ReceivePacketsIn"
+	VolthaService_ReceiveChangeEvents_FullMethodName               = "/voltha.VolthaService/ReceiveChangeEvents"
+	VolthaService_CreateEventFilter_FullMethodName                 = "/voltha.VolthaService/CreateEventFilter"
+	VolthaService_GetEventFilter_FullMethodName                    = "/voltha.VolthaService/GetEventFilter"
+	VolthaService_UpdateEventFilter_FullMethodName                 = "/voltha.VolthaService/UpdateEventFilter"
+	VolthaService_DeleteEventFilter_FullMethodName                 = "/voltha.VolthaService/DeleteEventFilter"
+	VolthaService_ListEventFilters_FullMethodName                  = "/voltha.VolthaService/ListEventFilters"
+	VolthaService_GetImages_FullMethodName                         = "/voltha.VolthaService/GetImages"
+	VolthaService_SelfTest_FullMethodName                          = "/voltha.VolthaService/SelfTest"
+	VolthaService_GetMibDeviceData_FullMethodName                  = "/voltha.VolthaService/GetMibDeviceData"
+	VolthaService_GetAlarmDeviceData_FullMethodName                = "/voltha.VolthaService/GetAlarmDeviceData"
+	VolthaService_SimulateAlarm_FullMethodName                     = "/voltha.VolthaService/SimulateAlarm"
+	VolthaService_EnablePort_FullMethodName                        = "/voltha.VolthaService/EnablePort"
+	VolthaService_DisablePort_FullMethodName                       = "/voltha.VolthaService/DisablePort"
+	VolthaService_GetExtValue_FullMethodName                       = "/voltha.VolthaService/GetExtValue"
+	VolthaService_SetExtValue_FullMethodName                       = "/voltha.VolthaService/SetExtValue"
+	VolthaService_StartOmciTestAction_FullMethodName               = "/voltha.VolthaService/StartOmciTestAction"
+	VolthaService_PutVoipSystemProfile_FullMethodName              = "/voltha.VolthaService/PutVoipSystemProfile"
+	VolthaService_DeleteVoipSystemProfile_FullMethodName           = "/voltha.VolthaService/DeleteVoipSystemProfile"
+	VolthaService_PutVoipUserProfile_FullMethodName                = "/voltha.VolthaService/PutVoipUserProfile"
+	VolthaService_DeleteVoipUserProfile_FullMethodName             = "/voltha.VolthaService/DeleteVoipUserProfile"
+	VolthaService_DisableOnuDevice_FullMethodName                  = "/voltha.VolthaService/DisableOnuDevice"
+	VolthaService_EnableOnuDevice_FullMethodName                   = "/voltha.VolthaService/EnableOnuDevice"
+	VolthaService_DisableOnuSerialNumber_FullMethodName            = "/voltha.VolthaService/DisableOnuSerialNumber"
+	VolthaService_EnableOnuSerialNumber_FullMethodName             = "/voltha.VolthaService/EnableOnuSerialNumber"
+	VolthaService_UpdateDevice_FullMethodName                      = "/voltha.VolthaService/UpdateDevice"
+)
+
+// VolthaServiceClient is the client API for VolthaService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+//
+// Voltha APIs
+type VolthaServiceClient interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error)
+	// Receive control packet stream
+	ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error)
+	ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error)
+	CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error)
+	UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error)
+	DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error)
+	GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error)
+	SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error)
+	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error)
+	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error)
+}
+
+type volthaServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewVolthaServiceClient(cc grpc.ClientConnInterface) VolthaServiceClient {
+	return &volthaServiceClient{cc}
+}
+
+func (c *volthaServiceClient) GetVoltha(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Voltha, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Voltha)
+	err := c.cc.Invoke(ctx, VolthaService_GetVoltha_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListCoreInstances(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CoreInstances, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstances)
+	err := c.cc.Invoke(ctx, VolthaService_ListCoreInstances_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetCoreInstance(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*CoreInstance, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(CoreInstance)
+	err := c.cc.Invoke(ctx, VolthaService_GetCoreInstance_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListAdapters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Adapters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Adapters)
+	err := c.cc.Invoke(ctx, VolthaService_ListAdapters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*LogicalDevices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevices)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalDevice, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalDevice)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*LogicalPorts, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPorts)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*LogicalPort, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(LogicalPort)
+	err := c.cc.Invoke(ctx, VolthaService_GetLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableLogicalDevicePort(ctx context.Context, in *LogicalPortId, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableLogicalDevicePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowTable(ctx context.Context, in *openflow_13.FlowTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceMeterTable(ctx context.Context, in *openflow_13.MeterModUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceMeters(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Meters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Meters)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceMeters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListLogicalDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListLogicalDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateLogicalDeviceFlowGroupTable(ctx context.Context, in *openflow_13.FlowGroupTableUpdate, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevices(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*Devices, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Devices)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceIds(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.IDs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.IDs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceIds_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ReconcileDevices(ctx context.Context, in *common.IDs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ReconcileDevices_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_GetDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CreateDevice(ctx context.Context, in *Device, opts ...grpc.CallOption) (*Device, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Device)
+	err := c.cc.Invoke(ctx, VolthaService_CreateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_RebootDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_ForceDeleteDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownloadStatus(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownloadStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) GetImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*ImageDownload, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownload)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ListImageDownloads(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*ImageDownloads, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ImageDownloads)
+	err := c.cc.Invoke(ctx, VolthaService_ListImageDownloads_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) CancelImageDownload(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_CancelImageDownload_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) ActivateImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Deprecated: Do not use.
+func (c *volthaServiceClient) RevertImageUpdate(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_RevertImageUpdate_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DownloadImageToDevice(ctx context.Context, in *DeviceImageDownloadRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_DownloadImageToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImageStatus(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_GetImageStatus_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) AbortImageUpgradeToDevice(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_AbortImageUpgradeToDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetOnuImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*OnuImages, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(OnuImages)
+	err := c.cc.Invoke(ctx, VolthaService_GetOnuImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ActivateImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_ActivateImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) CommitImage(ctx context.Context, in *DeviceImageRequest, opts ...grpc.CallOption) (*DeviceImageResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceImageResponse)
+	err := c.cc.Invoke(ctx, VolthaService_CommitImage_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePorts(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Ports, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Ports)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePorts_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDevicePmConfigs(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*PmConfigs, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(PmConfigs)
+	err := c.cc.Invoke(ctx, VolthaService_ListDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevicePmConfigs(ctx context.Context, in *PmConfigs, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevicePmConfigs_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlows(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.Flows, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.Flows)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlows_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceFlowGroups(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*openflow_13.FlowGroups, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(openflow_13.FlowGroups)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceFlowGroups_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListDeviceTypes(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*DeviceTypes, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceTypes)
+	err := c.cc.Invoke(ctx, VolthaService_ListDeviceTypes_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetDeviceType(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*DeviceType, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(DeviceType)
+	err := c.cc.Invoke(ctx, VolthaService_GetDeviceType_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StreamPacketsOut(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[0], VolthaService_StreamPacketsOut_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[openflow_13.PacketOut, emptypb.Empty]{ClientStream: stream}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutClient = grpc.ClientStreamingClient[openflow_13.PacketOut, emptypb.Empty]
+
+func (c *volthaServiceClient) ReceivePacketsIn(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.PacketIn], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[1], VolthaService_ReceivePacketsIn_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.PacketIn]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInClient = grpc.ServerStreamingClient[openflow_13.PacketIn]
+
+func (c *volthaServiceClient) ReceiveChangeEvents(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[openflow_13.ChangeEvent], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &VolthaService_ServiceDesc.Streams[2], VolthaService_ReceiveChangeEvents_FullMethodName, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &grpc.GenericClientStream[emptypb.Empty, openflow_13.ChangeEvent]{ClientStream: stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsClient = grpc.ServerStreamingClient[openflow_13.ChangeEvent]
+
+func (c *volthaServiceClient) CreateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_CreateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetEventFilter(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_GetEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*EventFilter, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilter)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteEventFilter(ctx context.Context, in *EventFilter, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteEventFilter_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) ListEventFilters(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*EventFilters, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(EventFilters)
+	err := c.cc.Invoke(ctx, VolthaService_ListEventFilters_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetImages(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*Images, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(Images)
+	err := c.cc.Invoke(ctx, VolthaService_GetImages_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SelfTest(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*SelfTestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(SelfTestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_SelfTest_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetMibDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.MibDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.MibDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetMibDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetAlarmDeviceData(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*omci.AlarmDeviceData, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.AlarmDeviceData)
+	err := c.cc.Invoke(ctx, VolthaService_GetAlarmDeviceData_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SimulateAlarm(ctx context.Context, in *SimulateAlarmRequest, opts ...grpc.CallOption) (*common.OperationResp, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(common.OperationResp)
+	err := c.cc.Invoke(ctx, VolthaService_SimulateAlarm_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisablePort_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) GetExtValue(ctx context.Context, in *extension.ValueSpecifier, opts ...grpc.CallOption) (*extension.ReturnValues, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(extension.ReturnValues)
+	err := c.cc.Invoke(ctx, VolthaService_GetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_SetExtValue_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(omci.TestResponse)
+	err := c.cc.Invoke(ctx, VolthaService_StartOmciTestAction_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipSystemProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_PutVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DeleteVoipUserProfile_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DisableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_DisableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) EnableOnuSerialNumber(ctx context.Context, in *OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_EnableOnuSerialNumber_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) UpdateDevice(ctx context.Context, in *UpdateDevice, opts ...grpc.CallOption) (*emptypb.Empty, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(emptypb.Empty)
+	err := c.cc.Invoke(ctx, VolthaService_UpdateDevice_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// VolthaServiceServer is the server API for VolthaService service.
+// All implementations must embed UnimplementedVolthaServiceServer
+// for forward compatibility.
+//
+// Voltha APIs
+type VolthaServiceServer interface {
+	// Get high level information on the Voltha cluster
+	GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error)
+	// List all Voltha cluster core instances
+	ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error)
+	// Get details on a Voltha cluster instance
+	GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error)
+	// List all active adapters (plugins) in the Voltha cluster
+	ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error)
+	// List all logical devices managed by the Voltha cluster
+	ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error)
+	// Get additional information on a given logical device
+	GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error)
+	// List ports of a logical device
+	ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error)
+	// Gets a logical device port
+	GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error)
+	// Enables a logical device port
+	EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// Disables a logical device port
+	DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error)
+	// List all flows of a logical device
+	ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// Update flow table for logical device
+	UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error)
+	// Update meter table for logical device
+	UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error)
+	// List all meters of a logical device
+	ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error)
+	// List all flow groups of a logical device
+	ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// Update group table for device
+	UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error)
+	// List all physical devices controlled by the Voltha cluster
+	ListDevices(context.Context, *emptypb.Empty) (*Devices, error)
+	// List all physical devices IDs controlled by the Voltha cluster
+	ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error)
+	// Request to a voltha Core to reconcile a set of devices based on their IDs
+	ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error)
+	// Get more information on a given physical device
+	GetDevice(context.Context, *common.ID) (*Device, error)
+	// Pre-provision a new physical device
+	CreateDevice(context.Context, *Device) (*Device, error)
+	// Enable a device.  If the device was in pre-provisioned state then it
+	// will transition to ENABLED state.  If it was is DISABLED state then it
+	// will transition to ENABLED state as well.
+	EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disable a device
+	DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Reboot a device
+	RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Delete a device
+	DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Forcefully delete a device
+	ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Deprecated: Do not use.
+	// Request an image download to the standby partition
+	// of a device.
+	// Note that the call is expected to be non-blocking.
+	DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Get image download status on a device
+	// The request retrieves progress on device and updates db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// Get image download db record
+	// Deprecated in voltha 2.8, will be removed
+	GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error)
+	// Deprecated: Do not use.
+	// List image download db records for a given device
+	// Deprecated in voltha 2.8, will be removed
+	ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error)
+	// Deprecated: Do not use.
+	// Cancel an existing image download process on a device
+	// Deprecated in voltha 2.8, will be removed
+	CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Activate the specified image at a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Deprecated: Do not use.
+	// Revert the specified image at standby partition
+	// to active partition, and revert to previous image
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// previous image running on device
+	// Note that the call is expected to be non-blocking.
+	// Deprecated in voltha 2.8, will be removed
+	RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error)
+	// Downloads a certain image to the standby partition of the devices
+	// Note that the call is expected to be non-blocking.
+	DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error)
+	// Get image status on a number of devices devices
+	// Polled from northbound systems to get state of download/activate/commit
+	GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Aborts the upgrade of an image on a device
+	// To be used carefully, stops any further operations for the Image on the given devices
+	// Might also stop if possible existing work, but no guarantees are given,
+	// depends on implementation and procedure status.
+	AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Get Both Active and Standby image for a given device
+	GetOnuImages(context.Context, *common.ID) (*OnuImages, error)
+	// Activate the specified image from a standby partition
+	// to active partition.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device
+	// Note that the call is expected to be non-blocking.
+	ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// Commit the specified image to be default.
+	// Depending on the device implementation, this call
+	// may or may not cause device reboot.
+	// If no reboot, then a reboot is required to make the
+	// activated image running on device upon next reboot
+	// Note that the call is expected to be non-blocking.
+	CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error)
+	// List ports of a device
+	ListDevicePorts(context.Context, *common.ID) (*Ports, error)
+	// List pm config of a device
+	ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error)
+	// Update the pm config of a device
+	UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error)
+	// List all flows of a device
+	ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error)
+	// List all flow groups of a device
+	ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error)
+	// List device types known to Voltha
+	ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error)
+	// Get additional information on a device type
+	GetDeviceType(context.Context, *common.ID) (*DeviceType, error)
+	// Stream control packets to the dataplane
+	StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error
+	// Receive control packet stream
+	ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error
+	ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error
+	CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	// Get all filters present for a device
+	GetEventFilter(context.Context, *common.ID) (*EventFilters, error)
+	UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error)
+	DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error)
+	// Get all the filters present
+	ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error)
+	GetImages(context.Context, *common.ID) (*Images, error)
+	SelfTest(context.Context, *common.ID) (*SelfTestResponse, error)
+	// OpenOMCI MIB information
+	GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error)
+	// OpenOMCI ALARM information
+	GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error)
+	// Simulate an Alarm
+	SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error)
+	EnablePort(context.Context, *Port) (*emptypb.Empty, error)
+	DisablePort(context.Context, *Port) (*emptypb.Empty, error)
+	GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error)
+	SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error)
+	// Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+	DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+	EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+	DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+	EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error)
+	// Update the Device configuration, for now only ip address updation is supported
+	UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error)
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+// UnimplementedVolthaServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedVolthaServiceServer struct{}
+
+func (UnimplementedVolthaServiceServer) GetVoltha(context.Context, *emptypb.Empty) (*Voltha, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetVoltha not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListCoreInstances(context.Context, *emptypb.Empty) (*CoreInstances, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListCoreInstances not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetCoreInstance(context.Context, *common.ID) (*CoreInstance, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetCoreInstance not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListAdapters(context.Context, *emptypb.Empty) (*Adapters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListAdapters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevices(context.Context, *emptypb.Empty) (*LogicalDevices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevice(context.Context, *common.ID) (*LogicalDevice, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDevicePorts(context.Context, *common.ID) (*LogicalPorts, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetLogicalDevicePort(context.Context, *LogicalPortId) (*LogicalPort, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableLogicalDevicePort(context.Context, *LogicalPortId) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableLogicalDevicePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowTable(context.Context, *openflow_13.FlowTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceMeterTable(context.Context, *openflow_13.MeterModUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceMeterTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceMeters(context.Context, *common.ID) (*openflow_13.Meters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceMeters not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListLogicalDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListLogicalDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateLogicalDeviceFlowGroupTable(context.Context, *openflow_13.FlowGroupTableUpdate) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateLogicalDeviceFlowGroupTable not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevices(context.Context, *emptypb.Empty) (*Devices, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceIds(context.Context, *emptypb.Empty) (*common.IDs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceIds not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReconcileDevices(context.Context, *common.IDs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ReconcileDevices not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDevice(context.Context, *common.ID) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateDevice(context.Context, *Device) (*Device, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) RebootDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method RebootDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) ForceDeleteDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method ForceDeleteDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImage(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownloadStatus(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownloadStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageDownload(context.Context, *ImageDownload) (*ImageDownload, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListImageDownloads(context.Context, *common.ID) (*ImageDownloads, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListImageDownloads not implemented")
+}
+func (UnimplementedVolthaServiceServer) CancelImageDownload(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method CancelImageDownload not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) RevertImageUpdate(context.Context, *ImageDownload) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method RevertImageUpdate not implemented")
+}
+func (UnimplementedVolthaServiceServer) DownloadImageToDevice(context.Context, *DeviceImageDownloadRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method DownloadImageToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImageStatus(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImageStatus not implemented")
+}
+func (UnimplementedVolthaServiceServer) AbortImageUpgradeToDevice(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method AbortImageUpgradeToDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetOnuImages(context.Context, *common.ID) (*OnuImages, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetOnuImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) ActivateImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method ActivateImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) CommitImage(context.Context, *DeviceImageRequest) (*DeviceImageResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method CommitImage not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePorts(context.Context, *common.ID) (*Ports, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePorts not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDevicePmConfigs(context.Context, *common.ID) (*PmConfigs, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevicePmConfigs(context.Context, *PmConfigs) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevicePmConfigs not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlows(context.Context, *common.ID) (*openflow_13.Flows, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlows not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceFlowGroups(context.Context, *common.ID) (*openflow_13.FlowGroups, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceFlowGroups not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListDeviceTypes(context.Context, *emptypb.Empty) (*DeviceTypes, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListDeviceTypes not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetDeviceType(context.Context, *common.ID) (*DeviceType, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetDeviceType not implemented")
+}
+func (UnimplementedVolthaServiceServer) StreamPacketsOut(grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]) error {
+	return status.Error(codes.Unimplemented, "method StreamPacketsOut not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceivePacketsIn(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.PacketIn]) error {
+	return status.Error(codes.Unimplemented, "method ReceivePacketsIn not implemented")
+}
+func (UnimplementedVolthaServiceServer) ReceiveChangeEvents(*emptypb.Empty, grpc.ServerStreamingServer[openflow_13.ChangeEvent]) error {
+	return status.Error(codes.Unimplemented, "method ReceiveChangeEvents not implemented")
+}
+func (UnimplementedVolthaServiceServer) CreateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method CreateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetEventFilter(context.Context, *common.ID) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateEventFilter(context.Context, *EventFilter) (*EventFilter, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteEventFilter(context.Context, *EventFilter) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteEventFilter not implemented")
+}
+func (UnimplementedVolthaServiceServer) ListEventFilters(context.Context, *emptypb.Empty) (*EventFilters, error) {
+	return nil, status.Error(codes.Unimplemented, "method ListEventFilters not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetImages(context.Context, *common.ID) (*Images, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetImages not implemented")
+}
+func (UnimplementedVolthaServiceServer) SelfTest(context.Context, *common.ID) (*SelfTestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method SelfTest not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetMibDeviceData(context.Context, *common.ID) (*omci.MibDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetMibDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetAlarmDeviceData(context.Context, *common.ID) (*omci.AlarmDeviceData, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetAlarmDeviceData not implemented")
+}
+func (UnimplementedVolthaServiceServer) SimulateAlarm(context.Context, *SimulateAlarmRequest) (*common.OperationResp, error) {
+	return nil, status.Error(codes.Unimplemented, "method SimulateAlarm not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisablePort(context.Context, *Port) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisablePort not implemented")
+}
+func (UnimplementedVolthaServiceServer) GetExtValue(context.Context, *extension.ValueSpecifier) (*extension.ReturnValues, error) {
+	return nil, status.Error(codes.Unimplemented, "method GetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) SetExtValue(context.Context, *extension.ValueSet) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method SetExtValue not implemented")
+}
+func (UnimplementedVolthaServiceServer) StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "method StartOmciTestAction not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method PutVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DeleteVoipUserProfile(context.Context, *common.Key) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuDevice(context.Context, *common.ID) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) DisableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) EnableOnuSerialNumber(context.Context, *OnuSerialNumberOnOLTPon) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
+func (UnimplementedVolthaServiceServer) UpdateDevice(context.Context, *UpdateDevice) (*emptypb.Empty, error) {
+	return nil, status.Error(codes.Unimplemented, "method UpdateDevice not implemented")
+}
+func (UnimplementedVolthaServiceServer) mustEmbedUnimplementedVolthaServiceServer() {}
+func (UnimplementedVolthaServiceServer) testEmbeddedByValue()                       {}
+
+// UnsafeVolthaServiceServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to VolthaServiceServer will
+// result in compilation errors.
+type UnsafeVolthaServiceServer interface {
+	mustEmbedUnimplementedVolthaServiceServer()
+}
+
+func RegisterVolthaServiceServer(s grpc.ServiceRegistrar, srv VolthaServiceServer) {
+	// If the following call panics, it indicates UnimplementedVolthaServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
+	s.RegisterService(&VolthaService_ServiceDesc, srv)
+}
+
+func _VolthaService_GetVoltha_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetVoltha_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetVoltha(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListCoreInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListCoreInstances_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListCoreInstances(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetCoreInstance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetCoreInstance_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetCoreInstance(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListAdapters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListAdapters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListAdapters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableLogicalDevicePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LogicalPortId)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableLogicalDevicePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableLogicalDevicePort(ctx, req.(*LogicalPortId))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowTable(ctx, req.(*openflow_13.FlowTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceMeterTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.MeterModUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceMeterTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceMeterTable(ctx, req.(*openflow_13.MeterModUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceMeters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceMeters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceMeters(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListLogicalDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListLogicalDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListLogicalDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(openflow_13.FlowGroupTableUpdate)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateLogicalDeviceFlowGroupTable_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateLogicalDeviceFlowGroupTable(ctx, req.(*openflow_13.FlowGroupTableUpdate))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevices(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceIds_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceIds(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ReconcileDevices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.IDs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ReconcileDevices_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ReconcileDevices(ctx, req.(*common.IDs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CreateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateDevice(ctx, req.(*Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RebootDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RebootDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RebootDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ForceDeleteDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImage(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownloadStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownloadStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownloadStatus(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListImageDownloads_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListImageDownloads_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListImageDownloads(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CancelImageDownload_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CancelImageDownload_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CancelImageDownload(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_RevertImageUpdate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ImageDownload)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_RevertImageUpdate_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).RevertImageUpdate(ctx, req.(*ImageDownload))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DownloadImageToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageDownloadRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DownloadImageToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DownloadImageToDevice(ctx, req.(*DeviceImageDownloadRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImageStatus_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImageStatus(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_AbortImageUpgradeToDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_AbortImageUpgradeToDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).AbortImageUpgradeToDevice(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetOnuImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetOnuImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetOnuImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ActivateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ActivateImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ActivateImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_CommitImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeviceImageRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CommitImage(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CommitImage_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CommitImage(ctx, req.(*DeviceImageRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePorts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePorts_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePorts(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDevicePmConfigs(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevicePmConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(PmConfigs)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevicePmConfigs_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevicePmConfigs(ctx, req.(*PmConfigs))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlows_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlows(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceFlowGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceFlowGroups_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceFlowGroups(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListDeviceTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListDeviceTypes_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListDeviceTypes(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetDeviceType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetDeviceType_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetDeviceType(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StreamPacketsOut_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(VolthaServiceServer).StreamPacketsOut(&grpc.GenericServerStream[openflow_13.PacketOut, emptypb.Empty]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_StreamPacketsOutServer = grpc.ClientStreamingServer[openflow_13.PacketOut, emptypb.Empty]
+
+func _VolthaService_ReceivePacketsIn_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceivePacketsIn(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.PacketIn]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceivePacketsInServer = grpc.ServerStreamingServer[openflow_13.PacketIn]
+
+func _VolthaService_ReceiveChangeEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(emptypb.Empty)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(VolthaServiceServer).ReceiveChangeEvents(m, &grpc.GenericServerStream[emptypb.Empty, openflow_13.ChangeEvent]{ServerStream: stream})
+}
+
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type VolthaService_ReceiveChangeEventsServer = grpc.ServerStreamingServer[openflow_13.ChangeEvent]
+
+func _VolthaService_CreateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_CreateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).CreateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetEventFilter(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteEventFilter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(EventFilter)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteEventFilter_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteEventFilter(ctx, req.(*EventFilter))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_ListEventFilters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(emptypb.Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_ListEventFilters_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).ListEventFilters(ctx, req.(*emptypb.Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetImages_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetImages(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SelfTest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SelfTest(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SelfTest_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SelfTest(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetMibDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetMibDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetMibDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetAlarmDeviceData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetAlarmDeviceData_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetAlarmDeviceData(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SimulateAlarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SimulateAlarmRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SimulateAlarm_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SimulateAlarm(ctx, req.(*SimulateAlarmRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisablePort_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Port)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisablePort(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisablePort_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisablePort(ctx, req.(*Port))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSpecifier)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_GetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).GetExtValue(ctx, req.(*extension.ValueSpecifier))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_SetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(extension.ValueSet)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_SetExtValue_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).SetExtValue(ctx, req.(*extension.ValueSet))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(omci.OmciTestRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_StartOmciTestAction_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*omci.OmciTestRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_system_profile.VoipSystemProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipSystemProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_user_profile.VoipUserProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_PutVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DeleteVoipUserProfile_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.ID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuDevice(ctx, req.(*common.ID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_DisableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DisableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_EnableOnuSerialNumber_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).EnableOnuSerialNumber(ctx, req.(*OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_UpdateDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateDevice)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: VolthaService_UpdateDevice_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).UpdateDevice(ctx, req.(*UpdateDevice))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+// VolthaService_ServiceDesc is the grpc.ServiceDesc for VolthaService service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var VolthaService_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "voltha.VolthaService",
+	HandlerType: (*VolthaServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetVoltha",
+			Handler:    _VolthaService_GetVoltha_Handler,
+		},
+		{
+			MethodName: "ListCoreInstances",
+			Handler:    _VolthaService_ListCoreInstances_Handler,
+		},
+		{
+			MethodName: "GetCoreInstance",
+			Handler:    _VolthaService_GetCoreInstance_Handler,
+		},
+		{
+			MethodName: "ListAdapters",
+			Handler:    _VolthaService_ListAdapters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevices",
+			Handler:    _VolthaService_ListLogicalDevices_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevice",
+			Handler:    _VolthaService_GetLogicalDevice_Handler,
+		},
+		{
+			MethodName: "ListLogicalDevicePorts",
+			Handler:    _VolthaService_ListLogicalDevicePorts_Handler,
+		},
+		{
+			MethodName: "GetLogicalDevicePort",
+			Handler:    _VolthaService_GetLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "EnableLogicalDevicePort",
+			Handler:    _VolthaService_EnableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "DisableLogicalDevicePort",
+			Handler:    _VolthaService_DisableLogicalDevicePort_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlows",
+			Handler:    _VolthaService_ListLogicalDeviceFlows_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowTable_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceMeterTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceMeterTable_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceMeters",
+			Handler:    _VolthaService_ListLogicalDeviceMeters_Handler,
+		},
+		{
+			MethodName: "ListLogicalDeviceFlowGroups",
+			Handler:    _VolthaService_ListLogicalDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "UpdateLogicalDeviceFlowGroupTable",
+			Handler:    _VolthaService_UpdateLogicalDeviceFlowGroupTable_Handler,
+		},
+		{
+			MethodName: "ListDevices",
+			Handler:    _VolthaService_ListDevices_Handler,
+		},
+		{
+			MethodName: "ListDeviceIds",
+			Handler:    _VolthaService_ListDeviceIds_Handler,
+		},
+		{
+			MethodName: "ReconcileDevices",
+			Handler:    _VolthaService_ReconcileDevices_Handler,
+		},
+		{
+			MethodName: "GetDevice",
+			Handler:    _VolthaService_GetDevice_Handler,
+		},
+		{
+			MethodName: "CreateDevice",
+			Handler:    _VolthaService_CreateDevice_Handler,
+		},
+		{
+			MethodName: "EnableDevice",
+			Handler:    _VolthaService_EnableDevice_Handler,
+		},
+		{
+			MethodName: "DisableDevice",
+			Handler:    _VolthaService_DisableDevice_Handler,
+		},
+		{
+			MethodName: "RebootDevice",
+			Handler:    _VolthaService_RebootDevice_Handler,
+		},
+		{
+			MethodName: "DeleteDevice",
+			Handler:    _VolthaService_DeleteDevice_Handler,
+		},
+		{
+			MethodName: "ForceDeleteDevice",
+			Handler:    _VolthaService_ForceDeleteDevice_Handler,
+		},
+		{
+			MethodName: "DownloadImage",
+			Handler:    _VolthaService_DownloadImage_Handler,
+		},
+		{
+			MethodName: "GetImageDownloadStatus",
+			Handler:    _VolthaService_GetImageDownloadStatus_Handler,
+		},
+		{
+			MethodName: "GetImageDownload",
+			Handler:    _VolthaService_GetImageDownload_Handler,
+		},
+		{
+			MethodName: "ListImageDownloads",
+			Handler:    _VolthaService_ListImageDownloads_Handler,
+		},
+		{
+			MethodName: "CancelImageDownload",
+			Handler:    _VolthaService_CancelImageDownload_Handler,
+		},
+		{
+			MethodName: "ActivateImageUpdate",
+			Handler:    _VolthaService_ActivateImageUpdate_Handler,
+		},
+		{
+			MethodName: "RevertImageUpdate",
+			Handler:    _VolthaService_RevertImageUpdate_Handler,
+		},
+		{
+			MethodName: "DownloadImageToDevice",
+			Handler:    _VolthaService_DownloadImageToDevice_Handler,
+		},
+		{
+			MethodName: "GetImageStatus",
+			Handler:    _VolthaService_GetImageStatus_Handler,
+		},
+		{
+			MethodName: "AbortImageUpgradeToDevice",
+			Handler:    _VolthaService_AbortImageUpgradeToDevice_Handler,
+		},
+		{
+			MethodName: "GetOnuImages",
+			Handler:    _VolthaService_GetOnuImages_Handler,
+		},
+		{
+			MethodName: "ActivateImage",
+			Handler:    _VolthaService_ActivateImage_Handler,
+		},
+		{
+			MethodName: "CommitImage",
+			Handler:    _VolthaService_CommitImage_Handler,
+		},
+		{
+			MethodName: "ListDevicePorts",
+			Handler:    _VolthaService_ListDevicePorts_Handler,
+		},
+		{
+			MethodName: "ListDevicePmConfigs",
+			Handler:    _VolthaService_ListDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "UpdateDevicePmConfigs",
+			Handler:    _VolthaService_UpdateDevicePmConfigs_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlows",
+			Handler:    _VolthaService_ListDeviceFlows_Handler,
+		},
+		{
+			MethodName: "ListDeviceFlowGroups",
+			Handler:    _VolthaService_ListDeviceFlowGroups_Handler,
+		},
+		{
+			MethodName: "ListDeviceTypes",
+			Handler:    _VolthaService_ListDeviceTypes_Handler,
+		},
+		{
+			MethodName: "GetDeviceType",
+			Handler:    _VolthaService_GetDeviceType_Handler,
+		},
+		{
+			MethodName: "CreateEventFilter",
+			Handler:    _VolthaService_CreateEventFilter_Handler,
+		},
+		{
+			MethodName: "GetEventFilter",
+			Handler:    _VolthaService_GetEventFilter_Handler,
+		},
+		{
+			MethodName: "UpdateEventFilter",
+			Handler:    _VolthaService_UpdateEventFilter_Handler,
+		},
+		{
+			MethodName: "DeleteEventFilter",
+			Handler:    _VolthaService_DeleteEventFilter_Handler,
+		},
+		{
+			MethodName: "ListEventFilters",
+			Handler:    _VolthaService_ListEventFilters_Handler,
+		},
+		{
+			MethodName: "GetImages",
+			Handler:    _VolthaService_GetImages_Handler,
+		},
+		{
+			MethodName: "SelfTest",
+			Handler:    _VolthaService_SelfTest_Handler,
+		},
+		{
+			MethodName: "GetMibDeviceData",
+			Handler:    _VolthaService_GetMibDeviceData_Handler,
+		},
+		{
+			MethodName: "GetAlarmDeviceData",
+			Handler:    _VolthaService_GetAlarmDeviceData_Handler,
+		},
+		{
+			MethodName: "SimulateAlarm",
+			Handler:    _VolthaService_SimulateAlarm_Handler,
+		},
+		{
+			MethodName: "EnablePort",
+			Handler:    _VolthaService_EnablePort_Handler,
+		},
+		{
+			MethodName: "DisablePort",
+			Handler:    _VolthaService_DisablePort_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _VolthaService_GetExtValue_Handler,
+		},
+		{
+			MethodName: "SetExtValue",
+			Handler:    _VolthaService_SetExtValue_Handler,
+		},
+		{
+			MethodName: "StartOmciTestAction",
+			Handler:    _VolthaService_StartOmciTestAction_Handler,
+		},
+		{
+			MethodName: "PutVoipSystemProfile",
+			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipSystemProfile",
+			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "PutVoipUserProfile",
+			Handler:    _VolthaService_PutVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipUserProfile",
+			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DisableOnuDevice",
+			Handler:    _VolthaService_DisableOnuDevice_Handler,
+		},
+		{
+			MethodName: "EnableOnuDevice",
+			Handler:    _VolthaService_EnableOnuDevice_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _VolthaService_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _VolthaService_EnableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "UpdateDevice",
+			Handler:    _VolthaService_UpdateDevice_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "StreamPacketsOut",
+			Handler:       _VolthaService_StreamPacketsOut_Handler,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "ReceivePacketsIn",
+			Handler:       _VolthaService_ReceivePacketsIn_Handler,
+			ServerStreams: true,
+		},
+		{
+			StreamName:    "ReceiveChangeEvents",
+			Handler:       _VolthaService_ReceiveChangeEvents_Handler,
+			ServerStreams: true,
+		},
+	},
+	Metadata: "voltha_protos/voltha.proto",
+}
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go
index e854d7e..2950fdb 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/id.go
@@ -82,7 +82,7 @@
 }
 
 // unmarshalJSON inflates trace id from hex string, possibly enclosed in quotes.
-func unmarshalJSON(dst []byte, src []byte) error {
+func unmarshalJSON(dst, src []byte) error {
 	if l := len(src); l >= 2 && src[0] == '"' && src[l-1] == '"' {
 		src = src[1 : l-1]
 	}
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go
index 29e629d..5bb3b16 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/number.go
@@ -41,7 +41,7 @@
 // strings or integers.
 type protoUint64 uint64
 
-// Int64 returns the protoUint64 as a uint64.
+// Uint64 returns the protoUint64 as a uint64.
 func (i *protoUint64) Uint64() uint64 { return uint64(*i) }
 
 // UnmarshalJSON decodes both strings and integers.
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go
index a13a6b7..67f80b6 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/span.go
@@ -10,6 +10,7 @@
 	"errors"
 	"fmt"
 	"io"
+	"math"
 	"time"
 )
 
@@ -151,8 +152,8 @@
 	}{
 		Alias:        Alias(s),
 		ParentSpanID: parentSpanId,
-		StartTime:    uint64(startT),
-		EndTime:      uint64(endT),
+		StartTime:    uint64(startT), // nolint:gosec  // >0 checked above.
+		EndTime:      uint64(endT),   // nolint:gosec  // >0 checked above.
 	})
 }
 
@@ -201,11 +202,13 @@
 		case "startTimeUnixNano", "start_time_unix_nano":
 			var val protoUint64
 			err = decoder.Decode(&val)
-			s.StartTime = time.Unix(0, int64(val.Uint64()))
+			v := int64(min(val.Uint64(), math.MaxInt64)) //nolint:gosec  // Overflow checked.
+			s.StartTime = time.Unix(0, v)
 		case "endTimeUnixNano", "end_time_unix_nano":
 			var val protoUint64
 			err = decoder.Decode(&val)
-			s.EndTime = time.Unix(0, int64(val.Uint64()))
+			v := int64(min(val.Uint64(), math.MaxInt64)) //nolint:gosec  // Overflow checked.
+			s.EndTime = time.Unix(0, v)
 		case "attributes":
 			err = decoder.Decode(&s.Attrs)
 		case "droppedAttributesCount", "dropped_attributes_count":
@@ -248,13 +251,20 @@
 type SpanFlags int32
 
 const (
+	// SpanFlagsTraceFlagsMask is a mask for trace-flags.
+	//
 	// Bits 0-7 are used for trace flags.
 	SpanFlagsTraceFlagsMask SpanFlags = 255
-	// Bits 8 and 9 are used to indicate that the parent span or link span is remote.
-	// Bit 8 (`HAS_IS_REMOTE`) indicates whether the value is known.
-	// Bit 9 (`IS_REMOTE`) indicates whether the span or link is remote.
+	// SpanFlagsContextHasIsRemoteMask is a mask for HAS_IS_REMOTE status.
+	//
+	// Bits 8 and 9 are used to indicate that the parent span or link span is
+	// remote. Bit 8 (`HAS_IS_REMOTE`) indicates whether the value is known.
 	SpanFlagsContextHasIsRemoteMask SpanFlags = 256
-	// SpanFlagsContextHasIsRemoteMask indicates the Span is remote.
+	// SpanFlagsContextIsRemoteMask is a mask for IS_REMOTE status.
+	//
+	// Bits 8 and 9 are used to indicate that the parent span or link span is
+	// remote. Bit 9 (`IS_REMOTE`) indicates whether the span or link is
+	// remote.
 	SpanFlagsContextIsRemoteMask SpanFlags = 512
 )
 
@@ -263,26 +273,30 @@
 type SpanKind int32
 
 const (
-	// Indicates that the span represents an internal operation within an application,
-	// as opposed to an operation happening at the boundaries. Default value.
+	// SpanKindInternal indicates that the span represents an internal
+	// operation within an application, as opposed to an operation happening at
+	// the boundaries.
 	SpanKindInternal SpanKind = 1
-	// Indicates that the span covers server-side handling of an RPC or other
-	// remote network request.
+	// SpanKindServer indicates that the span covers server-side handling of an
+	// RPC or other remote network request.
 	SpanKindServer SpanKind = 2
-	// Indicates that the span describes a request to some remote service.
+	// SpanKindClient indicates that the span describes a request to some
+	// remote service.
 	SpanKindClient SpanKind = 3
-	// Indicates that the span describes a producer sending a message to a broker.
-	// Unlike CLIENT and SERVER, there is often no direct critical path latency relationship
-	// between producer and consumer spans. A PRODUCER span ends when the message was accepted
-	// by the broker while the logical processing of the message might span a much longer time.
+	// SpanKindProducer indicates that the span describes a producer sending a
+	// message to a broker. Unlike SpanKindClient and SpanKindServer, there is
+	// often no direct critical path latency relationship between producer and
+	// consumer spans. A SpanKindProducer span ends when the message was
+	// accepted by the broker while the logical processing of the message might
+	// span a much longer time.
 	SpanKindProducer SpanKind = 4
-	// Indicates that the span describes consumer receiving a message from a broker.
-	// Like the PRODUCER kind, there is often no direct critical path latency relationship
-	// between producer and consumer spans.
+	// SpanKindConsumer indicates that the span describes a consumer receiving
+	// a message from a broker. Like SpanKindProducer, there is often no direct
+	// critical path latency relationship between producer and consumer spans.
 	SpanKindConsumer SpanKind = 5
 )
 
-// Event is a time-stamped annotation of the span, consisting of user-supplied
+// SpanEvent is a time-stamped annotation of the span, consisting of user-supplied
 // text description and key-value pairs.
 type SpanEvent struct {
 	// time_unix_nano is the time the event occurred.
@@ -312,7 +326,7 @@
 		Time uint64 `json:"timeUnixNano,omitempty"`
 	}{
 		Alias: Alias(e),
-		Time:  uint64(t),
+		Time:  uint64(t), //nolint:gosec  // >0 checked above
 	})
 }
 
@@ -347,7 +361,8 @@
 		case "timeUnixNano", "time_unix_nano":
 			var val protoUint64
 			err = decoder.Decode(&val)
-			se.Time = time.Unix(0, int64(val.Uint64()))
+			v := int64(min(val.Uint64(), math.MaxInt64)) //nolint:gosec  // Overflow checked.
+			se.Time = time.Unix(0, v)
 		case "name":
 			err = decoder.Decode(&se.Name)
 		case "attributes":
@@ -365,10 +380,11 @@
 	return nil
 }
 
-// A pointer from the current span to another span in the same trace or in a
-// different trace. For example, this can be used in batching operations,
-// where a single batch handler processes multiple requests from different
-// traces or when the handler receives a request from a different project.
+// SpanLink is a reference from the current span to another span in the same
+// trace or in a different trace. For example, this can be used in batching
+// operations, where a single batch handler processes multiple requests from
+// different traces or when the handler receives a request from a different
+// project.
 type SpanLink struct {
 	// A unique identifier of a trace that this linked span is part of. The ID is a
 	// 16-byte array.
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go
index 1217776..a280276 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/status.go
@@ -3,17 +3,19 @@
 
 package telemetry
 
+// StatusCode is the status of a Span.
+//
 // For the semantics of status codes see
 // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status
 type StatusCode int32
 
 const (
-	// The default status.
+	// StatusCodeUnset is the default status.
 	StatusCodeUnset StatusCode = 0
-	// The Span has been validated by an Application developer or Operator to
-	// have completed successfully.
+	// StatusCodeOK is used when the Span has been validated by an Application
+	// developer or Operator to have completed successfully.
 	StatusCodeOK StatusCode = 1
-	// The Span contains an error.
+	// StatusCodeError is used when the Span contains an error.
 	StatusCodeError StatusCode = 2
 )
 
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go
index 69a348f..44197b8 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/traces.go
@@ -71,7 +71,7 @@
 	return nil
 }
 
-// A collection of ScopeSpans from a Resource.
+// ResourceSpans is a collection of ScopeSpans from a Resource.
 type ResourceSpans struct {
 	// The resource for the spans in this message.
 	// If this field is not set then no resource info is known.
@@ -128,7 +128,7 @@
 	return nil
 }
 
-// A collection of Spans produced by an InstrumentationScope.
+// ScopeSpans is a collection of Spans produced by an InstrumentationScope.
 type ScopeSpans struct {
 	// The instrumentation scope information for the spans in this message.
 	// Semantically when InstrumentationScope isn't set, it is equivalent with
diff --git a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go
index 0dd01b0..022768b 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/internal/telemetry/value.go
@@ -1,8 +1,6 @@
 // Copyright The OpenTelemetry Authors
 // SPDX-License-Identifier: Apache-2.0
 
-//go:generate stringer -type=ValueKind -trimprefix=ValueKind
-
 package telemetry
 
 import (
@@ -23,7 +21,7 @@
 // A zero value is valid and represents an empty value.
 type Value struct {
 	// Ensure forward compatibility by explicitly making this not comparable.
-	noCmp [0]func() //nolint: unused  // This is indeed used.
+	noCmp [0]func() //nolint:unused  // This is indeed used.
 
 	// num holds the value for Int64, Float64, and Bool. It holds the length
 	// for String, Bytes, Slice, Map.
@@ -92,7 +90,7 @@
 
 // Int64Value returns a [Value] for an int64.
 func Int64Value(v int64) Value {
-	return Value{num: uint64(v), any: ValueKindInt64}
+	return Value{num: uint64(v), any: ValueKindInt64} //nolint:gosec  // Raw value conv.
 }
 
 // Float64Value returns a [Value] for a float64.
@@ -164,7 +162,7 @@
 // this will return garbage.
 func (v Value) asInt64() int64 {
 	// Assumes v.num was a valid int64 (overflow not checked).
-	return int64(v.num) // nolint: gosec
+	return int64(v.num) //nolint:gosec  // Bounded.
 }
 
 // AsBool returns the value held by v as a bool.
@@ -309,13 +307,13 @@
 		return v.asString()
 	case ValueKindInt64:
 		// Assumes v.num was a valid int64 (overflow not checked).
-		return strconv.FormatInt(int64(v.num), 10) // nolint: gosec
+		return strconv.FormatInt(int64(v.num), 10) //nolint:gosec  // Bounded.
 	case ValueKindFloat64:
 		return strconv.FormatFloat(v.asFloat64(), 'g', -1, 64)
 	case ValueKindBool:
 		return strconv.FormatBool(v.asBool())
 	case ValueKindBytes:
-		return fmt.Sprint(v.asBytes())
+		return string(v.asBytes())
 	case ValueKindMap:
 		return fmt.Sprint(v.asMap())
 	case ValueKindSlice:
@@ -343,7 +341,7 @@
 	case ValueKindInt64:
 		return json.Marshal(struct {
 			Value string `json:"intValue"`
-		}{strconv.FormatInt(int64(v.num), 10)})
+		}{strconv.FormatInt(int64(v.num), 10)}) //nolint:gosec  // Raw value conv.
 	case ValueKindFloat64:
 		return json.Marshal(struct {
 			Value float64 `json:"doubleValue"`
diff --git a/vendor/go.opentelemetry.io/auto/sdk/span.go b/vendor/go.opentelemetry.io/auto/sdk/span.go
index 6ebea12..815d271 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/span.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/span.go
@@ -6,6 +6,7 @@
 import (
 	"encoding/json"
 	"fmt"
+	"math"
 	"reflect"
 	"runtime"
 	"strings"
@@ -16,7 +17,7 @@
 
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/codes"
-	semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 	"go.opentelemetry.io/otel/trace"
 	"go.opentelemetry.io/otel/trace/noop"
 
@@ -85,7 +86,12 @@
 	limit := maxSpan.Attrs
 	if limit == 0 {
 		// No attributes allowed.
-		s.span.DroppedAttrs += uint32(len(attrs))
+		n := int64(len(attrs))
+		if n > 0 {
+			s.span.DroppedAttrs += uint32( //nolint:gosec  // Bounds checked.
+				min(n, math.MaxUint32),
+			)
+		}
 		return
 	}
 
@@ -121,8 +127,13 @@
 // convCappedAttrs converts up to limit attrs into a []telemetry.Attr. The
 // number of dropped attributes is also returned.
 func convCappedAttrs(limit int, attrs []attribute.KeyValue) ([]telemetry.Attr, uint32) {
+	n := len(attrs)
 	if limit == 0 {
-		return nil, uint32(len(attrs))
+		var out uint32
+		if n > 0 {
+			out = uint32(min(int64(n), math.MaxUint32)) //nolint:gosec  // Bounds checked.
+		}
+		return nil, out
 	}
 
 	if limit < 0 {
@@ -130,8 +141,12 @@
 		return convAttrs(attrs), 0
 	}
 
-	limit = min(len(attrs), limit)
-	return convAttrs(attrs[:limit]), uint32(len(attrs) - limit)
+	if n < 0 {
+		n = 0
+	}
+
+	limit = min(n, limit)
+	return convAttrs(attrs[:limit]), uint32(n - limit) //nolint:gosec  // Bounds checked.
 }
 
 func convAttrs(attrs []attribute.KeyValue) []telemetry.Attr {
diff --git a/vendor/go.opentelemetry.io/auto/sdk/tracer.go b/vendor/go.opentelemetry.io/auto/sdk/tracer.go
index cbcfabd..e09acf0 100644
--- a/vendor/go.opentelemetry.io/auto/sdk/tracer.go
+++ b/vendor/go.opentelemetry.io/auto/sdk/tracer.go
@@ -5,6 +5,7 @@
 
 import (
 	"context"
+	"math"
 	"time"
 
 	"go.opentelemetry.io/otel/trace"
@@ -21,15 +22,20 @@
 
 var _ trace.Tracer = tracer{}
 
-func (t tracer) Start(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, trace.Span) {
-	var psc trace.SpanContext
+func (t tracer) Start(
+	ctx context.Context,
+	name string,
+	opts ...trace.SpanStartOption,
+) (context.Context, trace.Span) {
+	var psc, sc trace.SpanContext
 	sampled := true
 	span := new(span)
 
 	// Ask eBPF for sampling decision and span context info.
-	t.start(ctx, span, &psc, &sampled, &span.spanContext)
+	t.start(ctx, span, &psc, &sampled, &sc)
 
 	span.sampled.Store(sampled)
+	span.spanContext = sc
 
 	ctx = trace.ContextWithSpan(ctx, span)
 
@@ -58,7 +64,13 @@
 // start is used for testing.
 var start = func(context.Context, *span, *trace.SpanContext, *bool, *trace.SpanContext) {}
 
-func (t tracer) traces(name string, cfg trace.SpanConfig, sc, psc trace.SpanContext) (*telemetry.Traces, *telemetry.Span) {
+var intToUint32Bound = min(math.MaxInt, math.MaxUint32)
+
+func (t tracer) traces(
+	name string,
+	cfg trace.SpanConfig,
+	sc, psc trace.SpanContext,
+) (*telemetry.Traces, *telemetry.Span) {
 	span := &telemetry.Span{
 		TraceID:      telemetry.TraceID(sc.TraceID()),
 		SpanID:       telemetry.SpanID(sc.SpanID()),
@@ -73,11 +85,16 @@
 
 	links := cfg.Links()
 	if limit := maxSpan.Links; limit == 0 {
-		span.DroppedLinks = uint32(len(links))
+		n := len(links)
+		if n > 0 {
+			bounded := max(min(n, intToUint32Bound), 0)
+			span.DroppedLinks = uint32(bounded) //nolint:gosec  // Bounds checked.
+		}
 	} else {
 		if limit > 0 {
 			n := max(len(links)-limit, 0)
-			span.DroppedLinks = uint32(n)
+			bounded := min(n, intToUint32Bound)
+			span.DroppedLinks = uint32(bounded) //nolint:gosec  // Bounds checked.
 			links = links[n:]
 		}
 		span.Links = convLinks(links)
diff --git a/vendor/go.opentelemetry.io/otel/.codespellignore b/vendor/go.opentelemetry.io/otel/.codespellignore
index 6bf3abc..2b53a25 100644
--- a/vendor/go.opentelemetry.io/otel/.codespellignore
+++ b/vendor/go.opentelemetry.io/otel/.codespellignore
@@ -7,3 +7,4 @@
 nam
 valu
 thirdparty
+addOpt
diff --git a/vendor/go.opentelemetry.io/otel/.golangci.yml b/vendor/go.opentelemetry.io/otel/.golangci.yml
index 5f69cc0..b01762f 100644
--- a/vendor/go.opentelemetry.io/otel/.golangci.yml
+++ b/vendor/go.opentelemetry.io/otel/.golangci.yml
@@ -10,6 +10,7 @@
     - depguard
     - errcheck
     - errorlint
+    - gocritic
     - godot
     - gosec
     - govet
@@ -86,6 +87,18 @@
           deny:
             - pkg: go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal
               desc: Do not use cross-module internal packages.
+    gocritic:
+      disabled-checks:
+        - appendAssign
+        - commentedOutCode
+        - dupArg
+        - hugeParam
+        - importShadow
+        - preferDecodeRune
+        - rangeValCopy
+        - unnamedResult
+        - whyNoLint
+      enable-all: true
     godot:
       exclude:
         # Exclude links.
@@ -167,7 +180,10 @@
             - fmt.Print
             - fmt.Printf
             - fmt.Println
+        - name: unused-parameter
+        - name: unused-receiver
         - name: unnecessary-stmt
+        - name: use-any
         - name: useless-break
         - name: var-declaration
         - name: var-naming
@@ -224,10 +240,6 @@
       - linters:
           - gosec
         text: 'G402: TLS MinVersion too low.'
-    paths:
-      - third_party$
-      - builtin$
-      - examples$
 issues:
   max-issues-per-linter: 0
   max-same-issues: 0
@@ -237,14 +249,12 @@
     - goimports
     - golines
   settings:
+    gofumpt:
+      extra-rules: true
     goimports:
       local-prefixes:
-        - go.opentelemetry.io
+        - go.opentelemetry.io/otel
     golines:
       max-len: 120
   exclusions:
     generated: lax
-    paths:
-      - third_party$
-      - builtin$
-      - examples$
diff --git a/vendor/go.opentelemetry.io/otel/.lycheeignore b/vendor/go.opentelemetry.io/otel/.lycheeignore
index 40d62fa..5328505 100644
--- a/vendor/go.opentelemetry.io/otel/.lycheeignore
+++ b/vendor/go.opentelemetry.io/otel/.lycheeignore
@@ -2,5 +2,8 @@
 http://jaeger-collector
 https://github.com/open-telemetry/opentelemetry-go/milestone/
 https://github.com/open-telemetry/opentelemetry-go/projects
+# Weaver model URL for semantic-conventions repository.
+https?:\/\/github\.com\/open-telemetry\/semantic-conventions\/archive\/refs\/tags\/[^.]+\.zip\[[^]]+]
 file:///home/runner/work/opentelemetry-go/opentelemetry-go/libraries
 file:///home/runner/work/opentelemetry-go/opentelemetry-go/manual
+http://4.3.2.1:78/user/123
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/vendor/go.opentelemetry.io/otel/CHANGELOG.md
index 4acc757..f3abcfd 100644
--- a/vendor/go.opentelemetry.io/otel/CHANGELOG.md
+++ b/vendor/go.opentelemetry.io/otel/CHANGELOG.md
@@ -11,6 +11,93 @@
 <!-- Released section -->
 <!-- Don't change this section unless doing release -->
 
+## [1.38.0/0.60.0/0.14.0/0.0.13] 2025-08-29
+
+This release is the last to support [Go 1.23].
+The next release will require at least [Go 1.24].
+
+### Added
+
+- Add native histogram exemplar support in `go.opentelemetry.io/otel/exporters/prometheus`. (#6772)
+- Add template attribute functions to the `go.opentelmetry.io/otel/semconv/v1.34.0` package. (#6939)
+  - `ContainerLabel`
+  - `DBOperationParameter`
+  - `DBSystemParameter`
+  - `HTTPRequestHeader`
+  - `HTTPResponseHeader`
+  - `K8SCronJobAnnotation`
+  - `K8SCronJobLabel`
+  - `K8SDaemonSetAnnotation`
+  - `K8SDaemonSetLabel`
+  - `K8SDeploymentAnnotation`
+  - `K8SDeploymentLabel`
+  - `K8SJobAnnotation`
+  - `K8SJobLabel`
+  - `K8SNamespaceAnnotation`
+  - `K8SNamespaceLabel`
+  - `K8SNodeAnnotation`
+  - `K8SNodeLabel`
+  - `K8SPodAnnotation`
+  - `K8SPodLabel`
+  - `K8SReplicaSetAnnotation`
+  - `K8SReplicaSetLabel`
+  - `K8SStatefulSetAnnotation`
+  - `K8SStatefulSetLabel`
+  - `ProcessEnvironmentVariable`
+  - `RPCConnectRPCRequestMetadata`
+  - `RPCConnectRPCResponseMetadata`
+  - `RPCGRPCRequestMetadata`
+  - `RPCGRPCResponseMetadata`
+- Add `ErrorType` attribute helper function to the `go.opentelmetry.io/otel/semconv/v1.34.0` package. (#6962)
+- Add `WithAllowKeyDuplication` in `go.opentelemetry.io/otel/sdk/log` which can be used to disable deduplication for log records. (#6968)
+- Add `WithCardinalityLimit` option to configure the cardinality limit in `go.opentelemetry.io/otel/sdk/metric`. (#6996, #7065, #7081, #7164, #7165, #7179)
+- Add `Clone` method to `Record` in `go.opentelemetry.io/otel/log` that returns a copy of the record with no shared state. (#7001)
+- Add experimental self-observability span and batch span processor metrics in `go.opentelemetry.io/otel/sdk/trace`.
+  Check the `go.opentelemetry.io/otel/sdk/trace/internal/x` package documentation for more information. (#7027, #6393, #7209)
+- The `go.opentelemetry.io/otel/semconv/v1.36.0` package.
+  The package contains semantic conventions from the `v1.36.0` version of the OpenTelemetry Semantic Conventions.
+  See the [migration documentation](./semconv/v1.36.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.34.0.`(#7032, #7041)
+- Add support for configuring Prometheus name translation using `WithTranslationStrategy` option in `go.opentelemetry.io/otel/exporters/prometheus`. The current default translation strategy when UTF-8 mode is enabled is `NoUTF8EscapingWithSuffixes`, but a future release will change the default strategy to `UnderscoreEscapingWithSuffixes` for compliance with the specification. (#7111)
+- Add experimental self-observability log metrics in `go.opentelemetry.io/otel/sdk/log`.
+  Check the `go.opentelemetry.io/otel/sdk/log/internal/x` package documentation for more information. (#7121)
+- Add experimental self-observability trace exporter metrics in `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`.
+  Check the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x` package documentation for more information. (#7133)
+- Support testing of [Go 1.25]. (#7187)
+- The `go.opentelemetry.io/otel/semconv/v1.37.0` package.
+  The package contains semantic conventions from the `v1.37.0` version of the OpenTelemetry Semantic Conventions.
+  See the [migration documentation](./semconv/v1.37.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.36.0.`(#7254)
+
+### Changed
+
+- Optimize `TraceIDFromHex` and `SpanIDFromHex` in `go.opentelemetry.io/otel/sdk/trace`. (#6791)
+- Change `AssertEqual` in `go.opentelemetry.io/otel/log/logtest` to accept `TestingT` in order to support benchmarks and fuzz tests. (#6908)
+- Change `DefaultExemplarReservoirProviderSelector` in `go.opentelemetry.io/otel/sdk/metric` to use `runtime.GOMAXPROCS(0)` instead of `runtime.NumCPU()` for the `FixedSizeReservoirProvider` default size. (#7094)
+
+### Fixed
+
+- `SetBody` method of `Record` in `go.opentelemetry.io/otel/sdk/log` now deduplicates key-value collections (`log.Value` of `log.KindMap` from `go.opentelemetry.io/otel/log`). (#7002)
+- Fix `go.opentelemetry.io/otel/exporters/prometheus` to not append a suffix if it's already present in metric name. (#7088)
+- Fix the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` self-observability component type and name. (#7195)
+- Fix partial export count metric in `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`. (#7199)
+
+### Deprecated
+
+- Deprecate `WithoutUnits` and `WithoutCounterSuffixes` options, preferring `WithTranslationStrategy` instead. (#7111)
+- Deprecate support for `OTEL_GO_X_CARDINALITY_LIMIT` environment variable in `go.opentelemetry.io/otel/sdk/metric`. Use `WithCardinalityLimit` option instead. (#7166)
+
+## [0.59.1] 2025-07-21
+
+### Changed
+
+- Retract `v0.59.0` release of `go.opentelemetry.io/otel/exporters/prometheus` module which appends incorrect unit suffixes. (#7046)
+- Change `go.opentelemetry.io/otel/exporters/prometheus` to no longer deduplicate suffixes when UTF8 is enabled.
+  It is recommended to disable unit and counter suffixes in the exporter, and manually add suffixes if you rely on the existing behavior. (#7044)
+
+### Fixed
+
+- Fix `go.opentelemetry.io/otel/exporters/prometheus` to properly handle unit suffixes when the unit is in brackets.
+  E.g. `{spans}`. (#7044)
+
 ## [1.37.0/0.59.0/0.13.0] 2025-06-25
 
 ### Added
@@ -3343,7 +3430,8 @@
 - CircleCI build CI manifest files.
 - CODEOWNERS file to track owners of this project.
 
-[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.37.0...HEAD
+[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.38.0...HEAD
+[1.38.0/0.60.0/0.14.0/0.0.13]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.38.0
 [1.37.0/0.59.0/0.13.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.37.0
 [0.12.2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.2
 [0.12.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.1
@@ -3439,6 +3527,7 @@
 
 <!-- Released section ended -->
 
+[Go 1.25]: https://go.dev/doc/go1.25
 [Go 1.24]: https://go.dev/doc/go1.24
 [Go 1.23]: https://go.dev/doc/go1.23
 [Go 1.22]: https://go.dev/doc/go1.22
diff --git a/vendor/go.opentelemetry.io/otel/CODEOWNERS b/vendor/go.opentelemetry.io/otel/CODEOWNERS
index 945a07d..26a03ae 100644
--- a/vendor/go.opentelemetry.io/otel/CODEOWNERS
+++ b/vendor/go.opentelemetry.io/otel/CODEOWNERS
@@ -12,6 +12,6 @@
 #  https://help.github.com/en/articles/about-code-owners
 #
 
-* @MrAlias @XSAM @dashpole @pellared @dmathieu
+* @MrAlias @XSAM @dashpole @pellared @dmathieu @flc1125
 
 CODEOWNERS @MrAlias @pellared @dashpole @XSAM @dmathieu
diff --git a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md
index f9ddc28..0b3ae85 100644
--- a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md
+++ b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md
@@ -192,6 +192,35 @@
 should have [`benchstat`](https://pkg.go.dev/golang.org/x/perf/cmd/benchstat)
 output in their description.
 
+## Dependencies
+
+This project uses [Go Modules] for dependency management. All modules will use
+`go.mod` to explicitly list all direct and indirect dependencies, ensuring a
+clear dependency graph. The `go.sum` file for each module will be committed to
+the repository and used to verify the integrity of downloaded modules,
+preventing malicious tampering.
+
+This project uses automated dependency update tools (i.e. dependabot,
+renovatebot) to manage updates to dependencies. This ensures that dependencies
+are kept up-to-date with the latest security patches and features and are
+reviewed before being merged. If you would like to propose a change to a
+dependency it should be done through a pull request that updates the `go.mod`
+file and includes a description of the change.
+
+See the [versioning and compatibility](./VERSIONING.md) policy for more details
+about dependency compatibility.
+
+[Go Modules]: https://pkg.go.dev/cmd/go#hdr-Modules__module_versions__and_more
+
+### Environment Dependencies
+
+This project does not partition dependencies based on the environment (i.e.
+`development`, `staging`, `production`).
+
+Only the dependencies explicitly included in the released modules have be
+tested and verified to work with the released code. No other guarantee is made
+about the compatibility of other dependencies.
+
 ## Documentation
 
 Each (non-internal, non-test) package must be documented using
@@ -233,6 +262,10 @@
 the [Effective Go](https://golang.org/doc/effective_go.html) documentation
 is an excellent starting place.
 
+We also recommend following the
+[Go Code Review Comments](https://go.dev/wiki/CodeReviewComments)
+that collects common comments made during reviews of Go code.
+
 As a convenience for developers building this project the `make precommit`
 will format, lint, validate, and in some cases fix the changes you plan to
 submit. This check will need to pass for your changes to be able to be
@@ -586,6 +619,10 @@
 
 ### Testing
 
+We allow using [`testify`](https://github.com/stretchr/testify) even though
+it is seen as non-idiomatic according to
+the [Go Test Comments](https://go.dev/wiki/TestComments#assert-libraries) page.
+
 The tests should never leak goroutines.
 
 Use the term `ConcurrentSafe` in the test name when it aims to verify the
@@ -640,13 +677,6 @@
 
 ## Approvers and Maintainers
 
-### Triagers
-
-- [Alex Kats](https://github.com/akats7), Capital One
-- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent
-
-### Approvers
-
 ### Maintainers
 
 - [Damien Mathieu](https://github.com/dmathieu), Elastic ([GPG](https://keys.openpgp.org/search?q=5A126B972A81A6CE443E5E1B408B8E44F0873832))
@@ -655,6 +685,21 @@
 - [Sam Xie](https://github.com/XSAM), Splunk ([GPG](https://keys.openpgp.org/search?q=AEA033782371ABB18EE39188B8044925D6FEEBEA))
 - [Tyler Yahn](https://github.com/MrAlias), Splunk ([GPG](https://keys.openpgp.org/search?q=0x46B0F3E1A8B1BA5A))
 
+For more information about the maintainer role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer).
+
+### Approvers
+
+- [Flc](https://github.com/flc1125), Independent
+
+For more information about the approver role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver).
+
+### Triagers
+
+- [Alex Kats](https://github.com/akats7), Capital One
+- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent
+
+For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager).
+
 ### Emeritus
 
 - [Aaron Clawson](https://github.com/MadVikingGod)
@@ -665,6 +710,8 @@
 - [Josh MacDonald](https://github.com/jmacd)
 - [Liz Fong-Jones](https://github.com/lizthegrey)
 
+For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager).
+
 ### Become an Approver or a Maintainer
 
 See the [community membership document in OpenTelemetry community
diff --git a/vendor/go.opentelemetry.io/otel/LICENSE b/vendor/go.opentelemetry.io/otel/LICENSE
index 261eeb9..f1aee0f 100644
--- a/vendor/go.opentelemetry.io/otel/LICENSE
+++ b/vendor/go.opentelemetry.io/otel/LICENSE
@@ -199,3 +199,33 @@
    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.
+
+--------------------------------------------------------------------------------
+
+Copyright 2009 The Go Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google LLC nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/Makefile b/vendor/go.opentelemetry.io/otel/Makefile
index 4fa423c..bc0f1f9 100644
--- a/vendor/go.opentelemetry.io/otel/Makefile
+++ b/vendor/go.opentelemetry.io/otel/Makefile
@@ -34,9 +34,6 @@
 MULTIMOD = $(TOOLS)/multimod
 $(TOOLS)/multimod: PACKAGE=go.opentelemetry.io/build-tools/multimod
 
-SEMCONVGEN = $(TOOLS)/semconvgen
-$(TOOLS)/semconvgen: PACKAGE=go.opentelemetry.io/build-tools/semconvgen
-
 CROSSLINK = $(TOOLS)/crosslink
 $(TOOLS)/crosslink: PACKAGE=go.opentelemetry.io/build-tools/crosslink
 
@@ -71,7 +68,7 @@
 $(TOOLS)/govulncheck: PACKAGE=golang.org/x/vuln/cmd/govulncheck
 
 .PHONY: tools
-tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(SEMCONVGEN) $(VERIFYREADMES) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE)
+tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(VERIFYREADMES) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE)
 
 # Virtualized python tools via docker
 
@@ -284,7 +281,7 @@
 	docker run --rm \
 		-u $(DOCKER_USER) \
 		--env HOME=/tmp/weaver \
-		--mount 'type=bind,source=$(PWD)/semconv,target=/home/weaver/templates/registry/go,readonly' \
+		--mount 'type=bind,source=$(PWD)/semconv/templates,target=/home/weaver/templates,readonly' \
 		--mount 'type=bind,source=$(PWD)/semconv/${TAG},target=/home/weaver/target' \
 		--mount 'type=bind,source=$(HOME)/.weaver,target=/tmp/weaver/.weaver' \
 		$(WEAVER_IMAGE) registry generate \
diff --git a/vendor/go.opentelemetry.io/otel/README.md b/vendor/go.opentelemetry.io/otel/README.md
index 5fa1b75..6b7ab5f 100644
--- a/vendor/go.opentelemetry.io/otel/README.md
+++ b/vendor/go.opentelemetry.io/otel/README.md
@@ -53,18 +53,25 @@
 
 | OS       | Go Version | Architecture |
 |----------|------------|--------------|
+| Ubuntu   | 1.25       | amd64        |
 | Ubuntu   | 1.24       | amd64        |
 | Ubuntu   | 1.23       | amd64        |
+| Ubuntu   | 1.25       | 386          |
 | Ubuntu   | 1.24       | 386          |
 | Ubuntu   | 1.23       | 386          |
+| Ubuntu   | 1.25       | arm64        |
 | Ubuntu   | 1.24       | arm64        |
 | Ubuntu   | 1.23       | arm64        |
+| macOS 13 | 1.25       | amd64        |
 | macOS 13 | 1.24       | amd64        |
 | macOS 13 | 1.23       | amd64        |
+| macOS    | 1.25       | arm64        |
 | macOS    | 1.24       | arm64        |
 | macOS    | 1.23       | arm64        |
+| Windows  | 1.25       | amd64        |
 | Windows  | 1.24       | amd64        |
 | Windows  | 1.23       | amd64        |
+| Windows  | 1.25       | 386          |
 | Windows  | 1.24       | 386          |
 | Windows  | 1.23       | 386          |
 
diff --git a/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml b/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml
new file mode 100644
index 0000000..8041fc6
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml
@@ -0,0 +1,203 @@
+header:
+  schema-version: "1.0.0"
+  expiration-date: "2026-08-04T00:00:00.000Z"
+  last-updated: "2025-08-04"
+  last-reviewed: "2025-08-04"
+  commit-hash: 69e81088ad40f45a0764597326722dea8f3f00a8
+  project-url: https://github.com/open-telemetry/opentelemetry-go
+  project-release: "v1.37.0"
+  changelog: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CHANGELOG.md
+  license: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/LICENSE
+
+project-lifecycle:
+  status: active
+  bug-fixes-only: false
+  core-maintainers:
+    - https://github.com/dmathieu
+    - https://github.com/dashpole
+    - https://github.com/pellared
+    - https://github.com/XSAM
+    - https://github.com/MrAlias
+  release-process: |
+    See https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/RELEASING.md
+
+contribution-policy:
+  accepts-pull-requests: true
+  accepts-automated-pull-requests: true
+  automated-tools-list:
+    - automated-tool: dependabot
+      action: allowed
+      comment: Automated dependency updates are accepted.
+    - automated-tool: renovatebot
+      action: allowed
+      comment: Automated dependency updates are accepted.
+    - automated-tool: opentelemetrybot
+      action: allowed
+      comment: Automated OpenTelemetry actions are accepted.
+  contributing-policy: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md
+  code-of-conduct: https://github.com/open-telemetry/.github/blob/ffa15f76b65ec7bcc41f6a0b277edbb74f832206/CODE_OF_CONDUCT.md
+
+documentation:
+  - https://pkg.go.dev/go.opentelemetry.io/otel
+  - https://opentelemetry.io/docs/instrumentation/go/
+
+distribution-points:
+  - pkg:golang/go.opentelemetry.io/otel
+  - pkg:golang/go.opentelemetry.io/otel/bridge/opencensus
+  - pkg:golang/go.opentelemetry.io/otel/bridge/opencensus/test
+  - pkg:golang/go.opentelemetry.io/otel/bridge/opentracing
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
+  - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdoutmetric
+  - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdouttrace
+  - pkg:golang/go.opentelemetry.io/otel/exporters/zipkin
+  - pkg:golang/go.opentelemetry.io/otel/metric
+  - pkg:golang/go.opentelemetry.io/otel/sdk
+  - pkg:golang/go.opentelemetry.io/otel/sdk/metric
+  - pkg:golang/go.opentelemetry.io/otel/trace
+  - pkg:golang/go.opentelemetry.io/otel/exporters/prometheus
+  - pkg:golang/go.opentelemetry.io/otel/log
+  - pkg:golang/go.opentelemetry.io/otel/log/logtest
+  - pkg:golang/go.opentelemetry.io/otel/sdk/log
+  - pkg:golang/go.opentelemetry.io/otel/sdk/log/logtest
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc
+  - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
+  - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdoutlog
+  - pkg:golang/go.opentelemetry.io/otel/schema
+
+security-artifacts:
+  threat-model:
+    threat-model-created: false
+    comment: |
+      No formal threat model created yet.
+  self-assessment:
+    self-assessment-created: false
+    comment: |
+      No formal self-assessment yet.
+
+security-testing:
+  - tool-type: sca
+    tool-name: Dependabot
+    tool-version: latest
+    tool-url: https://github.com/dependabot
+    tool-rulesets:
+      - built-in
+    integration:
+      ad-hoc: false
+      ci: true
+      before-release: true
+    comment: |
+      Automated dependency updates.
+  - tool-type: sast
+    tool-name: golangci-lint
+    tool-version: latest
+    tool-url: https://github.com/golangci/golangci-lint
+    tool-rulesets:
+      - built-in
+    integration:
+      ad-hoc: false
+      ci: true
+      before-release: true
+    comment: |
+      Static analysis in CI.
+  - tool-type: fuzzing
+    tool-name: OSS-Fuzz
+    tool-version: latest
+    tool-url: https://github.com/google/oss-fuzz
+    tool-rulesets:
+      - default
+    integration:
+      ad-hoc: false
+      ci: false
+      before-release: false
+    comment: |
+      OpenTelemetry Go is integrated with OSS-Fuzz for continuous fuzz testing. See https://github.com/google/oss-fuzz/tree/f0f9b221190c6063a773bea606d192ebfc3d00cf/projects/opentelemetry-go for more details.
+  - tool-type: sast
+    tool-name: CodeQL
+    tool-version: latest
+    tool-url: https://github.com/github/codeql
+    tool-rulesets:
+      - default
+    integration:
+      ad-hoc: false
+      ci: true
+      before-release: true
+    comment: |
+      CodeQL static analysis is run in CI for all commits and pull requests to detect security vulnerabilities in the Go source code. See https://github.com/open-telemetry/opentelemetry-go/blob/d5b5b059849720144a03ca5c87561bfbdb940119/.github/workflows/codeql-analysis.yml for workflow details.
+  - tool-type: sca
+    tool-name: govulncheck
+    tool-version: latest
+    tool-url: https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck
+    tool-rulesets:
+      - default
+    integration:
+      ad-hoc: false
+      ci: true
+      before-release: true
+    comment: |
+      govulncheck is run in CI to detect known vulnerabilities in Go modules and code paths. See https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/.github/workflows/ci.yml for workflow configuration.
+
+security-assessments:
+  - auditor-name: 7ASecurity
+    auditor-url: https://7asecurity.com
+    auditor-report: https://7asecurity.com/reports/pentest-report-opentelemetry.pdf
+    report-year: 2023
+    comment: |
+      This independent penetration test by 7ASecurity covered OpenTelemetry repositories including opentelemetry-go. The assessment focused on codebase review, threat modeling, and vulnerability identification. See the report for details of findings and recommendations applicable to opentelemetry-go. No critical vulnerabilities were found for this repository.
+
+security-contacts:
+  - type: email
+    value: cncf-opentelemetry-security@lists.cncf.io
+    primary: true
+  - type: website
+    value: https://github.com/open-telemetry/opentelemetry-go/security/policy
+    primary: false
+
+vulnerability-reporting:
+  accepts-vulnerability-reports: true
+  email-contact: cncf-opentelemetry-security@lists.cncf.io
+  security-policy: https://github.com/open-telemetry/opentelemetry-go/security/policy
+  comment: |
+    Security issues should be reported via email or GitHub security policy page.
+
+dependencies:
+  third-party-packages: true
+  dependencies-lists:
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opencensus/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opencensus/test/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opentracing/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlplog/otlploggrpc/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlplog/otlploghttp/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlpmetric/otlpmetrichttp/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/otlptracegrpc/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/otlptracehttp/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/prometheus/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdoutlog/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdoutmetric/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdouttrace/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/zipkin/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/internal/tools/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/log/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/log/logtest/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/metric/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/schema/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/log/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/log/logtest/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/metric/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/trace/go.mod
+    - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/trace/internal/telemetry/test/go.mod
+  dependencies-lifecycle:
+    policy-url: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md
+    comment: |
+      Dependency lifecycle managed via go.mod and renovatebot.
+  env-dependencies-policy:
+    policy-url: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md
+    comment: |
+      See contributing policy for environment usage.
diff --git a/vendor/go.opentelemetry.io/otel/attribute/encoder.go b/vendor/go.opentelemetry.io/otel/attribute/encoder.go
index 318e42f..6333d34 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/encoder.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/encoder.go
@@ -78,7 +78,7 @@
 	defaultEncoderOnce.Do(func() {
 		defaultEncoderInstance = &defaultAttrEncoder{
 			pool: sync.Pool{
-				New: func() interface{} {
+				New: func() any {
 					return &bytes.Buffer{}
 				},
 			},
@@ -96,11 +96,11 @@
 	for iter.Next() {
 		i, keyValue := iter.IndexedAttribute()
 		if i > 0 {
-			_, _ = buf.WriteRune(',')
+			_ = buf.WriteByte(',')
 		}
 		copyAndEscape(buf, string(keyValue.Key))
 
-		_, _ = buf.WriteRune('=')
+		_ = buf.WriteByte('=')
 
 		if keyValue.Value.Type() == STRING {
 			copyAndEscape(buf, keyValue.Value.AsString())
@@ -122,14 +122,14 @@
 	for _, ch := range val {
 		switch ch {
 		case '=', ',', escapeChar:
-			_, _ = buf.WriteRune(escapeChar)
+			_ = buf.WriteByte(escapeChar)
 		}
 		_, _ = buf.WriteRune(ch)
 	}
 }
 
-// Valid returns true if this encoder ID was allocated by
-// `NewEncoderID`.  Invalid encoder IDs will not be cached.
+// Valid reports whether this encoder ID was allocated by
+// [NewEncoderID]. Invalid encoder IDs will not be cached.
 func (id EncoderID) Valid() bool {
 	return id.value != 0
 }
diff --git a/vendor/go.opentelemetry.io/otel/attribute/filter.go b/vendor/go.opentelemetry.io/otel/attribute/filter.go
index 3eeaa5d..624ebbe 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/filter.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/filter.go
@@ -15,8 +15,8 @@
 //
 // If keys is empty a deny-all filter is returned.
 func NewAllowKeysFilter(keys ...Key) Filter {
-	if len(keys) <= 0 {
-		return func(kv KeyValue) bool { return false }
+	if len(keys) == 0 {
+		return func(KeyValue) bool { return false }
 	}
 
 	allowed := make(map[Key]struct{}, len(keys))
@@ -34,8 +34,8 @@
 //
 // If keys is empty an allow-all filter is returned.
 func NewDenyKeysFilter(keys ...Key) Filter {
-	if len(keys) <= 0 {
-		return func(kv KeyValue) bool { return true }
+	if len(keys) == 0 {
+		return func(KeyValue) bool { return true }
 	}
 
 	forbid := make(map[Key]struct{}, len(keys))
diff --git a/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go
index b76d2bb..0875504 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go
@@ -12,7 +12,7 @@
 )
 
 // BoolSliceValue converts a bool slice into an array with same elements as slice.
-func BoolSliceValue(v []bool) interface{} {
+func BoolSliceValue(v []bool) any {
 	var zero bool
 	cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
 	reflect.Copy(cp, reflect.ValueOf(v))
@@ -20,7 +20,7 @@
 }
 
 // Int64SliceValue converts an int64 slice into an array with same elements as slice.
-func Int64SliceValue(v []int64) interface{} {
+func Int64SliceValue(v []int64) any {
 	var zero int64
 	cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
 	reflect.Copy(cp, reflect.ValueOf(v))
@@ -28,7 +28,7 @@
 }
 
 // Float64SliceValue converts a float64 slice into an array with same elements as slice.
-func Float64SliceValue(v []float64) interface{} {
+func Float64SliceValue(v []float64) any {
 	var zero float64
 	cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
 	reflect.Copy(cp, reflect.ValueOf(v))
@@ -36,7 +36,7 @@
 }
 
 // StringSliceValue converts a string slice into an array with same elements as slice.
-func StringSliceValue(v []string) interface{} {
+func StringSliceValue(v []string) any {
 	var zero string
 	cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
 	reflect.Copy(cp, reflect.ValueOf(v))
@@ -44,7 +44,7 @@
 }
 
 // AsBoolSlice converts a bool array into a slice into with same elements as array.
-func AsBoolSlice(v interface{}) []bool {
+func AsBoolSlice(v any) []bool {
 	rv := reflect.ValueOf(v)
 	if rv.Type().Kind() != reflect.Array {
 		return nil
@@ -57,7 +57,7 @@
 }
 
 // AsInt64Slice converts an int64 array into a slice into with same elements as array.
-func AsInt64Slice(v interface{}) []int64 {
+func AsInt64Slice(v any) []int64 {
 	rv := reflect.ValueOf(v)
 	if rv.Type().Kind() != reflect.Array {
 		return nil
@@ -70,7 +70,7 @@
 }
 
 // AsFloat64Slice converts a float64 array into a slice into with same elements as array.
-func AsFloat64Slice(v interface{}) []float64 {
+func AsFloat64Slice(v any) []float64 {
 	rv := reflect.ValueOf(v)
 	if rv.Type().Kind() != reflect.Array {
 		return nil
@@ -83,7 +83,7 @@
 }
 
 // AsStringSlice converts a string array into a slice into with same elements as array.
-func AsStringSlice(v interface{}) []string {
+func AsStringSlice(v any) []string {
 	rv := reflect.ValueOf(v)
 	if rv.Type().Kind() != reflect.Array {
 		return nil
diff --git a/vendor/go.opentelemetry.io/otel/attribute/iterator.go b/vendor/go.opentelemetry.io/otel/attribute/iterator.go
index f2ba89c..8df6249 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/iterator.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/iterator.go
@@ -25,8 +25,8 @@
 	attr KeyValue
 }
 
-// Next moves the iterator to the next position. Returns false if there are no
-// more attributes.
+// Next moves the iterator to the next position.
+// Next reports whether there are more attributes.
 func (i *Iterator) Next() bool {
 	i.idx++
 	return i.idx < i.Len()
@@ -106,7 +106,8 @@
 	}
 }
 
-// Next returns true if there is another attribute available.
+// Next moves the iterator to the next position.
+// Next reports whether there is another attribute available.
 func (m *MergeIterator) Next() bool {
 	if m.one.done && m.two.done {
 		return false
diff --git a/vendor/go.opentelemetry.io/otel/attribute/key.go b/vendor/go.opentelemetry.io/otel/attribute/key.go
index d9a22c6..80a9e56 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/key.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/key.go
@@ -117,7 +117,7 @@
 	}
 }
 
-// Defined returns true for non-empty keys.
+// Defined reports whether the key is not empty.
 func (k Key) Defined() bool {
 	return len(k) != 0
 }
diff --git a/vendor/go.opentelemetry.io/otel/attribute/kv.go b/vendor/go.opentelemetry.io/otel/attribute/kv.go
index 3028f9a..8c6928c 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/kv.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/kv.go
@@ -13,7 +13,7 @@
 	Value Value
 }
 
-// Valid returns if kv is a valid OpenTelemetry attribute.
+// Valid reports whether kv is a valid OpenTelemetry attribute.
 func (kv KeyValue) Valid() bool {
 	return kv.Key.Defined() && kv.Value.Type() != INVALID
 }
diff --git a/vendor/go.opentelemetry.io/otel/attribute/set.go b/vendor/go.opentelemetry.io/otel/attribute/set.go
index 6cbefce..64735d3 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/set.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/set.go
@@ -31,11 +31,11 @@
 
 	// Distinct is a unique identifier of a Set.
 	//
-	// Distinct is designed to be ensures equivalence stability: comparisons
-	// will return the save value across versions. For this reason, Distinct
-	// should always be used as a map key instead of a Set.
+	// Distinct is designed to ensure equivalence stability: comparisons will
+	// return the same value across versions. For this reason, Distinct should
+	// always be used as a map key instead of a Set.
 	Distinct struct {
-		iface interface{}
+		iface any
 	}
 
 	// Sortable implements sort.Interface, used for sorting KeyValue.
@@ -70,7 +70,7 @@
 	return reflect.ValueOf(d.iface)
 }
 
-// Valid returns true if this value refers to a valid Set.
+// Valid reports whether this value refers to a valid Set.
 func (d Distinct) Valid() bool {
 	return d.iface != nil
 }
@@ -120,7 +120,7 @@
 	return Value{}, false
 }
 
-// HasValue tests whether a key is defined in this set.
+// HasValue reports whether a key is defined in this set.
 func (l *Set) HasValue(k Key) bool {
 	if l == nil {
 		return false
@@ -155,7 +155,7 @@
 	return l.equivalent
 }
 
-// Equals returns true if the argument set is equivalent to this set.
+// Equals reports whether the argument set is equivalent to this set.
 func (l *Set) Equals(o *Set) bool {
 	return l.Equivalent() == o.Equivalent()
 }
@@ -344,7 +344,7 @@
 
 // computeDistinctFixed computes a Distinct for small slices. It returns nil
 // if the input is too large for this code path.
-func computeDistinctFixed(kvs []KeyValue) interface{} {
+func computeDistinctFixed(kvs []KeyValue) any {
 	switch len(kvs) {
 	case 1:
 		return [1]KeyValue(kvs)
@@ -373,7 +373,7 @@
 
 // computeDistinctReflect computes a Distinct using reflection, works for any
 // size input.
-func computeDistinctReflect(kvs []KeyValue) interface{} {
+func computeDistinctReflect(kvs []KeyValue) any {
 	at := reflect.New(reflect.ArrayOf(len(kvs), keyValueType)).Elem()
 	for i, keyValue := range kvs {
 		*(at.Index(i).Addr().Interface().(*KeyValue)) = keyValue
@@ -387,7 +387,7 @@
 }
 
 // MarshalLog is the marshaling function used by the logging system to represent this Set.
-func (l Set) MarshalLog() interface{} {
+func (l Set) MarshalLog() any {
 	kvs := make(map[string]string)
 	for _, kv := range l.ToSlice() {
 		kvs[string(kv.Key)] = kv.Value.Emit()
diff --git a/vendor/go.opentelemetry.io/otel/attribute/value.go b/vendor/go.opentelemetry.io/otel/attribute/value.go
index 817eeca..653c33a 100644
--- a/vendor/go.opentelemetry.io/otel/attribute/value.go
+++ b/vendor/go.opentelemetry.io/otel/attribute/value.go
@@ -22,7 +22,7 @@
 	vtype    Type
 	numeric  uint64
 	stringly string
-	slice    interface{}
+	slice    any
 }
 
 const (
@@ -199,8 +199,8 @@
 
 type unknownValueType struct{}
 
-// AsInterface returns Value's data as interface{}.
-func (v Value) AsInterface() interface{} {
+// AsInterface returns Value's data as any.
+func (v Value) AsInterface() any {
 	switch v.Type() {
 	case BOOL:
 		return v.AsBool()
@@ -262,7 +262,7 @@
 func (v Value) MarshalJSON() ([]byte, error) {
 	var jsonVal struct {
 		Type  string
-		Value interface{}
+		Value any
 	}
 	jsonVal.Type = v.Type().String()
 	jsonVal.Value = v.AsInterface()
diff --git a/vendor/go.opentelemetry.io/otel/baggage/baggage.go b/vendor/go.opentelemetry.io/otel/baggage/baggage.go
index 0e1fe24..f83a448 100644
--- a/vendor/go.opentelemetry.io/otel/baggage/baggage.go
+++ b/vendor/go.opentelemetry.io/otel/baggage/baggage.go
@@ -812,7 +812,7 @@
 // validateBaggageName checks if the string is a valid OpenTelemetry Baggage name.
 // Baggage name is a valid, non-empty UTF-8 string.
 func validateBaggageName(s string) bool {
-	if len(s) == 0 {
+	if s == "" {
 		return false
 	}
 
@@ -828,7 +828,7 @@
 
 // validateKey checks if the string is a valid W3C Baggage key.
 func validateKey(s string) bool {
-	if len(s) == 0 {
+	if s == "" {
 		return false
 	}
 
diff --git a/vendor/go.opentelemetry.io/otel/codes/codes.go b/vendor/go.opentelemetry.io/otel/codes/codes.go
index 49a35b1..d48847e 100644
--- a/vendor/go.opentelemetry.io/otel/codes/codes.go
+++ b/vendor/go.opentelemetry.io/otel/codes/codes.go
@@ -67,7 +67,7 @@
 		return errors.New("nil receiver passed to UnmarshalJSON")
 	}
 
-	var x interface{}
+	var x any
 	if err := json.Unmarshal(b, &x); err != nil {
 		return err
 	}
@@ -102,5 +102,5 @@
 	if !ok {
 		return nil, fmt.Errorf("invalid code: %d", *c)
 	}
-	return []byte(fmt.Sprintf("%q", str)), nil
+	return fmt.Appendf(nil, "%q", str), nil
 }
diff --git a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile
index 935bd48..a311fbb 100644
--- a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile
+++ b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile
@@ -1,4 +1,4 @@
 # This is a renovate-friendly source of Docker images.
-FROM python:3.13.5-slim-bullseye@sha256:5b9fc0d8ef79cfb5f300e61cb516e0c668067bbf77646762c38c94107e230dbc AS python
-FROM otel/weaver:v0.15.2@sha256:b13acea09f721774daba36344861f689ac4bb8d6ecd94c4600b4d590c8fb34b9 AS weaver
+FROM python:3.13.6-slim-bullseye@sha256:e98b521460ee75bca92175c16247bdf7275637a8faaeb2bcfa19d879ae5c4b9a AS python
+FROM otel/weaver:v0.17.1@sha256:32523b5e44fb44418786347e9f7dde187d8797adb6d57a2ee99c245346c3cdfe AS weaver
 FROM avtodev/markdown-lint:v1@sha256:6aeedc2f49138ce7a1cd0adffc1b1c0321b841dc2102408967d9301c031949ee AS markdown
diff --git a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go
index adbca7d..86d7f4b 100644
--- a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go
+++ b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go
@@ -41,22 +41,22 @@
 
 // Info prints messages about the general state of the API or SDK.
 // This should usually be less than 5 messages a minute.
-func Info(msg string, keysAndValues ...interface{}) {
+func Info(msg string, keysAndValues ...any) {
 	GetLogger().V(4).Info(msg, keysAndValues...)
 }
 
 // Error prints messages about exceptional states of the API or SDK.
-func Error(err error, msg string, keysAndValues ...interface{}) {
+func Error(err error, msg string, keysAndValues ...any) {
 	GetLogger().Error(err, msg, keysAndValues...)
 }
 
 // Debug prints messages about all internal changes in the API or SDK.
-func Debug(msg string, keysAndValues ...interface{}) {
+func Debug(msg string, keysAndValues ...any) {
 	GetLogger().V(8).Info(msg, keysAndValues...)
 }
 
 // Warn prints messages about warnings in the API or SDK.
 // Not an error but is likely more important than an informational event.
-func Warn(msg string, keysAndValues ...interface{}) {
+func Warn(msg string, keysAndValues ...any) {
 	GetLogger().V(1).Info(msg, keysAndValues...)
 }
diff --git a/vendor/go.opentelemetry.io/otel/internal/global/trace.go b/vendor/go.opentelemetry.io/otel/internal/global/trace.go
index 49e4ac4..bf5cf31 100644
--- a/vendor/go.opentelemetry.io/otel/internal/global/trace.go
+++ b/vendor/go.opentelemetry.io/otel/internal/global/trace.go
@@ -26,6 +26,7 @@
 	"sync/atomic"
 
 	"go.opentelemetry.io/auto/sdk"
+
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/codes"
 	"go.opentelemetry.io/otel/trace"
diff --git a/vendor/go.opentelemetry.io/otel/metric/LICENSE b/vendor/go.opentelemetry.io/otel/metric/LICENSE
index 261eeb9..f1aee0f 100644
--- a/vendor/go.opentelemetry.io/otel/metric/LICENSE
+++ b/vendor/go.opentelemetry.io/otel/metric/LICENSE
@@ -199,3 +199,33 @@
    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.
+
+--------------------------------------------------------------------------------
+
+Copyright 2009 The Go Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google LLC nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/propagation/baggage.go b/vendor/go.opentelemetry.io/otel/propagation/baggage.go
index ebda502..0518826 100644
--- a/vendor/go.opentelemetry.io/otel/propagation/baggage.go
+++ b/vendor/go.opentelemetry.io/otel/propagation/baggage.go
@@ -20,7 +20,7 @@
 var _ TextMapPropagator = Baggage{}
 
 // Inject sets baggage key-values from ctx into the carrier.
-func (b Baggage) Inject(ctx context.Context, carrier TextMapCarrier) {
+func (Baggage) Inject(ctx context.Context, carrier TextMapCarrier) {
 	bStr := baggage.FromContext(ctx).String()
 	if bStr != "" {
 		carrier.Set(baggageHeader, bStr)
@@ -30,7 +30,7 @@
 // Extract returns a copy of parent with the baggage from the carrier added.
 // If carrier implements [ValuesGetter] (e.g. [HeaderCarrier]), Values is invoked
 // for multiple values extraction. Otherwise, Get is called.
-func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context {
+func (Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context {
 	if multiCarrier, ok := carrier.(ValuesGetter); ok {
 		return extractMultiBaggage(parent, multiCarrier)
 	}
@@ -38,7 +38,7 @@
 }
 
 // Fields returns the keys who's values are set with Inject.
-func (b Baggage) Fields() []string {
+func (Baggage) Fields() []string {
 	return []string{baggageHeader}
 }
 
diff --git a/vendor/go.opentelemetry.io/otel/propagation/propagation.go b/vendor/go.opentelemetry.io/otel/propagation/propagation.go
index 5c8c26e..0a32c59 100644
--- a/vendor/go.opentelemetry.io/otel/propagation/propagation.go
+++ b/vendor/go.opentelemetry.io/otel/propagation/propagation.go
@@ -20,7 +20,7 @@
 	// must never be done outside of a new major release.
 
 	// Set stores the key-value pair.
-	Set(key string, value string)
+	Set(key, value string)
 	// DO NOT CHANGE: any modification will not be backwards compatible and
 	// must never be done outside of a new major release.
 
@@ -88,7 +88,7 @@
 }
 
 // Set stores the key-value pair.
-func (hc HeaderCarrier) Set(key string, value string) {
+func (hc HeaderCarrier) Set(key, value string) {
 	http.Header(hc).Set(key, value)
 }
 
diff --git a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go
index 6870e31..6692d26 100644
--- a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go
+++ b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go
@@ -36,7 +36,7 @@
 )
 
 // Inject injects the trace context from ctx into carrier.
-func (tc TraceContext) Inject(ctx context.Context, carrier TextMapCarrier) {
+func (TraceContext) Inject(ctx context.Context, carrier TextMapCarrier) {
 	sc := trace.SpanContextFromContext(ctx)
 	if !sc.IsValid() {
 		return
@@ -77,7 +77,7 @@
 	return trace.ContextWithRemoteSpanContext(ctx, sc)
 }
 
-func (tc TraceContext) extract(carrier TextMapCarrier) trace.SpanContext {
+func (TraceContext) extract(carrier TextMapCarrier) trace.SpanContext {
 	h := carrier.Get(traceparentHeader)
 	if h == "" {
 		return trace.SpanContext{}
@@ -151,6 +151,6 @@
 }
 
 // Fields returns the keys who's values are set with Inject.
-func (tc TraceContext) Fields() []string {
+func (TraceContext) Fields() []string {
 	return []string{traceparentHeader, tracestateHeader}
 }
diff --git a/vendor/go.opentelemetry.io/otel/sdk/LICENSE b/vendor/go.opentelemetry.io/otel/sdk/LICENSE
index 261eeb9..f1aee0f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/LICENSE
+++ b/vendor/go.opentelemetry.io/otel/sdk/LICENSE
@@ -199,3 +199,33 @@
    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.
+
+--------------------------------------------------------------------------------
+
+Copyright 2009 The Go Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google LLC nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
index 68d296c..1be472e 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go
@@ -19,7 +19,7 @@
 // to the case-insensitive string value of "true" (i.e. "True" and "TRUE"
 // will also enable this).
 var Resource = newFeature("RESOURCE", func(v string) (string, bool) {
-	if strings.ToLower(v) == "true" {
+	if strings.EqualFold(v, "true") {
 		return v, true
 	}
 	return "", false
@@ -59,7 +59,7 @@
 	return f.parse(vRaw)
 }
 
-// Enabled returns if the feature is enabled.
+// Enabled reports whether the feature is enabled.
 func (f Feature[T]) Enabled() bool {
 	_, ok := f.Lookup()
 	return ok
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
index cefe4ab..3f20eb7 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go
@@ -13,7 +13,7 @@
 
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/sdk"
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 type (
@@ -72,7 +72,7 @@
 
 // Detect returns a *Resource that describes the string as a value
 // corresponding to attribute.Key as well as the specific schemaURL.
-func (sd stringDetector) Detect(ctx context.Context) (*Resource, error) {
+func (sd stringDetector) Detect(context.Context) (*Resource, error) {
 	value, err := sd.F()
 	if err != nil {
 		return nil, fmt.Errorf("%s: %w", string(sd.K), err)
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
index 0d86197..bbe142d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go
@@ -11,7 +11,7 @@
 	"os"
 	"regexp"
 
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 type containerIDProvider func() (string, error)
@@ -27,7 +27,7 @@
 
 // Detect returns a *Resource that describes the id of the container.
 // If no container id found, an empty resource will be returned.
-func (cgroupContainerIDDetector) Detect(ctx context.Context) (*Resource, error) {
+func (cgroupContainerIDDetector) Detect(context.Context) (*Resource, error) {
 	containerID, err := containerID()
 	if err != nil {
 		return nil, err
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
index 16a062a..4a1b017 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go
@@ -12,7 +12,7 @@
 
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/attribute"
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 const (
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
index 7819039..5fed33d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go
@@ -8,7 +8,7 @@
 	"errors"
 	"strings"
 
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 type hostIDProvider func() (string, error)
@@ -96,7 +96,7 @@
 type hostIDDetector struct{}
 
 // Detect returns a *Resource containing the platform specific host id.
-func (hostIDDetector) Detect(ctx context.Context) (*Resource, error) {
+func (hostIDDetector) Detect(context.Context) (*Resource, error) {
 	hostID, err := hostID()
 	if err != nil {
 		return nil, err
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
index 01b4d27..51da76e 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go
@@ -8,7 +8,7 @@
 	"strings"
 
 	"go.opentelemetry.io/otel/attribute"
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 type osDescriptionProvider func() (string, error)
@@ -32,7 +32,7 @@
 
 // Detect returns a *Resource that describes the operating system type the
 // service is running on.
-func (osTypeDetector) Detect(ctx context.Context) (*Resource, error) {
+func (osTypeDetector) Detect(context.Context) (*Resource, error) {
 	osType := runtimeOS()
 
 	osTypeAttribute := mapRuntimeOSToSemconvOSType(osType)
@@ -45,7 +45,7 @@
 
 // Detect returns a *Resource that describes the operating system the
 // service is running on.
-func (osDescriptionDetector) Detect(ctx context.Context) (*Resource, error) {
+func (osDescriptionDetector) Detect(context.Context) (*Resource, error) {
 	description, err := osDescription()
 	if err != nil {
 		return nil, err
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
index f537e5c..7252af7 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go
@@ -63,12 +63,12 @@
 	return values
 }
 
-// skip returns true if the line is blank or starts with a '#' character, and
+// skip reports whether the line is blank or starts with a '#' character, and
 // therefore should be skipped from processing.
 func skip(line string) bool {
 	line = strings.TrimSpace(line)
 
-	return len(line) == 0 || strings.HasPrefix(line, "#")
+	return line == "" || strings.HasPrefix(line, "#")
 }
 
 // parse attempts to split the provided line on the first '=' character, and then
@@ -76,7 +76,7 @@
 func parse(line string) (string, string, bool) {
 	k, v, found := strings.Cut(line, "=")
 
-	if !found || len(k) == 0 {
+	if !found || k == "" {
 		return "", "", false
 	}
 
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
index 6712ce8..138e577 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go
@@ -11,7 +11,7 @@
 	"path/filepath"
 	"runtime"
 
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 )
 
 type (
@@ -112,19 +112,19 @@
 
 // Detect returns a *Resource that describes the process identifier (PID) of the
 // executing process.
-func (processPIDDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processPIDDetector) Detect(context.Context) (*Resource, error) {
 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessPID(pid())), nil
 }
 
 // Detect returns a *Resource that describes the name of the process executable.
-func (processExecutableNameDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processExecutableNameDetector) Detect(context.Context) (*Resource, error) {
 	executableName := filepath.Base(commandArgs()[0])
 
 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessExecutableName(executableName)), nil
 }
 
 // Detect returns a *Resource that describes the full path of the process executable.
-func (processExecutablePathDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processExecutablePathDetector) Detect(context.Context) (*Resource, error) {
 	executablePath, err := executablePath()
 	if err != nil {
 		return nil, err
@@ -135,13 +135,13 @@
 
 // Detect returns a *Resource that describes all the command arguments as received
 // by the process.
-func (processCommandArgsDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processCommandArgsDetector) Detect(context.Context) (*Resource, error) {
 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessCommandArgs(commandArgs()...)), nil
 }
 
 // Detect returns a *Resource that describes the username of the user that owns the
 // process.
-func (processOwnerDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processOwnerDetector) Detect(context.Context) (*Resource, error) {
 	owner, err := owner()
 	if err != nil {
 		return nil, err
@@ -152,17 +152,17 @@
 
 // Detect returns a *Resource that describes the name of the compiler used to compile
 // this process image.
-func (processRuntimeNameDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processRuntimeNameDetector) Detect(context.Context) (*Resource, error) {
 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessRuntimeName(runtimeName())), nil
 }
 
 // Detect returns a *Resource that describes the version of the runtime of this process.
-func (processRuntimeVersionDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processRuntimeVersionDetector) Detect(context.Context) (*Resource, error) {
 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessRuntimeVersion(runtimeVersion())), nil
 }
 
 // Detect returns a *Resource that describes the runtime of this process.
-func (processRuntimeDescriptionDetector) Detect(ctx context.Context) (*Resource, error) {
+func (processRuntimeDescriptionDetector) Detect(context.Context) (*Resource, error) {
 	runtimeDescription := fmt.Sprintf(
 		"go version %s %s/%s", runtimeVersion(), runtimeOS(), runtimeArch())
 
diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
index 09b91e1..28e1e4f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
@@ -112,7 +112,7 @@
 }
 
 // MarshalLog is the marshaling function used by the logging system to represent this Resource.
-func (r *Resource) MarshalLog() interface{} {
+func (r *Resource) MarshalLog() any {
 	return struct {
 		Attributes attribute.Set
 		SchemaURL  string
@@ -148,7 +148,7 @@
 	return r.attrs.Iter()
 }
 
-// Equal returns whether r and o represent the same resource. Two resources can
+// Equal reports whether r and o represent the same resource. Two resources can
 // be equal even if they have different schema URLs.
 //
 // See the documentation on the [Resource] type for the pitfalls of using ==
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
index 6966ed8..9bc3e52 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/batch_span_processor.go
@@ -6,24 +6,35 @@
 import (
 	"context"
 	"errors"
+	"fmt"
 	"sync"
 	"sync/atomic"
 	"time"
 
 	"go.opentelemetry.io/otel"
+	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/internal/global"
+	"go.opentelemetry.io/otel/metric"
+	"go.opentelemetry.io/otel/sdk"
 	"go.opentelemetry.io/otel/sdk/internal/env"
+	"go.opentelemetry.io/otel/sdk/trace/internal/x"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
+	"go.opentelemetry.io/otel/semconv/v1.37.0/otelconv"
 	"go.opentelemetry.io/otel/trace"
 )
 
 // Defaults for BatchSpanProcessorOptions.
 const (
-	DefaultMaxQueueSize       = 2048
-	DefaultScheduleDelay      = 5000
+	DefaultMaxQueueSize = 2048
+	// DefaultScheduleDelay is the delay interval between two consecutive exports, in milliseconds.
+	DefaultScheduleDelay = 5000
+	// DefaultExportTimeout is the duration after which an export is cancelled, in milliseconds.
 	DefaultExportTimeout      = 30000
 	DefaultMaxExportBatchSize = 512
 )
 
+var queueFull = otelconv.ErrorTypeAttr("queue_full")
+
 // BatchSpanProcessorOption configures a BatchSpanProcessor.
 type BatchSpanProcessorOption func(o *BatchSpanProcessorOptions)
 
@@ -67,6 +78,11 @@
 	queue   chan ReadOnlySpan
 	dropped uint32
 
+	selfObservabilityEnabled bool
+	callbackRegistration     metric.Registration
+	spansProcessedCounter    otelconv.SDKProcessorSpanProcessed
+	componentNameAttr        attribute.KeyValue
+
 	batch      []ReadOnlySpan
 	batchMutex sync.Mutex
 	timer      *time.Timer
@@ -87,11 +103,7 @@
 	maxExportBatchSize := env.BatchSpanProcessorMaxExportBatchSize(DefaultMaxExportBatchSize)
 
 	if maxExportBatchSize > maxQueueSize {
-		if DefaultMaxExportBatchSize > maxQueueSize {
-			maxExportBatchSize = maxQueueSize
-		} else {
-			maxExportBatchSize = DefaultMaxExportBatchSize
-		}
+		maxExportBatchSize = min(DefaultMaxExportBatchSize, maxQueueSize)
 	}
 
 	o := BatchSpanProcessorOptions{
@@ -112,6 +124,21 @@
 		stopCh: make(chan struct{}),
 	}
 
+	if x.SelfObservability.Enabled() {
+		bsp.selfObservabilityEnabled = true
+		bsp.componentNameAttr = componentName()
+
+		var err error
+		bsp.spansProcessedCounter, bsp.callbackRegistration, err = newBSPObs(
+			bsp.componentNameAttr,
+			func() int64 { return int64(len(bsp.queue)) },
+			int64(bsp.o.MaxQueueSize),
+		)
+		if err != nil {
+			otel.Handle(err)
+		}
+	}
+
 	bsp.stopWait.Add(1)
 	go func() {
 		defer bsp.stopWait.Done()
@@ -122,8 +149,61 @@
 	return bsp
 }
 
+var processorIDCounter atomic.Int64
+
+// nextProcessorID returns an identifier for this batch span processor,
+// starting with 0 and incrementing by 1 each time it is called.
+func nextProcessorID() int64 {
+	return processorIDCounter.Add(1) - 1
+}
+
+func componentName() attribute.KeyValue {
+	id := nextProcessorID()
+	name := fmt.Sprintf("%s/%d", otelconv.ComponentTypeBatchingSpanProcessor, id)
+	return semconv.OTelComponentName(name)
+}
+
+// newBSPObs creates and returns a new set of metrics instruments and a
+// registration for a BatchSpanProcessor. It is the caller's responsibility
+// to unregister the registration when it is no longer needed.
+func newBSPObs(
+	cmpnt attribute.KeyValue,
+	qLen func() int64,
+	qMax int64,
+) (otelconv.SDKProcessorSpanProcessed, metric.Registration, error) {
+	meter := otel.GetMeterProvider().Meter(
+		selfObsScopeName,
+		metric.WithInstrumentationVersion(sdk.Version()),
+		metric.WithSchemaURL(semconv.SchemaURL),
+	)
+
+	qCap, err := otelconv.NewSDKProcessorSpanQueueCapacity(meter)
+
+	qSize, e := otelconv.NewSDKProcessorSpanQueueSize(meter)
+	err = errors.Join(err, e)
+
+	spansProcessed, e := otelconv.NewSDKProcessorSpanProcessed(meter)
+	err = errors.Join(err, e)
+
+	cmpntT := semconv.OTelComponentTypeBatchingSpanProcessor
+	attrs := metric.WithAttributes(cmpnt, cmpntT)
+
+	reg, e := meter.RegisterCallback(
+		func(_ context.Context, o metric.Observer) error {
+			o.ObserveInt64(qSize.Inst(), qLen(), attrs)
+			o.ObserveInt64(qCap.Inst(), qMax, attrs)
+			return nil
+		},
+		qSize.Inst(),
+		qCap.Inst(),
+	)
+	err = errors.Join(err, e)
+
+	return spansProcessed, reg, err
+}
+
 // OnStart method does nothing.
-func (bsp *batchSpanProcessor) OnStart(parent context.Context, s ReadWriteSpan) {}
+func (*batchSpanProcessor) OnStart(context.Context, ReadWriteSpan) {}
 
 // OnEnd method enqueues a ReadOnlySpan for later processing.
 func (bsp *batchSpanProcessor) OnEnd(s ReadOnlySpan) {
@@ -162,6 +242,9 @@
 		case <-ctx.Done():
 			err = ctx.Err()
 		}
+		if bsp.selfObservabilityEnabled {
+			err = errors.Join(err, bsp.callbackRegistration.Unregister())
+		}
 	})
 	return err
 }
@@ -171,7 +254,7 @@
 	flushed chan struct{}
 }
 
-func (f forceFlushSpan) SpanContext() trace.SpanContext {
+func (forceFlushSpan) SpanContext() trace.SpanContext {
 	return trace.NewSpanContext(trace.SpanContextConfig{TraceFlags: trace.FlagsSampled})
 }
 
@@ -274,6 +357,11 @@
 
 	if l := len(bsp.batch); l > 0 {
 		global.Debug("exporting spans", "count", len(bsp.batch), "total_dropped", atomic.LoadUint32(&bsp.dropped))
+		if bsp.selfObservabilityEnabled {
+			bsp.spansProcessedCounter.Add(ctx, int64(l),
+				bsp.componentNameAttr,
+				bsp.spansProcessedCounter.AttrComponentType(otelconv.ComponentTypeBatchingSpanProcessor))
+		}
 		err := bsp.e.ExportSpans(ctx, bsp.batch)
 
 		// A new batch is always created after exporting, even if the batch failed to be exported.
@@ -382,11 +470,17 @@
 	case bsp.queue <- sd:
 		return true
 	case <-ctx.Done():
+		if bsp.selfObservabilityEnabled {
+			bsp.spansProcessedCounter.Add(ctx, 1,
+				bsp.componentNameAttr,
+				bsp.spansProcessedCounter.AttrComponentType(otelconv.ComponentTypeBatchingSpanProcessor),
+				bsp.spansProcessedCounter.AttrErrorType(queueFull))
+		}
 		return false
 	}
 }
 
-func (bsp *batchSpanProcessor) enqueueDrop(_ context.Context, sd ReadOnlySpan) bool {
+func (bsp *batchSpanProcessor) enqueueDrop(ctx context.Context, sd ReadOnlySpan) bool {
 	if !sd.SpanContext().IsSampled() {
 		return false
 	}
@@ -396,12 +490,18 @@
 		return true
 	default:
 		atomic.AddUint32(&bsp.dropped, 1)
+		if bsp.selfObservabilityEnabled {
+			bsp.spansProcessedCounter.Add(ctx, 1,
+				bsp.componentNameAttr,
+				bsp.spansProcessedCounter.AttrComponentType(otelconv.ComponentTypeBatchingSpanProcessor),
+				bsp.spansProcessedCounter.AttrErrorType(queueFull))
+		}
 	}
 	return false
 }
 
 // MarshalLog is the marshaling function used by the logging system to represent this Span Processor.
-func (bsp *batchSpanProcessor) MarshalLog() interface{} {
+func (bsp *batchSpanProcessor) MarshalLog() any {
 	return struct {
 		Type         string
 		SpanExporter SpanExporter
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go b/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
index 1f60524..e58e7f6 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
@@ -6,5 +6,8 @@
 
 The following assumes a basic familiarity with OpenTelemetry concepts.
 See https://opentelemetry.io.
+
+See [go.opentelemetry.io/otel/sdk/trace/internal/x] for information about
+the experimental features.
 */
 package trace // import "go.opentelemetry.io/otel/sdk/trace"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go b/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
index c8d3fb7..3649322 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/id_generator.go
@@ -32,7 +32,7 @@
 var _ IDGenerator = &randomIDGenerator{}
 
 // NewSpanID returns a non-zero span ID from a randomly-chosen sequence.
-func (gen *randomIDGenerator) NewSpanID(ctx context.Context, traceID trace.TraceID) trace.SpanID {
+func (*randomIDGenerator) NewSpanID(context.Context, trace.TraceID) trace.SpanID {
 	sid := trace.SpanID{}
 	for {
 		binary.NativeEndian.PutUint64(sid[:], rand.Uint64())
@@ -45,7 +45,7 @@
 
 // NewIDs returns a non-zero trace ID and a non-zero span ID from a
 // randomly-chosen sequence.
-func (gen *randomIDGenerator) NewIDs(ctx context.Context) (trace.TraceID, trace.SpanID) {
+func (*randomIDGenerator) NewIDs(context.Context) (trace.TraceID, trace.SpanID) {
 	tid := trace.TraceID{}
 	sid := trace.SpanID{}
 	for {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/README.md b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/README.md
new file mode 100644
index 0000000..feec16f
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/README.md
@@ -0,0 +1,35 @@
+# Experimental Features
+
+The Trace SDK contains features that have not yet stabilized in the OpenTelemetry specification.
+These features are added to the OpenTelemetry Go Trace SDK prior to stabilization in the specification so that users can start experimenting with them and provide feedback.
+
+These features may change in backwards incompatible ways as feedback is applied.
+See the [Compatibility and Stability](#compatibility-and-stability) section for more information.
+
+## Features
+
+- [Self-Observability](#self-observability)
+
+### Self-Observability
+
+The SDK provides a self-observability feature that allows you to monitor the SDK itself.
+
+To opt-in, set the environment variable `OTEL_GO_X_SELF_OBSERVABILITY` to `true`.
+
+When enabled, the SDK will create the following metrics using the global `MeterProvider`:
+
+- `otel.sdk.span.live`
+- `otel.sdk.span.started`
+
+Please see the [Semantic conventions for OpenTelemetry SDK metrics] documentation for more details on these metrics.
+
+[Semantic conventions for OpenTelemetry SDK metrics]: https://github.com/open-telemetry/semantic-conventions/blob/v1.36.0/docs/otel/sdk-metrics.md
+
+## Compatibility and Stability
+
+Experimental features do not fall within the scope of the OpenTelemetry Go versioning and stability [policy](../../../../VERSIONING.md).
+These features may be removed or modified in successive version releases, including patch versions.
+
+When an experimental feature is promoted to a stable feature, a migration path will be included in the changelog entry of the release.
+There is no guarantee that any environment variable feature flags that enabled the experimental feature will be supported by the stable version.
+If they are supported, they may be accompanied with a deprecation notice stating a timeline for the removal of that support.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/x.go
new file mode 100644
index 0000000..2fcbbcc
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/internal/x/x.go
@@ -0,0 +1,63 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// Package x documents experimental features for [go.opentelemetry.io/otel/sdk/trace].
+package x // import "go.opentelemetry.io/otel/sdk/trace/internal/x"
+
+import (
+	"os"
+	"strings"
+)
+
+// SelfObservability is an experimental feature flag that determines if SDK
+// self-observability metrics are enabled.
+//
+// To enable this feature set the OTEL_GO_X_SELF_OBSERVABILITY environment variable
+// to the case-insensitive string value of "true" (i.e. "True" and "TRUE"
+// will also enable this).
+var SelfObservability = newFeature("SELF_OBSERVABILITY", func(v string) (string, bool) {
+	if strings.EqualFold(v, "true") {
+		return v, true
+	}
+	return "", false
+})
+
+// Feature is an experimental feature control flag. It provides a uniform way
+// to interact with these feature flags and parse their values.
+type Feature[T any] struct {
+	key   string
+	parse func(v string) (T, bool)
+}
+
+func newFeature[T any](suffix string, parse func(string) (T, bool)) Feature[T] {
+	const envKeyRoot = "OTEL_GO_X_"
+	return Feature[T]{
+		key:   envKeyRoot + suffix,
+		parse: parse,
+	}
+}
+
+// Key returns the environment variable key that needs to be set to enable the
+// feature.
+func (f Feature[T]) Key() string { return f.key }
+
+// Lookup returns the user configured value for the feature and true if the
+// user has enabled the feature. Otherwise, if the feature is not enabled, a
+// zero-value and false are returned.
+func (f Feature[T]) Lookup() (v T, ok bool) {
+	// https://github.com/open-telemetry/opentelemetry-specification/blob/62effed618589a0bec416a87e559c0a9d96289bb/specification/configuration/sdk-environment-variables.md#parsing-empty-value
+	//
+	// > The SDK MUST interpret an empty value of an environment variable the
+	// > same way as when the variable is unset.
+	vRaw := os.Getenv(f.key)
+	if vRaw == "" {
+		return v, ok
+	}
+	return f.parse(vRaw)
+}
+
+// Enabled reports whether the feature is enabled.
+func (f Feature[T]) Enabled() bool {
+	_, ok := f.Lookup()
+	return ok
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
index 0e2a2e7..37ce2ac 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
@@ -5,14 +5,20 @@
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"sync"
 	"sync/atomic"
 
 	"go.opentelemetry.io/otel"
 	"go.opentelemetry.io/otel/internal/global"
+	"go.opentelemetry.io/otel/metric"
+	"go.opentelemetry.io/otel/sdk"
 	"go.opentelemetry.io/otel/sdk/instrumentation"
 	"go.opentelemetry.io/otel/sdk/resource"
+	"go.opentelemetry.io/otel/sdk/trace/internal/x"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
+	"go.opentelemetry.io/otel/semconv/v1.37.0/otelconv"
 	"go.opentelemetry.io/otel/trace"
 	"go.opentelemetry.io/otel/trace/embedded"
 	"go.opentelemetry.io/otel/trace/noop"
@@ -20,6 +26,7 @@
 
 const (
 	defaultTracerName = "go.opentelemetry.io/otel/sdk/tracer"
+	selfObsScopeName  = "go.opentelemetry.io/otel/sdk/trace"
 )
 
 // tracerProviderConfig.
@@ -45,7 +52,7 @@
 }
 
 // MarshalLog is the marshaling function used by the logging system to represent this Provider.
-func (cfg tracerProviderConfig) MarshalLog() interface{} {
+func (cfg tracerProviderConfig) MarshalLog() any {
 	return struct {
 		SpanProcessors  []SpanProcessor
 		SamplerType     string
@@ -156,8 +163,18 @@
 		t, ok := p.namedTracer[is]
 		if !ok {
 			t = &tracer{
-				provider:             p,
-				instrumentationScope: is,
+				provider:                 p,
+				instrumentationScope:     is,
+				selfObservabilityEnabled: x.SelfObservability.Enabled(),
+			}
+			if t.selfObservabilityEnabled {
+				var err error
+				t.spanLiveMetric, t.spanStartedMetric, err = newInst()
+				if err != nil {
+					msg := "failed to create self-observability metrics for tracer: %w"
+					err := fmt.Errorf(msg, err)
+					otel.Handle(err)
+				}
 			}
 			p.namedTracer[is] = t
 		}
@@ -184,6 +201,23 @@
 	return t
 }
 
+func newInst() (otelconv.SDKSpanLive, otelconv.SDKSpanStarted, error) {
+	m := otel.GetMeterProvider().Meter(
+		selfObsScopeName,
+		metric.WithInstrumentationVersion(sdk.Version()),
+		metric.WithSchemaURL(semconv.SchemaURL),
+	)
+
+	var err error
+	spanLiveMetric, e := otelconv.NewSDKSpanLive(m)
+	err = errors.Join(err, e)
+
+	spanStartedMetric, e := otelconv.NewSDKSpanStarted(m)
+	err = errors.Join(err, e)
+
+	return spanLiveMetric, spanStartedMetric, err
+}
+
 // RegisterSpanProcessor adds the given SpanProcessor to the list of SpanProcessors.
 func (p *TracerProvider) RegisterSpanProcessor(sp SpanProcessor) {
 	// This check prevents calls during a shutdown.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
index aa7b262..689663d 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
@@ -110,14 +110,14 @@
 
 type alwaysOnSampler struct{}
 
-func (as alwaysOnSampler) ShouldSample(p SamplingParameters) SamplingResult {
+func (alwaysOnSampler) ShouldSample(p SamplingParameters) SamplingResult {
 	return SamplingResult{
 		Decision:   RecordAndSample,
 		Tracestate: trace.SpanContextFromContext(p.ParentContext).TraceState(),
 	}
 }
 
-func (as alwaysOnSampler) Description() string {
+func (alwaysOnSampler) Description() string {
 	return "AlwaysOnSampler"
 }
 
@@ -131,14 +131,14 @@
 
 type alwaysOffSampler struct{}
 
-func (as alwaysOffSampler) ShouldSample(p SamplingParameters) SamplingResult {
+func (alwaysOffSampler) ShouldSample(p SamplingParameters) SamplingResult {
 	return SamplingResult{
 		Decision:   Drop,
 		Tracestate: trace.SpanContextFromContext(p.ParentContext).TraceState(),
 	}
 }
 
-func (as alwaysOffSampler) Description() string {
+func (alwaysOffSampler) Description() string {
 	return "AlwaysOffSampler"
 }
 
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go b/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
index 664e13e..411d9cc 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/simple_span_processor.go
@@ -39,7 +39,7 @@
 }
 
 // OnStart does nothing.
-func (ssp *simpleSpanProcessor) OnStart(context.Context, ReadWriteSpan) {}
+func (*simpleSpanProcessor) OnStart(context.Context, ReadWriteSpan) {}
 
 // OnEnd immediately exports a ReadOnlySpan.
 func (ssp *simpleSpanProcessor) OnEnd(s ReadOnlySpan) {
@@ -104,13 +104,13 @@
 }
 
 // ForceFlush does nothing as there is no data to flush.
-func (ssp *simpleSpanProcessor) ForceFlush(context.Context) error {
+func (*simpleSpanProcessor) ForceFlush(context.Context) error {
 	return nil
 }
 
 // MarshalLog is the marshaling function used by the logging system to represent
 // this Span Processor.
-func (ssp *simpleSpanProcessor) MarshalLog() interface{} {
+func (ssp *simpleSpanProcessor) MarshalLog() any {
 	return struct {
 		Type     string
 		Exporter SpanExporter
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go b/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
index d511d0f..63aa337 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
@@ -35,7 +35,7 @@
 
 var _ ReadOnlySpan = snapshot{}
 
-func (s snapshot) private() {}
+func (snapshot) private() {}
 
 // Name returns the name of the span.
 func (s snapshot) Name() string {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
index 1785a4b..b376051 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
@@ -20,7 +20,7 @@
 	"go.opentelemetry.io/otel/internal/global"
 	"go.opentelemetry.io/otel/sdk/instrumentation"
 	"go.opentelemetry.io/otel/sdk/resource"
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 	"go.opentelemetry.io/otel/trace"
 	"go.opentelemetry.io/otel/trace/embedded"
 )
@@ -61,6 +61,7 @@
 	InstrumentationScope() instrumentation.Scope
 	// InstrumentationLibrary returns information about the instrumentation
 	// library that created the span.
+	//
 	// Deprecated: please use InstrumentationScope instead.
 	InstrumentationLibrary() instrumentation.Library //nolint:staticcheck // This method needs to be define for backwards compatibility
 	// Resource returns information about the entity that produced the span.
@@ -165,7 +166,7 @@
 	return s.spanContext
 }
 
-// IsRecording returns if this span is being recorded. If this span has ended
+// IsRecording reports whether this span is being recorded. If this span has ended
 // this will return false.
 func (s *recordingSpan) IsRecording() bool {
 	if s == nil {
@@ -177,7 +178,7 @@
 	return s.isRecording()
 }
 
-// isRecording returns if this span is being recorded. If this span has ended
+// isRecording reports whether this span is being recorded. If this span has ended
 // this will return false.
 //
 // This method assumes s.mu.Lock is held by the caller.
@@ -495,6 +496,16 @@
 	}
 	s.mu.Unlock()
 
+	if s.tracer.selfObservabilityEnabled {
+		defer func() {
+			// Add the span to the context to ensure the metric is recorded
+			// with the correct span context.
+			ctx := trace.ContextWithSpan(context.Background(), s)
+			set := spanLiveSet(s.spanContext.IsSampled())
+			s.tracer.spanLiveMetric.AddSet(ctx, -1, set)
+		}()
+	}
+
 	sps := s.tracer.provider.getSpanProcessors()
 	if len(sps) == 0 {
 		return
@@ -545,7 +556,7 @@
 	s.addEvent(semconv.ExceptionEventName, opts...)
 }
 
-func typeStr(i interface{}) string {
+func typeStr(i any) string {
 	t := reflect.TypeOf(i)
 	if t.PkgPath() == "" && t.Name() == "" {
 		// Likely a builtin type.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
index 0b65ae9..e965c4c 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
@@ -7,7 +7,9 @@
 	"context"
 	"time"
 
+	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/sdk/instrumentation"
+	"go.opentelemetry.io/otel/semconv/v1.37.0/otelconv"
 	"go.opentelemetry.io/otel/trace"
 	"go.opentelemetry.io/otel/trace/embedded"
 )
@@ -17,6 +19,10 @@
 
 	provider             *TracerProvider
 	instrumentationScope instrumentation.Scope
+
+	selfObservabilityEnabled bool
+	spanLiveMetric           otelconv.SDKSpanLive
+	spanStartedMetric        otelconv.SDKSpanStarted
 }
 
 var _ trace.Tracer = &tracer{}
@@ -46,17 +52,25 @@
 	}
 
 	s := tr.newSpan(ctx, name, &config)
+	newCtx := trace.ContextWithSpan(ctx, s)
+	if tr.selfObservabilityEnabled {
+		psc := trace.SpanContextFromContext(ctx)
+		set := spanStartedSet(psc, s)
+		tr.spanStartedMetric.AddSet(newCtx, 1, set)
+	}
+
 	if rw, ok := s.(ReadWriteSpan); ok && s.IsRecording() {
 		sps := tr.provider.getSpanProcessors()
 		for _, sp := range sps {
+			// Use original context.
 			sp.sp.OnStart(ctx, rw)
 		}
 	}
 	if rtt, ok := s.(runtimeTracer); ok {
-		ctx = rtt.runtimeTrace(ctx)
+		newCtx = rtt.runtimeTrace(newCtx)
 	}
 
-	return trace.ContextWithSpan(ctx, s), s
+	return newCtx, s
 }
 
 type runtimeTracer interface {
@@ -112,11 +126,12 @@
 	if !isRecording(samplingResult) {
 		return tr.newNonRecordingSpan(sc)
 	}
-	return tr.newRecordingSpan(psc, sc, name, samplingResult, config)
+	return tr.newRecordingSpan(ctx, psc, sc, name, samplingResult, config)
 }
 
 // newRecordingSpan returns a new configured recordingSpan.
 func (tr *tracer) newRecordingSpan(
+	ctx context.Context,
 	psc, sc trace.SpanContext,
 	name string,
 	sr SamplingResult,
@@ -153,6 +168,14 @@
 	s.SetAttributes(sr.Attributes...)
 	s.SetAttributes(config.Attributes()...)
 
+	if tr.selfObservabilityEnabled {
+		// Propagate any existing values from the context with the new span to
+		// the measurement context.
+		ctx = trace.ContextWithSpan(ctx, s)
+		set := spanLiveSet(s.spanContext.IsSampled())
+		tr.spanLiveMetric.AddSet(ctx, 1, set)
+	}
+
 	return s
 }
 
@@ -160,3 +183,112 @@
 func (tr *tracer) newNonRecordingSpan(sc trace.SpanContext) nonRecordingSpan {
 	return nonRecordingSpan{tracer: tr, sc: sc}
 }
+
+type parentState int
+
+const (
+	parentStateNoParent parentState = iota
+	parentStateLocalParent
+	parentStateRemoteParent
+)
+
+type samplingState int
+
+const (
+	samplingStateDrop samplingState = iota
+	samplingStateRecordOnly
+	samplingStateRecordAndSample
+)
+
+type spanStartedSetKey struct {
+	parent   parentState
+	sampling samplingState
+}
+
+var spanStartedSetCache = map[spanStartedSetKey]attribute.Set{
+	{parentStateNoParent, samplingStateDrop}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginNone),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultDrop),
+	),
+	{parentStateLocalParent, samplingStateDrop}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginLocal),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultDrop),
+	),
+	{parentStateRemoteParent, samplingStateDrop}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginRemote),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultDrop),
+	),
+
+	{parentStateNoParent, samplingStateRecordOnly}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginNone),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordOnly),
+	),
+	{parentStateLocalParent, samplingStateRecordOnly}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginLocal),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordOnly),
+	),
+	{parentStateRemoteParent, samplingStateRecordOnly}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginRemote),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordOnly),
+	),
+
+	{parentStateNoParent, samplingStateRecordAndSample}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginNone),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordAndSample),
+	),
+	{parentStateLocalParent, samplingStateRecordAndSample}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginLocal),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordAndSample),
+	),
+	{parentStateRemoteParent, samplingStateRecordAndSample}: attribute.NewSet(
+		otelconv.SDKSpanStarted{}.AttrSpanParentOrigin(otelconv.SpanParentOriginRemote),
+		otelconv.SDKSpanStarted{}.AttrSpanSamplingResult(otelconv.SpanSamplingResultRecordAndSample),
+	),
+}
+
+func spanStartedSet(psc trace.SpanContext, span trace.Span) attribute.Set {
+	key := spanStartedSetKey{
+		parent:   parentStateNoParent,
+		sampling: samplingStateDrop,
+	}
+
+	if psc.IsValid() {
+		if psc.IsRemote() {
+			key.parent = parentStateRemoteParent
+		} else {
+			key.parent = parentStateLocalParent
+		}
+	}
+
+	if span.IsRecording() {
+		if span.SpanContext().IsSampled() {
+			key.sampling = samplingStateRecordAndSample
+		} else {
+			key.sampling = samplingStateRecordOnly
+		}
+	}
+
+	return spanStartedSetCache[key]
+}
+
+type spanLiveSetKey struct {
+	sampled bool
+}
+
+var spanLiveSetCache = map[spanLiveSetKey]attribute.Set{
+	{true}: attribute.NewSet(
+		otelconv.SDKSpanLive{}.AttrSpanSamplingResult(
+			otelconv.SpanSamplingResultRecordAndSample,
+		),
+	),
+	{false}: attribute.NewSet(
+		otelconv.SDKSpanLive{}.AttrSpanSamplingResult(
+			otelconv.SpanSamplingResultRecordOnly,
+		),
+	),
+}
+
+func spanLiveSet(sampled bool) attribute.Set {
+	key := spanLiveSetKey{sampled: sampled}
+	return spanLiveSetCache[key]
+}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/version.go b/vendor/go.opentelemetry.io/otel/sdk/trace/version.go
deleted file mode 100644
index b84dd2c..0000000
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/version.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package trace // import "go.opentelemetry.io/otel/sdk/trace"
-
-// version is the current release version of the metric SDK in use.
-func version() string {
-	return "1.16.0-rc.1"
-}
diff --git a/vendor/go.opentelemetry.io/otel/sdk/version.go b/vendor/go.opentelemetry.io/otel/sdk/version.go
index c0217af..7f97cc3 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/version.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/version.go
@@ -6,5 +6,5 @@
 
 // Version is the current release version of the OpenTelemetry SDK in use.
 func Version() string {
-	return "1.37.0"
+	return "1.38.0"
 }
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md
deleted file mode 100644
index 2de1fc3..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Semconv v1.26.0
-
-[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.26.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.26.0)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go
deleted file mode 100644
index d8dc822..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/attribute_group.go
+++ /dev/null
@@ -1,8996 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0"
-
-import "go.opentelemetry.io/otel/attribute"
-
-// The Android platform on which the Android application is running.
-const (
-	// AndroidOSAPILevelKey is the attribute Key conforming to the
-	// "android.os.api_level" semantic conventions. It represents the uniquely
-	// identifies the framework API revision offered by a version
-	// (`os.version`) of the android operating system. More information can be
-	// found
-	// [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#APILevels).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '33', '32'
-	AndroidOSAPILevelKey = attribute.Key("android.os.api_level")
-)
-
-// AndroidOSAPILevel returns an attribute KeyValue conforming to the
-// "android.os.api_level" semantic conventions. It represents the uniquely
-// identifies the framework API revision offered by a version (`os.version`) of
-// the android operating system. More information can be found
-// [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#APILevels).
-func AndroidOSAPILevel(val string) attribute.KeyValue {
-	return AndroidOSAPILevelKey.String(val)
-}
-
-// ASP.NET Core attributes
-const (
-	// AspnetcoreRateLimitingResultKey is the attribute Key conforming to the
-	// "aspnetcore.rate_limiting.result" semantic conventions. It represents
-	// the rate-limiting result, shows whether the lease was acquired or
-	// contains a rejection reason
-	//
-	// Type: Enum
-	// RequirementLevel: Required
-	// Stability: stable
-	// Examples: 'acquired', 'request_canceled'
-	AspnetcoreRateLimitingResultKey = attribute.Key("aspnetcore.rate_limiting.result")
-
-	// AspnetcoreDiagnosticsHandlerTypeKey is the attribute Key conforming to
-	// the "aspnetcore.diagnostics.handler.type" semantic conventions. It
-	// represents the full type name of the
-	// [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler)
-	// implementation that handled the exception.
-	//
-	// Type: string
-	// RequirementLevel: ConditionallyRequired (if and only if the exception
-	// was handled by this handler.)
-	// Stability: stable
-	// Examples: 'Contoso.MyHandler'
-	AspnetcoreDiagnosticsHandlerTypeKey = attribute.Key("aspnetcore.diagnostics.handler.type")
-
-	// AspnetcoreDiagnosticsExceptionResultKey is the attribute Key conforming
-	// to the "aspnetcore.diagnostics.exception.result" semantic conventions.
-	// It represents the aSP.NET Core exception middleware handling result
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'handled', 'unhandled'
-	AspnetcoreDiagnosticsExceptionResultKey = attribute.Key("aspnetcore.diagnostics.exception.result")
-
-	// AspnetcoreRateLimitingPolicyKey is the attribute Key conforming to the
-	// "aspnetcore.rate_limiting.policy" semantic conventions. It represents
-	// the rate limiting policy name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'fixed', 'sliding', 'token'
-	AspnetcoreRateLimitingPolicyKey = attribute.Key("aspnetcore.rate_limiting.policy")
-
-	// AspnetcoreRequestIsUnhandledKey is the attribute Key conforming to the
-	// "aspnetcore.request.is_unhandled" semantic conventions. It represents
-	// the flag indicating if request was handled by the application pipeline.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: True
-	AspnetcoreRequestIsUnhandledKey = attribute.Key("aspnetcore.request.is_unhandled")
-
-	// AspnetcoreRoutingIsFallbackKey is the attribute Key conforming to the
-	// "aspnetcore.routing.is_fallback" semantic conventions. It represents a
-	// value that indicates whether the matched route is a fallback route.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: True
-	AspnetcoreRoutingIsFallbackKey = attribute.Key("aspnetcore.routing.is_fallback")
-
-	// AspnetcoreRoutingMatchStatusKey is the attribute Key conforming to the
-	// "aspnetcore.routing.match_status" semantic conventions. It represents
-	// the match result - success or failure
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'success', 'failure'
-	AspnetcoreRoutingMatchStatusKey = attribute.Key("aspnetcore.routing.match_status")
-)
-
-var (
-	// Lease was acquired
-	AspnetcoreRateLimitingResultAcquired = AspnetcoreRateLimitingResultKey.String("acquired")
-	// Lease request was rejected by the endpoint limiter
-	AspnetcoreRateLimitingResultEndpointLimiter = AspnetcoreRateLimitingResultKey.String("endpoint_limiter")
-	// Lease request was rejected by the global limiter
-	AspnetcoreRateLimitingResultGlobalLimiter = AspnetcoreRateLimitingResultKey.String("global_limiter")
-	// Lease request was canceled
-	AspnetcoreRateLimitingResultRequestCanceled = AspnetcoreRateLimitingResultKey.String("request_canceled")
-)
-
-var (
-	// Exception was handled by the exception handling middleware
-	AspnetcoreDiagnosticsExceptionResultHandled = AspnetcoreDiagnosticsExceptionResultKey.String("handled")
-	// Exception was not handled by the exception handling middleware
-	AspnetcoreDiagnosticsExceptionResultUnhandled = AspnetcoreDiagnosticsExceptionResultKey.String("unhandled")
-	// Exception handling was skipped because the response had started
-	AspnetcoreDiagnosticsExceptionResultSkipped = AspnetcoreDiagnosticsExceptionResultKey.String("skipped")
-	// Exception handling didn't run because the request was aborted
-	AspnetcoreDiagnosticsExceptionResultAborted = AspnetcoreDiagnosticsExceptionResultKey.String("aborted")
-)
-
-var (
-	// Match succeeded
-	AspnetcoreRoutingMatchStatusSuccess = AspnetcoreRoutingMatchStatusKey.String("success")
-	// Match failed
-	AspnetcoreRoutingMatchStatusFailure = AspnetcoreRoutingMatchStatusKey.String("failure")
-)
-
-// AspnetcoreDiagnosticsHandlerType returns an attribute KeyValue conforming
-// to the "aspnetcore.diagnostics.handler.type" semantic conventions. It
-// represents the full type name of the
-// [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler)
-// implementation that handled the exception.
-func AspnetcoreDiagnosticsHandlerType(val string) attribute.KeyValue {
-	return AspnetcoreDiagnosticsHandlerTypeKey.String(val)
-}
-
-// AspnetcoreRateLimitingPolicy returns an attribute KeyValue conforming to
-// the "aspnetcore.rate_limiting.policy" semantic conventions. It represents
-// the rate limiting policy name.
-func AspnetcoreRateLimitingPolicy(val string) attribute.KeyValue {
-	return AspnetcoreRateLimitingPolicyKey.String(val)
-}
-
-// AspnetcoreRequestIsUnhandled returns an attribute KeyValue conforming to
-// the "aspnetcore.request.is_unhandled" semantic conventions. It represents
-// the flag indicating if request was handled by the application pipeline.
-func AspnetcoreRequestIsUnhandled(val bool) attribute.KeyValue {
-	return AspnetcoreRequestIsUnhandledKey.Bool(val)
-}
-
-// AspnetcoreRoutingIsFallback returns an attribute KeyValue conforming to
-// the "aspnetcore.routing.is_fallback" semantic conventions. It represents a
-// value that indicates whether the matched route is a fallback route.
-func AspnetcoreRoutingIsFallback(val bool) attribute.KeyValue {
-	return AspnetcoreRoutingIsFallbackKey.Bool(val)
-}
-
-// Generic attributes for AWS services.
-const (
-	// AWSRequestIDKey is the attribute Key conforming to the "aws.request_id"
-	// semantic conventions. It represents the AWS request ID as returned in
-	// the response headers `x-amz-request-id` or `x-amz-requestid`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '79b9da39-b7ae-508a-a6bc-864b2829c622', 'C9ER4AJX75574TDJ'
-	AWSRequestIDKey = attribute.Key("aws.request_id")
-)
-
-// AWSRequestID returns an attribute KeyValue conforming to the
-// "aws.request_id" semantic conventions. It represents the AWS request ID as
-// returned in the response headers `x-amz-request-id` or `x-amz-requestid`.
-func AWSRequestID(val string) attribute.KeyValue {
-	return AWSRequestIDKey.String(val)
-}
-
-// Attributes for AWS DynamoDB.
-const (
-	// AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to
-	// the "aws.dynamodb.attribute_definitions" semantic conventions. It
-	// represents the JSON-serialized value of each item in the
-	// `AttributeDefinitions` request field.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "AttributeName": "string", "AttributeType": "string" }'
-	AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions")
-
-	// AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the
-	// "aws.dynamodb.attributes_to_get" semantic conventions. It represents the
-	// value of the `AttributesToGet` request parameter.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'lives', 'id'
-	AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get")
-
-	// AWSDynamoDBConsistentReadKey is the attribute Key conforming to the
-	// "aws.dynamodb.consistent_read" semantic conventions. It represents the
-	// value of the `ConsistentRead` request parameter.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read")
-
-	// AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the
-	// "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
-	// JSON-serialized value of each item in the `ConsumedCapacity` response
-	// field.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "CapacityUnits": number, "GlobalSecondaryIndexes": {
-	// "string" : { "CapacityUnits": number, "ReadCapacityUnits": number,
-	// "WriteCapacityUnits": number } }, "LocalSecondaryIndexes": { "string" :
-	// { "CapacityUnits": number, "ReadCapacityUnits": number,
-	// "WriteCapacityUnits": number } }, "ReadCapacityUnits": number, "Table":
-	// { "CapacityUnits": number, "ReadCapacityUnits": number,
-	// "WriteCapacityUnits": number }, "TableName": "string",
-	// "WriteCapacityUnits": number }'
-	AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity")
-
-	// AWSDynamoDBCountKey is the attribute Key conforming to the
-	// "aws.dynamodb.count" semantic conventions. It represents the value of
-	// the `Count` response parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 10
-	AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count")
-
-	// AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the
-	// "aws.dynamodb.exclusive_start_table" semantic conventions. It represents
-	// the value of the `ExclusiveStartTableName` request parameter.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Users', 'CatsTable'
-	AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table")
-
-	// AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key
-	// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic
-	// conventions. It represents the JSON-serialized value of each item in the
-	// `GlobalSecondaryIndexUpdates` request field.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "Create": { "IndexName": "string", "KeySchema": [ {
-	// "AttributeName": "string", "KeyType": "string" } ], "Projection": {
-	// "NonKeyAttributes": [ "string" ], "ProjectionType": "string" },
-	// "ProvisionedThroughput": { "ReadCapacityUnits": number,
-	// "WriteCapacityUnits": number } }'
-	AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates")
-
-	// AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to
-	// the "aws.dynamodb.global_secondary_indexes" semantic conventions. It
-	// represents the JSON-serialized value of each item of the
-	// `GlobalSecondaryIndexes` request field
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "IndexName": "string", "KeySchema": [ { "AttributeName":
-	// "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [
-	// "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": {
-	// "ReadCapacityUnits": number, "WriteCapacityUnits": number } }'
-	AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes")
-
-	// AWSDynamoDBIndexNameKey is the attribute Key conforming to the
-	// "aws.dynamodb.index_name" semantic conventions. It represents the value
-	// of the `IndexName` request parameter.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'name_to_group'
-	AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name")
-
-	// AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to
-	// the "aws.dynamodb.item_collection_metrics" semantic conventions. It
-	// represents the JSON-serialized value of the `ItemCollectionMetrics`
-	// response field.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "string" : [ { "ItemCollectionKey": { "string" : { "B":
-	// blob, "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": {
-	// "string" : "AttributeValue" }, "N": "string", "NS": [ "string" ],
-	// "NULL": boolean, "S": "string", "SS": [ "string" ] } },
-	// "SizeEstimateRangeGB": [ number ] } ] }'
-	AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics")
-
-	// AWSDynamoDBLimitKey is the attribute Key conforming to the
-	// "aws.dynamodb.limit" semantic conventions. It represents the value of
-	// the `Limit` request parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 10
-	AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit")
-
-	// AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to
-	// the "aws.dynamodb.local_secondary_indexes" semantic conventions. It
-	// represents the JSON-serialized value of each item of the
-	// `LocalSecondaryIndexes` request field.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '{ "IndexARN": "string", "IndexName": "string",
-	// "IndexSizeBytes": number, "ItemCount": number, "KeySchema": [ {
-	// "AttributeName": "string", "KeyType": "string" } ], "Projection": {
-	// "NonKeyAttributes": [ "string" ], "ProjectionType": "string" } }'
-	AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes")
-
-	// AWSDynamoDBProjectionKey is the attribute Key conforming to the
-	// "aws.dynamodb.projection" semantic conventions. It represents the value
-	// of the `ProjectionExpression` request parameter.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Title', 'Title, Price, Color', 'Title, Description,
-	// RelatedItems, ProductReviews'
-	AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection")
-
-	// AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to
-	// the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It
-	// represents the value of the `ProvisionedThroughput.ReadCapacityUnits`
-	// request parameter.
-	//
-	// Type: double
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1.0, 2.0
-	AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity")
-
-	// AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming
-	// to the "aws.dynamodb.provisioned_write_capacity" semantic conventions.
-	// It represents the value of the
-	// `ProvisionedThroughput.WriteCapacityUnits` request parameter.
-	//
-	// Type: double
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1.0, 2.0
-	AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity")
-
-	// AWSDynamoDBScanForwardKey is the attribute Key conforming to the
-	// "aws.dynamodb.scan_forward" semantic conventions. It represents the
-	// value of the `ScanIndexForward` request parameter.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward")
-
-	// AWSDynamoDBScannedCountKey is the attribute Key conforming to the
-	// "aws.dynamodb.scanned_count" semantic conventions. It represents the
-	// value of the `ScannedCount` response parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 50
-	AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count")
-
-	// AWSDynamoDBSegmentKey is the attribute Key conforming to the
-	// "aws.dynamodb.segment" semantic conventions. It represents the value of
-	// the `Segment` request parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 10
-	AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment")
-
-	// AWSDynamoDBSelectKey is the attribute Key conforming to the
-	// "aws.dynamodb.select" semantic conventions. It represents the value of
-	// the `Select` request parameter.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ALL_ATTRIBUTES', 'COUNT'
-	AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select")
-
-	// AWSDynamoDBTableCountKey is the attribute Key conforming to the
-	// "aws.dynamodb.table_count" semantic conventions. It represents the
-	// number of items in the `TableNames` response parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 20
-	AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count")
-
-	// AWSDynamoDBTableNamesKey is the attribute Key conforming to the
-	// "aws.dynamodb.table_names" semantic conventions. It represents the keys
-	// in the `RequestItems` object field.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Users', 'Cats'
-	AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names")
-
-	// AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the
-	// "aws.dynamodb.total_segments" semantic conventions. It represents the
-	// value of the `TotalSegments` request parameter.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 100
-	AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments")
-)
-
-// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming
-// to the "aws.dynamodb.attribute_definitions" semantic conventions. It
-// represents the JSON-serialized value of each item in the
-// `AttributeDefinitions` request field.
-func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue {
-	return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val)
-}
-
-// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to
-// the "aws.dynamodb.attributes_to_get" semantic conventions. It represents the
-// value of the `AttributesToGet` request parameter.
-func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue {
-	return AWSDynamoDBAttributesToGetKey.StringSlice(val)
-}
-
-// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the
-// "aws.dynamodb.consistent_read" semantic conventions. It represents the value
-// of the `ConsistentRead` request parameter.
-func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue {
-	return AWSDynamoDBConsistentReadKey.Bool(val)
-}
-
-// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to
-// the "aws.dynamodb.consumed_capacity" semantic conventions. It represents the
-// JSON-serialized value of each item in the `ConsumedCapacity` response field.
-func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue {
-	return AWSDynamoDBConsumedCapacityKey.StringSlice(val)
-}
-
-// AWSDynamoDBCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.count" semantic conventions. It represents the value of the
-// `Count` response parameter.
-func AWSDynamoDBCount(val int) attribute.KeyValue {
-	return AWSDynamoDBCountKey.Int(val)
-}
-
-// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming
-// to the "aws.dynamodb.exclusive_start_table" semantic conventions. It
-// represents the value of the `ExclusiveStartTableName` request parameter.
-func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue {
-	return AWSDynamoDBExclusiveStartTableKey.String(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue
-// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic
-// conventions. It represents the JSON-serialized value of each item in the
-// `GlobalSecondaryIndexUpdates` request field.
-func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue {
-	return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val)
-}
-
-// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue
-// conforming to the "aws.dynamodb.global_secondary_indexes" semantic
-// conventions. It represents the JSON-serialized value of each item of the
-// `GlobalSecondaryIndexes` request field
-func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue {
-	return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the
-// "aws.dynamodb.index_name" semantic conventions. It represents the value of
-// the `IndexName` request parameter.
-func AWSDynamoDBIndexName(val string) attribute.KeyValue {
-	return AWSDynamoDBIndexNameKey.String(val)
-}
-
-// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming
-// to the "aws.dynamodb.item_collection_metrics" semantic conventions. It
-// represents the JSON-serialized value of the `ItemCollectionMetrics` response
-// field.
-func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue {
-	return AWSDynamoDBItemCollectionMetricsKey.String(val)
-}
-
-// AWSDynamoDBLimit returns an attribute KeyValue conforming to the
-// "aws.dynamodb.limit" semantic conventions. It represents the value of the
-// `Limit` request parameter.
-func AWSDynamoDBLimit(val int) attribute.KeyValue {
-	return AWSDynamoDBLimitKey.Int(val)
-}
-
-// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming
-// to the "aws.dynamodb.local_secondary_indexes" semantic conventions. It
-// represents the JSON-serialized value of each item of the
-// `LocalSecondaryIndexes` request field.
-func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue {
-	return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val)
-}
-
-// AWSDynamoDBProjection returns an attribute KeyValue conforming to the
-// "aws.dynamodb.projection" semantic conventions. It represents the value of
-// the `ProjectionExpression` request parameter.
-func AWSDynamoDBProjection(val string) attribute.KeyValue {
-	return AWSDynamoDBProjectionKey.String(val)
-}
-
-// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue
-// conforming to the "aws.dynamodb.provisioned_read_capacity" semantic
-// conventions. It represents the value of the
-// `ProvisionedThroughput.ReadCapacityUnits` request parameter.
-func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue {
-	return AWSDynamoDBProvisionedReadCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue
-// conforming to the "aws.dynamodb.provisioned_write_capacity" semantic
-// conventions. It represents the value of the
-// `ProvisionedThroughput.WriteCapacityUnits` request parameter.
-func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue {
-	return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val)
-}
-
-// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of
-// the `ScanIndexForward` request parameter.
-func AWSDynamoDBScanForward(val bool) attribute.KeyValue {
-	return AWSDynamoDBScanForwardKey.Bool(val)
-}
-
-// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.scanned_count" semantic conventions. It represents the value
-// of the `ScannedCount` response parameter.
-func AWSDynamoDBScannedCount(val int) attribute.KeyValue {
-	return AWSDynamoDBScannedCountKey.Int(val)
-}
-
-// AWSDynamoDBSegment returns an attribute KeyValue conforming to the
-// "aws.dynamodb.segment" semantic conventions. It represents the value of the
-// `Segment` request parameter.
-func AWSDynamoDBSegment(val int) attribute.KeyValue {
-	return AWSDynamoDBSegmentKey.Int(val)
-}
-
-// AWSDynamoDBSelect returns an attribute KeyValue conforming to the
-// "aws.dynamodb.select" semantic conventions. It represents the value of the
-// `Select` request parameter.
-func AWSDynamoDBSelect(val string) attribute.KeyValue {
-	return AWSDynamoDBSelectKey.String(val)
-}
-
-// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_count" semantic conventions. It represents the number of
-// items in the `TableNames` response parameter.
-func AWSDynamoDBTableCount(val int) attribute.KeyValue {
-	return AWSDynamoDBTableCountKey.Int(val)
-}
-
-// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the
-// "aws.dynamodb.table_names" semantic conventions. It represents the keys in
-// the `RequestItems` object field.
-func AWSDynamoDBTableNames(val ...string) attribute.KeyValue {
-	return AWSDynamoDBTableNamesKey.StringSlice(val)
-}
-
-// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the
-// "aws.dynamodb.total_segments" semantic conventions. It represents the value
-// of the `TotalSegments` request parameter.
-func AWSDynamoDBTotalSegments(val int) attribute.KeyValue {
-	return AWSDynamoDBTotalSegmentsKey.Int(val)
-}
-
-// Attributes for AWS Elastic Container Service (ECS).
-const (
-	// AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id"
-	// semantic conventions. It represents the ID of a running ECS task. The ID
-	// MUST be extracted from `task.arn`.
-	//
-	// Type: string
-	// RequirementLevel: ConditionallyRequired (If and only if `task.arn` is
-	// populated.)
-	// Stability: experimental
-	// Examples: '10838bed-421f-43ef-870a-f43feacbbb5b',
-	// '23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd'
-	AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id")
-
-	// AWSECSClusterARNKey is the attribute Key conforming to the
-	// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an
-	// [ECS
-	// cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'
-	AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn")
-
-	// AWSECSContainerARNKey is the attribute Key conforming to the
-	// "aws.ecs.container.arn" semantic conventions. It represents the Amazon
-	// Resource Name (ARN) of an [ECS container
-	// instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9'
-	AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn")
-
-	// AWSECSLaunchtypeKey is the attribute Key conforming to the
-	// "aws.ecs.launchtype" semantic conventions. It represents the [launch
-	// type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html)
-	// for an ECS task.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype")
-
-	// AWSECSTaskARNKey is the attribute Key conforming to the
-	// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a
-	// running [ECS
-	// task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b',
-	// 'arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd'
-	AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn")
-
-	// AWSECSTaskFamilyKey is the attribute Key conforming to the
-	// "aws.ecs.task.family" semantic conventions. It represents the family
-	// name of the [ECS task
-	// definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
-	// used to create the ECS task.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry-family'
-	AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family")
-
-	// AWSECSTaskRevisionKey is the attribute Key conforming to the
-	// "aws.ecs.task.revision" semantic conventions. It represents the revision
-	// for the task definition used to create the ECS task.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '8', '26'
-	AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision")
-)
-
-var (
-	// ec2
-	AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2")
-	// fargate
-	AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate")
-)
-
-// AWSECSTaskID returns an attribute KeyValue conforming to the
-// "aws.ecs.task.id" semantic conventions. It represents the ID of a running
-// ECS task. The ID MUST be extracted from `task.arn`.
-func AWSECSTaskID(val string) attribute.KeyValue {
-	return AWSECSTaskIDKey.String(val)
-}
-
-// AWSECSClusterARN returns an attribute KeyValue conforming to the
-// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an [ECS
-// cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).
-func AWSECSClusterARN(val string) attribute.KeyValue {
-	return AWSECSClusterARNKey.String(val)
-}
-
-// AWSECSContainerARN returns an attribute KeyValue conforming to the
-// "aws.ecs.container.arn" semantic conventions. It represents the Amazon
-// Resource Name (ARN) of an [ECS container
-// instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
-func AWSECSContainerARN(val string) attribute.KeyValue {
-	return AWSECSContainerARNKey.String(val)
-}
-
-// AWSECSTaskARN returns an attribute KeyValue conforming to the
-// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running
-// [ECS
-// task](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids).
-func AWSECSTaskARN(val string) attribute.KeyValue {
-	return AWSECSTaskARNKey.String(val)
-}
-
-// AWSECSTaskFamily returns an attribute KeyValue conforming to the
-// "aws.ecs.task.family" semantic conventions. It represents the family name of
-// the [ECS task
-// definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)
-// used to create the ECS task.
-func AWSECSTaskFamily(val string) attribute.KeyValue {
-	return AWSECSTaskFamilyKey.String(val)
-}
-
-// AWSECSTaskRevision returns an attribute KeyValue conforming to the
-// "aws.ecs.task.revision" semantic conventions. It represents the revision for
-// the task definition used to create the ECS task.
-func AWSECSTaskRevision(val string) attribute.KeyValue {
-	return AWSECSTaskRevisionKey.String(val)
-}
-
-// Attributes for AWS Elastic Kubernetes Service (EKS).
-const (
-	// AWSEKSClusterARNKey is the attribute Key conforming to the
-	// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an
-	// EKS cluster.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'
-	AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn")
-)
-
-// AWSEKSClusterARN returns an attribute KeyValue conforming to the
-// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS
-// cluster.
-func AWSEKSClusterARN(val string) attribute.KeyValue {
-	return AWSEKSClusterARNKey.String(val)
-}
-
-// Attributes for AWS Logs.
-const (
-	// AWSLogGroupARNsKey is the attribute Key conforming to the
-	// "aws.log.group.arns" semantic conventions. It represents the Amazon
-	// Resource Name(s) (ARN) of the AWS log group(s).
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*'
-	// Note: See the [log group ARN format
-	// documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
-	AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns")
-
-	// AWSLogGroupNamesKey is the attribute Key conforming to the
-	// "aws.log.group.names" semantic conventions. It represents the name(s) of
-	// the AWS log group(s) an application is writing to.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/aws/lambda/my-function', 'opentelemetry-service'
-	// Note: Multiple log groups must be supported for cases like
-	// multi-container applications, where a single application has sidecar
-	// containers, and each write to their own log group.
-	AWSLogGroupNamesKey = attribute.Key("aws.log.group.names")
-
-	// AWSLogStreamARNsKey is the attribute Key conforming to the
-	// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of
-	// the AWS log stream(s).
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'
-	// Note: See the [log stream ARN format
-	// documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
-	// One log group can contain several log streams, so these ARNs necessarily
-	// identify both a log group and a log stream.
-	AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns")
-
-	// AWSLogStreamNamesKey is the attribute Key conforming to the
-	// "aws.log.stream.names" semantic conventions. It represents the name(s)
-	// of the AWS log stream(s) an application is writing to.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'
-	AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names")
-)
-
-// AWSLogGroupARNs returns an attribute KeyValue conforming to the
-// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource
-// Name(s) (ARN) of the AWS log group(s).
-func AWSLogGroupARNs(val ...string) attribute.KeyValue {
-	return AWSLogGroupARNsKey.StringSlice(val)
-}
-
-// AWSLogGroupNames returns an attribute KeyValue conforming to the
-// "aws.log.group.names" semantic conventions. It represents the name(s) of the
-// AWS log group(s) an application is writing to.
-func AWSLogGroupNames(val ...string) attribute.KeyValue {
-	return AWSLogGroupNamesKey.StringSlice(val)
-}
-
-// AWSLogStreamARNs returns an attribute KeyValue conforming to the
-// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the
-// AWS log stream(s).
-func AWSLogStreamARNs(val ...string) attribute.KeyValue {
-	return AWSLogStreamARNsKey.StringSlice(val)
-}
-
-// AWSLogStreamNames returns an attribute KeyValue conforming to the
-// "aws.log.stream.names" semantic conventions. It represents the name(s) of
-// the AWS log stream(s) an application is writing to.
-func AWSLogStreamNames(val ...string) attribute.KeyValue {
-	return AWSLogStreamNamesKey.StringSlice(val)
-}
-
-// Attributes for AWS Lambda.
-const (
-	// AWSLambdaInvokedARNKey is the attribute Key conforming to the
-	// "aws.lambda.invoked_arn" semantic conventions. It represents the full
-	// invoked ARN as provided on the `Context` passed to the function
-	// (`Lambda-Runtime-Invoked-Function-ARN` header on the
-	// `/runtime/invocation/next` applicable).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'arn:aws:lambda:us-east-1:123456:function:myfunction:myalias'
-	// Note: This may be different from `cloud.resource_id` if an alias is
-	// involved.
-	AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn")
-)
-
-// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the
-// "aws.lambda.invoked_arn" semantic conventions. It represents the full
-// invoked ARN as provided on the `Context` passed to the function
-// (`Lambda-Runtime-Invoked-Function-ARN` header on the
-// `/runtime/invocation/next` applicable).
-func AWSLambdaInvokedARN(val string) attribute.KeyValue {
-	return AWSLambdaInvokedARNKey.String(val)
-}
-
-// Attributes for AWS S3.
-const (
-	// AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket"
-	// semantic conventions. It represents the S3 bucket name the request
-	// refers to. Corresponds to the `--bucket` parameter of the [S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
-	// operations.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'some-bucket-name'
-	// Note: The `bucket` attribute is applicable to all S3 operations that
-	// reference a bucket, i.e. that require the bucket name as a mandatory
-	// parameter.
-	// This applies to almost all S3 operations except `list-buckets`.
-	AWSS3BucketKey = attribute.Key("aws.s3.bucket")
-
-	// AWSS3CopySourceKey is the attribute Key conforming to the
-	// "aws.s3.copy_source" semantic conventions. It represents the source
-	// object (in the form `bucket`/`key`) for the copy operation.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'someFile.yml'
-	// Note: The `copy_source` attribute applies to S3 copy operations and
-	// corresponds to the `--copy-source` parameter
-	// of the [copy-object operation within the S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html).
-	// This applies in particular to the following operations:
-	//
-	// -
-	// [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)
-	// -
-	// [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)
-	AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source")
-
-	// AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete"
-	// semantic conventions. It represents the delete request container that
-	// specifies the objects to be deleted.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'Objects=[{Key=string,VersionID=string},{Key=string,VersionID=string}],Quiet=boolean'
-	// Note: The `delete` attribute is only applicable to the
-	// [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)
-	// operation.
-	// The `delete` attribute corresponds to the `--delete` parameter of the
-	// [delete-objects operation within the S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html).
-	AWSS3DeleteKey = attribute.Key("aws.s3.delete")
-
-	// AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic
-	// conventions. It represents the S3 object key the request refers to.
-	// Corresponds to the `--key` parameter of the [S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
-	// operations.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'someFile.yml'
-	// Note: The `key` attribute is applicable to all object-related S3
-	// operations, i.e. that require the object key as a mandatory parameter.
-	// This applies in particular to the following operations:
-	//
-	// -
-	// [copy-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)
-	// -
-	// [delete-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)
-	// -
-	// [get-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html)
-	// -
-	// [head-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html)
-	// -
-	// [put-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)
-	// -
-	// [restore-object](https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html)
-	// -
-	// [select-object-content](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)
-	// -
-	// [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)
-	// -
-	// [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)
-	// -
-	// [create-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html)
-	// -
-	// [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)
-	// -
-	// [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)
-	// -
-	// [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)
-	AWSS3KeyKey = attribute.Key("aws.s3.key")
-
-	// AWSS3PartNumberKey is the attribute Key conforming to the
-	// "aws.s3.part_number" semantic conventions. It represents the part number
-	// of the part being uploaded in a multipart-upload operation. This is a
-	// positive integer between 1 and 10,000.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3456
-	// Note: The `part_number` attribute is only applicable to the
-	// [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)
-	// and
-	// [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)
-	// operations.
-	// The `part_number` attribute corresponds to the `--part-number` parameter
-	// of the
-	// [upload-part operation within the S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html).
-	AWSS3PartNumberKey = attribute.Key("aws.s3.part_number")
-
-	// AWSS3UploadIDKey is the attribute Key conforming to the
-	// "aws.s3.upload_id" semantic conventions. It represents the upload ID
-	// that identifies the multipart upload.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ'
-	// Note: The `upload_id` attribute applies to S3 multipart-upload
-	// operations and corresponds to the `--upload-id` parameter
-	// of the [S3
-	// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
-	// multipart operations.
-	// This applies in particular to the following operations:
-	//
-	// -
-	// [abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html)
-	// -
-	// [complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html)
-	// -
-	// [list-parts](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html)
-	// -
-	// [upload-part](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html)
-	// -
-	// [upload-part-copy](https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html)
-	AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id")
-)
-
-// AWSS3Bucket returns an attribute KeyValue conforming to the
-// "aws.s3.bucket" semantic conventions. It represents the S3 bucket name the
-// request refers to. Corresponds to the `--bucket` parameter of the [S3
-// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
-// operations.
-func AWSS3Bucket(val string) attribute.KeyValue {
-	return AWSS3BucketKey.String(val)
-}
-
-// AWSS3CopySource returns an attribute KeyValue conforming to the
-// "aws.s3.copy_source" semantic conventions. It represents the source object
-// (in the form `bucket`/`key`) for the copy operation.
-func AWSS3CopySource(val string) attribute.KeyValue {
-	return AWSS3CopySourceKey.String(val)
-}
-
-// AWSS3Delete returns an attribute KeyValue conforming to the
-// "aws.s3.delete" semantic conventions. It represents the delete request
-// container that specifies the objects to be deleted.
-func AWSS3Delete(val string) attribute.KeyValue {
-	return AWSS3DeleteKey.String(val)
-}
-
-// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key"
-// semantic conventions. It represents the S3 object key the request refers to.
-// Corresponds to the `--key` parameter of the [S3
-// API](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
-// operations.
-func AWSS3Key(val string) attribute.KeyValue {
-	return AWSS3KeyKey.String(val)
-}
-
-// AWSS3PartNumber returns an attribute KeyValue conforming to the
-// "aws.s3.part_number" semantic conventions. It represents the part number of
-// the part being uploaded in a multipart-upload operation. This is a positive
-// integer between 1 and 10,000.
-func AWSS3PartNumber(val int) attribute.KeyValue {
-	return AWSS3PartNumberKey.Int(val)
-}
-
-// AWSS3UploadID returns an attribute KeyValue conforming to the
-// "aws.s3.upload_id" semantic conventions. It represents the upload ID that
-// identifies the multipart upload.
-func AWSS3UploadID(val string) attribute.KeyValue {
-	return AWSS3UploadIDKey.String(val)
-}
-
-// The web browser attributes
-const (
-	// BrowserBrandsKey is the attribute Key conforming to the "browser.brands"
-	// semantic conventions. It represents the array of brand name and version
-	// separated by a space
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: ' Not A;Brand 99', 'Chromium 99', 'Chrome 99'
-	// Note: This value is intended to be taken from the [UA client hints
-	// API](https://wicg.github.io/ua-client-hints/#interface)
-	// (`navigator.userAgentData.brands`).
-	BrowserBrandsKey = attribute.Key("browser.brands")
-
-	// BrowserLanguageKey is the attribute Key conforming to the
-	// "browser.language" semantic conventions. It represents the preferred
-	// language of the user using the browser
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'en', 'en-US', 'fr', 'fr-FR'
-	// Note: This value is intended to be taken from the Navigator API
-	// `navigator.language`.
-	BrowserLanguageKey = attribute.Key("browser.language")
-
-	// BrowserMobileKey is the attribute Key conforming to the "browser.mobile"
-	// semantic conventions. It represents a boolean that is true if the
-	// browser is running on a mobile device
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: This value is intended to be taken from the [UA client hints
-	// API](https://wicg.github.io/ua-client-hints/#interface)
-	// (`navigator.userAgentData.mobile`). If unavailable, this attribute
-	// SHOULD be left unset.
-	BrowserMobileKey = attribute.Key("browser.mobile")
-
-	// BrowserPlatformKey is the attribute Key conforming to the
-	// "browser.platform" semantic conventions. It represents the platform on
-	// which the browser is running
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Windows', 'macOS', 'Android'
-	// Note: This value is intended to be taken from the [UA client hints
-	// API](https://wicg.github.io/ua-client-hints/#interface)
-	// (`navigator.userAgentData.platform`). If unavailable, the legacy
-	// `navigator.platform` API SHOULD NOT be used instead and this attribute
-	// SHOULD be left unset in order for the values to be consistent.
-	// The list of possible values is defined in the [W3C User-Agent Client
-	// Hints
-	// specification](https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform).
-	// Note that some (but not all) of these values can overlap with values in
-	// the [`os.type` and `os.name` attributes](./os.md). However, for
-	// consistency, the values in the `browser.platform` attribute should
-	// capture the exact value that the user agent provides.
-	BrowserPlatformKey = attribute.Key("browser.platform")
-)
-
-// BrowserBrands returns an attribute KeyValue conforming to the
-// "browser.brands" semantic conventions. It represents the array of brand name
-// and version separated by a space
-func BrowserBrands(val ...string) attribute.KeyValue {
-	return BrowserBrandsKey.StringSlice(val)
-}
-
-// BrowserLanguage returns an attribute KeyValue conforming to the
-// "browser.language" semantic conventions. It represents the preferred
-// language of the user using the browser
-func BrowserLanguage(val string) attribute.KeyValue {
-	return BrowserLanguageKey.String(val)
-}
-
-// BrowserMobile returns an attribute KeyValue conforming to the
-// "browser.mobile" semantic conventions. It represents a boolean that is true
-// if the browser is running on a mobile device
-func BrowserMobile(val bool) attribute.KeyValue {
-	return BrowserMobileKey.Bool(val)
-}
-
-// BrowserPlatform returns an attribute KeyValue conforming to the
-// "browser.platform" semantic conventions. It represents the platform on which
-// the browser is running
-func BrowserPlatform(val string) attribute.KeyValue {
-	return BrowserPlatformKey.String(val)
-}
-
-// These attributes may be used to describe the client in a connection-based
-// network interaction where there is one side that initiates the connection
-// (the client is the side that initiates the connection). This covers all TCP
-// network interactions since TCP is connection-based and one side initiates
-// the connection (an exception is made for peer-to-peer communication over TCP
-// where the "user-facing" surface of the protocol / API doesn't expose a clear
-// notion of client and server). This also covers UDP network interactions
-// where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS.
-const (
-	// ClientAddressKey is the attribute Key conforming to the "client.address"
-	// semantic conventions. It represents the client address - domain name if
-	// available without reverse DNS lookup; otherwise, IP address or Unix
-	// domain socket name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'client.example.com', '10.1.2.80', '/tmp/my.sock'
-	// Note: When observed from the server side, and when communicating through
-	// an intermediary, `client.address` SHOULD represent the client address
-	// behind any intermediaries,  for example proxies, if it's available.
-	ClientAddressKey = attribute.Key("client.address")
-
-	// ClientPortKey is the attribute Key conforming to the "client.port"
-	// semantic conventions. It represents the client port number.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 65123
-	// Note: When observed from the server side, and when communicating through
-	// an intermediary, `client.port` SHOULD represent the client port behind
-	// any intermediaries,  for example proxies, if it's available.
-	ClientPortKey = attribute.Key("client.port")
-)
-
-// ClientAddress returns an attribute KeyValue conforming to the
-// "client.address" semantic conventions. It represents the client address -
-// domain name if available without reverse DNS lookup; otherwise, IP address
-// or Unix domain socket name.
-func ClientAddress(val string) attribute.KeyValue {
-	return ClientAddressKey.String(val)
-}
-
-// ClientPort returns an attribute KeyValue conforming to the "client.port"
-// semantic conventions. It represents the client port number.
-func ClientPort(val int) attribute.KeyValue {
-	return ClientPortKey.Int(val)
-}
-
-// A cloud environment (e.g. GCP, Azure, AWS).
-const (
-	// CloudAccountIDKey is the attribute Key conforming to the
-	// "cloud.account.id" semantic conventions. It represents the cloud account
-	// ID the resource is assigned to.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '111111111111', 'opentelemetry'
-	CloudAccountIDKey = attribute.Key("cloud.account.id")
-
-	// CloudAvailabilityZoneKey is the attribute Key conforming to the
-	// "cloud.availability_zone" semantic conventions. It represents the cloud
-	// regions often have multiple, isolated locations known as zones to
-	// increase availability. Availability zone represents the zone where the
-	// resource is running.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'us-east-1c'
-	// Note: Availability zones are called "zones" on Alibaba Cloud and Google
-	// Cloud.
-	CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone")
-
-	// CloudPlatformKey is the attribute Key conforming to the "cloud.platform"
-	// semantic conventions. It represents the cloud platform in use.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: The prefix of the service SHOULD match the one specified in
-	// `cloud.provider`.
-	CloudPlatformKey = attribute.Key("cloud.platform")
-
-	// CloudProviderKey is the attribute Key conforming to the "cloud.provider"
-	// semantic conventions. It represents the name of the cloud provider.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	CloudProviderKey = attribute.Key("cloud.provider")
-
-	// CloudRegionKey is the attribute Key conforming to the "cloud.region"
-	// semantic conventions. It represents the geographical region the resource
-	// is running.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'us-central1', 'us-east-1'
-	// Note: Refer to your provider's docs to see the available regions, for
-	// example [Alibaba Cloud
-	// regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS
-	// regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/),
-	// [Azure
-	// regions](https://azure.microsoft.com/global-infrastructure/geographies/),
-	// [Google Cloud regions](https://cloud.google.com/about/locations), or
-	// [Tencent Cloud
-	// regions](https://www.tencentcloud.com/document/product/213/6091).
-	CloudRegionKey = attribute.Key("cloud.region")
-
-	// CloudResourceIDKey is the attribute Key conforming to the
-	// "cloud.resource_id" semantic conventions. It represents the cloud
-	// provider-specific native identifier of the monitored cloud resource
-	// (e.g. an
-	// [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
-	// on AWS, a [fully qualified resource
-	// ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id)
-	// on Azure, a [full resource
-	// name](https://cloud.google.com/apis/design/resource_names#full_resource_name)
-	// on GCP)
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function',
-	// '//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID',
-	// '/subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>'
-	// Note: On some cloud providers, it may not be possible to determine the
-	// full ID at startup,
-	// so it may be necessary to set `cloud.resource_id` as a span attribute
-	// instead.
-	//
-	// The exact value to use for `cloud.resource_id` depends on the cloud
-	// provider.
-	// The following well-known definitions MUST be used if you set this
-	// attribute and they apply:
-	//
-	// * **AWS Lambda:** The function
-	// [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
-	//   Take care not to use the "invoked ARN" directly but replace any
-	//   [alias
-	// suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html)
-	//   with the resolved function version, as the same runtime instance may
-	// be invokable with
-	//   multiple different aliases.
-	// * **GCP:** The [URI of the
-	// resource](https://cloud.google.com/iam/docs/full-resource-names)
-	// * **Azure:** The [Fully Qualified Resource
-	// ID](https://docs.microsoft.com/rest/api/resources/resources/get-by-id)
-	// of the invoked function,
-	//   *not* the function app, having the form
-	// `/subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>`.
-	//   This means that a span attribute MUST be used, as an Azure function
-	// app can host multiple functions that would usually share
-	//   a TracerProvider.
-	CloudResourceIDKey = attribute.Key("cloud.resource_id")
-)
-
-var (
-	// Alibaba Cloud Elastic Compute Service
-	CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs")
-	// Alibaba Cloud Function Compute
-	CloudPlatformAlibabaCloudFc = CloudPlatformKey.String("alibaba_cloud_fc")
-	// Red Hat OpenShift on Alibaba Cloud
-	CloudPlatformAlibabaCloudOpenshift = CloudPlatformKey.String("alibaba_cloud_openshift")
-	// AWS Elastic Compute Cloud
-	CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2")
-	// AWS Elastic Container Service
-	CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs")
-	// AWS Elastic Kubernetes Service
-	CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks")
-	// AWS Lambda
-	CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda")
-	// AWS Elastic Beanstalk
-	CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk")
-	// AWS App Runner
-	CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner")
-	// Red Hat OpenShift on AWS (ROSA)
-	CloudPlatformAWSOpenshift = CloudPlatformKey.String("aws_openshift")
-	// Azure Virtual Machines
-	CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm")
-	// Azure Container Apps
-	CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure_container_apps")
-	// Azure Container Instances
-	CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances")
-	// Azure Kubernetes Service
-	CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks")
-	// Azure Functions
-	CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions")
-	// Azure App Service
-	CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service")
-	// Azure Red Hat OpenShift
-	CloudPlatformAzureOpenshift = CloudPlatformKey.String("azure_openshift")
-	// Google Bare Metal Solution (BMS)
-	CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution")
-	// Google Cloud Compute Engine (GCE)
-	CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine")
-	// Google Cloud Run
-	CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run")
-	// Google Cloud Kubernetes Engine (GKE)
-	CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine")
-	// Google Cloud Functions (GCF)
-	CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions")
-	// Google Cloud App Engine (GAE)
-	CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine")
-	// Red Hat OpenShift on Google Cloud
-	CloudPlatformGCPOpenshift = CloudPlatformKey.String("gcp_openshift")
-	// Red Hat OpenShift on IBM Cloud
-	CloudPlatformIbmCloudOpenshift = CloudPlatformKey.String("ibm_cloud_openshift")
-	// Tencent Cloud Cloud Virtual Machine (CVM)
-	CloudPlatformTencentCloudCvm = CloudPlatformKey.String("tencent_cloud_cvm")
-	// Tencent Cloud Elastic Kubernetes Service (EKS)
-	CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks")
-	// Tencent Cloud Serverless Cloud Function (SCF)
-	CloudPlatformTencentCloudScf = CloudPlatformKey.String("tencent_cloud_scf")
-)
-
-var (
-	// Alibaba Cloud
-	CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud")
-	// Amazon Web Services
-	CloudProviderAWS = CloudProviderKey.String("aws")
-	// Microsoft Azure
-	CloudProviderAzure = CloudProviderKey.String("azure")
-	// Google Cloud Platform
-	CloudProviderGCP = CloudProviderKey.String("gcp")
-	// Heroku Platform as a Service
-	CloudProviderHeroku = CloudProviderKey.String("heroku")
-	// IBM Cloud
-	CloudProviderIbmCloud = CloudProviderKey.String("ibm_cloud")
-	// Tencent Cloud
-	CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud")
-)
-
-// CloudAccountID returns an attribute KeyValue conforming to the
-// "cloud.account.id" semantic conventions. It represents the cloud account ID
-// the resource is assigned to.
-func CloudAccountID(val string) attribute.KeyValue {
-	return CloudAccountIDKey.String(val)
-}
-
-// CloudAvailabilityZone returns an attribute KeyValue conforming to the
-// "cloud.availability_zone" semantic conventions. It represents the cloud
-// regions often have multiple, isolated locations known as zones to increase
-// availability. Availability zone represents the zone where the resource is
-// running.
-func CloudAvailabilityZone(val string) attribute.KeyValue {
-	return CloudAvailabilityZoneKey.String(val)
-}
-
-// CloudRegion returns an attribute KeyValue conforming to the
-// "cloud.region" semantic conventions. It represents the geographical region
-// the resource is running.
-func CloudRegion(val string) attribute.KeyValue {
-	return CloudRegionKey.String(val)
-}
-
-// CloudResourceID returns an attribute KeyValue conforming to the
-// "cloud.resource_id" semantic conventions. It represents the cloud
-// provider-specific native identifier of the monitored cloud resource (e.g. an
-// [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
-// on AWS, a [fully qualified resource
-// ID](https://learn.microsoft.com/rest/api/resources/resources/get-by-id) on
-// Azure, a [full resource
-// name](https://cloud.google.com/apis/design/resource_names#full_resource_name)
-// on GCP)
-func CloudResourceID(val string) attribute.KeyValue {
-	return CloudResourceIDKey.String(val)
-}
-
-// Attributes for CloudEvents.
-const (
-	// CloudeventsEventIDKey is the attribute Key conforming to the
-	// "cloudevents.event_id" semantic conventions. It represents the
-	// [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id)
-	// uniquely identifies the event.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '123e4567-e89b-12d3-a456-426614174000', '0001'
-	CloudeventsEventIDKey = attribute.Key("cloudevents.event_id")
-
-	// CloudeventsEventSourceKey is the attribute Key conforming to the
-	// "cloudevents.event_source" semantic conventions. It represents the
-	// [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1)
-	// identifies the context in which an event happened.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'https://github.com/cloudevents',
-	// '/cloudevents/spec/pull/123', 'my-service'
-	CloudeventsEventSourceKey = attribute.Key("cloudevents.event_source")
-
-	// CloudeventsEventSpecVersionKey is the attribute Key conforming to the
-	// "cloudevents.event_spec_version" semantic conventions. It represents the
-	// [version of the CloudEvents
-	// specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion)
-	// which the event uses.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1.0'
-	CloudeventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version")
-
-	// CloudeventsEventSubjectKey is the attribute Key conforming to the
-	// "cloudevents.event_subject" semantic conventions. It represents the
-	// [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject)
-	// of the event in the context of the event producer (identified by
-	// source).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'mynewfile.jpg'
-	CloudeventsEventSubjectKey = attribute.Key("cloudevents.event_subject")
-
-	// CloudeventsEventTypeKey is the attribute Key conforming to the
-	// "cloudevents.event_type" semantic conventions. It represents the
-	// [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type)
-	// contains a value describing the type of event related to the originating
-	// occurrence.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'com.github.pull_request.opened',
-	// 'com.example.object.deleted.v2'
-	CloudeventsEventTypeKey = attribute.Key("cloudevents.event_type")
-)
-
-// CloudeventsEventID returns an attribute KeyValue conforming to the
-// "cloudevents.event_id" semantic conventions. It represents the
-// [event_id](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id)
-// uniquely identifies the event.
-func CloudeventsEventID(val string) attribute.KeyValue {
-	return CloudeventsEventIDKey.String(val)
-}
-
-// CloudeventsEventSource returns an attribute KeyValue conforming to the
-// "cloudevents.event_source" semantic conventions. It represents the
-// [source](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1)
-// identifies the context in which an event happened.
-func CloudeventsEventSource(val string) attribute.KeyValue {
-	return CloudeventsEventSourceKey.String(val)
-}
-
-// CloudeventsEventSpecVersion returns an attribute KeyValue conforming to
-// the "cloudevents.event_spec_version" semantic conventions. It represents the
-// [version of the CloudEvents
-// specification](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion)
-// which the event uses.
-func CloudeventsEventSpecVersion(val string) attribute.KeyValue {
-	return CloudeventsEventSpecVersionKey.String(val)
-}
-
-// CloudeventsEventSubject returns an attribute KeyValue conforming to the
-// "cloudevents.event_subject" semantic conventions. It represents the
-// [subject](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject)
-// of the event in the context of the event producer (identified by source).
-func CloudeventsEventSubject(val string) attribute.KeyValue {
-	return CloudeventsEventSubjectKey.String(val)
-}
-
-// CloudeventsEventType returns an attribute KeyValue conforming to the
-// "cloudevents.event_type" semantic conventions. It represents the
-// [event_type](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type)
-// contains a value describing the type of event related to the originating
-// occurrence.
-func CloudeventsEventType(val string) attribute.KeyValue {
-	return CloudeventsEventTypeKey.String(val)
-}
-
-// These attributes allow to report this unit of code and therefore to provide
-// more context about the span.
-const (
-	// CodeColumnKey is the attribute Key conforming to the "code.column"
-	// semantic conventions. It represents the column number in `code.filepath`
-	// best representing the operation. It SHOULD point within the code unit
-	// named in `code.function`.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 16
-	CodeColumnKey = attribute.Key("code.column")
-
-	// CodeFilepathKey is the attribute Key conforming to the "code.filepath"
-	// semantic conventions. It represents the source code file name that
-	// identifies the code unit as uniquely as possible (preferably an absolute
-	// file path).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/usr/local/MyApplication/content_root/app/index.php'
-	CodeFilepathKey = attribute.Key("code.filepath")
-
-	// CodeFunctionKey is the attribute Key conforming to the "code.function"
-	// semantic conventions. It represents the method or function name, or
-	// equivalent (usually rightmost part of the code unit's name).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'serveRequest'
-	CodeFunctionKey = attribute.Key("code.function")
-
-	// CodeLineNumberKey is the attribute Key conforming to the "code.lineno"
-	// semantic conventions. It represents the line number in `code.filepath`
-	// best representing the operation. It SHOULD point within the code unit
-	// named in `code.function`.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 42
-	CodeLineNumberKey = attribute.Key("code.lineno")
-
-	// CodeNamespaceKey is the attribute Key conforming to the "code.namespace"
-	// semantic conventions. It represents the "namespace" within which
-	// `code.function` is defined. Usually the qualified class or module name,
-	// such that `code.namespace` + some separator + `code.function` form a
-	// unique identifier for the code unit.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'com.example.MyHTTPService'
-	CodeNamespaceKey = attribute.Key("code.namespace")
-
-	// CodeStacktraceKey is the attribute Key conforming to the
-	// "code.stacktrace" semantic conventions. It represents a stacktrace as a
-	// string in the natural representation for the language runtime. The
-	// representation is to be determined and documented by each language SIG.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'at
-	// com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at '
-	//  'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at '
-	//  'com.example.GenerateTrace.main(GenerateTrace.java:5)'
-	CodeStacktraceKey = attribute.Key("code.stacktrace")
-)
-
-// CodeColumn returns an attribute KeyValue conforming to the "code.column"
-// semantic conventions. It represents the column number in `code.filepath`
-// best representing the operation. It SHOULD point within the code unit named
-// in `code.function`.
-func CodeColumn(val int) attribute.KeyValue {
-	return CodeColumnKey.Int(val)
-}
-
-// CodeFilepath returns an attribute KeyValue conforming to the
-// "code.filepath" semantic conventions. It represents the source code file
-// name that identifies the code unit as uniquely as possible (preferably an
-// absolute file path).
-func CodeFilepath(val string) attribute.KeyValue {
-	return CodeFilepathKey.String(val)
-}
-
-// CodeFunction returns an attribute KeyValue conforming to the
-// "code.function" semantic conventions. It represents the method or function
-// name, or equivalent (usually rightmost part of the code unit's name).
-func CodeFunction(val string) attribute.KeyValue {
-	return CodeFunctionKey.String(val)
-}
-
-// CodeLineNumber returns an attribute KeyValue conforming to the "code.lineno"
-// semantic conventions. It represents the line number in `code.filepath` best
-// representing the operation. It SHOULD point within the code unit named in
-// `code.function`.
-func CodeLineNumber(val int) attribute.KeyValue {
-	return CodeLineNumberKey.Int(val)
-}
-
-// CodeNamespace returns an attribute KeyValue conforming to the
-// "code.namespace" semantic conventions. It represents the "namespace" within
-// which `code.function` is defined. Usually the qualified class or module
-// name, such that `code.namespace` + some separator + `code.function` form a
-// unique identifier for the code unit.
-func CodeNamespace(val string) attribute.KeyValue {
-	return CodeNamespaceKey.String(val)
-}
-
-// CodeStacktrace returns an attribute KeyValue conforming to the
-// "code.stacktrace" semantic conventions. It represents a stacktrace as a
-// string in the natural representation for the language runtime. The
-// representation is to be determined and documented by each language SIG.
-func CodeStacktrace(val string) attribute.KeyValue {
-	return CodeStacktraceKey.String(val)
-}
-
-// A container instance.
-const (
-	// ContainerCommandKey is the attribute Key conforming to the
-	// "container.command" semantic conventions. It represents the command used
-	// to run the container (i.e. the command name).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'otelcontribcol'
-	// Note: If using embedded credentials or sensitive data, it is recommended
-	// to remove them to prevent potential leakage.
-	ContainerCommandKey = attribute.Key("container.command")
-
-	// ContainerCommandArgsKey is the attribute Key conforming to the
-	// "container.command_args" semantic conventions. It represents the all the
-	// command arguments (including the command/executable itself) run by the
-	// container. [2]
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'otelcontribcol, --config, config.yaml'
-	ContainerCommandArgsKey = attribute.Key("container.command_args")
-
-	// ContainerCommandLineKey is the attribute Key conforming to the
-	// "container.command_line" semantic conventions. It represents the full
-	// command run by the container as a single string representing the full
-	// command. [2]
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'otelcontribcol --config config.yaml'
-	ContainerCommandLineKey = attribute.Key("container.command_line")
-
-	// ContainerCPUStateKey is the attribute Key conforming to the
-	// "container.cpu.state" semantic conventions. It represents the CPU state
-	// for this data point.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'user', 'kernel'
-	ContainerCPUStateKey = attribute.Key("container.cpu.state")
-
-	// ContainerIDKey is the attribute Key conforming to the "container.id"
-	// semantic conventions. It represents the container ID. Usually a UUID, as
-	// for example used to [identify Docker
-	// containers](https://docs.docker.com/engine/reference/run/#container-identification).
-	// The UUID might be abbreviated.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'a3bf90e006b2'
-	ContainerIDKey = attribute.Key("container.id")
-
-	// ContainerImageIDKey is the attribute Key conforming to the
-	// "container.image.id" semantic conventions. It represents the runtime
-	// specific image identifier. Usually a hash algorithm followed by a UUID.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f'
-	// Note: Docker defines a sha256 of the image id; `container.image.id`
-	// corresponds to the `Image` field from the Docker container inspect
-	// [API](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect)
-	// endpoint.
-	// K8S defines a link to the container registry repository with digest
-	// `"imageID": "registry.azurecr.io
-	// /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`.
-	// The ID is assigned by the container runtime and can vary in different
-	// environments. Consider using `oci.manifest.digest` if it is important to
-	// identify the same image in different environments/runtimes.
-	ContainerImageIDKey = attribute.Key("container.image.id")
-
-	// ContainerImageNameKey is the attribute Key conforming to the
-	// "container.image.name" semantic conventions. It represents the name of
-	// the image the container was built on.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'gcr.io/opentelemetry/operator'
-	ContainerImageNameKey = attribute.Key("container.image.name")
-
-	// ContainerImageRepoDigestsKey is the attribute Key conforming to the
-	// "container.image.repo_digests" semantic conventions. It represents the
-	// repo digests of the container image as provided by the container
-	// runtime.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb',
-	// 'internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578'
-	// Note:
-	// [Docker](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect)
-	// and
-	// [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238)
-	// report those under the `RepoDigests` field.
-	ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests")
-
-	// ContainerImageTagsKey is the attribute Key conforming to the
-	// "container.image.tags" semantic conventions. It represents the container
-	// image tags. An example can be found in [Docker Image
-	// Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect).
-	// Should be only the `<tag>` section of the full name for example from
-	// `registry.example.com/my-org/my-image:<tag>`.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'v1.27.1', '3.5.7-0'
-	ContainerImageTagsKey = attribute.Key("container.image.tags")
-
-	// ContainerNameKey is the attribute Key conforming to the "container.name"
-	// semantic conventions. It represents the container name used by container
-	// runtime.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry-autoconf'
-	ContainerNameKey = attribute.Key("container.name")
-
-	// ContainerRuntimeKey is the attribute Key conforming to the
-	// "container.runtime" semantic conventions. It represents the container
-	// runtime managing this container.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'docker', 'containerd', 'rkt'
-	ContainerRuntimeKey = attribute.Key("container.runtime")
-)
-
-var (
-	// When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows)
-	ContainerCPUStateUser = ContainerCPUStateKey.String("user")
-	// When CPU is used by the system (host OS)
-	ContainerCPUStateSystem = ContainerCPUStateKey.String("system")
-	// When tasks of the cgroup are in kernel mode (Linux). When all container processes are in kernel mode (Windows)
-	ContainerCPUStateKernel = ContainerCPUStateKey.String("kernel")
-)
-
-// ContainerCommand returns an attribute KeyValue conforming to the
-// "container.command" semantic conventions. It represents the command used to
-// run the container (i.e. the command name).
-func ContainerCommand(val string) attribute.KeyValue {
-	return ContainerCommandKey.String(val)
-}
-
-// ContainerCommandArgs returns an attribute KeyValue conforming to the
-// "container.command_args" semantic conventions. It represents the all the
-// command arguments (including the command/executable itself) run by the
-// container. [2]
-func ContainerCommandArgs(val ...string) attribute.KeyValue {
-	return ContainerCommandArgsKey.StringSlice(val)
-}
-
-// ContainerCommandLine returns an attribute KeyValue conforming to the
-// "container.command_line" semantic conventions. It represents the full
-// command run by the container as a single string representing the full
-// command. [2]
-func ContainerCommandLine(val string) attribute.KeyValue {
-	return ContainerCommandLineKey.String(val)
-}
-
-// ContainerID returns an attribute KeyValue conforming to the
-// "container.id" semantic conventions. It represents the container ID. Usually
-// a UUID, as for example used to [identify Docker
-// containers](https://docs.docker.com/engine/reference/run/#container-identification).
-// The UUID might be abbreviated.
-func ContainerID(val string) attribute.KeyValue {
-	return ContainerIDKey.String(val)
-}
-
-// ContainerImageID returns an attribute KeyValue conforming to the
-// "container.image.id" semantic conventions. It represents the runtime
-// specific image identifier. Usually a hash algorithm followed by a UUID.
-func ContainerImageID(val string) attribute.KeyValue {
-	return ContainerImageIDKey.String(val)
-}
-
-// ContainerImageName returns an attribute KeyValue conforming to the
-// "container.image.name" semantic conventions. It represents the name of the
-// image the container was built on.
-func ContainerImageName(val string) attribute.KeyValue {
-	return ContainerImageNameKey.String(val)
-}
-
-// ContainerImageRepoDigests returns an attribute KeyValue conforming to the
-// "container.image.repo_digests" semantic conventions. It represents the repo
-// digests of the container image as provided by the container runtime.
-func ContainerImageRepoDigests(val ...string) attribute.KeyValue {
-	return ContainerImageRepoDigestsKey.StringSlice(val)
-}
-
-// ContainerImageTags returns an attribute KeyValue conforming to the
-// "container.image.tags" semantic conventions. It represents the container
-// image tags. An example can be found in [Docker Image
-// Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect).
-// Should be only the `<tag>` section of the full name for example from
-// `registry.example.com/my-org/my-image:<tag>`.
-func ContainerImageTags(val ...string) attribute.KeyValue {
-	return ContainerImageTagsKey.StringSlice(val)
-}
-
-// ContainerName returns an attribute KeyValue conforming to the
-// "container.name" semantic conventions. It represents the container name used
-// by container runtime.
-func ContainerName(val string) attribute.KeyValue {
-	return ContainerNameKey.String(val)
-}
-
-// ContainerRuntime returns an attribute KeyValue conforming to the
-// "container.runtime" semantic conventions. It represents the container
-// runtime managing this container.
-func ContainerRuntime(val string) attribute.KeyValue {
-	return ContainerRuntimeKey.String(val)
-}
-
-// This group defines the attributes used to describe telemetry in the context
-// of databases.
-const (
-	// DBClientConnectionsPoolNameKey is the attribute Key conforming to the
-	// "db.client.connections.pool.name" semantic conventions. It represents
-	// the name of the connection pool; unique within the instrumented
-	// application. In case the connection pool implementation doesn't provide
-	// a name, instrumentation should use a combination of `server.address` and
-	// `server.port` attributes formatted as `server.address:server.port`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myDataSource'
-	DBClientConnectionsPoolNameKey = attribute.Key("db.client.connections.pool.name")
-
-	// DBClientConnectionsStateKey is the attribute Key conforming to the
-	// "db.client.connections.state" semantic conventions. It represents the
-	// state of a connection in the pool
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'idle'
-	DBClientConnectionsStateKey = attribute.Key("db.client.connections.state")
-
-	// DBCollectionNameKey is the attribute Key conforming to the
-	// "db.collection.name" semantic conventions. It represents the name of a
-	// collection (table, container) within the database.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'public.users', 'customers'
-	// Note: If the collection name is parsed from the query, it SHOULD match
-	// the value provided in the query and may be qualified with the schema and
-	// database name.
-	// It is RECOMMENDED to capture the value as provided by the application
-	// without attempting to do any case normalization.
-	DBCollectionNameKey = attribute.Key("db.collection.name")
-
-	// DBNamespaceKey is the attribute Key conforming to the "db.namespace"
-	// semantic conventions. It represents the name of the database, fully
-	// qualified within the server address and port.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'customers', 'test.users'
-	// Note: If a database system has multiple namespace components, they
-	// SHOULD be concatenated (potentially using database system specific
-	// conventions) from most general to most specific namespace component, and
-	// more specific namespaces SHOULD NOT be captured without the more general
-	// namespaces, to ensure that "startswith" queries for the more general
-	// namespaces will be valid.
-	// Semantic conventions for individual database systems SHOULD document
-	// what `db.namespace` means in the context of that system.
-	// It is RECOMMENDED to capture the value as provided by the application
-	// without attempting to do any case normalization.
-	DBNamespaceKey = attribute.Key("db.namespace")
-
-	// DBOperationNameKey is the attribute Key conforming to the
-	// "db.operation.name" semantic conventions. It represents the name of the
-	// operation or command being executed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'findAndModify', 'HMSET', 'SELECT'
-	// Note: It is RECOMMENDED to capture the value as provided by the
-	// application without attempting to do any case normalization.
-	DBOperationNameKey = attribute.Key("db.operation.name")
-
-	// DBQueryTextKey is the attribute Key conforming to the "db.query.text"
-	// semantic conventions. It represents the database query being executed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'SELECT * FROM wuser_table where username = ?', 'SET mykey
-	// "WuValue"'
-	DBQueryTextKey = attribute.Key("db.query.text")
-
-	// DBSystemKey is the attribute Key conforming to the "db.system" semantic
-	// conventions. It represents the database management system (DBMS) product
-	// as identified by the client instrumentation.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: The actual DBMS may differ from the one identified by the client.
-	// For example, when using PostgreSQL client libraries to connect to a
-	// CockroachDB, the `db.system` is set to `postgresql` based on the
-	// instrumentation's best knowledge.
-	DBSystemKey = attribute.Key("db.system")
-)
-
-var (
-	// idle
-	DBClientConnectionsStateIdle = DBClientConnectionsStateKey.String("idle")
-	// used
-	DBClientConnectionsStateUsed = DBClientConnectionsStateKey.String("used")
-)
-
-var (
-	// Some other SQL database. Fallback only. See notes
-	DBSystemOtherSQL = DBSystemKey.String("other_sql")
-	// Microsoft SQL Server
-	DBSystemMSSQL = DBSystemKey.String("mssql")
-	// Microsoft SQL Server Compact
-	DBSystemMssqlcompact = DBSystemKey.String("mssqlcompact")
-	// MySQL
-	DBSystemMySQL = DBSystemKey.String("mysql")
-	// Oracle Database
-	DBSystemOracle = DBSystemKey.String("oracle")
-	// IBM DB2
-	DBSystemDB2 = DBSystemKey.String("db2")
-	// PostgreSQL
-	DBSystemPostgreSQL = DBSystemKey.String("postgresql")
-	// Amazon Redshift
-	DBSystemRedshift = DBSystemKey.String("redshift")
-	// Apache Hive
-	DBSystemHive = DBSystemKey.String("hive")
-	// Cloudscape
-	DBSystemCloudscape = DBSystemKey.String("cloudscape")
-	// HyperSQL DataBase
-	DBSystemHSQLDB = DBSystemKey.String("hsqldb")
-	// Progress Database
-	DBSystemProgress = DBSystemKey.String("progress")
-	// SAP MaxDB
-	DBSystemMaxDB = DBSystemKey.String("maxdb")
-	// SAP HANA
-	DBSystemHanaDB = DBSystemKey.String("hanadb")
-	// Ingres
-	DBSystemIngres = DBSystemKey.String("ingres")
-	// FirstSQL
-	DBSystemFirstSQL = DBSystemKey.String("firstsql")
-	// EnterpriseDB
-	DBSystemEDB = DBSystemKey.String("edb")
-	// InterSystems Caché
-	DBSystemCache = DBSystemKey.String("cache")
-	// Adabas (Adaptable Database System)
-	DBSystemAdabas = DBSystemKey.String("adabas")
-	// Firebird
-	DBSystemFirebird = DBSystemKey.String("firebird")
-	// Apache Derby
-	DBSystemDerby = DBSystemKey.String("derby")
-	// FileMaker
-	DBSystemFilemaker = DBSystemKey.String("filemaker")
-	// Informix
-	DBSystemInformix = DBSystemKey.String("informix")
-	// InstantDB
-	DBSystemInstantDB = DBSystemKey.String("instantdb")
-	// InterBase
-	DBSystemInterbase = DBSystemKey.String("interbase")
-	// MariaDB
-	DBSystemMariaDB = DBSystemKey.String("mariadb")
-	// Netezza
-	DBSystemNetezza = DBSystemKey.String("netezza")
-	// Pervasive PSQL
-	DBSystemPervasive = DBSystemKey.String("pervasive")
-	// PointBase
-	DBSystemPointbase = DBSystemKey.String("pointbase")
-	// SQLite
-	DBSystemSqlite = DBSystemKey.String("sqlite")
-	// Sybase
-	DBSystemSybase = DBSystemKey.String("sybase")
-	// Teradata
-	DBSystemTeradata = DBSystemKey.String("teradata")
-	// Vertica
-	DBSystemVertica = DBSystemKey.String("vertica")
-	// H2
-	DBSystemH2 = DBSystemKey.String("h2")
-	// ColdFusion IMQ
-	DBSystemColdfusion = DBSystemKey.String("coldfusion")
-	// Apache Cassandra
-	DBSystemCassandra = DBSystemKey.String("cassandra")
-	// Apache HBase
-	DBSystemHBase = DBSystemKey.String("hbase")
-	// MongoDB
-	DBSystemMongoDB = DBSystemKey.String("mongodb")
-	// Redis
-	DBSystemRedis = DBSystemKey.String("redis")
-	// Couchbase
-	DBSystemCouchbase = DBSystemKey.String("couchbase")
-	// CouchDB
-	DBSystemCouchDB = DBSystemKey.String("couchdb")
-	// Microsoft Azure Cosmos DB
-	DBSystemCosmosDB = DBSystemKey.String("cosmosdb")
-	// Amazon DynamoDB
-	DBSystemDynamoDB = DBSystemKey.String("dynamodb")
-	// Neo4j
-	DBSystemNeo4j = DBSystemKey.String("neo4j")
-	// Apache Geode
-	DBSystemGeode = DBSystemKey.String("geode")
-	// Elasticsearch
-	DBSystemElasticsearch = DBSystemKey.String("elasticsearch")
-	// Memcached
-	DBSystemMemcached = DBSystemKey.String("memcached")
-	// CockroachDB
-	DBSystemCockroachdb = DBSystemKey.String("cockroachdb")
-	// OpenSearch
-	DBSystemOpensearch = DBSystemKey.String("opensearch")
-	// ClickHouse
-	DBSystemClickhouse = DBSystemKey.String("clickhouse")
-	// Cloud Spanner
-	DBSystemSpanner = DBSystemKey.String("spanner")
-	// Trino
-	DBSystemTrino = DBSystemKey.String("trino")
-)
-
-// DBClientConnectionsPoolName returns an attribute KeyValue conforming to
-// the "db.client.connections.pool.name" semantic conventions. It represents
-// the name of the connection pool; unique within the instrumented application.
-// In case the connection pool implementation doesn't provide a name,
-// instrumentation should use a combination of `server.address` and
-// `server.port` attributes formatted as `server.address:server.port`.
-func DBClientConnectionsPoolName(val string) attribute.KeyValue {
-	return DBClientConnectionsPoolNameKey.String(val)
-}
-
-// DBCollectionName returns an attribute KeyValue conforming to the
-// "db.collection.name" semantic conventions. It represents the name of a
-// collection (table, container) within the database.
-func DBCollectionName(val string) attribute.KeyValue {
-	return DBCollectionNameKey.String(val)
-}
-
-// DBNamespace returns an attribute KeyValue conforming to the
-// "db.namespace" semantic conventions. It represents the name of the database,
-// fully qualified within the server address and port.
-func DBNamespace(val string) attribute.KeyValue {
-	return DBNamespaceKey.String(val)
-}
-
-// DBOperationName returns an attribute KeyValue conforming to the
-// "db.operation.name" semantic conventions. It represents the name of the
-// operation or command being executed.
-func DBOperationName(val string) attribute.KeyValue {
-	return DBOperationNameKey.String(val)
-}
-
-// DBQueryText returns an attribute KeyValue conforming to the
-// "db.query.text" semantic conventions. It represents the database query being
-// executed.
-func DBQueryText(val string) attribute.KeyValue {
-	return DBQueryTextKey.String(val)
-}
-
-// This group defines attributes for Cassandra.
-const (
-	// DBCassandraConsistencyLevelKey is the attribute Key conforming to the
-	// "db.cassandra.consistency_level" semantic conventions. It represents the
-	// consistency level of the query. Based on consistency values from
-	// [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	DBCassandraConsistencyLevelKey = attribute.Key("db.cassandra.consistency_level")
-
-	// DBCassandraCoordinatorDCKey is the attribute Key conforming to the
-	// "db.cassandra.coordinator.dc" semantic conventions. It represents the
-	// data center of the coordinating node for a query.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'us-west-2'
-	DBCassandraCoordinatorDCKey = attribute.Key("db.cassandra.coordinator.dc")
-
-	// DBCassandraCoordinatorIDKey is the attribute Key conforming to the
-	// "db.cassandra.coordinator.id" semantic conventions. It represents the ID
-	// of the coordinating node for a query.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'be13faa2-8574-4d71-926d-27f16cf8a7af'
-	DBCassandraCoordinatorIDKey = attribute.Key("db.cassandra.coordinator.id")
-
-	// DBCassandraIdempotenceKey is the attribute Key conforming to the
-	// "db.cassandra.idempotence" semantic conventions. It represents the
-	// whether or not the query is idempotent.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	DBCassandraIdempotenceKey = attribute.Key("db.cassandra.idempotence")
-
-	// DBCassandraPageSizeKey is the attribute Key conforming to the
-	// "db.cassandra.page_size" semantic conventions. It represents the fetch
-	// size used for paging, i.e. how many rows will be returned at once.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 5000
-	DBCassandraPageSizeKey = attribute.Key("db.cassandra.page_size")
-
-	// DBCassandraSpeculativeExecutionCountKey is the attribute Key conforming
-	// to the "db.cassandra.speculative_execution_count" semantic conventions.
-	// It represents the number of times a query was speculatively executed.
-	// Not set or `0` if the query was not executed speculatively.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 0, 2
-	DBCassandraSpeculativeExecutionCountKey = attribute.Key("db.cassandra.speculative_execution_count")
-)
-
-var (
-	// all
-	DBCassandraConsistencyLevelAll = DBCassandraConsistencyLevelKey.String("all")
-	// each_quorum
-	DBCassandraConsistencyLevelEachQuorum = DBCassandraConsistencyLevelKey.String("each_quorum")
-	// quorum
-	DBCassandraConsistencyLevelQuorum = DBCassandraConsistencyLevelKey.String("quorum")
-	// local_quorum
-	DBCassandraConsistencyLevelLocalQuorum = DBCassandraConsistencyLevelKey.String("local_quorum")
-	// one
-	DBCassandraConsistencyLevelOne = DBCassandraConsistencyLevelKey.String("one")
-	// two
-	DBCassandraConsistencyLevelTwo = DBCassandraConsistencyLevelKey.String("two")
-	// three
-	DBCassandraConsistencyLevelThree = DBCassandraConsistencyLevelKey.String("three")
-	// local_one
-	DBCassandraConsistencyLevelLocalOne = DBCassandraConsistencyLevelKey.String("local_one")
-	// any
-	DBCassandraConsistencyLevelAny = DBCassandraConsistencyLevelKey.String("any")
-	// serial
-	DBCassandraConsistencyLevelSerial = DBCassandraConsistencyLevelKey.String("serial")
-	// local_serial
-	DBCassandraConsistencyLevelLocalSerial = DBCassandraConsistencyLevelKey.String("local_serial")
-)
-
-// DBCassandraCoordinatorDC returns an attribute KeyValue conforming to the
-// "db.cassandra.coordinator.dc" semantic conventions. It represents the data
-// center of the coordinating node for a query.
-func DBCassandraCoordinatorDC(val string) attribute.KeyValue {
-	return DBCassandraCoordinatorDCKey.String(val)
-}
-
-// DBCassandraCoordinatorID returns an attribute KeyValue conforming to the
-// "db.cassandra.coordinator.id" semantic conventions. It represents the ID of
-// the coordinating node for a query.
-func DBCassandraCoordinatorID(val string) attribute.KeyValue {
-	return DBCassandraCoordinatorIDKey.String(val)
-}
-
-// DBCassandraIdempotence returns an attribute KeyValue conforming to the
-// "db.cassandra.idempotence" semantic conventions. It represents the whether
-// or not the query is idempotent.
-func DBCassandraIdempotence(val bool) attribute.KeyValue {
-	return DBCassandraIdempotenceKey.Bool(val)
-}
-
-// DBCassandraPageSize returns an attribute KeyValue conforming to the
-// "db.cassandra.page_size" semantic conventions. It represents the fetch size
-// used for paging, i.e. how many rows will be returned at once.
-func DBCassandraPageSize(val int) attribute.KeyValue {
-	return DBCassandraPageSizeKey.Int(val)
-}
-
-// DBCassandraSpeculativeExecutionCount returns an attribute KeyValue
-// conforming to the "db.cassandra.speculative_execution_count" semantic
-// conventions. It represents the number of times a query was speculatively
-// executed. Not set or `0` if the query was not executed speculatively.
-func DBCassandraSpeculativeExecutionCount(val int) attribute.KeyValue {
-	return DBCassandraSpeculativeExecutionCountKey.Int(val)
-}
-
-// This group defines attributes for Azure Cosmos DB.
-const (
-	// DBCosmosDBClientIDKey is the attribute Key conforming to the
-	// "db.cosmosdb.client_id" semantic conventions. It represents the unique
-	// Cosmos client instance id.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '3ba4827d-4422-483f-b59f-85b74211c11d'
-	DBCosmosDBClientIDKey = attribute.Key("db.cosmosdb.client_id")
-
-	// DBCosmosDBConnectionModeKey is the attribute Key conforming to the
-	// "db.cosmosdb.connection_mode" semantic conventions. It represents the
-	// cosmos client connection mode.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	DBCosmosDBConnectionModeKey = attribute.Key("db.cosmosdb.connection_mode")
-
-	// DBCosmosDBOperationTypeKey is the attribute Key conforming to the
-	// "db.cosmosdb.operation_type" semantic conventions. It represents the
-	// cosmosDB Operation Type.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	DBCosmosDBOperationTypeKey = attribute.Key("db.cosmosdb.operation_type")
-
-	// DBCosmosDBRequestChargeKey is the attribute Key conforming to the
-	// "db.cosmosdb.request_charge" semantic conventions. It represents the rU
-	// consumed for that operation
-	//
-	// Type: double
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 46.18, 1.0
-	DBCosmosDBRequestChargeKey = attribute.Key("db.cosmosdb.request_charge")
-
-	// DBCosmosDBRequestContentLengthKey is the attribute Key conforming to the
-	// "db.cosmosdb.request_content_length" semantic conventions. It represents
-	// the request payload size in bytes
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	DBCosmosDBRequestContentLengthKey = attribute.Key("db.cosmosdb.request_content_length")
-
-	// DBCosmosDBStatusCodeKey is the attribute Key conforming to the
-	// "db.cosmosdb.status_code" semantic conventions. It represents the cosmos
-	// DB status code.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 200, 201
-	DBCosmosDBStatusCodeKey = attribute.Key("db.cosmosdb.status_code")
-
-	// DBCosmosDBSubStatusCodeKey is the attribute Key conforming to the
-	// "db.cosmosdb.sub_status_code" semantic conventions. It represents the
-	// cosmos DB sub status code.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1000, 1002
-	DBCosmosDBSubStatusCodeKey = attribute.Key("db.cosmosdb.sub_status_code")
-)
-
-var (
-	// Gateway (HTTP) connections mode
-	DBCosmosDBConnectionModeGateway = DBCosmosDBConnectionModeKey.String("gateway")
-	// Direct connection
-	DBCosmosDBConnectionModeDirect = DBCosmosDBConnectionModeKey.String("direct")
-)
-
-var (
-	// invalid
-	DBCosmosDBOperationTypeInvalid = DBCosmosDBOperationTypeKey.String("Invalid")
-	// create
-	DBCosmosDBOperationTypeCreate = DBCosmosDBOperationTypeKey.String("Create")
-	// patch
-	DBCosmosDBOperationTypePatch = DBCosmosDBOperationTypeKey.String("Patch")
-	// read
-	DBCosmosDBOperationTypeRead = DBCosmosDBOperationTypeKey.String("Read")
-	// read_feed
-	DBCosmosDBOperationTypeReadFeed = DBCosmosDBOperationTypeKey.String("ReadFeed")
-	// delete
-	DBCosmosDBOperationTypeDelete = DBCosmosDBOperationTypeKey.String("Delete")
-	// replace
-	DBCosmosDBOperationTypeReplace = DBCosmosDBOperationTypeKey.String("Replace")
-	// execute
-	DBCosmosDBOperationTypeExecute = DBCosmosDBOperationTypeKey.String("Execute")
-	// query
-	DBCosmosDBOperationTypeQuery = DBCosmosDBOperationTypeKey.String("Query")
-	// head
-	DBCosmosDBOperationTypeHead = DBCosmosDBOperationTypeKey.String("Head")
-	// head_feed
-	DBCosmosDBOperationTypeHeadFeed = DBCosmosDBOperationTypeKey.String("HeadFeed")
-	// upsert
-	DBCosmosDBOperationTypeUpsert = DBCosmosDBOperationTypeKey.String("Upsert")
-	// batch
-	DBCosmosDBOperationTypeBatch = DBCosmosDBOperationTypeKey.String("Batch")
-	// query_plan
-	DBCosmosDBOperationTypeQueryPlan = DBCosmosDBOperationTypeKey.String("QueryPlan")
-	// execute_javascript
-	DBCosmosDBOperationTypeExecuteJavascript = DBCosmosDBOperationTypeKey.String("ExecuteJavaScript")
-)
-
-// DBCosmosDBClientID returns an attribute KeyValue conforming to the
-// "db.cosmosdb.client_id" semantic conventions. It represents the unique
-// Cosmos client instance id.
-func DBCosmosDBClientID(val string) attribute.KeyValue {
-	return DBCosmosDBClientIDKey.String(val)
-}
-
-// DBCosmosDBRequestCharge returns an attribute KeyValue conforming to the
-// "db.cosmosdb.request_charge" semantic conventions. It represents the rU
-// consumed for that operation
-func DBCosmosDBRequestCharge(val float64) attribute.KeyValue {
-	return DBCosmosDBRequestChargeKey.Float64(val)
-}
-
-// DBCosmosDBRequestContentLength returns an attribute KeyValue conforming
-// to the "db.cosmosdb.request_content_length" semantic conventions. It
-// represents the request payload size in bytes
-func DBCosmosDBRequestContentLength(val int) attribute.KeyValue {
-	return DBCosmosDBRequestContentLengthKey.Int(val)
-}
-
-// DBCosmosDBStatusCode returns an attribute KeyValue conforming to the
-// "db.cosmosdb.status_code" semantic conventions. It represents the cosmos DB
-// status code.
-func DBCosmosDBStatusCode(val int) attribute.KeyValue {
-	return DBCosmosDBStatusCodeKey.Int(val)
-}
-
-// DBCosmosDBSubStatusCode returns an attribute KeyValue conforming to the
-// "db.cosmosdb.sub_status_code" semantic conventions. It represents the cosmos
-// DB sub status code.
-func DBCosmosDBSubStatusCode(val int) attribute.KeyValue {
-	return DBCosmosDBSubStatusCodeKey.Int(val)
-}
-
-// This group defines attributes for Elasticsearch.
-const (
-	// DBElasticsearchClusterNameKey is the attribute Key conforming to the
-	// "db.elasticsearch.cluster.name" semantic conventions. It represents the
-	// represents the identifier of an Elasticsearch cluster.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'e9106fc68e3044f0b1475b04bf4ffd5f'
-	DBElasticsearchClusterNameKey = attribute.Key("db.elasticsearch.cluster.name")
-
-	// DBElasticsearchNodeNameKey is the attribute Key conforming to the
-	// "db.elasticsearch.node.name" semantic conventions. It represents the
-	// represents the human-readable identifier of the node/instance to which a
-	// request was routed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'instance-0000000001'
-	DBElasticsearchNodeNameKey = attribute.Key("db.elasticsearch.node.name")
-)
-
-// DBElasticsearchClusterName returns an attribute KeyValue conforming to
-// the "db.elasticsearch.cluster.name" semantic conventions. It represents the
-// represents the identifier of an Elasticsearch cluster.
-func DBElasticsearchClusterName(val string) attribute.KeyValue {
-	return DBElasticsearchClusterNameKey.String(val)
-}
-
-// DBElasticsearchNodeName returns an attribute KeyValue conforming to the
-// "db.elasticsearch.node.name" semantic conventions. It represents the
-// represents the human-readable identifier of the node/instance to which a
-// request was routed.
-func DBElasticsearchNodeName(val string) attribute.KeyValue {
-	return DBElasticsearchNodeNameKey.String(val)
-}
-
-// Attributes for software deployments.
-const (
-	// DeploymentEnvironmentKey is the attribute Key conforming to the
-	// "deployment.environment" semantic conventions. It represents the name of
-	// the [deployment
-	// environment](https://wikipedia.org/wiki/Deployment_environment) (aka
-	// deployment tier).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'staging', 'production'
-	// Note: `deployment.environment` does not affect the uniqueness
-	// constraints defined through
-	// the `service.namespace`, `service.name` and `service.instance.id`
-	// resource attributes.
-	// This implies that resources carrying the following attribute
-	// combinations MUST be
-	// considered to be identifying the same service:
-	//
-	// * `service.name=frontend`, `deployment.environment=production`
-	// * `service.name=frontend`, `deployment.environment=staging`.
-	DeploymentEnvironmentKey = attribute.Key("deployment.environment")
-)
-
-// DeploymentEnvironment returns an attribute KeyValue conforming to the
-// "deployment.environment" semantic conventions. It represents the name of the
-// [deployment environment](https://wikipedia.org/wiki/Deployment_environment)
-// (aka deployment tier).
-func DeploymentEnvironment(val string) attribute.KeyValue {
-	return DeploymentEnvironmentKey.String(val)
-}
-
-// Attributes that represents an occurrence of a lifecycle transition on the
-// Android platform.
-const (
-	// AndroidStateKey is the attribute Key conforming to the "android.state"
-	// semantic conventions. It represents the deprecated use the
-	// `device.app.lifecycle` event definition including `android.state` as a
-	// payload field instead.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: The Android lifecycle states are defined in [Activity lifecycle
-	// callbacks](https://developer.android.com/guide/components/activities/activity-lifecycle#lc),
-	// and from which the `OS identifiers` are derived.
-	AndroidStateKey = attribute.Key("android.state")
-)
-
-var (
-	// Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time
-	AndroidStateCreated = AndroidStateKey.String("created")
-	// Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state
-	AndroidStateBackground = AndroidStateKey.String("background")
-	// Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states
-	AndroidStateForeground = AndroidStateKey.String("foreground")
-)
-
-// These attributes may be used to describe the receiver of a network
-// exchange/packet. These should be used when there is no client/server
-// relationship between the two sides, or when that relationship is unknown.
-// This covers low-level network interactions (e.g. packet tracing) where you
-// don't know if there was a connection or which side initiated it. This also
-// covers unidirectional UDP flows and peer-to-peer communication where the
-// "user-facing" surface of the protocol / API doesn't expose a clear notion of
-// client and server.
-const (
-	// DestinationAddressKey is the attribute Key conforming to the
-	// "destination.address" semantic conventions. It represents the
-	// destination address - domain name if available without reverse DNS
-	// lookup; otherwise, IP address or Unix domain socket name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'destination.example.com', '10.1.2.80', '/tmp/my.sock'
-	// Note: When observed from the source side, and when communicating through
-	// an intermediary, `destination.address` SHOULD represent the destination
-	// address behind any intermediaries, for example proxies, if it's
-	// available.
-	DestinationAddressKey = attribute.Key("destination.address")
-
-	// DestinationPortKey is the attribute Key conforming to the
-	// "destination.port" semantic conventions. It represents the destination
-	// port number
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3389, 2888
-	DestinationPortKey = attribute.Key("destination.port")
-)
-
-// DestinationAddress returns an attribute KeyValue conforming to the
-// "destination.address" semantic conventions. It represents the destination
-// address - domain name if available without reverse DNS lookup; otherwise, IP
-// address or Unix domain socket name.
-func DestinationAddress(val string) attribute.KeyValue {
-	return DestinationAddressKey.String(val)
-}
-
-// DestinationPort returns an attribute KeyValue conforming to the
-// "destination.port" semantic conventions. It represents the destination port
-// number
-func DestinationPort(val int) attribute.KeyValue {
-	return DestinationPortKey.Int(val)
-}
-
-// Describes device attributes.
-const (
-	// DeviceIDKey is the attribute Key conforming to the "device.id" semantic
-	// conventions. It represents a unique identifier representing the device
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2ab2916d-a51f-4ac8-80ee-45ac31a28092'
-	// Note: The device identifier MUST only be defined using the values
-	// outlined below. This value is not an advertising identifier and MUST NOT
-	// be used as such. On iOS (Swift or Objective-C), this value MUST be equal
-	// to the [vendor
-	// identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor).
-	// On Android (Java or Kotlin), this value MUST be equal to the Firebase
-	// Installation ID or a globally unique UUID which is persisted across
-	// sessions in your application. More information can be found
-	// [here](https://developer.android.com/training/articles/user-data-ids) on
-	// best practices and exact implementation details. Caution should be taken
-	// when storing personal data or anything which can identify a user. GDPR
-	// and data protection laws may apply, ensure you do your own due
-	// diligence.
-	DeviceIDKey = attribute.Key("device.id")
-
-	// DeviceManufacturerKey is the attribute Key conforming to the
-	// "device.manufacturer" semantic conventions. It represents the name of
-	// the device manufacturer
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Apple', 'Samsung'
-	// Note: The Android OS provides this field via
-	// [Build](https://developer.android.com/reference/android/os/Build#MANUFACTURER).
-	// iOS apps SHOULD hardcode the value `Apple`.
-	DeviceManufacturerKey = attribute.Key("device.manufacturer")
-
-	// DeviceModelIdentifierKey is the attribute Key conforming to the
-	// "device.model.identifier" semantic conventions. It represents the model
-	// identifier for the device
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'iPhone3,4', 'SM-G920F'
-	// Note: It's recommended this value represents a machine-readable version
-	// of the model identifier rather than the market or consumer-friendly name
-	// of the device.
-	DeviceModelIdentifierKey = attribute.Key("device.model.identifier")
-
-	// DeviceModelNameKey is the attribute Key conforming to the
-	// "device.model.name" semantic conventions. It represents the marketing
-	// name for the device model
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'iPhone 6s Plus', 'Samsung Galaxy S6'
-	// Note: It's recommended this value represents a human-readable version of
-	// the device model rather than a machine-readable alternative.
-	DeviceModelNameKey = attribute.Key("device.model.name")
-)
-
-// DeviceID returns an attribute KeyValue conforming to the "device.id"
-// semantic conventions. It represents a unique identifier representing the
-// device
-func DeviceID(val string) attribute.KeyValue {
-	return DeviceIDKey.String(val)
-}
-
-// DeviceManufacturer returns an attribute KeyValue conforming to the
-// "device.manufacturer" semantic conventions. It represents the name of the
-// device manufacturer
-func DeviceManufacturer(val string) attribute.KeyValue {
-	return DeviceManufacturerKey.String(val)
-}
-
-// DeviceModelIdentifier returns an attribute KeyValue conforming to the
-// "device.model.identifier" semantic conventions. It represents the model
-// identifier for the device
-func DeviceModelIdentifier(val string) attribute.KeyValue {
-	return DeviceModelIdentifierKey.String(val)
-}
-
-// DeviceModelName returns an attribute KeyValue conforming to the
-// "device.model.name" semantic conventions. It represents the marketing name
-// for the device model
-func DeviceModelName(val string) attribute.KeyValue {
-	return DeviceModelNameKey.String(val)
-}
-
-// These attributes may be used for any disk related operation.
-const (
-	// DiskIoDirectionKey is the attribute Key conforming to the
-	// "disk.io.direction" semantic conventions. It represents the disk IO
-	// operation direction.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'read'
-	DiskIoDirectionKey = attribute.Key("disk.io.direction")
-)
-
-var (
-	// read
-	DiskIoDirectionRead = DiskIoDirectionKey.String("read")
-	// write
-	DiskIoDirectionWrite = DiskIoDirectionKey.String("write")
-)
-
-// The shared attributes used to report a DNS query.
-const (
-	// DNSQuestionNameKey is the attribute Key conforming to the
-	// "dns.question.name" semantic conventions. It represents the name being
-	// queried.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'www.example.com', 'opentelemetry.io'
-	// Note: If the name field contains non-printable characters (below 32 or
-	// above 126), those characters should be represented as escaped base 10
-	// integers (\DDD). Back slashes and quotes should be escaped. Tabs,
-	// carriage returns, and line feeds should be converted to \t, \r, and \n
-	// respectively.
-	DNSQuestionNameKey = attribute.Key("dns.question.name")
-)
-
-// DNSQuestionName returns an attribute KeyValue conforming to the
-// "dns.question.name" semantic conventions. It represents the name being
-// queried.
-func DNSQuestionName(val string) attribute.KeyValue {
-	return DNSQuestionNameKey.String(val)
-}
-
-// Attributes for operations with an authenticated and/or authorized enduser.
-const (
-	// EnduserIDKey is the attribute Key conforming to the "enduser.id"
-	// semantic conventions. It represents the username or client_id extracted
-	// from the access token or
-	// [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header
-	// in the inbound request from outside the system.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'username'
-	EnduserIDKey = attribute.Key("enduser.id")
-
-	// EnduserRoleKey is the attribute Key conforming to the "enduser.role"
-	// semantic conventions. It represents the actual/assumed role the client
-	// is making the request under extracted from token or application security
-	// context.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'admin'
-	EnduserRoleKey = attribute.Key("enduser.role")
-
-	// EnduserScopeKey is the attribute Key conforming to the "enduser.scope"
-	// semantic conventions. It represents the scopes or granted authorities
-	// the client currently possesses extracted from token or application
-	// security context. The value would come from the scope associated with an
-	// [OAuth 2.0 Access
-	// Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute
-	// value in a [SAML 2.0
-	// Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'read:message, write:files'
-	EnduserScopeKey = attribute.Key("enduser.scope")
-)
-
-// EnduserID returns an attribute KeyValue conforming to the "enduser.id"
-// semantic conventions. It represents the username or client_id extracted from
-// the access token or
-// [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in
-// the inbound request from outside the system.
-func EnduserID(val string) attribute.KeyValue {
-	return EnduserIDKey.String(val)
-}
-
-// EnduserRole returns an attribute KeyValue conforming to the
-// "enduser.role" semantic conventions. It represents the actual/assumed role
-// the client is making the request under extracted from token or application
-// security context.
-func EnduserRole(val string) attribute.KeyValue {
-	return EnduserRoleKey.String(val)
-}
-
-// EnduserScope returns an attribute KeyValue conforming to the
-// "enduser.scope" semantic conventions. It represents the scopes or granted
-// authorities the client currently possesses extracted from token or
-// application security context. The value would come from the scope associated
-// with an [OAuth 2.0 Access
-// Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute
-// value in a [SAML 2.0
-// Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).
-func EnduserScope(val string) attribute.KeyValue {
-	return EnduserScopeKey.String(val)
-}
-
-// The shared attributes used to report an error.
-const (
-	// ErrorTypeKey is the attribute Key conforming to the "error.type"
-	// semantic conventions. It represents the describes a class of error the
-	// operation ended with.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'timeout', 'java.net.UnknownHostException',
-	// 'server_certificate_invalid', '500'
-	// Note: The `error.type` SHOULD be predictable, and SHOULD have low
-	// cardinality.
-	//
-	// When `error.type` is set to a type (e.g., an exception type), its
-	// canonical class name identifying the type within the artifact SHOULD be
-	// used.
-	//
-	// Instrumentations SHOULD document the list of errors they report.
-	//
-	// The cardinality of `error.type` within one instrumentation library
-	// SHOULD be low.
-	// Telemetry consumers that aggregate data from multiple instrumentation
-	// libraries and applications
-	// should be prepared for `error.type` to have high cardinality at query
-	// time when no
-	// additional filters are applied.
-	//
-	// If the operation has completed successfully, instrumentations SHOULD NOT
-	// set `error.type`.
-	//
-	// If a specific domain defines its own set of error identifiers (such as
-	// HTTP or gRPC status codes),
-	// it's RECOMMENDED to:
-	//
-	// * Use a domain-specific attribute
-	// * Set `error.type` to capture all errors, regardless of whether they are
-	// defined within the domain-specific set or not.
-	ErrorTypeKey = attribute.Key("error.type")
-)
-
-var (
-	// A fallback error value to be used when the instrumentation doesn't define a custom value
-	ErrorTypeOther = ErrorTypeKey.String("_OTHER")
-)
-
-// Attributes for Events represented using Log Records.
-const (
-	// EventNameKey is the attribute Key conforming to the "event.name"
-	// semantic conventions. It represents the identifies the class / type of
-	// event.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'browser.mouse.click', 'device.app.lifecycle'
-	// Note: Event names are subject to the same rules as [attribute
-	// names](https://github.com/open-telemetry/opentelemetry-specification/tree/v1.33.0/specification/common/attribute-naming.md).
-	// Notably, event names are namespaced to avoid collisions and provide a
-	// clean separation of semantics for events in separate domains like
-	// browser, mobile, and kubernetes.
-	EventNameKey = attribute.Key("event.name")
-)
-
-// EventName returns an attribute KeyValue conforming to the "event.name"
-// semantic conventions. It represents the identifies the class / type of
-// event.
-func EventName(val string) attribute.KeyValue {
-	return EventNameKey.String(val)
-}
-
-// The shared attributes used to report a single exception associated with a
-// span or log.
-const (
-	// ExceptionEscapedKey is the attribute Key conforming to the
-	// "exception.escaped" semantic conventions. It represents the sHOULD be
-	// set to true if the exception event is recorded at a point where it is
-	// known that the exception is escaping the scope of the span.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Note: An exception is considered to have escaped (or left) the scope of
-	// a span,
-	// if that span is ended while the exception is still logically "in
-	// flight".
-	// This may be actually "in flight" in some languages (e.g. if the
-	// exception
-	// is passed to a Context manager's `__exit__` method in Python) but will
-	// usually be caught at the point of recording the exception in most
-	// languages.
-	//
-	// It is usually not possible to determine at the point where an exception
-	// is thrown
-	// whether it will escape the scope of a span.
-	// However, it is trivial to know that an exception
-	// will escape, if one checks for an active exception just before ending
-	// the span,
-	// as done in the [example for recording span
-	// exceptions](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception).
-	//
-	// It follows that an exception may still escape the scope of the span
-	// even if the `exception.escaped` attribute was not set or set to false,
-	// since the event might have been recorded at a time where it was not
-	// clear whether the exception will escape.
-	ExceptionEscapedKey = attribute.Key("exception.escaped")
-
-	// ExceptionMessageKey is the attribute Key conforming to the
-	// "exception.message" semantic conventions. It represents the exception
-	// message.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'Division by zero', "Can't convert 'int' object to str
-	// implicitly"
-	ExceptionMessageKey = attribute.Key("exception.message")
-
-	// ExceptionStacktraceKey is the attribute Key conforming to the
-	// "exception.stacktrace" semantic conventions. It represents a stacktrace
-	// as a string in the natural representation for the language runtime. The
-	// representation is to be determined and documented by each language SIG.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'Exception in thread "main" java.lang.RuntimeException: Test
-	// exception\\n at '
-	//  'com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at '
-	//  'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at '
-	//  'com.example.GenerateTrace.main(GenerateTrace.java:5)'
-	ExceptionStacktraceKey = attribute.Key("exception.stacktrace")
-
-	// ExceptionTypeKey is the attribute Key conforming to the "exception.type"
-	// semantic conventions. It represents the type of the exception (its
-	// fully-qualified class name, if applicable). The dynamic type of the
-	// exception should be preferred over the static type in languages that
-	// support it.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'java.net.ConnectException', 'OSError'
-	ExceptionTypeKey = attribute.Key("exception.type")
-)
-
-// ExceptionEscaped returns an attribute KeyValue conforming to the
-// "exception.escaped" semantic conventions. It represents the sHOULD be set to
-// true if the exception event is recorded at a point where it is known that
-// the exception is escaping the scope of the span.
-func ExceptionEscaped(val bool) attribute.KeyValue {
-	return ExceptionEscapedKey.Bool(val)
-}
-
-// ExceptionMessage returns an attribute KeyValue conforming to the
-// "exception.message" semantic conventions. It represents the exception
-// message.
-func ExceptionMessage(val string) attribute.KeyValue {
-	return ExceptionMessageKey.String(val)
-}
-
-// ExceptionStacktrace returns an attribute KeyValue conforming to the
-// "exception.stacktrace" semantic conventions. It represents a stacktrace as a
-// string in the natural representation for the language runtime. The
-// representation is to be determined and documented by each language SIG.
-func ExceptionStacktrace(val string) attribute.KeyValue {
-	return ExceptionStacktraceKey.String(val)
-}
-
-// ExceptionType returns an attribute KeyValue conforming to the
-// "exception.type" semantic conventions. It represents the type of the
-// exception (its fully-qualified class name, if applicable). The dynamic type
-// of the exception should be preferred over the static type in languages that
-// support it.
-func ExceptionType(val string) attribute.KeyValue {
-	return ExceptionTypeKey.String(val)
-}
-
-// FaaS attributes
-const (
-	// FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart"
-	// semantic conventions. It represents a boolean that is true if the
-	// serverless function is executed for the first time (aka cold-start).
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	FaaSColdstartKey = attribute.Key("faas.coldstart")
-
-	// FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic
-	// conventions. It represents a string containing the schedule period as
-	// [Cron
-	// Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '0/5 * * * ? *'
-	FaaSCronKey = attribute.Key("faas.cron")
-
-	// FaaSDocumentCollectionKey is the attribute Key conforming to the
-	// "faas.document.collection" semantic conventions. It represents the name
-	// of the source on which the triggering operation was performed. For
-	// example, in Cloud Storage or S3 corresponds to the bucket name, and in
-	// Cosmos DB to the database name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myBucketName', 'myDBName'
-	FaaSDocumentCollectionKey = attribute.Key("faas.document.collection")
-
-	// FaaSDocumentNameKey is the attribute Key conforming to the
-	// "faas.document.name" semantic conventions. It represents the document
-	// name/table subjected to the operation. For example, in Cloud Storage or
-	// S3 is the name of the file, and in Cosmos DB the table name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myFile.txt', 'myTableName'
-	FaaSDocumentNameKey = attribute.Key("faas.document.name")
-
-	// FaaSDocumentOperationKey is the attribute Key conforming to the
-	// "faas.document.operation" semantic conventions. It represents the
-	// describes the type of the operation that was performed on the data.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	FaaSDocumentOperationKey = attribute.Key("faas.document.operation")
-
-	// FaaSDocumentTimeKey is the attribute Key conforming to the
-	// "faas.document.time" semantic conventions. It represents a string
-	// containing the time when the data was accessed in the [ISO
-	// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format
-	// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2020-01-23T13:47:06Z'
-	FaaSDocumentTimeKey = attribute.Key("faas.document.time")
-
-	// FaaSInstanceKey is the attribute Key conforming to the "faas.instance"
-	// semantic conventions. It represents the execution environment ID as a
-	// string, that will be potentially reused for other invocations to the
-	// same function/function version.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de'
-	// Note: * **AWS Lambda:** Use the (full) log stream name.
-	FaaSInstanceKey = attribute.Key("faas.instance")
-
-	// FaaSInvocationIDKey is the attribute Key conforming to the
-	// "faas.invocation_id" semantic conventions. It represents the invocation
-	// ID of the current function invocation.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
-	FaaSInvocationIDKey = attribute.Key("faas.invocation_id")
-
-	// FaaSInvokedNameKey is the attribute Key conforming to the
-	// "faas.invoked_name" semantic conventions. It represents the name of the
-	// invoked function.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'my-function'
-	// Note: SHOULD be equal to the `faas.name` resource attribute of the
-	// invoked function.
-	FaaSInvokedNameKey = attribute.Key("faas.invoked_name")
-
-	// FaaSInvokedProviderKey is the attribute Key conforming to the
-	// "faas.invoked_provider" semantic conventions. It represents the cloud
-	// provider of the invoked function.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: SHOULD be equal to the `cloud.provider` resource attribute of the
-	// invoked function.
-	FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider")
-
-	// FaaSInvokedRegionKey is the attribute Key conforming to the
-	// "faas.invoked_region" semantic conventions. It represents the cloud
-	// region of the invoked function.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'eu-central-1'
-	// Note: SHOULD be equal to the `cloud.region` resource attribute of the
-	// invoked function.
-	FaaSInvokedRegionKey = attribute.Key("faas.invoked_region")
-
-	// FaaSMaxMemoryKey is the attribute Key conforming to the
-	// "faas.max_memory" semantic conventions. It represents the amount of
-	// memory available to the serverless function converted to Bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 134217728
-	// Note: It's recommended to set this attribute since e.g. too little
-	// memory can easily stop a Java AWS Lambda function from working
-	// correctly. On AWS Lambda, the environment variable
-	// `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information (which must
-	// be multiplied by 1,048,576).
-	FaaSMaxMemoryKey = attribute.Key("faas.max_memory")
-
-	// FaaSNameKey is the attribute Key conforming to the "faas.name" semantic
-	// conventions. It represents the name of the single function that this
-	// runtime instance executes.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'my-function', 'myazurefunctionapp/some-function-name'
-	// Note: This is the name of the function as configured/deployed on the
-	// FaaS
-	// platform and is usually different from the name of the callback
-	// function (which may be stored in the
-	// [`code.namespace`/`code.function`](/docs/general/attributes.md#source-code-attributes)
-	// span attributes).
-	//
-	// For some cloud providers, the above definition is ambiguous. The
-	// following
-	// definition of function name MUST be used for this attribute
-	// (and consequently the span name) for the listed cloud
-	// providers/products:
-	//
-	// * **Azure:**  The full name `<FUNCAPP>/<FUNC>`, i.e., function app name
-	//   followed by a forward slash followed by the function name (this form
-	//   can also be seen in the resource JSON for the function).
-	//   This means that a span attribute MUST be used, as an Azure function
-	//   app can host multiple functions that would usually share
-	//   a TracerProvider (see also the `cloud.resource_id` attribute).
-	FaaSNameKey = attribute.Key("faas.name")
-
-	// FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic
-	// conventions. It represents a string containing the function invocation
-	// time in the [ISO
-	// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format
-	// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2020-01-23T13:47:06Z'
-	FaaSTimeKey = attribute.Key("faas.time")
-
-	// FaaSTriggerKey is the attribute Key conforming to the "faas.trigger"
-	// semantic conventions. It represents the type of the trigger which caused
-	// this function invocation.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	FaaSTriggerKey = attribute.Key("faas.trigger")
-
-	// FaaSVersionKey is the attribute Key conforming to the "faas.version"
-	// semantic conventions. It represents the immutable version of the
-	// function being executed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '26', 'pinkfroid-00002'
-	// Note: Depending on the cloud provider and platform, use:
-	//
-	// * **AWS Lambda:** The [function
-	// version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)
-	//   (an integer represented as a decimal string).
-	// * **Google Cloud Run (Services):** The
-	// [revision](https://cloud.google.com/run/docs/managing/revisions)
-	//   (i.e., the function name plus the revision suffix).
-	// * **Google Cloud Functions:** The value of the
-	//   [`K_REVISION` environment
-	// variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).
-	// * **Azure Functions:** Not applicable. Do not set this attribute.
-	FaaSVersionKey = attribute.Key("faas.version")
-)
-
-var (
-	// When a new object is created
-	FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert")
-	// When an object is modified
-	FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit")
-	// When an object is deleted
-	FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete")
-)
-
-var (
-	// Alibaba Cloud
-	FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud")
-	// Amazon Web Services
-	FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws")
-	// Microsoft Azure
-	FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure")
-	// Google Cloud Platform
-	FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp")
-	// Tencent Cloud
-	FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud")
-)
-
-var (
-	// A response to some data source operation such as a database or filesystem read/write
-	FaaSTriggerDatasource = FaaSTriggerKey.String("datasource")
-	// To provide an answer to an inbound HTTP request
-	FaaSTriggerHTTP = FaaSTriggerKey.String("http")
-	// A function is set to be executed when messages are sent to a messaging system
-	FaaSTriggerPubsub = FaaSTriggerKey.String("pubsub")
-	// A function is scheduled to be executed regularly
-	FaaSTriggerTimer = FaaSTriggerKey.String("timer")
-	// If none of the others apply
-	FaaSTriggerOther = FaaSTriggerKey.String("other")
-)
-
-// FaaSColdstart returns an attribute KeyValue conforming to the
-// "faas.coldstart" semantic conventions. It represents a boolean that is true
-// if the serverless function is executed for the first time (aka cold-start).
-func FaaSColdstart(val bool) attribute.KeyValue {
-	return FaaSColdstartKey.Bool(val)
-}
-
-// FaaSCron returns an attribute KeyValue conforming to the "faas.cron"
-// semantic conventions. It represents a string containing the schedule period
-// as [Cron
-// Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).
-func FaaSCron(val string) attribute.KeyValue {
-	return FaaSCronKey.String(val)
-}
-
-// FaaSDocumentCollection returns an attribute KeyValue conforming to the
-// "faas.document.collection" semantic conventions. It represents the name of
-// the source on which the triggering operation was performed. For example, in
-// Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the
-// database name.
-func FaaSDocumentCollection(val string) attribute.KeyValue {
-	return FaaSDocumentCollectionKey.String(val)
-}
-
-// FaaSDocumentName returns an attribute KeyValue conforming to the
-// "faas.document.name" semantic conventions. It represents the document
-// name/table subjected to the operation. For example, in Cloud Storage or S3
-// is the name of the file, and in Cosmos DB the table name.
-func FaaSDocumentName(val string) attribute.KeyValue {
-	return FaaSDocumentNameKey.String(val)
-}
-
-// FaaSDocumentTime returns an attribute KeyValue conforming to the
-// "faas.document.time" semantic conventions. It represents a string containing
-// the time when the data was accessed in the [ISO
-// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format
-// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
-func FaaSDocumentTime(val string) attribute.KeyValue {
-	return FaaSDocumentTimeKey.String(val)
-}
-
-// FaaSInstance returns an attribute KeyValue conforming to the
-// "faas.instance" semantic conventions. It represents the execution
-// environment ID as a string, that will be potentially reused for other
-// invocations to the same function/function version.
-func FaaSInstance(val string) attribute.KeyValue {
-	return FaaSInstanceKey.String(val)
-}
-
-// FaaSInvocationID returns an attribute KeyValue conforming to the
-// "faas.invocation_id" semantic conventions. It represents the invocation ID
-// of the current function invocation.
-func FaaSInvocationID(val string) attribute.KeyValue {
-	return FaaSInvocationIDKey.String(val)
-}
-
-// FaaSInvokedName returns an attribute KeyValue conforming to the
-// "faas.invoked_name" semantic conventions. It represents the name of the
-// invoked function.
-func FaaSInvokedName(val string) attribute.KeyValue {
-	return FaaSInvokedNameKey.String(val)
-}
-
-// FaaSInvokedRegion returns an attribute KeyValue conforming to the
-// "faas.invoked_region" semantic conventions. It represents the cloud region
-// of the invoked function.
-func FaaSInvokedRegion(val string) attribute.KeyValue {
-	return FaaSInvokedRegionKey.String(val)
-}
-
-// FaaSMaxMemory returns an attribute KeyValue conforming to the
-// "faas.max_memory" semantic conventions. It represents the amount of memory
-// available to the serverless function converted to Bytes.
-func FaaSMaxMemory(val int) attribute.KeyValue {
-	return FaaSMaxMemoryKey.Int(val)
-}
-
-// FaaSName returns an attribute KeyValue conforming to the "faas.name"
-// semantic conventions. It represents the name of the single function that
-// this runtime instance executes.
-func FaaSName(val string) attribute.KeyValue {
-	return FaaSNameKey.String(val)
-}
-
-// FaaSTime returns an attribute KeyValue conforming to the "faas.time"
-// semantic conventions. It represents a string containing the function
-// invocation time in the [ISO
-// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format
-// expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
-func FaaSTime(val string) attribute.KeyValue {
-	return FaaSTimeKey.String(val)
-}
-
-// FaaSVersion returns an attribute KeyValue conforming to the
-// "faas.version" semantic conventions. It represents the immutable version of
-// the function being executed.
-func FaaSVersion(val string) attribute.KeyValue {
-	return FaaSVersionKey.String(val)
-}
-
-// Attributes for Feature Flags.
-const (
-	// FeatureFlagKeyKey is the attribute Key conforming to the
-	// "feature_flag.key" semantic conventions. It represents the unique
-	// identifier of the feature flag.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'logo-color'
-	FeatureFlagKeyKey = attribute.Key("feature_flag.key")
-
-	// FeatureFlagProviderNameKey is the attribute Key conforming to the
-	// "feature_flag.provider_name" semantic conventions. It represents the
-	// name of the service provider that performs the flag evaluation.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Flag Manager'
-	FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider_name")
-
-	// FeatureFlagVariantKey is the attribute Key conforming to the
-	// "feature_flag.variant" semantic conventions. It represents the sHOULD be
-	// a semantic identifier for a value. If one is unavailable, a stringified
-	// version of the value can be used.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'red', 'true', 'on'
-	// Note: A semantic identifier, commonly referred to as a variant, provides
-	// a means
-	// for referring to a value without including the value itself. This can
-	// provide additional context for understanding the meaning behind a value.
-	// For example, the variant `red` maybe be used for the value `#c05543`.
-	//
-	// A stringified version of the value can be used in situations where a
-	// semantic identifier is unavailable. String representation of the value
-	// should be determined by the implementer.
-	FeatureFlagVariantKey = attribute.Key("feature_flag.variant")
-)
-
-// FeatureFlagKey returns an attribute KeyValue conforming to the
-// "feature_flag.key" semantic conventions. It represents the unique identifier
-// of the feature flag.
-func FeatureFlagKey(val string) attribute.KeyValue {
-	return FeatureFlagKeyKey.String(val)
-}
-
-// FeatureFlagProviderName returns an attribute KeyValue conforming to the
-// "feature_flag.provider_name" semantic conventions. It represents the name of
-// the service provider that performs the flag evaluation.
-func FeatureFlagProviderName(val string) attribute.KeyValue {
-	return FeatureFlagProviderNameKey.String(val)
-}
-
-// FeatureFlagVariant returns an attribute KeyValue conforming to the
-// "feature_flag.variant" semantic conventions. It represents the sHOULD be a
-// semantic identifier for a value. If one is unavailable, a stringified
-// version of the value can be used.
-func FeatureFlagVariant(val string) attribute.KeyValue {
-	return FeatureFlagVariantKey.String(val)
-}
-
-// Describes file attributes.
-const (
-	// FileDirectoryKey is the attribute Key conforming to the "file.directory"
-	// semantic conventions. It represents the directory where the file is
-	// located. It should include the drive letter, when appropriate.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/home/user', 'C:\\Program Files\\MyApp'
-	FileDirectoryKey = attribute.Key("file.directory")
-
-	// FileExtensionKey is the attribute Key conforming to the "file.extension"
-	// semantic conventions. It represents the file extension, excluding the
-	// leading dot.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'png', 'gz'
-	// Note: When the file name has multiple extensions (example.tar.gz), only
-	// the last one should be captured ("gz", not "tar.gz").
-	FileExtensionKey = attribute.Key("file.extension")
-
-	// FileNameKey is the attribute Key conforming to the "file.name" semantic
-	// conventions. It represents the name of the file including the extension,
-	// without the directory.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'example.png'
-	FileNameKey = attribute.Key("file.name")
-
-	// FilePathKey is the attribute Key conforming to the "file.path" semantic
-	// conventions. It represents the full path to the file, including the file
-	// name. It should include the drive letter, when appropriate.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/home/alice/example.png', 'C:\\Program
-	// Files\\MyApp\\myapp.exe'
-	FilePathKey = attribute.Key("file.path")
-
-	// FileSizeKey is the attribute Key conforming to the "file.size" semantic
-	// conventions. It represents the file size in bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	FileSizeKey = attribute.Key("file.size")
-)
-
-// FileDirectory returns an attribute KeyValue conforming to the
-// "file.directory" semantic conventions. It represents the directory where the
-// file is located. It should include the drive letter, when appropriate.
-func FileDirectory(val string) attribute.KeyValue {
-	return FileDirectoryKey.String(val)
-}
-
-// FileExtension returns an attribute KeyValue conforming to the
-// "file.extension" semantic conventions. It represents the file extension,
-// excluding the leading dot.
-func FileExtension(val string) attribute.KeyValue {
-	return FileExtensionKey.String(val)
-}
-
-// FileName returns an attribute KeyValue conforming to the "file.name"
-// semantic conventions. It represents the name of the file including the
-// extension, without the directory.
-func FileName(val string) attribute.KeyValue {
-	return FileNameKey.String(val)
-}
-
-// FilePath returns an attribute KeyValue conforming to the "file.path"
-// semantic conventions. It represents the full path to the file, including the
-// file name. It should include the drive letter, when appropriate.
-func FilePath(val string) attribute.KeyValue {
-	return FilePathKey.String(val)
-}
-
-// FileSize returns an attribute KeyValue conforming to the "file.size"
-// semantic conventions. It represents the file size in bytes.
-func FileSize(val int) attribute.KeyValue {
-	return FileSizeKey.Int(val)
-}
-
-// Attributes for Google Cloud Run.
-const (
-	// GCPCloudRunJobExecutionKey is the attribute Key conforming to the
-	// "gcp.cloud_run.job.execution" semantic conventions. It represents the
-	// name of the Cloud Run
-	// [execution](https://cloud.google.com/run/docs/managing/job-executions)
-	// being run for the Job, as set by the
-	// [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars)
-	// environment variable.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'job-name-xxxx', 'sample-job-mdw84'
-	GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution")
-
-	// GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the
-	// "gcp.cloud_run.job.task_index" semantic conventions. It represents the
-	// index for a task within an execution as provided by the
-	// [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars)
-	// environment variable.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 0, 1
-	GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index")
-)
-
-// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.execution" semantic conventions. It represents the name
-// of the Cloud Run
-// [execution](https://cloud.google.com/run/docs/managing/job-executions) being
-// run for the Job, as set by the
-// [`CLOUD_RUN_EXECUTION`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars)
-// environment variable.
-func GCPCloudRunJobExecution(val string) attribute.KeyValue {
-	return GCPCloudRunJobExecutionKey.String(val)
-}
-
-// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the
-// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index
-// for a task within an execution as provided by the
-// [`CLOUD_RUN_TASK_INDEX`](https://cloud.google.com/run/docs/container-contract#jobs-env-vars)
-// environment variable.
-func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue {
-	return GCPCloudRunJobTaskIndexKey.Int(val)
-}
-
-// Attributes for Google Compute Engine (GCE).
-const (
-	// GCPGceInstanceHostnameKey is the attribute Key conforming to the
-	// "gcp.gce.instance.hostname" semantic conventions. It represents the
-	// hostname of a GCE instance. This is the full value of the default or
-	// [custom
-	// hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'my-host1234.example.com',
-	// 'sample-vm.us-west1-b.c.my-project.internal'
-	GCPGceInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname")
-
-	// GCPGceInstanceNameKey is the attribute Key conforming to the
-	// "gcp.gce.instance.name" semantic conventions. It represents the instance
-	// name of a GCE instance. This is the value provided by `host.name`, the
-	// visible name of the instance in the Cloud Console UI, and the prefix for
-	// the default hostname of the instance as defined by the [default internal
-	// DNS
-	// name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'instance-1', 'my-vm-name'
-	GCPGceInstanceNameKey = attribute.Key("gcp.gce.instance.name")
-)
-
-// GCPGceInstanceHostname returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname
-// of a GCE instance. This is the full value of the default or [custom
-// hostname](https://cloud.google.com/compute/docs/instances/custom-hostname-vm).
-func GCPGceInstanceHostname(val string) attribute.KeyValue {
-	return GCPGceInstanceHostnameKey.String(val)
-}
-
-// GCPGceInstanceName returns an attribute KeyValue conforming to the
-// "gcp.gce.instance.name" semantic conventions. It represents the instance
-// name of a GCE instance. This is the value provided by `host.name`, the
-// visible name of the instance in the Cloud Console UI, and the prefix for the
-// default hostname of the instance as defined by the [default internal DNS
-// name](https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names).
-func GCPGceInstanceName(val string) attribute.KeyValue {
-	return GCPGceInstanceNameKey.String(val)
-}
-
-// The attributes used to describe telemetry in the context of LLM (Large
-// Language Models) requests and responses.
-const (
-	// GenAiCompletionKey is the attribute Key conforming to the
-	// "gen_ai.completion" semantic conventions. It represents the full
-	// response received from the LLM.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: "[{'role': 'assistant', 'content': 'The capital of France is
-	// Paris.'}]"
-	// Note: It's RECOMMENDED to format completions as JSON string matching
-	// [OpenAI messages
-	// format](https://platform.openai.com/docs/guides/text-generation)
-	GenAiCompletionKey = attribute.Key("gen_ai.completion")
-
-	// GenAiPromptKey is the attribute Key conforming to the "gen_ai.prompt"
-	// semantic conventions. It represents the full prompt sent to an LLM.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: "[{'role': 'user', 'content': 'What is the capital of
-	// France?'}]"
-	// Note: It's RECOMMENDED to format prompts as JSON string matching [OpenAI
-	// messages
-	// format](https://platform.openai.com/docs/guides/text-generation)
-	GenAiPromptKey = attribute.Key("gen_ai.prompt")
-
-	// GenAiRequestMaxTokensKey is the attribute Key conforming to the
-	// "gen_ai.request.max_tokens" semantic conventions. It represents the
-	// maximum number of tokens the LLM generates for a request.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 100
-	GenAiRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens")
-
-	// GenAiRequestModelKey is the attribute Key conforming to the
-	// "gen_ai.request.model" semantic conventions. It represents the name of
-	// the LLM a request is being made to.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'gpt-4'
-	GenAiRequestModelKey = attribute.Key("gen_ai.request.model")
-
-	// GenAiRequestTemperatureKey is the attribute Key conforming to the
-	// "gen_ai.request.temperature" semantic conventions. It represents the
-	// temperature setting for the LLM request.
-	//
-	// Type: double
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 0.0
-	GenAiRequestTemperatureKey = attribute.Key("gen_ai.request.temperature")
-
-	// GenAiRequestTopPKey is the attribute Key conforming to the
-	// "gen_ai.request.top_p" semantic conventions. It represents the top_p
-	// sampling setting for the LLM request.
-	//
-	// Type: double
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1.0
-	GenAiRequestTopPKey = attribute.Key("gen_ai.request.top_p")
-
-	// GenAiResponseFinishReasonsKey is the attribute Key conforming to the
-	// "gen_ai.response.finish_reasons" semantic conventions. It represents the
-	// array of reasons the model stopped generating tokens, corresponding to
-	// each generation received.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'stop'
-	GenAiResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons")
-
-	// GenAiResponseIDKey is the attribute Key conforming to the
-	// "gen_ai.response.id" semantic conventions. It represents the unique
-	// identifier for the completion.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'chatcmpl-123'
-	GenAiResponseIDKey = attribute.Key("gen_ai.response.id")
-
-	// GenAiResponseModelKey is the attribute Key conforming to the
-	// "gen_ai.response.model" semantic conventions. It represents the name of
-	// the LLM a response was generated from.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'gpt-4-0613'
-	GenAiResponseModelKey = attribute.Key("gen_ai.response.model")
-
-	// GenAiSystemKey is the attribute Key conforming to the "gen_ai.system"
-	// semantic conventions. It represents the Generative AI product as
-	// identified by the client instrumentation.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'openai'
-	// Note: The actual GenAI product may differ from the one identified by the
-	// client. For example, when using OpenAI client libraries to communicate
-	// with Mistral, the `gen_ai.system` is set to `openai` based on the
-	// instrumentation's best knowledge.
-	GenAiSystemKey = attribute.Key("gen_ai.system")
-
-	// GenAiUsageCompletionTokensKey is the attribute Key conforming to the
-	// "gen_ai.usage.completion_tokens" semantic conventions. It represents the
-	// number of tokens used in the LLM response (completion).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 180
-	GenAiUsageCompletionTokensKey = attribute.Key("gen_ai.usage.completion_tokens")
-
-	// GenAiUsagePromptTokensKey is the attribute Key conforming to the
-	// "gen_ai.usage.prompt_tokens" semantic conventions. It represents the
-	// number of tokens used in the LLM prompt.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 100
-	GenAiUsagePromptTokensKey = attribute.Key("gen_ai.usage.prompt_tokens")
-)
-
-var (
-	// OpenAI
-	GenAiSystemOpenai = GenAiSystemKey.String("openai")
-)
-
-// GenAiCompletion returns an attribute KeyValue conforming to the
-// "gen_ai.completion" semantic conventions. It represents the full response
-// received from the LLM.
-func GenAiCompletion(val string) attribute.KeyValue {
-	return GenAiCompletionKey.String(val)
-}
-
-// GenAiPrompt returns an attribute KeyValue conforming to the
-// "gen_ai.prompt" semantic conventions. It represents the full prompt sent to
-// an LLM.
-func GenAiPrompt(val string) attribute.KeyValue {
-	return GenAiPromptKey.String(val)
-}
-
-// GenAiRequestMaxTokens returns an attribute KeyValue conforming to the
-// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum
-// number of tokens the LLM generates for a request.
-func GenAiRequestMaxTokens(val int) attribute.KeyValue {
-	return GenAiRequestMaxTokensKey.Int(val)
-}
-
-// GenAiRequestModel returns an attribute KeyValue conforming to the
-// "gen_ai.request.model" semantic conventions. It represents the name of the
-// LLM a request is being made to.
-func GenAiRequestModel(val string) attribute.KeyValue {
-	return GenAiRequestModelKey.String(val)
-}
-
-// GenAiRequestTemperature returns an attribute KeyValue conforming to the
-// "gen_ai.request.temperature" semantic conventions. It represents the
-// temperature setting for the LLM request.
-func GenAiRequestTemperature(val float64) attribute.KeyValue {
-	return GenAiRequestTemperatureKey.Float64(val)
-}
-
-// GenAiRequestTopP returns an attribute KeyValue conforming to the
-// "gen_ai.request.top_p" semantic conventions. It represents the top_p
-// sampling setting for the LLM request.
-func GenAiRequestTopP(val float64) attribute.KeyValue {
-	return GenAiRequestTopPKey.Float64(val)
-}
-
-// GenAiResponseFinishReasons returns an attribute KeyValue conforming to
-// the "gen_ai.response.finish_reasons" semantic conventions. It represents the
-// array of reasons the model stopped generating tokens, corresponding to each
-// generation received.
-func GenAiResponseFinishReasons(val ...string) attribute.KeyValue {
-	return GenAiResponseFinishReasonsKey.StringSlice(val)
-}
-
-// GenAiResponseID returns an attribute KeyValue conforming to the
-// "gen_ai.response.id" semantic conventions. It represents the unique
-// identifier for the completion.
-func GenAiResponseID(val string) attribute.KeyValue {
-	return GenAiResponseIDKey.String(val)
-}
-
-// GenAiResponseModel returns an attribute KeyValue conforming to the
-// "gen_ai.response.model" semantic conventions. It represents the name of the
-// LLM a response was generated from.
-func GenAiResponseModel(val string) attribute.KeyValue {
-	return GenAiResponseModelKey.String(val)
-}
-
-// GenAiUsageCompletionTokens returns an attribute KeyValue conforming to
-// the "gen_ai.usage.completion_tokens" semantic conventions. It represents the
-// number of tokens used in the LLM response (completion).
-func GenAiUsageCompletionTokens(val int) attribute.KeyValue {
-	return GenAiUsageCompletionTokensKey.Int(val)
-}
-
-// GenAiUsagePromptTokens returns an attribute KeyValue conforming to the
-// "gen_ai.usage.prompt_tokens" semantic conventions. It represents the number
-// of tokens used in the LLM prompt.
-func GenAiUsagePromptTokens(val int) attribute.KeyValue {
-	return GenAiUsagePromptTokensKey.Int(val)
-}
-
-// Attributes for GraphQL.
-const (
-	// GraphqlDocumentKey is the attribute Key conforming to the
-	// "graphql.document" semantic conventions. It represents the GraphQL
-	// document being executed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'query findBookByID { bookByID(id: ?) { name } }'
-	// Note: The value may be sanitized to exclude sensitive information.
-	GraphqlDocumentKey = attribute.Key("graphql.document")
-
-	// GraphqlOperationNameKey is the attribute Key conforming to the
-	// "graphql.operation.name" semantic conventions. It represents the name of
-	// the operation being executed.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'findBookByID'
-	GraphqlOperationNameKey = attribute.Key("graphql.operation.name")
-
-	// GraphqlOperationTypeKey is the attribute Key conforming to the
-	// "graphql.operation.type" semantic conventions. It represents the type of
-	// the operation being executed.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'query', 'mutation', 'subscription'
-	GraphqlOperationTypeKey = attribute.Key("graphql.operation.type")
-)
-
-var (
-	// GraphQL query
-	GraphqlOperationTypeQuery = GraphqlOperationTypeKey.String("query")
-	// GraphQL mutation
-	GraphqlOperationTypeMutation = GraphqlOperationTypeKey.String("mutation")
-	// GraphQL subscription
-	GraphqlOperationTypeSubscription = GraphqlOperationTypeKey.String("subscription")
-)
-
-// GraphqlDocument returns an attribute KeyValue conforming to the
-// "graphql.document" semantic conventions. It represents the GraphQL document
-// being executed.
-func GraphqlDocument(val string) attribute.KeyValue {
-	return GraphqlDocumentKey.String(val)
-}
-
-// GraphqlOperationName returns an attribute KeyValue conforming to the
-// "graphql.operation.name" semantic conventions. It represents the name of the
-// operation being executed.
-func GraphqlOperationName(val string) attribute.KeyValue {
-	return GraphqlOperationNameKey.String(val)
-}
-
-// Attributes for the Android platform on which the Android application is
-// running.
-const (
-	// HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id"
-	// semantic conventions. It represents the unique identifier for the
-	// application
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2daa2797-e42b-4624-9322-ec3f968df4da'
-	HerokuAppIDKey = attribute.Key("heroku.app.id")
-
-	// HerokuReleaseCommitKey is the attribute Key conforming to the
-	// "heroku.release.commit" semantic conventions. It represents the commit
-	// hash for the current release
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'e6134959463efd8966b20e75b913cafe3f5ec'
-	HerokuReleaseCommitKey = attribute.Key("heroku.release.commit")
-
-	// HerokuReleaseCreationTimestampKey is the attribute Key conforming to the
-	// "heroku.release.creation_timestamp" semantic conventions. It represents
-	// the time and date the release was created
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2022-10-23T18:00:42Z'
-	HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp")
-)
-
-// HerokuAppID returns an attribute KeyValue conforming to the
-// "heroku.app.id" semantic conventions. It represents the unique identifier
-// for the application
-func HerokuAppID(val string) attribute.KeyValue {
-	return HerokuAppIDKey.String(val)
-}
-
-// HerokuReleaseCommit returns an attribute KeyValue conforming to the
-// "heroku.release.commit" semantic conventions. It represents the commit hash
-// for the current release
-func HerokuReleaseCommit(val string) attribute.KeyValue {
-	return HerokuReleaseCommitKey.String(val)
-}
-
-// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming
-// to the "heroku.release.creation_timestamp" semantic conventions. It
-// represents the time and date the release was created
-func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue {
-	return HerokuReleaseCreationTimestampKey.String(val)
-}
-
-// A host is defined as a computing instance. For example, physical servers,
-// virtual machines, switches or disk array.
-const (
-	// HostArchKey is the attribute Key conforming to the "host.arch" semantic
-	// conventions. It represents the CPU architecture the host system is
-	// running on.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	HostArchKey = attribute.Key("host.arch")
-
-	// HostCPUCacheL2SizeKey is the attribute Key conforming to the
-	// "host.cpu.cache.l2.size" semantic conventions. It represents the amount
-	// of level 2 memory cache available to the processor (in Bytes).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 12288000
-	HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size")
-
-	// HostCPUFamilyKey is the attribute Key conforming to the
-	// "host.cpu.family" semantic conventions. It represents the family or
-	// generation of the CPU.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '6', 'PA-RISC 1.1e'
-	HostCPUFamilyKey = attribute.Key("host.cpu.family")
-
-	// HostCPUModelIDKey is the attribute Key conforming to the
-	// "host.cpu.model.id" semantic conventions. It represents the model
-	// identifier. It provides more granular information about the CPU,
-	// distinguishing it from other CPUs within the same family.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '6', '9000/778/B180L'
-	HostCPUModelIDKey = attribute.Key("host.cpu.model.id")
-
-	// HostCPUModelNameKey is the attribute Key conforming to the
-	// "host.cpu.model.name" semantic conventions. It represents the model
-	// designation of the processor.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz'
-	HostCPUModelNameKey = attribute.Key("host.cpu.model.name")
-
-	// HostCPUSteppingKey is the attribute Key conforming to the
-	// "host.cpu.stepping" semantic conventions. It represents the stepping or
-	// core revisions.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1', 'r1p1'
-	HostCPUSteppingKey = attribute.Key("host.cpu.stepping")
-
-	// HostCPUVendorIDKey is the attribute Key conforming to the
-	// "host.cpu.vendor.id" semantic conventions. It represents the processor
-	// manufacturer identifier. A maximum 12-character string.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'GenuineIntel'
-	// Note: [CPUID](https://wiki.osdev.org/CPUID) command returns the vendor
-	// ID string in EBX, EDX and ECX registers. Writing these to memory in this
-	// order results in a 12-character string.
-	HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id")
-
-	// HostIDKey is the attribute Key conforming to the "host.id" semantic
-	// conventions. It represents the unique host ID. For Cloud, this must be
-	// the instance_id assigned by the cloud provider. For non-containerized
-	// systems, this should be the `machine-id`. See the table below for the
-	// sources to use to determine the `machine-id` based on operating system.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'fdbf79e8af94cb7f9e8df36789187052'
-	HostIDKey = attribute.Key("host.id")
-
-	// HostImageIDKey is the attribute Key conforming to the "host.image.id"
-	// semantic conventions. It represents the vM image ID or host OS image ID.
-	// For Cloud, this value is from the provider.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ami-07b06b442921831e5'
-	HostImageIDKey = attribute.Key("host.image.id")
-
-	// HostImageNameKey is the attribute Key conforming to the
-	// "host.image.name" semantic conventions. It represents the name of the VM
-	// image or OS install the host was instantiated from.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905'
-	HostImageNameKey = attribute.Key("host.image.name")
-
-	// HostImageVersionKey is the attribute Key conforming to the
-	// "host.image.version" semantic conventions. It represents the version
-	// string of the VM image or host OS as defined in [Version
-	// Attributes](/docs/resource/README.md#version-attributes).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '0.1'
-	HostImageVersionKey = attribute.Key("host.image.version")
-
-	// HostIPKey is the attribute Key conforming to the "host.ip" semantic
-	// conventions. It represents the available IP addresses of the host,
-	// excluding loopback interfaces.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '192.168.1.140', 'fe80::abc2:4a28:737a:609e'
-	// Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6
-	// addresses MUST be specified in the [RFC
-	// 5952](https://www.rfc-editor.org/rfc/rfc5952.html) format.
-	HostIPKey = attribute.Key("host.ip")
-
-	// HostMacKey is the attribute Key conforming to the "host.mac" semantic
-	// conventions. It represents the available MAC addresses of the host,
-	// excluding loopback interfaces.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'AC-DE-48-23-45-67', 'AC-DE-48-23-45-67-01-9F'
-	// Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal
-	// form](https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf):
-	// as hyphen-separated octets in uppercase hexadecimal form from most to
-	// least significant.
-	HostMacKey = attribute.Key("host.mac")
-
-	// HostNameKey is the attribute Key conforming to the "host.name" semantic
-	// conventions. It represents the name of the host. On Unix systems, it may
-	// contain what the hostname command returns, or the fully qualified
-	// hostname, or another name specified by the user.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry-test'
-	HostNameKey = attribute.Key("host.name")
-
-	// HostTypeKey is the attribute Key conforming to the "host.type" semantic
-	// conventions. It represents the type of host. For Cloud, this must be the
-	// machine type.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'n1-standard-1'
-	HostTypeKey = attribute.Key("host.type")
-)
-
-var (
-	// AMD64
-	HostArchAMD64 = HostArchKey.String("amd64")
-	// ARM32
-	HostArchARM32 = HostArchKey.String("arm32")
-	// ARM64
-	HostArchARM64 = HostArchKey.String("arm64")
-	// Itanium
-	HostArchIA64 = HostArchKey.String("ia64")
-	// 32-bit PowerPC
-	HostArchPPC32 = HostArchKey.String("ppc32")
-	// 64-bit PowerPC
-	HostArchPPC64 = HostArchKey.String("ppc64")
-	// IBM z/Architecture
-	HostArchS390x = HostArchKey.String("s390x")
-	// 32-bit x86
-	HostArchX86 = HostArchKey.String("x86")
-)
-
-// HostCPUCacheL2Size returns an attribute KeyValue conforming to the
-// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of
-// level 2 memory cache available to the processor (in Bytes).
-func HostCPUCacheL2Size(val int) attribute.KeyValue {
-	return HostCPUCacheL2SizeKey.Int(val)
-}
-
-// HostCPUFamily returns an attribute KeyValue conforming to the
-// "host.cpu.family" semantic conventions. It represents the family or
-// generation of the CPU.
-func HostCPUFamily(val string) attribute.KeyValue {
-	return HostCPUFamilyKey.String(val)
-}
-
-// HostCPUModelID returns an attribute KeyValue conforming to the
-// "host.cpu.model.id" semantic conventions. It represents the model
-// identifier. It provides more granular information about the CPU,
-// distinguishing it from other CPUs within the same family.
-func HostCPUModelID(val string) attribute.KeyValue {
-	return HostCPUModelIDKey.String(val)
-}
-
-// HostCPUModelName returns an attribute KeyValue conforming to the
-// "host.cpu.model.name" semantic conventions. It represents the model
-// designation of the processor.
-func HostCPUModelName(val string) attribute.KeyValue {
-	return HostCPUModelNameKey.String(val)
-}
-
-// HostCPUStepping returns an attribute KeyValue conforming to the
-// "host.cpu.stepping" semantic conventions. It represents the stepping or core
-// revisions.
-func HostCPUStepping(val string) attribute.KeyValue {
-	return HostCPUSteppingKey.String(val)
-}
-
-// HostCPUVendorID returns an attribute KeyValue conforming to the
-// "host.cpu.vendor.id" semantic conventions. It represents the processor
-// manufacturer identifier. A maximum 12-character string.
-func HostCPUVendorID(val string) attribute.KeyValue {
-	return HostCPUVendorIDKey.String(val)
-}
-
-// HostID returns an attribute KeyValue conforming to the "host.id" semantic
-// conventions. It represents the unique host ID. For Cloud, this must be the
-// instance_id assigned by the cloud provider. For non-containerized systems,
-// this should be the `machine-id`. See the table below for the sources to use
-// to determine the `machine-id` based on operating system.
-func HostID(val string) attribute.KeyValue {
-	return HostIDKey.String(val)
-}
-
-// HostImageID returns an attribute KeyValue conforming to the
-// "host.image.id" semantic conventions. It represents the vM image ID or host
-// OS image ID. For Cloud, this value is from the provider.
-func HostImageID(val string) attribute.KeyValue {
-	return HostImageIDKey.String(val)
-}
-
-// HostImageName returns an attribute KeyValue conforming to the
-// "host.image.name" semantic conventions. It represents the name of the VM
-// image or OS install the host was instantiated from.
-func HostImageName(val string) attribute.KeyValue {
-	return HostImageNameKey.String(val)
-}
-
-// HostImageVersion returns an attribute KeyValue conforming to the
-// "host.image.version" semantic conventions. It represents the version string
-// of the VM image or host OS as defined in [Version
-// Attributes](/docs/resource/README.md#version-attributes).
-func HostImageVersion(val string) attribute.KeyValue {
-	return HostImageVersionKey.String(val)
-}
-
-// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic
-// conventions. It represents the available IP addresses of the host, excluding
-// loopback interfaces.
-func HostIP(val ...string) attribute.KeyValue {
-	return HostIPKey.StringSlice(val)
-}
-
-// HostMac returns an attribute KeyValue conforming to the "host.mac"
-// semantic conventions. It represents the available MAC addresses of the host,
-// excluding loopback interfaces.
-func HostMac(val ...string) attribute.KeyValue {
-	return HostMacKey.StringSlice(val)
-}
-
-// HostName returns an attribute KeyValue conforming to the "host.name"
-// semantic conventions. It represents the name of the host. On Unix systems,
-// it may contain what the hostname command returns, or the fully qualified
-// hostname, or another name specified by the user.
-func HostName(val string) attribute.KeyValue {
-	return HostNameKey.String(val)
-}
-
-// HostType returns an attribute KeyValue conforming to the "host.type"
-// semantic conventions. It represents the type of host. For Cloud, this must
-// be the machine type.
-func HostType(val string) attribute.KeyValue {
-	return HostTypeKey.String(val)
-}
-
-// Semantic convention attributes in the HTTP namespace.
-const (
-	// HTTPConnectionStateKey is the attribute Key conforming to the
-	// "http.connection.state" semantic conventions. It represents the state of
-	// the HTTP connection in the HTTP connection pool.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'active', 'idle'
-	HTTPConnectionStateKey = attribute.Key("http.connection.state")
-
-	// HTTPRequestBodySizeKey is the attribute Key conforming to the
-	// "http.request.body.size" semantic conventions. It represents the size of
-	// the request payload body in bytes. This is the number of bytes
-	// transferred excluding headers and is often, but not always, present as
-	// the
-	// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length)
-	// header. For requests using transport encoding, this should be the
-	// compressed size.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3495
-	HTTPRequestBodySizeKey = attribute.Key("http.request.body.size")
-
-	// HTTPRequestMethodKey is the attribute Key conforming to the
-	// "http.request.method" semantic conventions. It represents the hTTP
-	// request method.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'GET', 'POST', 'HEAD'
-	// Note: HTTP request method value SHOULD be "known" to the
-	// instrumentation.
-	// By default, this convention defines "known" methods as the ones listed
-	// in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)
-	// and the PATCH method defined in
-	// [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).
-	//
-	// If the HTTP request method is not known to instrumentation, it MUST set
-	// the `http.request.method` attribute to `_OTHER`.
-	//
-	// If the HTTP instrumentation could end up converting valid HTTP request
-	// methods to `_OTHER`, then it MUST provide a way to override
-	// the list of known HTTP methods. If this override is done via environment
-	// variable, then the environment variable MUST be named
-	// OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated
-	// list of case-sensitive known HTTP methods
-	// (this list MUST be a full override of the default known method, it is
-	// not a list of known methods in addition to the defaults).
-	//
-	// HTTP method names are case-sensitive and `http.request.method` attribute
-	// value MUST match a known HTTP method name exactly.
-	// Instrumentations for specific web frameworks that consider HTTP methods
-	// to be case insensitive, SHOULD populate a canonical equivalent.
-	// Tracing instrumentations that do so, MUST also set
-	// `http.request.method_original` to the original value.
-	HTTPRequestMethodKey = attribute.Key("http.request.method")
-
-	// HTTPRequestMethodOriginalKey is the attribute Key conforming to the
-	// "http.request.method_original" semantic conventions. It represents the
-	// original HTTP method sent by the client in the request line.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'GeT', 'ACL', 'foo'
-	HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original")
-
-	// HTTPRequestResendCountKey is the attribute Key conforming to the
-	// "http.request.resend_count" semantic conventions. It represents the
-	// ordinal number of request resending attempt (for any reason, including
-	// redirects).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 3
-	// Note: The resend count SHOULD be updated each time an HTTP request gets
-	// resent by the client, regardless of what was the cause of the resending
-	// (e.g. redirection, authorization failure, 503 Server Unavailable,
-	// network issues, or any other).
-	HTTPRequestResendCountKey = attribute.Key("http.request.resend_count")
-
-	// HTTPRequestSizeKey is the attribute Key conforming to the
-	// "http.request.size" semantic conventions. It represents the total size
-	// of the request in bytes. This should be the total number of bytes sent
-	// over the wire, including the request line (HTTP/1.1), framing (HTTP/2
-	// and HTTP/3), headers, and request body if any.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1437
-	HTTPRequestSizeKey = attribute.Key("http.request.size")
-
-	// HTTPResponseBodySizeKey is the attribute Key conforming to the
-	// "http.response.body.size" semantic conventions. It represents the size
-	// of the response payload body in bytes. This is the number of bytes
-	// transferred excluding headers and is often, but not always, present as
-	// the
-	// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length)
-	// header. For requests using transport encoding, this should be the
-	// compressed size.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3495
-	HTTPResponseBodySizeKey = attribute.Key("http.response.body.size")
-
-	// HTTPResponseSizeKey is the attribute Key conforming to the
-	// "http.response.size" semantic conventions. It represents the total size
-	// of the response in bytes. This should be the total number of bytes sent
-	// over the wire, including the status line (HTTP/1.1), framing (HTTP/2 and
-	// HTTP/3), headers, and response body and trailers if any.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1437
-	HTTPResponseSizeKey = attribute.Key("http.response.size")
-
-	// HTTPResponseStatusCodeKey is the attribute Key conforming to the
-	// "http.response.status_code" semantic conventions. It represents the
-	// [HTTP response status
-	// code](https://tools.ietf.org/html/rfc7231#section-6).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 200
-	HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code")
-
-	// HTTPRouteKey is the attribute Key conforming to the "http.route"
-	// semantic conventions. It represents the matched route, that is, the path
-	// template in the format used by the respective server framework.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '/users/:userID?', '{controller}/{action}/{id?}'
-	// Note: MUST NOT be populated when this is not supported by the HTTP
-	// server framework as the route attribute should have low-cardinality and
-	// the URI path can NOT substitute it.
-	// SHOULD include the [application
-	// root](/docs/http/http-spans.md#http-server-definitions) if there is one.
-	HTTPRouteKey = attribute.Key("http.route")
-)
-
-var (
-	// active state
-	HTTPConnectionStateActive = HTTPConnectionStateKey.String("active")
-	// idle state
-	HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle")
-)
-
-var (
-	// CONNECT method
-	HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT")
-	// DELETE method
-	HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE")
-	// GET method
-	HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET")
-	// HEAD method
-	HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD")
-	// OPTIONS method
-	HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS")
-	// PATCH method
-	HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH")
-	// POST method
-	HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST")
-	// PUT method
-	HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT")
-	// TRACE method
-	HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE")
-	// Any HTTP method that the instrumentation has no prior knowledge of
-	HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER")
-)
-
-// HTTPRequestBodySize returns an attribute KeyValue conforming to the
-// "http.request.body.size" semantic conventions. It represents the size of the
-// request payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length)
-// header. For requests using transport encoding, this should be the compressed
-// size.
-func HTTPRequestBodySize(val int) attribute.KeyValue {
-	return HTTPRequestBodySizeKey.Int(val)
-}
-
-// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the
-// "http.request.method_original" semantic conventions. It represents the
-// original HTTP method sent by the client in the request line.
-func HTTPRequestMethodOriginal(val string) attribute.KeyValue {
-	return HTTPRequestMethodOriginalKey.String(val)
-}
-
-// HTTPRequestResendCount returns an attribute KeyValue conforming to the
-// "http.request.resend_count" semantic conventions. It represents the ordinal
-// number of request resending attempt (for any reason, including redirects).
-func HTTPRequestResendCount(val int) attribute.KeyValue {
-	return HTTPRequestResendCountKey.Int(val)
-}
-
-// HTTPRequestSize returns an attribute KeyValue conforming to the
-// "http.request.size" semantic conventions. It represents the total size of
-// the request in bytes. This should be the total number of bytes sent over the
-// wire, including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
-// headers, and request body if any.
-func HTTPRequestSize(val int) attribute.KeyValue {
-	return HTTPRequestSizeKey.Int(val)
-}
-
-// HTTPResponseBodySize returns an attribute KeyValue conforming to the
-// "http.response.body.size" semantic conventions. It represents the size of
-// the response payload body in bytes. This is the number of bytes transferred
-// excluding headers and is often, but not always, present as the
-// [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length)
-// header. For requests using transport encoding, this should be the compressed
-// size.
-func HTTPResponseBodySize(val int) attribute.KeyValue {
-	return HTTPResponseBodySizeKey.Int(val)
-}
-
-// HTTPResponseSize returns an attribute KeyValue conforming to the
-// "http.response.size" semantic conventions. It represents the total size of
-// the response in bytes. This should be the total number of bytes sent over
-// the wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3),
-// headers, and response body and trailers if any.
-func HTTPResponseSize(val int) attribute.KeyValue {
-	return HTTPResponseSizeKey.Int(val)
-}
-
-// HTTPResponseStatusCode returns an attribute KeyValue conforming to the
-// "http.response.status_code" semantic conventions. It represents the [HTTP
-// response status code](https://tools.ietf.org/html/rfc7231#section-6).
-func HTTPResponseStatusCode(val int) attribute.KeyValue {
-	return HTTPResponseStatusCodeKey.Int(val)
-}
-
-// HTTPRoute returns an attribute KeyValue conforming to the "http.route"
-// semantic conventions. It represents the matched route, that is, the path
-// template in the format used by the respective server framework.
-func HTTPRoute(val string) attribute.KeyValue {
-	return HTTPRouteKey.String(val)
-}
-
-// Java Virtual machine related attributes.
-const (
-	// JvmBufferPoolNameKey is the attribute Key conforming to the
-	// "jvm.buffer.pool.name" semantic conventions. It represents the name of
-	// the buffer pool.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'mapped', 'direct'
-	// Note: Pool names are generally obtained via
-	// [BufferPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html#getName()).
-	JvmBufferPoolNameKey = attribute.Key("jvm.buffer.pool.name")
-
-	// JvmGcActionKey is the attribute Key conforming to the "jvm.gc.action"
-	// semantic conventions. It represents the name of the garbage collector
-	// action.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'end of minor GC', 'end of major GC'
-	// Note: Garbage collector action is generally obtained via
-	// [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).
-	JvmGcActionKey = attribute.Key("jvm.gc.action")
-
-	// JvmGcNameKey is the attribute Key conforming to the "jvm.gc.name"
-	// semantic conventions. It represents the name of the garbage collector.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'G1 Young Generation', 'G1 Old Generation'
-	// Note: Garbage collector name is generally obtained via
-	// [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).
-	JvmGcNameKey = attribute.Key("jvm.gc.name")
-
-	// JvmMemoryPoolNameKey is the attribute Key conforming to the
-	// "jvm.memory.pool.name" semantic conventions. It represents the name of
-	// the memory pool.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'G1 Old Gen', 'G1 Eden space', 'G1 Survivor Space'
-	// Note: Pool names are generally obtained via
-	// [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).
-	JvmMemoryPoolNameKey = attribute.Key("jvm.memory.pool.name")
-
-	// JvmMemoryTypeKey is the attribute Key conforming to the
-	// "jvm.memory.type" semantic conventions. It represents the type of
-	// memory.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'heap', 'non_heap'
-	JvmMemoryTypeKey = attribute.Key("jvm.memory.type")
-
-	// JvmThreadDaemonKey is the attribute Key conforming to the
-	// "jvm.thread.daemon" semantic conventions. It represents the whether the
-	// thread is daemon or not.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: stable
-	JvmThreadDaemonKey = attribute.Key("jvm.thread.daemon")
-
-	// JvmThreadStateKey is the attribute Key conforming to the
-	// "jvm.thread.state" semantic conventions. It represents the state of the
-	// thread.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'runnable', 'blocked'
-	JvmThreadStateKey = attribute.Key("jvm.thread.state")
-)
-
-var (
-	// Heap memory
-	JvmMemoryTypeHeap = JvmMemoryTypeKey.String("heap")
-	// Non-heap memory
-	JvmMemoryTypeNonHeap = JvmMemoryTypeKey.String("non_heap")
-)
-
-var (
-	// A thread that has not yet started is in this state
-	JvmThreadStateNew = JvmThreadStateKey.String("new")
-	// A thread executing in the Java virtual machine is in this state
-	JvmThreadStateRunnable = JvmThreadStateKey.String("runnable")
-	// A thread that is blocked waiting for a monitor lock is in this state
-	JvmThreadStateBlocked = JvmThreadStateKey.String("blocked")
-	// A thread that is waiting indefinitely for another thread to perform a particular action is in this state
-	JvmThreadStateWaiting = JvmThreadStateKey.String("waiting")
-	// A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state
-	JvmThreadStateTimedWaiting = JvmThreadStateKey.String("timed_waiting")
-	// A thread that has exited is in this state
-	JvmThreadStateTerminated = JvmThreadStateKey.String("terminated")
-)
-
-// JvmBufferPoolName returns an attribute KeyValue conforming to the
-// "jvm.buffer.pool.name" semantic conventions. It represents the name of the
-// buffer pool.
-func JvmBufferPoolName(val string) attribute.KeyValue {
-	return JvmBufferPoolNameKey.String(val)
-}
-
-// JvmGcAction returns an attribute KeyValue conforming to the
-// "jvm.gc.action" semantic conventions. It represents the name of the garbage
-// collector action.
-func JvmGcAction(val string) attribute.KeyValue {
-	return JvmGcActionKey.String(val)
-}
-
-// JvmGcName returns an attribute KeyValue conforming to the "jvm.gc.name"
-// semantic conventions. It represents the name of the garbage collector.
-func JvmGcName(val string) attribute.KeyValue {
-	return JvmGcNameKey.String(val)
-}
-
-// JvmMemoryPoolName returns an attribute KeyValue conforming to the
-// "jvm.memory.pool.name" semantic conventions. It represents the name of the
-// memory pool.
-func JvmMemoryPoolName(val string) attribute.KeyValue {
-	return JvmMemoryPoolNameKey.String(val)
-}
-
-// JvmThreadDaemon returns an attribute KeyValue conforming to the
-// "jvm.thread.daemon" semantic conventions. It represents the whether the
-// thread is daemon or not.
-func JvmThreadDaemon(val bool) attribute.KeyValue {
-	return JvmThreadDaemonKey.Bool(val)
-}
-
-// Kubernetes resource attributes.
-const (
-	// K8SClusterNameKey is the attribute Key conforming to the
-	// "k8s.cluster.name" semantic conventions. It represents the name of the
-	// cluster.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry-cluster'
-	K8SClusterNameKey = attribute.Key("k8s.cluster.name")
-
-	// K8SClusterUIDKey is the attribute Key conforming to the
-	// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for
-	// the cluster, set to the UID of the `kube-system` namespace.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '218fc5a9-a5f1-4b54-aa05-46717d0ab26d'
-	// Note: K8S doesn't have support for obtaining a cluster ID. If this is
-	// ever
-	// added, we will recommend collecting the `k8s.cluster.uid` through the
-	// official APIs. In the meantime, we are able to use the `uid` of the
-	// `kube-system` namespace as a proxy for cluster ID. Read on for the
-	// rationale.
-	//
-	// Every object created in a K8S cluster is assigned a distinct UID. The
-	// `kube-system` namespace is used by Kubernetes itself and will exist
-	// for the lifetime of the cluster. Using the `uid` of the `kube-system`
-	// namespace is a reasonable proxy for the K8S ClusterID as it will only
-	// change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
-	// UUIDs as standardized by
-	// [ISO/IEC 9834-8 and ITU-T
-	// X.667](https://www.itu.int/ITU-T/studygroups/com17/oid.html).
-	// Which states:
-	//
-	// > If generated according to one of the mechanisms defined in Rec.
-	//   ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be
-	//   different from all other UUIDs generated before 3603 A.D., or is
-	//   extremely likely to be different (depending on the mechanism chosen).
-	//
-	// Therefore, UIDs between clusters should be extremely unlikely to
-	// conflict.
-	K8SClusterUIDKey = attribute.Key("k8s.cluster.uid")
-
-	// K8SContainerNameKey is the attribute Key conforming to the
-	// "k8s.container.name" semantic conventions. It represents the name of the
-	// Container from Pod specification, must be unique within a Pod. Container
-	// runtime usually uses different globally unique name (`container.name`).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'redis'
-	K8SContainerNameKey = attribute.Key("k8s.container.name")
-
-	// K8SContainerRestartCountKey is the attribute Key conforming to the
-	// "k8s.container.restart_count" semantic conventions. It represents the
-	// number of times the container was restarted. This attribute can be used
-	// to identify a particular container (running or stopped) within a
-	// container spec.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count")
-
-	// K8SContainerStatusLastTerminatedReasonKey is the attribute Key
-	// conforming to the "k8s.container.status.last_terminated_reason" semantic
-	// conventions. It represents the last terminated reason of the Container.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Evicted', 'Error'
-	K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason")
-
-	// K8SCronJobNameKey is the attribute Key conforming to the
-	// "k8s.cronjob.name" semantic conventions. It represents the name of the
-	// CronJob.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SCronJobNameKey = attribute.Key("k8s.cronjob.name")
-
-	// K8SCronJobUIDKey is the attribute Key conforming to the
-	// "k8s.cronjob.uid" semantic conventions. It represents the UID of the
-	// CronJob.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid")
-
-	// K8SDaemonSetNameKey is the attribute Key conforming to the
-	// "k8s.daemonset.name" semantic conventions. It represents the name of the
-	// DaemonSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name")
-
-	// K8SDaemonSetUIDKey is the attribute Key conforming to the
-	// "k8s.daemonset.uid" semantic conventions. It represents the UID of the
-	// DaemonSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid")
-
-	// K8SDeploymentNameKey is the attribute Key conforming to the
-	// "k8s.deployment.name" semantic conventions. It represents the name of
-	// the Deployment.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SDeploymentNameKey = attribute.Key("k8s.deployment.name")
-
-	// K8SDeploymentUIDKey is the attribute Key conforming to the
-	// "k8s.deployment.uid" semantic conventions. It represents the UID of the
-	// Deployment.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid")
-
-	// K8SJobNameKey is the attribute Key conforming to the "k8s.job.name"
-	// semantic conventions. It represents the name of the Job.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SJobNameKey = attribute.Key("k8s.job.name")
-
-	// K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid"
-	// semantic conventions. It represents the UID of the Job.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SJobUIDKey = attribute.Key("k8s.job.uid")
-
-	// K8SNamespaceNameKey is the attribute Key conforming to the
-	// "k8s.namespace.name" semantic conventions. It represents the name of the
-	// namespace that the pod is running in.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'default'
-	K8SNamespaceNameKey = attribute.Key("k8s.namespace.name")
-
-	// K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name"
-	// semantic conventions. It represents the name of the Node.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'node-1'
-	K8SNodeNameKey = attribute.Key("k8s.node.name")
-
-	// K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid"
-	// semantic conventions. It represents the UID of the Node.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2'
-	K8SNodeUIDKey = attribute.Key("k8s.node.uid")
-
-	// K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name"
-	// semantic conventions. It represents the name of the Pod.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry-pod-autoconf'
-	K8SPodNameKey = attribute.Key("k8s.pod.name")
-
-	// K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid"
-	// semantic conventions. It represents the UID of the Pod.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SPodUIDKey = attribute.Key("k8s.pod.uid")
-
-	// K8SReplicaSetNameKey is the attribute Key conforming to the
-	// "k8s.replicaset.name" semantic conventions. It represents the name of
-	// the ReplicaSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name")
-
-	// K8SReplicaSetUIDKey is the attribute Key conforming to the
-	// "k8s.replicaset.uid" semantic conventions. It represents the UID of the
-	// ReplicaSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid")
-
-	// K8SStatefulSetNameKey is the attribute Key conforming to the
-	// "k8s.statefulset.name" semantic conventions. It represents the name of
-	// the StatefulSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry'
-	K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name")
-
-	// K8SStatefulSetUIDKey is the attribute Key conforming to the
-	// "k8s.statefulset.uid" semantic conventions. It represents the UID of the
-	// StatefulSet.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid")
-)
-
-// K8SClusterName returns an attribute KeyValue conforming to the
-// "k8s.cluster.name" semantic conventions. It represents the name of the
-// cluster.
-func K8SClusterName(val string) attribute.KeyValue {
-	return K8SClusterNameKey.String(val)
-}
-
-// K8SClusterUID returns an attribute KeyValue conforming to the
-// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the
-// cluster, set to the UID of the `kube-system` namespace.
-func K8SClusterUID(val string) attribute.KeyValue {
-	return K8SClusterUIDKey.String(val)
-}
-
-// K8SContainerName returns an attribute KeyValue conforming to the
-// "k8s.container.name" semantic conventions. It represents the name of the
-// Container from Pod specification, must be unique within a Pod. Container
-// runtime usually uses different globally unique name (`container.name`).
-func K8SContainerName(val string) attribute.KeyValue {
-	return K8SContainerNameKey.String(val)
-}
-
-// K8SContainerRestartCount returns an attribute KeyValue conforming to the
-// "k8s.container.restart_count" semantic conventions. It represents the number
-// of times the container was restarted. This attribute can be used to identify
-// a particular container (running or stopped) within a container spec.
-func K8SContainerRestartCount(val int) attribute.KeyValue {
-	return K8SContainerRestartCountKey.Int(val)
-}
-
-// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue
-// conforming to the "k8s.container.status.last_terminated_reason" semantic
-// conventions. It represents the last terminated reason of the Container.
-func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue {
-	return K8SContainerStatusLastTerminatedReasonKey.String(val)
-}
-
-// K8SCronJobName returns an attribute KeyValue conforming to the
-// "k8s.cronjob.name" semantic conventions. It represents the name of the
-// CronJob.
-func K8SCronJobName(val string) attribute.KeyValue {
-	return K8SCronJobNameKey.String(val)
-}
-
-// K8SCronJobUID returns an attribute KeyValue conforming to the
-// "k8s.cronjob.uid" semantic conventions. It represents the UID of the
-// CronJob.
-func K8SCronJobUID(val string) attribute.KeyValue {
-	return K8SCronJobUIDKey.String(val)
-}
-
-// K8SDaemonSetName returns an attribute KeyValue conforming to the
-// "k8s.daemonset.name" semantic conventions. It represents the name of the
-// DaemonSet.
-func K8SDaemonSetName(val string) attribute.KeyValue {
-	return K8SDaemonSetNameKey.String(val)
-}
-
-// K8SDaemonSetUID returns an attribute KeyValue conforming to the
-// "k8s.daemonset.uid" semantic conventions. It represents the UID of the
-// DaemonSet.
-func K8SDaemonSetUID(val string) attribute.KeyValue {
-	return K8SDaemonSetUIDKey.String(val)
-}
-
-// K8SDeploymentName returns an attribute KeyValue conforming to the
-// "k8s.deployment.name" semantic conventions. It represents the name of the
-// Deployment.
-func K8SDeploymentName(val string) attribute.KeyValue {
-	return K8SDeploymentNameKey.String(val)
-}
-
-// K8SDeploymentUID returns an attribute KeyValue conforming to the
-// "k8s.deployment.uid" semantic conventions. It represents the UID of the
-// Deployment.
-func K8SDeploymentUID(val string) attribute.KeyValue {
-	return K8SDeploymentUIDKey.String(val)
-}
-
-// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name"
-// semantic conventions. It represents the name of the Job.
-func K8SJobName(val string) attribute.KeyValue {
-	return K8SJobNameKey.String(val)
-}
-
-// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid"
-// semantic conventions. It represents the UID of the Job.
-func K8SJobUID(val string) attribute.KeyValue {
-	return K8SJobUIDKey.String(val)
-}
-
-// K8SNamespaceName returns an attribute KeyValue conforming to the
-// "k8s.namespace.name" semantic conventions. It represents the name of the
-// namespace that the pod is running in.
-func K8SNamespaceName(val string) attribute.KeyValue {
-	return K8SNamespaceNameKey.String(val)
-}
-
-// K8SNodeName returns an attribute KeyValue conforming to the
-// "k8s.node.name" semantic conventions. It represents the name of the Node.
-func K8SNodeName(val string) attribute.KeyValue {
-	return K8SNodeNameKey.String(val)
-}
-
-// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid"
-// semantic conventions. It represents the UID of the Node.
-func K8SNodeUID(val string) attribute.KeyValue {
-	return K8SNodeUIDKey.String(val)
-}
-
-// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name"
-// semantic conventions. It represents the name of the Pod.
-func K8SPodName(val string) attribute.KeyValue {
-	return K8SPodNameKey.String(val)
-}
-
-// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid"
-// semantic conventions. It represents the UID of the Pod.
-func K8SPodUID(val string) attribute.KeyValue {
-	return K8SPodUIDKey.String(val)
-}
-
-// K8SReplicaSetName returns an attribute KeyValue conforming to the
-// "k8s.replicaset.name" semantic conventions. It represents the name of the
-// ReplicaSet.
-func K8SReplicaSetName(val string) attribute.KeyValue {
-	return K8SReplicaSetNameKey.String(val)
-}
-
-// K8SReplicaSetUID returns an attribute KeyValue conforming to the
-// "k8s.replicaset.uid" semantic conventions. It represents the UID of the
-// ReplicaSet.
-func K8SReplicaSetUID(val string) attribute.KeyValue {
-	return K8SReplicaSetUIDKey.String(val)
-}
-
-// K8SStatefulSetName returns an attribute KeyValue conforming to the
-// "k8s.statefulset.name" semantic conventions. It represents the name of the
-// StatefulSet.
-func K8SStatefulSetName(val string) attribute.KeyValue {
-	return K8SStatefulSetNameKey.String(val)
-}
-
-// K8SStatefulSetUID returns an attribute KeyValue conforming to the
-// "k8s.statefulset.uid" semantic conventions. It represents the UID of the
-// StatefulSet.
-func K8SStatefulSetUID(val string) attribute.KeyValue {
-	return K8SStatefulSetUIDKey.String(val)
-}
-
-// Log attributes
-const (
-	// LogIostreamKey is the attribute Key conforming to the "log.iostream"
-	// semantic conventions. It represents the stream associated with the log.
-	// See below for a list of well-known values.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	LogIostreamKey = attribute.Key("log.iostream")
-)
-
-var (
-	// Logs from stdout stream
-	LogIostreamStdout = LogIostreamKey.String("stdout")
-	// Events from stderr stream
-	LogIostreamStderr = LogIostreamKey.String("stderr")
-)
-
-// Attributes for a file to which log was emitted.
-const (
-	// LogFileNameKey is the attribute Key conforming to the "log.file.name"
-	// semantic conventions. It represents the basename of the file.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'audit.log'
-	LogFileNameKey = attribute.Key("log.file.name")
-
-	// LogFileNameResolvedKey is the attribute Key conforming to the
-	// "log.file.name_resolved" semantic conventions. It represents the
-	// basename of the file, with symlinks resolved.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'uuid.log'
-	LogFileNameResolvedKey = attribute.Key("log.file.name_resolved")
-
-	// LogFilePathKey is the attribute Key conforming to the "log.file.path"
-	// semantic conventions. It represents the full path to the file.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/var/log/mysql/audit.log'
-	LogFilePathKey = attribute.Key("log.file.path")
-
-	// LogFilePathResolvedKey is the attribute Key conforming to the
-	// "log.file.path_resolved" semantic conventions. It represents the full
-	// path to the file, with symlinks resolved.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/var/lib/docker/uuid.log'
-	LogFilePathResolvedKey = attribute.Key("log.file.path_resolved")
-)
-
-// LogFileName returns an attribute KeyValue conforming to the
-// "log.file.name" semantic conventions. It represents the basename of the
-// file.
-func LogFileName(val string) attribute.KeyValue {
-	return LogFileNameKey.String(val)
-}
-
-// LogFileNameResolved returns an attribute KeyValue conforming to the
-// "log.file.name_resolved" semantic conventions. It represents the basename of
-// the file, with symlinks resolved.
-func LogFileNameResolved(val string) attribute.KeyValue {
-	return LogFileNameResolvedKey.String(val)
-}
-
-// LogFilePath returns an attribute KeyValue conforming to the
-// "log.file.path" semantic conventions. It represents the full path to the
-// file.
-func LogFilePath(val string) attribute.KeyValue {
-	return LogFilePathKey.String(val)
-}
-
-// LogFilePathResolved returns an attribute KeyValue conforming to the
-// "log.file.path_resolved" semantic conventions. It represents the full path
-// to the file, with symlinks resolved.
-func LogFilePathResolved(val string) attribute.KeyValue {
-	return LogFilePathResolvedKey.String(val)
-}
-
-// The generic attributes that may be used in any Log Record.
-const (
-	// LogRecordUIDKey is the attribute Key conforming to the "log.record.uid"
-	// semantic conventions. It represents a unique identifier for the Log
-	// Record.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '01ARZ3NDEKTSV4RRFFQ69G5FAV'
-	// Note: If an id is provided, other log records with the same id will be
-	// considered duplicates and can be removed safely. This means, that two
-	// distinguishable log records MUST have different values.
-	// The id MAY be an [Universally Unique Lexicographically Sortable
-	// Identifier (ULID)](https://github.com/ulid/spec), but other identifiers
-	// (e.g. UUID) may be used as needed.
-	LogRecordUIDKey = attribute.Key("log.record.uid")
-)
-
-// LogRecordUID returns an attribute KeyValue conforming to the
-// "log.record.uid" semantic conventions. It represents a unique identifier for
-// the Log Record.
-func LogRecordUID(val string) attribute.KeyValue {
-	return LogRecordUIDKey.String(val)
-}
-
-// Attributes describing telemetry around messaging systems and messaging
-// activities.
-const (
-	// MessagingBatchMessageCountKey is the attribute Key conforming to the
-	// "messaging.batch.message_count" semantic conventions. It represents the
-	// number of messages sent, received, or processed in the scope of the
-	// batching operation.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 0, 1, 2
-	// Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on
-	// spans that operate with a single message. When a messaging client
-	// library supports both batch and single-message API for the same
-	// operation, instrumentations SHOULD use `messaging.batch.message_count`
-	// for batching APIs and SHOULD NOT use it for single-message APIs.
-	MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count")
-
-	// MessagingClientIDKey is the attribute Key conforming to the
-	// "messaging.client.id" semantic conventions. It represents a unique
-	// identifier for the client that consumes or produces a message.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'client-5', 'myhost@8742@s8083jm'
-	MessagingClientIDKey = attribute.Key("messaging.client.id")
-
-	// MessagingDestinationAnonymousKey is the attribute Key conforming to the
-	// "messaging.destination.anonymous" semantic conventions. It represents a
-	// boolean that is true if the message destination is anonymous (could be
-	// unnamed or have auto-generated name).
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous")
-
-	// MessagingDestinationNameKey is the attribute Key conforming to the
-	// "messaging.destination.name" semantic conventions. It represents the
-	// message destination name
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MyQueue', 'MyTopic'
-	// Note: Destination name SHOULD uniquely identify a specific queue, topic
-	// or other entity within the broker. If
-	// the broker doesn't have such notion, the destination name SHOULD
-	// uniquely identify the broker.
-	MessagingDestinationNameKey = attribute.Key("messaging.destination.name")
-
-	// MessagingDestinationPartitionIDKey is the attribute Key conforming to
-	// the "messaging.destination.partition.id" semantic conventions. It
-	// represents the identifier of the partition messages are sent to or
-	// received from, unique within the `messaging.destination.name`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1'
-	MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id")
-
-	// MessagingDestinationTemplateKey is the attribute Key conforming to the
-	// "messaging.destination.template" semantic conventions. It represents the
-	// low cardinality representation of the messaging destination name
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/customers/{customerID}'
-	// Note: Destination names could be constructed from templates. An example
-	// would be a destination name involving a user name or product id.
-	// Although the destination name in this case is of high cardinality, the
-	// underlying template is of low cardinality and can be effectively used
-	// for grouping and aggregation.
-	MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template")
-
-	// MessagingDestinationTemporaryKey is the attribute Key conforming to the
-	// "messaging.destination.temporary" semantic conventions. It represents a
-	// boolean that is true if the message destination is temporary and might
-	// not exist anymore after messages are processed.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary")
-
-	// MessagingDestinationPublishAnonymousKey is the attribute Key conforming
-	// to the "messaging.destination_publish.anonymous" semantic conventions.
-	// It represents a boolean that is true if the publish message destination
-	// is anonymous (could be unnamed or have auto-generated name).
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingDestinationPublishAnonymousKey = attribute.Key("messaging.destination_publish.anonymous")
-
-	// MessagingDestinationPublishNameKey is the attribute Key conforming to
-	// the "messaging.destination_publish.name" semantic conventions. It
-	// represents the name of the original destination the message was
-	// published to
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MyQueue', 'MyTopic'
-	// Note: The name SHOULD uniquely identify a specific queue, topic, or
-	// other entity within the broker. If
-	// the broker doesn't have such notion, the original destination name
-	// SHOULD uniquely identify the broker.
-	MessagingDestinationPublishNameKey = attribute.Key("messaging.destination_publish.name")
-
-	// MessagingMessageBodySizeKey is the attribute Key conforming to the
-	// "messaging.message.body.size" semantic conventions. It represents the
-	// size of the message body in bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1439
-	// Note: This can refer to both the compressed or uncompressed body size.
-	// If both sizes are known, the uncompressed
-	// body size should be used.
-	MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size")
-
-	// MessagingMessageConversationIDKey is the attribute Key conforming to the
-	// "messaging.message.conversation_id" semantic conventions. It represents
-	// the conversation ID identifying the conversation to which the message
-	// belongs, represented as a string. Sometimes called "Correlation ID".
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MyConversationID'
-	MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id")
-
-	// MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the
-	// "messaging.message.envelope.size" semantic conventions. It represents
-	// the size of the message body and metadata in bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 2738
-	// Note: This can refer to both the compressed or uncompressed size. If
-	// both sizes are known, the uncompressed
-	// size should be used.
-	MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size")
-
-	// MessagingMessageIDKey is the attribute Key conforming to the
-	// "messaging.message.id" semantic conventions. It represents a value used
-	// by the messaging system as an identifier for the message, represented as
-	// a string.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '452a7c7c7c7048c2f887f61572b18fc2'
-	MessagingMessageIDKey = attribute.Key("messaging.message.id")
-
-	// MessagingOperationNameKey is the attribute Key conforming to the
-	// "messaging.operation.name" semantic conventions. It represents the
-	// system-specific name of the messaging operation.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ack', 'nack', 'send'
-	MessagingOperationNameKey = attribute.Key("messaging.operation.name")
-
-	// MessagingOperationTypeKey is the attribute Key conforming to the
-	// "messaging.operation.type" semantic conventions. It represents a string
-	// identifying the type of the messaging operation.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: If a custom value is used, it MUST be of low cardinality.
-	MessagingOperationTypeKey = attribute.Key("messaging.operation.type")
-
-	// MessagingSystemKey is the attribute Key conforming to the
-	// "messaging.system" semantic conventions. It represents the messaging
-	// system as identified by the client instrumentation.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: The actual messaging system may differ from the one known by the
-	// client. For example, when using Kafka client libraries to communicate
-	// with Azure Event Hubs, the `messaging.system` is set to `kafka` based on
-	// the instrumentation's best knowledge.
-	MessagingSystemKey = attribute.Key("messaging.system")
-)
-
-var (
-	// One or more messages are provided for publishing to an intermediary. If a single message is published, the context of the "Publish" span can be used as the creation context and no "Create" span needs to be created
-	MessagingOperationTypePublish = MessagingOperationTypeKey.String("publish")
-	// A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch publishing scenarios
-	MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create")
-	// One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages
-	MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive")
-	// One or more messages are delivered to or processed by a consumer
-	MessagingOperationTypeDeliver = MessagingOperationTypeKey.String("process")
-	// One or more messages are settled
-	MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle")
-)
-
-var (
-	// Apache ActiveMQ
-	MessagingSystemActivemq = MessagingSystemKey.String("activemq")
-	// Amazon Simple Queue Service (SQS)
-	MessagingSystemAWSSqs = MessagingSystemKey.String("aws_sqs")
-	// Azure Event Grid
-	MessagingSystemEventgrid = MessagingSystemKey.String("eventgrid")
-	// Azure Event Hubs
-	MessagingSystemEventhubs = MessagingSystemKey.String("eventhubs")
-	// Azure Service Bus
-	MessagingSystemServicebus = MessagingSystemKey.String("servicebus")
-	// Google Cloud Pub/Sub
-	MessagingSystemGCPPubsub = MessagingSystemKey.String("gcp_pubsub")
-	// Java Message Service
-	MessagingSystemJms = MessagingSystemKey.String("jms")
-	// Apache Kafka
-	MessagingSystemKafka = MessagingSystemKey.String("kafka")
-	// RabbitMQ
-	MessagingSystemRabbitmq = MessagingSystemKey.String("rabbitmq")
-	// Apache RocketMQ
-	MessagingSystemRocketmq = MessagingSystemKey.String("rocketmq")
-)
-
-// MessagingBatchMessageCount returns an attribute KeyValue conforming to
-// the "messaging.batch.message_count" semantic conventions. It represents the
-// number of messages sent, received, or processed in the scope of the batching
-// operation.
-func MessagingBatchMessageCount(val int) attribute.KeyValue {
-	return MessagingBatchMessageCountKey.Int(val)
-}
-
-// MessagingClientID returns an attribute KeyValue conforming to the
-// "messaging.client.id" semantic conventions. It represents a unique
-// identifier for the client that consumes or produces a message.
-func MessagingClientID(val string) attribute.KeyValue {
-	return MessagingClientIDKey.String(val)
-}
-
-// MessagingDestinationAnonymous returns an attribute KeyValue conforming to
-// the "messaging.destination.anonymous" semantic conventions. It represents a
-// boolean that is true if the message destination is anonymous (could be
-// unnamed or have auto-generated name).
-func MessagingDestinationAnonymous(val bool) attribute.KeyValue {
-	return MessagingDestinationAnonymousKey.Bool(val)
-}
-
-// MessagingDestinationName returns an attribute KeyValue conforming to the
-// "messaging.destination.name" semantic conventions. It represents the message
-// destination name
-func MessagingDestinationName(val string) attribute.KeyValue {
-	return MessagingDestinationNameKey.String(val)
-}
-
-// MessagingDestinationPartitionID returns an attribute KeyValue conforming
-// to the "messaging.destination.partition.id" semantic conventions. It
-// represents the identifier of the partition messages are sent to or received
-// from, unique within the `messaging.destination.name`.
-func MessagingDestinationPartitionID(val string) attribute.KeyValue {
-	return MessagingDestinationPartitionIDKey.String(val)
-}
-
-// MessagingDestinationTemplate returns an attribute KeyValue conforming to
-// the "messaging.destination.template" semantic conventions. It represents the
-// low cardinality representation of the messaging destination name
-func MessagingDestinationTemplate(val string) attribute.KeyValue {
-	return MessagingDestinationTemplateKey.String(val)
-}
-
-// MessagingDestinationTemporary returns an attribute KeyValue conforming to
-// the "messaging.destination.temporary" semantic conventions. It represents a
-// boolean that is true if the message destination is temporary and might not
-// exist anymore after messages are processed.
-func MessagingDestinationTemporary(val bool) attribute.KeyValue {
-	return MessagingDestinationTemporaryKey.Bool(val)
-}
-
-// MessagingDestinationPublishAnonymous returns an attribute KeyValue
-// conforming to the "messaging.destination_publish.anonymous" semantic
-// conventions. It represents a boolean that is true if the publish message
-// destination is anonymous (could be unnamed or have auto-generated name).
-func MessagingDestinationPublishAnonymous(val bool) attribute.KeyValue {
-	return MessagingDestinationPublishAnonymousKey.Bool(val)
-}
-
-// MessagingDestinationPublishName returns an attribute KeyValue conforming
-// to the "messaging.destination_publish.name" semantic conventions. It
-// represents the name of the original destination the message was published to
-func MessagingDestinationPublishName(val string) attribute.KeyValue {
-	return MessagingDestinationPublishNameKey.String(val)
-}
-
-// MessagingMessageBodySize returns an attribute KeyValue conforming to the
-// "messaging.message.body.size" semantic conventions. It represents the size
-// of the message body in bytes.
-func MessagingMessageBodySize(val int) attribute.KeyValue {
-	return MessagingMessageBodySizeKey.Int(val)
-}
-
-// MessagingMessageConversationID returns an attribute KeyValue conforming
-// to the "messaging.message.conversation_id" semantic conventions. It
-// represents the conversation ID identifying the conversation to which the
-// message belongs, represented as a string. Sometimes called "Correlation ID".
-func MessagingMessageConversationID(val string) attribute.KeyValue {
-	return MessagingMessageConversationIDKey.String(val)
-}
-
-// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to
-// the "messaging.message.envelope.size" semantic conventions. It represents
-// the size of the message body and metadata in bytes.
-func MessagingMessageEnvelopeSize(val int) attribute.KeyValue {
-	return MessagingMessageEnvelopeSizeKey.Int(val)
-}
-
-// MessagingMessageID returns an attribute KeyValue conforming to the
-// "messaging.message.id" semantic conventions. It represents a value used by
-// the messaging system as an identifier for the message, represented as a
-// string.
-func MessagingMessageID(val string) attribute.KeyValue {
-	return MessagingMessageIDKey.String(val)
-}
-
-// MessagingOperationName returns an attribute KeyValue conforming to the
-// "messaging.operation.name" semantic conventions. It represents the
-// system-specific name of the messaging operation.
-func MessagingOperationName(val string) attribute.KeyValue {
-	return MessagingOperationNameKey.String(val)
-}
-
-// This group describes attributes specific to Apache Kafka.
-const (
-	// MessagingKafkaConsumerGroupKey is the attribute Key conforming to the
-	// "messaging.kafka.consumer.group" semantic conventions. It represents the
-	// name of the Kafka Consumer Group that is handling the message. Only
-	// applies to consumers, not producers.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'my-group'
-	MessagingKafkaConsumerGroupKey = attribute.Key("messaging.kafka.consumer.group")
-
-	// MessagingKafkaMessageKeyKey is the attribute Key conforming to the
-	// "messaging.kafka.message.key" semantic conventions. It represents the
-	// message keys in Kafka are used for grouping alike messages to ensure
-	// they're processed on the same partition. They differ from
-	// `messaging.message.id` in that they're not unique. If the key is `null`,
-	// the attribute MUST NOT be set.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myKey'
-	// Note: If the key type is not string, it's string representation has to
-	// be supplied for the attribute. If the key has no unambiguous, canonical
-	// string form, don't include its value.
-	MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key")
-
-	// MessagingKafkaMessageOffsetKey is the attribute Key conforming to the
-	// "messaging.kafka.message.offset" semantic conventions. It represents the
-	// offset of a record in the corresponding Kafka partition.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 42
-	MessagingKafkaMessageOffsetKey = attribute.Key("messaging.kafka.message.offset")
-
-	// MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the
-	// "messaging.kafka.message.tombstone" semantic conventions. It represents
-	// a boolean that is true if the message is a tombstone.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone")
-)
-
-// MessagingKafkaConsumerGroup returns an attribute KeyValue conforming to
-// the "messaging.kafka.consumer.group" semantic conventions. It represents the
-// name of the Kafka Consumer Group that is handling the message. Only applies
-// to consumers, not producers.
-func MessagingKafkaConsumerGroup(val string) attribute.KeyValue {
-	return MessagingKafkaConsumerGroupKey.String(val)
-}
-
-// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the
-// "messaging.kafka.message.key" semantic conventions. It represents the
-// message keys in Kafka are used for grouping alike messages to ensure they're
-// processed on the same partition. They differ from `messaging.message.id` in
-// that they're not unique. If the key is `null`, the attribute MUST NOT be
-// set.
-func MessagingKafkaMessageKey(val string) attribute.KeyValue {
-	return MessagingKafkaMessageKeyKey.String(val)
-}
-
-// MessagingKafkaMessageOffset returns an attribute KeyValue conforming to
-// the "messaging.kafka.message.offset" semantic conventions. It represents the
-// offset of a record in the corresponding Kafka partition.
-func MessagingKafkaMessageOffset(val int) attribute.KeyValue {
-	return MessagingKafkaMessageOffsetKey.Int(val)
-}
-
-// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming
-// to the "messaging.kafka.message.tombstone" semantic conventions. It
-// represents a boolean that is true if the message is a tombstone.
-func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue {
-	return MessagingKafkaMessageTombstoneKey.Bool(val)
-}
-
-// This group describes attributes specific to RabbitMQ.
-const (
-	// MessagingRabbitmqDestinationRoutingKeyKey is the attribute Key
-	// conforming to the "messaging.rabbitmq.destination.routing_key" semantic
-	// conventions. It represents the rabbitMQ message routing key.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myKey'
-	MessagingRabbitmqDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key")
-
-	// MessagingRabbitmqMessageDeliveryTagKey is the attribute Key conforming
-	// to the "messaging.rabbitmq.message.delivery_tag" semantic conventions.
-	// It represents the rabbitMQ message delivery tag
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 123
-	MessagingRabbitmqMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag")
-)
-
-// MessagingRabbitmqDestinationRoutingKey returns an attribute KeyValue
-// conforming to the "messaging.rabbitmq.destination.routing_key" semantic
-// conventions. It represents the rabbitMQ message routing key.
-func MessagingRabbitmqDestinationRoutingKey(val string) attribute.KeyValue {
-	return MessagingRabbitmqDestinationRoutingKeyKey.String(val)
-}
-
-// MessagingRabbitmqMessageDeliveryTag returns an attribute KeyValue
-// conforming to the "messaging.rabbitmq.message.delivery_tag" semantic
-// conventions. It represents the rabbitMQ message delivery tag
-func MessagingRabbitmqMessageDeliveryTag(val int) attribute.KeyValue {
-	return MessagingRabbitmqMessageDeliveryTagKey.Int(val)
-}
-
-// This group describes attributes specific to RocketMQ.
-const (
-	// MessagingRocketmqClientGroupKey is the attribute Key conforming to the
-	// "messaging.rocketmq.client_group" semantic conventions. It represents
-	// the name of the RocketMQ producer/consumer group that is handling the
-	// message. The client type is identified by the SpanKind.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myConsumerGroup'
-	MessagingRocketmqClientGroupKey = attribute.Key("messaging.rocketmq.client_group")
-
-	// MessagingRocketmqConsumptionModelKey is the attribute Key conforming to
-	// the "messaging.rocketmq.consumption_model" semantic conventions. It
-	// represents the model of message consumption. This only applies to
-	// consumer spans.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingRocketmqConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model")
-
-	// MessagingRocketmqMessageDelayTimeLevelKey is the attribute Key
-	// conforming to the "messaging.rocketmq.message.delay_time_level" semantic
-	// conventions. It represents the delay time level for delay message, which
-	// determines the message delay time.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3
-	MessagingRocketmqMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level")
-
-	// MessagingRocketmqMessageDeliveryTimestampKey is the attribute Key
-	// conforming to the "messaging.rocketmq.message.delivery_timestamp"
-	// semantic conventions. It represents the timestamp in milliseconds that
-	// the delay message is expected to be delivered to consumer.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1665987217045
-	MessagingRocketmqMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp")
-
-	// MessagingRocketmqMessageGroupKey is the attribute Key conforming to the
-	// "messaging.rocketmq.message.group" semantic conventions. It represents
-	// the it is essential for FIFO message. Messages that belong to the same
-	// message group are always processed one by one within the same consumer
-	// group.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myMessageGroup'
-	MessagingRocketmqMessageGroupKey = attribute.Key("messaging.rocketmq.message.group")
-
-	// MessagingRocketmqMessageKeysKey is the attribute Key conforming to the
-	// "messaging.rocketmq.message.keys" semantic conventions. It represents
-	// the key(s) of message, another way to mark message besides message id.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'keyA', 'keyB'
-	MessagingRocketmqMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys")
-
-	// MessagingRocketmqMessageTagKey is the attribute Key conforming to the
-	// "messaging.rocketmq.message.tag" semantic conventions. It represents the
-	// secondary classifier of message besides topic.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'tagA'
-	MessagingRocketmqMessageTagKey = attribute.Key("messaging.rocketmq.message.tag")
-
-	// MessagingRocketmqMessageTypeKey is the attribute Key conforming to the
-	// "messaging.rocketmq.message.type" semantic conventions. It represents
-	// the type of message.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingRocketmqMessageTypeKey = attribute.Key("messaging.rocketmq.message.type")
-
-	// MessagingRocketmqNamespaceKey is the attribute Key conforming to the
-	// "messaging.rocketmq.namespace" semantic conventions. It represents the
-	// namespace of RocketMQ resources, resources in different namespaces are
-	// individual.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myNamespace'
-	MessagingRocketmqNamespaceKey = attribute.Key("messaging.rocketmq.namespace")
-)
-
-var (
-	// Clustering consumption model
-	MessagingRocketmqConsumptionModelClustering = MessagingRocketmqConsumptionModelKey.String("clustering")
-	// Broadcasting consumption model
-	MessagingRocketmqConsumptionModelBroadcasting = MessagingRocketmqConsumptionModelKey.String("broadcasting")
-)
-
-var (
-	// Normal message
-	MessagingRocketmqMessageTypeNormal = MessagingRocketmqMessageTypeKey.String("normal")
-	// FIFO message
-	MessagingRocketmqMessageTypeFifo = MessagingRocketmqMessageTypeKey.String("fifo")
-	// Delay message
-	MessagingRocketmqMessageTypeDelay = MessagingRocketmqMessageTypeKey.String("delay")
-	// Transaction message
-	MessagingRocketmqMessageTypeTransaction = MessagingRocketmqMessageTypeKey.String("transaction")
-)
-
-// MessagingRocketmqClientGroup returns an attribute KeyValue conforming to
-// the "messaging.rocketmq.client_group" semantic conventions. It represents
-// the name of the RocketMQ producer/consumer group that is handling the
-// message. The client type is identified by the SpanKind.
-func MessagingRocketmqClientGroup(val string) attribute.KeyValue {
-	return MessagingRocketmqClientGroupKey.String(val)
-}
-
-// MessagingRocketmqMessageDelayTimeLevel returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delay_time_level" semantic
-// conventions. It represents the delay time level for delay message, which
-// determines the message delay time.
-func MessagingRocketmqMessageDelayTimeLevel(val int) attribute.KeyValue {
-	return MessagingRocketmqMessageDelayTimeLevelKey.Int(val)
-}
-
-// MessagingRocketmqMessageDeliveryTimestamp returns an attribute KeyValue
-// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic
-// conventions. It represents the timestamp in milliseconds that the delay
-// message is expected to be delivered to consumer.
-func MessagingRocketmqMessageDeliveryTimestamp(val int) attribute.KeyValue {
-	return MessagingRocketmqMessageDeliveryTimestampKey.Int(val)
-}
-
-// MessagingRocketmqMessageGroup returns an attribute KeyValue conforming to
-// the "messaging.rocketmq.message.group" semantic conventions. It represents
-// the it is essential for FIFO message. Messages that belong to the same
-// message group are always processed one by one within the same consumer
-// group.
-func MessagingRocketmqMessageGroup(val string) attribute.KeyValue {
-	return MessagingRocketmqMessageGroupKey.String(val)
-}
-
-// MessagingRocketmqMessageKeys returns an attribute KeyValue conforming to
-// the "messaging.rocketmq.message.keys" semantic conventions. It represents
-// the key(s) of message, another way to mark message besides message id.
-func MessagingRocketmqMessageKeys(val ...string) attribute.KeyValue {
-	return MessagingRocketmqMessageKeysKey.StringSlice(val)
-}
-
-// MessagingRocketmqMessageTag returns an attribute KeyValue conforming to
-// the "messaging.rocketmq.message.tag" semantic conventions. It represents the
-// secondary classifier of message besides topic.
-func MessagingRocketmqMessageTag(val string) attribute.KeyValue {
-	return MessagingRocketmqMessageTagKey.String(val)
-}
-
-// MessagingRocketmqNamespace returns an attribute KeyValue conforming to
-// the "messaging.rocketmq.namespace" semantic conventions. It represents the
-// namespace of RocketMQ resources, resources in different namespaces are
-// individual.
-func MessagingRocketmqNamespace(val string) attribute.KeyValue {
-	return MessagingRocketmqNamespaceKey.String(val)
-}
-
-// This group describes attributes specific to GCP Pub/Sub.
-const (
-	// MessagingGCPPubsubMessageAckDeadlineKey is the attribute Key conforming
-	// to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions.
-	// It represents the ack deadline in seconds set for the modify ack
-	// deadline request.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 10
-	MessagingGCPPubsubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline")
-
-	// MessagingGCPPubsubMessageAckIDKey is the attribute Key conforming to the
-	// "messaging.gcp_pubsub.message.ack_id" semantic conventions. It
-	// represents the ack id for a given message.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ack_id'
-	MessagingGCPPubsubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id")
-
-	// MessagingGCPPubsubMessageDeliveryAttemptKey is the attribute Key
-	// conforming to the "messaging.gcp_pubsub.message.delivery_attempt"
-	// semantic conventions. It represents the delivery attempt for a given
-	// message.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 2
-	MessagingGCPPubsubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt")
-
-	// MessagingGCPPubsubMessageOrderingKeyKey is the attribute Key conforming
-	// to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions.
-	// It represents the ordering key for a given message. If the attribute is
-	// not present, the message does not have an ordering key.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ordering_key'
-	MessagingGCPPubsubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key")
-)
-
-// MessagingGCPPubsubMessageAckDeadline returns an attribute KeyValue
-// conforming to the "messaging.gcp_pubsub.message.ack_deadline" semantic
-// conventions. It represents the ack deadline in seconds set for the modify
-// ack deadline request.
-func MessagingGCPPubsubMessageAckDeadline(val int) attribute.KeyValue {
-	return MessagingGCPPubsubMessageAckDeadlineKey.Int(val)
-}
-
-// MessagingGCPPubsubMessageAckID returns an attribute KeyValue conforming
-// to the "messaging.gcp_pubsub.message.ack_id" semantic conventions. It
-// represents the ack id for a given message.
-func MessagingGCPPubsubMessageAckID(val string) attribute.KeyValue {
-	return MessagingGCPPubsubMessageAckIDKey.String(val)
-}
-
-// MessagingGCPPubsubMessageDeliveryAttempt returns an attribute KeyValue
-// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic
-// conventions. It represents the delivery attempt for a given message.
-func MessagingGCPPubsubMessageDeliveryAttempt(val int) attribute.KeyValue {
-	return MessagingGCPPubsubMessageDeliveryAttemptKey.Int(val)
-}
-
-// MessagingGCPPubsubMessageOrderingKey returns an attribute KeyValue
-// conforming to the "messaging.gcp_pubsub.message.ordering_key" semantic
-// conventions. It represents the ordering key for a given message. If the
-// attribute is not present, the message does not have an ordering key.
-func MessagingGCPPubsubMessageOrderingKey(val string) attribute.KeyValue {
-	return MessagingGCPPubsubMessageOrderingKeyKey.String(val)
-}
-
-// This group describes attributes specific to Azure Service Bus.
-const (
-	// MessagingServicebusDestinationSubscriptionNameKey is the attribute Key
-	// conforming to the "messaging.servicebus.destination.subscription_name"
-	// semantic conventions. It represents the name of the subscription in the
-	// topic messages are received from.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'mySubscription'
-	MessagingServicebusDestinationSubscriptionNameKey = attribute.Key("messaging.servicebus.destination.subscription_name")
-
-	// MessagingServicebusDispositionStatusKey is the attribute Key conforming
-	// to the "messaging.servicebus.disposition_status" semantic conventions.
-	// It represents the describes the [settlement
-	// type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock).
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	MessagingServicebusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status")
-
-	// MessagingServicebusMessageDeliveryCountKey is the attribute Key
-	// conforming to the "messaging.servicebus.message.delivery_count" semantic
-	// conventions. It represents the number of deliveries that have been
-	// attempted for this message.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 2
-	MessagingServicebusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count")
-
-	// MessagingServicebusMessageEnqueuedTimeKey is the attribute Key
-	// conforming to the "messaging.servicebus.message.enqueued_time" semantic
-	// conventions. It represents the UTC epoch seconds at which the message
-	// has been accepted and stored in the entity.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1701393730
-	MessagingServicebusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time")
-)
-
-var (
-	// Message is completed
-	MessagingServicebusDispositionStatusComplete = MessagingServicebusDispositionStatusKey.String("complete")
-	// Message is abandoned
-	MessagingServicebusDispositionStatusAbandon = MessagingServicebusDispositionStatusKey.String("abandon")
-	// Message is sent to dead letter queue
-	MessagingServicebusDispositionStatusDeadLetter = MessagingServicebusDispositionStatusKey.String("dead_letter")
-	// Message is deferred
-	MessagingServicebusDispositionStatusDefer = MessagingServicebusDispositionStatusKey.String("defer")
-)
-
-// MessagingServicebusDestinationSubscriptionName returns an attribute
-// KeyValue conforming to the
-// "messaging.servicebus.destination.subscription_name" semantic conventions.
-// It represents the name of the subscription in the topic messages are
-// received from.
-func MessagingServicebusDestinationSubscriptionName(val string) attribute.KeyValue {
-	return MessagingServicebusDestinationSubscriptionNameKey.String(val)
-}
-
-// MessagingServicebusMessageDeliveryCount returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.delivery_count" semantic
-// conventions. It represents the number of deliveries that have been attempted
-// for this message.
-func MessagingServicebusMessageDeliveryCount(val int) attribute.KeyValue {
-	return MessagingServicebusMessageDeliveryCountKey.Int(val)
-}
-
-// MessagingServicebusMessageEnqueuedTime returns an attribute KeyValue
-// conforming to the "messaging.servicebus.message.enqueued_time" semantic
-// conventions. It represents the UTC epoch seconds at which the message has
-// been accepted and stored in the entity.
-func MessagingServicebusMessageEnqueuedTime(val int) attribute.KeyValue {
-	return MessagingServicebusMessageEnqueuedTimeKey.Int(val)
-}
-
-// This group describes attributes specific to Azure Event Hubs.
-const (
-	// MessagingEventhubsConsumerGroupKey is the attribute Key conforming to
-	// the "messaging.eventhubs.consumer.group" semantic conventions. It
-	// represents the name of the consumer group the event consumer is
-	// associated with.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'indexer'
-	MessagingEventhubsConsumerGroupKey = attribute.Key("messaging.eventhubs.consumer.group")
-
-	// MessagingEventhubsMessageEnqueuedTimeKey is the attribute Key conforming
-	// to the "messaging.eventhubs.message.enqueued_time" semantic conventions.
-	// It represents the UTC epoch seconds at which the message has been
-	// accepted and stored in the entity.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1701393730
-	MessagingEventhubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time")
-)
-
-// MessagingEventhubsConsumerGroup returns an attribute KeyValue conforming
-// to the "messaging.eventhubs.consumer.group" semantic conventions. It
-// represents the name of the consumer group the event consumer is associated
-// with.
-func MessagingEventhubsConsumerGroup(val string) attribute.KeyValue {
-	return MessagingEventhubsConsumerGroupKey.String(val)
-}
-
-// MessagingEventhubsMessageEnqueuedTime returns an attribute KeyValue
-// conforming to the "messaging.eventhubs.message.enqueued_time" semantic
-// conventions. It represents the UTC epoch seconds at which the message has
-// been accepted and stored in the entity.
-func MessagingEventhubsMessageEnqueuedTime(val int) attribute.KeyValue {
-	return MessagingEventhubsMessageEnqueuedTimeKey.Int(val)
-}
-
-// These attributes may be used for any network related operation.
-const (
-	// NetworkCarrierIccKey is the attribute Key conforming to the
-	// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
-	// alpha-2 2-character country code associated with the mobile carrier
-	// network.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'DE'
-	NetworkCarrierIccKey = attribute.Key("network.carrier.icc")
-
-	// NetworkCarrierMccKey is the attribute Key conforming to the
-	// "network.carrier.mcc" semantic conventions. It represents the mobile
-	// carrier country code.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '310'
-	NetworkCarrierMccKey = attribute.Key("network.carrier.mcc")
-
-	// NetworkCarrierMncKey is the attribute Key conforming to the
-	// "network.carrier.mnc" semantic conventions. It represents the mobile
-	// carrier network code.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '001'
-	NetworkCarrierMncKey = attribute.Key("network.carrier.mnc")
-
-	// NetworkCarrierNameKey is the attribute Key conforming to the
-	// "network.carrier.name" semantic conventions. It represents the name of
-	// the mobile carrier.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'sprint'
-	NetworkCarrierNameKey = attribute.Key("network.carrier.name")
-
-	// NetworkConnectionSubtypeKey is the attribute Key conforming to the
-	// "network.connection.subtype" semantic conventions. It represents the
-	// this describes more details regarding the connection.type. It may be the
-	// type of cell technology connection, but it could be used for describing
-	// details about a wifi connection.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'LTE'
-	NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype")
-
-	// NetworkConnectionTypeKey is the attribute Key conforming to the
-	// "network.connection.type" semantic conventions. It represents the
-	// internet connection type.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'wifi'
-	NetworkConnectionTypeKey = attribute.Key("network.connection.type")
-
-	// NetworkIoDirectionKey is the attribute Key conforming to the
-	// "network.io.direction" semantic conventions. It represents the network
-	// IO operation direction.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'transmit'
-	NetworkIoDirectionKey = attribute.Key("network.io.direction")
-
-	// NetworkLocalAddressKey is the attribute Key conforming to the
-	// "network.local.address" semantic conventions. It represents the local
-	// address of the network connection - IP address or Unix domain socket
-	// name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '10.1.2.80', '/tmp/my.sock'
-	NetworkLocalAddressKey = attribute.Key("network.local.address")
-
-	// NetworkLocalPortKey is the attribute Key conforming to the
-	// "network.local.port" semantic conventions. It represents the local port
-	// number of the network connection.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 65123
-	NetworkLocalPortKey = attribute.Key("network.local.port")
-
-	// NetworkPeerAddressKey is the attribute Key conforming to the
-	// "network.peer.address" semantic conventions. It represents the peer
-	// address of the network connection - IP address or Unix domain socket
-	// name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '10.1.2.80', '/tmp/my.sock'
-	NetworkPeerAddressKey = attribute.Key("network.peer.address")
-
-	// NetworkPeerPortKey is the attribute Key conforming to the
-	// "network.peer.port" semantic conventions. It represents the peer port
-	// number of the network connection.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 65123
-	NetworkPeerPortKey = attribute.Key("network.peer.port")
-
-	// NetworkProtocolNameKey is the attribute Key conforming to the
-	// "network.protocol.name" semantic conventions. It represents the [OSI
-	// application layer](https://osi-model.com/application-layer/) or non-OSI
-	// equivalent.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'amqp', 'http', 'mqtt'
-	// Note: The value SHOULD be normalized to lowercase.
-	NetworkProtocolNameKey = attribute.Key("network.protocol.name")
-
-	// NetworkProtocolVersionKey is the attribute Key conforming to the
-	// "network.protocol.version" semantic conventions. It represents the
-	// actual version of the protocol used for network communication.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '1.1', '2'
-	// Note: If protocol version is subject to negotiation (for example using
-	// [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute
-	// SHOULD be set to the negotiated version. If the actual protocol version
-	// is not known, this attribute SHOULD NOT be set.
-	NetworkProtocolVersionKey = attribute.Key("network.protocol.version")
-
-	// NetworkTransportKey is the attribute Key conforming to the
-	// "network.transport" semantic conventions. It represents the [OSI
-	// transport layer](https://osi-model.com/transport-layer/) or
-	// [inter-process communication
-	// method](https://wikipedia.org/wiki/Inter-process_communication).
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'tcp', 'udp'
-	// Note: The value SHOULD be normalized to lowercase.
-	//
-	// Consider always setting the transport when setting a port number, since
-	// a port number is ambiguous without knowing the transport. For example
-	// different processes could be listening on TCP port 12345 and UDP port
-	// 12345.
-	NetworkTransportKey = attribute.Key("network.transport")
-
-	// NetworkTypeKey is the attribute Key conforming to the "network.type"
-	// semantic conventions. It represents the [OSI network
-	// layer](https://osi-model.com/network-layer/) or non-OSI equivalent.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'ipv4', 'ipv6'
-	// Note: The value SHOULD be normalized to lowercase.
-	NetworkTypeKey = attribute.Key("network.type")
-)
-
-var (
-	// GPRS
-	NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs")
-	// EDGE
-	NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge")
-	// UMTS
-	NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts")
-	// CDMA
-	NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma")
-	// EVDO Rel. 0
-	NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0")
-	// EVDO Rev. A
-	NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a")
-	// CDMA2000 1XRTT
-	NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt")
-	// HSDPA
-	NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa")
-	// HSUPA
-	NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa")
-	// HSPA
-	NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa")
-	// IDEN
-	NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden")
-	// EVDO Rev. B
-	NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b")
-	// LTE
-	NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte")
-	// EHRPD
-	NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd")
-	// HSPAP
-	NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap")
-	// GSM
-	NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm")
-	// TD-SCDMA
-	NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma")
-	// IWLAN
-	NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan")
-	// 5G NR (New Radio)
-	NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr")
-	// 5G NRNSA (New Radio Non-Standalone)
-	NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa")
-	// LTE CA
-	NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca")
-)
-
-var (
-	// wifi
-	NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi")
-	// wired
-	NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired")
-	// cell
-	NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell")
-	// unavailable
-	NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable")
-	// unknown
-	NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown")
-)
-
-var (
-	// transmit
-	NetworkIoDirectionTransmit = NetworkIoDirectionKey.String("transmit")
-	// receive
-	NetworkIoDirectionReceive = NetworkIoDirectionKey.String("receive")
-)
-
-var (
-	// TCP
-	NetworkTransportTCP = NetworkTransportKey.String("tcp")
-	// UDP
-	NetworkTransportUDP = NetworkTransportKey.String("udp")
-	// Named or anonymous pipe
-	NetworkTransportPipe = NetworkTransportKey.String("pipe")
-	// Unix domain socket
-	NetworkTransportUnix = NetworkTransportKey.String("unix")
-)
-
-var (
-	// IPv4
-	NetworkTypeIpv4 = NetworkTypeKey.String("ipv4")
-	// IPv6
-	NetworkTypeIpv6 = NetworkTypeKey.String("ipv6")
-)
-
-// NetworkCarrierIcc returns an attribute KeyValue conforming to the
-// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1
-// alpha-2 2-character country code associated with the mobile carrier network.
-func NetworkCarrierIcc(val string) attribute.KeyValue {
-	return NetworkCarrierIccKey.String(val)
-}
-
-// NetworkCarrierMcc returns an attribute KeyValue conforming to the
-// "network.carrier.mcc" semantic conventions. It represents the mobile carrier
-// country code.
-func NetworkCarrierMcc(val string) attribute.KeyValue {
-	return NetworkCarrierMccKey.String(val)
-}
-
-// NetworkCarrierMnc returns an attribute KeyValue conforming to the
-// "network.carrier.mnc" semantic conventions. It represents the mobile carrier
-// network code.
-func NetworkCarrierMnc(val string) attribute.KeyValue {
-	return NetworkCarrierMncKey.String(val)
-}
-
-// NetworkCarrierName returns an attribute KeyValue conforming to the
-// "network.carrier.name" semantic conventions. It represents the name of the
-// mobile carrier.
-func NetworkCarrierName(val string) attribute.KeyValue {
-	return NetworkCarrierNameKey.String(val)
-}
-
-// NetworkLocalAddress returns an attribute KeyValue conforming to the
-// "network.local.address" semantic conventions. It represents the local
-// address of the network connection - IP address or Unix domain socket name.
-func NetworkLocalAddress(val string) attribute.KeyValue {
-	return NetworkLocalAddressKey.String(val)
-}
-
-// NetworkLocalPort returns an attribute KeyValue conforming to the
-// "network.local.port" semantic conventions. It represents the local port
-// number of the network connection.
-func NetworkLocalPort(val int) attribute.KeyValue {
-	return NetworkLocalPortKey.Int(val)
-}
-
-// NetworkPeerAddress returns an attribute KeyValue conforming to the
-// "network.peer.address" semantic conventions. It represents the peer address
-// of the network connection - IP address or Unix domain socket name.
-func NetworkPeerAddress(val string) attribute.KeyValue {
-	return NetworkPeerAddressKey.String(val)
-}
-
-// NetworkPeerPort returns an attribute KeyValue conforming to the
-// "network.peer.port" semantic conventions. It represents the peer port number
-// of the network connection.
-func NetworkPeerPort(val int) attribute.KeyValue {
-	return NetworkPeerPortKey.Int(val)
-}
-
-// NetworkProtocolName returns an attribute KeyValue conforming to the
-// "network.protocol.name" semantic conventions. It represents the [OSI
-// application layer](https://osi-model.com/application-layer/) or non-OSI
-// equivalent.
-func NetworkProtocolName(val string) attribute.KeyValue {
-	return NetworkProtocolNameKey.String(val)
-}
-
-// NetworkProtocolVersion returns an attribute KeyValue conforming to the
-// "network.protocol.version" semantic conventions. It represents the actual
-// version of the protocol used for network communication.
-func NetworkProtocolVersion(val string) attribute.KeyValue {
-	return NetworkProtocolVersionKey.String(val)
-}
-
-// An OCI image manifest.
-const (
-	// OciManifestDigestKey is the attribute Key conforming to the
-	// "oci.manifest.digest" semantic conventions. It represents the digest of
-	// the OCI image manifest. For container images specifically is the digest
-	// by which the container image is known.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// 'sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4'
-	// Note: Follows [OCI Image Manifest
-	// Specification](https://github.com/opencontainers/image-spec/blob/main/manifest.md),
-	// and specifically the [Digest
-	// property](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests).
-	// An example can be found in [Example Image
-	// Manifest](https://docs.docker.com/registry/spec/manifest-v2-2/#example-image-manifest).
-	OciManifestDigestKey = attribute.Key("oci.manifest.digest")
-)
-
-// OciManifestDigest returns an attribute KeyValue conforming to the
-// "oci.manifest.digest" semantic conventions. It represents the digest of the
-// OCI image manifest. For container images specifically is the digest by which
-// the container image is known.
-func OciManifestDigest(val string) attribute.KeyValue {
-	return OciManifestDigestKey.String(val)
-}
-
-// Attributes used by the OpenTracing Shim layer.
-const (
-	// OpentracingRefTypeKey is the attribute Key conforming to the
-	// "opentracing.ref_type" semantic conventions. It represents the
-	// parent-child Reference type
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: The causal relationship between a child Span and a parent Span.
-	OpentracingRefTypeKey = attribute.Key("opentracing.ref_type")
-)
-
-var (
-	// The parent Span depends on the child Span in some capacity
-	OpentracingRefTypeChildOf = OpentracingRefTypeKey.String("child_of")
-	// The parent Span doesn't depend in any way on the result of the child Span
-	OpentracingRefTypeFollowsFrom = OpentracingRefTypeKey.String("follows_from")
-)
-
-// The operating system (OS) on which the process represented by this resource
-// is running.
-const (
-	// OSBuildIDKey is the attribute Key conforming to the "os.build_id"
-	// semantic conventions. It represents the unique identifier for a
-	// particular build or compilation of the operating system.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'TQ3C.230805.001.B2', '20E247', '22621'
-	OSBuildIDKey = attribute.Key("os.build_id")
-
-	// OSDescriptionKey is the attribute Key conforming to the "os.description"
-	// semantic conventions. It represents the human readable (not intended to
-	// be parsed) OS version information, like e.g. reported by `ver` or
-	// `lsb_release -a` commands.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1
-	// LTS'
-	OSDescriptionKey = attribute.Key("os.description")
-
-	// OSNameKey is the attribute Key conforming to the "os.name" semantic
-	// conventions. It represents the human readable operating system name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'iOS', 'Android', 'Ubuntu'
-	OSNameKey = attribute.Key("os.name")
-
-	// OSTypeKey is the attribute Key conforming to the "os.type" semantic
-	// conventions. It represents the operating system type.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	OSTypeKey = attribute.Key("os.type")
-
-	// OSVersionKey is the attribute Key conforming to the "os.version"
-	// semantic conventions. It represents the version string of the operating
-	// system as defined in [Version
-	// Attributes](/docs/resource/README.md#version-attributes).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '14.2.1', '18.04.1'
-	OSVersionKey = attribute.Key("os.version")
-)
-
-var (
-	// Microsoft Windows
-	OSTypeWindows = OSTypeKey.String("windows")
-	// Linux
-	OSTypeLinux = OSTypeKey.String("linux")
-	// Apple Darwin
-	OSTypeDarwin = OSTypeKey.String("darwin")
-	// FreeBSD
-	OSTypeFreeBSD = OSTypeKey.String("freebsd")
-	// NetBSD
-	OSTypeNetBSD = OSTypeKey.String("netbsd")
-	// OpenBSD
-	OSTypeOpenBSD = OSTypeKey.String("openbsd")
-	// DragonFly BSD
-	OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd")
-	// HP-UX (Hewlett Packard Unix)
-	OSTypeHPUX = OSTypeKey.String("hpux")
-	// AIX (Advanced Interactive eXecutive)
-	OSTypeAIX = OSTypeKey.String("aix")
-	// SunOS, Oracle Solaris
-	OSTypeSolaris = OSTypeKey.String("solaris")
-	// IBM z/OS
-	OSTypeZOS = OSTypeKey.String("z_os")
-)
-
-// OSBuildID returns an attribute KeyValue conforming to the "os.build_id"
-// semantic conventions. It represents the unique identifier for a particular
-// build or compilation of the operating system.
-func OSBuildID(val string) attribute.KeyValue {
-	return OSBuildIDKey.String(val)
-}
-
-// OSDescription returns an attribute KeyValue conforming to the
-// "os.description" semantic conventions. It represents the human readable (not
-// intended to be parsed) OS version information, like e.g. reported by `ver`
-// or `lsb_release -a` commands.
-func OSDescription(val string) attribute.KeyValue {
-	return OSDescriptionKey.String(val)
-}
-
-// OSName returns an attribute KeyValue conforming to the "os.name" semantic
-// conventions. It represents the human readable operating system name.
-func OSName(val string) attribute.KeyValue {
-	return OSNameKey.String(val)
-}
-
-// OSVersion returns an attribute KeyValue conforming to the "os.version"
-// semantic conventions. It represents the version string of the operating
-// system as defined in [Version
-// Attributes](/docs/resource/README.md#version-attributes).
-func OSVersion(val string) attribute.KeyValue {
-	return OSVersionKey.String(val)
-}
-
-// Attributes reserved for OpenTelemetry
-const (
-	// OTelStatusCodeKey is the attribute Key conforming to the
-	// "otel.status_code" semantic conventions. It represents the name of the
-	// code, either "OK" or "ERROR". MUST NOT be set if the status code is
-	// UNSET.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	OTelStatusCodeKey = attribute.Key("otel.status_code")
-
-	// OTelStatusDescriptionKey is the attribute Key conforming to the
-	// "otel.status_description" semantic conventions. It represents the
-	// description of the Status if it has a value, otherwise not set.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'resource not found'
-	OTelStatusDescriptionKey = attribute.Key("otel.status_description")
-)
-
-var (
-	// The operation has been validated by an Application developer or Operator to have completed successfully
-	OTelStatusCodeOk = OTelStatusCodeKey.String("OK")
-	// The operation contains an error
-	OTelStatusCodeError = OTelStatusCodeKey.String("ERROR")
-)
-
-// OTelStatusDescription returns an attribute KeyValue conforming to the
-// "otel.status_description" semantic conventions. It represents the
-// description of the Status if it has a value, otherwise not set.
-func OTelStatusDescription(val string) attribute.KeyValue {
-	return OTelStatusDescriptionKey.String(val)
-}
-
-// Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's
-// concepts.
-const (
-	// OTelScopeNameKey is the attribute Key conforming to the
-	// "otel.scope.name" semantic conventions. It represents the name of the
-	// instrumentation scope - (`InstrumentationScope.Name` in OTLP).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'io.opentelemetry.contrib.mongodb'
-	OTelScopeNameKey = attribute.Key("otel.scope.name")
-
-	// OTelScopeVersionKey is the attribute Key conforming to the
-	// "otel.scope.version" semantic conventions. It represents the version of
-	// the instrumentation scope - (`InstrumentationScope.Version` in OTLP).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '1.0.0'
-	OTelScopeVersionKey = attribute.Key("otel.scope.version")
-)
-
-// OTelScopeName returns an attribute KeyValue conforming to the
-// "otel.scope.name" semantic conventions. It represents the name of the
-// instrumentation scope - (`InstrumentationScope.Name` in OTLP).
-func OTelScopeName(val string) attribute.KeyValue {
-	return OTelScopeNameKey.String(val)
-}
-
-// OTelScopeVersion returns an attribute KeyValue conforming to the
-// "otel.scope.version" semantic conventions. It represents the version of the
-// instrumentation scope - (`InstrumentationScope.Version` in OTLP).
-func OTelScopeVersion(val string) attribute.KeyValue {
-	return OTelScopeVersionKey.String(val)
-}
-
-// Operations that access some remote service.
-const (
-	// PeerServiceKey is the attribute Key conforming to the "peer.service"
-	// semantic conventions. It represents the
-	// [`service.name`](/docs/resource/README.md#service) of the remote
-	// service. SHOULD be equal to the actual `service.name` resource attribute
-	// of the remote service if any.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'AuthTokenCache'
-	PeerServiceKey = attribute.Key("peer.service")
-)
-
-// PeerService returns an attribute KeyValue conforming to the
-// "peer.service" semantic conventions. It represents the
-// [`service.name`](/docs/resource/README.md#service) of the remote service.
-// SHOULD be equal to the actual `service.name` resource attribute of the
-// remote service if any.
-func PeerService(val string) attribute.KeyValue {
-	return PeerServiceKey.String(val)
-}
-
-// An operating system process.
-const (
-	// ProcessCommandKey is the attribute Key conforming to the
-	// "process.command" semantic conventions. It represents the command used
-	// to launch the process (i.e. the command name). On Linux based systems,
-	// can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can
-	// be set to the first parameter extracted from `GetCommandLineW`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'cmd/otelcol'
-	ProcessCommandKey = attribute.Key("process.command")
-
-	// ProcessCommandArgsKey is the attribute Key conforming to the
-	// "process.command_args" semantic conventions. It represents the all the
-	// command arguments (including the command/executable itself) as received
-	// by the process. On Linux-based systems (and some other Unixoid systems
-	// supporting procfs), can be set according to the list of null-delimited
-	// strings extracted from `proc/[pid]/cmdline`. For libc-based executables,
-	// this would be the full argv vector passed to `main`.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'cmd/otecol', '--config=config.yaml'
-	ProcessCommandArgsKey = attribute.Key("process.command_args")
-
-	// ProcessCommandLineKey is the attribute Key conforming to the
-	// "process.command_line" semantic conventions. It represents the full
-	// command used to launch the process as a single string representing the
-	// full command. On Windows, can be set to the result of `GetCommandLineW`.
-	// Do not set this if you have to assemble it just for monitoring; use
-	// `process.command_args` instead.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'C:\\cmd\\otecol --config="my directory\\config.yaml"'
-	ProcessCommandLineKey = attribute.Key("process.command_line")
-
-	// ProcessContextSwitchTypeKey is the attribute Key conforming to the
-	// "process.context_switch_type" semantic conventions. It represents the
-	// specifies whether the context switches for this data point were
-	// voluntary or involuntary.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	ProcessContextSwitchTypeKey = attribute.Key("process.context_switch_type")
-
-	// ProcessCreationTimeKey is the attribute Key conforming to the
-	// "process.creation.time" semantic conventions. It represents the date and
-	// time the process was created, in ISO 8601 format.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2023-11-21T09:25:34.853Z'
-	ProcessCreationTimeKey = attribute.Key("process.creation.time")
-
-	// ProcessExecutableNameKey is the attribute Key conforming to the
-	// "process.executable.name" semantic conventions. It represents the name
-	// of the process executable. On Linux based systems, can be set to the
-	// `Name` in `proc/[pid]/status`. On Windows, can be set to the base name
-	// of `GetProcessImageFileNameW`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'otelcol'
-	ProcessExecutableNameKey = attribute.Key("process.executable.name")
-
-	// ProcessExecutablePathKey is the attribute Key conforming to the
-	// "process.executable.path" semantic conventions. It represents the full
-	// path to the process executable. On Linux based systems, can be set to
-	// the target of `proc/[pid]/exe`. On Windows, can be set to the result of
-	// `GetProcessImageFileNameW`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/usr/bin/cmd/otelcol'
-	ProcessExecutablePathKey = attribute.Key("process.executable.path")
-
-	// ProcessExitCodeKey is the attribute Key conforming to the
-	// "process.exit.code" semantic conventions. It represents the exit code of
-	// the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 127
-	ProcessExitCodeKey = attribute.Key("process.exit.code")
-
-	// ProcessExitTimeKey is the attribute Key conforming to the
-	// "process.exit.time" semantic conventions. It represents the date and
-	// time the process exited, in ISO 8601 format.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2023-11-21T09:26:12.315Z'
-	ProcessExitTimeKey = attribute.Key("process.exit.time")
-
-	// ProcessGroupLeaderPIDKey is the attribute Key conforming to the
-	// "process.group_leader.pid" semantic conventions. It represents the PID
-	// of the process's group leader. This is also the process group ID (PGID)
-	// of the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 23
-	ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid")
-
-	// ProcessInteractiveKey is the attribute Key conforming to the
-	// "process.interactive" semantic conventions. It represents the whether
-	// the process is connected to an interactive shell.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	ProcessInteractiveKey = attribute.Key("process.interactive")
-
-	// ProcessOwnerKey is the attribute Key conforming to the "process.owner"
-	// semantic conventions. It represents the username of the user that owns
-	// the process.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'root'
-	ProcessOwnerKey = attribute.Key("process.owner")
-
-	// ProcessPagingFaultTypeKey is the attribute Key conforming to the
-	// "process.paging.fault_type" semantic conventions. It represents the type
-	// of page fault for this data point. Type `major` is for major/hard page
-	// faults, and `minor` is for minor/soft page faults.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	ProcessPagingFaultTypeKey = attribute.Key("process.paging.fault_type")
-
-	// ProcessParentPIDKey is the attribute Key conforming to the
-	// "process.parent_pid" semantic conventions. It represents the parent
-	// Process identifier (PPID).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 111
-	ProcessParentPIDKey = attribute.Key("process.parent_pid")
-
-	// ProcessPIDKey is the attribute Key conforming to the "process.pid"
-	// semantic conventions. It represents the process identifier (PID).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1234
-	ProcessPIDKey = attribute.Key("process.pid")
-
-	// ProcessRealUserIDKey is the attribute Key conforming to the
-	// "process.real_user.id" semantic conventions. It represents the real user
-	// ID (RUID) of the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1000
-	ProcessRealUserIDKey = attribute.Key("process.real_user.id")
-
-	// ProcessRealUserNameKey is the attribute Key conforming to the
-	// "process.real_user.name" semantic conventions. It represents the
-	// username of the real user of the process.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'operator'
-	ProcessRealUserNameKey = attribute.Key("process.real_user.name")
-
-	// ProcessRuntimeDescriptionKey is the attribute Key conforming to the
-	// "process.runtime.description" semantic conventions. It represents an
-	// additional description about the runtime of the process, for example a
-	// specific vendor customization of the runtime environment.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0'
-	ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description")
-
-	// ProcessRuntimeNameKey is the attribute Key conforming to the
-	// "process.runtime.name" semantic conventions. It represents the name of
-	// the runtime of this process. For compiled native binaries, this SHOULD
-	// be the name of the compiler.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'OpenJDK Runtime Environment'
-	ProcessRuntimeNameKey = attribute.Key("process.runtime.name")
-
-	// ProcessRuntimeVersionKey is the attribute Key conforming to the
-	// "process.runtime.version" semantic conventions. It represents the
-	// version of the runtime of this process, as returned by the runtime
-	// without modification.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '14.0.2'
-	ProcessRuntimeVersionKey = attribute.Key("process.runtime.version")
-
-	// ProcessSavedUserIDKey is the attribute Key conforming to the
-	// "process.saved_user.id" semantic conventions. It represents the saved
-	// user ID (SUID) of the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1002
-	ProcessSavedUserIDKey = attribute.Key("process.saved_user.id")
-
-	// ProcessSavedUserNameKey is the attribute Key conforming to the
-	// "process.saved_user.name" semantic conventions. It represents the
-	// username of the saved user.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'operator'
-	ProcessSavedUserNameKey = attribute.Key("process.saved_user.name")
-
-	// ProcessSessionLeaderPIDKey is the attribute Key conforming to the
-	// "process.session_leader.pid" semantic conventions. It represents the PID
-	// of the process's session leader. This is also the session ID (SID) of
-	// the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 14
-	ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid")
-
-	// ProcessUserIDKey is the attribute Key conforming to the
-	// "process.user.id" semantic conventions. It represents the effective user
-	// ID (EUID) of the process.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1001
-	ProcessUserIDKey = attribute.Key("process.user.id")
-
-	// ProcessUserNameKey is the attribute Key conforming to the
-	// "process.user.name" semantic conventions. It represents the username of
-	// the effective user of the process.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'root'
-	ProcessUserNameKey = attribute.Key("process.user.name")
-
-	// ProcessVpidKey is the attribute Key conforming to the "process.vpid"
-	// semantic conventions. It represents the virtual process identifier.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 12
-	// Note: The process ID within a PID namespace. This is not necessarily
-	// unique across all processes on the host but it is unique within the
-	// process namespace that the process exists within.
-	ProcessVpidKey = attribute.Key("process.vpid")
-)
-
-var (
-	// voluntary
-	ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary")
-	// involuntary
-	ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary")
-)
-
-var (
-	// major
-	ProcessPagingFaultTypeMajor = ProcessPagingFaultTypeKey.String("major")
-	// minor
-	ProcessPagingFaultTypeMinor = ProcessPagingFaultTypeKey.String("minor")
-)
-
-// ProcessCommand returns an attribute KeyValue conforming to the
-// "process.command" semantic conventions. It represents the command used to
-// launch the process (i.e. the command name). On Linux based systems, can be
-// set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to
-// the first parameter extracted from `GetCommandLineW`.
-func ProcessCommand(val string) attribute.KeyValue {
-	return ProcessCommandKey.String(val)
-}
-
-// ProcessCommandArgs returns an attribute KeyValue conforming to the
-// "process.command_args" semantic conventions. It represents the all the
-// command arguments (including the command/executable itself) as received by
-// the process. On Linux-based systems (and some other Unixoid systems
-// supporting procfs), can be set according to the list of null-delimited
-// strings extracted from `proc/[pid]/cmdline`. For libc-based executables,
-// this would be the full argv vector passed to `main`.
-func ProcessCommandArgs(val ...string) attribute.KeyValue {
-	return ProcessCommandArgsKey.StringSlice(val)
-}
-
-// ProcessCommandLine returns an attribute KeyValue conforming to the
-// "process.command_line" semantic conventions. It represents the full command
-// used to launch the process as a single string representing the full command.
-// On Windows, can be set to the result of `GetCommandLineW`. Do not set this
-// if you have to assemble it just for monitoring; use `process.command_args`
-// instead.
-func ProcessCommandLine(val string) attribute.KeyValue {
-	return ProcessCommandLineKey.String(val)
-}
-
-// ProcessCreationTime returns an attribute KeyValue conforming to the
-// "process.creation.time" semantic conventions. It represents the date and
-// time the process was created, in ISO 8601 format.
-func ProcessCreationTime(val string) attribute.KeyValue {
-	return ProcessCreationTimeKey.String(val)
-}
-
-// ProcessExecutableName returns an attribute KeyValue conforming to the
-// "process.executable.name" semantic conventions. It represents the name of
-// the process executable. On Linux based systems, can be set to the `Name` in
-// `proc/[pid]/status`. On Windows, can be set to the base name of
-// `GetProcessImageFileNameW`.
-func ProcessExecutableName(val string) attribute.KeyValue {
-	return ProcessExecutableNameKey.String(val)
-}
-
-// ProcessExecutablePath returns an attribute KeyValue conforming to the
-// "process.executable.path" semantic conventions. It represents the full path
-// to the process executable. On Linux based systems, can be set to the target
-// of `proc/[pid]/exe`. On Windows, can be set to the result of
-// `GetProcessImageFileNameW`.
-func ProcessExecutablePath(val string) attribute.KeyValue {
-	return ProcessExecutablePathKey.String(val)
-}
-
-// ProcessExitCode returns an attribute KeyValue conforming to the
-// "process.exit.code" semantic conventions. It represents the exit code of the
-// process.
-func ProcessExitCode(val int) attribute.KeyValue {
-	return ProcessExitCodeKey.Int(val)
-}
-
-// ProcessExitTime returns an attribute KeyValue conforming to the
-// "process.exit.time" semantic conventions. It represents the date and time
-// the process exited, in ISO 8601 format.
-func ProcessExitTime(val string) attribute.KeyValue {
-	return ProcessExitTimeKey.String(val)
-}
-
-// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the
-// "process.group_leader.pid" semantic conventions. It represents the PID of
-// the process's group leader. This is also the process group ID (PGID) of the
-// process.
-func ProcessGroupLeaderPID(val int) attribute.KeyValue {
-	return ProcessGroupLeaderPIDKey.Int(val)
-}
-
-// ProcessInteractive returns an attribute KeyValue conforming to the
-// "process.interactive" semantic conventions. It represents the whether the
-// process is connected to an interactive shell.
-func ProcessInteractive(val bool) attribute.KeyValue {
-	return ProcessInteractiveKey.Bool(val)
-}
-
-// ProcessOwner returns an attribute KeyValue conforming to the
-// "process.owner" semantic conventions. It represents the username of the user
-// that owns the process.
-func ProcessOwner(val string) attribute.KeyValue {
-	return ProcessOwnerKey.String(val)
-}
-
-// ProcessParentPID returns an attribute KeyValue conforming to the
-// "process.parent_pid" semantic conventions. It represents the parent Process
-// identifier (PPID).
-func ProcessParentPID(val int) attribute.KeyValue {
-	return ProcessParentPIDKey.Int(val)
-}
-
-// ProcessPID returns an attribute KeyValue conforming to the "process.pid"
-// semantic conventions. It represents the process identifier (PID).
-func ProcessPID(val int) attribute.KeyValue {
-	return ProcessPIDKey.Int(val)
-}
-
-// ProcessRealUserID returns an attribute KeyValue conforming to the
-// "process.real_user.id" semantic conventions. It represents the real user ID
-// (RUID) of the process.
-func ProcessRealUserID(val int) attribute.KeyValue {
-	return ProcessRealUserIDKey.Int(val)
-}
-
-// ProcessRealUserName returns an attribute KeyValue conforming to the
-// "process.real_user.name" semantic conventions. It represents the username of
-// the real user of the process.
-func ProcessRealUserName(val string) attribute.KeyValue {
-	return ProcessRealUserNameKey.String(val)
-}
-
-// ProcessRuntimeDescription returns an attribute KeyValue conforming to the
-// "process.runtime.description" semantic conventions. It represents an
-// additional description about the runtime of the process, for example a
-// specific vendor customization of the runtime environment.
-func ProcessRuntimeDescription(val string) attribute.KeyValue {
-	return ProcessRuntimeDescriptionKey.String(val)
-}
-
-// ProcessRuntimeName returns an attribute KeyValue conforming to the
-// "process.runtime.name" semantic conventions. It represents the name of the
-// runtime of this process. For compiled native binaries, this SHOULD be the
-// name of the compiler.
-func ProcessRuntimeName(val string) attribute.KeyValue {
-	return ProcessRuntimeNameKey.String(val)
-}
-
-// ProcessRuntimeVersion returns an attribute KeyValue conforming to the
-// "process.runtime.version" semantic conventions. It represents the version of
-// the runtime of this process, as returned by the runtime without
-// modification.
-func ProcessRuntimeVersion(val string) attribute.KeyValue {
-	return ProcessRuntimeVersionKey.String(val)
-}
-
-// ProcessSavedUserID returns an attribute KeyValue conforming to the
-// "process.saved_user.id" semantic conventions. It represents the saved user
-// ID (SUID) of the process.
-func ProcessSavedUserID(val int) attribute.KeyValue {
-	return ProcessSavedUserIDKey.Int(val)
-}
-
-// ProcessSavedUserName returns an attribute KeyValue conforming to the
-// "process.saved_user.name" semantic conventions. It represents the username
-// of the saved user.
-func ProcessSavedUserName(val string) attribute.KeyValue {
-	return ProcessSavedUserNameKey.String(val)
-}
-
-// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the
-// "process.session_leader.pid" semantic conventions. It represents the PID of
-// the process's session leader. This is also the session ID (SID) of the
-// process.
-func ProcessSessionLeaderPID(val int) attribute.KeyValue {
-	return ProcessSessionLeaderPIDKey.Int(val)
-}
-
-// ProcessUserID returns an attribute KeyValue conforming to the
-// "process.user.id" semantic conventions. It represents the effective user ID
-// (EUID) of the process.
-func ProcessUserID(val int) attribute.KeyValue {
-	return ProcessUserIDKey.Int(val)
-}
-
-// ProcessUserName returns an attribute KeyValue conforming to the
-// "process.user.name" semantic conventions. It represents the username of the
-// effective user of the process.
-func ProcessUserName(val string) attribute.KeyValue {
-	return ProcessUserNameKey.String(val)
-}
-
-// ProcessVpid returns an attribute KeyValue conforming to the
-// "process.vpid" semantic conventions. It represents the virtual process
-// identifier.
-func ProcessVpid(val int) attribute.KeyValue {
-	return ProcessVpidKey.Int(val)
-}
-
-// Attributes for process CPU
-const (
-	// ProcessCPUStateKey is the attribute Key conforming to the
-	// "process.cpu.state" semantic conventions. It represents the CPU state of
-	// the process.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	ProcessCPUStateKey = attribute.Key("process.cpu.state")
-)
-
-var (
-	// system
-	ProcessCPUStateSystem = ProcessCPUStateKey.String("system")
-	// user
-	ProcessCPUStateUser = ProcessCPUStateKey.String("user")
-	// wait
-	ProcessCPUStateWait = ProcessCPUStateKey.String("wait")
-)
-
-// Attributes for remote procedure calls.
-const (
-	// RPCConnectRPCErrorCodeKey is the attribute Key conforming to the
-	// "rpc.connect_rpc.error_code" semantic conventions. It represents the
-	// [error codes](https://connect.build/docs/protocol/#error-codes) of the
-	// Connect request. Error codes are always string values.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCConnectRPCErrorCodeKey = attribute.Key("rpc.connect_rpc.error_code")
-
-	// RPCGRPCStatusCodeKey is the attribute Key conforming to the
-	// "rpc.grpc.status_code" semantic conventions. It represents the [numeric
-	// status
-	// code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of
-	// the gRPC request.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code")
-
-	// RPCJsonrpcErrorCodeKey is the attribute Key conforming to the
-	// "rpc.jsonrpc.error_code" semantic conventions. It represents the
-	// `error.code` property of response if it is an error response.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: -32700, 100
-	RPCJsonrpcErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code")
-
-	// RPCJsonrpcErrorMessageKey is the attribute Key conforming to the
-	// "rpc.jsonrpc.error_message" semantic conventions. It represents the
-	// `error.message` property of response if it is an error response.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Parse error', 'User already exists'
-	RPCJsonrpcErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message")
-
-	// RPCJsonrpcRequestIDKey is the attribute Key conforming to the
-	// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id`
-	// property of request or response. Since protocol allows id to be int,
-	// string, `null` or missing (for notifications), value is expected to be
-	// cast to string for simplicity. Use empty string in case of `null` value.
-	// Omit entirely if this is a notification.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '10', 'request-7', ''
-	RPCJsonrpcRequestIDKey = attribute.Key("rpc.jsonrpc.request_id")
-
-	// RPCJsonrpcVersionKey is the attribute Key conforming to the
-	// "rpc.jsonrpc.version" semantic conventions. It represents the protocol
-	// version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0
-	// doesn't specify this, the value can be omitted.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2.0', '1.0'
-	RPCJsonrpcVersionKey = attribute.Key("rpc.jsonrpc.version")
-
-	// RPCMessageCompressedSizeKey is the attribute Key conforming to the
-	// "rpc.message.compressed_size" semantic conventions. It represents the
-	// compressed size of the message in bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCMessageCompressedSizeKey = attribute.Key("rpc.message.compressed_size")
-
-	// RPCMessageIDKey is the attribute Key conforming to the "rpc.message.id"
-	// semantic conventions. It represents the mUST be calculated as two
-	// different counters starting from `1` one for sent messages and one for
-	// received message.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Note: This way we guarantee that the values will be consistent between
-	// different implementations.
-	RPCMessageIDKey = attribute.Key("rpc.message.id")
-
-	// RPCMessageTypeKey is the attribute Key conforming to the
-	// "rpc.message.type" semantic conventions. It represents the whether this
-	// is a received or sent message.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCMessageTypeKey = attribute.Key("rpc.message.type")
-
-	// RPCMessageUncompressedSizeKey is the attribute Key conforming to the
-	// "rpc.message.uncompressed_size" semantic conventions. It represents the
-	// uncompressed size of the message in bytes.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCMessageUncompressedSizeKey = attribute.Key("rpc.message.uncompressed_size")
-
-	// RPCMethodKey is the attribute Key conforming to the "rpc.method"
-	// semantic conventions. It represents the name of the (logical) method
-	// being called, must be equal to the $method part in the span name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'exampleMethod'
-	// Note: This is the logical name of the method from the RPC interface
-	// perspective, which can be different from the name of any implementing
-	// method/function. The `code.function` attribute may be used to store the
-	// latter (e.g., method actually executing the call on the server side, RPC
-	// client stub method on the client side).
-	RPCMethodKey = attribute.Key("rpc.method")
-
-	// RPCServiceKey is the attribute Key conforming to the "rpc.service"
-	// semantic conventions. It represents the full (logical) name of the
-	// service being called, including its package name, if applicable.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'myservice.EchoService'
-	// Note: This is the logical name of the service from the RPC interface
-	// perspective, which can be different from the name of any implementing
-	// class. The `code.namespace` attribute may be used to store the latter
-	// (despite the attribute name, it may include a class name; e.g., class
-	// with method actually executing the call on the server side, RPC client
-	// stub class on the client side).
-	RPCServiceKey = attribute.Key("rpc.service")
-
-	// RPCSystemKey is the attribute Key conforming to the "rpc.system"
-	// semantic conventions. It represents a string identifying the remoting
-	// system. See below for a list of well-known identifiers.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	RPCSystemKey = attribute.Key("rpc.system")
-)
-
-var (
-	// cancelled
-	RPCConnectRPCErrorCodeCancelled = RPCConnectRPCErrorCodeKey.String("cancelled")
-	// unknown
-	RPCConnectRPCErrorCodeUnknown = RPCConnectRPCErrorCodeKey.String("unknown")
-	// invalid_argument
-	RPCConnectRPCErrorCodeInvalidArgument = RPCConnectRPCErrorCodeKey.String("invalid_argument")
-	// deadline_exceeded
-	RPCConnectRPCErrorCodeDeadlineExceeded = RPCConnectRPCErrorCodeKey.String("deadline_exceeded")
-	// not_found
-	RPCConnectRPCErrorCodeNotFound = RPCConnectRPCErrorCodeKey.String("not_found")
-	// already_exists
-	RPCConnectRPCErrorCodeAlreadyExists = RPCConnectRPCErrorCodeKey.String("already_exists")
-	// permission_denied
-	RPCConnectRPCErrorCodePermissionDenied = RPCConnectRPCErrorCodeKey.String("permission_denied")
-	// resource_exhausted
-	RPCConnectRPCErrorCodeResourceExhausted = RPCConnectRPCErrorCodeKey.String("resource_exhausted")
-	// failed_precondition
-	RPCConnectRPCErrorCodeFailedPrecondition = RPCConnectRPCErrorCodeKey.String("failed_precondition")
-	// aborted
-	RPCConnectRPCErrorCodeAborted = RPCConnectRPCErrorCodeKey.String("aborted")
-	// out_of_range
-	RPCConnectRPCErrorCodeOutOfRange = RPCConnectRPCErrorCodeKey.String("out_of_range")
-	// unimplemented
-	RPCConnectRPCErrorCodeUnimplemented = RPCConnectRPCErrorCodeKey.String("unimplemented")
-	// internal
-	RPCConnectRPCErrorCodeInternal = RPCConnectRPCErrorCodeKey.String("internal")
-	// unavailable
-	RPCConnectRPCErrorCodeUnavailable = RPCConnectRPCErrorCodeKey.String("unavailable")
-	// data_loss
-	RPCConnectRPCErrorCodeDataLoss = RPCConnectRPCErrorCodeKey.String("data_loss")
-	// unauthenticated
-	RPCConnectRPCErrorCodeUnauthenticated = RPCConnectRPCErrorCodeKey.String("unauthenticated")
-)
-
-var (
-	// OK
-	RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0)
-	// CANCELLED
-	RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1)
-	// UNKNOWN
-	RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2)
-	// INVALID_ARGUMENT
-	RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3)
-	// DEADLINE_EXCEEDED
-	RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4)
-	// NOT_FOUND
-	RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5)
-	// ALREADY_EXISTS
-	RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6)
-	// PERMISSION_DENIED
-	RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7)
-	// RESOURCE_EXHAUSTED
-	RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8)
-	// FAILED_PRECONDITION
-	RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9)
-	// ABORTED
-	RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10)
-	// OUT_OF_RANGE
-	RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11)
-	// UNIMPLEMENTED
-	RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12)
-	// INTERNAL
-	RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13)
-	// UNAVAILABLE
-	RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14)
-	// DATA_LOSS
-	RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15)
-	// UNAUTHENTICATED
-	RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16)
-)
-
-var (
-	// sent
-	RPCMessageTypeSent = RPCMessageTypeKey.String("SENT")
-	// received
-	RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED")
-)
-
-var (
-	// gRPC
-	RPCSystemGRPC = RPCSystemKey.String("grpc")
-	// Java RMI
-	RPCSystemJavaRmi = RPCSystemKey.String("java_rmi")
-	// .NET WCF
-	RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf")
-	// Apache Dubbo
-	RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo")
-	// Connect RPC
-	RPCSystemConnectRPC = RPCSystemKey.String("connect_rpc")
-)
-
-// RPCJsonrpcErrorCode returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.error_code" semantic conventions. It represents the
-// `error.code` property of response if it is an error response.
-func RPCJsonrpcErrorCode(val int) attribute.KeyValue {
-	return RPCJsonrpcErrorCodeKey.Int(val)
-}
-
-// RPCJsonrpcErrorMessage returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.error_message" semantic conventions. It represents the
-// `error.message` property of response if it is an error response.
-func RPCJsonrpcErrorMessage(val string) attribute.KeyValue {
-	return RPCJsonrpcErrorMessageKey.String(val)
-}
-
-// RPCJsonrpcRequestID returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id`
-// property of request or response. Since protocol allows id to be int, string,
-// `null` or missing (for notifications), value is expected to be cast to
-// string for simplicity. Use empty string in case of `null` value. Omit
-// entirely if this is a notification.
-func RPCJsonrpcRequestID(val string) attribute.KeyValue {
-	return RPCJsonrpcRequestIDKey.String(val)
-}
-
-// RPCJsonrpcVersion returns an attribute KeyValue conforming to the
-// "rpc.jsonrpc.version" semantic conventions. It represents the protocol
-// version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0
-// doesn't specify this, the value can be omitted.
-func RPCJsonrpcVersion(val string) attribute.KeyValue {
-	return RPCJsonrpcVersionKey.String(val)
-}
-
-// RPCMessageCompressedSize returns an attribute KeyValue conforming to the
-// "rpc.message.compressed_size" semantic conventions. It represents the
-// compressed size of the message in bytes.
-func RPCMessageCompressedSize(val int) attribute.KeyValue {
-	return RPCMessageCompressedSizeKey.Int(val)
-}
-
-// RPCMessageID returns an attribute KeyValue conforming to the
-// "rpc.message.id" semantic conventions. It represents the mUST be calculated
-// as two different counters starting from `1` one for sent messages and one
-// for received message.
-func RPCMessageID(val int) attribute.KeyValue {
-	return RPCMessageIDKey.Int(val)
-}
-
-// RPCMessageUncompressedSize returns an attribute KeyValue conforming to
-// the "rpc.message.uncompressed_size" semantic conventions. It represents the
-// uncompressed size of the message in bytes.
-func RPCMessageUncompressedSize(val int) attribute.KeyValue {
-	return RPCMessageUncompressedSizeKey.Int(val)
-}
-
-// RPCMethod returns an attribute KeyValue conforming to the "rpc.method"
-// semantic conventions. It represents the name of the (logical) method being
-// called, must be equal to the $method part in the span name.
-func RPCMethod(val string) attribute.KeyValue {
-	return RPCMethodKey.String(val)
-}
-
-// RPCService returns an attribute KeyValue conforming to the "rpc.service"
-// semantic conventions. It represents the full (logical) name of the service
-// being called, including its package name, if applicable.
-func RPCService(val string) attribute.KeyValue {
-	return RPCServiceKey.String(val)
-}
-
-// These attributes may be used to describe the server in a connection-based
-// network interaction where there is one side that initiates the connection
-// (the client is the side that initiates the connection). This covers all TCP
-// network interactions since TCP is connection-based and one side initiates
-// the connection (an exception is made for peer-to-peer communication over TCP
-// where the "user-facing" surface of the protocol / API doesn't expose a clear
-// notion of client and server). This also covers UDP network interactions
-// where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS.
-const (
-	// ServerAddressKey is the attribute Key conforming to the "server.address"
-	// semantic conventions. It represents the server domain name if available
-	// without reverse DNS lookup; otherwise, IP address or Unix domain socket
-	// name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'example.com', '10.1.2.80', '/tmp/my.sock'
-	// Note: When observed from the client side, and when communicating through
-	// an intermediary, `server.address` SHOULD represent the server address
-	// behind any intermediaries, for example proxies, if it's available.
-	ServerAddressKey = attribute.Key("server.address")
-
-	// ServerPortKey is the attribute Key conforming to the "server.port"
-	// semantic conventions. It represents the server port number.
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 80, 8080, 443
-	// Note: When observed from the client side, and when communicating through
-	// an intermediary, `server.port` SHOULD represent the server port behind
-	// any intermediaries, for example proxies, if it's available.
-	ServerPortKey = attribute.Key("server.port")
-)
-
-// ServerAddress returns an attribute KeyValue conforming to the
-// "server.address" semantic conventions. It represents the server domain name
-// if available without reverse DNS lookup; otherwise, IP address or Unix
-// domain socket name.
-func ServerAddress(val string) attribute.KeyValue {
-	return ServerAddressKey.String(val)
-}
-
-// ServerPort returns an attribute KeyValue conforming to the "server.port"
-// semantic conventions. It represents the server port number.
-func ServerPort(val int) attribute.KeyValue {
-	return ServerPortKey.Int(val)
-}
-
-// A service instance.
-const (
-	// ServiceInstanceIDKey is the attribute Key conforming to the
-	// "service.instance.id" semantic conventions. It represents the string ID
-	// of the service instance.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '627cc493-f310-47de-96bd-71410b7dec09'
-	// Note: MUST be unique for each instance of the same
-	// `service.namespace,service.name` pair (in other words
-	// `service.namespace,service.name,service.instance.id` triplet MUST be
-	// globally unique). The ID helps to
-	// distinguish instances of the same service that exist at the same time
-	// (e.g. instances of a horizontally scaled
-	// service).
-	//
-	// Implementations, such as SDKs, are recommended to generate a random
-	// Version 1 or Version 4 [RFC
-	// 4122](https://www.ietf.org/rfc/rfc4122.txt) UUID, but are free to use an
-	// inherent unique ID as the source of
-	// this value if stability is desirable. In that case, the ID SHOULD be
-	// used as source of a UUID Version 5 and
-	// SHOULD use the following UUID as the namespace:
-	// `4d63009a-8d0f-11ee-aad7-4c796ed8e320`.
-	//
-	// UUIDs are typically recommended, as only an opaque value for the
-	// purposes of identifying a service instance is
-	// needed. Similar to what can be seen in the man page for the
-	// [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html)
-	// file, the underlying
-	// data, such as pod name and namespace should be treated as confidential,
-	// being the user's choice to expose it
-	// or not via another resource attribute.
-	//
-	// For applications running behind an application server (like unicorn), we
-	// do not recommend using one identifier
-	// for all processes participating in the application. Instead, it's
-	// recommended each division (e.g. a worker
-	// thread in unicorn) to have its own instance.id.
-	//
-	// It's not recommended for a Collector to set `service.instance.id` if it
-	// can't unambiguously determine the
-	// service instance that is generating that telemetry. For instance,
-	// creating an UUID based on `pod.name` will
-	// likely be wrong, as the Collector might not know from which container
-	// within that pod the telemetry originated.
-	// However, Collectors can set the `service.instance.id` if they can
-	// unambiguously determine the service instance
-	// for that telemetry. This is typically the case for scraping receivers,
-	// as they know the target address and
-	// port.
-	ServiceInstanceIDKey = attribute.Key("service.instance.id")
-
-	// ServiceNameKey is the attribute Key conforming to the "service.name"
-	// semantic conventions. It represents the logical name of the service.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'shoppingcart'
-	// Note: MUST be the same for all instances of horizontally scaled
-	// services. If the value was not specified, SDKs MUST fallback to
-	// `unknown_service:` concatenated with
-	// [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If
-	// `process.executable.name` is not available, the value MUST be set to
-	// `unknown_service`.
-	ServiceNameKey = attribute.Key("service.name")
-
-	// ServiceNamespaceKey is the attribute Key conforming to the
-	// "service.namespace" semantic conventions. It represents a namespace for
-	// `service.name`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Shop'
-	// Note: A string value having a meaning that helps to distinguish a group
-	// of services, for example the team name that owns a group of services.
-	// `service.name` is expected to be unique within the same namespace. If
-	// `service.namespace` is not specified in the Resource then `service.name`
-	// is expected to be unique for all services that have no explicit
-	// namespace defined (so the empty/unspecified namespace is simply one more
-	// valid namespace). Zero-length namespace string is assumed equal to
-	// unspecified namespace.
-	ServiceNamespaceKey = attribute.Key("service.namespace")
-
-	// ServiceVersionKey is the attribute Key conforming to the
-	// "service.version" semantic conventions. It represents the version string
-	// of the service API or implementation. The format is not defined by these
-	// conventions.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '2.0.0', 'a01dbef8a'
-	ServiceVersionKey = attribute.Key("service.version")
-)
-
-// ServiceInstanceID returns an attribute KeyValue conforming to the
-// "service.instance.id" semantic conventions. It represents the string ID of
-// the service instance.
-func ServiceInstanceID(val string) attribute.KeyValue {
-	return ServiceInstanceIDKey.String(val)
-}
-
-// ServiceName returns an attribute KeyValue conforming to the
-// "service.name" semantic conventions. It represents the logical name of the
-// service.
-func ServiceName(val string) attribute.KeyValue {
-	return ServiceNameKey.String(val)
-}
-
-// ServiceNamespace returns an attribute KeyValue conforming to the
-// "service.namespace" semantic conventions. It represents a namespace for
-// `service.name`.
-func ServiceNamespace(val string) attribute.KeyValue {
-	return ServiceNamespaceKey.String(val)
-}
-
-// ServiceVersion returns an attribute KeyValue conforming to the
-// "service.version" semantic conventions. It represents the version string of
-// the service API or implementation. The format is not defined by these
-// conventions.
-func ServiceVersion(val string) attribute.KeyValue {
-	return ServiceVersionKey.String(val)
-}
-
-// Session is defined as the period of time encompassing all activities
-// performed by the application and the actions executed by the end user.
-// Consequently, a Session is represented as a collection of Logs, Events, and
-// Spans emitted by the Client Application throughout the Session's duration.
-// Each Session is assigned a unique identifier, which is included as an
-// attribute in the Logs, Events, and Spans generated during the Session's
-// lifecycle.
-// When a session reaches end of life, typically due to user inactivity or
-// session timeout, a new session identifier will be assigned. The previous
-// session identifier may be provided by the instrumentation so that telemetry
-// backends can link the two sessions.
-const (
-	// SessionIDKey is the attribute Key conforming to the "session.id"
-	// semantic conventions. It represents a unique id to identify a session.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '00112233-4455-6677-8899-aabbccddeeff'
-	SessionIDKey = attribute.Key("session.id")
-
-	// SessionPreviousIDKey is the attribute Key conforming to the
-	// "session.previous_id" semantic conventions. It represents the previous
-	// `session.id` for this user, when known.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '00112233-4455-6677-8899-aabbccddeeff'
-	SessionPreviousIDKey = attribute.Key("session.previous_id")
-)
-
-// SessionID returns an attribute KeyValue conforming to the "session.id"
-// semantic conventions. It represents a unique id to identify a session.
-func SessionID(val string) attribute.KeyValue {
-	return SessionIDKey.String(val)
-}
-
-// SessionPreviousID returns an attribute KeyValue conforming to the
-// "session.previous_id" semantic conventions. It represents the previous
-// `session.id` for this user, when known.
-func SessionPreviousID(val string) attribute.KeyValue {
-	return SessionPreviousIDKey.String(val)
-}
-
-// SignalR attributes
-const (
-	// SignalrConnectionStatusKey is the attribute Key conforming to the
-	// "signalr.connection.status" semantic conventions. It represents the
-	// signalR HTTP connection closure status.
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'app_shutdown', 'timeout'
-	SignalrConnectionStatusKey = attribute.Key("signalr.connection.status")
-
-	// SignalrTransportKey is the attribute Key conforming to the
-	// "signalr.transport" semantic conventions. It represents the [SignalR
-	// transport
-	// type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'web_sockets', 'long_polling'
-	SignalrTransportKey = attribute.Key("signalr.transport")
-)
-
-var (
-	// The connection was closed normally
-	SignalrConnectionStatusNormalClosure = SignalrConnectionStatusKey.String("normal_closure")
-	// The connection was closed due to a timeout
-	SignalrConnectionStatusTimeout = SignalrConnectionStatusKey.String("timeout")
-	// The connection was closed because the app is shutting down
-	SignalrConnectionStatusAppShutdown = SignalrConnectionStatusKey.String("app_shutdown")
-)
-
-var (
-	// ServerSentEvents protocol
-	SignalrTransportServerSentEvents = SignalrTransportKey.String("server_sent_events")
-	// LongPolling protocol
-	SignalrTransportLongPolling = SignalrTransportKey.String("long_polling")
-	// WebSockets protocol
-	SignalrTransportWebSockets = SignalrTransportKey.String("web_sockets")
-)
-
-// These attributes may be used to describe the sender of a network
-// exchange/packet. These should be used when there is no client/server
-// relationship between the two sides, or when that relationship is unknown.
-// This covers low-level network interactions (e.g. packet tracing) where you
-// don't know if there was a connection or which side initiated it. This also
-// covers unidirectional UDP flows and peer-to-peer communication where the
-// "user-facing" surface of the protocol / API doesn't expose a clear notion of
-// client and server.
-const (
-	// SourceAddressKey is the attribute Key conforming to the "source.address"
-	// semantic conventions. It represents the source address - domain name if
-	// available without reverse DNS lookup; otherwise, IP address or Unix
-	// domain socket name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'source.example.com', '10.1.2.80', '/tmp/my.sock'
-	// Note: When observed from the destination side, and when communicating
-	// through an intermediary, `source.address` SHOULD represent the source
-	// address behind any intermediaries, for example proxies, if it's
-	// available.
-	SourceAddressKey = attribute.Key("source.address")
-
-	// SourcePortKey is the attribute Key conforming to the "source.port"
-	// semantic conventions. It represents the source port number
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 3389, 2888
-	SourcePortKey = attribute.Key("source.port")
-)
-
-// SourceAddress returns an attribute KeyValue conforming to the
-// "source.address" semantic conventions. It represents the source address -
-// domain name if available without reverse DNS lookup; otherwise, IP address
-// or Unix domain socket name.
-func SourceAddress(val string) attribute.KeyValue {
-	return SourceAddressKey.String(val)
-}
-
-// SourcePort returns an attribute KeyValue conforming to the "source.port"
-// semantic conventions. It represents the source port number
-func SourcePort(val int) attribute.KeyValue {
-	return SourcePortKey.Int(val)
-}
-
-// Describes System attributes
-const (
-	// SystemDeviceKey is the attribute Key conforming to the "system.device"
-	// semantic conventions. It represents the device identifier
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '(identifier)'
-	SystemDeviceKey = attribute.Key("system.device")
-)
-
-// SystemDevice returns an attribute KeyValue conforming to the
-// "system.device" semantic conventions. It represents the device identifier
-func SystemDevice(val string) attribute.KeyValue {
-	return SystemDeviceKey.String(val)
-}
-
-// Describes System CPU attributes
-const (
-	// SystemCPULogicalNumberKey is the attribute Key conforming to the
-	// "system.cpu.logical_number" semantic conventions. It represents the
-	// logical CPU number [0..n-1]
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 1
-	SystemCPULogicalNumberKey = attribute.Key("system.cpu.logical_number")
-
-	// SystemCPUStateKey is the attribute Key conforming to the
-	// "system.cpu.state" semantic conventions. It represents the state of the
-	// CPU
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'idle', 'interrupt'
-	SystemCPUStateKey = attribute.Key("system.cpu.state")
-)
-
-var (
-	// user
-	SystemCPUStateUser = SystemCPUStateKey.String("user")
-	// system
-	SystemCPUStateSystem = SystemCPUStateKey.String("system")
-	// nice
-	SystemCPUStateNice = SystemCPUStateKey.String("nice")
-	// idle
-	SystemCPUStateIdle = SystemCPUStateKey.String("idle")
-	// iowait
-	SystemCPUStateIowait = SystemCPUStateKey.String("iowait")
-	// interrupt
-	SystemCPUStateInterrupt = SystemCPUStateKey.String("interrupt")
-	// steal
-	SystemCPUStateSteal = SystemCPUStateKey.String("steal")
-)
-
-// SystemCPULogicalNumber returns an attribute KeyValue conforming to the
-// "system.cpu.logical_number" semantic conventions. It represents the logical
-// CPU number [0..n-1]
-func SystemCPULogicalNumber(val int) attribute.KeyValue {
-	return SystemCPULogicalNumberKey.Int(val)
-}
-
-// Describes System Memory attributes
-const (
-	// SystemMemoryStateKey is the attribute Key conforming to the
-	// "system.memory.state" semantic conventions. It represents the memory
-	// state
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'free', 'cached'
-	SystemMemoryStateKey = attribute.Key("system.memory.state")
-)
-
-var (
-	// used
-	SystemMemoryStateUsed = SystemMemoryStateKey.String("used")
-	// free
-	SystemMemoryStateFree = SystemMemoryStateKey.String("free")
-	// shared
-	SystemMemoryStateShared = SystemMemoryStateKey.String("shared")
-	// buffers
-	SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers")
-	// cached
-	SystemMemoryStateCached = SystemMemoryStateKey.String("cached")
-)
-
-// Describes System Memory Paging attributes
-const (
-	// SystemPagingDirectionKey is the attribute Key conforming to the
-	// "system.paging.direction" semantic conventions. It represents the paging
-	// access direction
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'in'
-	SystemPagingDirectionKey = attribute.Key("system.paging.direction")
-
-	// SystemPagingStateKey is the attribute Key conforming to the
-	// "system.paging.state" semantic conventions. It represents the memory
-	// paging state
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'free'
-	SystemPagingStateKey = attribute.Key("system.paging.state")
-
-	// SystemPagingTypeKey is the attribute Key conforming to the
-	// "system.paging.type" semantic conventions. It represents the memory
-	// paging type
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'minor'
-	SystemPagingTypeKey = attribute.Key("system.paging.type")
-)
-
-var (
-	// in
-	SystemPagingDirectionIn = SystemPagingDirectionKey.String("in")
-	// out
-	SystemPagingDirectionOut = SystemPagingDirectionKey.String("out")
-)
-
-var (
-	// used
-	SystemPagingStateUsed = SystemPagingStateKey.String("used")
-	// free
-	SystemPagingStateFree = SystemPagingStateKey.String("free")
-)
-
-var (
-	// major
-	SystemPagingTypeMajor = SystemPagingTypeKey.String("major")
-	// minor
-	SystemPagingTypeMinor = SystemPagingTypeKey.String("minor")
-)
-
-// Describes Filesystem attributes
-const (
-	// SystemFilesystemModeKey is the attribute Key conforming to the
-	// "system.filesystem.mode" semantic conventions. It represents the
-	// filesystem mode
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'rw, ro'
-	SystemFilesystemModeKey = attribute.Key("system.filesystem.mode")
-
-	// SystemFilesystemMountpointKey is the attribute Key conforming to the
-	// "system.filesystem.mountpoint" semantic conventions. It represents the
-	// filesystem mount path
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/mnt/data'
-	SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint")
-
-	// SystemFilesystemStateKey is the attribute Key conforming to the
-	// "system.filesystem.state" semantic conventions. It represents the
-	// filesystem state
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'used'
-	SystemFilesystemStateKey = attribute.Key("system.filesystem.state")
-
-	// SystemFilesystemTypeKey is the attribute Key conforming to the
-	// "system.filesystem.type" semantic conventions. It represents the
-	// filesystem type
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'ext4'
-	SystemFilesystemTypeKey = attribute.Key("system.filesystem.type")
-)
-
-var (
-	// used
-	SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used")
-	// free
-	SystemFilesystemStateFree = SystemFilesystemStateKey.String("free")
-	// reserved
-	SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved")
-)
-
-var (
-	// fat32
-	SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32")
-	// exfat
-	SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat")
-	// ntfs
-	SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs")
-	// refs
-	SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs")
-	// hfsplus
-	SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus")
-	// ext4
-	SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4")
-)
-
-// SystemFilesystemMode returns an attribute KeyValue conforming to the
-// "system.filesystem.mode" semantic conventions. It represents the filesystem
-// mode
-func SystemFilesystemMode(val string) attribute.KeyValue {
-	return SystemFilesystemModeKey.String(val)
-}
-
-// SystemFilesystemMountpoint returns an attribute KeyValue conforming to
-// the "system.filesystem.mountpoint" semantic conventions. It represents the
-// filesystem mount path
-func SystemFilesystemMountpoint(val string) attribute.KeyValue {
-	return SystemFilesystemMountpointKey.String(val)
-}
-
-// Describes Network attributes
-const (
-	// SystemNetworkStateKey is the attribute Key conforming to the
-	// "system.network.state" semantic conventions. It represents a stateless
-	// protocol MUST NOT set this attribute
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'close_wait'
-	SystemNetworkStateKey = attribute.Key("system.network.state")
-)
-
-var (
-	// close
-	SystemNetworkStateClose = SystemNetworkStateKey.String("close")
-	// close_wait
-	SystemNetworkStateCloseWait = SystemNetworkStateKey.String("close_wait")
-	// closing
-	SystemNetworkStateClosing = SystemNetworkStateKey.String("closing")
-	// delete
-	SystemNetworkStateDelete = SystemNetworkStateKey.String("delete")
-	// established
-	SystemNetworkStateEstablished = SystemNetworkStateKey.String("established")
-	// fin_wait_1
-	SystemNetworkStateFinWait1 = SystemNetworkStateKey.String("fin_wait_1")
-	// fin_wait_2
-	SystemNetworkStateFinWait2 = SystemNetworkStateKey.String("fin_wait_2")
-	// last_ack
-	SystemNetworkStateLastAck = SystemNetworkStateKey.String("last_ack")
-	// listen
-	SystemNetworkStateListen = SystemNetworkStateKey.String("listen")
-	// syn_recv
-	SystemNetworkStateSynRecv = SystemNetworkStateKey.String("syn_recv")
-	// syn_sent
-	SystemNetworkStateSynSent = SystemNetworkStateKey.String("syn_sent")
-	// time_wait
-	SystemNetworkStateTimeWait = SystemNetworkStateKey.String("time_wait")
-)
-
-// Describes System Process attributes
-const (
-	// SystemProcessStatusKey is the attribute Key conforming to the
-	// "system.process.status" semantic conventions. It represents the process
-	// state, e.g., [Linux Process State
-	// Codes](https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES)
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'running'
-	SystemProcessStatusKey = attribute.Key("system.process.status")
-)
-
-var (
-	// running
-	SystemProcessStatusRunning = SystemProcessStatusKey.String("running")
-	// sleeping
-	SystemProcessStatusSleeping = SystemProcessStatusKey.String("sleeping")
-	// stopped
-	SystemProcessStatusStopped = SystemProcessStatusKey.String("stopped")
-	// defunct
-	SystemProcessStatusDefunct = SystemProcessStatusKey.String("defunct")
-)
-
-// Attributes for telemetry SDK.
-const (
-	// TelemetrySDKLanguageKey is the attribute Key conforming to the
-	// "telemetry.sdk.language" semantic conventions. It represents the
-	// language of the telemetry SDK.
-	//
-	// Type: Enum
-	// RequirementLevel: Required
-	// Stability: stable
-	TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language")
-
-	// TelemetrySDKNameKey is the attribute Key conforming to the
-	// "telemetry.sdk.name" semantic conventions. It represents the name of the
-	// telemetry SDK as defined above.
-	//
-	// Type: string
-	// RequirementLevel: Required
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	// Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute
-	// to `opentelemetry`.
-	// If another SDK, like a fork or a vendor-provided implementation, is
-	// used, this SDK MUST set the
-	// `telemetry.sdk.name` attribute to the fully-qualified class or module
-	// name of this SDK's main entry point
-	// or another suitable identifier depending on the language.
-	// The identifier `opentelemetry` is reserved and MUST NOT be used in this
-	// case.
-	// All custom identifiers SHOULD be stable across different versions of an
-	// implementation.
-	TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name")
-
-	// TelemetrySDKVersionKey is the attribute Key conforming to the
-	// "telemetry.sdk.version" semantic conventions. It represents the version
-	// string of the telemetry SDK.
-	//
-	// Type: string
-	// RequirementLevel: Required
-	// Stability: stable
-	// Examples: '1.2.3'
-	TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version")
-
-	// TelemetryDistroNameKey is the attribute Key conforming to the
-	// "telemetry.distro.name" semantic conventions. It represents the name of
-	// the auto instrumentation agent or distribution, if used.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'parts-unlimited-java'
-	// Note: Official auto instrumentation agents and distributions SHOULD set
-	// the `telemetry.distro.name` attribute to
-	// a string starting with `opentelemetry-`, e.g.
-	// `opentelemetry-java-instrumentation`.
-	TelemetryDistroNameKey = attribute.Key("telemetry.distro.name")
-
-	// TelemetryDistroVersionKey is the attribute Key conforming to the
-	// "telemetry.distro.version" semantic conventions. It represents the
-	// version string of the auto instrumentation agent or distribution, if
-	// used.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1.2.3'
-	TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version")
-)
-
-var (
-	// cpp
-	TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp")
-	// dotnet
-	TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet")
-	// erlang
-	TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang")
-	// go
-	TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go")
-	// java
-	TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java")
-	// nodejs
-	TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs")
-	// php
-	TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php")
-	// python
-	TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python")
-	// ruby
-	TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby")
-	// rust
-	TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust")
-	// swift
-	TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift")
-	// webjs
-	TelemetrySDKLanguageWebjs = TelemetrySDKLanguageKey.String("webjs")
-)
-
-// TelemetrySDKName returns an attribute KeyValue conforming to the
-// "telemetry.sdk.name" semantic conventions. It represents the name of the
-// telemetry SDK as defined above.
-func TelemetrySDKName(val string) attribute.KeyValue {
-	return TelemetrySDKNameKey.String(val)
-}
-
-// TelemetrySDKVersion returns an attribute KeyValue conforming to the
-// "telemetry.sdk.version" semantic conventions. It represents the version
-// string of the telemetry SDK.
-func TelemetrySDKVersion(val string) attribute.KeyValue {
-	return TelemetrySDKVersionKey.String(val)
-}
-
-// TelemetryDistroName returns an attribute KeyValue conforming to the
-// "telemetry.distro.name" semantic conventions. It represents the name of the
-// auto instrumentation agent or distribution, if used.
-func TelemetryDistroName(val string) attribute.KeyValue {
-	return TelemetryDistroNameKey.String(val)
-}
-
-// TelemetryDistroVersion returns an attribute KeyValue conforming to the
-// "telemetry.distro.version" semantic conventions. It represents the version
-// string of the auto instrumentation agent or distribution, if used.
-func TelemetryDistroVersion(val string) attribute.KeyValue {
-	return TelemetryDistroVersionKey.String(val)
-}
-
-// These attributes may be used for any operation to store information about a
-// thread that started a span.
-const (
-	// ThreadIDKey is the attribute Key conforming to the "thread.id" semantic
-	// conventions. It represents the current "managed" thread ID (as opposed
-	// to OS thread ID).
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 42
-	ThreadIDKey = attribute.Key("thread.id")
-
-	// ThreadNameKey is the attribute Key conforming to the "thread.name"
-	// semantic conventions. It represents the current thread name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'main'
-	ThreadNameKey = attribute.Key("thread.name")
-)
-
-// ThreadID returns an attribute KeyValue conforming to the "thread.id"
-// semantic conventions. It represents the current "managed" thread ID (as
-// opposed to OS thread ID).
-func ThreadID(val int) attribute.KeyValue {
-	return ThreadIDKey.Int(val)
-}
-
-// ThreadName returns an attribute KeyValue conforming to the "thread.name"
-// semantic conventions. It represents the current thread name.
-func ThreadName(val string) attribute.KeyValue {
-	return ThreadNameKey.String(val)
-}
-
-// Semantic convention attributes in the TLS namespace.
-const (
-	// TLSCipherKey is the attribute Key conforming to the "tls.cipher"
-	// semantic conventions. It represents the string indicating the
-	// [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5)
-	// used during the current connection.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
-	// 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'
-	// Note: The values allowed for `tls.cipher` MUST be one of the
-	// `Descriptions` of the [registered TLS Cipher
-	// Suits](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4).
-	TLSCipherKey = attribute.Key("tls.cipher")
-
-	// TLSClientCertificateKey is the attribute Key conforming to the
-	// "tls.client.certificate" semantic conventions. It represents the
-	// pEM-encoded stand-alone certificate offered by the client. This is
-	// usually mutually-exclusive of `client.certificate_chain` since this
-	// value also exists in that list.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MII...'
-	TLSClientCertificateKey = attribute.Key("tls.client.certificate")
-
-	// TLSClientCertificateChainKey is the attribute Key conforming to the
-	// "tls.client.certificate_chain" semantic conventions. It represents the
-	// array of PEM-encoded certificates that make up the certificate chain
-	// offered by the client. This is usually mutually-exclusive of
-	// `client.certificate` since that value should be the first certificate in
-	// the chain.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MII...', 'MI...'
-	TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain")
-
-	// TLSClientHashMd5Key is the attribute Key conforming to the
-	// "tls.client.hash.md5" semantic conventions. It represents the
-	// certificate fingerprint using the MD5 digest of DER-encoded version of
-	// certificate offered by the client. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC'
-	TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5")
-
-	// TLSClientHashSha1Key is the attribute Key conforming to the
-	// "tls.client.hash.sha1" semantic conventions. It represents the
-	// certificate fingerprint using the SHA1 digest of DER-encoded version of
-	// certificate offered by the client. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '9E393D93138888D288266C2D915214D1D1CCEB2A'
-	TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1")
-
-	// TLSClientHashSha256Key is the attribute Key conforming to the
-	// "tls.client.hash.sha256" semantic conventions. It represents the
-	// certificate fingerprint using the SHA256 digest of DER-encoded version
-	// of certificate offered by the client. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0'
-	TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256")
-
-	// TLSClientIssuerKey is the attribute Key conforming to the
-	// "tls.client.issuer" semantic conventions. It represents the
-	// distinguished name of
-	// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6)
-	// of the issuer of the x.509 certificate presented by the client.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'CN=Example Root CA, OU=Infrastructure Team, DC=example,
-	// DC=com'
-	TLSClientIssuerKey = attribute.Key("tls.client.issuer")
-
-	// TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3"
-	// semantic conventions. It represents a hash that identifies clients based
-	// on how they perform an SSL/TLS handshake.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'd4e5b18d6b55c71272893221c96ba240'
-	TLSClientJa3Key = attribute.Key("tls.client.ja3")
-
-	// TLSClientNotAfterKey is the attribute Key conforming to the
-	// "tls.client.not_after" semantic conventions. It represents the date/Time
-	// indicating when client certificate is no longer considered valid.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2021-01-01T00:00:00.000Z'
-	TLSClientNotAfterKey = attribute.Key("tls.client.not_after")
-
-	// TLSClientNotBeforeKey is the attribute Key conforming to the
-	// "tls.client.not_before" semantic conventions. It represents the
-	// date/Time indicating when client certificate is first considered valid.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1970-01-01T00:00:00.000Z'
-	TLSClientNotBeforeKey = attribute.Key("tls.client.not_before")
-
-	// TLSClientServerNameKey is the attribute Key conforming to the
-	// "tls.client.server_name" semantic conventions. It represents the also
-	// called an SNI, this tells the server which hostname to which the client
-	// is attempting to connect to.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'opentelemetry.io'
-	TLSClientServerNameKey = attribute.Key("tls.client.server_name")
-
-	// TLSClientSubjectKey is the attribute Key conforming to the
-	// "tls.client.subject" semantic conventions. It represents the
-	// distinguished name of subject of the x.509 certificate presented by the
-	// client.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'CN=myclient, OU=Documentation Team, DC=example, DC=com'
-	TLSClientSubjectKey = attribute.Key("tls.client.subject")
-
-	// TLSClientSupportedCiphersKey is the attribute Key conforming to the
-	// "tls.client.supported_ciphers" semantic conventions. It represents the
-	// array of ciphers offered by the client during the client hello.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
-	// "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "..."'
-	TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers")
-
-	// TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic
-	// conventions. It represents the string indicating the curve used for the
-	// given cipher, when applicable
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'secp256r1'
-	TLSCurveKey = attribute.Key("tls.curve")
-
-	// TLSEstablishedKey is the attribute Key conforming to the
-	// "tls.established" semantic conventions. It represents the boolean flag
-	// indicating if the TLS negotiation was successful and transitioned to an
-	// encrypted tunnel.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: True
-	TLSEstablishedKey = attribute.Key("tls.established")
-
-	// TLSNextProtocolKey is the attribute Key conforming to the
-	// "tls.next_protocol" semantic conventions. It represents the string
-	// indicating the protocol being tunneled. Per the values in the [IANA
-	// registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids),
-	// this string should be lower case.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'http/1.1'
-	TLSNextProtocolKey = attribute.Key("tls.next_protocol")
-
-	// TLSProtocolNameKey is the attribute Key conforming to the
-	// "tls.protocol.name" semantic conventions. It represents the normalized
-	// lowercase protocol name parsed from original string of the negotiated
-	// [SSL/TLS protocol
-	// version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES)
-	//
-	// Type: Enum
-	// RequirementLevel: Optional
-	// Stability: experimental
-	TLSProtocolNameKey = attribute.Key("tls.protocol.name")
-
-	// TLSProtocolVersionKey is the attribute Key conforming to the
-	// "tls.protocol.version" semantic conventions. It represents the numeric
-	// part of the version parsed from the original string of the negotiated
-	// [SSL/TLS protocol
-	// version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES)
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1.2', '3'
-	TLSProtocolVersionKey = attribute.Key("tls.protocol.version")
-
-	// TLSResumedKey is the attribute Key conforming to the "tls.resumed"
-	// semantic conventions. It represents the boolean flag indicating if this
-	// TLS connection was resumed from an existing TLS negotiation.
-	//
-	// Type: boolean
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: True
-	TLSResumedKey = attribute.Key("tls.resumed")
-
-	// TLSServerCertificateKey is the attribute Key conforming to the
-	// "tls.server.certificate" semantic conventions. It represents the
-	// pEM-encoded stand-alone certificate offered by the server. This is
-	// usually mutually-exclusive of `server.certificate_chain` since this
-	// value also exists in that list.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MII...'
-	TLSServerCertificateKey = attribute.Key("tls.server.certificate")
-
-	// TLSServerCertificateChainKey is the attribute Key conforming to the
-	// "tls.server.certificate_chain" semantic conventions. It represents the
-	// array of PEM-encoded certificates that make up the certificate chain
-	// offered by the server. This is usually mutually-exclusive of
-	// `server.certificate` since that value should be the first certificate in
-	// the chain.
-	//
-	// Type: string[]
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'MII...', 'MI...'
-	TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain")
-
-	// TLSServerHashMd5Key is the attribute Key conforming to the
-	// "tls.server.hash.md5" semantic conventions. It represents the
-	// certificate fingerprint using the MD5 digest of DER-encoded version of
-	// certificate offered by the server. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC'
-	TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5")
-
-	// TLSServerHashSha1Key is the attribute Key conforming to the
-	// "tls.server.hash.sha1" semantic conventions. It represents the
-	// certificate fingerprint using the SHA1 digest of DER-encoded version of
-	// certificate offered by the server. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '9E393D93138888D288266C2D915214D1D1CCEB2A'
-	TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1")
-
-	// TLSServerHashSha256Key is the attribute Key conforming to the
-	// "tls.server.hash.sha256" semantic conventions. It represents the
-	// certificate fingerprint using the SHA256 digest of DER-encoded version
-	// of certificate offered by the server. For consistency with other hash
-	// values, this value should be formatted as an uppercase hash.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples:
-	// '0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0'
-	TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256")
-
-	// TLSServerIssuerKey is the attribute Key conforming to the
-	// "tls.server.issuer" semantic conventions. It represents the
-	// distinguished name of
-	// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6)
-	// of the issuer of the x.509 certificate presented by the client.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'CN=Example Root CA, OU=Infrastructure Team, DC=example,
-	// DC=com'
-	TLSServerIssuerKey = attribute.Key("tls.server.issuer")
-
-	// TLSServerJa3sKey is the attribute Key conforming to the
-	// "tls.server.ja3s" semantic conventions. It represents a hash that
-	// identifies servers based on how they perform an SSL/TLS handshake.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'd4e5b18d6b55c71272893221c96ba240'
-	TLSServerJa3sKey = attribute.Key("tls.server.ja3s")
-
-	// TLSServerNotAfterKey is the attribute Key conforming to the
-	// "tls.server.not_after" semantic conventions. It represents the date/Time
-	// indicating when server certificate is no longer considered valid.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '2021-01-01T00:00:00.000Z'
-	TLSServerNotAfterKey = attribute.Key("tls.server.not_after")
-
-	// TLSServerNotBeforeKey is the attribute Key conforming to the
-	// "tls.server.not_before" semantic conventions. It represents the
-	// date/Time indicating when server certificate is first considered valid.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '1970-01-01T00:00:00.000Z'
-	TLSServerNotBeforeKey = attribute.Key("tls.server.not_before")
-
-	// TLSServerSubjectKey is the attribute Key conforming to the
-	// "tls.server.subject" semantic conventions. It represents the
-	// distinguished name of subject of the x.509 certificate presented by the
-	// server.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'CN=myserver, OU=Documentation Team, DC=example, DC=com'
-	TLSServerSubjectKey = attribute.Key("tls.server.subject")
-)
-
-var (
-	// ssl
-	TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl")
-	// tls
-	TLSProtocolNameTLS = TLSProtocolNameKey.String("tls")
-)
-
-// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher"
-// semantic conventions. It represents the string indicating the
-// [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used
-// during the current connection.
-func TLSCipher(val string) attribute.KeyValue {
-	return TLSCipherKey.String(val)
-}
-
-// TLSClientCertificate returns an attribute KeyValue conforming to the
-// "tls.client.certificate" semantic conventions. It represents the pEM-encoded
-// stand-alone certificate offered by the client. This is usually
-// mutually-exclusive of `client.certificate_chain` since this value also
-// exists in that list.
-func TLSClientCertificate(val string) attribute.KeyValue {
-	return TLSClientCertificateKey.String(val)
-}
-
-// TLSClientCertificateChain returns an attribute KeyValue conforming to the
-// "tls.client.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by
-// the client. This is usually mutually-exclusive of `client.certificate` since
-// that value should be the first certificate in the chain.
-func TLSClientCertificateChain(val ...string) attribute.KeyValue {
-	return TLSClientCertificateChainKey.StringSlice(val)
-}
-
-// TLSClientHashMd5 returns an attribute KeyValue conforming to the
-// "tls.client.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashMd5(val string) attribute.KeyValue {
-	return TLSClientHashMd5Key.String(val)
-}
-
-// TLSClientHashSha1 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha1(val string) attribute.KeyValue {
-	return TLSClientHashSha1Key.String(val)
-}
-
-// TLSClientHashSha256 returns an attribute KeyValue conforming to the
-// "tls.client.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the client. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSClientHashSha256(val string) attribute.KeyValue {
-	return TLSClientHashSha256Key.String(val)
-}
-
-// TLSClientIssuer returns an attribute KeyValue conforming to the
-// "tls.client.issuer" semantic conventions. It represents the distinguished
-// name of
-// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of
-// the issuer of the x.509 certificate presented by the client.
-func TLSClientIssuer(val string) attribute.KeyValue {
-	return TLSClientIssuerKey.String(val)
-}
-
-// TLSClientJa3 returns an attribute KeyValue conforming to the
-// "tls.client.ja3" semantic conventions. It represents a hash that identifies
-// clients based on how they perform an SSL/TLS handshake.
-func TLSClientJa3(val string) attribute.KeyValue {
-	return TLSClientJa3Key.String(val)
-}
-
-// TLSClientNotAfter returns an attribute KeyValue conforming to the
-// "tls.client.not_after" semantic conventions. It represents the date/Time
-// indicating when client certificate is no longer considered valid.
-func TLSClientNotAfter(val string) attribute.KeyValue {
-	return TLSClientNotAfterKey.String(val)
-}
-
-// TLSClientNotBefore returns an attribute KeyValue conforming to the
-// "tls.client.not_before" semantic conventions. It represents the date/Time
-// indicating when client certificate is first considered valid.
-func TLSClientNotBefore(val string) attribute.KeyValue {
-	return TLSClientNotBeforeKey.String(val)
-}
-
-// TLSClientServerName returns an attribute KeyValue conforming to the
-// "tls.client.server_name" semantic conventions. It represents the also called
-// an SNI, this tells the server which hostname to which the client is
-// attempting to connect to.
-func TLSClientServerName(val string) attribute.KeyValue {
-	return TLSClientServerNameKey.String(val)
-}
-
-// TLSClientSubject returns an attribute KeyValue conforming to the
-// "tls.client.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the client.
-func TLSClientSubject(val string) attribute.KeyValue {
-	return TLSClientSubjectKey.String(val)
-}
-
-// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the
-// "tls.client.supported_ciphers" semantic conventions. It represents the array
-// of ciphers offered by the client during the client hello.
-func TLSClientSupportedCiphers(val ...string) attribute.KeyValue {
-	return TLSClientSupportedCiphersKey.StringSlice(val)
-}
-
-// TLSCurve returns an attribute KeyValue conforming to the "tls.curve"
-// semantic conventions. It represents the string indicating the curve used for
-// the given cipher, when applicable
-func TLSCurve(val string) attribute.KeyValue {
-	return TLSCurveKey.String(val)
-}
-
-// TLSEstablished returns an attribute KeyValue conforming to the
-// "tls.established" semantic conventions. It represents the boolean flag
-// indicating if the TLS negotiation was successful and transitioned to an
-// encrypted tunnel.
-func TLSEstablished(val bool) attribute.KeyValue {
-	return TLSEstablishedKey.Bool(val)
-}
-
-// TLSNextProtocol returns an attribute KeyValue conforming to the
-// "tls.next_protocol" semantic conventions. It represents the string
-// indicating the protocol being tunneled. Per the values in the [IANA
-// registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids),
-// this string should be lower case.
-func TLSNextProtocol(val string) attribute.KeyValue {
-	return TLSNextProtocolKey.String(val)
-}
-
-// TLSProtocolVersion returns an attribute KeyValue conforming to the
-// "tls.protocol.version" semantic conventions. It represents the numeric part
-// of the version parsed from the original string of the negotiated [SSL/TLS
-// protocol
-// version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES)
-func TLSProtocolVersion(val string) attribute.KeyValue {
-	return TLSProtocolVersionKey.String(val)
-}
-
-// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed"
-// semantic conventions. It represents the boolean flag indicating if this TLS
-// connection was resumed from an existing TLS negotiation.
-func TLSResumed(val bool) attribute.KeyValue {
-	return TLSResumedKey.Bool(val)
-}
-
-// TLSServerCertificate returns an attribute KeyValue conforming to the
-// "tls.server.certificate" semantic conventions. It represents the pEM-encoded
-// stand-alone certificate offered by the server. This is usually
-// mutually-exclusive of `server.certificate_chain` since this value also
-// exists in that list.
-func TLSServerCertificate(val string) attribute.KeyValue {
-	return TLSServerCertificateKey.String(val)
-}
-
-// TLSServerCertificateChain returns an attribute KeyValue conforming to the
-// "tls.server.certificate_chain" semantic conventions. It represents the array
-// of PEM-encoded certificates that make up the certificate chain offered by
-// the server. This is usually mutually-exclusive of `server.certificate` since
-// that value should be the first certificate in the chain.
-func TLSServerCertificateChain(val ...string) attribute.KeyValue {
-	return TLSServerCertificateChainKey.StringSlice(val)
-}
-
-// TLSServerHashMd5 returns an attribute KeyValue conforming to the
-// "tls.server.hash.md5" semantic conventions. It represents the certificate
-// fingerprint using the MD5 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashMd5(val string) attribute.KeyValue {
-	return TLSServerHashMd5Key.String(val)
-}
-
-// TLSServerHashSha1 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha1" semantic conventions. It represents the certificate
-// fingerprint using the SHA1 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha1(val string) attribute.KeyValue {
-	return TLSServerHashSha1Key.String(val)
-}
-
-// TLSServerHashSha256 returns an attribute KeyValue conforming to the
-// "tls.server.hash.sha256" semantic conventions. It represents the certificate
-// fingerprint using the SHA256 digest of DER-encoded version of certificate
-// offered by the server. For consistency with other hash values, this value
-// should be formatted as an uppercase hash.
-func TLSServerHashSha256(val string) attribute.KeyValue {
-	return TLSServerHashSha256Key.String(val)
-}
-
-// TLSServerIssuer returns an attribute KeyValue conforming to the
-// "tls.server.issuer" semantic conventions. It represents the distinguished
-// name of
-// [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of
-// the issuer of the x.509 certificate presented by the client.
-func TLSServerIssuer(val string) attribute.KeyValue {
-	return TLSServerIssuerKey.String(val)
-}
-
-// TLSServerJa3s returns an attribute KeyValue conforming to the
-// "tls.server.ja3s" semantic conventions. It represents a hash that identifies
-// servers based on how they perform an SSL/TLS handshake.
-func TLSServerJa3s(val string) attribute.KeyValue {
-	return TLSServerJa3sKey.String(val)
-}
-
-// TLSServerNotAfter returns an attribute KeyValue conforming to the
-// "tls.server.not_after" semantic conventions. It represents the date/Time
-// indicating when server certificate is no longer considered valid.
-func TLSServerNotAfter(val string) attribute.KeyValue {
-	return TLSServerNotAfterKey.String(val)
-}
-
-// TLSServerNotBefore returns an attribute KeyValue conforming to the
-// "tls.server.not_before" semantic conventions. It represents the date/Time
-// indicating when server certificate is first considered valid.
-func TLSServerNotBefore(val string) attribute.KeyValue {
-	return TLSServerNotBeforeKey.String(val)
-}
-
-// TLSServerSubject returns an attribute KeyValue conforming to the
-// "tls.server.subject" semantic conventions. It represents the distinguished
-// name of subject of the x.509 certificate presented by the server.
-func TLSServerSubject(val string) attribute.KeyValue {
-	return TLSServerSubjectKey.String(val)
-}
-
-// Attributes describing URL.
-const (
-	// URLDomainKey is the attribute Key conforming to the "url.domain"
-	// semantic conventions. It represents the domain extracted from the
-	// `url.full`, such as "opentelemetry.io".
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'www.foo.bar', 'opentelemetry.io', '3.12.167.2',
-	// '[1080:0:0:0:8:800:200C:417A]'
-	// Note: In some cases a URL may refer to an IP and/or port directly,
-	// without a domain name. In this case, the IP address would go to the
-	// domain field. If the URL contains a [literal IPv6
-	// address](https://www.rfc-editor.org/rfc/rfc2732#section-2) enclosed by
-	// `[` and `]`, the `[` and `]` characters should also be captured in the
-	// domain field.
-	URLDomainKey = attribute.Key("url.domain")
-
-	// URLExtensionKey is the attribute Key conforming to the "url.extension"
-	// semantic conventions. It represents the file extension extracted from
-	// the `url.full`, excluding the leading dot.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'png', 'gz'
-	// Note: The file extension is only set if it exists, as not every url has
-	// a file extension. When the file name has multiple extensions
-	// `example.tar.gz`, only the last one should be captured `gz`, not
-	// `tar.gz`.
-	URLExtensionKey = attribute.Key("url.extension")
-
-	// URLFragmentKey is the attribute Key conforming to the "url.fragment"
-	// semantic conventions. It represents the [URI
-	// fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'SemConv'
-	URLFragmentKey = attribute.Key("url.fragment")
-
-	// URLFullKey is the attribute Key conforming to the "url.full" semantic
-	// conventions. It represents the absolute URL describing a network
-	// resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv',
-	// '//localhost'
-	// Note: For network calls, URL usually has
-	// `scheme://host[:port][path][?query][#fragment]` format, where the
-	// fragment is not transmitted over HTTP, but if it is known, it SHOULD be
-	// included nevertheless.
-	// `url.full` MUST NOT contain credentials passed via URL in form of
-	// `https://username:password@www.example.com/`. In such case username and
-	// password SHOULD be redacted and attribute's value SHOULD be
-	// `https://REDACTED:REDACTED@www.example.com/`.
-	// `url.full` SHOULD capture the absolute URL when it is available (or can
-	// be reconstructed). Sensitive content provided in `url.full` SHOULD be
-	// scrubbed when instrumentations can identify it.
-	URLFullKey = attribute.Key("url.full")
-
-	// URLOriginalKey is the attribute Key conforming to the "url.original"
-	// semantic conventions. It represents the unmodified original URL as seen
-	// in the event source.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv',
-	// 'search?q=OpenTelemetry'
-	// Note: In network monitoring, the observed URL may be a full URL, whereas
-	// in access logs, the URL is often just represented as a path. This field
-	// is meant to represent the URL as it was observed, complete or not.
-	// `url.original` might contain credentials passed via URL in form of
-	// `https://username:password@www.example.com/`. In such case password and
-	// username SHOULD NOT be redacted and attribute's value SHOULD remain the
-	// same.
-	URLOriginalKey = attribute.Key("url.original")
-
-	// URLPathKey is the attribute Key conforming to the "url.path" semantic
-	// conventions. It represents the [URI
-	// path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: '/search'
-	// Note: Sensitive content provided in `url.path` SHOULD be scrubbed when
-	// instrumentations can identify it.
-	URLPathKey = attribute.Key("url.path")
-
-	// URLPortKey is the attribute Key conforming to the "url.port" semantic
-	// conventions. It represents the port extracted from the `url.full`
-	//
-	// Type: int
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 443
-	URLPortKey = attribute.Key("url.port")
-
-	// URLQueryKey is the attribute Key conforming to the "url.query" semantic
-	// conventions. It represents the [URI
-	// query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'q=OpenTelemetry'
-	// Note: Sensitive content provided in `url.query` SHOULD be scrubbed when
-	// instrumentations can identify it.
-	URLQueryKey = attribute.Key("url.query")
-
-	// URLRegisteredDomainKey is the attribute Key conforming to the
-	// "url.registered_domain" semantic conventions. It represents the highest
-	// registered url domain, stripped of the subdomain.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'example.com', 'foo.co.uk'
-	// Note: This value can be determined precisely with the [public suffix
-	// list](http://publicsuffix.org). For example, the registered domain for
-	// `foo.example.com` is `example.com`. Trying to approximate this by simply
-	// taking the last two labels will not work well for TLDs such as `co.uk`.
-	URLRegisteredDomainKey = attribute.Key("url.registered_domain")
-
-	// URLSchemeKey is the attribute Key conforming to the "url.scheme"
-	// semantic conventions. It represents the [URI
-	// scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component
-	// identifying the used protocol.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'https', 'ftp', 'telnet'
-	URLSchemeKey = attribute.Key("url.scheme")
-
-	// URLSubdomainKey is the attribute Key conforming to the "url.subdomain"
-	// semantic conventions. It represents the subdomain portion of a fully
-	// qualified domain name includes all of the names except the host name
-	// under the registered_domain. In a partially qualified domain, or if the
-	// qualification level of the full name cannot be determined, subdomain
-	// contains all of the names below the registered domain.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'east', 'sub2.sub1'
-	// Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If
-	// the domain has multiple levels of subdomain, such as
-	// `sub2.sub1.example.com`, the subdomain field should contain `sub2.sub1`,
-	// with no trailing period.
-	URLSubdomainKey = attribute.Key("url.subdomain")
-
-	// URLTemplateKey is the attribute Key conforming to the "url.template"
-	// semantic conventions. It represents the low-cardinality template of an
-	// [absolute path
-	// reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '/users/{id}', '/users/:id', '/users?id={id}'
-	URLTemplateKey = attribute.Key("url.template")
-
-	// URLTopLevelDomainKey is the attribute Key conforming to the
-	// "url.top_level_domain" semantic conventions. It represents the effective
-	// top level domain (eTLD), also known as the domain suffix, is the last
-	// part of the domain name. For example, the top level domain for
-	// example.com is `com`.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'com', 'co.uk'
-	// Note: This value can be determined precisely with the [public suffix
-	// list](http://publicsuffix.org).
-	URLTopLevelDomainKey = attribute.Key("url.top_level_domain")
-)
-
-// URLDomain returns an attribute KeyValue conforming to the "url.domain"
-// semantic conventions. It represents the domain extracted from the
-// `url.full`, such as "opentelemetry.io".
-func URLDomain(val string) attribute.KeyValue {
-	return URLDomainKey.String(val)
-}
-
-// URLExtension returns an attribute KeyValue conforming to the
-// "url.extension" semantic conventions. It represents the file extension
-// extracted from the `url.full`, excluding the leading dot.
-func URLExtension(val string) attribute.KeyValue {
-	return URLExtensionKey.String(val)
-}
-
-// URLFragment returns an attribute KeyValue conforming to the
-// "url.fragment" semantic conventions. It represents the [URI
-// fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component
-func URLFragment(val string) attribute.KeyValue {
-	return URLFragmentKey.String(val)
-}
-
-// URLFull returns an attribute KeyValue conforming to the "url.full"
-// semantic conventions. It represents the absolute URL describing a network
-// resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)
-func URLFull(val string) attribute.KeyValue {
-	return URLFullKey.String(val)
-}
-
-// URLOriginal returns an attribute KeyValue conforming to the
-// "url.original" semantic conventions. It represents the unmodified original
-// URL as seen in the event source.
-func URLOriginal(val string) attribute.KeyValue {
-	return URLOriginalKey.String(val)
-}
-
-// URLPath returns an attribute KeyValue conforming to the "url.path"
-// semantic conventions. It represents the [URI
-// path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component
-func URLPath(val string) attribute.KeyValue {
-	return URLPathKey.String(val)
-}
-
-// URLPort returns an attribute KeyValue conforming to the "url.port"
-// semantic conventions. It represents the port extracted from the `url.full`
-func URLPort(val int) attribute.KeyValue {
-	return URLPortKey.Int(val)
-}
-
-// URLQuery returns an attribute KeyValue conforming to the "url.query"
-// semantic conventions. It represents the [URI
-// query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component
-func URLQuery(val string) attribute.KeyValue {
-	return URLQueryKey.String(val)
-}
-
-// URLRegisteredDomain returns an attribute KeyValue conforming to the
-// "url.registered_domain" semantic conventions. It represents the highest
-// registered url domain, stripped of the subdomain.
-func URLRegisteredDomain(val string) attribute.KeyValue {
-	return URLRegisteredDomainKey.String(val)
-}
-
-// URLScheme returns an attribute KeyValue conforming to the "url.scheme"
-// semantic conventions. It represents the [URI
-// scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component
-// identifying the used protocol.
-func URLScheme(val string) attribute.KeyValue {
-	return URLSchemeKey.String(val)
-}
-
-// URLSubdomain returns an attribute KeyValue conforming to the
-// "url.subdomain" semantic conventions. It represents the subdomain portion of
-// a fully qualified domain name includes all of the names except the host name
-// under the registered_domain. In a partially qualified domain, or if the
-// qualification level of the full name cannot be determined, subdomain
-// contains all of the names below the registered domain.
-func URLSubdomain(val string) attribute.KeyValue {
-	return URLSubdomainKey.String(val)
-}
-
-// URLTemplate returns an attribute KeyValue conforming to the
-// "url.template" semantic conventions. It represents the low-cardinality
-// template of an [absolute path
-// reference](https://www.rfc-editor.org/rfc/rfc3986#section-4.2).
-func URLTemplate(val string) attribute.KeyValue {
-	return URLTemplateKey.String(val)
-}
-
-// URLTopLevelDomain returns an attribute KeyValue conforming to the
-// "url.top_level_domain" semantic conventions. It represents the effective top
-// level domain (eTLD), also known as the domain suffix, is the last part of
-// the domain name. For example, the top level domain for example.com is `com`.
-func URLTopLevelDomain(val string) attribute.KeyValue {
-	return URLTopLevelDomainKey.String(val)
-}
-
-// Describes user-agent attributes.
-const (
-	// UserAgentNameKey is the attribute Key conforming to the
-	// "user_agent.name" semantic conventions. It represents the name of the
-	// user-agent extracted from original. Usually refers to the browser's
-	// name.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'Safari', 'YourApp'
-	// Note: [Example](https://www.whatsmyua.info) of extracting browser's name
-	// from original string. In the case of using a user-agent for non-browser
-	// products, such as microservices with multiple names/versions inside the
-	// `user_agent.original`, the most significant name SHOULD be selected. In
-	// such a scenario it should align with `user_agent.version`
-	UserAgentNameKey = attribute.Key("user_agent.name")
-
-	// UserAgentOriginalKey is the attribute Key conforming to the
-	// "user_agent.original" semantic conventions. It represents the value of
-	// the [HTTP
-	// User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent)
-	// header sent by the client.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: stable
-	// Examples: 'CERN-LineMode/2.15 libwww/2.17b3', 'Mozilla/5.0 (iPhone; CPU
-	// iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)
-	// Version/14.1.2 Mobile/15E148 Safari/604.1', 'YourApp/1.0.0
-	// grpc-java-okhttp/1.27.2'
-	UserAgentOriginalKey = attribute.Key("user_agent.original")
-
-	// UserAgentVersionKey is the attribute Key conforming to the
-	// "user_agent.version" semantic conventions. It represents the version of
-	// the user-agent extracted from original. Usually refers to the browser's
-	// version
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '14.1.2', '1.0.0'
-	// Note: [Example](https://www.whatsmyua.info) of extracting browser's
-	// version from original string. In the case of using a user-agent for
-	// non-browser products, such as microservices with multiple names/versions
-	// inside the `user_agent.original`, the most significant version SHOULD be
-	// selected. In such a scenario it should align with `user_agent.name`
-	UserAgentVersionKey = attribute.Key("user_agent.version")
-)
-
-// UserAgentName returns an attribute KeyValue conforming to the
-// "user_agent.name" semantic conventions. It represents the name of the
-// user-agent extracted from original. Usually refers to the browser's name.
-func UserAgentName(val string) attribute.KeyValue {
-	return UserAgentNameKey.String(val)
-}
-
-// UserAgentOriginal returns an attribute KeyValue conforming to the
-// "user_agent.original" semantic conventions. It represents the value of the
-// [HTTP
-// User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent)
-// header sent by the client.
-func UserAgentOriginal(val string) attribute.KeyValue {
-	return UserAgentOriginalKey.String(val)
-}
-
-// UserAgentVersion returns an attribute KeyValue conforming to the
-// "user_agent.version" semantic conventions. It represents the version of the
-// user-agent extracted from original. Usually refers to the browser's version
-func UserAgentVersion(val string) attribute.KeyValue {
-	return UserAgentVersionKey.String(val)
-}
-
-// The attributes used to describe the packaged software running the
-// application code.
-const (
-	// WebEngineDescriptionKey is the attribute Key conforming to the
-	// "webengine.description" semantic conventions. It represents the
-	// additional description of the web engine (e.g. detailed version and
-	// edition information).
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) -
-	// 2.2.2.Final'
-	WebEngineDescriptionKey = attribute.Key("webengine.description")
-
-	// WebEngineNameKey is the attribute Key conforming to the "webengine.name"
-	// semantic conventions. It represents the name of the web engine.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: 'WildFly'
-	WebEngineNameKey = attribute.Key("webengine.name")
-
-	// WebEngineVersionKey is the attribute Key conforming to the
-	// "webengine.version" semantic conventions. It represents the version of
-	// the web engine.
-	//
-	// Type: string
-	// RequirementLevel: Optional
-	// Stability: experimental
-	// Examples: '21.0.0'
-	WebEngineVersionKey = attribute.Key("webengine.version")
-)
-
-// WebEngineDescription returns an attribute KeyValue conforming to the
-// "webengine.description" semantic conventions. It represents the additional
-// description of the web engine (e.g. detailed version and edition
-// information).
-func WebEngineDescription(val string) attribute.KeyValue {
-	return WebEngineDescriptionKey.String(val)
-}
-
-// WebEngineName returns an attribute KeyValue conforming to the
-// "webengine.name" semantic conventions. It represents the name of the web
-// engine.
-func WebEngineName(val string) attribute.KeyValue {
-	return WebEngineNameKey.String(val)
-}
-
-// WebEngineVersion returns an attribute KeyValue conforming to the
-// "webengine.version" semantic conventions. It represents the version of the
-// web engine.
-func WebEngineVersion(val string) attribute.KeyValue {
-	return WebEngineVersionKey.String(val)
-}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go
deleted file mode 100644
index d031bbe..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/doc.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Package semconv implements OpenTelemetry semantic conventions.
-//
-// OpenTelemetry semantic conventions are agreed standardized naming
-// patterns for OpenTelemetry things. This package represents the v1.26.0
-// version of the OpenTelemetry semantic conventions.
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0"
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go
deleted file mode 100644
index bfaee0d..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/exception.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0"
-
-const (
-	// ExceptionEventName is the name of the Span event representing an exception.
-	ExceptionEventName = "exception"
-)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go
deleted file mode 100644
index fcdb9f4..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/metric.go
+++ /dev/null
@@ -1,1307 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0"
-
-const (
-
-	// ContainerCPUTime is the metric conforming to the "container.cpu.time"
-	// semantic conventions. It represents the total CPU time consumed.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Experimental
-	ContainerCPUTimeName        = "container.cpu.time"
-	ContainerCPUTimeUnit        = "s"
-	ContainerCPUTimeDescription = "Total CPU time consumed"
-
-	// ContainerMemoryUsage is the metric conforming to the
-	// "container.memory.usage" semantic conventions. It represents the memory
-	// usage of the container.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	ContainerMemoryUsageName        = "container.memory.usage"
-	ContainerMemoryUsageUnit        = "By"
-	ContainerMemoryUsageDescription = "Memory usage of the container."
-
-	// ContainerDiskIo is the metric conforming to the "container.disk.io" semantic
-	// conventions. It represents the disk bytes for the container.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	ContainerDiskIoName        = "container.disk.io"
-	ContainerDiskIoUnit        = "By"
-	ContainerDiskIoDescription = "Disk bytes for the container."
-
-	// ContainerNetworkIo is the metric conforming to the "container.network.io"
-	// semantic conventions. It represents the network bytes for the container.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	ContainerNetworkIoName        = "container.network.io"
-	ContainerNetworkIoUnit        = "By"
-	ContainerNetworkIoDescription = "Network bytes for the container."
-
-	// DBClientOperationDuration is the metric conforming to the
-	// "db.client.operation.duration" semantic conventions. It represents the
-	// duration of database client operations.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	DBClientOperationDurationName        = "db.client.operation.duration"
-	DBClientOperationDurationUnit        = "s"
-	DBClientOperationDurationDescription = "Duration of database client operations."
-
-	// DBClientConnectionCount is the metric conforming to the
-	// "db.client.connection.count" semantic conventions. It represents the number
-	// of connections that are currently in state described by the `state`
-	// attribute.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionCountName        = "db.client.connection.count"
-	DBClientConnectionCountUnit        = "{connection}"
-	DBClientConnectionCountDescription = "The number of connections that are currently in state described by the `state` attribute"
-
-	// DBClientConnectionIdleMax is the metric conforming to the
-	// "db.client.connection.idle.max" semantic conventions. It represents the
-	// maximum number of idle open connections allowed.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionIdleMaxName        = "db.client.connection.idle.max"
-	DBClientConnectionIdleMaxUnit        = "{connection}"
-	DBClientConnectionIdleMaxDescription = "The maximum number of idle open connections allowed"
-
-	// DBClientConnectionIdleMin is the metric conforming to the
-	// "db.client.connection.idle.min" semantic conventions. It represents the
-	// minimum number of idle open connections allowed.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionIdleMinName        = "db.client.connection.idle.min"
-	DBClientConnectionIdleMinUnit        = "{connection}"
-	DBClientConnectionIdleMinDescription = "The minimum number of idle open connections allowed"
-
-	// DBClientConnectionMax is the metric conforming to the
-	// "db.client.connection.max" semantic conventions. It represents the maximum
-	// number of open connections allowed.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionMaxName        = "db.client.connection.max"
-	DBClientConnectionMaxUnit        = "{connection}"
-	DBClientConnectionMaxDescription = "The maximum number of open connections allowed"
-
-	// DBClientConnectionPendingRequests is the metric conforming to the
-	// "db.client.connection.pending_requests" semantic conventions. It represents
-	// the number of pending requests for an open connection, cumulative for the
-	// entire pool.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Experimental
-	DBClientConnectionPendingRequestsName        = "db.client.connection.pending_requests"
-	DBClientConnectionPendingRequestsUnit        = "{request}"
-	DBClientConnectionPendingRequestsDescription = "The number of pending requests for an open connection, cumulative for the entire pool"
-
-	// DBClientConnectionTimeouts is the metric conforming to the
-	// "db.client.connection.timeouts" semantic conventions. It represents the
-	// number of connection timeouts that have occurred trying to obtain a
-	// connection from the pool.
-	// Instrument: counter
-	// Unit: {timeout}
-	// Stability: Experimental
-	DBClientConnectionTimeoutsName        = "db.client.connection.timeouts"
-	DBClientConnectionTimeoutsUnit        = "{timeout}"
-	DBClientConnectionTimeoutsDescription = "The number of connection timeouts that have occurred trying to obtain a connection from the pool"
-
-	// DBClientConnectionCreateTime is the metric conforming to the
-	// "db.client.connection.create_time" semantic conventions. It represents the
-	// time it took to create a new connection.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	DBClientConnectionCreateTimeName        = "db.client.connection.create_time"
-	DBClientConnectionCreateTimeUnit        = "s"
-	DBClientConnectionCreateTimeDescription = "The time it took to create a new connection"
-
-	// DBClientConnectionWaitTime is the metric conforming to the
-	// "db.client.connection.wait_time" semantic conventions. It represents the
-	// time it took to obtain an open connection from the pool.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	DBClientConnectionWaitTimeName        = "db.client.connection.wait_time"
-	DBClientConnectionWaitTimeUnit        = "s"
-	DBClientConnectionWaitTimeDescription = "The time it took to obtain an open connection from the pool"
-
-	// DBClientConnectionUseTime is the metric conforming to the
-	// "db.client.connection.use_time" semantic conventions. It represents the time
-	// between borrowing a connection and returning it to the pool.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	DBClientConnectionUseTimeName        = "db.client.connection.use_time"
-	DBClientConnectionUseTimeUnit        = "s"
-	DBClientConnectionUseTimeDescription = "The time between borrowing a connection and returning it to the pool"
-
-	// DBClientConnectionsUsage is the metric conforming to the
-	// "db.client.connections.usage" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.count` instead.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionsUsageName        = "db.client.connections.usage"
-	DBClientConnectionsUsageUnit        = "{connection}"
-	DBClientConnectionsUsageDescription = "Deprecated, use `db.client.connection.count` instead."
-
-	// DBClientConnectionsIdleMax is the metric conforming to the
-	// "db.client.connections.idle.max" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.idle.max` instead.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionsIdleMaxName        = "db.client.connections.idle.max"
-	DBClientConnectionsIdleMaxUnit        = "{connection}"
-	DBClientConnectionsIdleMaxDescription = "Deprecated, use `db.client.connection.idle.max` instead."
-
-	// DBClientConnectionsIdleMin is the metric conforming to the
-	// "db.client.connections.idle.min" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.idle.min` instead.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionsIdleMinName        = "db.client.connections.idle.min"
-	DBClientConnectionsIdleMinUnit        = "{connection}"
-	DBClientConnectionsIdleMinDescription = "Deprecated, use `db.client.connection.idle.min` instead."
-
-	// DBClientConnectionsMax is the metric conforming to the
-	// "db.client.connections.max" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.max` instead.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	DBClientConnectionsMaxName        = "db.client.connections.max"
-	DBClientConnectionsMaxUnit        = "{connection}"
-	DBClientConnectionsMaxDescription = "Deprecated, use `db.client.connection.max` instead."
-
-	// DBClientConnectionsPendingRequests is the metric conforming to the
-	// "db.client.connections.pending_requests" semantic conventions. It represents
-	// the deprecated, use `db.client.connection.pending_requests` instead.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Experimental
-	DBClientConnectionsPendingRequestsName        = "db.client.connections.pending_requests"
-	DBClientConnectionsPendingRequestsUnit        = "{request}"
-	DBClientConnectionsPendingRequestsDescription = "Deprecated, use `db.client.connection.pending_requests` instead."
-
-	// DBClientConnectionsTimeouts is the metric conforming to the
-	// "db.client.connections.timeouts" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.timeouts` instead.
-	// Instrument: counter
-	// Unit: {timeout}
-	// Stability: Experimental
-	DBClientConnectionsTimeoutsName        = "db.client.connections.timeouts"
-	DBClientConnectionsTimeoutsUnit        = "{timeout}"
-	DBClientConnectionsTimeoutsDescription = "Deprecated, use `db.client.connection.timeouts` instead."
-
-	// DBClientConnectionsCreateTime is the metric conforming to the
-	// "db.client.connections.create_time" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.create_time` instead. Note: the unit
-	// also changed from `ms` to `s`.
-	// Instrument: histogram
-	// Unit: ms
-	// Stability: Experimental
-	DBClientConnectionsCreateTimeName        = "db.client.connections.create_time"
-	DBClientConnectionsCreateTimeUnit        = "ms"
-	DBClientConnectionsCreateTimeDescription = "Deprecated, use `db.client.connection.create_time` instead. Note: the unit also changed from `ms` to `s`."
-
-	// DBClientConnectionsWaitTime is the metric conforming to the
-	// "db.client.connections.wait_time" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.wait_time` instead. Note: the unit
-	// also changed from `ms` to `s`.
-	// Instrument: histogram
-	// Unit: ms
-	// Stability: Experimental
-	DBClientConnectionsWaitTimeName        = "db.client.connections.wait_time"
-	DBClientConnectionsWaitTimeUnit        = "ms"
-	DBClientConnectionsWaitTimeDescription = "Deprecated, use `db.client.connection.wait_time` instead. Note: the unit also changed from `ms` to `s`."
-
-	// DBClientConnectionsUseTime is the metric conforming to the
-	// "db.client.connections.use_time" semantic conventions. It represents the
-	// deprecated, use `db.client.connection.use_time` instead. Note: the unit also
-	// changed from `ms` to `s`.
-	// Instrument: histogram
-	// Unit: ms
-	// Stability: Experimental
-	DBClientConnectionsUseTimeName        = "db.client.connections.use_time"
-	DBClientConnectionsUseTimeUnit        = "ms"
-	DBClientConnectionsUseTimeDescription = "Deprecated, use `db.client.connection.use_time` instead. Note: the unit also changed from `ms` to `s`."
-
-	// DNSLookupDuration is the metric conforming to the "dns.lookup.duration"
-	// semantic conventions. It represents the measures the time taken to perform a
-	// DNS lookup.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	DNSLookupDurationName        = "dns.lookup.duration"
-	DNSLookupDurationUnit        = "s"
-	DNSLookupDurationDescription = "Measures the time taken to perform a DNS lookup."
-
-	// AspnetcoreRoutingMatchAttempts is the metric conforming to the
-	// "aspnetcore.routing.match_attempts" semantic conventions. It represents the
-	// number of requests that were attempted to be matched to an endpoint.
-	// Instrument: counter
-	// Unit: {match_attempt}
-	// Stability: Stable
-	AspnetcoreRoutingMatchAttemptsName        = "aspnetcore.routing.match_attempts"
-	AspnetcoreRoutingMatchAttemptsUnit        = "{match_attempt}"
-	AspnetcoreRoutingMatchAttemptsDescription = "Number of requests that were attempted to be matched to an endpoint."
-
-	// AspnetcoreDiagnosticsExceptions is the metric conforming to the
-	// "aspnetcore.diagnostics.exceptions" semantic conventions. It represents the
-	// number of exceptions caught by exception handling middleware.
-	// Instrument: counter
-	// Unit: {exception}
-	// Stability: Stable
-	AspnetcoreDiagnosticsExceptionsName        = "aspnetcore.diagnostics.exceptions"
-	AspnetcoreDiagnosticsExceptionsUnit        = "{exception}"
-	AspnetcoreDiagnosticsExceptionsDescription = "Number of exceptions caught by exception handling middleware."
-
-	// AspnetcoreRateLimitingActiveRequestLeases is the metric conforming to the
-	// "aspnetcore.rate_limiting.active_request_leases" semantic conventions. It
-	// represents the number of requests that are currently active on the server
-	// that hold a rate limiting lease.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Stable
-	AspnetcoreRateLimitingActiveRequestLeasesName        = "aspnetcore.rate_limiting.active_request_leases"
-	AspnetcoreRateLimitingActiveRequestLeasesUnit        = "{request}"
-	AspnetcoreRateLimitingActiveRequestLeasesDescription = "Number of requests that are currently active on the server that hold a rate limiting lease."
-
-	// AspnetcoreRateLimitingRequestLeaseDuration is the metric conforming to the
-	// "aspnetcore.rate_limiting.request_lease.duration" semantic conventions. It
-	// represents the duration of rate limiting lease held by requests on the
-	// server.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	AspnetcoreRateLimitingRequestLeaseDurationName        = "aspnetcore.rate_limiting.request_lease.duration"
-	AspnetcoreRateLimitingRequestLeaseDurationUnit        = "s"
-	AspnetcoreRateLimitingRequestLeaseDurationDescription = "The duration of rate limiting lease held by requests on the server."
-
-	// AspnetcoreRateLimitingRequestTimeInQueue is the metric conforming to the
-	// "aspnetcore.rate_limiting.request.time_in_queue" semantic conventions. It
-	// represents the time the request spent in a queue waiting to acquire a rate
-	// limiting lease.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	AspnetcoreRateLimitingRequestTimeInQueueName        = "aspnetcore.rate_limiting.request.time_in_queue"
-	AspnetcoreRateLimitingRequestTimeInQueueUnit        = "s"
-	AspnetcoreRateLimitingRequestTimeInQueueDescription = "The time the request spent in a queue waiting to acquire a rate limiting lease."
-
-	// AspnetcoreRateLimitingQueuedRequests is the metric conforming to the
-	// "aspnetcore.rate_limiting.queued_requests" semantic conventions. It
-	// represents the number of requests that are currently queued, waiting to
-	// acquire a rate limiting lease.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Stable
-	AspnetcoreRateLimitingQueuedRequestsName        = "aspnetcore.rate_limiting.queued_requests"
-	AspnetcoreRateLimitingQueuedRequestsUnit        = "{request}"
-	AspnetcoreRateLimitingQueuedRequestsDescription = "Number of requests that are currently queued, waiting to acquire a rate limiting lease."
-
-	// AspnetcoreRateLimitingRequests is the metric conforming to the
-	// "aspnetcore.rate_limiting.requests" semantic conventions. It represents the
-	// number of requests that tried to acquire a rate limiting lease.
-	// Instrument: counter
-	// Unit: {request}
-	// Stability: Stable
-	AspnetcoreRateLimitingRequestsName        = "aspnetcore.rate_limiting.requests"
-	AspnetcoreRateLimitingRequestsUnit        = "{request}"
-	AspnetcoreRateLimitingRequestsDescription = "Number of requests that tried to acquire a rate limiting lease."
-
-	// KestrelActiveConnections is the metric conforming to the
-	// "kestrel.active_connections" semantic conventions. It represents the number
-	// of connections that are currently active on the server.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Stable
-	KestrelActiveConnectionsName        = "kestrel.active_connections"
-	KestrelActiveConnectionsUnit        = "{connection}"
-	KestrelActiveConnectionsDescription = "Number of connections that are currently active on the server."
-
-	// KestrelConnectionDuration is the metric conforming to the
-	// "kestrel.connection.duration" semantic conventions. It represents the
-	// duration of connections on the server.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	KestrelConnectionDurationName        = "kestrel.connection.duration"
-	KestrelConnectionDurationUnit        = "s"
-	KestrelConnectionDurationDescription = "The duration of connections on the server."
-
-	// KestrelRejectedConnections is the metric conforming to the
-	// "kestrel.rejected_connections" semantic conventions. It represents the
-	// number of connections rejected by the server.
-	// Instrument: counter
-	// Unit: {connection}
-	// Stability: Stable
-	KestrelRejectedConnectionsName        = "kestrel.rejected_connections"
-	KestrelRejectedConnectionsUnit        = "{connection}"
-	KestrelRejectedConnectionsDescription = "Number of connections rejected by the server."
-
-	// KestrelQueuedConnections is the metric conforming to the
-	// "kestrel.queued_connections" semantic conventions. It represents the number
-	// of connections that are currently queued and are waiting to start.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Stable
-	KestrelQueuedConnectionsName        = "kestrel.queued_connections"
-	KestrelQueuedConnectionsUnit        = "{connection}"
-	KestrelQueuedConnectionsDescription = "Number of connections that are currently queued and are waiting to start."
-
-	// KestrelQueuedRequests is the metric conforming to the
-	// "kestrel.queued_requests" semantic conventions. It represents the number of
-	// HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are
-	// currently queued and are waiting to start.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Stable
-	KestrelQueuedRequestsName        = "kestrel.queued_requests"
-	KestrelQueuedRequestsUnit        = "{request}"
-	KestrelQueuedRequestsDescription = "Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start."
-
-	// KestrelUpgradedConnections is the metric conforming to the
-	// "kestrel.upgraded_connections" semantic conventions. It represents the
-	// number of connections that are currently upgraded (WebSockets). .
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Stable
-	KestrelUpgradedConnectionsName        = "kestrel.upgraded_connections"
-	KestrelUpgradedConnectionsUnit        = "{connection}"
-	KestrelUpgradedConnectionsDescription = "Number of connections that are currently upgraded (WebSockets). ."
-
-	// KestrelTLSHandshakeDuration is the metric conforming to the
-	// "kestrel.tls_handshake.duration" semantic conventions. It represents the
-	// duration of TLS handshakes on the server.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	KestrelTLSHandshakeDurationName        = "kestrel.tls_handshake.duration"
-	KestrelTLSHandshakeDurationUnit        = "s"
-	KestrelTLSHandshakeDurationDescription = "The duration of TLS handshakes on the server."
-
-	// KestrelActiveTLSHandshakes is the metric conforming to the
-	// "kestrel.active_tls_handshakes" semantic conventions. It represents the
-	// number of TLS handshakes that are currently in progress on the server.
-	// Instrument: updowncounter
-	// Unit: {handshake}
-	// Stability: Stable
-	KestrelActiveTLSHandshakesName        = "kestrel.active_tls_handshakes"
-	KestrelActiveTLSHandshakesUnit        = "{handshake}"
-	KestrelActiveTLSHandshakesDescription = "Number of TLS handshakes that are currently in progress on the server."
-
-	// SignalrServerConnectionDuration is the metric conforming to the
-	// "signalr.server.connection.duration" semantic conventions. It represents the
-	// duration of connections on the server.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	SignalrServerConnectionDurationName        = "signalr.server.connection.duration"
-	SignalrServerConnectionDurationUnit        = "s"
-	SignalrServerConnectionDurationDescription = "The duration of connections on the server."
-
-	// SignalrServerActiveConnections is the metric conforming to the
-	// "signalr.server.active_connections" semantic conventions. It represents the
-	// number of connections that are currently active on the server.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Stable
-	SignalrServerActiveConnectionsName        = "signalr.server.active_connections"
-	SignalrServerActiveConnectionsUnit        = "{connection}"
-	SignalrServerActiveConnectionsDescription = "Number of connections that are currently active on the server."
-
-	// FaaSInvokeDuration is the metric conforming to the "faas.invoke_duration"
-	// semantic conventions. It represents the measures the duration of the
-	// function's logic execution.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	FaaSInvokeDurationName        = "faas.invoke_duration"
-	FaaSInvokeDurationUnit        = "s"
-	FaaSInvokeDurationDescription = "Measures the duration of the function's logic execution"
-
-	// FaaSInitDuration is the metric conforming to the "faas.init_duration"
-	// semantic conventions. It represents the measures the duration of the
-	// function's initialization, such as a cold start.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	FaaSInitDurationName        = "faas.init_duration"
-	FaaSInitDurationUnit        = "s"
-	FaaSInitDurationDescription = "Measures the duration of the function's initialization, such as a cold start"
-
-	// FaaSColdstarts is the metric conforming to the "faas.coldstarts" semantic
-	// conventions. It represents the number of invocation cold starts.
-	// Instrument: counter
-	// Unit: {coldstart}
-	// Stability: Experimental
-	FaaSColdstartsName        = "faas.coldstarts"
-	FaaSColdstartsUnit        = "{coldstart}"
-	FaaSColdstartsDescription = "Number of invocation cold starts"
-
-	// FaaSErrors is the metric conforming to the "faas.errors" semantic
-	// conventions. It represents the number of invocation errors.
-	// Instrument: counter
-	// Unit: {error}
-	// Stability: Experimental
-	FaaSErrorsName        = "faas.errors"
-	FaaSErrorsUnit        = "{error}"
-	FaaSErrorsDescription = "Number of invocation errors"
-
-	// FaaSInvocations is the metric conforming to the "faas.invocations" semantic
-	// conventions. It represents the number of successful invocations.
-	// Instrument: counter
-	// Unit: {invocation}
-	// Stability: Experimental
-	FaaSInvocationsName        = "faas.invocations"
-	FaaSInvocationsUnit        = "{invocation}"
-	FaaSInvocationsDescription = "Number of successful invocations"
-
-	// FaaSTimeouts is the metric conforming to the "faas.timeouts" semantic
-	// conventions. It represents the number of invocation timeouts.
-	// Instrument: counter
-	// Unit: {timeout}
-	// Stability: Experimental
-	FaaSTimeoutsName        = "faas.timeouts"
-	FaaSTimeoutsUnit        = "{timeout}"
-	FaaSTimeoutsDescription = "Number of invocation timeouts"
-
-	// FaaSMemUsage is the metric conforming to the "faas.mem_usage" semantic
-	// conventions. It represents the distribution of max memory usage per
-	// invocation.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	FaaSMemUsageName        = "faas.mem_usage"
-	FaaSMemUsageUnit        = "By"
-	FaaSMemUsageDescription = "Distribution of max memory usage per invocation"
-
-	// FaaSCPUUsage is the metric conforming to the "faas.cpu_usage" semantic
-	// conventions. It represents the distribution of CPU usage per invocation.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	FaaSCPUUsageName        = "faas.cpu_usage"
-	FaaSCPUUsageUnit        = "s"
-	FaaSCPUUsageDescription = "Distribution of CPU usage per invocation"
-
-	// FaaSNetIo is the metric conforming to the "faas.net_io" semantic
-	// conventions. It represents the distribution of net I/O usage per invocation.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	FaaSNetIoName        = "faas.net_io"
-	FaaSNetIoUnit        = "By"
-	FaaSNetIoDescription = "Distribution of net I/O usage per invocation"
-
-	// HTTPServerRequestDuration is the metric conforming to the
-	// "http.server.request.duration" semantic conventions. It represents the
-	// duration of HTTP server requests.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	HTTPServerRequestDurationName        = "http.server.request.duration"
-	HTTPServerRequestDurationUnit        = "s"
-	HTTPServerRequestDurationDescription = "Duration of HTTP server requests."
-
-	// HTTPServerActiveRequests is the metric conforming to the
-	// "http.server.active_requests" semantic conventions. It represents the number
-	// of active HTTP server requests.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Experimental
-	HTTPServerActiveRequestsName        = "http.server.active_requests"
-	HTTPServerActiveRequestsUnit        = "{request}"
-	HTTPServerActiveRequestsDescription = "Number of active HTTP server requests."
-
-	// HTTPServerRequestBodySize is the metric conforming to the
-	// "http.server.request.body.size" semantic conventions. It represents the size
-	// of HTTP server request bodies.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	HTTPServerRequestBodySizeName        = "http.server.request.body.size"
-	HTTPServerRequestBodySizeUnit        = "By"
-	HTTPServerRequestBodySizeDescription = "Size of HTTP server request bodies."
-
-	// HTTPServerResponseBodySize is the metric conforming to the
-	// "http.server.response.body.size" semantic conventions. It represents the
-	// size of HTTP server response bodies.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	HTTPServerResponseBodySizeName        = "http.server.response.body.size"
-	HTTPServerResponseBodySizeUnit        = "By"
-	HTTPServerResponseBodySizeDescription = "Size of HTTP server response bodies."
-
-	// HTTPClientRequestDuration is the metric conforming to the
-	// "http.client.request.duration" semantic conventions. It represents the
-	// duration of HTTP client requests.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	HTTPClientRequestDurationName        = "http.client.request.duration"
-	HTTPClientRequestDurationUnit        = "s"
-	HTTPClientRequestDurationDescription = "Duration of HTTP client requests."
-
-	// HTTPClientRequestBodySize is the metric conforming to the
-	// "http.client.request.body.size" semantic conventions. It represents the size
-	// of HTTP client request bodies.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	HTTPClientRequestBodySizeName        = "http.client.request.body.size"
-	HTTPClientRequestBodySizeUnit        = "By"
-	HTTPClientRequestBodySizeDescription = "Size of HTTP client request bodies."
-
-	// HTTPClientResponseBodySize is the metric conforming to the
-	// "http.client.response.body.size" semantic conventions. It represents the
-	// size of HTTP client response bodies.
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	HTTPClientResponseBodySizeName        = "http.client.response.body.size"
-	HTTPClientResponseBodySizeUnit        = "By"
-	HTTPClientResponseBodySizeDescription = "Size of HTTP client response bodies."
-
-	// HTTPClientOpenConnections is the metric conforming to the
-	// "http.client.open_connections" semantic conventions. It represents the
-	// number of outbound HTTP connections that are currently active or idle on the
-	// client.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	HTTPClientOpenConnectionsName        = "http.client.open_connections"
-	HTTPClientOpenConnectionsUnit        = "{connection}"
-	HTTPClientOpenConnectionsDescription = "Number of outbound HTTP connections that are currently active or idle on the client."
-
-	// HTTPClientConnectionDuration is the metric conforming to the
-	// "http.client.connection.duration" semantic conventions. It represents the
-	// duration of the successfully established outbound HTTP connections.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	HTTPClientConnectionDurationName        = "http.client.connection.duration"
-	HTTPClientConnectionDurationUnit        = "s"
-	HTTPClientConnectionDurationDescription = "The duration of the successfully established outbound HTTP connections."
-
-	// HTTPClientActiveRequests is the metric conforming to the
-	// "http.client.active_requests" semantic conventions. It represents the number
-	// of active HTTP requests.
-	// Instrument: updowncounter
-	// Unit: {request}
-	// Stability: Experimental
-	HTTPClientActiveRequestsName        = "http.client.active_requests"
-	HTTPClientActiveRequestsUnit        = "{request}"
-	HTTPClientActiveRequestsDescription = "Number of active HTTP requests."
-
-	// JvmMemoryInit is the metric conforming to the "jvm.memory.init" semantic
-	// conventions. It represents the measure of initial memory requested.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	JvmMemoryInitName        = "jvm.memory.init"
-	JvmMemoryInitUnit        = "By"
-	JvmMemoryInitDescription = "Measure of initial memory requested."
-
-	// JvmSystemCPUUtilization is the metric conforming to the
-	// "jvm.system.cpu.utilization" semantic conventions. It represents the recent
-	// CPU utilization for the whole system as reported by the JVM.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	JvmSystemCPUUtilizationName        = "jvm.system.cpu.utilization"
-	JvmSystemCPUUtilizationUnit        = "1"
-	JvmSystemCPUUtilizationDescription = "Recent CPU utilization for the whole system as reported by the JVM."
-
-	// JvmSystemCPULoad1m is the metric conforming to the "jvm.system.cpu.load_1m"
-	// semantic conventions. It represents the average CPU load of the whole system
-	// for the last minute as reported by the JVM.
-	// Instrument: gauge
-	// Unit: {run_queue_item}
-	// Stability: Experimental
-	JvmSystemCPULoad1mName        = "jvm.system.cpu.load_1m"
-	JvmSystemCPULoad1mUnit        = "{run_queue_item}"
-	JvmSystemCPULoad1mDescription = "Average CPU load of the whole system for the last minute as reported by the JVM."
-
-	// JvmBufferMemoryUsage is the metric conforming to the
-	// "jvm.buffer.memory.usage" semantic conventions. It represents the measure of
-	// memory used by buffers.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	JvmBufferMemoryUsageName        = "jvm.buffer.memory.usage"
-	JvmBufferMemoryUsageUnit        = "By"
-	JvmBufferMemoryUsageDescription = "Measure of memory used by buffers."
-
-	// JvmBufferMemoryLimit is the metric conforming to the
-	// "jvm.buffer.memory.limit" semantic conventions. It represents the measure of
-	// total memory capacity of buffers.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	JvmBufferMemoryLimitName        = "jvm.buffer.memory.limit"
-	JvmBufferMemoryLimitUnit        = "By"
-	JvmBufferMemoryLimitDescription = "Measure of total memory capacity of buffers."
-
-	// JvmBufferCount is the metric conforming to the "jvm.buffer.count" semantic
-	// conventions. It represents the number of buffers in the pool.
-	// Instrument: updowncounter
-	// Unit: {buffer}
-	// Stability: Experimental
-	JvmBufferCountName        = "jvm.buffer.count"
-	JvmBufferCountUnit        = "{buffer}"
-	JvmBufferCountDescription = "Number of buffers in the pool."
-
-	// JvmMemoryUsed is the metric conforming to the "jvm.memory.used" semantic
-	// conventions. It represents the measure of memory used.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Stable
-	JvmMemoryUsedName        = "jvm.memory.used"
-	JvmMemoryUsedUnit        = "By"
-	JvmMemoryUsedDescription = "Measure of memory used."
-
-	// JvmMemoryCommitted is the metric conforming to the "jvm.memory.committed"
-	// semantic conventions. It represents the measure of memory committed.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Stable
-	JvmMemoryCommittedName        = "jvm.memory.committed"
-	JvmMemoryCommittedUnit        = "By"
-	JvmMemoryCommittedDescription = "Measure of memory committed."
-
-	// JvmMemoryLimit is the metric conforming to the "jvm.memory.limit" semantic
-	// conventions. It represents the measure of max obtainable memory.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Stable
-	JvmMemoryLimitName        = "jvm.memory.limit"
-	JvmMemoryLimitUnit        = "By"
-	JvmMemoryLimitDescription = "Measure of max obtainable memory."
-
-	// JvmMemoryUsedAfterLastGc is the metric conforming to the
-	// "jvm.memory.used_after_last_gc" semantic conventions. It represents the
-	// measure of memory used, as measured after the most recent garbage collection
-	// event on this pool.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Stable
-	JvmMemoryUsedAfterLastGcName        = "jvm.memory.used_after_last_gc"
-	JvmMemoryUsedAfterLastGcUnit        = "By"
-	JvmMemoryUsedAfterLastGcDescription = "Measure of memory used, as measured after the most recent garbage collection event on this pool."
-
-	// JvmGcDuration is the metric conforming to the "jvm.gc.duration" semantic
-	// conventions. It represents the duration of JVM garbage collection actions.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Stable
-	JvmGcDurationName        = "jvm.gc.duration"
-	JvmGcDurationUnit        = "s"
-	JvmGcDurationDescription = "Duration of JVM garbage collection actions."
-
-	// JvmThreadCount is the metric conforming to the "jvm.thread.count" semantic
-	// conventions. It represents the number of executing platform threads.
-	// Instrument: updowncounter
-	// Unit: {thread}
-	// Stability: Stable
-	JvmThreadCountName        = "jvm.thread.count"
-	JvmThreadCountUnit        = "{thread}"
-	JvmThreadCountDescription = "Number of executing platform threads."
-
-	// JvmClassLoaded is the metric conforming to the "jvm.class.loaded" semantic
-	// conventions. It represents the number of classes loaded since JVM start.
-	// Instrument: counter
-	// Unit: {class}
-	// Stability: Stable
-	JvmClassLoadedName        = "jvm.class.loaded"
-	JvmClassLoadedUnit        = "{class}"
-	JvmClassLoadedDescription = "Number of classes loaded since JVM start."
-
-	// JvmClassUnloaded is the metric conforming to the "jvm.class.unloaded"
-	// semantic conventions. It represents the number of classes unloaded since JVM
-	// start.
-	// Instrument: counter
-	// Unit: {class}
-	// Stability: Stable
-	JvmClassUnloadedName        = "jvm.class.unloaded"
-	JvmClassUnloadedUnit        = "{class}"
-	JvmClassUnloadedDescription = "Number of classes unloaded since JVM start."
-
-	// JvmClassCount is the metric conforming to the "jvm.class.count" semantic
-	// conventions. It represents the number of classes currently loaded.
-	// Instrument: updowncounter
-	// Unit: {class}
-	// Stability: Stable
-	JvmClassCountName        = "jvm.class.count"
-	JvmClassCountUnit        = "{class}"
-	JvmClassCountDescription = "Number of classes currently loaded."
-
-	// JvmCPUCount is the metric conforming to the "jvm.cpu.count" semantic
-	// conventions. It represents the number of processors available to the Java
-	// virtual machine.
-	// Instrument: updowncounter
-	// Unit: {cpu}
-	// Stability: Stable
-	JvmCPUCountName        = "jvm.cpu.count"
-	JvmCPUCountUnit        = "{cpu}"
-	JvmCPUCountDescription = "Number of processors available to the Java virtual machine."
-
-	// JvmCPUTime is the metric conforming to the "jvm.cpu.time" semantic
-	// conventions. It represents the cPU time used by the process as reported by
-	// the JVM.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Stable
-	JvmCPUTimeName        = "jvm.cpu.time"
-	JvmCPUTimeUnit        = "s"
-	JvmCPUTimeDescription = "CPU time used by the process as reported by the JVM."
-
-	// JvmCPURecentUtilization is the metric conforming to the
-	// "jvm.cpu.recent_utilization" semantic conventions. It represents the recent
-	// CPU utilization for the process as reported by the JVM.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Stable
-	JvmCPURecentUtilizationName        = "jvm.cpu.recent_utilization"
-	JvmCPURecentUtilizationUnit        = "1"
-	JvmCPURecentUtilizationDescription = "Recent CPU utilization for the process as reported by the JVM."
-
-	// MessagingPublishDuration is the metric conforming to the
-	// "messaging.publish.duration" semantic conventions. It represents the
-	// measures the duration of publish operation.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	MessagingPublishDurationName        = "messaging.publish.duration"
-	MessagingPublishDurationUnit        = "s"
-	MessagingPublishDurationDescription = "Measures the duration of publish operation."
-
-	// MessagingReceiveDuration is the metric conforming to the
-	// "messaging.receive.duration" semantic conventions. It represents the
-	// measures the duration of receive operation.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	MessagingReceiveDurationName        = "messaging.receive.duration"
-	MessagingReceiveDurationUnit        = "s"
-	MessagingReceiveDurationDescription = "Measures the duration of receive operation."
-
-	// MessagingProcessDuration is the metric conforming to the
-	// "messaging.process.duration" semantic conventions. It represents the
-	// measures the duration of process operation.
-	// Instrument: histogram
-	// Unit: s
-	// Stability: Experimental
-	MessagingProcessDurationName        = "messaging.process.duration"
-	MessagingProcessDurationUnit        = "s"
-	MessagingProcessDurationDescription = "Measures the duration of process operation."
-
-	// MessagingPublishMessages is the metric conforming to the
-	// "messaging.publish.messages" semantic conventions. It represents the
-	// measures the number of published messages.
-	// Instrument: counter
-	// Unit: {message}
-	// Stability: Experimental
-	MessagingPublishMessagesName        = "messaging.publish.messages"
-	MessagingPublishMessagesUnit        = "{message}"
-	MessagingPublishMessagesDescription = "Measures the number of published messages."
-
-	// MessagingReceiveMessages is the metric conforming to the
-	// "messaging.receive.messages" semantic conventions. It represents the
-	// measures the number of received messages.
-	// Instrument: counter
-	// Unit: {message}
-	// Stability: Experimental
-	MessagingReceiveMessagesName        = "messaging.receive.messages"
-	MessagingReceiveMessagesUnit        = "{message}"
-	MessagingReceiveMessagesDescription = "Measures the number of received messages."
-
-	// MessagingProcessMessages is the metric conforming to the
-	// "messaging.process.messages" semantic conventions. It represents the
-	// measures the number of processed messages.
-	// Instrument: counter
-	// Unit: {message}
-	// Stability: Experimental
-	MessagingProcessMessagesName        = "messaging.process.messages"
-	MessagingProcessMessagesUnit        = "{message}"
-	MessagingProcessMessagesDescription = "Measures the number of processed messages."
-
-	// ProcessCPUTime is the metric conforming to the "process.cpu.time" semantic
-	// conventions. It represents the total CPU seconds broken down by different
-	// states.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Experimental
-	ProcessCPUTimeName        = "process.cpu.time"
-	ProcessCPUTimeUnit        = "s"
-	ProcessCPUTimeDescription = "Total CPU seconds broken down by different states."
-
-	// ProcessCPUUtilization is the metric conforming to the
-	// "process.cpu.utilization" semantic conventions. It represents the difference
-	// in process.cpu.time since the last measurement, divided by the elapsed time
-	// and number of CPUs available to the process.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	ProcessCPUUtilizationName        = "process.cpu.utilization"
-	ProcessCPUUtilizationUnit        = "1"
-	ProcessCPUUtilizationDescription = "Difference in process.cpu.time since the last measurement, divided by the elapsed time and number of CPUs available to the process."
-
-	// ProcessMemoryUsage is the metric conforming to the "process.memory.usage"
-	// semantic conventions. It represents the amount of physical memory in use.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	ProcessMemoryUsageName        = "process.memory.usage"
-	ProcessMemoryUsageUnit        = "By"
-	ProcessMemoryUsageDescription = "The amount of physical memory in use."
-
-	// ProcessMemoryVirtual is the metric conforming to the
-	// "process.memory.virtual" semantic conventions. It represents the amount of
-	// committed virtual memory.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	ProcessMemoryVirtualName        = "process.memory.virtual"
-	ProcessMemoryVirtualUnit        = "By"
-	ProcessMemoryVirtualDescription = "The amount of committed virtual memory."
-
-	// ProcessDiskIo is the metric conforming to the "process.disk.io" semantic
-	// conventions. It represents the disk bytes transferred.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	ProcessDiskIoName        = "process.disk.io"
-	ProcessDiskIoUnit        = "By"
-	ProcessDiskIoDescription = "Disk bytes transferred."
-
-	// ProcessNetworkIo is the metric conforming to the "process.network.io"
-	// semantic conventions. It represents the network bytes transferred.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	ProcessNetworkIoName        = "process.network.io"
-	ProcessNetworkIoUnit        = "By"
-	ProcessNetworkIoDescription = "Network bytes transferred."
-
-	// ProcessThreadCount is the metric conforming to the "process.thread.count"
-	// semantic conventions. It represents the process threads count.
-	// Instrument: updowncounter
-	// Unit: {thread}
-	// Stability: Experimental
-	ProcessThreadCountName        = "process.thread.count"
-	ProcessThreadCountUnit        = "{thread}"
-	ProcessThreadCountDescription = "Process threads count."
-
-	// ProcessOpenFileDescriptorCount is the metric conforming to the
-	// "process.open_file_descriptor.count" semantic conventions. It represents the
-	// number of file descriptors in use by the process.
-	// Instrument: updowncounter
-	// Unit: {count}
-	// Stability: Experimental
-	ProcessOpenFileDescriptorCountName        = "process.open_file_descriptor.count"
-	ProcessOpenFileDescriptorCountUnit        = "{count}"
-	ProcessOpenFileDescriptorCountDescription = "Number of file descriptors in use by the process."
-
-	// ProcessContextSwitches is the metric conforming to the
-	// "process.context_switches" semantic conventions. It represents the number of
-	// times the process has been context switched.
-	// Instrument: counter
-	// Unit: {count}
-	// Stability: Experimental
-	ProcessContextSwitchesName        = "process.context_switches"
-	ProcessContextSwitchesUnit        = "{count}"
-	ProcessContextSwitchesDescription = "Number of times the process has been context switched."
-
-	// ProcessPagingFaults is the metric conforming to the "process.paging.faults"
-	// semantic conventions. It represents the number of page faults the process
-	// has made.
-	// Instrument: counter
-	// Unit: {fault}
-	// Stability: Experimental
-	ProcessPagingFaultsName        = "process.paging.faults"
-	ProcessPagingFaultsUnit        = "{fault}"
-	ProcessPagingFaultsDescription = "Number of page faults the process has made."
-
-	// RPCServerDuration is the metric conforming to the "rpc.server.duration"
-	// semantic conventions. It represents the measures the duration of inbound
-	// RPC.
-	// Instrument: histogram
-	// Unit: ms
-	// Stability: Experimental
-	RPCServerDurationName        = "rpc.server.duration"
-	RPCServerDurationUnit        = "ms"
-	RPCServerDurationDescription = "Measures the duration of inbound RPC."
-
-	// RPCServerRequestSize is the metric conforming to the
-	// "rpc.server.request.size" semantic conventions. It represents the measures
-	// the size of RPC request messages (uncompressed).
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	RPCServerRequestSizeName        = "rpc.server.request.size"
-	RPCServerRequestSizeUnit        = "By"
-	RPCServerRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)."
-
-	// RPCServerResponseSize is the metric conforming to the
-	// "rpc.server.response.size" semantic conventions. It represents the measures
-	// the size of RPC response messages (uncompressed).
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	RPCServerResponseSizeName        = "rpc.server.response.size"
-	RPCServerResponseSizeUnit        = "By"
-	RPCServerResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)."
-
-	// RPCServerRequestsPerRPC is the metric conforming to the
-	// "rpc.server.requests_per_rpc" semantic conventions. It represents the
-	// measures the number of messages received per RPC.
-	// Instrument: histogram
-	// Unit: {count}
-	// Stability: Experimental
-	RPCServerRequestsPerRPCName        = "rpc.server.requests_per_rpc"
-	RPCServerRequestsPerRPCUnit        = "{count}"
-	RPCServerRequestsPerRPCDescription = "Measures the number of messages received per RPC."
-
-	// RPCServerResponsesPerRPC is the metric conforming to the
-	// "rpc.server.responses_per_rpc" semantic conventions. It represents the
-	// measures the number of messages sent per RPC.
-	// Instrument: histogram
-	// Unit: {count}
-	// Stability: Experimental
-	RPCServerResponsesPerRPCName        = "rpc.server.responses_per_rpc"
-	RPCServerResponsesPerRPCUnit        = "{count}"
-	RPCServerResponsesPerRPCDescription = "Measures the number of messages sent per RPC."
-
-	// RPCClientDuration is the metric conforming to the "rpc.client.duration"
-	// semantic conventions. It represents the measures the duration of outbound
-	// RPC.
-	// Instrument: histogram
-	// Unit: ms
-	// Stability: Experimental
-	RPCClientDurationName        = "rpc.client.duration"
-	RPCClientDurationUnit        = "ms"
-	RPCClientDurationDescription = "Measures the duration of outbound RPC."
-
-	// RPCClientRequestSize is the metric conforming to the
-	// "rpc.client.request.size" semantic conventions. It represents the measures
-	// the size of RPC request messages (uncompressed).
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	RPCClientRequestSizeName        = "rpc.client.request.size"
-	RPCClientRequestSizeUnit        = "By"
-	RPCClientRequestSizeDescription = "Measures the size of RPC request messages (uncompressed)."
-
-	// RPCClientResponseSize is the metric conforming to the
-	// "rpc.client.response.size" semantic conventions. It represents the measures
-	// the size of RPC response messages (uncompressed).
-	// Instrument: histogram
-	// Unit: By
-	// Stability: Experimental
-	RPCClientResponseSizeName        = "rpc.client.response.size"
-	RPCClientResponseSizeUnit        = "By"
-	RPCClientResponseSizeDescription = "Measures the size of RPC response messages (uncompressed)."
-
-	// RPCClientRequestsPerRPC is the metric conforming to the
-	// "rpc.client.requests_per_rpc" semantic conventions. It represents the
-	// measures the number of messages received per RPC.
-	// Instrument: histogram
-	// Unit: {count}
-	// Stability: Experimental
-	RPCClientRequestsPerRPCName        = "rpc.client.requests_per_rpc"
-	RPCClientRequestsPerRPCUnit        = "{count}"
-	RPCClientRequestsPerRPCDescription = "Measures the number of messages received per RPC."
-
-	// RPCClientResponsesPerRPC is the metric conforming to the
-	// "rpc.client.responses_per_rpc" semantic conventions. It represents the
-	// measures the number of messages sent per RPC.
-	// Instrument: histogram
-	// Unit: {count}
-	// Stability: Experimental
-	RPCClientResponsesPerRPCName        = "rpc.client.responses_per_rpc"
-	RPCClientResponsesPerRPCUnit        = "{count}"
-	RPCClientResponsesPerRPCDescription = "Measures the number of messages sent per RPC."
-
-	// SystemCPUTime is the metric conforming to the "system.cpu.time" semantic
-	// conventions. It represents the seconds each logical CPU spent on each mode.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Experimental
-	SystemCPUTimeName        = "system.cpu.time"
-	SystemCPUTimeUnit        = "s"
-	SystemCPUTimeDescription = "Seconds each logical CPU spent on each mode"
-
-	// SystemCPUUtilization is the metric conforming to the
-	// "system.cpu.utilization" semantic conventions. It represents the difference
-	// in system.cpu.time since the last measurement, divided by the elapsed time
-	// and number of logical CPUs.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	SystemCPUUtilizationName        = "system.cpu.utilization"
-	SystemCPUUtilizationUnit        = "1"
-	SystemCPUUtilizationDescription = "Difference in system.cpu.time since the last measurement, divided by the elapsed time and number of logical CPUs"
-
-	// SystemCPUFrequency is the metric conforming to the "system.cpu.frequency"
-	// semantic conventions. It represents the reports the current frequency of the
-	// CPU in Hz.
-	// Instrument: gauge
-	// Unit: {Hz}
-	// Stability: Experimental
-	SystemCPUFrequencyName        = "system.cpu.frequency"
-	SystemCPUFrequencyUnit        = "{Hz}"
-	SystemCPUFrequencyDescription = "Reports the current frequency of the CPU in Hz"
-
-	// SystemCPUPhysicalCount is the metric conforming to the
-	// "system.cpu.physical.count" semantic conventions. It represents the reports
-	// the number of actual physical processor cores on the hardware.
-	// Instrument: updowncounter
-	// Unit: {cpu}
-	// Stability: Experimental
-	SystemCPUPhysicalCountName        = "system.cpu.physical.count"
-	SystemCPUPhysicalCountUnit        = "{cpu}"
-	SystemCPUPhysicalCountDescription = "Reports the number of actual physical processor cores on the hardware"
-
-	// SystemCPULogicalCount is the metric conforming to the
-	// "system.cpu.logical.count" semantic conventions. It represents the reports
-	// the number of logical (virtual) processor cores created by the operating
-	// system to manage multitasking.
-	// Instrument: updowncounter
-	// Unit: {cpu}
-	// Stability: Experimental
-	SystemCPULogicalCountName        = "system.cpu.logical.count"
-	SystemCPULogicalCountUnit        = "{cpu}"
-	SystemCPULogicalCountDescription = "Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking"
-
-	// SystemMemoryUsage is the metric conforming to the "system.memory.usage"
-	// semantic conventions. It represents the reports memory in use by state.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	SystemMemoryUsageName        = "system.memory.usage"
-	SystemMemoryUsageUnit        = "By"
-	SystemMemoryUsageDescription = "Reports memory in use by state."
-
-	// SystemMemoryLimit is the metric conforming to the "system.memory.limit"
-	// semantic conventions. It represents the total memory available in the
-	// system.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	SystemMemoryLimitName        = "system.memory.limit"
-	SystemMemoryLimitUnit        = "By"
-	SystemMemoryLimitDescription = "Total memory available in the system."
-
-	// SystemMemoryShared is the metric conforming to the "system.memory.shared"
-	// semantic conventions. It represents the shared memory used (mostly by
-	// tmpfs).
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	SystemMemorySharedName        = "system.memory.shared"
-	SystemMemorySharedUnit        = "By"
-	SystemMemorySharedDescription = "Shared memory used (mostly by tmpfs)."
-
-	// SystemMemoryUtilization is the metric conforming to the
-	// "system.memory.utilization" semantic conventions.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemMemoryUtilizationName = "system.memory.utilization"
-	SystemMemoryUtilizationUnit = "1"
-
-	// SystemPagingUsage is the metric conforming to the "system.paging.usage"
-	// semantic conventions. It represents the unix swap or windows pagefile usage.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	SystemPagingUsageName        = "system.paging.usage"
-	SystemPagingUsageUnit        = "By"
-	SystemPagingUsageDescription = "Unix swap or windows pagefile usage"
-
-	// SystemPagingUtilization is the metric conforming to the
-	// "system.paging.utilization" semantic conventions.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemPagingUtilizationName = "system.paging.utilization"
-	SystemPagingUtilizationUnit = "1"
-
-	// SystemPagingFaults is the metric conforming to the "system.paging.faults"
-	// semantic conventions.
-	// Instrument: counter
-	// Unit: {fault}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemPagingFaultsName = "system.paging.faults"
-	SystemPagingFaultsUnit = "{fault}"
-
-	// SystemPagingOperations is the metric conforming to the
-	// "system.paging.operations" semantic conventions.
-	// Instrument: counter
-	// Unit: {operation}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemPagingOperationsName = "system.paging.operations"
-	SystemPagingOperationsUnit = "{operation}"
-
-	// SystemDiskIo is the metric conforming to the "system.disk.io" semantic
-	// conventions.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemDiskIoName = "system.disk.io"
-	SystemDiskIoUnit = "By"
-
-	// SystemDiskOperations is the metric conforming to the
-	// "system.disk.operations" semantic conventions.
-	// Instrument: counter
-	// Unit: {operation}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemDiskOperationsName = "system.disk.operations"
-	SystemDiskOperationsUnit = "{operation}"
-
-	// SystemDiskIoTime is the metric conforming to the "system.disk.io_time"
-	// semantic conventions. It represents the time disk spent activated.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Experimental
-	SystemDiskIoTimeName        = "system.disk.io_time"
-	SystemDiskIoTimeUnit        = "s"
-	SystemDiskIoTimeDescription = "Time disk spent activated"
-
-	// SystemDiskOperationTime is the metric conforming to the
-	// "system.disk.operation_time" semantic conventions. It represents the sum of
-	// the time each operation took to complete.
-	// Instrument: counter
-	// Unit: s
-	// Stability: Experimental
-	SystemDiskOperationTimeName        = "system.disk.operation_time"
-	SystemDiskOperationTimeUnit        = "s"
-	SystemDiskOperationTimeDescription = "Sum of the time each operation took to complete"
-
-	// SystemDiskMerged is the metric conforming to the "system.disk.merged"
-	// semantic conventions.
-	// Instrument: counter
-	// Unit: {operation}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemDiskMergedName = "system.disk.merged"
-	SystemDiskMergedUnit = "{operation}"
-
-	// SystemFilesystemUsage is the metric conforming to the
-	// "system.filesystem.usage" semantic conventions.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemFilesystemUsageName = "system.filesystem.usage"
-	SystemFilesystemUsageUnit = "By"
-
-	// SystemFilesystemUtilization is the metric conforming to the
-	// "system.filesystem.utilization" semantic conventions.
-	// Instrument: gauge
-	// Unit: 1
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemFilesystemUtilizationName = "system.filesystem.utilization"
-	SystemFilesystemUtilizationUnit = "1"
-
-	// SystemNetworkDropped is the metric conforming to the
-	// "system.network.dropped" semantic conventions. It represents the count of
-	// packets that are dropped or discarded even though there was no error.
-	// Instrument: counter
-	// Unit: {packet}
-	// Stability: Experimental
-	SystemNetworkDroppedName        = "system.network.dropped"
-	SystemNetworkDroppedUnit        = "{packet}"
-	SystemNetworkDroppedDescription = "Count of packets that are dropped or discarded even though there was no error"
-
-	// SystemNetworkPackets is the metric conforming to the
-	// "system.network.packets" semantic conventions.
-	// Instrument: counter
-	// Unit: {packet}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemNetworkPacketsName = "system.network.packets"
-	SystemNetworkPacketsUnit = "{packet}"
-
-	// SystemNetworkErrors is the metric conforming to the "system.network.errors"
-	// semantic conventions. It represents the count of network errors detected.
-	// Instrument: counter
-	// Unit: {error}
-	// Stability: Experimental
-	SystemNetworkErrorsName        = "system.network.errors"
-	SystemNetworkErrorsUnit        = "{error}"
-	SystemNetworkErrorsDescription = "Count of network errors detected"
-
-	// SystemNetworkIo is the metric conforming to the "system.network.io" semantic
-	// conventions.
-	// Instrument: counter
-	// Unit: By
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemNetworkIoName = "system.network.io"
-	SystemNetworkIoUnit = "By"
-
-	// SystemNetworkConnections is the metric conforming to the
-	// "system.network.connections" semantic conventions.
-	// Instrument: updowncounter
-	// Unit: {connection}
-	// Stability: Experimental
-	// NOTE: The description (brief) for this metric is not defined in the semantic-conventions repository.
-	SystemNetworkConnectionsName = "system.network.connections"
-	SystemNetworkConnectionsUnit = "{connection}"
-
-	// SystemProcessCount is the metric conforming to the "system.process.count"
-	// semantic conventions. It represents the total number of processes in each
-	// state.
-	// Instrument: updowncounter
-	// Unit: {process}
-	// Stability: Experimental
-	SystemProcessCountName        = "system.process.count"
-	SystemProcessCountUnit        = "{process}"
-	SystemProcessCountDescription = "Total number of processes in each state"
-
-	// SystemProcessCreated is the metric conforming to the
-	// "system.process.created" semantic conventions. It represents the total
-	// number of processes created over uptime of the host.
-	// Instrument: counter
-	// Unit: {process}
-	// Stability: Experimental
-	SystemProcessCreatedName        = "system.process.created"
-	SystemProcessCreatedUnit        = "{process}"
-	SystemProcessCreatedDescription = "Total number of processes created over uptime of the host"
-
-	// SystemLinuxMemoryAvailable is the metric conforming to the
-	// "system.linux.memory.available" semantic conventions. It represents an
-	// estimate of how much memory is available for starting new applications,
-	// without causing swapping.
-	// Instrument: updowncounter
-	// Unit: By
-	// Stability: Experimental
-	SystemLinuxMemoryAvailableName        = "system.linux.memory.available"
-	SystemLinuxMemoryAvailableUnit        = "By"
-	SystemLinuxMemoryAvailableDescription = "An estimate of how much memory is available for starting new applications, without causing swapping"
-)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go
deleted file mode 100644
index 4c87c7a..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.26.0/schema.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.26.0"
-
-// SchemaURL is the schema URL that matches the version of the semantic conventions
-// that this package defines. Semconv packages starting from v1.4.0 must declare
-// non-empty schema URL in the form https://opentelemetry.io/schemas/<version>
-const SchemaURL = "https://opentelemetry.io/schemas/1.26.0"
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md
deleted file mode 100644
index 02b5611..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/MIGRATION.md
+++ /dev/null
@@ -1,4 +0,0 @@
-<!-- Generated. DO NOT MODIFY. -->
-# Migration from v1.33.0 to v1.34.0
-
-The `go.opentelemetry.io/otel/semconv/v1.34.0` package should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.33.0`.
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md
deleted file mode 100644
index fab06c9..0000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Semconv v1.34.0
-
-[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.34.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.34.0)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md
new file mode 100644
index 0000000..2480547
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md
@@ -0,0 +1,41 @@
+<!-- Generated. DO NOT MODIFY. -->
+# Migration from v1.36.0 to v1.37.0
+
+The `go.opentelemetry.io/otel/semconv/v1.37.0` package should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.36.0` with the following exceptions.
+
+## Removed
+
+The following declarations have been removed.
+Refer to the [OpenTelemetry Semantic Conventions documentation] for deprecation instructions.
+
+If the type is not listed in the documentation as deprecated, it has been removed in this version due to lack of applicability or use.
+If you use any of these non-deprecated declarations in your Go application, please [open an issue] describing your use-case.
+
+- `ContainerRuntime`
+- `ContainerRuntimeKey`
+- `GenAIOpenAIRequestServiceTierAuto`
+- `GenAIOpenAIRequestServiceTierDefault`
+- `GenAIOpenAIRequestServiceTierKey`
+- `GenAIOpenAIResponseServiceTier`
+- `GenAIOpenAIResponseServiceTierKey`
+- `GenAIOpenAIResponseSystemFingerprint`
+- `GenAIOpenAIResponseSystemFingerprintKey`
+- `GenAISystemAWSBedrock`
+- `GenAISystemAnthropic`
+- `GenAISystemAzureAIInference`
+- `GenAISystemAzureAIOpenAI`
+- `GenAISystemCohere`
+- `GenAISystemDeepseek`
+- `GenAISystemGCPGemini`
+- `GenAISystemGCPGenAI`
+- `GenAISystemGCPVertexAI`
+- `GenAISystemGroq`
+- `GenAISystemIBMWatsonxAI`
+- `GenAISystemKey`
+- `GenAISystemMistralAI`
+- `GenAISystemOpenAI`
+- `GenAISystemPerplexity`
+- `GenAISystemXai`
+
+[OpenTelemetry Semantic Conventions documentation]: https://github.com/open-telemetry/semantic-conventions
+[open an issue]: https://github.com/open-telemetry/opentelemetry-go/issues/new?template=Blank+issue
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md
new file mode 100644
index 0000000..d795247
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md
@@ -0,0 +1,3 @@
+# Semconv v1.37.0
+
+[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.37.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.37.0)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go
similarity index 89%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go
index 5b56662..b6b2749 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go
@@ -3,7 +3,7 @@
 
 // Code generated from semantic convention specification. DO NOT EDIT.
 
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0"
+package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
 
 import "go.opentelemetry.io/otel/attribute"
 
@@ -28,7 +28,8 @@
 	// AndroidOSAPILevelKey is the attribute Key conforming to the
 	// "android.os.api_level" semantic conventions. It represents the uniquely
 	// identifies the framework API revision offered by a version (`os.version`) of
-	// the android operating system. More information can be found [here].
+	// the android operating system. More information can be found in the
+	// [Android API levels documentation].
 	//
 	// Type: string
 	// RequirementLevel: Recommended
@@ -36,16 +37,17 @@
 	//
 	// Examples: "33", "32"
 	//
-	// [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
+	// [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
 	AndroidOSAPILevelKey = attribute.Key("android.os.api_level")
 )
 
 // AndroidOSAPILevel returns an attribute KeyValue conforming to the
 // "android.os.api_level" semantic conventions. It represents the uniquely
 // identifies the framework API revision offered by a version (`os.version`) of
-// the android operating system. More information can be found [here].
+// the android operating system. More information can be found in the
+// [Android API levels documentation].
 //
-// [here]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
+// [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels
 func AndroidOSAPILevel(val string) attribute.KeyValue {
 	return AndroidOSAPILevelKey.String(val)
 }
@@ -73,6 +75,18 @@
 
 // Namespace: app
 const (
+	// AppBuildIDKey is the attribute Key conforming to the "app.build_id" semantic
+	// conventions. It represents the unique identifier for a particular build or
+	// compilation of the application.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "6cff0a7e-cefc-4668-96f5-1273d8b334d0",
+	// "9f2b833506aa6973a92fde9733e6271f", "my-app-1.0.0-code-123"
+	AppBuildIDKey = attribute.Key("app.build_id")
+
 	// AppInstallationIDKey is the attribute Key conforming to the
 	// "app.installation.id" semantic conventions. It represents a unique identifier
 	// representing the installation of an application on a specific device.
@@ -106,16 +120,51 @@
 	//   - [App set ID].
 	//   - [`Settings.getString(Settings.Secure.ANDROID_ID)`].
 	//
-	// More information about Android identifier best practices can be found [here]
-	// .
+	// More information about Android identifier best practices can be found in the
+	// [Android user data IDs guide].
 	//
 	// [vendor identifier]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor
 	// [Firebase Installation ID]: https://firebase.google.com/docs/projects/manage-installations
 	// [App set ID]: https://developer.android.com/identity/app-set-id
 	// [`Settings.getString(Settings.Secure.ANDROID_ID)`]: https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID
-	// [here]: https://developer.android.com/training/articles/user-data-ids
+	// [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids
 	AppInstallationIDKey = attribute.Key("app.installation.id")
 
+	// AppJankFrameCountKey is the attribute Key conforming to the
+	// "app.jank.frame_count" semantic conventions. It represents a number of frame
+	// renders that experienced jank.
+	//
+	// Type: int
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: 9, 42
+	// Note: Depending on platform limitations, the value provided MAY be
+	// approximation.
+	AppJankFrameCountKey = attribute.Key("app.jank.frame_count")
+
+	// AppJankPeriodKey is the attribute Key conforming to the "app.jank.period"
+	// semantic conventions. It represents the time period, in seconds, for which
+	// this jank is being reported.
+	//
+	// Type: double
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: 1.0, 5.0, 10.24
+	AppJankPeriodKey = attribute.Key("app.jank.period")
+
+	// AppJankThresholdKey is the attribute Key conforming to the
+	// "app.jank.threshold" semantic conventions. It represents the minimum
+	// rendering threshold for this jank, in seconds.
+	//
+	// Type: double
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: 0.016, 0.7, 1.024
+	AppJankThresholdKey = attribute.Key("app.jank.threshold")
+
 	// AppScreenCoordinateXKey is the attribute Key conforming to the
 	// "app.screen.coordinate.x" semantic conventions. It represents the x
 	// (horizontal) coordinate of a screen coordinate, in screen pixels.
@@ -164,6 +213,13 @@
 	AppWidgetNameKey = attribute.Key("app.widget.name")
 )
 
+// AppBuildID returns an attribute KeyValue conforming to the "app.build_id"
+// semantic conventions. It represents the unique identifier for a particular
+// build or compilation of the application.
+func AppBuildID(val string) attribute.KeyValue {
+	return AppBuildIDKey.String(val)
+}
+
 // AppInstallationID returns an attribute KeyValue conforming to the
 // "app.installation.id" semantic conventions. It represents a unique identifier
 // representing the installation of an application on a specific device.
@@ -171,6 +227,27 @@
 	return AppInstallationIDKey.String(val)
 }
 
+// AppJankFrameCount returns an attribute KeyValue conforming to the
+// "app.jank.frame_count" semantic conventions. It represents a number of frame
+// renders that experienced jank.
+func AppJankFrameCount(val int) attribute.KeyValue {
+	return AppJankFrameCountKey.Int(val)
+}
+
+// AppJankPeriod returns an attribute KeyValue conforming to the
+// "app.jank.period" semantic conventions. It represents the time period, in
+// seconds, for which this jank is being reported.
+func AppJankPeriod(val float64) attribute.KeyValue {
+	return AppJankPeriodKey.Float64(val)
+}
+
+// AppJankThreshold returns an attribute KeyValue conforming to the
+// "app.jank.threshold" semantic conventions. It represents the minimum rendering
+// threshold for this jank, in seconds.
+func AppJankThreshold(val float64) attribute.KeyValue {
+	return AppJankThresholdKey.Float64(val)
+}
+
 // AppScreenCoordinateX returns an attribute KeyValue conforming to the
 // "app.screen.coordinate.x" semantic conventions. It represents the x
 // (horizontal) coordinate of a screen coordinate, in screen pixels.
@@ -1525,59 +1602,14 @@
 
 // Enum values for aws.ecs.launchtype
 var (
-	// ec2
+	// Amazon EC2
 	// Stability: development
 	AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2")
-	// fargate
+	// Amazon Fargate
 	// Stability: development
 	AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate")
 )
 
-// Namespace: az
-const (
-	// AzNamespaceKey is the attribute Key conforming to the "az.namespace" semantic
-	// conventions. It represents the [Azure Resource Provider Namespace] as
-	// recognized by the client.
-	//
-	// Type: string
-	// RequirementLevel: Recommended
-	// Stability: Development
-	//
-	// Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus"
-	//
-	// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
-	AzNamespaceKey = attribute.Key("az.namespace")
-
-	// AzServiceRequestIDKey is the attribute Key conforming to the
-	// "az.service_request_id" semantic conventions. It represents the unique
-	// identifier of the service request. It's generated by the Azure service and
-	// returned with the response.
-	//
-	// Type: string
-	// RequirementLevel: Recommended
-	// Stability: Development
-	//
-	// Examples: "00000000-0000-0000-0000-000000000000"
-	AzServiceRequestIDKey = attribute.Key("az.service_request_id")
-)
-
-// AzNamespace returns an attribute KeyValue conforming to the "az.namespace"
-// semantic conventions. It represents the [Azure Resource Provider Namespace] as
-// recognized by the client.
-//
-// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
-func AzNamespace(val string) attribute.KeyValue {
-	return AzNamespaceKey.String(val)
-}
-
-// AzServiceRequestID returns an attribute KeyValue conforming to the
-// "az.service_request_id" semantic conventions. It represents the unique
-// identifier of the service request. It's generated by the Azure service and
-// returned with the response.
-func AzServiceRequestID(val string) attribute.KeyValue {
-	return AzServiceRequestIDKey.String(val)
-}
-
 // Namespace: azure
 const (
 	// AzureClientIDKey is the attribute Key conforming to the "azure.client.id"
@@ -1665,6 +1697,31 @@
 	//
 	// Examples: 1000, 1002
 	AzureCosmosDBResponseSubStatusCodeKey = attribute.Key("azure.cosmosdb.response.sub_status_code")
+
+	// AzureResourceProviderNamespaceKey is the attribute Key conforming to the
+	// "azure.resource_provider.namespace" semantic conventions. It represents the
+	// [Azure Resource Provider Namespace] as recognized by the client.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus"
+	//
+	// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
+	AzureResourceProviderNamespaceKey = attribute.Key("azure.resource_provider.namespace")
+
+	// AzureServiceRequestIDKey is the attribute Key conforming to the
+	// "azure.service.request.id" semantic conventions. It represents the unique
+	// identifier of the service request. It's generated by the Azure service and
+	// returned with the response.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "00000000-0000-0000-0000-000000000000"
+	AzureServiceRequestIDKey = attribute.Key("azure.service.request.id")
 )
 
 // AzureClientID returns an attribute KeyValue conforming to the
@@ -1705,6 +1762,23 @@
 	return AzureCosmosDBResponseSubStatusCodeKey.Int(val)
 }
 
+// AzureResourceProviderNamespace returns an attribute KeyValue conforming to the
+// "azure.resource_provider.namespace" semantic conventions. It represents the
+// [Azure Resource Provider Namespace] as recognized by the client.
+//
+// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers
+func AzureResourceProviderNamespace(val string) attribute.KeyValue {
+	return AzureResourceProviderNamespaceKey.String(val)
+}
+
+// AzureServiceRequestID returns an attribute KeyValue conforming to the
+// "azure.service.request.id" semantic conventions. It represents the unique
+// identifier of the service request. It's generated by the Azure service and
+// returned with the response.
+func AzureServiceRequestID(val string) attribute.KeyValue {
+	return AzureServiceRequestIDKey.String(val)
+}
+
 // Enum values for azure.cosmosdb.connection.mode
 var (
 	// Gateway (HTTP) connection.
@@ -1717,19 +1791,19 @@
 
 // Enum values for azure.cosmosdb.consistency.level
 var (
-	// strong
+	// Strong
 	// Stability: development
 	AzureCosmosDBConsistencyLevelStrong = AzureCosmosDBConsistencyLevelKey.String("Strong")
-	// bounded_staleness
+	// Bounded Staleness
 	// Stability: development
 	AzureCosmosDBConsistencyLevelBoundedStaleness = AzureCosmosDBConsistencyLevelKey.String("BoundedStaleness")
-	// session
+	// Session
 	// Stability: development
 	AzureCosmosDBConsistencyLevelSession = AzureCosmosDBConsistencyLevelKey.String("Session")
-	// eventual
+	// Eventual
 	// Stability: development
 	AzureCosmosDBConsistencyLevelEventual = AzureCosmosDBConsistencyLevelKey.String("Eventual")
-	// consistent_prefix
+	// Consistent Prefix
 	// Stability: development
 	AzureCosmosDBConsistencyLevelConsistentPrefix = AzureCosmosDBConsistencyLevelKey.String("ConsistentPrefix")
 )
@@ -1944,37 +2018,37 @@
 
 // Enum values for cassandra.consistency.level
 var (
-	// all
+	// All
 	// Stability: development
 	CassandraConsistencyLevelAll = CassandraConsistencyLevelKey.String("all")
-	// each_quorum
+	// Each Quorum
 	// Stability: development
 	CassandraConsistencyLevelEachQuorum = CassandraConsistencyLevelKey.String("each_quorum")
-	// quorum
+	// Quorum
 	// Stability: development
 	CassandraConsistencyLevelQuorum = CassandraConsistencyLevelKey.String("quorum")
-	// local_quorum
+	// Local Quorum
 	// Stability: development
 	CassandraConsistencyLevelLocalQuorum = CassandraConsistencyLevelKey.String("local_quorum")
-	// one
+	// One
 	// Stability: development
 	CassandraConsistencyLevelOne = CassandraConsistencyLevelKey.String("one")
-	// two
+	// Two
 	// Stability: development
 	CassandraConsistencyLevelTwo = CassandraConsistencyLevelKey.String("two")
-	// three
+	// Three
 	// Stability: development
 	CassandraConsistencyLevelThree = CassandraConsistencyLevelKey.String("three")
-	// local_one
+	// Local One
 	// Stability: development
 	CassandraConsistencyLevelLocalOne = CassandraConsistencyLevelKey.String("local_one")
-	// any
+	// Any
 	// Stability: development
 	CassandraConsistencyLevelAny = CassandraConsistencyLevelKey.String("any")
-	// serial
+	// Serial
 	// Stability: development
 	CassandraConsistencyLevelSerial = CassandraConsistencyLevelKey.String("serial")
-	// local_serial
+	// Local Serial
 	// Stability: development
 	CassandraConsistencyLevelLocalSerial = CassandraConsistencyLevelKey.String("local_serial")
 )
@@ -2527,7 +2601,7 @@
 	// [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
 	// [alias suffix]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html
 	// [URI of the resource]: https://cloud.google.com/iam/docs/full-resource-names
-	// [Fully Qualified Resource ID]: https://docs.microsoft.com/rest/api/resources/resources/get-by-id
+	// [Fully Qualified Resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id
 	CloudResourceIDKey = attribute.Key("cloud.resource_id")
 )
 
@@ -2604,25 +2678,25 @@
 	CloudPlatformAWSOpenShift = CloudPlatformKey.String("aws_openshift")
 	// Azure Virtual Machines
 	// Stability: development
-	CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm")
+	CloudPlatformAzureVM = CloudPlatformKey.String("azure.vm")
 	// Azure Container Apps
 	// Stability: development
-	CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure_container_apps")
+	CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure.container_apps")
 	// Azure Container Instances
 	// Stability: development
-	CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances")
+	CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure.container_instances")
 	// Azure Kubernetes Service
 	// Stability: development
-	CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks")
+	CloudPlatformAzureAKS = CloudPlatformKey.String("azure.aks")
 	// Azure Functions
 	// Stability: development
-	CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions")
+	CloudPlatformAzureFunctions = CloudPlatformKey.String("azure.functions")
 	// Azure App Service
 	// Stability: development
-	CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service")
+	CloudPlatformAzureAppService = CloudPlatformKey.String("azure.app_service")
 	// Azure Red Hat OpenShift
 	// Stability: development
-	CloudPlatformAzureOpenShift = CloudPlatformKey.String("azure_openshift")
+	CloudPlatformAzureOpenShift = CloudPlatformKey.String("azure.openshift")
 	// Google Bare Metal Solution (BMS)
 	// Stability: development
 	CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution")
@@ -3374,16 +3448,40 @@
 	// Examples: "opentelemetry-autoconf"
 	ContainerNameKey = attribute.Key("container.name")
 
-	// ContainerRuntimeKey is the attribute Key conforming to the
-	// "container.runtime" semantic conventions. It represents the container runtime
-	// managing this container.
+	// ContainerRuntimeDescriptionKey is the attribute Key conforming to the
+	// "container.runtime.description" semantic conventions. It represents a
+	// description about the runtime which could include, for example details about
+	// the CRI/API version being used or other customisations.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "docker://19.3.1 - CRI: 1.22.0"
+	ContainerRuntimeDescriptionKey = attribute.Key("container.runtime.description")
+
+	// ContainerRuntimeNameKey is the attribute Key conforming to the
+	// "container.runtime.name" semantic conventions. It represents the container
+	// runtime managing this container.
 	//
 	// Type: string
 	// RequirementLevel: Recommended
 	// Stability: Development
 	//
 	// Examples: "docker", "containerd", "rkt"
-	ContainerRuntimeKey = attribute.Key("container.runtime")
+	ContainerRuntimeNameKey = attribute.Key("container.runtime.name")
+
+	// ContainerRuntimeVersionKey is the attribute Key conforming to the
+	// "container.runtime.version" semantic conventions. It represents the version
+	// of the runtime of this process, as returned by the runtime without
+	// modification.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: 1.0.0
+	ContainerRuntimeVersionKey = attribute.Key("container.runtime.version")
 )
 
 // ContainerCommand returns an attribute KeyValue conforming to the
@@ -3467,6 +3565,13 @@
 	return ContainerImageTagsKey.StringSlice(val)
 }
 
+// ContainerLabel returns an attribute KeyValue conforming to the
+// "container.label" semantic conventions. It represents the container labels,
+// `<key>` being the label name, the value being the label value.
+func ContainerLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("container.label."+key, val)
+}
+
 // ContainerName returns an attribute KeyValue conforming to the "container.name"
 // semantic conventions. It represents the container name used by container
 // runtime.
@@ -3474,11 +3579,26 @@
 	return ContainerNameKey.String(val)
 }
 
-// ContainerRuntime returns an attribute KeyValue conforming to the
-// "container.runtime" semantic conventions. It represents the container runtime
-// managing this container.
-func ContainerRuntime(val string) attribute.KeyValue {
-	return ContainerRuntimeKey.String(val)
+// ContainerRuntimeDescription returns an attribute KeyValue conforming to the
+// "container.runtime.description" semantic conventions. It represents a
+// description about the runtime which could include, for example details about
+// the CRI/API version being used or other customisations.
+func ContainerRuntimeDescription(val string) attribute.KeyValue {
+	return ContainerRuntimeDescriptionKey.String(val)
+}
+
+// ContainerRuntimeName returns an attribute KeyValue conforming to the
+// "container.runtime.name" semantic conventions. It represents the container
+// runtime managing this container.
+func ContainerRuntimeName(val string) attribute.KeyValue {
+	return ContainerRuntimeNameKey.String(val)
+}
+
+// ContainerRuntimeVersion returns an attribute KeyValue conforming to the
+// "container.runtime.version" semantic conventions. It represents the version of
+// the runtime of this process, as returned by the runtime without modification.
+func ContainerRuntimeVersion(val string) attribute.KeyValue {
+	return ContainerRuntimeVersionKey.String(val)
 }
 
 // Namespace: cpu
@@ -3514,28 +3634,28 @@
 
 // Enum values for cpu.mode
 var (
-	// user
+	// User
 	// Stability: development
 	CPUModeUser = CPUModeKey.String("user")
-	// system
+	// System
 	// Stability: development
 	CPUModeSystem = CPUModeKey.String("system")
-	// nice
+	// Nice
 	// Stability: development
 	CPUModeNice = CPUModeKey.String("nice")
-	// idle
+	// Idle
 	// Stability: development
 	CPUModeIdle = CPUModeKey.String("idle")
-	// iowait
+	// IO Wait
 	// Stability: development
 	CPUModeIOWait = CPUModeKey.String("iowait")
-	// interrupt
+	// Interrupt
 	// Stability: development
 	CPUModeInterrupt = CPUModeKey.String("interrupt")
-	// steal
+	// Steal
 	// Stability: development
 	CPUModeSteal = CPUModeKey.String("steal")
-	// kernel
+	// Kernel
 	// Stability: development
 	CPUModeKernel = CPUModeKey.String("kernel")
 )
@@ -3794,6 +3914,22 @@
 	return DBOperationNameKey.String(val)
 }
 
+// DBOperationParameter returns an attribute KeyValue conforming to the
+// "db.operation.parameter" semantic conventions. It represents a database
+// operation parameter, with `<key>` being the parameter name, and the attribute
+// value being a string representation of the parameter value.
+func DBOperationParameter(key string, val string) attribute.KeyValue {
+	return attribute.String("db.operation.parameter."+key, val)
+}
+
+// DBQueryParameter returns an attribute KeyValue conforming to the
+// "db.query.parameter" semantic conventions. It represents a database query
+// parameter, with `<key>` being the parameter name, and the attribute value
+// being a string representation of the parameter value.
+func DBQueryParameter(key string, val string) attribute.KeyValue {
+	return attribute.String("db.query.parameter."+key, val)
+}
+
 // DBQuerySummary returns an attribute KeyValue conforming to the
 // "db.query.summary" semantic conventions. It represents the low cardinality
 // summary of a database query.
@@ -4194,8 +4330,8 @@
 	// Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) MAY be
 	// used as values.
 	//
-	// More information about Android identifier best practices can be found [here]
-	// .
+	// More information about Android identifier best practices can be found in the
+	// [Android user data IDs guide].
 	//
 	// > [!WARNING]> This attribute may contain sensitive (PII) information. Caution
 	// > should be taken when storing personal data or anything which can identify a
@@ -4210,7 +4346,7 @@
 	// > opt-in feature.> See [`app.installation.id`]>  for a more
 	// > privacy-preserving alternative.
 	//
-	// [here]: https://developer.android.com/training/articles/user-data-ids
+	// [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids
 	// [`app.installation.id`]: /docs/registry/attributes/app.md#app-installation-id
 	DeviceIDKey = attribute.Key("device.id")
 
@@ -4308,6 +4444,17 @@
 
 // Namespace: dns
 const (
+	// DNSAnswersKey is the attribute Key conforming to the "dns.answers" semantic
+	// conventions. It represents the list of IPv4 or IPv6 addresses resolved during
+	// DNS lookup.
+	//
+	// Type: string[]
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
+	DNSAnswersKey = attribute.Key("dns.answers")
+
 	// DNSQuestionNameKey is the attribute Key conforming to the "dns.question.name"
 	// semantic conventions. It represents the name being queried.
 	//
@@ -4323,6 +4470,13 @@
 	DNSQuestionNameKey = attribute.Key("dns.question.name")
 )
 
+// DNSAnswers returns an attribute KeyValue conforming to the "dns.answers"
+// semantic conventions. It represents the list of IPv4 or IPv6 addresses
+// resolved during DNS lookup.
+func DNSAnswers(val ...string) attribute.KeyValue {
+	return DNSAnswersKey.StringSlice(val)
+}
+
 // DNSQuestionName returns an attribute KeyValue conforming to the
 // "dns.question.name" semantic conventions. It represents the name being
 // queried.
@@ -4941,7 +5095,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "5157782b-2203-4c80-a857-dbbd5e7761db"
 	FeatureFlagContextIDKey = attribute.Key("feature_flag.context.id")
@@ -4951,7 +5105,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "logo-color"
 	FeatureFlagKeyKey = attribute.Key("feature_flag.key")
@@ -4962,7 +5116,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "Flag Manager"
 	FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider.name")
@@ -4973,7 +5127,7 @@
 	//
 	// Type: Enum
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "static", "targeting_match", "error", "default"
 	FeatureFlagResultReasonKey = attribute.Key("feature_flag.result.reason")
@@ -4984,7 +5138,7 @@
 	//
 	// Type: any
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "#ff0000", true, 3
 	// Note: With some feature flag providers, feature flag results can be quite
@@ -5004,7 +5158,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "red", "true", "on"
 	// Note: A semantic identifier, commonly referred to as a variant, provides a
@@ -5020,7 +5174,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "proj-1", "ab98sgs", "service1/dev"
 	//
@@ -5034,7 +5188,7 @@
 	//
 	// Type: string
 	// RequirementLevel: Recommended
-	// Stability: Development
+	// Stability: Release_Candidate
 	//
 	// Examples: "1", "01ABCDEF"
 	FeatureFlagVersionKey = attribute.Key("feature_flag.version")
@@ -5088,34 +5242,34 @@
 // Enum values for feature_flag.result.reason
 var (
 	// The resolved value is static (no dynamic evaluation).
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonStatic = FeatureFlagResultReasonKey.String("static")
 	// The resolved value fell back to a pre-configured value (no dynamic evaluation
 	// occurred or dynamic evaluation yielded no result).
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonDefault = FeatureFlagResultReasonKey.String("default")
 	// The resolved value was the result of a dynamic evaluation, such as a rule or
 	// specific user-targeting.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonTargetingMatch = FeatureFlagResultReasonKey.String("targeting_match")
 	// The resolved value was the result of pseudorandom assignment.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonSplit = FeatureFlagResultReasonKey.String("split")
 	// The resolved value was retrieved from cache.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonCached = FeatureFlagResultReasonKey.String("cached")
 	// The resolved value was the result of the flag being disabled in the
 	// management system.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonDisabled = FeatureFlagResultReasonKey.String("disabled")
 	// The reason for the resolved value could not be determined.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonUnknown = FeatureFlagResultReasonKey.String("unknown")
 	// The resolved value is non-authoritative or possibly out of date
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonStale = FeatureFlagResultReasonKey.String("stale")
 	// The resolved value was the result of an error.
-	// Stability: development
+	// Stability: release_candidate
 	FeatureFlagResultReasonError = FeatureFlagResultReasonKey.String("error")
 )
 
@@ -5208,7 +5362,7 @@
 	// RequirementLevel: Recommended
 	// Stability: Development
 	//
-	// Examples: "Zone.Identifer"
+	// Examples: "Zone.Identifier"
 	// Note: On Linux, a resource fork is used to store additional data with a
 	// filesystem object. A file always has at least one fork for the data portion,
 	// and additional forks may exist.
@@ -5863,39 +6017,41 @@
 	// `db.*`, to further identify and describe the data source.
 	GenAIDataSourceIDKey = attribute.Key("gen_ai.data_source.id")
 
-	// GenAIOpenAIRequestServiceTierKey is the attribute Key conforming to the
-	// "gen_ai.openai.request.service_tier" semantic conventions. It represents the
-	// service tier requested. May be a specific tier, default, or auto.
+	// GenAIInputMessagesKey is the attribute Key conforming to the
+	// "gen_ai.input.messages" semantic conventions. It represents the chat history
+	// provided to the model as an input.
 	//
-	// Type: Enum
+	// Type: any
 	// RequirementLevel: Recommended
 	// Stability: Development
 	//
-	// Examples: "auto", "default"
-	GenAIOpenAIRequestServiceTierKey = attribute.Key("gen_ai.openai.request.service_tier")
-
-	// GenAIOpenAIResponseServiceTierKey is the attribute Key conforming to the
-	// "gen_ai.openai.response.service_tier" semantic conventions. It represents the
-	// service tier used for the response.
+	// Examples: "[\n {\n "role": "user",\n "parts": [\n {\n "type": "text",\n
+	// "content": "Weather in Paris?"\n }\n ]\n },\n {\n "role": "assistant",\n
+	// "parts": [\n {\n "type": "tool_call",\n "id":
+	// "call_VSPygqKTWdrhaFErNvMV18Yl",\n "name": "get_weather",\n "arguments": {\n
+	// "location": "Paris"\n }\n }\n ]\n },\n {\n "role": "tool",\n "parts": [\n {\n
+	// "type": "tool_call_response",\n "id": " call_VSPygqKTWdrhaFErNvMV18Yl",\n
+	// "result": "rainy, 57°F"\n }\n ]\n }\n]\n"
+	// Note: Instrumentations MUST follow [Input messages JSON schema].
+	// When the attribute is recorded on events, it MUST be recorded in structured
+	// form. When recorded on spans, it MAY be recorded as a JSON string if
+	// structured
+	// format is not supported and SHOULD be recorded in structured form otherwise.
 	//
-	// Type: string
-	// RequirementLevel: Recommended
-	// Stability: Development
+	// Messages MUST be provided in the order they were sent to the model.
+	// Instrumentations MAY provide a way for users to filter or truncate
+	// input messages.
 	//
-	// Examples: "scale", "default"
-	GenAIOpenAIResponseServiceTierKey = attribute.Key("gen_ai.openai.response.service_tier")
-
-	// GenAIOpenAIResponseSystemFingerprintKey is the attribute Key conforming to
-	// the "gen_ai.openai.response.system_fingerprint" semantic conventions. It
-	// represents a fingerprint to track any eventual change in the Generative AI
-	// environment.
+	// > [!Warning]
+	// > This attribute is likely to contain sensitive information including
+	// > user/PII data.
 	//
-	// Type: string
-	// RequirementLevel: Recommended
-	// Stability: Development
+	// See [Recording content on attributes]
+	// section for more details.
 	//
-	// Examples: "fp_44709d6fcb"
-	GenAIOpenAIResponseSystemFingerprintKey = attribute.Key("gen_ai.openai.response.system_fingerprint")
+	// [Input messages JSON schema]: /docs/gen-ai/gen-ai-input-messages.json
+	// [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
+	GenAIInputMessagesKey = attribute.Key("gen_ai.input.messages")
 
 	// GenAIOperationNameKey is the attribute Key conforming to the
 	// "gen_ai.operation.name" semantic conventions. It represents the name of the
@@ -5913,6 +6069,44 @@
 	// libraries SHOULD use applicable predefined value.
 	GenAIOperationNameKey = attribute.Key("gen_ai.operation.name")
 
+	// GenAIOutputMessagesKey is the attribute Key conforming to the
+	// "gen_ai.output.messages" semantic conventions. It represents the messages
+	// returned by the model where each message represents a specific model response
+	// (choice, candidate).
+	//
+	// Type: any
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "[\n {\n "role": "assistant",\n "parts": [\n {\n "type": "text",\n
+	// "content": "The weather in Paris is currently rainy with a temperature of
+	// 57°F."\n }\n ],\n "finish_reason": "stop"\n }\n]\n"
+	// Note: Instrumentations MUST follow [Output messages JSON schema]
+	//
+	// Each message represents a single output choice/candidate generated by
+	// the model. Each message corresponds to exactly one generation
+	// (choice/candidate) and vice versa - one choice cannot be split across
+	// multiple messages or one message cannot contain parts from multiple choices.
+	//
+	// When the attribute is recorded on events, it MUST be recorded in structured
+	// form. When recorded on spans, it MAY be recorded as a JSON string if
+	// structured
+	// format is not supported and SHOULD be recorded in structured form otherwise.
+	//
+	// Instrumentations MAY provide a way for users to filter or truncate
+	// output messages.
+	//
+	// > [!Warning]
+	// > This attribute is likely to contain sensitive information including
+	// > user/PII data.
+	//
+	// See [Recording content on attributes]
+	// section for more details.
+	//
+	// [Output messages JSON schema]: /docs/gen-ai/gen-ai-output-messages.json
+	// [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
+	GenAIOutputMessagesKey = attribute.Key("gen_ai.output.messages")
+
 	// GenAIOutputTypeKey is the attribute Key conforming to the
 	// "gen_ai.output.type" semantic conventions. It represents the represents the
 	// content type requested by the client.
@@ -5931,6 +6125,35 @@
 	// `gen_ai.output.{type}.*` attributes.
 	GenAIOutputTypeKey = attribute.Key("gen_ai.output.type")
 
+	// GenAIProviderNameKey is the attribute Key conforming to the
+	// "gen_ai.provider.name" semantic conventions. It represents the Generative AI
+	// provider as identified by the client or server instrumentation.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	// Note: The attribute SHOULD be set based on the instrumentation's best
+	// knowledge and may differ from the actual model provider.
+	//
+	// Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+	// are accessible using the OpenAI REST API and corresponding client libraries,
+	// but may proxy or host models from different providers.
+	//
+	// The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+	// attributes may help identify the actual system in use.
+	//
+	// The `gen_ai.provider.name` attribute acts as a discriminator that
+	// identifies the GenAI telemetry format flavor specific to that provider
+	// within GenAI semantic conventions.
+	// It SHOULD be set consistently with provider-specific attributes and signals.
+	// For example, GenAI spans, metrics, and events related to AWS Bedrock
+	// should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+	// applicable `aws.bedrock.*` attributes and are not expected to include
+	// `openai.*` attributes.
+	GenAIProviderNameKey = attribute.Key("gen_ai.provider.name")
+
 	// GenAIRequestChoiceCountKey is the attribute Key conforming to the
 	// "gen_ai.request.choice.count" semantic conventions. It represents the target
 	// number of candidate completions to return.
@@ -6088,31 +6311,44 @@
 	// Examples: "gpt-4-0613"
 	GenAIResponseModelKey = attribute.Key("gen_ai.response.model")
 
-	// GenAISystemKey is the attribute Key conforming to the "gen_ai.system"
-	// semantic conventions. It represents the Generative AI product as identified
-	// by the client or server instrumentation.
+	// GenAISystemInstructionsKey is the attribute Key conforming to the
+	// "gen_ai.system_instructions" semantic conventions. It represents the system
+	// message or instructions provided to the GenAI model separately from the chat
+	// history.
 	//
-	// Type: Enum
+	// Type: any
 	// RequirementLevel: Recommended
 	// Stability: Development
 	//
-	// Examples: openai
-	// Note: The `gen_ai.system` describes a family of GenAI models with specific
-	// model identified
-	// by `gen_ai.request.model` and `gen_ai.response.model` attributes.
+	// Examples: "[\n {\n "type": "text",\n "content": "You are an Agent that greet
+	// users, always use greetings tool to respond"\n }\n]\n", "[\n {\n "type":
+	// "text",\n "content": "You are a language translator."\n },\n {\n "type":
+	// "text",\n "content": "Your mission is to translate text in English to
+	// French."\n }\n]\n"
+	// Note: This attribute SHOULD be used when the corresponding provider or API
+	// allows to provide system instructions or messages separately from the
+	// chat history.
 	//
-	// The actual GenAI product may differ from the one identified by the client.
-	// Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI
-	// client
-	// libraries. In such cases, the `gen_ai.system` is set to `openai` based on the
-	// instrumentation's best knowledge, instead of the actual system. The
-	// `server.address`
-	// attribute may help identify the actual system in use for `openai`.
+	// Instructions that are part of the chat history SHOULD be recorded in
+	// `gen_ai.input.messages` attribute instead.
 	//
-	// For custom model, a custom friendly name SHOULD be used.
-	// If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`
-	// .
-	GenAISystemKey = attribute.Key("gen_ai.system")
+	// Instrumentations MUST follow [System instructions JSON schema].
+	//
+	// When recorded on spans, it MAY be recorded as a JSON string if structured
+	// format is not supported and SHOULD be recorded in structured form otherwise.
+	//
+	// Instrumentations MAY provide a way for users to filter or truncate
+	// system instructions.
+	//
+	// > [!Warning]
+	// > This attribute may contain sensitive information.
+	//
+	// See [Recording content on attributes]
+	// section for more details.
+	//
+	// [System instructions JSON schema]: /docs/gen-ai/gen-ai-system-instructions.json
+	// [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes
+	GenAISystemInstructionsKey = attribute.Key("gen_ai.system_instructions")
 
 	// GenAITokenTypeKey is the attribute Key conforming to the "gen_ai.token.type"
 	// semantic conventions. It represents the type of token being counted.
@@ -6237,21 +6473,6 @@
 	return GenAIDataSourceIDKey.String(val)
 }
 
-// GenAIOpenAIResponseServiceTier returns an attribute KeyValue conforming to the
-// "gen_ai.openai.response.service_tier" semantic conventions. It represents the
-// service tier used for the response.
-func GenAIOpenAIResponseServiceTier(val string) attribute.KeyValue {
-	return GenAIOpenAIResponseServiceTierKey.String(val)
-}
-
-// GenAIOpenAIResponseSystemFingerprint returns an attribute KeyValue conforming
-// to the "gen_ai.openai.response.system_fingerprint" semantic conventions. It
-// represents a fingerprint to track any eventual change in the Generative AI
-// environment.
-func GenAIOpenAIResponseSystemFingerprint(val string) attribute.KeyValue {
-	return GenAIOpenAIResponseSystemFingerprintKey.String(val)
-}
-
 // GenAIRequestChoiceCount returns an attribute KeyValue conforming to the
 // "gen_ai.request.choice.count" semantic conventions. It represents the target
 // number of candidate completions to return.
@@ -6393,16 +6614,6 @@
 	return GenAIUsageOutputTokensKey.Int(val)
 }
 
-// Enum values for gen_ai.openai.request.service_tier
-var (
-	// The system will utilize scale tier credits until they are exhausted.
-	// Stability: development
-	GenAIOpenAIRequestServiceTierAuto = GenAIOpenAIRequestServiceTierKey.String("auto")
-	// The system will utilize the default scale tier.
-	// Stability: development
-	GenAIOpenAIRequestServiceTierDefault = GenAIOpenAIRequestServiceTierKey.String("default")
-)
-
 // Enum values for gen_ai.operation.name
 var (
 	// Chat completion operation such as [OpenAI Chat API]
@@ -6452,57 +6663,79 @@
 	GenAIOutputTypeSpeech = GenAIOutputTypeKey.String("speech")
 )
 
-// Enum values for gen_ai.system
+// Enum values for gen_ai.provider.name
 var (
-	// OpenAI
+	// [OpenAI]
 	// Stability: development
-	GenAISystemOpenAI = GenAISystemKey.String("openai")
+	//
+	// [OpenAI]: https://openai.com/
+	GenAIProviderNameOpenAI = GenAIProviderNameKey.String("openai")
 	// Any Google generative AI endpoint
 	// Stability: development
-	GenAISystemGCPGenAI = GenAISystemKey.String("gcp.gen_ai")
-	// Vertex AI
+	GenAIProviderNameGCPGenAI = GenAIProviderNameKey.String("gcp.gen_ai")
+	// [Vertex AI]
 	// Stability: development
-	GenAISystemGCPVertexAI = GenAISystemKey.String("gcp.vertex_ai")
-	// Gemini
+	//
+	// [Vertex AI]: https://cloud.google.com/vertex-ai
+	GenAIProviderNameGCPVertexAI = GenAIProviderNameKey.String("gcp.vertex_ai")
+	// [Gemini]
 	// Stability: development
-	GenAISystemGCPGemini = GenAISystemKey.String("gcp.gemini")
-	// Deprecated: Use 'gcp.vertex_ai' instead.
-	GenAISystemVertexAI = GenAISystemKey.String("vertex_ai")
-	// Deprecated: Use 'gcp.gemini' instead.
-	GenAISystemGemini = GenAISystemKey.String("gemini")
-	// Anthropic
+	//
+	// [Gemini]: https://cloud.google.com/products/gemini
+	GenAIProviderNameGCPGemini = GenAIProviderNameKey.String("gcp.gemini")
+	// [Anthropic]
 	// Stability: development
-	GenAISystemAnthropic = GenAISystemKey.String("anthropic")
-	// Cohere
+	//
+	// [Anthropic]: https://www.anthropic.com/
+	GenAIProviderNameAnthropic = GenAIProviderNameKey.String("anthropic")
+	// [Cohere]
 	// Stability: development
-	GenAISystemCohere = GenAISystemKey.String("cohere")
+	//
+	// [Cohere]: https://cohere.com/
+	GenAIProviderNameCohere = GenAIProviderNameKey.String("cohere")
 	// Azure AI Inference
 	// Stability: development
-	GenAISystemAzAIInference = GenAISystemKey.String("az.ai.inference")
-	// Azure OpenAI
+	GenAIProviderNameAzureAIInference = GenAIProviderNameKey.String("azure.ai.inference")
+	// [Azure OpenAI]
 	// Stability: development
-	GenAISystemAzAIOpenAI = GenAISystemKey.String("az.ai.openai")
-	// IBM Watsonx AI
+	//
+	// [Azure OpenAI]: https://azure.microsoft.com/products/ai-services/openai-service/
+	GenAIProviderNameAzureAIOpenAI = GenAIProviderNameKey.String("azure.ai.openai")
+	// [IBM Watsonx AI]
 	// Stability: development
-	GenAISystemIBMWatsonxAI = GenAISystemKey.String("ibm.watsonx.ai")
-	// AWS Bedrock
+	//
+	// [IBM Watsonx AI]: https://www.ibm.com/products/watsonx-ai
+	GenAIProviderNameIBMWatsonxAI = GenAIProviderNameKey.String("ibm.watsonx.ai")
+	// [AWS Bedrock]
 	// Stability: development
-	GenAISystemAWSBedrock = GenAISystemKey.String("aws.bedrock")
-	// Perplexity
+	//
+	// [AWS Bedrock]: https://aws.amazon.com/bedrock
+	GenAIProviderNameAWSBedrock = GenAIProviderNameKey.String("aws.bedrock")
+	// [Perplexity]
 	// Stability: development
-	GenAISystemPerplexity = GenAISystemKey.String("perplexity")
-	// xAI
+	//
+	// [Perplexity]: https://www.perplexity.ai/
+	GenAIProviderNamePerplexity = GenAIProviderNameKey.String("perplexity")
+	// [xAI]
 	// Stability: development
-	GenAISystemXai = GenAISystemKey.String("xai")
-	// DeepSeek
+	//
+	// [xAI]: https://x.ai/
+	GenAIProviderNameXAI = GenAIProviderNameKey.String("x_ai")
+	// [DeepSeek]
 	// Stability: development
-	GenAISystemDeepseek = GenAISystemKey.String("deepseek")
-	// Groq
+	//
+	// [DeepSeek]: https://www.deepseek.com/
+	GenAIProviderNameDeepseek = GenAIProviderNameKey.String("deepseek")
+	// [Groq]
 	// Stability: development
-	GenAISystemGroq = GenAISystemKey.String("groq")
-	// Mistral AI
+	//
+	// [Groq]: https://groq.com/
+	GenAIProviderNameGroq = GenAIProviderNameKey.String("groq")
+	// [Mistral AI]
 	// Stability: development
-	GenAISystemMistralAI = GenAISystemKey.String("mistral_ai")
+	//
+	// [Mistral AI]: https://mistral.ai/
+	GenAIProviderNameMistralAI = GenAIProviderNameKey.String("mistral_ai")
 )
 
 // Enum values for gen_ai.token.type
@@ -6510,8 +6743,6 @@
 	// Input tokens (prompt, input, etc.)
 	// Stability: development
 	GenAITokenTypeInput = GenAITokenTypeKey.String("input")
-	// Deprecated: Replaced by `output`.
-	GenAITokenTypeCompletion = GenAITokenTypeKey.String("output")
 	// Output tokens (completion, response, etc.)
 	// Stability: development
 	GenAITokenTypeOutput = GenAITokenTypeKey.String("output")
@@ -7312,6 +7543,14 @@
 	return HTTPRequestBodySizeKey.Int(val)
 }
 
+// HTTPRequestHeader returns an attribute KeyValue conforming to the
+// "http.request.header" semantic conventions. It represents the HTTP request
+// headers, `<key>` being the normalized HTTP Header name (lowercase), the value
+// being the header values.
+func HTTPRequestHeader(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("http.request.header."+key, val)
+}
+
 // HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the
 // "http.request.method_original" semantic conventions. It represents the
 // original HTTP method sent by the client in the request line.
@@ -7347,6 +7586,14 @@
 	return HTTPResponseBodySizeKey.Int(val)
 }
 
+// HTTPResponseHeader returns an attribute KeyValue conforming to the
+// "http.response.header" semantic conventions. It represents the HTTP response
+// headers, `<key>` being the normalized HTTP Header name (lowercase), the value
+// being the header values.
+func HTTPResponseHeader(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("http.response.header."+key, val)
+}
+
 // HTTPResponseSize returns an attribute KeyValue conforming to the
 // "http.response.size" semantic conventions. It represents the total size of the
 // response in bytes. This should be the total number of bytes sent over the
@@ -7418,6 +7665,94 @@
 
 // Namespace: hw
 const (
+	// HwBatteryCapacityKey is the attribute Key conforming to the
+	// "hw.battery.capacity" semantic conventions. It represents the design capacity
+	// in Watts-hours or Amper-hours.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "9.3Ah", "50Wh"
+	HwBatteryCapacityKey = attribute.Key("hw.battery.capacity")
+
+	// HwBatteryChemistryKey is the attribute Key conforming to the
+	// "hw.battery.chemistry" semantic conventions. It represents the battery
+	// [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Li-ion", "NiMH"
+	//
+	// [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html
+	HwBatteryChemistryKey = attribute.Key("hw.battery.chemistry")
+
+	// HwBatteryStateKey is the attribute Key conforming to the "hw.battery.state"
+	// semantic conventions. It represents the current state of the battery.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwBatteryStateKey = attribute.Key("hw.battery.state")
+
+	// HwBiosVersionKey is the attribute Key conforming to the "hw.bios_version"
+	// semantic conventions. It represents the BIOS version of the hardware
+	// component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "1.2.3"
+	HwBiosVersionKey = attribute.Key("hw.bios_version")
+
+	// HwDriverVersionKey is the attribute Key conforming to the "hw.driver_version"
+	// semantic conventions. It represents the driver version for the hardware
+	// component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "10.2.1-3"
+	HwDriverVersionKey = attribute.Key("hw.driver_version")
+
+	// HwEnclosureTypeKey is the attribute Key conforming to the "hw.enclosure.type"
+	// semantic conventions. It represents the type of the enclosure (useful for
+	// modular systems).
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Computer", "Storage", "Switch"
+	HwEnclosureTypeKey = attribute.Key("hw.enclosure.type")
+
+	// HwFirmwareVersionKey is the attribute Key conforming to the
+	// "hw.firmware_version" semantic conventions. It represents the firmware
+	// version of the hardware component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "2.0.1"
+	HwFirmwareVersionKey = attribute.Key("hw.firmware_version")
+
+	// HwGpuTaskKey is the attribute Key conforming to the "hw.gpu.task" semantic
+	// conventions. It represents the type of task the GPU is performing.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwGpuTaskKey = attribute.Key("hw.gpu.task")
+
 	// HwIDKey is the attribute Key conforming to the "hw.id" semantic conventions.
 	// It represents an identifier for the hardware component, unique within the
 	// monitored host.
@@ -7429,6 +7764,60 @@
 	// Examples: "win32battery_battery_testsysa33_1"
 	HwIDKey = attribute.Key("hw.id")
 
+	// HwLimitTypeKey is the attribute Key conforming to the "hw.limit_type"
+	// semantic conventions. It represents the type of limit for hardware
+	// components.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwLimitTypeKey = attribute.Key("hw.limit_type")
+
+	// HwLogicalDiskRaidLevelKey is the attribute Key conforming to the
+	// "hw.logical_disk.raid_level" semantic conventions. It represents the RAID
+	// Level of the logical disk.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "RAID0+1", "RAID5", "RAID10"
+	HwLogicalDiskRaidLevelKey = attribute.Key("hw.logical_disk.raid_level")
+
+	// HwLogicalDiskStateKey is the attribute Key conforming to the
+	// "hw.logical_disk.state" semantic conventions. It represents the state of the
+	// logical disk space usage.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwLogicalDiskStateKey = attribute.Key("hw.logical_disk.state")
+
+	// HwMemoryTypeKey is the attribute Key conforming to the "hw.memory.type"
+	// semantic conventions. It represents the type of the memory module.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "DDR4", "DDR5", "LPDDR5"
+	HwMemoryTypeKey = attribute.Key("hw.memory.type")
+
+	// HwModelKey is the attribute Key conforming to the "hw.model" semantic
+	// conventions. It represents the descriptive model name of the hardware
+	// component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "PERC H740P", "Intel(R) Core(TM) i7-10700K", "Dell XPS 15 Battery"
+	HwModelKey = attribute.Key("hw.model")
+
 	// HwNameKey is the attribute Key conforming to the "hw.name" semantic
 	// conventions. It represents an easily-recognizable name for the hardware
 	// component.
@@ -7440,6 +7829,28 @@
 	// Examples: "eth0"
 	HwNameKey = attribute.Key("hw.name")
 
+	// HwNetworkLogicalAddressesKey is the attribute Key conforming to the
+	// "hw.network.logical_addresses" semantic conventions. It represents the
+	// logical addresses of the adapter (e.g. IP address, or WWPN).
+	//
+	// Type: string[]
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "172.16.8.21", "57.11.193.42"
+	HwNetworkLogicalAddressesKey = attribute.Key("hw.network.logical_addresses")
+
+	// HwNetworkPhysicalAddressKey is the attribute Key conforming to the
+	// "hw.network.physical_address" semantic conventions. It represents the
+	// physical address of the adapter (e.g. MAC address, or WWNN).
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "00-90-F5-E9-7B-36"
+	HwNetworkPhysicalAddressKey = attribute.Key("hw.network.physical_address")
+
 	// HwParentKey is the attribute Key conforming to the "hw.parent" semantic
 	// conventions. It represents the unique identifier of the parent component
 	// (typically the `hw.id` attribute of the enclosure, or disk controller).
@@ -7451,6 +7862,65 @@
 	// Examples: "dellStorage_perc_0"
 	HwParentKey = attribute.Key("hw.parent")
 
+	// HwPhysicalDiskSmartAttributeKey is the attribute Key conforming to the
+	// "hw.physical_disk.smart_attribute" semantic conventions. It represents the
+	// [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute
+	// of the physical disk.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Spin Retry Count", "Seek Error Rate", "Raw Read Error Rate"
+	//
+	// [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T.
+	HwPhysicalDiskSmartAttributeKey = attribute.Key("hw.physical_disk.smart_attribute")
+
+	// HwPhysicalDiskStateKey is the attribute Key conforming to the
+	// "hw.physical_disk.state" semantic conventions. It represents the state of the
+	// physical disk endurance utilization.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwPhysicalDiskStateKey = attribute.Key("hw.physical_disk.state")
+
+	// HwPhysicalDiskTypeKey is the attribute Key conforming to the
+	// "hw.physical_disk.type" semantic conventions. It represents the type of the
+	// physical disk.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "HDD", "SSD", "10K"
+	HwPhysicalDiskTypeKey = attribute.Key("hw.physical_disk.type")
+
+	// HwSensorLocationKey is the attribute Key conforming to the
+	// "hw.sensor_location" semantic conventions. It represents the location of the
+	// sensor.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "cpu0", "ps1", "INLET", "CPU0_DIE", "AMBIENT", "MOTHERBOARD", "PS0
+	// V3_3", "MAIN_12V", "CPU_VCORE"
+	HwSensorLocationKey = attribute.Key("hw.sensor_location")
+
+	// HwSerialNumberKey is the attribute Key conforming to the "hw.serial_number"
+	// semantic conventions. It represents the serial number of the hardware
+	// component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "CNFCP0123456789"
+	HwSerialNumberKey = attribute.Key("hw.serial_number")
+
 	// HwStateKey is the attribute Key conforming to the "hw.state" semantic
 	// conventions. It represents the current state of the component.
 	//
@@ -7461,6 +7931,17 @@
 	// Examples:
 	HwStateKey = attribute.Key("hw.state")
 
+	// HwTapeDriveOperationTypeKey is the attribute Key conforming to the
+	// "hw.tape_drive.operation_type" semantic conventions. It represents the type
+	// of tape drive operation.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	HwTapeDriveOperationTypeKey = attribute.Key("hw.tape_drive.operation_type")
+
 	// HwTypeKey is the attribute Key conforming to the "hw.type" semantic
 	// conventions. It represents the type of the component.
 	//
@@ -7474,8 +7955,62 @@
 	// `hw.state=degraded` would indicate that the temperature of the hardware
 	// component has been reported as `degraded`.
 	HwTypeKey = attribute.Key("hw.type")
+
+	// HwVendorKey is the attribute Key conforming to the "hw.vendor" semantic
+	// conventions. It represents the vendor name of the hardware component.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Dell", "HP", "Intel", "AMD", "LSI", "Lenovo"
+	HwVendorKey = attribute.Key("hw.vendor")
 )
 
+// HwBatteryCapacity returns an attribute KeyValue conforming to the
+// "hw.battery.capacity" semantic conventions. It represents the design capacity
+// in Watts-hours or Amper-hours.
+func HwBatteryCapacity(val string) attribute.KeyValue {
+	return HwBatteryCapacityKey.String(val)
+}
+
+// HwBatteryChemistry returns an attribute KeyValue conforming to the
+// "hw.battery.chemistry" semantic conventions. It represents the battery
+// [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc.
+//
+// [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html
+func HwBatteryChemistry(val string) attribute.KeyValue {
+	return HwBatteryChemistryKey.String(val)
+}
+
+// HwBiosVersion returns an attribute KeyValue conforming to the
+// "hw.bios_version" semantic conventions. It represents the BIOS version of the
+// hardware component.
+func HwBiosVersion(val string) attribute.KeyValue {
+	return HwBiosVersionKey.String(val)
+}
+
+// HwDriverVersion returns an attribute KeyValue conforming to the
+// "hw.driver_version" semantic conventions. It represents the driver version for
+// the hardware component.
+func HwDriverVersion(val string) attribute.KeyValue {
+	return HwDriverVersionKey.String(val)
+}
+
+// HwEnclosureType returns an attribute KeyValue conforming to the
+// "hw.enclosure.type" semantic conventions. It represents the type of the
+// enclosure (useful for modular systems).
+func HwEnclosureType(val string) attribute.KeyValue {
+	return HwEnclosureTypeKey.String(val)
+}
+
+// HwFirmwareVersion returns an attribute KeyValue conforming to the
+// "hw.firmware_version" semantic conventions. It represents the firmware version
+// of the hardware component.
+func HwFirmwareVersion(val string) attribute.KeyValue {
+	return HwFirmwareVersionKey.String(val)
+}
+
 // HwID returns an attribute KeyValue conforming to the "hw.id" semantic
 // conventions. It represents an identifier for the hardware component, unique
 // within the monitored host.
@@ -7483,6 +8018,26 @@
 	return HwIDKey.String(val)
 }
 
+// HwLogicalDiskRaidLevel returns an attribute KeyValue conforming to the
+// "hw.logical_disk.raid_level" semantic conventions. It represents the RAID
+// Level of the logical disk.
+func HwLogicalDiskRaidLevel(val string) attribute.KeyValue {
+	return HwLogicalDiskRaidLevelKey.String(val)
+}
+
+// HwMemoryType returns an attribute KeyValue conforming to the "hw.memory.type"
+// semantic conventions. It represents the type of the memory module.
+func HwMemoryType(val string) attribute.KeyValue {
+	return HwMemoryTypeKey.String(val)
+}
+
+// HwModel returns an attribute KeyValue conforming to the "hw.model" semantic
+// conventions. It represents the descriptive model name of the hardware
+// component.
+func HwModel(val string) attribute.KeyValue {
+	return HwModelKey.String(val)
+}
+
 // HwName returns an attribute KeyValue conforming to the "hw.name" semantic
 // conventions. It represents an easily-recognizable name for the hardware
 // component.
@@ -7490,6 +8045,20 @@
 	return HwNameKey.String(val)
 }
 
+// HwNetworkLogicalAddresses returns an attribute KeyValue conforming to the
+// "hw.network.logical_addresses" semantic conventions. It represents the logical
+// addresses of the adapter (e.g. IP address, or WWPN).
+func HwNetworkLogicalAddresses(val ...string) attribute.KeyValue {
+	return HwNetworkLogicalAddressesKey.StringSlice(val)
+}
+
+// HwNetworkPhysicalAddress returns an attribute KeyValue conforming to the
+// "hw.network.physical_address" semantic conventions. It represents the physical
+// address of the adapter (e.g. MAC address, or WWNN).
+func HwNetworkPhysicalAddress(val string) attribute.KeyValue {
+	return HwNetworkPhysicalAddressKey.String(val)
+}
+
 // HwParent returns an attribute KeyValue conforming to the "hw.parent" semantic
 // conventions. It represents the unique identifier of the parent component
 // (typically the `hw.id` attribute of the enclosure, or disk controller).
@@ -7497,17 +8066,144 @@
 	return HwParentKey.String(val)
 }
 
+// HwPhysicalDiskSmartAttribute returns an attribute KeyValue conforming to the
+// "hw.physical_disk.smart_attribute" semantic conventions. It represents the
+// [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute
+// of the physical disk.
+//
+// [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T.
+func HwPhysicalDiskSmartAttribute(val string) attribute.KeyValue {
+	return HwPhysicalDiskSmartAttributeKey.String(val)
+}
+
+// HwPhysicalDiskType returns an attribute KeyValue conforming to the
+// "hw.physical_disk.type" semantic conventions. It represents the type of the
+// physical disk.
+func HwPhysicalDiskType(val string) attribute.KeyValue {
+	return HwPhysicalDiskTypeKey.String(val)
+}
+
+// HwSensorLocation returns an attribute KeyValue conforming to the
+// "hw.sensor_location" semantic conventions. It represents the location of the
+// sensor.
+func HwSensorLocation(val string) attribute.KeyValue {
+	return HwSensorLocationKey.String(val)
+}
+
+// HwSerialNumber returns an attribute KeyValue conforming to the
+// "hw.serial_number" semantic conventions. It represents the serial number of
+// the hardware component.
+func HwSerialNumber(val string) attribute.KeyValue {
+	return HwSerialNumberKey.String(val)
+}
+
+// HwVendor returns an attribute KeyValue conforming to the "hw.vendor" semantic
+// conventions. It represents the vendor name of the hardware component.
+func HwVendor(val string) attribute.KeyValue {
+	return HwVendorKey.String(val)
+}
+
+// Enum values for hw.battery.state
+var (
+	// Charging
+	// Stability: development
+	HwBatteryStateCharging = HwBatteryStateKey.String("charging")
+	// Discharging
+	// Stability: development
+	HwBatteryStateDischarging = HwBatteryStateKey.String("discharging")
+)
+
+// Enum values for hw.gpu.task
+var (
+	// Decoder
+	// Stability: development
+	HwGpuTaskDecoder = HwGpuTaskKey.String("decoder")
+	// Encoder
+	// Stability: development
+	HwGpuTaskEncoder = HwGpuTaskKey.String("encoder")
+	// General
+	// Stability: development
+	HwGpuTaskGeneral = HwGpuTaskKey.String("general")
+)
+
+// Enum values for hw.limit_type
+var (
+	// Critical
+	// Stability: development
+	HwLimitTypeCritical = HwLimitTypeKey.String("critical")
+	// Degraded
+	// Stability: development
+	HwLimitTypeDegraded = HwLimitTypeKey.String("degraded")
+	// High Critical
+	// Stability: development
+	HwLimitTypeHighCritical = HwLimitTypeKey.String("high.critical")
+	// High Degraded
+	// Stability: development
+	HwLimitTypeHighDegraded = HwLimitTypeKey.String("high.degraded")
+	// Low Critical
+	// Stability: development
+	HwLimitTypeLowCritical = HwLimitTypeKey.String("low.critical")
+	// Low Degraded
+	// Stability: development
+	HwLimitTypeLowDegraded = HwLimitTypeKey.String("low.degraded")
+	// Maximum
+	// Stability: development
+	HwLimitTypeMax = HwLimitTypeKey.String("max")
+	// Throttled
+	// Stability: development
+	HwLimitTypeThrottled = HwLimitTypeKey.String("throttled")
+	// Turbo
+	// Stability: development
+	HwLimitTypeTurbo = HwLimitTypeKey.String("turbo")
+)
+
+// Enum values for hw.logical_disk.state
+var (
+	// Used
+	// Stability: development
+	HwLogicalDiskStateUsed = HwLogicalDiskStateKey.String("used")
+	// Free
+	// Stability: development
+	HwLogicalDiskStateFree = HwLogicalDiskStateKey.String("free")
+)
+
+// Enum values for hw.physical_disk.state
+var (
+	// Remaining
+	// Stability: development
+	HwPhysicalDiskStateRemaining = HwPhysicalDiskStateKey.String("remaining")
+)
+
 // Enum values for hw.state
 var (
-	// Ok
-	// Stability: development
-	HwStateOk = HwStateKey.String("ok")
 	// Degraded
 	// Stability: development
 	HwStateDegraded = HwStateKey.String("degraded")
 	// Failed
 	// Stability: development
 	HwStateFailed = HwStateKey.String("failed")
+	// Needs Cleaning
+	// Stability: development
+	HwStateNeedsCleaning = HwStateKey.String("needs_cleaning")
+	// OK
+	// Stability: development
+	HwStateOk = HwStateKey.String("ok")
+	// Predicted Failure
+	// Stability: development
+	HwStatePredictedFailure = HwStateKey.String("predicted_failure")
+)
+
+// Enum values for hw.tape_drive.operation_type
+var (
+	// Mount
+	// Stability: development
+	HwTapeDriveOperationTypeMount = HwTapeDriveOperationTypeKey.String("mount")
+	// Unmount
+	// Stability: development
+	HwTapeDriveOperationTypeUnmount = HwTapeDriveOperationTypeKey.String("unmount")
+	// Clean
+	// Stability: development
+	HwTapeDriveOperationTypeClean = HwTapeDriveOperationTypeKey.String("clean")
 )
 
 // Enum values for hw.type
@@ -7686,6 +8382,36 @@
 	// Examples: "Evicted", "Error"
 	K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason")
 
+	// K8SContainerStatusReasonKey is the attribute Key conforming to the
+	// "k8s.container.status.reason" semantic conventions. It represents the reason
+	// for the container state. Corresponds to the `reason` field of the:
+	// [K8s ContainerStateWaiting] or [K8s ContainerStateTerminated].
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "ContainerCreating", "CrashLoopBackOff",
+	// "CreateContainerConfigError", "ErrImagePull", "ImagePullBackOff",
+	// "OOMKilled", "Completed", "Error", "ContainerCannotRun"
+	//
+	// [K8s ContainerStateWaiting]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core
+	// [K8s ContainerStateTerminated]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core
+	K8SContainerStatusReasonKey = attribute.Key("k8s.container.status.reason")
+
+	// K8SContainerStatusStateKey is the attribute Key conforming to the
+	// "k8s.container.status.state" semantic conventions. It represents the state of
+	// the container. [K8s ContainerState].
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "terminated", "running", "waiting"
+	//
+	// [K8s ContainerState]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core
+	K8SContainerStatusStateKey = attribute.Key("k8s.container.status.state")
+
 	// K8SCronJobNameKey is the attribute Key conforming to the "k8s.cronjob.name"
 	// semantic conventions. It represents the name of the CronJob.
 	//
@@ -7749,6 +8475,18 @@
 	// Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
 	K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid")
 
+	// K8SHPAMetricTypeKey is the attribute Key conforming to the
+	// "k8s.hpa.metric.type" semantic conventions. It represents the type of metric
+	// source for the horizontal pod autoscaler.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Resource", "ContainerResource"
+	// Note: This attribute reflects the `type` field of spec.metrics[] in the HPA.
+	K8SHPAMetricTypeKey = attribute.Key("k8s.hpa.metric.type")
+
 	// K8SHPANameKey is the attribute Key conforming to the "k8s.hpa.name" semantic
 	// conventions. It represents the name of the horizontal pod autoscaler.
 	//
@@ -7759,6 +8497,43 @@
 	// Examples: "opentelemetry"
 	K8SHPANameKey = attribute.Key("k8s.hpa.name")
 
+	// K8SHPAScaletargetrefAPIVersionKey is the attribute Key conforming to the
+	// "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the
+	// API version of the target resource to scale for the HorizontalPodAutoscaler.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "apps/v1", "autoscaling/v2"
+	// Note: This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA
+	// spec.
+	K8SHPAScaletargetrefAPIVersionKey = attribute.Key("k8s.hpa.scaletargetref.api_version")
+
+	// K8SHPAScaletargetrefKindKey is the attribute Key conforming to the
+	// "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of
+	// the target resource to scale for the HorizontalPodAutoscaler.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Deployment", "StatefulSet"
+	// Note: This maps to the `kind` field in the `scaleTargetRef` of the HPA spec.
+	K8SHPAScaletargetrefKindKey = attribute.Key("k8s.hpa.scaletargetref.kind")
+
+	// K8SHPAScaletargetrefNameKey is the attribute Key conforming to the
+	// "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of
+	// the target resource to scale for the HorizontalPodAutoscaler.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "my-deployment", "my-statefulset"
+	// Note: This maps to the `name` field in the `scaleTargetRef` of the HPA spec.
+	K8SHPAScaletargetrefNameKey = attribute.Key("k8s.hpa.scaletargetref.name")
+
 	// K8SHPAUIDKey is the attribute Key conforming to the "k8s.hpa.uid" semantic
 	// conventions. It represents the UID of the horizontal pod autoscaler.
 	//
@@ -7769,6 +8544,17 @@
 	// Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
 	K8SHPAUIDKey = attribute.Key("k8s.hpa.uid")
 
+	// K8SHugepageSizeKey is the attribute Key conforming to the "k8s.hugepage.size"
+	// semantic conventions. It represents the size (identifier) of the K8s huge
+	// page.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "2Mi"
+	K8SHugepageSizeKey = attribute.Key("k8s.hugepage.size")
+
 	// K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" semantic
 	// conventions. It represents the name of the Job.
 	//
@@ -7815,6 +8601,46 @@
 	// [K8s NamespaceStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core
 	K8SNamespacePhaseKey = attribute.Key("k8s.namespace.phase")
 
+	// K8SNodeConditionStatusKey is the attribute Key conforming to the
+	// "k8s.node.condition.status" semantic conventions. It represents the status of
+	// the condition, one of True, False, Unknown.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "true", "false", "unknown"
+	// Note: This attribute aligns with the `status` field of the
+	// [NodeCondition]
+	//
+	// [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core
+	K8SNodeConditionStatusKey = attribute.Key("k8s.node.condition.status")
+
+	// K8SNodeConditionTypeKey is the attribute Key conforming to the
+	// "k8s.node.condition.type" semantic conventions. It represents the condition
+	// type of a K8s Node.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "Ready", "DiskPressure"
+	// Note: K8s Node conditions as described
+	// by [K8s documentation].
+	//
+	// This attribute aligns with the `type` field of the
+	// [NodeCondition]
+	//
+	// The set of possible values is not limited to those listed here. Managed
+	// Kubernetes environments,
+	// or custom controllers MAY introduce additional node condition types.
+	// When this occurs, the exact value as reported by the Kubernetes API SHOULD be
+	// used.
+	//
+	// [K8s documentation]: https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition
+	// [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core
+	K8SNodeConditionTypeKey = attribute.Key("k8s.node.condition.type")
+
 	// K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name"
 	// semantic conventions. It represents the name of the Node.
 	//
@@ -7910,6 +8736,25 @@
 	// Examples: "opentelemetry"
 	K8SResourceQuotaNameKey = attribute.Key("k8s.resourcequota.name")
 
+	// K8SResourceQuotaResourceNameKey is the attribute Key conforming to the
+	// "k8s.resourcequota.resource_name" semantic conventions. It represents the
+	// name of the K8s resource a resource quota defines.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "count/replicationcontrollers"
+	// Note: The value for this attribute can be either the full
+	// `count/<resource>[.<group>]` string (e.g., count/deployments.apps,
+	// count/pods), or, for certain core Kubernetes resources, just the resource
+	// name (e.g., pods, services, configmaps). Both forms are supported by
+	// Kubernetes for object count quotas. See
+	// [Kubernetes Resource Quotas documentation] for more details.
+	//
+	// [Kubernetes Resource Quotas documentation]: https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota
+	K8SResourceQuotaResourceNameKey = attribute.Key("k8s.resourcequota.resource_name")
+
 	// K8SResourceQuotaUIDKey is the attribute Key conforming to the
 	// "k8s.resourcequota.uid" semantic conventions. It represents the UID of the
 	// resource quota.
@@ -7943,6 +8788,19 @@
 	// Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff"
 	K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid")
 
+	// K8SStorageclassNameKey is the attribute Key conforming to the
+	// "k8s.storageclass.name" semantic conventions. It represents the name of K8s
+	// [StorageClass] object.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "gold.storageclass.storage.k8s.io"
+	//
+	// [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io
+	K8SStorageclassNameKey = attribute.Key("k8s.storageclass.name")
+
 	// K8SVolumeNameKey is the attribute Key conforming to the "k8s.volume.name"
 	// semantic conventions. It represents the name of the K8s volume.
 	//
@@ -8001,6 +8859,22 @@
 	return K8SContainerStatusLastTerminatedReasonKey.String(val)
 }
 
+// K8SCronJobAnnotation returns an attribute KeyValue conforming to the
+// "k8s.cronjob.annotation" semantic conventions. It represents the cronjob
+// annotation placed on the CronJob, the `<key>` being the annotation name, the
+// value being the annotation value.
+func K8SCronJobAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.cronjob.annotation."+key, val)
+}
+
+// K8SCronJobLabel returns an attribute KeyValue conforming to the
+// "k8s.cronjob.label" semantic conventions. It represents the label placed on
+// the CronJob, the `<key>` being the label name, the value being the label
+// value.
+func K8SCronJobLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.cronjob.label."+key, val)
+}
+
 // K8SCronJobName returns an attribute KeyValue conforming to the
 // "k8s.cronjob.name" semantic conventions. It represents the name of the
 // CronJob.
@@ -8014,6 +8888,22 @@
 	return K8SCronJobUIDKey.String(val)
 }
 
+// K8SDaemonSetAnnotation returns an attribute KeyValue conforming to the
+// "k8s.daemonset.annotation" semantic conventions. It represents the annotation
+// placed on the DaemonSet, the `<key>` being the annotation name, the value
+// being the annotation value, even if the value is empty.
+func K8SDaemonSetAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.daemonset.annotation."+key, val)
+}
+
+// K8SDaemonSetLabel returns an attribute KeyValue conforming to the
+// "k8s.daemonset.label" semantic conventions. It represents the label placed on
+// the DaemonSet, the `<key>` being the label name, the value being the label
+// value, even if the value is empty.
+func K8SDaemonSetLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.daemonset.label."+key, val)
+}
+
 // K8SDaemonSetName returns an attribute KeyValue conforming to the
 // "k8s.daemonset.name" semantic conventions. It represents the name of the
 // DaemonSet.
@@ -8028,6 +8918,22 @@
 	return K8SDaemonSetUIDKey.String(val)
 }
 
+// K8SDeploymentAnnotation returns an attribute KeyValue conforming to the
+// "k8s.deployment.annotation" semantic conventions. It represents the annotation
+// placed on the Deployment, the `<key>` being the annotation name, the value
+// being the annotation value, even if the value is empty.
+func K8SDeploymentAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.deployment.annotation."+key, val)
+}
+
+// K8SDeploymentLabel returns an attribute KeyValue conforming to the
+// "k8s.deployment.label" semantic conventions. It represents the label placed on
+// the Deployment, the `<key>` being the label name, the value being the label
+// value, even if the value is empty.
+func K8SDeploymentLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.deployment.label."+key, val)
+}
+
 // K8SDeploymentName returns an attribute KeyValue conforming to the
 // "k8s.deployment.name" semantic conventions. It represents the name of the
 // Deployment.
@@ -8042,18 +8948,69 @@
 	return K8SDeploymentUIDKey.String(val)
 }
 
+// K8SHPAMetricType returns an attribute KeyValue conforming to the
+// "k8s.hpa.metric.type" semantic conventions. It represents the type of metric
+// source for the horizontal pod autoscaler.
+func K8SHPAMetricType(val string) attribute.KeyValue {
+	return K8SHPAMetricTypeKey.String(val)
+}
+
 // K8SHPAName returns an attribute KeyValue conforming to the "k8s.hpa.name"
 // semantic conventions. It represents the name of the horizontal pod autoscaler.
 func K8SHPAName(val string) attribute.KeyValue {
 	return K8SHPANameKey.String(val)
 }
 
+// K8SHPAScaletargetrefAPIVersion returns an attribute KeyValue conforming to the
+// "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the
+// API version of the target resource to scale for the HorizontalPodAutoscaler.
+func K8SHPAScaletargetrefAPIVersion(val string) attribute.KeyValue {
+	return K8SHPAScaletargetrefAPIVersionKey.String(val)
+}
+
+// K8SHPAScaletargetrefKind returns an attribute KeyValue conforming to the
+// "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of
+// the target resource to scale for the HorizontalPodAutoscaler.
+func K8SHPAScaletargetrefKind(val string) attribute.KeyValue {
+	return K8SHPAScaletargetrefKindKey.String(val)
+}
+
+// K8SHPAScaletargetrefName returns an attribute KeyValue conforming to the
+// "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of
+// the target resource to scale for the HorizontalPodAutoscaler.
+func K8SHPAScaletargetrefName(val string) attribute.KeyValue {
+	return K8SHPAScaletargetrefNameKey.String(val)
+}
+
 // K8SHPAUID returns an attribute KeyValue conforming to the "k8s.hpa.uid"
 // semantic conventions. It represents the UID of the horizontal pod autoscaler.
 func K8SHPAUID(val string) attribute.KeyValue {
 	return K8SHPAUIDKey.String(val)
 }
 
+// K8SHugepageSize returns an attribute KeyValue conforming to the
+// "k8s.hugepage.size" semantic conventions. It represents the size (identifier)
+// of the K8s huge page.
+func K8SHugepageSize(val string) attribute.KeyValue {
+	return K8SHugepageSizeKey.String(val)
+}
+
+// K8SJobAnnotation returns an attribute KeyValue conforming to the
+// "k8s.job.annotation" semantic conventions. It represents the annotation placed
+// on the Job, the `<key>` being the annotation name, the value being the
+// annotation value, even if the value is empty.
+func K8SJobAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.job.annotation."+key, val)
+}
+
+// K8SJobLabel returns an attribute KeyValue conforming to the "k8s.job.label"
+// semantic conventions. It represents the label placed on the Job, the `<key>`
+// being the label name, the value being the label value, even if the value is
+// empty.
+func K8SJobLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.job.label."+key, val)
+}
+
 // K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name"
 // semantic conventions. It represents the name of the Job.
 func K8SJobName(val string) attribute.KeyValue {
@@ -8066,6 +9023,22 @@
 	return K8SJobUIDKey.String(val)
 }
 
+// K8SNamespaceAnnotation returns an attribute KeyValue conforming to the
+// "k8s.namespace.annotation" semantic conventions. It represents the annotation
+// placed on the Namespace, the `<key>` being the annotation name, the value
+// being the annotation value, even if the value is empty.
+func K8SNamespaceAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.namespace.annotation."+key, val)
+}
+
+// K8SNamespaceLabel returns an attribute KeyValue conforming to the
+// "k8s.namespace.label" semantic conventions. It represents the label placed on
+// the Namespace, the `<key>` being the label name, the value being the label
+// value, even if the value is empty.
+func K8SNamespaceLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.namespace.label."+key, val)
+}
+
 // K8SNamespaceName returns an attribute KeyValue conforming to the
 // "k8s.namespace.name" semantic conventions. It represents the name of the
 // namespace that the pod is running in.
@@ -8073,6 +9046,22 @@
 	return K8SNamespaceNameKey.String(val)
 }
 
+// K8SNodeAnnotation returns an attribute KeyValue conforming to the
+// "k8s.node.annotation" semantic conventions. It represents the annotation
+// placed on the Node, the `<key>` being the annotation name, the value being the
+// annotation value, even if the value is empty.
+func K8SNodeAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.node.annotation."+key, val)
+}
+
+// K8SNodeLabel returns an attribute KeyValue conforming to the "k8s.node.label"
+// semantic conventions. It represents the label placed on the Node, the `<key>`
+// being the label name, the value being the label value, even if the value is
+// empty.
+func K8SNodeLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.node.label."+key, val)
+}
+
 // K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name"
 // semantic conventions. It represents the name of the Node.
 func K8SNodeName(val string) attribute.KeyValue {
@@ -8085,6 +9074,21 @@
 	return K8SNodeUIDKey.String(val)
 }
 
+// K8SPodAnnotation returns an attribute KeyValue conforming to the
+// "k8s.pod.annotation" semantic conventions. It represents the annotation placed
+// on the Pod, the `<key>` being the annotation name, the value being the
+// annotation value.
+func K8SPodAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.pod.annotation."+key, val)
+}
+
+// K8SPodLabel returns an attribute KeyValue conforming to the "k8s.pod.label"
+// semantic conventions. It represents the label placed on the Pod, the `<key>`
+// being the label name, the value being the label value.
+func K8SPodLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.pod.label."+key, val)
+}
+
 // K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name"
 // semantic conventions. It represents the name of the Pod.
 func K8SPodName(val string) attribute.KeyValue {
@@ -8097,6 +9101,22 @@
 	return K8SPodUIDKey.String(val)
 }
 
+// K8SReplicaSetAnnotation returns an attribute KeyValue conforming to the
+// "k8s.replicaset.annotation" semantic conventions. It represents the annotation
+// placed on the ReplicaSet, the `<key>` being the annotation name, the value
+// being the annotation value, even if the value is empty.
+func K8SReplicaSetAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.replicaset.annotation."+key, val)
+}
+
+// K8SReplicaSetLabel returns an attribute KeyValue conforming to the
+// "k8s.replicaset.label" semantic conventions. It represents the label placed on
+// the ReplicaSet, the `<key>` being the label name, the value being the label
+// value, even if the value is empty.
+func K8SReplicaSetLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.replicaset.label."+key, val)
+}
+
 // K8SReplicaSetName returns an attribute KeyValue conforming to the
 // "k8s.replicaset.name" semantic conventions. It represents the name of the
 // ReplicaSet.
@@ -8132,6 +9152,13 @@
 	return K8SResourceQuotaNameKey.String(val)
 }
 
+// K8SResourceQuotaResourceName returns an attribute KeyValue conforming to the
+// "k8s.resourcequota.resource_name" semantic conventions. It represents the name
+// of the K8s resource a resource quota defines.
+func K8SResourceQuotaResourceName(val string) attribute.KeyValue {
+	return K8SResourceQuotaResourceNameKey.String(val)
+}
+
 // K8SResourceQuotaUID returns an attribute KeyValue conforming to the
 // "k8s.resourcequota.uid" semantic conventions. It represents the UID of the
 // resource quota.
@@ -8139,6 +9166,22 @@
 	return K8SResourceQuotaUIDKey.String(val)
 }
 
+// K8SStatefulSetAnnotation returns an attribute KeyValue conforming to the
+// "k8s.statefulset.annotation" semantic conventions. It represents the
+// annotation placed on the StatefulSet, the `<key>` being the annotation name,
+// the value being the annotation value, even if the value is empty.
+func K8SStatefulSetAnnotation(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.statefulset.annotation."+key, val)
+}
+
+// K8SStatefulSetLabel returns an attribute KeyValue conforming to the
+// "k8s.statefulset.label" semantic conventions. It represents the label placed
+// on the StatefulSet, the `<key>` being the label name, the value being the
+// label value, even if the value is empty.
+func K8SStatefulSetLabel(key string, val string) attribute.KeyValue {
+	return attribute.String("k8s.statefulset.label."+key, val)
+}
+
 // K8SStatefulSetName returns an attribute KeyValue conforming to the
 // "k8s.statefulset.name" semantic conventions. It represents the name of the
 // StatefulSet.
@@ -8153,6 +9196,15 @@
 	return K8SStatefulSetUIDKey.String(val)
 }
 
+// K8SStorageclassName returns an attribute KeyValue conforming to the
+// "k8s.storageclass.name" semantic conventions. It represents the name of K8s
+// [StorageClass] object.
+//
+// [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io
+func K8SStorageclassName(val string) attribute.KeyValue {
+	return K8SStorageclassNameKey.String(val)
+}
+
 // K8SVolumeName returns an attribute KeyValue conforming to the
 // "k8s.volume.name" semantic conventions. It represents the name of the K8s
 // volume.
@@ -8160,6 +9212,50 @@
 	return K8SVolumeNameKey.String(val)
 }
 
+// Enum values for k8s.container.status.reason
+var (
+	// The container is being created.
+	// Stability: development
+	K8SContainerStatusReasonContainerCreating = K8SContainerStatusReasonKey.String("ContainerCreating")
+	// The container is in a crash loop back off state.
+	// Stability: development
+	K8SContainerStatusReasonCrashLoopBackOff = K8SContainerStatusReasonKey.String("CrashLoopBackOff")
+	// There was an error creating the container configuration.
+	// Stability: development
+	K8SContainerStatusReasonCreateContainerConfigError = K8SContainerStatusReasonKey.String("CreateContainerConfigError")
+	// There was an error pulling the container image.
+	// Stability: development
+	K8SContainerStatusReasonErrImagePull = K8SContainerStatusReasonKey.String("ErrImagePull")
+	// The container image pull is in back off state.
+	// Stability: development
+	K8SContainerStatusReasonImagePullBackOff = K8SContainerStatusReasonKey.String("ImagePullBackOff")
+	// The container was killed due to out of memory.
+	// Stability: development
+	K8SContainerStatusReasonOomKilled = K8SContainerStatusReasonKey.String("OOMKilled")
+	// The container has completed execution.
+	// Stability: development
+	K8SContainerStatusReasonCompleted = K8SContainerStatusReasonKey.String("Completed")
+	// There was an error with the container.
+	// Stability: development
+	K8SContainerStatusReasonError = K8SContainerStatusReasonKey.String("Error")
+	// The container cannot run.
+	// Stability: development
+	K8SContainerStatusReasonContainerCannotRun = K8SContainerStatusReasonKey.String("ContainerCannotRun")
+)
+
+// Enum values for k8s.container.status.state
+var (
+	// The container has terminated.
+	// Stability: development
+	K8SContainerStatusStateTerminated = K8SContainerStatusStateKey.String("terminated")
+	// The container is running.
+	// Stability: development
+	K8SContainerStatusStateRunning = K8SContainerStatusStateKey.String("running")
+	// The container is waiting.
+	// Stability: development
+	K8SContainerStatusStateWaiting = K8SContainerStatusStateKey.String("waiting")
+)
+
 // Enum values for k8s.namespace.phase
 var (
 	// Active namespace phase as described by [K8s API]
@@ -8174,6 +9270,39 @@
 	K8SNamespacePhaseTerminating = K8SNamespacePhaseKey.String("terminating")
 )
 
+// Enum values for k8s.node.condition.status
+var (
+	// condition_true
+	// Stability: development
+	K8SNodeConditionStatusConditionTrue = K8SNodeConditionStatusKey.String("true")
+	// condition_false
+	// Stability: development
+	K8SNodeConditionStatusConditionFalse = K8SNodeConditionStatusKey.String("false")
+	// condition_unknown
+	// Stability: development
+	K8SNodeConditionStatusConditionUnknown = K8SNodeConditionStatusKey.String("unknown")
+)
+
+// Enum values for k8s.node.condition.type
+var (
+	// The node is healthy and ready to accept pods
+	// Stability: development
+	K8SNodeConditionTypeReady = K8SNodeConditionTypeKey.String("Ready")
+	// Pressure exists on the disk size—that is, if the disk capacity is low
+	// Stability: development
+	K8SNodeConditionTypeDiskPressure = K8SNodeConditionTypeKey.String("DiskPressure")
+	// Pressure exists on the node memory—that is, if the node memory is low
+	// Stability: development
+	K8SNodeConditionTypeMemoryPressure = K8SNodeConditionTypeKey.String("MemoryPressure")
+	// Pressure exists on the processes—that is, if there are too many processes
+	// on the node
+	// Stability: development
+	K8SNodeConditionTypePIDPressure = K8SNodeConditionTypeKey.String("PIDPressure")
+	// The network for the node is not correctly configured
+	// Stability: development
+	K8SNodeConditionTypeNetworkUnavailable = K8SNodeConditionTypeKey.String("NetworkUnavailable")
+)
+
 // Enum values for k8s.volume.type
 var (
 	// A [persistentVolumeClaim] volume
@@ -8371,6 +9500,27 @@
 	LogIostreamStderr = LogIostreamKey.String("stderr")
 )
 
+// Namespace: mainframe
+const (
+	// MainframeLparNameKey is the attribute Key conforming to the
+	// "mainframe.lpar.name" semantic conventions. It represents the name of the
+	// logical partition that hosts a systems with a mainframe operating system.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "LPAR01"
+	MainframeLparNameKey = attribute.Key("mainframe.lpar.name")
+)
+
+// MainframeLparName returns an attribute KeyValue conforming to the
+// "mainframe.lpar.name" semantic conventions. It represents the name of the
+// logical partition that hosts a systems with a mainframe operating system.
+func MainframeLparName(val string) attribute.KeyValue {
+	return MainframeLparNameKey.String(val)
+}
+
 // Namespace: messaging
 const (
 	// MessagingBatchMessageCountKey is the attribute Key conforming to the
@@ -9084,10 +10234,6 @@
 	//
 	// Stability: development
 	MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle")
-	// Deprecated: Replaced by `process`.
-	MessagingOperationTypeDeliver = MessagingOperationTypeKey.String("deliver")
-	// Deprecated: Replaced by `send`.
-	MessagingOperationTypePublish = MessagingOperationTypeKey.String("publish")
 )
 
 // Enum values for messaging.rocketmq.consumption_model
@@ -9137,6 +10283,9 @@
 	// Apache ActiveMQ
 	// Stability: development
 	MessagingSystemActiveMQ = MessagingSystemKey.String("activemq")
+	// Amazon Simple Notification Service (SNS)
+	// Stability: development
+	MessagingSystemAWSSNS = MessagingSystemKey.String("aws.sns")
 	// Amazon Simple Queue Service (SQS)
 	// Stability: development
 	MessagingSystemAWSSQS = MessagingSystemKey.String("aws_sqs")
@@ -9654,6 +10803,66 @@
 	return OCIManifestDigestKey.String(val)
 }
 
+// Namespace: openai
+const (
+	// OpenAIRequestServiceTierKey is the attribute Key conforming to the
+	// "openai.request.service_tier" semantic conventions. It represents the service
+	// tier requested. May be a specific tier, default, or auto.
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "auto", "default"
+	OpenAIRequestServiceTierKey = attribute.Key("openai.request.service_tier")
+
+	// OpenAIResponseServiceTierKey is the attribute Key conforming to the
+	// "openai.response.service_tier" semantic conventions. It represents the
+	// service tier used for the response.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "scale", "default"
+	OpenAIResponseServiceTierKey = attribute.Key("openai.response.service_tier")
+
+	// OpenAIResponseSystemFingerprintKey is the attribute Key conforming to the
+	// "openai.response.system_fingerprint" semantic conventions. It represents a
+	// fingerprint to track any eventual change in the Generative AI environment.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "fp_44709d6fcb"
+	OpenAIResponseSystemFingerprintKey = attribute.Key("openai.response.system_fingerprint")
+)
+
+// OpenAIResponseServiceTier returns an attribute KeyValue conforming to the
+// "openai.response.service_tier" semantic conventions. It represents the service
+// tier used for the response.
+func OpenAIResponseServiceTier(val string) attribute.KeyValue {
+	return OpenAIResponseServiceTierKey.String(val)
+}
+
+// OpenAIResponseSystemFingerprint returns an attribute KeyValue conforming to
+// the "openai.response.system_fingerprint" semantic conventions. It represents a
+// fingerprint to track any eventual change in the Generative AI environment.
+func OpenAIResponseSystemFingerprint(val string) attribute.KeyValue {
+	return OpenAIResponseSystemFingerprintKey.String(val)
+}
+
+// Enum values for openai.request.service_tier
+var (
+	// The system will utilize scale tier credits until they are exhausted.
+	// Stability: development
+	OpenAIRequestServiceTierAuto = OpenAIRequestServiceTierKey.String("auto")
+	// The system will utilize the default scale tier.
+	// Stability: development
+	OpenAIRequestServiceTierDefault = OpenAIRequestServiceTierKey.String("default")
+)
+
 // Namespace: opentracing
 const (
 	// OpenTracingRefTypeKey is the attribute Key conforming to the
@@ -9802,7 +11011,7 @@
 	OSTypeSolaris = OSTypeKey.String("solaris")
 	// IBM z/OS
 	// Stability: development
-	OSTypeZOS = OSTypeKey.String("z_os")
+	OSTypeZOS = OSTypeKey.String("zos")
 )
 
 // Namespace: otel
@@ -9866,6 +11075,17 @@
 	// Examples: "io.opentelemetry.contrib.mongodb"
 	OTelScopeNameKey = attribute.Key("otel.scope.name")
 
+	// OTelScopeSchemaURLKey is the attribute Key conforming to the
+	// "otel.scope.schema_url" semantic conventions. It represents the schema URL of
+	// the instrumentation scope.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "https://opentelemetry.io/schemas/1.31.0"
+	OTelScopeSchemaURLKey = attribute.Key("otel.scope.schema_url")
+
 	// OTelScopeVersionKey is the attribute Key conforming to the
 	// "otel.scope.version" semantic conventions. It represents the version of the
 	// instrumentation scope - (`InstrumentationScope.Version` in OTLP).
@@ -9877,6 +11097,20 @@
 	// Examples: "1.0.0"
 	OTelScopeVersionKey = attribute.Key("otel.scope.version")
 
+	// OTelSpanParentOriginKey is the attribute Key conforming to the
+	// "otel.span.parent.origin" semantic conventions. It represents the determines
+	// whether the span has a parent span, and if so,
+	// [whether it is a remote parent].
+	//
+	// Type: Enum
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples:
+	//
+	// [whether it is a remote parent]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+	OTelSpanParentOriginKey = attribute.Key("otel.span.parent.origin")
+
 	// OTelSpanSamplingResultKey is the attribute Key conforming to the
 	// "otel.span.sampling_result" semantic conventions. It represents the result
 	// value of the sampler for this span.
@@ -9926,6 +11160,13 @@
 	return OTelScopeNameKey.String(val)
 }
 
+// OTelScopeSchemaURL returns an attribute KeyValue conforming to the
+// "otel.scope.schema_url" semantic conventions. It represents the schema URL of
+// the instrumentation scope.
+func OTelScopeSchemaURL(val string) attribute.KeyValue {
+	return OTelScopeSchemaURLKey.String(val)
+}
+
 // OTelScopeVersion returns an attribute KeyValue conforming to the
 // "otel.scope.version" semantic conventions. It represents the version of the
 // instrumentation scope - (`InstrumentationScope.Version` in OTLP).
@@ -9970,6 +11211,10 @@
 	//
 	// Stability: development
 	OTelComponentTypeOtlpHTTPJSONSpanExporter = OTelComponentTypeKey.String("otlp_http_json_span_exporter")
+	// Zipkin span exporter over HTTP
+	//
+	// Stability: development
+	OTelComponentTypeZipkinHTTPSpanExporter = OTelComponentTypeKey.String("zipkin_http_span_exporter")
 	// OTLP log record exporter over gRPC with protobuf serialization
 	//
 	// Stability: development
@@ -9998,6 +11243,27 @@
 	//
 	// Stability: development
 	OTelComponentTypeOtlpHTTPJSONMetricExporter = OTelComponentTypeKey.String("otlp_http_json_metric_exporter")
+	// Prometheus metric exporter over HTTP with the default text-based format
+	//
+	// Stability: development
+	OTelComponentTypePrometheusHTTPTextMetricExporter = OTelComponentTypeKey.String("prometheus_http_text_metric_exporter")
+)
+
+// Enum values for otel.span.parent.origin
+var (
+	// The span does not have a parent, it is a root span
+	// Stability: development
+	OTelSpanParentOriginNone = OTelSpanParentOriginKey.String("none")
+	// The span has a parent and the parent's span context [isRemote()] is false
+	// Stability: development
+	//
+	// [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+	OTelSpanParentOriginLocal = OTelSpanParentOriginKey.String("local")
+	// The span has a parent and the parent's span context [isRemote()] is true
+	// Stability: development
+	//
+	// [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+	OTelSpanParentOriginRemote = OTelSpanParentOriginKey.String("remote")
 )
 
 // Enum values for otel.span.sampling_result
@@ -10497,6 +11763,14 @@
 	return ProcessCreationTimeKey.String(val)
 }
 
+// ProcessEnvironmentVariable returns an attribute KeyValue conforming to the
+// "process.environment_variable" semantic conventions. It represents the process
+// environment variables, `<key>` being the environment variable name, the value
+// being the environment variable value.
+func ProcessEnvironmentVariable(key string, val string) attribute.KeyValue {
+	return attribute.String("process.environment_variable."+key, val)
+}
+
 // ProcessExecutableBuildIDGNU returns an attribute KeyValue conforming to the
 // "process.executable.build_id.gnu" semantic conventions. It represents the GNU
 // build ID as found in the `.note.gnu.build-id` ELF section (hex string).
@@ -10965,6 +12239,38 @@
 	RPCSystemKey = attribute.Key("rpc.system")
 )
 
+// RPCConnectRPCRequestMetadata returns an attribute KeyValue conforming to the
+// "rpc.connect_rpc.request.metadata" semantic conventions. It represents the
+// connect request metadata, `<key>` being the normalized Connect Metadata key
+// (lowercase), the value being the metadata values.
+func RPCConnectRPCRequestMetadata(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("rpc.connect_rpc.request.metadata."+key, val)
+}
+
+// RPCConnectRPCResponseMetadata returns an attribute KeyValue conforming to the
+// "rpc.connect_rpc.response.metadata" semantic conventions. It represents the
+// connect response metadata, `<key>` being the normalized Connect Metadata key
+// (lowercase), the value being the metadata values.
+func RPCConnectRPCResponseMetadata(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("rpc.connect_rpc.response.metadata."+key, val)
+}
+
+// RPCGRPCRequestMetadata returns an attribute KeyValue conforming to the
+// "rpc.grpc.request.metadata" semantic conventions. It represents the gRPC
+// request metadata, `<key>` being the normalized gRPC Metadata key (lowercase),
+// the value being the metadata values.
+func RPCGRPCRequestMetadata(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("rpc.grpc.request.metadata."+key, val)
+}
+
+// RPCGRPCResponseMetadata returns an attribute KeyValue conforming to the
+// "rpc.grpc.response.metadata" semantic conventions. It represents the gRPC
+// response metadata, `<key>` being the normalized gRPC Metadata key (lowercase),
+// the value being the metadata values.
+func RPCGRPCResponseMetadata(key string, val ...string) attribute.KeyValue {
+	return attribute.StringSlice("rpc.grpc.response.metadata."+key, val)
+}
+
 // RPCJSONRPCErrorCode returns an attribute KeyValue conforming to the
 // "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code`
 // property of response if it is an error response.
@@ -11820,15 +13126,12 @@
 
 // Enum values for system.memory.state
 var (
-	// used
+	// Actual used virtual memory in bytes.
 	// Stability: development
 	SystemMemoryStateUsed = SystemMemoryStateKey.String("used")
 	// free
 	// Stability: development
 	SystemMemoryStateFree = SystemMemoryStateKey.String("free")
-	// Deprecated: Removed, report shared memory usage with
-	// `metric.system.memory.shared` metric.
-	SystemMemoryStateShared = SystemMemoryStateKey.String("shared")
 	// buffers
 	// Stability: development
 	SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers")
@@ -13727,8 +15030,6 @@
 	//
 	// [GitLab]: https://gitlab.com
 	VCSProviderNameGitlab = VCSProviderNameKey.String("gitlab")
-	// Deprecated: Replaced by `gitea`.
-	VCSProviderNameGittea = VCSProviderNameKey.String("gittea")
 	// [Gitea]
 	// Stability: development
 	//
@@ -13848,4 +15149,45 @@
 // engine.
 func WebEngineVersion(val string) attribute.KeyValue {
 	return WebEngineVersionKey.String(val)
+}
+
+// Namespace: zos
+const (
+	// ZOSSmfIDKey is the attribute Key conforming to the "zos.smf.id" semantic
+	// conventions. It represents the System Management Facility (SMF) Identifier
+	// uniquely identified a z/OS system within a SYSPLEX or mainframe environment
+	// and is used for system and performance analysis.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "SYS1"
+	ZOSSmfIDKey = attribute.Key("zos.smf.id")
+
+	// ZOSSysplexNameKey is the attribute Key conforming to the "zos.sysplex.name"
+	// semantic conventions. It represents the name of the SYSPLEX to which the z/OS
+	// system belongs too.
+	//
+	// Type: string
+	// RequirementLevel: Recommended
+	// Stability: Development
+	//
+	// Examples: "SYSPLEX1"
+	ZOSSysplexNameKey = attribute.Key("zos.sysplex.name")
+)
+
+// ZOSSmfID returns an attribute KeyValue conforming to the "zos.smf.id" semantic
+// conventions. It represents the System Management Facility (SMF) Identifier
+// uniquely identified a z/OS system within a SYSPLEX or mainframe environment
+// and is used for system and performance analysis.
+func ZOSSmfID(val string) attribute.KeyValue {
+	return ZOSSmfIDKey.String(val)
+}
+
+// ZOSSysplexName returns an attribute KeyValue conforming to the
+// "zos.sysplex.name" semantic conventions. It represents the name of the SYSPLEX
+// to which the z/OS system belongs too.
+func ZOSSysplexName(val string) attribute.KeyValue {
+	return ZOSSysplexNameKey.String(val)
 }
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go
similarity index 96%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go
index 2c5c7eb..1110103 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/doc.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go
@@ -4,6 +4,6 @@
 // Package semconv implements OpenTelemetry semantic conventions.
 //
 // OpenTelemetry semantic conventions are agreed standardized naming
-// patterns for OpenTelemetry things. This package represents the v1.34.0
+// patterns for OpenTelemetry things. This package represents the v1.37.0
 // version of the OpenTelemetry semantic conventions.
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0"
+package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go
new file mode 100644
index 0000000..666bded
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go
@@ -0,0 +1,31 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
+
+import (
+	"fmt"
+	"reflect"
+
+	"go.opentelemetry.io/otel/attribute"
+)
+
+// ErrorType returns an [attribute.KeyValue] identifying the error type of err.
+func ErrorType(err error) attribute.KeyValue {
+	if err == nil {
+		return ErrorTypeOther
+	}
+	t := reflect.TypeOf(err)
+	var value string
+	if t.PkgPath() == "" && t.Name() == "" {
+		// Likely a builtin type.
+		value = t.String()
+	} else {
+		value = fmt.Sprintf("%s.%s", t.PkgPath(), t.Name())
+	}
+
+	if value == "" {
+		return ErrorTypeOther
+	}
+	return ErrorTypeKey.String(value)
+}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go
similarity index 97%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go
index 88a998f..e67469a 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/exception.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go
@@ -1,7 +1,7 @@
 // Copyright The OpenTelemetry Authors
 // SPDX-License-Identifier: Apache-2.0
 
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0"
+package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
 
 const (
 	// ExceptionEventName is the name of the Span event representing an exception.
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv/metric.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv/metric.go
new file mode 100644
index 0000000..a78eafd
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/otelconv/metric.go
@@ -0,0 +1,2126 @@
+// Code generated from semantic convention specification. DO NOT EDIT.
+
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// Package httpconv provides types and functionality for OpenTelemetry semantic
+// conventions in the "otel" namespace.
+package otelconv
+
+import (
+	"context"
+	"sync"
+
+	"go.opentelemetry.io/otel/attribute"
+	"go.opentelemetry.io/otel/metric"
+	"go.opentelemetry.io/otel/metric/noop"
+)
+
+var (
+	addOptPool = &sync.Pool{New: func() any { return &[]metric.AddOption{} }}
+	recOptPool = &sync.Pool{New: func() any { return &[]metric.RecordOption{} }}
+)
+
+// ErrorTypeAttr is an attribute conforming to the error.type semantic
+// conventions. It represents the describes a class of error the operation ended
+// with.
+type ErrorTypeAttr string
+
+var (
+	// ErrorTypeOther is a fallback error value to be used when the instrumentation
+	// doesn't define a custom value.
+	ErrorTypeOther ErrorTypeAttr = "_OTHER"
+)
+
+// ComponentTypeAttr is an attribute conforming to the otel.component.type
+// semantic conventions. It represents a name identifying the type of the
+// OpenTelemetry component.
+type ComponentTypeAttr string
+
+var (
+	// ComponentTypeBatchingSpanProcessor is the builtin SDK batching span
+	// processor.
+	ComponentTypeBatchingSpanProcessor ComponentTypeAttr = "batching_span_processor"
+	// ComponentTypeSimpleSpanProcessor is the builtin SDK simple span processor.
+	ComponentTypeSimpleSpanProcessor ComponentTypeAttr = "simple_span_processor"
+	// ComponentTypeBatchingLogProcessor is the builtin SDK batching log record
+	// processor.
+	ComponentTypeBatchingLogProcessor ComponentTypeAttr = "batching_log_processor"
+	// ComponentTypeSimpleLogProcessor is the builtin SDK simple log record
+	// processor.
+	ComponentTypeSimpleLogProcessor ComponentTypeAttr = "simple_log_processor"
+	// ComponentTypeOtlpGRPCSpanExporter is the OTLP span exporter over gRPC with
+	// protobuf serialization.
+	ComponentTypeOtlpGRPCSpanExporter ComponentTypeAttr = "otlp_grpc_span_exporter"
+	// ComponentTypeOtlpHTTPSpanExporter is the OTLP span exporter over HTTP with
+	// protobuf serialization.
+	ComponentTypeOtlpHTTPSpanExporter ComponentTypeAttr = "otlp_http_span_exporter"
+	// ComponentTypeOtlpHTTPJSONSpanExporter is the OTLP span exporter over HTTP
+	// with JSON serialization.
+	ComponentTypeOtlpHTTPJSONSpanExporter ComponentTypeAttr = "otlp_http_json_span_exporter"
+	// ComponentTypeZipkinHTTPSpanExporter is the zipkin span exporter over HTTP.
+	ComponentTypeZipkinHTTPSpanExporter ComponentTypeAttr = "zipkin_http_span_exporter"
+	// ComponentTypeOtlpGRPCLogExporter is the OTLP log record exporter over gRPC
+	// with protobuf serialization.
+	ComponentTypeOtlpGRPCLogExporter ComponentTypeAttr = "otlp_grpc_log_exporter"
+	// ComponentTypeOtlpHTTPLogExporter is the OTLP log record exporter over HTTP
+	// with protobuf serialization.
+	ComponentTypeOtlpHTTPLogExporter ComponentTypeAttr = "otlp_http_log_exporter"
+	// ComponentTypeOtlpHTTPJSONLogExporter is the OTLP log record exporter over
+	// HTTP with JSON serialization.
+	ComponentTypeOtlpHTTPJSONLogExporter ComponentTypeAttr = "otlp_http_json_log_exporter"
+	// ComponentTypePeriodicMetricReader is the builtin SDK periodically exporting
+	// metric reader.
+	ComponentTypePeriodicMetricReader ComponentTypeAttr = "periodic_metric_reader"
+	// ComponentTypeOtlpGRPCMetricExporter is the OTLP metric exporter over gRPC
+	// with protobuf serialization.
+	ComponentTypeOtlpGRPCMetricExporter ComponentTypeAttr = "otlp_grpc_metric_exporter"
+	// ComponentTypeOtlpHTTPMetricExporter is the OTLP metric exporter over HTTP
+	// with protobuf serialization.
+	ComponentTypeOtlpHTTPMetricExporter ComponentTypeAttr = "otlp_http_metric_exporter"
+	// ComponentTypeOtlpHTTPJSONMetricExporter is the OTLP metric exporter over HTTP
+	// with JSON serialization.
+	ComponentTypeOtlpHTTPJSONMetricExporter ComponentTypeAttr = "otlp_http_json_metric_exporter"
+	// ComponentTypePrometheusHTTPTextMetricExporter is the prometheus metric
+	// exporter over HTTP with the default text-based format.
+	ComponentTypePrometheusHTTPTextMetricExporter ComponentTypeAttr = "prometheus_http_text_metric_exporter"
+)
+
+// SpanParentOriginAttr is an attribute conforming to the otel.span.parent.origin
+// semantic conventions. It represents the determines whether the span has a
+// parent span, and if so, [whether it is a remote parent].
+//
+// [whether it is a remote parent]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+type SpanParentOriginAttr string
+
+var (
+	// SpanParentOriginNone is the span does not have a parent, it is a root span.
+	SpanParentOriginNone SpanParentOriginAttr = "none"
+	// SpanParentOriginLocal is the span has a parent and the parent's span context
+	// [isRemote()] is false.
+	//
+	// [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+	SpanParentOriginLocal SpanParentOriginAttr = "local"
+	// SpanParentOriginRemote is the span has a parent and the parent's span context
+	// [isRemote()] is true.
+	//
+	// [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+	SpanParentOriginRemote SpanParentOriginAttr = "remote"
+)
+
+// SpanSamplingResultAttr is an attribute conforming to the
+// otel.span.sampling_result semantic conventions. It represents the result value
+// of the sampler for this span.
+type SpanSamplingResultAttr string
+
+var (
+	// SpanSamplingResultDrop is the span is not sampled and not recording.
+	SpanSamplingResultDrop SpanSamplingResultAttr = "DROP"
+	// SpanSamplingResultRecordOnly is the span is not sampled, but recording.
+	SpanSamplingResultRecordOnly SpanSamplingResultAttr = "RECORD_ONLY"
+	// SpanSamplingResultRecordAndSample is the span is sampled and recording.
+	SpanSamplingResultRecordAndSample SpanSamplingResultAttr = "RECORD_AND_SAMPLE"
+)
+
+// RPCGRPCStatusCodeAttr is an attribute conforming to the rpc.grpc.status_code
+// semantic conventions. It represents the gRPC status code of the last gRPC
+// requests performed in scope of this export call.
+type RPCGRPCStatusCodeAttr int64
+
+var (
+	// RPCGRPCStatusCodeOk is the OK.
+	RPCGRPCStatusCodeOk RPCGRPCStatusCodeAttr = 0
+	// RPCGRPCStatusCodeCancelled is the CANCELLED.
+	RPCGRPCStatusCodeCancelled RPCGRPCStatusCodeAttr = 1
+	// RPCGRPCStatusCodeUnknown is the UNKNOWN.
+	RPCGRPCStatusCodeUnknown RPCGRPCStatusCodeAttr = 2
+	// RPCGRPCStatusCodeInvalidArgument is the INVALID_ARGUMENT.
+	RPCGRPCStatusCodeInvalidArgument RPCGRPCStatusCodeAttr = 3
+	// RPCGRPCStatusCodeDeadlineExceeded is the DEADLINE_EXCEEDED.
+	RPCGRPCStatusCodeDeadlineExceeded RPCGRPCStatusCodeAttr = 4
+	// RPCGRPCStatusCodeNotFound is the NOT_FOUND.
+	RPCGRPCStatusCodeNotFound RPCGRPCStatusCodeAttr = 5
+	// RPCGRPCStatusCodeAlreadyExists is the ALREADY_EXISTS.
+	RPCGRPCStatusCodeAlreadyExists RPCGRPCStatusCodeAttr = 6
+	// RPCGRPCStatusCodePermissionDenied is the PERMISSION_DENIED.
+	RPCGRPCStatusCodePermissionDenied RPCGRPCStatusCodeAttr = 7
+	// RPCGRPCStatusCodeResourceExhausted is the RESOURCE_EXHAUSTED.
+	RPCGRPCStatusCodeResourceExhausted RPCGRPCStatusCodeAttr = 8
+	// RPCGRPCStatusCodeFailedPrecondition is the FAILED_PRECONDITION.
+	RPCGRPCStatusCodeFailedPrecondition RPCGRPCStatusCodeAttr = 9
+	// RPCGRPCStatusCodeAborted is the ABORTED.
+	RPCGRPCStatusCodeAborted RPCGRPCStatusCodeAttr = 10
+	// RPCGRPCStatusCodeOutOfRange is the OUT_OF_RANGE.
+	RPCGRPCStatusCodeOutOfRange RPCGRPCStatusCodeAttr = 11
+	// RPCGRPCStatusCodeUnimplemented is the UNIMPLEMENTED.
+	RPCGRPCStatusCodeUnimplemented RPCGRPCStatusCodeAttr = 12
+	// RPCGRPCStatusCodeInternal is the INTERNAL.
+	RPCGRPCStatusCodeInternal RPCGRPCStatusCodeAttr = 13
+	// RPCGRPCStatusCodeUnavailable is the UNAVAILABLE.
+	RPCGRPCStatusCodeUnavailable RPCGRPCStatusCodeAttr = 14
+	// RPCGRPCStatusCodeDataLoss is the DATA_LOSS.
+	RPCGRPCStatusCodeDataLoss RPCGRPCStatusCodeAttr = 15
+	// RPCGRPCStatusCodeUnauthenticated is the UNAUTHENTICATED.
+	RPCGRPCStatusCodeUnauthenticated RPCGRPCStatusCodeAttr = 16
+)
+
+// SDKExporterLogExported is an instrument used to record metric values
+// conforming to the "otel.sdk.exporter.log.exported" semantic conventions. It
+// represents the number of log records for which the export has finished, either
+// successful or failed.
+type SDKExporterLogExported struct {
+	metric.Int64Counter
+}
+
+// NewSDKExporterLogExported returns a new SDKExporterLogExported instrument.
+func NewSDKExporterLogExported(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKExporterLogExported, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterLogExported{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.exporter.log.exported",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of log records for which the export has finished, either successful or failed."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterLogExported{noop.Int64Counter{}}, err
+	}
+	return SDKExporterLogExported{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterLogExported) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterLogExported) Name() string {
+	return "otel.sdk.exporter.log.exported"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterLogExported) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterLogExported) Description() string {
+	return "The number of log records for which the export has finished, either successful or failed."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with
+// `rejected_log_records`), rejected log records MUST count as failed and only
+// non-rejected log records count as success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterLogExported) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with
+// `rejected_log_records`), rejected log records MUST count as failed and only
+// non-rejected log records count as success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterLogExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents the describes a class of error the operation ended
+// with.
+func (SDKExporterLogExported) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterLogExported) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterLogExported) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterLogExported) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterLogExported) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterLogInflight is an instrument used to record metric values
+// conforming to the "otel.sdk.exporter.log.inflight" semantic conventions. It
+// represents the number of log records which were passed to the exporter, but
+// that have not been exported yet (neither successful, nor failed).
+type SDKExporterLogInflight struct {
+	metric.Int64UpDownCounter
+}
+
+// NewSDKExporterLogInflight returns a new SDKExporterLogInflight instrument.
+func NewSDKExporterLogInflight(
+	m metric.Meter,
+	opt ...metric.Int64UpDownCounterOption,
+) (SDKExporterLogInflight, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterLogInflight{noop.Int64UpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64UpDownCounter(
+		"otel.sdk.exporter.log.inflight",
+		append([]metric.Int64UpDownCounterOption{
+			metric.WithDescription("The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterLogInflight{noop.Int64UpDownCounter{}}, err
+	}
+	return SDKExporterLogInflight{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterLogInflight) Inst() metric.Int64UpDownCounter {
+	return m.Int64UpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterLogInflight) Name() string {
+	return "otel.sdk.exporter.log.inflight"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterLogInflight) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterLogInflight) Description() string {
+	return "The number of log records which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterLogInflight) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterLogInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterLogInflight) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterLogInflight) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterLogInflight) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterLogInflight) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterMetricDataPointExported is an instrument used to record metric
+// values conforming to the "otel.sdk.exporter.metric_data_point.exported"
+// semantic conventions. It represents the number of metric data points for which
+// the export has finished, either successful or failed.
+type SDKExporterMetricDataPointExported struct {
+	metric.Int64Counter
+}
+
+// NewSDKExporterMetricDataPointExported returns a new
+// SDKExporterMetricDataPointExported instrument.
+func NewSDKExporterMetricDataPointExported(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKExporterMetricDataPointExported, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterMetricDataPointExported{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.exporter.metric_data_point.exported",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of metric data points for which the export has finished, either successful or failed."),
+			metric.WithUnit("{data_point}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterMetricDataPointExported{noop.Int64Counter{}}, err
+	}
+	return SDKExporterMetricDataPointExported{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterMetricDataPointExported) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterMetricDataPointExported) Name() string {
+	return "otel.sdk.exporter.metric_data_point.exported"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterMetricDataPointExported) Unit() string {
+	return "{data_point}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterMetricDataPointExported) Description() string {
+	return "The number of metric data points for which the export has finished, either successful or failed."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with
+// `rejected_data_points`), rejected data points MUST count as failed and only
+// non-rejected data points count as success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterMetricDataPointExported) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with
+// `rejected_data_points`), rejected data points MUST count as failed and only
+// non-rejected data points count as success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterMetricDataPointExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents the describes a class of error the operation ended
+// with.
+func (SDKExporterMetricDataPointExported) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterMetricDataPointExported) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterMetricDataPointExported) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterMetricDataPointExported) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterMetricDataPointExported) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterMetricDataPointInflight is an instrument used to record metric
+// values conforming to the "otel.sdk.exporter.metric_data_point.inflight"
+// semantic conventions. It represents the number of metric data points which
+// were passed to the exporter, but that have not been exported yet (neither
+// successful, nor failed).
+type SDKExporterMetricDataPointInflight struct {
+	metric.Int64UpDownCounter
+}
+
+// NewSDKExporterMetricDataPointInflight returns a new
+// SDKExporterMetricDataPointInflight instrument.
+func NewSDKExporterMetricDataPointInflight(
+	m metric.Meter,
+	opt ...metric.Int64UpDownCounterOption,
+) (SDKExporterMetricDataPointInflight, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterMetricDataPointInflight{noop.Int64UpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64UpDownCounter(
+		"otel.sdk.exporter.metric_data_point.inflight",
+		append([]metric.Int64UpDownCounterOption{
+			metric.WithDescription("The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."),
+			metric.WithUnit("{data_point}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterMetricDataPointInflight{noop.Int64UpDownCounter{}}, err
+	}
+	return SDKExporterMetricDataPointInflight{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterMetricDataPointInflight) Inst() metric.Int64UpDownCounter {
+	return m.Int64UpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterMetricDataPointInflight) Name() string {
+	return "otel.sdk.exporter.metric_data_point.inflight"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterMetricDataPointInflight) Unit() string {
+	return "{data_point}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterMetricDataPointInflight) Description() string {
+	return "The number of metric data points which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterMetricDataPointInflight) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterMetricDataPointInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterMetricDataPointInflight) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterMetricDataPointInflight) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterMetricDataPointInflight) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterMetricDataPointInflight) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterOperationDuration is an instrument used to record metric values
+// conforming to the "otel.sdk.exporter.operation.duration" semantic conventions.
+// It represents the duration of exporting a batch of telemetry records.
+type SDKExporterOperationDuration struct {
+	metric.Float64Histogram
+}
+
+// NewSDKExporterOperationDuration returns a new SDKExporterOperationDuration
+// instrument.
+func NewSDKExporterOperationDuration(
+	m metric.Meter,
+	opt ...metric.Float64HistogramOption,
+) (SDKExporterOperationDuration, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterOperationDuration{noop.Float64Histogram{}}, nil
+	}
+
+	i, err := m.Float64Histogram(
+		"otel.sdk.exporter.operation.duration",
+		append([]metric.Float64HistogramOption{
+			metric.WithDescription("The duration of exporting a batch of telemetry records."),
+			metric.WithUnit("s"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterOperationDuration{noop.Float64Histogram{}}, err
+	}
+	return SDKExporterOperationDuration{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterOperationDuration) Inst() metric.Float64Histogram {
+	return m.Float64Histogram
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterOperationDuration) Name() string {
+	return "otel.sdk.exporter.operation.duration"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterOperationDuration) Unit() string {
+	return "s"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterOperationDuration) Description() string {
+	return "The duration of exporting a batch of telemetry records."
+}
+
+// Record records val to the current distribution for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// This metric defines successful operations using the full success definitions
+// for [http]
+// and [grpc]. Anything else is defined as an unsuccessful operation. For
+// successful
+// operations, `error.type` MUST NOT be set. For unsuccessful export operations,
+// `error.type` MUST contain a relevant failure cause.
+//
+// [http]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1
+// [grpc]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success
+func (m SDKExporterOperationDuration) Record(
+	ctx context.Context,
+	val float64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Float64Histogram.Record(ctx, val)
+		return
+	}
+
+	o := recOptPool.Get().(*[]metric.RecordOption)
+	defer func() {
+		*o = (*o)[:0]
+		recOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Float64Histogram.Record(ctx, val, *o...)
+}
+
+// RecordSet records val to the current distribution for set.
+//
+// This metric defines successful operations using the full success definitions
+// for [http]
+// and [grpc]. Anything else is defined as an unsuccessful operation. For
+// successful
+// operations, `error.type` MUST NOT be set. For unsuccessful export operations,
+// `error.type` MUST contain a relevant failure cause.
+//
+// [http]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success-1
+// [grpc]: https://github.com/open-telemetry/opentelemetry-proto/blob/v1.5.0/docs/specification.md#full-success
+func (m SDKExporterOperationDuration) RecordSet(ctx context.Context, val float64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Float64Histogram.Record(ctx, val)
+	}
+
+	o := recOptPool.Get().(*[]metric.RecordOption)
+	defer func() {
+		*o = (*o)[:0]
+		recOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Float64Histogram.Record(ctx, val, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents the describes a class of error the operation ended
+// with.
+func (SDKExporterOperationDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrHTTPResponseStatusCode returns an optional attribute for the
+// "http.response.status_code" semantic convention. It represents the HTTP status
+// code of the last HTTP request performed in scope of this export call.
+func (SDKExporterOperationDuration) AttrHTTPResponseStatusCode(val int) attribute.KeyValue {
+	return attribute.Int("http.response.status_code", val)
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterOperationDuration) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterOperationDuration) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrRPCGRPCStatusCode returns an optional attribute for the
+// "rpc.grpc.status_code" semantic convention. It represents the gRPC status code
+// of the last gRPC requests performed in scope of this export call.
+func (SDKExporterOperationDuration) AttrRPCGRPCStatusCode(val RPCGRPCStatusCodeAttr) attribute.KeyValue {
+	return attribute.Int64("rpc.grpc.status_code", int64(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterOperationDuration) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterOperationDuration) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterSpanExported is an instrument used to record metric values
+// conforming to the "otel.sdk.exporter.span.exported" semantic conventions. It
+// represents the number of spans for which the export has finished, either
+// successful or failed.
+type SDKExporterSpanExported struct {
+	metric.Int64Counter
+}
+
+// NewSDKExporterSpanExported returns a new SDKExporterSpanExported instrument.
+func NewSDKExporterSpanExported(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKExporterSpanExported, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterSpanExported{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.exporter.span.exported",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of spans for which the export has finished, either successful or failed."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterSpanExported{noop.Int64Counter{}}, err
+	}
+	return SDKExporterSpanExported{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterSpanExported) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterSpanExported) Name() string {
+	return "otel.sdk.exporter.span.exported"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterSpanExported) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterSpanExported) Description() string {
+	return "The number of spans for which the export has finished, either successful or failed."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with `rejected_spans`
+// ), rejected spans MUST count as failed and only non-rejected spans count as
+// success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterSpanExported) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+// For exporters with partial success semantics (e.g. OTLP with `rejected_spans`
+// ), rejected spans MUST count as failed and only non-rejected spans count as
+// success.
+// If no rejection reason is available, `rejected` SHOULD be used as value for
+// `error.type`.
+func (m SDKExporterSpanExported) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents the describes a class of error the operation ended
+// with.
+func (SDKExporterSpanExported) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterSpanExported) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterSpanExported) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterSpanExported) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterSpanExported) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKExporterSpanInflight is an instrument used to record metric values
+// conforming to the "otel.sdk.exporter.span.inflight" semantic conventions. It
+// represents the number of spans which were passed to the exporter, but that
+// have not been exported yet (neither successful, nor failed).
+type SDKExporterSpanInflight struct {
+	metric.Int64UpDownCounter
+}
+
+// NewSDKExporterSpanInflight returns a new SDKExporterSpanInflight instrument.
+func NewSDKExporterSpanInflight(
+	m metric.Meter,
+	opt ...metric.Int64UpDownCounterOption,
+) (SDKExporterSpanInflight, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKExporterSpanInflight{noop.Int64UpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64UpDownCounter(
+		"otel.sdk.exporter.span.inflight",
+		append([]metric.Int64UpDownCounterOption{
+			metric.WithDescription("The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKExporterSpanInflight{noop.Int64UpDownCounter{}}, err
+	}
+	return SDKExporterSpanInflight{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKExporterSpanInflight) Inst() metric.Int64UpDownCounter {
+	return m.Int64UpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKExporterSpanInflight) Name() string {
+	return "otel.sdk.exporter.span.inflight"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKExporterSpanInflight) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKExporterSpanInflight) Description() string {
+	return "The number of spans which were passed to the exporter, but that have not been exported yet (neither successful, nor failed)."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterSpanInflight) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful exports, `error.type` MUST NOT be set. For failed exports,
+// `error.type` MUST contain the failure cause.
+func (m SDKExporterSpanInflight) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKExporterSpanInflight) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKExporterSpanInflight) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// AttrServerAddress returns an optional attribute for the "server.address"
+// semantic convention. It represents the server domain name if available without
+// reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+func (SDKExporterSpanInflight) AttrServerAddress(val string) attribute.KeyValue {
+	return attribute.String("server.address", val)
+}
+
+// AttrServerPort returns an optional attribute for the "server.port" semantic
+// convention. It represents the server port number.
+func (SDKExporterSpanInflight) AttrServerPort(val int) attribute.KeyValue {
+	return attribute.Int("server.port", val)
+}
+
+// SDKLogCreated is an instrument used to record metric values conforming to the
+// "otel.sdk.log.created" semantic conventions. It represents the number of logs
+// submitted to enabled SDK Loggers.
+type SDKLogCreated struct {
+	metric.Int64Counter
+}
+
+// NewSDKLogCreated returns a new SDKLogCreated instrument.
+func NewSDKLogCreated(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKLogCreated, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKLogCreated{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.log.created",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of logs submitted to enabled SDK Loggers."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKLogCreated{noop.Int64Counter{}}, err
+	}
+	return SDKLogCreated{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKLogCreated) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKLogCreated) Name() string {
+	return "otel.sdk.log.created"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKLogCreated) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKLogCreated) Description() string {
+	return "The number of logs submitted to enabled SDK Loggers."
+}
+
+// Add adds incr to the existing count for attrs.
+func (m SDKLogCreated) Add(ctx context.Context, incr int64, attrs ...attribute.KeyValue) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributes(attrs...))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+func (m SDKLogCreated) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// SDKMetricReaderCollectionDuration is an instrument used to record metric
+// values conforming to the "otel.sdk.metric_reader.collection.duration" semantic
+// conventions. It represents the duration of the collect operation of the metric
+// reader.
+type SDKMetricReaderCollectionDuration struct {
+	metric.Float64Histogram
+}
+
+// NewSDKMetricReaderCollectionDuration returns a new
+// SDKMetricReaderCollectionDuration instrument.
+func NewSDKMetricReaderCollectionDuration(
+	m metric.Meter,
+	opt ...metric.Float64HistogramOption,
+) (SDKMetricReaderCollectionDuration, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKMetricReaderCollectionDuration{noop.Float64Histogram{}}, nil
+	}
+
+	i, err := m.Float64Histogram(
+		"otel.sdk.metric_reader.collection.duration",
+		append([]metric.Float64HistogramOption{
+			metric.WithDescription("The duration of the collect operation of the metric reader."),
+			metric.WithUnit("s"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKMetricReaderCollectionDuration{noop.Float64Histogram{}}, err
+	}
+	return SDKMetricReaderCollectionDuration{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKMetricReaderCollectionDuration) Inst() metric.Float64Histogram {
+	return m.Float64Histogram
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKMetricReaderCollectionDuration) Name() string {
+	return "otel.sdk.metric_reader.collection.duration"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKMetricReaderCollectionDuration) Unit() string {
+	return "s"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKMetricReaderCollectionDuration) Description() string {
+	return "The duration of the collect operation of the metric reader."
+}
+
+// Record records val to the current distribution for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful collections, `error.type` MUST NOT be set. For failed
+// collections, `error.type` SHOULD contain the failure cause.
+// It can happen that metrics collection is successful for some MetricProducers,
+// while others fail. In that case `error.type` SHOULD be set to any of the
+// failure causes.
+func (m SDKMetricReaderCollectionDuration) Record(
+	ctx context.Context,
+	val float64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Float64Histogram.Record(ctx, val)
+		return
+	}
+
+	o := recOptPool.Get().(*[]metric.RecordOption)
+	defer func() {
+		*o = (*o)[:0]
+		recOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Float64Histogram.Record(ctx, val, *o...)
+}
+
+// RecordSet records val to the current distribution for set.
+//
+// For successful collections, `error.type` MUST NOT be set. For failed
+// collections, `error.type` SHOULD contain the failure cause.
+// It can happen that metrics collection is successful for some MetricProducers,
+// while others fail. In that case `error.type` SHOULD be set to any of the
+// failure causes.
+func (m SDKMetricReaderCollectionDuration) RecordSet(ctx context.Context, val float64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Float64Histogram.Record(ctx, val)
+	}
+
+	o := recOptPool.Get().(*[]metric.RecordOption)
+	defer func() {
+		*o = (*o)[:0]
+		recOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Float64Histogram.Record(ctx, val, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents the describes a class of error the operation ended
+// with.
+func (SDKMetricReaderCollectionDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKMetricReaderCollectionDuration) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKMetricReaderCollectionDuration) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorLogProcessed is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.log.processed" semantic conventions. It
+// represents the number of log records for which the processing has finished,
+// either successful or failed.
+type SDKProcessorLogProcessed struct {
+	metric.Int64Counter
+}
+
+// NewSDKProcessorLogProcessed returns a new SDKProcessorLogProcessed instrument.
+func NewSDKProcessorLogProcessed(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKProcessorLogProcessed, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorLogProcessed{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.processor.log.processed",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of log records for which the processing has finished, either successful or failed."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorLogProcessed{noop.Int64Counter{}}, err
+	}
+	return SDKProcessorLogProcessed{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorLogProcessed) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorLogProcessed) Name() string {
+	return "otel.sdk.processor.log.processed"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorLogProcessed) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorLogProcessed) Description() string {
+	return "The number of log records for which the processing has finished, either successful or failed."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful processing, `error.type` MUST NOT be set. For failed
+// processing, `error.type` MUST contain the failure cause.
+// For the SDK Simple and Batching Log Record Processor a log record is
+// considered to be processed already when it has been submitted to the exporter,
+// not when the corresponding export call has finished.
+func (m SDKProcessorLogProcessed) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful processing, `error.type` MUST NOT be set. For failed
+// processing, `error.type` MUST contain the failure cause.
+// For the SDK Simple and Batching Log Record Processor a log record is
+// considered to be processed already when it has been submitted to the exporter,
+// not when the corresponding export call has finished.
+func (m SDKProcessorLogProcessed) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents a low-cardinality description of the failure reason.
+// SDK Batching Log Record Processors MUST use `queue_full` for log records
+// dropped due to a full queue.
+func (SDKProcessorLogProcessed) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorLogProcessed) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorLogProcessed) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorLogQueueCapacity is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.log.queue.capacity" semantic
+// conventions. It represents the maximum number of log records the queue of a
+// given instance of an SDK Log Record processor can hold.
+type SDKProcessorLogQueueCapacity struct {
+	metric.Int64ObservableUpDownCounter
+}
+
+// NewSDKProcessorLogQueueCapacity returns a new SDKProcessorLogQueueCapacity
+// instrument.
+func NewSDKProcessorLogQueueCapacity(
+	m metric.Meter,
+	opt ...metric.Int64ObservableUpDownCounterOption,
+) (SDKProcessorLogQueueCapacity, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorLogQueueCapacity{noop.Int64ObservableUpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64ObservableUpDownCounter(
+		"otel.sdk.processor.log.queue.capacity",
+		append([]metric.Int64ObservableUpDownCounterOption{
+			metric.WithDescription("The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorLogQueueCapacity{noop.Int64ObservableUpDownCounter{}}, err
+	}
+	return SDKProcessorLogQueueCapacity{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorLogQueueCapacity) Inst() metric.Int64ObservableUpDownCounter {
+	return m.Int64ObservableUpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorLogQueueCapacity) Name() string {
+	return "otel.sdk.processor.log.queue.capacity"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorLogQueueCapacity) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorLogQueueCapacity) Description() string {
+	return "The maximum number of log records the queue of a given instance of an SDK Log Record processor can hold."
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorLogQueueCapacity) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorLogQueueCapacity) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorLogQueueSize is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.log.queue.size" semantic conventions. It
+// represents the number of log records in the queue of a given instance of an
+// SDK log processor.
+type SDKProcessorLogQueueSize struct {
+	metric.Int64ObservableUpDownCounter
+}
+
+// NewSDKProcessorLogQueueSize returns a new SDKProcessorLogQueueSize instrument.
+func NewSDKProcessorLogQueueSize(
+	m metric.Meter,
+	opt ...metric.Int64ObservableUpDownCounterOption,
+) (SDKProcessorLogQueueSize, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorLogQueueSize{noop.Int64ObservableUpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64ObservableUpDownCounter(
+		"otel.sdk.processor.log.queue.size",
+		append([]metric.Int64ObservableUpDownCounterOption{
+			metric.WithDescription("The number of log records in the queue of a given instance of an SDK log processor."),
+			metric.WithUnit("{log_record}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorLogQueueSize{noop.Int64ObservableUpDownCounter{}}, err
+	}
+	return SDKProcessorLogQueueSize{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorLogQueueSize) Inst() metric.Int64ObservableUpDownCounter {
+	return m.Int64ObservableUpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorLogQueueSize) Name() string {
+	return "otel.sdk.processor.log.queue.size"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorLogQueueSize) Unit() string {
+	return "{log_record}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorLogQueueSize) Description() string {
+	return "The number of log records in the queue of a given instance of an SDK log processor."
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorLogQueueSize) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorLogQueueSize) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorSpanProcessed is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.span.processed" semantic conventions. It
+// represents the number of spans for which the processing has finished, either
+// successful or failed.
+type SDKProcessorSpanProcessed struct {
+	metric.Int64Counter
+}
+
+// NewSDKProcessorSpanProcessed returns a new SDKProcessorSpanProcessed
+// instrument.
+func NewSDKProcessorSpanProcessed(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKProcessorSpanProcessed, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorSpanProcessed{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.processor.span.processed",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of spans for which the processing has finished, either successful or failed."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorSpanProcessed{noop.Int64Counter{}}, err
+	}
+	return SDKProcessorSpanProcessed{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorSpanProcessed) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorSpanProcessed) Name() string {
+	return "otel.sdk.processor.span.processed"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorSpanProcessed) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorSpanProcessed) Description() string {
+	return "The number of spans for which the processing has finished, either successful or failed."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// For successful processing, `error.type` MUST NOT be set. For failed
+// processing, `error.type` MUST contain the failure cause.
+// For the SDK Simple and Batching Span Processor a span is considered to be
+// processed already when it has been submitted to the exporter, not when the
+// corresponding export call has finished.
+func (m SDKProcessorSpanProcessed) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// For successful processing, `error.type` MUST NOT be set. For failed
+// processing, `error.type` MUST contain the failure cause.
+// For the SDK Simple and Batching Span Processor a span is considered to be
+// processed already when it has been submitted to the exporter, not when the
+// corresponding export call has finished.
+func (m SDKProcessorSpanProcessed) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrErrorType returns an optional attribute for the "error.type" semantic
+// convention. It represents a low-cardinality description of the failure reason.
+// SDK Batching Span Processors MUST use `queue_full` for spans dropped due to a
+// full queue.
+func (SDKProcessorSpanProcessed) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
+	return attribute.String("error.type", string(val))
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorSpanProcessed) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorSpanProcessed) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorSpanQueueCapacity is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.span.queue.capacity" semantic
+// conventions. It represents the maximum number of spans the queue of a given
+// instance of an SDK span processor can hold.
+type SDKProcessorSpanQueueCapacity struct {
+	metric.Int64ObservableUpDownCounter
+}
+
+// NewSDKProcessorSpanQueueCapacity returns a new SDKProcessorSpanQueueCapacity
+// instrument.
+func NewSDKProcessorSpanQueueCapacity(
+	m metric.Meter,
+	opt ...metric.Int64ObservableUpDownCounterOption,
+) (SDKProcessorSpanQueueCapacity, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorSpanQueueCapacity{noop.Int64ObservableUpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64ObservableUpDownCounter(
+		"otel.sdk.processor.span.queue.capacity",
+		append([]metric.Int64ObservableUpDownCounterOption{
+			metric.WithDescription("The maximum number of spans the queue of a given instance of an SDK span processor can hold."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorSpanQueueCapacity{noop.Int64ObservableUpDownCounter{}}, err
+	}
+	return SDKProcessorSpanQueueCapacity{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorSpanQueueCapacity) Inst() metric.Int64ObservableUpDownCounter {
+	return m.Int64ObservableUpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorSpanQueueCapacity) Name() string {
+	return "otel.sdk.processor.span.queue.capacity"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorSpanQueueCapacity) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorSpanQueueCapacity) Description() string {
+	return "The maximum number of spans the queue of a given instance of an SDK span processor can hold."
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorSpanQueueCapacity) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorSpanQueueCapacity) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKProcessorSpanQueueSize is an instrument used to record metric values
+// conforming to the "otel.sdk.processor.span.queue.size" semantic conventions.
+// It represents the number of spans in the queue of a given instance of an SDK
+// span processor.
+type SDKProcessorSpanQueueSize struct {
+	metric.Int64ObservableUpDownCounter
+}
+
+// NewSDKProcessorSpanQueueSize returns a new SDKProcessorSpanQueueSize
+// instrument.
+func NewSDKProcessorSpanQueueSize(
+	m metric.Meter,
+	opt ...metric.Int64ObservableUpDownCounterOption,
+) (SDKProcessorSpanQueueSize, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKProcessorSpanQueueSize{noop.Int64ObservableUpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64ObservableUpDownCounter(
+		"otel.sdk.processor.span.queue.size",
+		append([]metric.Int64ObservableUpDownCounterOption{
+			metric.WithDescription("The number of spans in the queue of a given instance of an SDK span processor."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKProcessorSpanQueueSize{noop.Int64ObservableUpDownCounter{}}, err
+	}
+	return SDKProcessorSpanQueueSize{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKProcessorSpanQueueSize) Inst() metric.Int64ObservableUpDownCounter {
+	return m.Int64ObservableUpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKProcessorSpanQueueSize) Name() string {
+	return "otel.sdk.processor.span.queue.size"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKProcessorSpanQueueSize) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKProcessorSpanQueueSize) Description() string {
+	return "The number of spans in the queue of a given instance of an SDK span processor."
+}
+
+// AttrComponentName returns an optional attribute for the "otel.component.name"
+// semantic convention. It represents a name uniquely identifying the instance of
+// the OpenTelemetry component within its containing SDK instance.
+func (SDKProcessorSpanQueueSize) AttrComponentName(val string) attribute.KeyValue {
+	return attribute.String("otel.component.name", val)
+}
+
+// AttrComponentType returns an optional attribute for the "otel.component.type"
+// semantic convention. It represents a name identifying the type of the
+// OpenTelemetry component.
+func (SDKProcessorSpanQueueSize) AttrComponentType(val ComponentTypeAttr) attribute.KeyValue {
+	return attribute.String("otel.component.type", string(val))
+}
+
+// SDKSpanLive is an instrument used to record metric values conforming to the
+// "otel.sdk.span.live" semantic conventions. It represents the number of created
+// spans with `recording=true` for which the end operation has not been called
+// yet.
+type SDKSpanLive struct {
+	metric.Int64UpDownCounter
+}
+
+// NewSDKSpanLive returns a new SDKSpanLive instrument.
+func NewSDKSpanLive(
+	m metric.Meter,
+	opt ...metric.Int64UpDownCounterOption,
+) (SDKSpanLive, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKSpanLive{noop.Int64UpDownCounter{}}, nil
+	}
+
+	i, err := m.Int64UpDownCounter(
+		"otel.sdk.span.live",
+		append([]metric.Int64UpDownCounterOption{
+			metric.WithDescription("The number of created spans with `recording=true` for which the end operation has not been called yet."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKSpanLive{noop.Int64UpDownCounter{}}, err
+	}
+	return SDKSpanLive{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKSpanLive) Inst() metric.Int64UpDownCounter {
+	return m.Int64UpDownCounter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKSpanLive) Name() string {
+	return "otel.sdk.span.live"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKSpanLive) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKSpanLive) Description() string {
+	return "The number of created spans with `recording=true` for which the end operation has not been called yet."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+func (m SDKSpanLive) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+func (m SDKSpanLive) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64UpDownCounter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64UpDownCounter.Add(ctx, incr, *o...)
+}
+
+// AttrSpanSamplingResult returns an optional attribute for the
+// "otel.span.sampling_result" semantic convention. It represents the result
+// value of the sampler for this span.
+func (SDKSpanLive) AttrSpanSamplingResult(val SpanSamplingResultAttr) attribute.KeyValue {
+	return attribute.String("otel.span.sampling_result", string(val))
+}
+
+// SDKSpanStarted is an instrument used to record metric values conforming to the
+// "otel.sdk.span.started" semantic conventions. It represents the number of
+// created spans.
+type SDKSpanStarted struct {
+	metric.Int64Counter
+}
+
+// NewSDKSpanStarted returns a new SDKSpanStarted instrument.
+func NewSDKSpanStarted(
+	m metric.Meter,
+	opt ...metric.Int64CounterOption,
+) (SDKSpanStarted, error) {
+	// Check if the meter is nil.
+	if m == nil {
+		return SDKSpanStarted{noop.Int64Counter{}}, nil
+	}
+
+	i, err := m.Int64Counter(
+		"otel.sdk.span.started",
+		append([]metric.Int64CounterOption{
+			metric.WithDescription("The number of created spans."),
+			metric.WithUnit("{span}"),
+		}, opt...)...,
+	)
+	if err != nil {
+	    return SDKSpanStarted{noop.Int64Counter{}}, err
+	}
+	return SDKSpanStarted{i}, nil
+}
+
+// Inst returns the underlying metric instrument.
+func (m SDKSpanStarted) Inst() metric.Int64Counter {
+	return m.Int64Counter
+}
+
+// Name returns the semantic convention name of the instrument.
+func (SDKSpanStarted) Name() string {
+	return "otel.sdk.span.started"
+}
+
+// Unit returns the semantic convention unit of the instrument
+func (SDKSpanStarted) Unit() string {
+	return "{span}"
+}
+
+// Description returns the semantic convention description of the instrument
+func (SDKSpanStarted) Description() string {
+	return "The number of created spans."
+}
+
+// Add adds incr to the existing count for attrs.
+//
+// All additional attrs passed are included in the recorded value.
+//
+// Implementations MUST record this metric for all spans, even for non-recording
+// ones.
+func (m SDKSpanStarted) Add(
+	ctx context.Context,
+	incr int64,
+	attrs ...attribute.KeyValue,
+) {
+	if len(attrs) == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(
+		*o,
+		metric.WithAttributes(
+			attrs...,
+		),
+	)
+
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AddSet adds incr to the existing count for set.
+//
+// Implementations MUST record this metric for all spans, even for non-recording
+// ones.
+func (m SDKSpanStarted) AddSet(ctx context.Context, incr int64, set attribute.Set) {
+	if set.Len() == 0 {
+		m.Int64Counter.Add(ctx, incr)
+		return
+	}
+
+	o := addOptPool.Get().(*[]metric.AddOption)
+	defer func() {
+		*o = (*o)[:0]
+		addOptPool.Put(o)
+	}()
+
+	*o = append(*o, metric.WithAttributeSet(set))
+	m.Int64Counter.Add(ctx, incr, *o...)
+}
+
+// AttrSpanParentOrigin returns an optional attribute for the
+// "otel.span.parent.origin" semantic convention. It represents the determines
+// whether the span has a parent span, and if so, [whether it is a remote parent]
+// .
+//
+// [whether it is a remote parent]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote
+func (SDKSpanStarted) AttrSpanParentOrigin(val SpanParentOriginAttr) attribute.KeyValue {
+	return attribute.String("otel.span.parent.origin", string(val))
+}
+
+// AttrSpanSamplingResult returns an optional attribute for the
+// "otel.span.sampling_result" semantic convention. It represents the result
+// value of the sampler for this span.
+func (SDKSpanStarted) AttrSpanSamplingResult(val SpanSamplingResultAttr) attribute.KeyValue {
+	return attribute.String("otel.span.sampling_result", string(val))
+}
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go
similarity index 85%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go
rename to vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go
index 3c23d45..f8a0b70 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/schema.go
+++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go
@@ -1,9 +1,9 @@
 // Copyright The OpenTelemetry Authors
 // SPDX-License-Identifier: Apache-2.0
 
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0"
+package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0"
 
 // SchemaURL is the schema URL that matches the version of the semantic conventions
 // that this package defines. Semconv packages starting from v1.4.0 must declare
 // non-empty schema URL in the form https://opentelemetry.io/schemas/<version>
-const SchemaURL = "https://opentelemetry.io/schemas/1.34.0"
+const SchemaURL = "https://opentelemetry.io/schemas/1.37.0"
diff --git a/vendor/go.opentelemetry.io/otel/trace/LICENSE b/vendor/go.opentelemetry.io/otel/trace/LICENSE
index 261eeb9..f1aee0f 100644
--- a/vendor/go.opentelemetry.io/otel/trace/LICENSE
+++ b/vendor/go.opentelemetry.io/otel/trace/LICENSE
@@ -199,3 +199,33 @@
    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.
+
+--------------------------------------------------------------------------------
+
+Copyright 2009 The Go Authors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google LLC nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/vendor/go.opentelemetry.io/otel/trace/auto.go b/vendor/go.opentelemetry.io/otel/trace/auto.go
index f3aa398..8763936 100644
--- a/vendor/go.opentelemetry.io/otel/trace/auto.go
+++ b/vendor/go.opentelemetry.io/otel/trace/auto.go
@@ -20,7 +20,7 @@
 
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/codes"
-	semconv "go.opentelemetry.io/otel/semconv/v1.34.0"
+	semconv "go.opentelemetry.io/otel/semconv/v1.37.0"
 	"go.opentelemetry.io/otel/trace/embedded"
 	"go.opentelemetry.io/otel/trace/internal/telemetry"
 )
@@ -39,7 +39,7 @@
 
 var _ TracerProvider = autoTracerProvider{}
 
-func (p autoTracerProvider) Tracer(name string, opts ...TracerOption) Tracer {
+func (autoTracerProvider) Tracer(name string, opts ...TracerOption) Tracer {
 	cfg := NewTracerConfig(opts...)
 	return autoTracer{
 		name:      name,
@@ -81,7 +81,7 @@
 // Expected to be implemented in eBPF.
 //
 //go:noinline
-func (t *autoTracer) start(
+func (*autoTracer) start(
 	ctx context.Context,
 	spanPtr *autoSpan,
 	psc *SpanContext,
diff --git a/vendor/go.opentelemetry.io/otel/trace/config.go b/vendor/go.opentelemetry.io/otel/trace/config.go
index 9c0b720..aea11a2 100644
--- a/vendor/go.opentelemetry.io/otel/trace/config.go
+++ b/vendor/go.opentelemetry.io/otel/trace/config.go
@@ -73,7 +73,7 @@
 	return cfg.timestamp
 }
 
-// StackTrace checks whether stack trace capturing is enabled.
+// StackTrace reports whether stack trace capturing is enabled.
 func (cfg *SpanConfig) StackTrace() bool {
 	return cfg.stackTrace
 }
@@ -154,7 +154,7 @@
 	return cfg.timestamp
 }
 
-// StackTrace checks whether stack trace capturing is enabled.
+// StackTrace reports whether stack trace capturing is enabled.
 func (cfg *EventConfig) StackTrace() bool {
 	return cfg.stackTrace
 }
diff --git a/vendor/go.opentelemetry.io/otel/trace/hex.go b/vendor/go.opentelemetry.io/otel/trace/hex.go
new file mode 100644
index 0000000..1cbef1d
--- /dev/null
+++ b/vendor/go.opentelemetry.io/otel/trace/hex.go
@@ -0,0 +1,38 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package trace // import "go.opentelemetry.io/otel/trace"
+
+const (
+	// hexLU is a hex lookup table of the 16 lowercase hex digits.
+	// The character values of the string are indexed at the equivalent
+	// hexadecimal value they represent. This table efficiently encodes byte data
+	// into a string representation of hexadecimal.
+	hexLU = "0123456789abcdef"
+
+	// hexRev is a reverse hex lookup table for lowercase hex digits.
+	// The table is efficiently decodes a hexadecimal string into bytes.
+	// Valid hexadecimal characters are indexed at their respective values. All
+	// other invalid ASCII characters are represented with '\xff'.
+	//
+	// The '\xff' character is used as invalid because no valid character has
+	// the upper 4 bits set. Meaning, an efficient validation can be performed
+	// over multiple character parsing by checking these bits remain zero.
+	hexRev = "" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\x0a\x0b\x0c\x0d\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +
+		"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+)
diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go
index f663547..ff0f6ea 100644
--- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go
+++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go
@@ -52,7 +52,7 @@
 	return Attr{key, MapValue(value...)}
 }
 
-// Equal returns if a is equal to b.
+// Equal reports whether a is equal to b.
 func (a Attr) Equal(b Attr) bool {
 	return a.Key == b.Key && a.Value.Equal(b.Value)
 }
diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go
index 7b1ae3c..bea56f2 100644
--- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go
+++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go
@@ -22,7 +22,7 @@
 	return hex.EncodeToString(tid[:])
 }
 
-// IsEmpty returns false if id contains at least one non-zero byte.
+// IsEmpty reports whether the TraceID contains only zero bytes.
 func (tid TraceID) IsEmpty() bool {
 	return tid == [traceIDSize]byte{}
 }
@@ -50,7 +50,7 @@
 	return hex.EncodeToString(sid[:])
 }
 
-// IsEmpty returns true if the span ID contains at least one non-zero byte.
+// IsEmpty reports whether the SpanID contains only zero bytes.
 func (sid SpanID) IsEmpty() bool {
 	return sid == [spanIDSize]byte{}
 }
@@ -82,7 +82,7 @@
 }
 
 // unmarshalJSON inflates trace id from hex string, possibly enclosed in quotes.
-func unmarshalJSON(dst []byte, src []byte) error {
+func unmarshalJSON(dst, src []byte) error {
 	if l := len(src); l >= 2 && src[0] == '"' && src[l-1] == '"' {
 		src = src[1 : l-1]
 	}
diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go
index ae9ce10..cb7927b 100644
--- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go
+++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go
@@ -257,10 +257,10 @@
 	}
 }
 
-// Empty returns if v does not hold any value.
+// Empty reports whether v does not hold any value.
 func (v Value) Empty() bool { return v.Kind() == ValueKindEmpty }
 
-// Equal returns if v is equal to w.
+// Equal reports whether v is equal to w.
 func (v Value) Equal(w Value) bool {
 	k1 := v.Kind()
 	k2 := w.Kind()
diff --git a/vendor/go.opentelemetry.io/otel/trace/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop.go
index 0f56e4d..400fab1 100644
--- a/vendor/go.opentelemetry.io/otel/trace/noop.go
+++ b/vendor/go.opentelemetry.io/otel/trace/noop.go
@@ -26,7 +26,7 @@
 var _ TracerProvider = noopTracerProvider{}
 
 // Tracer returns noop implementation of Tracer.
-func (p noopTracerProvider) Tracer(string, ...TracerOption) Tracer {
+func (noopTracerProvider) Tracer(string, ...TracerOption) Tracer {
 	return noopTracer{}
 }
 
@@ -37,7 +37,7 @@
 
 // Start carries forward a non-recording Span, if one is present in the context, otherwise it
 // creates a no-op Span.
-func (t noopTracer) Start(ctx context.Context, name string, _ ...SpanStartOption) (context.Context, Span) {
+func (noopTracer) Start(ctx context.Context, _ string, _ ...SpanStartOption) (context.Context, Span) {
 	span := SpanFromContext(ctx)
 	if _, ok := span.(nonRecordingSpan); !ok {
 		// span is likely already a noopSpan, but let's be sure
diff --git a/vendor/go.opentelemetry.io/otel/trace/noop/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go
index 64a4f1b..689d220 100644
--- a/vendor/go.opentelemetry.io/otel/trace/noop/noop.go
+++ b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go
@@ -51,7 +51,7 @@
 // If ctx contains a span context, the returned span will also contain that
 // span context. If the span context in ctx is for a non-recording span, that
 // span instance will be returned directly.
-func (t Tracer) Start(ctx context.Context, _ string, _ ...trace.SpanStartOption) (context.Context, trace.Span) {
+func (Tracer) Start(ctx context.Context, _ string, _ ...trace.SpanStartOption) (context.Context, trace.Span) {
 	span := trace.SpanFromContext(ctx)
 
 	// If the parent context contains a non-zero span context, that span
diff --git a/vendor/go.opentelemetry.io/otel/trace/trace.go b/vendor/go.opentelemetry.io/otel/trace/trace.go
index d49adf6..ee6f4bc 100644
--- a/vendor/go.opentelemetry.io/otel/trace/trace.go
+++ b/vendor/go.opentelemetry.io/otel/trace/trace.go
@@ -4,8 +4,6 @@
 package trace // import "go.opentelemetry.io/otel/trace"
 
 import (
-	"bytes"
-	"encoding/hex"
 	"encoding/json"
 )
 
@@ -38,21 +36,47 @@
 	_          json.Marshaler = nilTraceID
 )
 
-// IsValid checks whether the trace TraceID is valid. A valid trace ID does
+// IsValid reports whether the trace TraceID is valid. A valid trace ID does
 // not consist of zeros only.
 func (t TraceID) IsValid() bool {
-	return !bytes.Equal(t[:], nilTraceID[:])
+	return t != nilTraceID
 }
 
 // MarshalJSON implements a custom marshal function to encode TraceID
 // as a hex string.
 func (t TraceID) MarshalJSON() ([]byte, error) {
-	return json.Marshal(t.String())
+	b := [32 + 2]byte{0: '"', 33: '"'}
+	h := t.hexBytes()
+	copy(b[1:], h[:])
+	return b[:], nil
 }
 
 // String returns the hex string representation form of a TraceID.
 func (t TraceID) String() string {
-	return hex.EncodeToString(t[:])
+	h := t.hexBytes()
+	return string(h[:])
+}
+
+// hexBytes returns the hex string representation form of a TraceID.
+func (t TraceID) hexBytes() [32]byte {
+	return [32]byte{
+		hexLU[t[0x0]>>4], hexLU[t[0x0]&0xf],
+		hexLU[t[0x1]>>4], hexLU[t[0x1]&0xf],
+		hexLU[t[0x2]>>4], hexLU[t[0x2]&0xf],
+		hexLU[t[0x3]>>4], hexLU[t[0x3]&0xf],
+		hexLU[t[0x4]>>4], hexLU[t[0x4]&0xf],
+		hexLU[t[0x5]>>4], hexLU[t[0x5]&0xf],
+		hexLU[t[0x6]>>4], hexLU[t[0x6]&0xf],
+		hexLU[t[0x7]>>4], hexLU[t[0x7]&0xf],
+		hexLU[t[0x8]>>4], hexLU[t[0x8]&0xf],
+		hexLU[t[0x9]>>4], hexLU[t[0x9]&0xf],
+		hexLU[t[0xa]>>4], hexLU[t[0xa]&0xf],
+		hexLU[t[0xb]>>4], hexLU[t[0xb]&0xf],
+		hexLU[t[0xc]>>4], hexLU[t[0xc]&0xf],
+		hexLU[t[0xd]>>4], hexLU[t[0xd]&0xf],
+		hexLU[t[0xe]>>4], hexLU[t[0xe]&0xf],
+		hexLU[t[0xf]>>4], hexLU[t[0xf]&0xf],
+	}
 }
 
 // SpanID is a unique identity of a span in a trace.
@@ -63,21 +87,38 @@
 	_         json.Marshaler = nilSpanID
 )
 
-// IsValid checks whether the SpanID is valid. A valid SpanID does not consist
+// IsValid reports whether the SpanID is valid. A valid SpanID does not consist
 // of zeros only.
 func (s SpanID) IsValid() bool {
-	return !bytes.Equal(s[:], nilSpanID[:])
+	return s != nilSpanID
 }
 
 // MarshalJSON implements a custom marshal function to encode SpanID
 // as a hex string.
 func (s SpanID) MarshalJSON() ([]byte, error) {
-	return json.Marshal(s.String())
+	b := [16 + 2]byte{0: '"', 17: '"'}
+	h := s.hexBytes()
+	copy(b[1:], h[:])
+	return b[:], nil
 }
 
 // String returns the hex string representation form of a SpanID.
 func (s SpanID) String() string {
-	return hex.EncodeToString(s[:])
+	b := s.hexBytes()
+	return string(b[:])
+}
+
+func (s SpanID) hexBytes() [16]byte {
+	return [16]byte{
+		hexLU[s[0]>>4], hexLU[s[0]&0xf],
+		hexLU[s[1]>>4], hexLU[s[1]&0xf],
+		hexLU[s[2]>>4], hexLU[s[2]&0xf],
+		hexLU[s[3]>>4], hexLU[s[3]&0xf],
+		hexLU[s[4]>>4], hexLU[s[4]&0xf],
+		hexLU[s[5]>>4], hexLU[s[5]&0xf],
+		hexLU[s[6]>>4], hexLU[s[6]&0xf],
+		hexLU[s[7]>>4], hexLU[s[7]&0xf],
+	}
 }
 
 // TraceIDFromHex returns a TraceID from a hex string if it is compliant with
@@ -85,65 +126,58 @@
 // https://www.w3.org/TR/trace-context/#trace-id
 // nolint:revive // revive complains about stutter of `trace.TraceIDFromHex`.
 func TraceIDFromHex(h string) (TraceID, error) {
-	t := TraceID{}
 	if len(h) != 32 {
-		return t, errInvalidTraceIDLength
+		return [16]byte{}, errInvalidTraceIDLength
 	}
-
-	if err := decodeHex(h, t[:]); err != nil {
-		return t, err
+	var b [16]byte
+	invalidMark := byte(0)
+	for i := 0; i < len(h); i += 4 {
+		b[i/2] = (hexRev[h[i]] << 4) | hexRev[h[i+1]]
+		b[i/2+1] = (hexRev[h[i+2]] << 4) | hexRev[h[i+3]]
+		invalidMark |= hexRev[h[i]] | hexRev[h[i+1]] | hexRev[h[i+2]] | hexRev[h[i+3]]
 	}
-
-	if !t.IsValid() {
-		return t, errNilTraceID
+	// If the upper 4 bits of any byte are not zero, there was an invalid hex
+	// character since invalid hex characters are 0xff in hexRev.
+	if invalidMark&0xf0 != 0 {
+		return [16]byte{}, errInvalidHexID
 	}
-	return t, nil
+	// If we didn't set any bits, then h was all zeros.
+	if invalidMark == 0 {
+		return [16]byte{}, errNilTraceID
+	}
+	return b, nil
 }
 
 // SpanIDFromHex returns a SpanID from a hex string if it is compliant
 // with the w3c trace-context specification.
 // See more at https://www.w3.org/TR/trace-context/#parent-id
 func SpanIDFromHex(h string) (SpanID, error) {
-	s := SpanID{}
 	if len(h) != 16 {
-		return s, errInvalidSpanIDLength
+		return [8]byte{}, errInvalidSpanIDLength
 	}
-
-	if err := decodeHex(h, s[:]); err != nil {
-		return s, err
+	var b [8]byte
+	invalidMark := byte(0)
+	for i := 0; i < len(h); i += 4 {
+		b[i/2] = (hexRev[h[i]] << 4) | hexRev[h[i+1]]
+		b[i/2+1] = (hexRev[h[i+2]] << 4) | hexRev[h[i+3]]
+		invalidMark |= hexRev[h[i]] | hexRev[h[i+1]] | hexRev[h[i+2]] | hexRev[h[i+3]]
 	}
-
-	if !s.IsValid() {
-		return s, errNilSpanID
+	// If the upper 4 bits of any byte are not zero, there was an invalid hex
+	// character since invalid hex characters are 0xff in hexRev.
+	if invalidMark&0xf0 != 0 {
+		return [8]byte{}, errInvalidHexID
 	}
-	return s, nil
-}
-
-func decodeHex(h string, b []byte) error {
-	for _, r := range h {
-		switch {
-		case 'a' <= r && r <= 'f':
-			continue
-		case '0' <= r && r <= '9':
-			continue
-		default:
-			return errInvalidHexID
-		}
+	// If we didn't set any bits, then h was all zeros.
+	if invalidMark == 0 {
+		return [8]byte{}, errNilSpanID
 	}
-
-	decoded, err := hex.DecodeString(h)
-	if err != nil {
-		return err
-	}
-
-	copy(b, decoded)
-	return nil
+	return b, nil
 }
 
 // TraceFlags contains flags that can be set on a SpanContext.
 type TraceFlags byte //nolint:revive // revive complains about stutter of `trace.TraceFlags`.
 
-// IsSampled returns if the sampling bit is set in the TraceFlags.
+// IsSampled reports whether the sampling bit is set in the TraceFlags.
 func (tf TraceFlags) IsSampled() bool {
 	return tf&FlagsSampled == FlagsSampled
 }
@@ -160,12 +194,20 @@
 // MarshalJSON implements a custom marshal function to encode TraceFlags
 // as a hex string.
 func (tf TraceFlags) MarshalJSON() ([]byte, error) {
-	return json.Marshal(tf.String())
+	b := [2 + 2]byte{0: '"', 3: '"'}
+	h := tf.hexBytes()
+	copy(b[1:], h[:])
+	return b[:], nil
 }
 
 // String returns the hex string representation form of TraceFlags.
 func (tf TraceFlags) String() string {
-	return hex.EncodeToString([]byte{byte(tf)}[:])
+	h := tf.hexBytes()
+	return string(h[:])
+}
+
+func (tf TraceFlags) hexBytes() [2]byte {
+	return [2]byte{hexLU[tf>>4], hexLU[tf&0xf]}
 }
 
 // SpanContextConfig contains mutable fields usable for constructing
@@ -201,13 +243,13 @@
 
 var _ json.Marshaler = SpanContext{}
 
-// IsValid returns if the SpanContext is valid. A valid span context has a
+// IsValid reports whether the SpanContext is valid. A valid span context has a
 // valid TraceID and SpanID.
 func (sc SpanContext) IsValid() bool {
 	return sc.HasTraceID() && sc.HasSpanID()
 }
 
-// IsRemote indicates whether the SpanContext represents a remotely-created Span.
+// IsRemote reports whether the SpanContext represents a remotely-created Span.
 func (sc SpanContext) IsRemote() bool {
 	return sc.remote
 }
@@ -228,7 +270,7 @@
 	return sc.traceID
 }
 
-// HasTraceID checks if the SpanContext has a valid TraceID.
+// HasTraceID reports whether the SpanContext has a valid TraceID.
 func (sc SpanContext) HasTraceID() bool {
 	return sc.traceID.IsValid()
 }
@@ -249,7 +291,7 @@
 	return sc.spanID
 }
 
-// HasSpanID checks if the SpanContext has a valid SpanID.
+// HasSpanID reports whether the SpanContext has a valid SpanID.
 func (sc SpanContext) HasSpanID() bool {
 	return sc.spanID.IsValid()
 }
@@ -270,7 +312,7 @@
 	return sc.traceFlags
 }
 
-// IsSampled returns if the sampling bit is set in the SpanContext's TraceFlags.
+// IsSampled reports whether the sampling bit is set in the SpanContext's TraceFlags.
 func (sc SpanContext) IsSampled() bool {
 	return sc.traceFlags.IsSampled()
 }
@@ -302,7 +344,7 @@
 	}
 }
 
-// Equal is a predicate that determines whether two SpanContext values are equal.
+// Equal reports whether two SpanContext values are equal.
 func (sc SpanContext) Equal(other SpanContext) bool {
 	return sc.traceID == other.traceID &&
 		sc.spanID == other.spanID &&
diff --git a/vendor/go.opentelemetry.io/otel/trace/tracestate.go b/vendor/go.opentelemetry.io/otel/trace/tracestate.go
index dc5e34c..073adae 100644
--- a/vendor/go.opentelemetry.io/otel/trace/tracestate.go
+++ b/vendor/go.opentelemetry.io/otel/trace/tracestate.go
@@ -80,7 +80,7 @@
 //
 // param n is remain part length, should be 255 in simple-key or 13 in system-id.
 func checkKeyPart(key string, n int) bool {
-	if len(key) == 0 {
+	if key == "" {
 		return false
 	}
 	first := key[0] // key's first char
@@ -102,7 +102,7 @@
 //
 // param n is remain part length, should be 240 exactly.
 func checkKeyTenant(key string, n int) bool {
-	if len(key) == 0 {
+	if key == "" {
 		return false
 	}
 	return isAlphaNum(key[0]) && len(key[1:]) <= n && checkKeyRemain(key[1:])
@@ -191,7 +191,7 @@
 	for ts != "" {
 		var memberStr string
 		memberStr, ts, _ = strings.Cut(ts, listDelimiters)
-		if len(memberStr) == 0 {
+		if memberStr == "" {
 			continue
 		}
 
diff --git a/vendor/go.opentelemetry.io/otel/version.go b/vendor/go.opentelemetry.io/otel/version.go
index 7afe92b..bcaa5aa 100644
--- a/vendor/go.opentelemetry.io/otel/version.go
+++ b/vendor/go.opentelemetry.io/otel/version.go
@@ -5,5 +5,5 @@
 
 // Version is the current release version of OpenTelemetry in use.
 func Version() string {
-	return "1.37.0"
+	return "1.38.0"
 }
diff --git a/vendor/go.opentelemetry.io/otel/versions.yaml b/vendor/go.opentelemetry.io/otel/versions.yaml
index 9d4742a..07145e2 100644
--- a/vendor/go.opentelemetry.io/otel/versions.yaml
+++ b/vendor/go.opentelemetry.io/otel/versions.yaml
@@ -3,7 +3,7 @@
 
 module-sets:
   stable-v1:
-    version: v1.37.0
+    version: v1.38.0
     modules:
       - go.opentelemetry.io/otel
       - go.opentelemetry.io/otel/bridge/opencensus
@@ -22,11 +22,11 @@
       - go.opentelemetry.io/otel/sdk/metric
       - go.opentelemetry.io/otel/trace
   experimental-metrics:
-    version: v0.59.0
+    version: v0.60.0
     modules:
       - go.opentelemetry.io/otel/exporters/prometheus
   experimental-logs:
-    version: v0.13.0
+    version: v0.14.0
     modules:
       - go.opentelemetry.io/otel/log
       - go.opentelemetry.io/otel/log/logtest
@@ -36,7 +36,7 @@
       - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
       - go.opentelemetry.io/otel/exporters/stdout/stdoutlog
   experimental-schema:
-    version: v0.0.12
+    version: v0.0.13
     modules:
       - go.opentelemetry.io/otel/schema
 excluded-modules:
diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go
index 93bcaab..a7345a6 100644
--- a/vendor/golang.org/x/net/http2/frame.go
+++ b/vendor/golang.org/x/net/http2/frame.go
@@ -280,6 +280,8 @@
 	// lastHeaderStream is non-zero if the last frame was an
 	// unfinished HEADERS/CONTINUATION.
 	lastHeaderStream uint32
+	// lastFrameType holds the type of the last frame for verifying frame order.
+	lastFrameType FrameType
 
 	maxReadSize uint32
 	headerBuf   [frameHeaderLen]byte
@@ -488,30 +490,41 @@
 	return err != nil
 }
 
-// ReadFrame reads a single frame. The returned Frame is only valid
-// until the next call to ReadFrame.
+// ReadFrameHeader reads the header of the next frame.
+// It reads the 9-byte fixed frame header, and does not read any portion of the
+// frame payload. The caller is responsible for consuming the payload, either
+// with ReadFrameForHeader or directly from the Framer's io.Reader.
 //
-// If the frame is larger than previously set with SetMaxReadFrameSize, the
-// returned error is ErrFrameTooLarge. Other errors may be of type
-// ConnectionError, StreamError, or anything else from the underlying
-// reader.
+// If the frame is larger than previously set with SetMaxReadFrameSize, it
+// returns the frame header and ErrFrameTooLarge.
 //
-// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID
-// indicates the stream responsible for the error.
-func (fr *Framer) ReadFrame() (Frame, error) {
+// If the returned FrameHeader.StreamID is non-zero, it indicates the stream
+// responsible for the error.
+func (fr *Framer) ReadFrameHeader() (FrameHeader, error) {
 	fr.errDetail = nil
-	if fr.lastFrame != nil {
-		fr.lastFrame.invalidate()
-	}
 	fh, err := readFrameHeader(fr.headerBuf[:], fr.r)
 	if err != nil {
-		return nil, err
+		return fh, err
 	}
 	if fh.Length > fr.maxReadSize {
 		if fh == invalidHTTP1LookingFrameHeader() {
-			return nil, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", ErrFrameTooLarge)
+			return fh, fmt.Errorf("http2: failed reading the frame payload: %w, note that the frame header looked like an HTTP/1.1 header", ErrFrameTooLarge)
 		}
-		return nil, ErrFrameTooLarge
+		return fh, ErrFrameTooLarge
+	}
+	if err := fr.checkFrameOrder(fh); err != nil {
+		return fh, err
+	}
+	return fh, nil
+}
+
+// ReadFrameForHeader reads the payload for the frame with the given FrameHeader.
+//
+// It behaves identically to ReadFrame, other than not checking the maximum
+// frame size.
+func (fr *Framer) ReadFrameForHeader(fh FrameHeader) (Frame, error) {
+	if fr.lastFrame != nil {
+		fr.lastFrame.invalidate()
 	}
 	payload := fr.getReadBuf(fh.Length)
 	if _, err := io.ReadFull(fr.r, payload); err != nil {
@@ -527,9 +540,7 @@
 		}
 		return nil, err
 	}
-	if err := fr.checkFrameOrder(f); err != nil {
-		return nil, err
-	}
+	fr.lastFrame = f
 	if fr.logReads {
 		fr.debugReadLoggerf("http2: Framer %p: read %v", fr, summarizeFrame(f))
 	}
@@ -539,6 +550,24 @@
 	return f, nil
 }
 
+// ReadFrame reads a single frame. The returned Frame is only valid
+// until the next call to ReadFrame or ReadFrameBodyForHeader.
+//
+// If the frame is larger than previously set with SetMaxReadFrameSize, the
+// returned error is ErrFrameTooLarge. Other errors may be of type
+// ConnectionError, StreamError, or anything else from the underlying
+// reader.
+//
+// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID
+// indicates the stream responsible for the error.
+func (fr *Framer) ReadFrame() (Frame, error) {
+	fh, err := fr.ReadFrameHeader()
+	if err != nil {
+		return nil, err
+	}
+	return fr.ReadFrameForHeader(fh)
+}
+
 // connError returns ConnectionError(code) but first
 // stashes away a public reason to the caller can optionally relay it
 // to the peer before hanging up on them. This might help others debug
@@ -551,20 +580,19 @@
 // checkFrameOrder reports an error if f is an invalid frame to return
 // next from ReadFrame. Mostly it checks whether HEADERS and
 // CONTINUATION frames are contiguous.
-func (fr *Framer) checkFrameOrder(f Frame) error {
-	last := fr.lastFrame
-	fr.lastFrame = f
+func (fr *Framer) checkFrameOrder(fh FrameHeader) error {
+	lastType := fr.lastFrameType
+	fr.lastFrameType = fh.Type
 	if fr.AllowIllegalReads {
 		return nil
 	}
 
-	fh := f.Header()
 	if fr.lastHeaderStream != 0 {
 		if fh.Type != FrameContinuation {
 			return fr.connError(ErrCodeProtocol,
 				fmt.Sprintf("got %s for stream %d; expected CONTINUATION following %s for stream %d",
 					fh.Type, fh.StreamID,
-					last.Header().Type, fr.lastHeaderStream))
+					lastType, fr.lastHeaderStream))
 		}
 		if fh.StreamID != fr.lastHeaderStream {
 			return fr.connError(ErrCodeProtocol,
diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go
index 4d3890f..7de27be 100644
--- a/vendor/golang.org/x/net/http2/writesched.go
+++ b/vendor/golang.org/x/net/http2/writesched.go
@@ -185,45 +185,75 @@
 }
 
 // writeQueue is used by implementations of WriteScheduler.
+//
+// Each writeQueue contains a queue of FrameWriteRequests, meant to store all
+// FrameWriteRequests associated with a given stream. This is implemented as a
+// two-stage queue: currQueue[currPos:] and nextQueue. Removing an item is done
+// by incrementing currPos of currQueue. Adding an item is done by appending it
+// to the nextQueue. If currQueue is empty when trying to remove an item, we
+// can swap currQueue and nextQueue to remedy the situation.
+// This two-stage queue is analogous to the use of two lists in Okasaki's
+// purely functional queue but without the overhead of reversing the list when
+// swapping stages.
+//
+// writeQueue also contains prev and next, this can be used by implementations
+// of WriteScheduler to construct data structures that represent the order of
+// writing between different streams (e.g. circular linked list).
 type writeQueue struct {
-	s          []FrameWriteRequest
+	currQueue []FrameWriteRequest
+	nextQueue []FrameWriteRequest
+	currPos   int
+
 	prev, next *writeQueue
 }
 
-func (q *writeQueue) empty() bool { return len(q.s) == 0 }
+func (q *writeQueue) empty() bool {
+	return (len(q.currQueue) - q.currPos + len(q.nextQueue)) == 0
+}
 
 func (q *writeQueue) push(wr FrameWriteRequest) {
-	q.s = append(q.s, wr)
+	q.nextQueue = append(q.nextQueue, wr)
 }
 
 func (q *writeQueue) shift() FrameWriteRequest {
-	if len(q.s) == 0 {
+	if q.empty() {
 		panic("invalid use of queue")
 	}
-	wr := q.s[0]
-	// TODO: less copy-happy queue.
-	copy(q.s, q.s[1:])
-	q.s[len(q.s)-1] = FrameWriteRequest{}
-	q.s = q.s[:len(q.s)-1]
+	if q.currPos >= len(q.currQueue) {
+		q.currQueue, q.currPos, q.nextQueue = q.nextQueue, 0, q.currQueue[:0]
+	}
+	wr := q.currQueue[q.currPos]
+	q.currQueue[q.currPos] = FrameWriteRequest{}
+	q.currPos++
 	return wr
 }
 
+func (q *writeQueue) peek() *FrameWriteRequest {
+	if q.currPos < len(q.currQueue) {
+		return &q.currQueue[q.currPos]
+	}
+	if len(q.nextQueue) > 0 {
+		return &q.nextQueue[0]
+	}
+	return nil
+}
+
 // consume consumes up to n bytes from q.s[0]. If the frame is
 // entirely consumed, it is removed from the queue. If the frame
 // is partially consumed, the frame is kept with the consumed
 // bytes removed. Returns true iff any bytes were consumed.
 func (q *writeQueue) consume(n int32) (FrameWriteRequest, bool) {
-	if len(q.s) == 0 {
+	if q.empty() {
 		return FrameWriteRequest{}, false
 	}
-	consumed, rest, numresult := q.s[0].Consume(n)
+	consumed, rest, numresult := q.peek().Consume(n)
 	switch numresult {
 	case 0:
 		return FrameWriteRequest{}, false
 	case 1:
 		q.shift()
 	case 2:
-		q.s[0] = rest
+		*q.peek() = rest
 	}
 	return consumed, true
 }
@@ -232,10 +262,15 @@
 
 // put inserts an unused writeQueue into the pool.
 func (p *writeQueuePool) put(q *writeQueue) {
-	for i := range q.s {
-		q.s[i] = FrameWriteRequest{}
+	for i := range q.currQueue {
+		q.currQueue[i] = FrameWriteRequest{}
 	}
-	q.s = q.s[:0]
+	for i := range q.nextQueue {
+		q.nextQueue[i] = FrameWriteRequest{}
+	}
+	q.currQueue = q.currQueue[:0]
+	q.nextQueue = q.nextQueue[:0]
+	q.currPos = 0
 	*p = append(*p, q)
 }
 
diff --git a/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go b/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
index 6d24d6a..fb9e260 100644
--- a/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
+++ b/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go
@@ -302,7 +302,6 @@
 
 	q := n.q
 	ws.queuePool.put(&q)
-	n.q.s = nil
 	if ws.maxClosedNodesInTree > 0 {
 		ws.addClosedOrIdleNode(&ws.closedNodes, ws.maxClosedNodesInTree, n)
 	} else {
diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
index b15c10e..b4bc3a2 100644
--- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
+++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go
@@ -16,55 +16,124 @@
  *
  */
 
-// Package pickfirst contains the pick_first load balancing policy.
+// Package pickfirst contains the pick_first load balancing policy which
+// is the universal leaf policy.
 package pickfirst
 
 import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	rand "math/rand/v2"
+	"net"
+	"net/netip"
+	"sync"
+	"time"
 
 	"google.golang.org/grpc/balancer"
 	"google.golang.org/grpc/balancer/pickfirst/internal"
 	"google.golang.org/grpc/connectivity"
+	expstats "google.golang.org/grpc/experimental/stats"
 	"google.golang.org/grpc/grpclog"
-	"google.golang.org/grpc/internal/envconfig"
 	internalgrpclog "google.golang.org/grpc/internal/grpclog"
 	"google.golang.org/grpc/internal/pretty"
 	"google.golang.org/grpc/resolver"
 	"google.golang.org/grpc/serviceconfig"
-
-	_ "google.golang.org/grpc/balancer/pickfirst/pickfirstleaf" // For automatically registering the new pickfirst if required.
 )
 
 func init() {
-	if envconfig.NewPickFirstEnabled {
-		return
-	}
 	balancer.Register(pickfirstBuilder{})
 }
 
-var logger = grpclog.Component("pick-first-lb")
+// Name is the name of the pick_first balancer.
+const Name = "pick_first"
+
+// enableHealthListenerKeyType is a unique key type used in resolver
+// attributes to indicate whether the health listener usage is enabled.
+type enableHealthListenerKeyType struct{}
+
+var (
+	logger               = grpclog.Component("pick-first-leaf-lb")
+	disconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.disconnections",
+		Description: "EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.",
+		Unit:        "{disconnection}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+	connectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.connection_attempts_succeeded",
+		Description: "EXPERIMENTAL. Number of successful connection attempts.",
+		Unit:        "{attempt}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+	connectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
+		Name:        "grpc.lb.pick_first.connection_attempts_failed",
+		Description: "EXPERIMENTAL. Number of failed connection attempts.",
+		Unit:        "{attempt}",
+		Labels:      []string{"grpc.target"},
+		Default:     false,
+	})
+)
 
 const (
-	// Name is the name of the pick_first balancer.
-	Name      = "pick_first"
-	logPrefix = "[pick-first-lb %p] "
+	// TODO: change to pick-first when this becomes the default pick_first policy.
+	logPrefix = "[pick-first-leaf-lb %p] "
+	// connectionDelayInterval is the time to wait for during the happy eyeballs
+	// pass before starting the next connection attempt.
+	connectionDelayInterval = 250 * time.Millisecond
+)
+
+type ipAddrFamily int
+
+const (
+	// ipAddrFamilyUnknown represents strings that can't be parsed as an IP
+	// address.
+	ipAddrFamilyUnknown ipAddrFamily = iota
+	ipAddrFamilyV4
+	ipAddrFamilyV6
 )
 
 type pickfirstBuilder struct{}
 
-func (pickfirstBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer {
-	b := &pickfirstBalancer{cc: cc}
+func (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {
+	b := &pickfirstBalancer{
+		cc:              cc,
+		target:          bo.Target.String(),
+		metricsRecorder: cc.MetricsRecorder(),
+
+		subConns:              resolver.NewAddressMapV2[*scData](),
+		state:                 connectivity.Connecting,
+		cancelConnectionTimer: func() {},
+	}
 	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
 	return b
 }
 
-func (pickfirstBuilder) Name() string {
+func (b pickfirstBuilder) Name() string {
 	return Name
 }
 
+func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
+	var cfg pfConfig
+	if err := json.Unmarshal(js, &cfg); err != nil {
+		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
+	}
+	return cfg, nil
+}
+
+// EnableHealthListener updates the state to configure pickfirst for using a
+// generic health listener.
+//
+// # Experimental
+//
+// Notice: This API is EXPERIMENTAL and may be changed or removed in a later
+// release.
+func EnableHealthListener(state resolver.State) resolver.State {
+	state.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)
+	return state
+}
+
 type pfConfig struct {
 	serviceconfig.LoadBalancingConfig `json:"-"`
 
@@ -74,90 +143,129 @@
 	ShuffleAddressList bool `json:"shuffleAddressList"`
 }
 
-func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
-	var cfg pfConfig
-	if err := json.Unmarshal(js, &cfg); err != nil {
-		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
+// scData keeps track of the current state of the subConn.
+// It is not safe for concurrent access.
+type scData struct {
+	// The following fields are initialized at build time and read-only after
+	// that.
+	subConn balancer.SubConn
+	addr    resolver.Address
+
+	rawConnectivityState connectivity.State
+	// The effective connectivity state based on raw connectivity, health state
+	// and after following sticky TransientFailure behaviour defined in A62.
+	effectiveState              connectivity.State
+	lastErr                     error
+	connectionFailedInFirstPass bool
+}
+
+func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {
+	sd := &scData{
+		rawConnectivityState: connectivity.Idle,
+		effectiveState:       connectivity.Idle,
+		addr:                 addr,
 	}
-	return cfg, nil
+	sc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{
+		StateListener: func(state balancer.SubConnState) {
+			b.updateSubConnState(sd, state)
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	sd.subConn = sc
+	return sd, nil
 }
 
 type pickfirstBalancer struct {
-	logger  *internalgrpclog.PrefixLogger
-	state   connectivity.State
-	cc      balancer.ClientConn
-	subConn balancer.SubConn
+	// The following fields are initialized at build time and read-only after
+	// that and therefore do not need to be guarded by a mutex.
+	logger          *internalgrpclog.PrefixLogger
+	cc              balancer.ClientConn
+	target          string
+	metricsRecorder expstats.MetricsRecorder // guaranteed to be non nil
+
+	// The mutex is used to ensure synchronization of updates triggered
+	// from the idle picker and the already serialized resolver,
+	// SubConn state updates.
+	mu sync.Mutex
+	// State reported to the channel based on SubConn states and resolver
+	// updates.
+	state connectivity.State
+	// scData for active subonns mapped by address.
+	subConns              *resolver.AddressMapV2[*scData]
+	addressList           addressList
+	firstPass             bool
+	numTF                 int
+	cancelConnectionTimer func()
+	healthCheckingEnabled bool
 }
 
+// ResolverError is called by the ClientConn when the name resolver produces
+// an error or when pickfirst determined the resolver update to be invalid.
 func (b *pickfirstBalancer) ResolverError(err error) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.resolverErrorLocked(err)
+}
+
+func (b *pickfirstBalancer) resolverErrorLocked(err error) {
 	if b.logger.V(2) {
 		b.logger.Infof("Received error from the name resolver: %v", err)
 	}
-	if b.subConn == nil {
-		b.state = connectivity.TransientFailure
-	}
 
-	if b.state != connectivity.TransientFailure {
-		// The picker will not change since the balancer does not currently
-		// report an error.
+	// The picker will not change since the balancer does not currently
+	// report an error. If the balancer hasn't received a single good resolver
+	// update yet, transition to TRANSIENT_FAILURE.
+	if b.state != connectivity.TransientFailure && b.addressList.size() > 0 {
+		if b.logger.V(2) {
+			b.logger.Infof("Ignoring resolver error because balancer is using a previous good update.")
+		}
 		return
 	}
-	b.cc.UpdateState(balancer.State{
+
+	b.updateBalancerState(balancer.State{
 		ConnectivityState: connectivity.TransientFailure,
 		Picker:            &picker{err: fmt.Errorf("name resolver error: %v", err)},
 	})
 }
 
-// Shuffler is an interface for shuffling an address list.
-type Shuffler interface {
-	ShuffleAddressListForTesting(n int, swap func(i, j int))
-}
-
-// ShuffleAddressListForTesting pseudo-randomizes the order of addresses.  n
-// is the number of elements.  swap swaps the elements with indexes i and j.
-func ShuffleAddressListForTesting(n int, swap func(i, j int)) { rand.Shuffle(n, swap) }
-
 func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.cancelConnectionTimer()
 	if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
-		// The resolver reported an empty address list. Treat it like an error by
-		// calling b.ResolverError.
-		if b.subConn != nil {
-			// Shut down the old subConn. All addresses were removed, so it is
-			// no longer valid.
-			b.subConn.Shutdown()
-			b.subConn = nil
-		}
-		b.ResolverError(errors.New("produced zero addresses"))
+		// Cleanup state pertaining to the previous resolver state.
+		// Treat an empty address list like an error by calling b.ResolverError.
+		b.closeSubConnsLocked()
+		b.addressList.updateAddrs(nil)
+		b.resolverErrorLocked(errors.New("produced zero addresses"))
 		return balancer.ErrBadResolverState
 	}
-	// We don't have to guard this block with the env var because ParseConfig
-	// already does so.
+	b.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil
 	cfg, ok := state.BalancerConfig.(pfConfig)
 	if state.BalancerConfig != nil && !ok {
-		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig)
+		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v: %w", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)
 	}
 
 	if b.logger.V(2) {
 		b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
 	}
 
-	var addrs []resolver.Address
+	var newAddrs []resolver.Address
 	if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
-		// Perform the optional shuffling described in gRFC A62. The shuffling will
-		// change the order of endpoints but not touch the order of the addresses
-		// within each endpoint. - A61
+		// Perform the optional shuffling described in gRFC A62. The shuffling
+		// will change the order of endpoints but not touch the order of the
+		// addresses within each endpoint. - A61
 		if cfg.ShuffleAddressList {
 			endpoints = append([]resolver.Endpoint{}, endpoints...)
 			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
 		}
 
-		// "Flatten the list by concatenating the ordered list of addresses for each
-		// of the endpoints, in order." - A61
+		// "Flatten the list by concatenating the ordered list of addresses for
+		// each of the endpoints, in order." - A61
 		for _, endpoint := range endpoints {
-			// "In the flattened list, interleave addresses from the two address
-			// families, as per RFC-8304 section 4." - A61
-			// TODO: support the above language.
-			addrs = append(addrs, endpoint.Addresses...)
+			newAddrs = append(newAddrs, endpoint.Addresses...)
 		}
 	} else {
 		// Endpoints not set, process addresses until we migrate resolver
@@ -166,42 +274,53 @@
 		// target do not forward the corresponding correct endpoints down/split
 		// endpoints properly. Once all balancers correctly forward endpoints
 		// down, can delete this else conditional.
-		addrs = state.ResolverState.Addresses
+		newAddrs = state.ResolverState.Addresses
 		if cfg.ShuffleAddressList {
-			addrs = append([]resolver.Address{}, addrs...)
-			internal.RandShuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] })
+			newAddrs = append([]resolver.Address{}, newAddrs...)
+			internal.RandShuffle(len(newAddrs), func(i, j int) { newAddrs[i], newAddrs[j] = newAddrs[j], newAddrs[i] })
 		}
 	}
 
-	if b.subConn != nil {
-		b.cc.UpdateAddresses(b.subConn, addrs)
+	// If an address appears in multiple endpoints or in the same endpoint
+	// multiple times, we keep it only once. We will create only one SubConn
+	// for the address because an AddressMap is used to store SubConns.
+	// Not de-duplicating would result in attempting to connect to the same
+	// SubConn multiple times in the same pass. We don't want this.
+	newAddrs = deDupAddresses(newAddrs)
+	newAddrs = interleaveAddresses(newAddrs)
+
+	prevAddr := b.addressList.currentAddress()
+	prevSCData, found := b.subConns.Get(prevAddr)
+	prevAddrsCount := b.addressList.size()
+	isPrevRawConnectivityStateReady := found && prevSCData.rawConnectivityState == connectivity.Ready
+	b.addressList.updateAddrs(newAddrs)
+
+	// If the previous ready SubConn exists in new address list,
+	// keep this connection and don't create new SubConns.
+	if isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {
 		return nil
 	}
 
-	var subConn balancer.SubConn
-	subConn, err := b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{
-		StateListener: func(state balancer.SubConnState) {
-			b.updateSubConnState(subConn, state)
-		},
-	})
-	if err != nil {
-		if b.logger.V(2) {
-			b.logger.Infof("Failed to create new SubConn: %v", err)
-		}
-		b.state = connectivity.TransientFailure
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: connectivity.TransientFailure,
-			Picker:            &picker{err: fmt.Errorf("error creating connection: %v", err)},
+	b.reconcileSubConnsLocked(newAddrs)
+	// If it's the first resolver update or the balancer was already READY
+	// (but the new address list does not contain the ready SubConn) or
+	// CONNECTING, enter CONNECTING.
+	// We may be in TRANSIENT_FAILURE due to a previous empty address list,
+	// we should still enter CONNECTING because the sticky TF behaviour
+	//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported
+	// due to connectivity failures.
+	if isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {
+		// Start connection attempt at first address.
+		b.forceUpdateConcludedStateLocked(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
 		})
-		return balancer.ErrBadResolverState
+		b.startFirstPassLocked()
+	} else if b.state == connectivity.TransientFailure {
+		// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until
+		// we're READY. See A62.
+		b.startFirstPassLocked()
 	}
-	b.subConn = subConn
-	b.state = connectivity.Idle
-	b.cc.UpdateState(balancer.State{
-		ConnectivityState: connectivity.Connecting,
-		Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-	})
-	b.subConn.Connect()
 	return nil
 }
 
@@ -211,63 +330,484 @@
 	b.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", subConn, state)
 }
 
-func (b *pickfirstBalancer) updateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {
-	if b.logger.V(2) {
-		b.logger.Infof("Received SubConn state update: %p, %+v", subConn, state)
-	}
-	if b.subConn != subConn {
-		if b.logger.V(2) {
-			b.logger.Infof("Ignored state change because subConn is not recognized")
-		}
-		return
-	}
-	if state.ConnectivityState == connectivity.Shutdown {
-		b.subConn = nil
-		return
-	}
+func (b *pickfirstBalancer) Close() {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	b.closeSubConnsLocked()
+	b.cancelConnectionTimer()
+	b.state = connectivity.Shutdown
+}
 
-	switch state.ConnectivityState {
-	case connectivity.Ready:
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &picker{result: balancer.PickResult{SubConn: subConn}},
-		})
-	case connectivity.Connecting:
-		if b.state == connectivity.TransientFailure {
-			// We stay in TransientFailure until we are Ready. See A62.
-			return
-		}
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
+// ExitIdle moves the balancer out of idle state. It can be called concurrently
+// by the idlePicker and clientConn so access to variables should be
+// synchronized.
+func (b *pickfirstBalancer) ExitIdle() {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	if b.state == connectivity.Idle {
+		// Move the balancer into CONNECTING state immediately. This is done to
+		// avoid staying in IDLE if a resolver update arrives before the first
+		// SubConn reports CONNECTING.
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
 			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
 		})
-	case connectivity.Idle:
-		if b.state == connectivity.TransientFailure {
-			// We stay in TransientFailure until we are Ready. Also kick the
-			// subConn out of Idle into Connecting. See A62.
-			b.subConn.Connect()
+		b.startFirstPassLocked()
+	}
+}
+
+func (b *pickfirstBalancer) startFirstPassLocked() {
+	b.firstPass = true
+	b.numTF = 0
+	// Reset the connection attempt record for existing SubConns.
+	for _, sd := range b.subConns.Values() {
+		sd.connectionFailedInFirstPass = false
+	}
+	b.requestConnectionLocked()
+}
+
+func (b *pickfirstBalancer) closeSubConnsLocked() {
+	for _, sd := range b.subConns.Values() {
+		sd.subConn.Shutdown()
+	}
+	b.subConns = resolver.NewAddressMapV2[*scData]()
+}
+
+// deDupAddresses ensures that each address appears only once in the slice.
+func deDupAddresses(addrs []resolver.Address) []resolver.Address {
+	seenAddrs := resolver.NewAddressMapV2[bool]()
+	retAddrs := []resolver.Address{}
+
+	for _, addr := range addrs {
+		if _, ok := seenAddrs.Get(addr); ok {
+			continue
+		}
+		seenAddrs.Set(addr, true)
+		retAddrs = append(retAddrs, addr)
+	}
+	return retAddrs
+}
+
+// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)
+// as per RFC-8305 section 4.
+// Whichever address family is first in the list is followed by an address of
+// the other address family; that is, if the first address in the list is IPv6,
+// then the first IPv4 address should be moved up in the list to be second in
+// the list. It doesn't support configuring "First Address Family Count", i.e.
+// there will always be a single member of the first address family at the
+// beginning of the interleaved list.
+// Addresses that are neither IPv4 nor IPv6 are treated as part of a third
+// "unknown" family for interleaving.
+// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6
+func interleaveAddresses(addrs []resolver.Address) []resolver.Address {
+	familyAddrsMap := map[ipAddrFamily][]resolver.Address{}
+	interleavingOrder := []ipAddrFamily{}
+	for _, addr := range addrs {
+		family := addressFamily(addr.Addr)
+		if _, found := familyAddrsMap[family]; !found {
+			interleavingOrder = append(interleavingOrder, family)
+		}
+		familyAddrsMap[family] = append(familyAddrsMap[family], addr)
+	}
+
+	interleavedAddrs := make([]resolver.Address, 0, len(addrs))
+
+	for curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {
+		// Some IP types may have fewer addresses than others, so we look for
+		// the next type that has a remaining member to add to the interleaved
+		// list.
+		family := interleavingOrder[curFamilyIdx]
+		remainingMembers := familyAddrsMap[family]
+		if len(remainingMembers) > 0 {
+			interleavedAddrs = append(interleavedAddrs, remainingMembers[0])
+			familyAddrsMap[family] = remainingMembers[1:]
+		}
+	}
+
+	return interleavedAddrs
+}
+
+// addressFamily returns the ipAddrFamily after parsing the address string.
+// If the address isn't of the format "ip-address:port", it returns
+// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when
+// using a resolver like passthrough where the address may be a hostname in
+// some format that the dialer can resolve.
+func addressFamily(address string) ipAddrFamily {
+	// Parse the IP after removing the port.
+	host, _, err := net.SplitHostPort(address)
+	if err != nil {
+		return ipAddrFamilyUnknown
+	}
+	ip, err := netip.ParseAddr(host)
+	if err != nil {
+		return ipAddrFamilyUnknown
+	}
+	switch {
+	case ip.Is4() || ip.Is4In6():
+		return ipAddrFamilyV4
+	case ip.Is6():
+		return ipAddrFamilyV6
+	default:
+		return ipAddrFamilyUnknown
+	}
+}
+
+// reconcileSubConnsLocked updates the active subchannels based on a new address
+// list from the resolver. It does this by:
+//   - closing subchannels: any existing subchannels associated with addresses
+//     that are no longer in the updated list are shut down.
+//   - removing subchannels: entries for these closed subchannels are removed
+//     from the subchannel map.
+//
+// This ensures that the subchannel map accurately reflects the current set of
+// addresses received from the name resolver.
+func (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {
+	newAddrsMap := resolver.NewAddressMapV2[bool]()
+	for _, addr := range newAddrs {
+		newAddrsMap.Set(addr, true)
+	}
+
+	for _, oldAddr := range b.subConns.Keys() {
+		if _, ok := newAddrsMap.Get(oldAddr); ok {
+			continue
+		}
+		val, _ := b.subConns.Get(oldAddr)
+		val.subConn.Shutdown()
+		b.subConns.Delete(oldAddr)
+	}
+}
+
+// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn
+// becomes ready, which means that all other subConn must be shutdown.
+func (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {
+	b.cancelConnectionTimer()
+	for _, sd := range b.subConns.Values() {
+		if sd.subConn != selected.subConn {
+			sd.subConn.Shutdown()
+		}
+	}
+	b.subConns = resolver.NewAddressMapV2[*scData]()
+	b.subConns.Set(selected.addr, selected)
+}
+
+// requestConnectionLocked starts connecting on the subchannel corresponding to
+// the current address. If no subchannel exists, one is created. If the current
+// subchannel is in TransientFailure, a connection to the next address is
+// attempted until a subchannel is found.
+func (b *pickfirstBalancer) requestConnectionLocked() {
+	if !b.addressList.isValid() {
+		return
+	}
+	var lastErr error
+	for valid := true; valid; valid = b.addressList.increment() {
+		curAddr := b.addressList.currentAddress()
+		sd, ok := b.subConns.Get(curAddr)
+		if !ok {
+			var err error
+			// We want to assign the new scData to sd from the outer scope,
+			// hence we can't use := below.
+			sd, err = b.newSCData(curAddr)
+			if err != nil {
+				// This should never happen, unless the clientConn is being shut
+				// down.
+				if b.logger.V(2) {
+					b.logger.Infof("Failed to create a subConn for address %v: %v", curAddr.String(), err)
+				}
+				// Do nothing, the LB policy will be closed soon.
+				return
+			}
+			b.subConns.Set(curAddr, sd)
+		}
+
+		switch sd.rawConnectivityState {
+		case connectivity.Idle:
+			sd.subConn.Connect()
+			b.scheduleNextConnectionLocked()
+			return
+		case connectivity.TransientFailure:
+			// The SubConn is being re-used and failed during a previous pass
+			// over the addressList. It has not completed backoff yet.
+			// Mark it as having failed and try the next address.
+			sd.connectionFailedInFirstPass = true
+			lastErr = sd.lastErr
+			continue
+		case connectivity.Connecting:
+			// Wait for the connection attempt to complete or the timer to fire
+			// before attempting the next address.
+			b.scheduleNextConnectionLocked()
+			return
+		default:
+			b.logger.Errorf("SubConn with unexpected state %v present in SubConns map.", sd.rawConnectivityState)
+			return
+
+		}
+	}
+
+	// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the
+	// first pass if possible.
+	b.endFirstPassIfPossibleLocked(lastErr)
+}
+
+func (b *pickfirstBalancer) scheduleNextConnectionLocked() {
+	b.cancelConnectionTimer()
+	if !b.addressList.hasNext() {
+		return
+	}
+	curAddr := b.addressList.currentAddress()
+	cancelled := false // Access to this is protected by the balancer's mutex.
+	closeFn := internal.TimeAfterFunc(connectionDelayInterval, func() {
+		b.mu.Lock()
+		defer b.mu.Unlock()
+		// If the scheduled task is cancelled while acquiring the mutex, return.
+		if cancelled {
 			return
 		}
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &idlePicker{subConn: subConn},
+		if b.logger.V(2) {
+			b.logger.Infof("Happy Eyeballs timer expired while waiting for connection to %q.", curAddr.Addr)
+		}
+		if b.addressList.increment() {
+			b.requestConnectionLocked()
+		}
+	})
+	// Access to the cancellation callback held by the balancer is guarded by
+	// the balancer's mutex, so it's safe to set the boolean from the callback.
+	b.cancelConnectionTimer = sync.OnceFunc(func() {
+		cancelled = true
+		closeFn()
+	})
+}
+
+func (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	oldState := sd.rawConnectivityState
+	sd.rawConnectivityState = newState.ConnectivityState
+	// Previously relevant SubConns can still callback with state updates.
+	// To prevent pickers from returning these obsolete SubConns, this logic
+	// is included to check if the current list of active SubConns includes this
+	// SubConn.
+	if !b.isActiveSCData(sd) {
+		return
+	}
+	if newState.ConnectivityState == connectivity.Shutdown {
+		sd.effectiveState = connectivity.Shutdown
+		return
+	}
+
+	// Record a connection attempt when exiting CONNECTING.
+	if newState.ConnectivityState == connectivity.TransientFailure {
+		sd.connectionFailedInFirstPass = true
+		connectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)
+	}
+
+	if newState.ConnectivityState == connectivity.Ready {
+		connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
+		b.shutdownRemainingLocked(sd)
+		if !b.addressList.seekTo(sd.addr) {
+			// This should not fail as we should have only one SubConn after
+			// entering READY. The SubConn should be present in the addressList.
+			b.logger.Errorf("Address %q not found address list in %v", sd.addr, b.addressList.addresses)
+			return
+		}
+		if !b.healthCheckingEnabled {
+			if b.logger.V(2) {
+				b.logger.Infof("SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.", sd.subConn)
+			}
+
+			sd.effectiveState = connectivity.Ready
+			b.updateBalancerState(balancer.State{
+				ConnectivityState: connectivity.Ready,
+				Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
+			})
+			return
+		}
+		if b.logger.V(2) {
+			b.logger.Infof("SubConn %p reported connectivity state READY. Registering health listener.", sd.subConn)
+		}
+		// Send a CONNECTING update to take the SubConn out of sticky-TF if
+		// required.
+		sd.effectiveState = connectivity.Connecting
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+		})
+		sd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {
+			b.updateSubConnHealthState(sd, scs)
+		})
+		return
+	}
+
+	// If the LB policy is READY, and it receives a subchannel state change,
+	// it means that the READY subchannel has failed.
+	// A SubConn can also transition from CONNECTING directly to IDLE when
+	// a transport is successfully created, but the connection fails
+	// before the SubConn can send the notification for READY. We treat
+	// this as a successful connection and transition to IDLE.
+	// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second
+	// part of the if condition below once the issue is fixed.
+	if oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {
+		// Once a transport fails, the balancer enters IDLE and starts from
+		// the first address when the picker is used.
+		b.shutdownRemainingLocked(sd)
+		sd.effectiveState = newState.ConnectivityState
+		// READY SubConn interspliced in between CONNECTING and IDLE, need to
+		// account for that.
+		if oldState == connectivity.Connecting {
+			// A known issue (https://github.com/grpc/grpc-go/issues/7862)
+			// causes a race that prevents the READY state change notification.
+			// This works around it.
+			connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
+		}
+		disconnectionsMetric.Record(b.metricsRecorder, 1, b.target)
+		b.addressList.reset()
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Idle,
+			Picker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},
+		})
+		return
+	}
+
+	if b.firstPass {
+		switch newState.ConnectivityState {
+		case connectivity.Connecting:
+			// The effective state can be in either IDLE, CONNECTING or
+			// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in
+			// TRANSIENT_FAILURE until it's READY. See A62.
+			if sd.effectiveState != connectivity.TransientFailure {
+				sd.effectiveState = connectivity.Connecting
+				b.updateBalancerState(balancer.State{
+					ConnectivityState: connectivity.Connecting,
+					Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+				})
+			}
+		case connectivity.TransientFailure:
+			sd.lastErr = newState.ConnectionError
+			sd.effectiveState = connectivity.TransientFailure
+			// Since we're re-using common SubConns while handling resolver
+			// updates, we could receive an out of turn TRANSIENT_FAILURE from
+			// a pass over the previous address list. Happy Eyeballs will also
+			// cause out of order updates to arrive.
+
+			if curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {
+				b.cancelConnectionTimer()
+				if b.addressList.increment() {
+					b.requestConnectionLocked()
+					return
+				}
+			}
+
+			// End the first pass if we've seen a TRANSIENT_FAILURE from all
+			// SubConns once.
+			b.endFirstPassIfPossibleLocked(newState.ConnectionError)
+		}
+		return
+	}
+
+	// We have finished the first pass, keep re-connecting failing SubConns.
+	switch newState.ConnectivityState {
+	case connectivity.TransientFailure:
+		b.numTF = (b.numTF + 1) % b.subConns.Len()
+		sd.lastErr = newState.ConnectionError
+		if b.numTF%b.subConns.Len() == 0 {
+			b.updateBalancerState(balancer.State{
+				ConnectivityState: connectivity.TransientFailure,
+				Picker:            &picker{err: newState.ConnectionError},
+			})
+		}
+		// We don't need to request re-resolution since the SubConn already
+		// does that before reporting TRANSIENT_FAILURE.
+		// TODO: #7534 - Move re-resolution requests from SubConn into
+		// pick_first.
+	case connectivity.Idle:
+		sd.subConn.Connect()
+	}
+}
+
+// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the
+// addresses are tried and their SubConns have reported a failure.
+func (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {
+	// An optimization to avoid iterating over the entire SubConn map.
+	if b.addressList.isValid() {
+		return
+	}
+	// Connect() has been called on all the SubConns. The first pass can be
+	// ended if all the SubConns have reported a failure.
+	for _, sd := range b.subConns.Values() {
+		if !sd.connectionFailedInFirstPass {
+			return
+		}
+	}
+	b.firstPass = false
+	b.updateBalancerState(balancer.State{
+		ConnectivityState: connectivity.TransientFailure,
+		Picker:            &picker{err: lastErr},
+	})
+	// Start re-connecting all the SubConns that are already in IDLE.
+	for _, sd := range b.subConns.Values() {
+		if sd.rawConnectivityState == connectivity.Idle {
+			sd.subConn.Connect()
+		}
+	}
+}
+
+func (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {
+	activeSD, found := b.subConns.Get(sd.addr)
+	return found && activeSD == sd
+}
+
+func (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {
+	b.mu.Lock()
+	defer b.mu.Unlock()
+	// Previously relevant SubConns can still callback with state updates.
+	// To prevent pickers from returning these obsolete SubConns, this logic
+	// is included to check if the current list of active SubConns includes
+	// this SubConn.
+	if !b.isActiveSCData(sd) {
+		return
+	}
+	sd.effectiveState = state.ConnectivityState
+	switch state.ConnectivityState {
+	case connectivity.Ready:
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Ready,
+			Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
 		})
 	case connectivity.TransientFailure:
-		b.cc.UpdateState(balancer.State{
-			ConnectivityState: state.ConnectivityState,
-			Picker:            &picker{err: state.ConnectionError},
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.TransientFailure,
+			Picker:            &picker{err: fmt.Errorf("pickfirst: health check failure: %v", state.ConnectionError)},
 		})
+	case connectivity.Connecting:
+		b.updateBalancerState(balancer.State{
+			ConnectivityState: connectivity.Connecting,
+			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
+		})
+	default:
+		b.logger.Errorf("Got unexpected health update for SubConn %p: %v", state)
 	}
-	b.state = state.ConnectivityState
 }
 
-func (b *pickfirstBalancer) Close() {
+// updateBalancerState stores the state reported to the channel and calls
+// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate
+// updates to the channel.
+func (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {
+	// In case of TransientFailures allow the picker to be updated to update
+	// the connectivity error, in all other cases don't send duplicate state
+	// updates.
+	if newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {
+		return
+	}
+	b.forceUpdateConcludedStateLocked(newState)
 }
 
-func (b *pickfirstBalancer) ExitIdle() {
-	if b.subConn != nil && b.state == connectivity.Idle {
-		b.subConn.Connect()
-	}
+// forceUpdateConcludedStateLocked stores the state reported to the channel and
+// calls ClientConn.UpdateState().
+// A separate function is defined to force update the ClientConn state since the
+// channel doesn't correctly assume that LB policies start in CONNECTING and
+// relies on LB policy to send an initial CONNECTING update.
+func (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {
+	b.state = newState.ConnectivityState
+	b.cc.UpdateState(newState)
 }
 
 type picker struct {
@@ -282,10 +822,87 @@
 // idlePicker is used when the SubConn is IDLE and kicks the SubConn into
 // CONNECTING when Pick is called.
 type idlePicker struct {
-	subConn balancer.SubConn
+	exitIdle func()
 }
 
 func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	i.subConn.Connect()
+	i.exitIdle()
 	return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
 }
+
+// addressList manages sequentially iterating over addresses present in a list
+// of endpoints. It provides a 1 dimensional view of the addresses present in
+// the endpoints.
+// This type is not safe for concurrent access.
+type addressList struct {
+	addresses []resolver.Address
+	idx       int
+}
+
+func (al *addressList) isValid() bool {
+	return al.idx < len(al.addresses)
+}
+
+func (al *addressList) size() int {
+	return len(al.addresses)
+}
+
+// increment moves to the next index in the address list.
+// This method returns false if it went off the list, true otherwise.
+func (al *addressList) increment() bool {
+	if !al.isValid() {
+		return false
+	}
+	al.idx++
+	return al.idx < len(al.addresses)
+}
+
+// currentAddress returns the current address pointed to in the addressList.
+// If the list is in an invalid state, it returns an empty address instead.
+func (al *addressList) currentAddress() resolver.Address {
+	if !al.isValid() {
+		return resolver.Address{}
+	}
+	return al.addresses[al.idx]
+}
+
+func (al *addressList) reset() {
+	al.idx = 0
+}
+
+func (al *addressList) updateAddrs(addrs []resolver.Address) {
+	al.addresses = addrs
+	al.reset()
+}
+
+// seekTo returns false if the needle was not found and the current index was
+// left unchanged.
+func (al *addressList) seekTo(needle resolver.Address) bool {
+	for ai, addr := range al.addresses {
+		if !equalAddressIgnoringBalAttributes(&addr, &needle) {
+			continue
+		}
+		al.idx = ai
+		return true
+	}
+	return false
+}
+
+// hasNext returns whether incrementing the addressList will result in moving
+// past the end of the list. If the list has already moved past the end, it
+// returns false.
+func (al *addressList) hasNext() bool {
+	if !al.isValid() {
+		return false
+	}
+	return al.idx+1 < len(al.addresses)
+}
+
+// equalAddressIgnoringBalAttributes returns true is a and b are considered
+// equal. This is different from the Equal method on the resolver.Address type
+// which considers all fields to determine equality. Here, we only consider
+// fields that are meaningful to the SubConn.
+func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
+	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
+		a.Attributes.Equal(b.Attributes)
+}
diff --git a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
deleted file mode 100644
index 9ffdd28..0000000
--- a/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirstleaf/pickfirstleaf.go
+++ /dev/null
@@ -1,913 +0,0 @@
-/*
- *
- * Copyright 2024 gRPC authors.
- *
- * 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 pickfirstleaf contains the pick_first load balancing policy which
-// will be the universal leaf policy after dualstack changes are implemented.
-//
-// # Experimental
-//
-// Notice: This package is EXPERIMENTAL and may be changed or removed in a
-// later release.
-package pickfirstleaf
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-	"net"
-	"net/netip"
-	"sync"
-	"time"
-
-	"google.golang.org/grpc/balancer"
-	"google.golang.org/grpc/balancer/pickfirst/internal"
-	"google.golang.org/grpc/connectivity"
-	expstats "google.golang.org/grpc/experimental/stats"
-	"google.golang.org/grpc/grpclog"
-	"google.golang.org/grpc/internal/envconfig"
-	internalgrpclog "google.golang.org/grpc/internal/grpclog"
-	"google.golang.org/grpc/internal/pretty"
-	"google.golang.org/grpc/resolver"
-	"google.golang.org/grpc/serviceconfig"
-)
-
-func init() {
-	if envconfig.NewPickFirstEnabled {
-		// Register as the default pick_first balancer.
-		Name = "pick_first"
-	}
-	balancer.Register(pickfirstBuilder{})
-}
-
-// enableHealthListenerKeyType is a unique key type used in resolver
-// attributes to indicate whether the health listener usage is enabled.
-type enableHealthListenerKeyType struct{}
-
-var (
-	logger = grpclog.Component("pick-first-leaf-lb")
-	// Name is the name of the pick_first_leaf balancer.
-	// It is changed to "pick_first" in init() if this balancer is to be
-	// registered as the default pickfirst.
-	Name                 = "pick_first_leaf"
-	disconnectionsMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.disconnections",
-		Description: "EXPERIMENTAL. Number of times the selected subchannel becomes disconnected.",
-		Unit:        "{disconnection}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-	connectionAttemptsSucceededMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.connection_attempts_succeeded",
-		Description: "EXPERIMENTAL. Number of successful connection attempts.",
-		Unit:        "{attempt}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-	connectionAttemptsFailedMetric = expstats.RegisterInt64Count(expstats.MetricDescriptor{
-		Name:        "grpc.lb.pick_first.connection_attempts_failed",
-		Description: "EXPERIMENTAL. Number of failed connection attempts.",
-		Unit:        "{attempt}",
-		Labels:      []string{"grpc.target"},
-		Default:     false,
-	})
-)
-
-const (
-	// TODO: change to pick-first when this becomes the default pick_first policy.
-	logPrefix = "[pick-first-leaf-lb %p] "
-	// connectionDelayInterval is the time to wait for during the happy eyeballs
-	// pass before starting the next connection attempt.
-	connectionDelayInterval = 250 * time.Millisecond
-)
-
-type ipAddrFamily int
-
-const (
-	// ipAddrFamilyUnknown represents strings that can't be parsed as an IP
-	// address.
-	ipAddrFamilyUnknown ipAddrFamily = iota
-	ipAddrFamilyV4
-	ipAddrFamilyV6
-)
-
-type pickfirstBuilder struct{}
-
-func (pickfirstBuilder) Build(cc balancer.ClientConn, bo balancer.BuildOptions) balancer.Balancer {
-	b := &pickfirstBalancer{
-		cc:              cc,
-		target:          bo.Target.String(),
-		metricsRecorder: cc.MetricsRecorder(),
-
-		subConns:              resolver.NewAddressMapV2[*scData](),
-		state:                 connectivity.Connecting,
-		cancelConnectionTimer: func() {},
-	}
-	b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b))
-	return b
-}
-
-func (b pickfirstBuilder) Name() string {
-	return Name
-}
-
-func (pickfirstBuilder) ParseConfig(js json.RawMessage) (serviceconfig.LoadBalancingConfig, error) {
-	var cfg pfConfig
-	if err := json.Unmarshal(js, &cfg); err != nil {
-		return nil, fmt.Errorf("pickfirst: unable to unmarshal LB policy config: %s, error: %v", string(js), err)
-	}
-	return cfg, nil
-}
-
-// EnableHealthListener updates the state to configure pickfirst for using a
-// generic health listener.
-func EnableHealthListener(state resolver.State) resolver.State {
-	state.Attributes = state.Attributes.WithValue(enableHealthListenerKeyType{}, true)
-	return state
-}
-
-type pfConfig struct {
-	serviceconfig.LoadBalancingConfig `json:"-"`
-
-	// If set to true, instructs the LB policy to shuffle the order of the list
-	// of endpoints received from the name resolver before attempting to
-	// connect to them.
-	ShuffleAddressList bool `json:"shuffleAddressList"`
-}
-
-// scData keeps track of the current state of the subConn.
-// It is not safe for concurrent access.
-type scData struct {
-	// The following fields are initialized at build time and read-only after
-	// that.
-	subConn balancer.SubConn
-	addr    resolver.Address
-
-	rawConnectivityState connectivity.State
-	// The effective connectivity state based on raw connectivity, health state
-	// and after following sticky TransientFailure behaviour defined in A62.
-	effectiveState              connectivity.State
-	lastErr                     error
-	connectionFailedInFirstPass bool
-}
-
-func (b *pickfirstBalancer) newSCData(addr resolver.Address) (*scData, error) {
-	sd := &scData{
-		rawConnectivityState: connectivity.Idle,
-		effectiveState:       connectivity.Idle,
-		addr:                 addr,
-	}
-	sc, err := b.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{
-		StateListener: func(state balancer.SubConnState) {
-			b.updateSubConnState(sd, state)
-		},
-	})
-	if err != nil {
-		return nil, err
-	}
-	sd.subConn = sc
-	return sd, nil
-}
-
-type pickfirstBalancer struct {
-	// The following fields are initialized at build time and read-only after
-	// that and therefore do not need to be guarded by a mutex.
-	logger          *internalgrpclog.PrefixLogger
-	cc              balancer.ClientConn
-	target          string
-	metricsRecorder expstats.MetricsRecorder // guaranteed to be non nil
-
-	// The mutex is used to ensure synchronization of updates triggered
-	// from the idle picker and the already serialized resolver,
-	// SubConn state updates.
-	mu sync.Mutex
-	// State reported to the channel based on SubConn states and resolver
-	// updates.
-	state connectivity.State
-	// scData for active subonns mapped by address.
-	subConns              *resolver.AddressMapV2[*scData]
-	addressList           addressList
-	firstPass             bool
-	numTF                 int
-	cancelConnectionTimer func()
-	healthCheckingEnabled bool
-}
-
-// ResolverError is called by the ClientConn when the name resolver produces
-// an error or when pickfirst determined the resolver update to be invalid.
-func (b *pickfirstBalancer) ResolverError(err error) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.resolverErrorLocked(err)
-}
-
-func (b *pickfirstBalancer) resolverErrorLocked(err error) {
-	if b.logger.V(2) {
-		b.logger.Infof("Received error from the name resolver: %v", err)
-	}
-
-	// The picker will not change since the balancer does not currently
-	// report an error. If the balancer hasn't received a single good resolver
-	// update yet, transition to TRANSIENT_FAILURE.
-	if b.state != connectivity.TransientFailure && b.addressList.size() > 0 {
-		if b.logger.V(2) {
-			b.logger.Infof("Ignoring resolver error because balancer is using a previous good update.")
-		}
-		return
-	}
-
-	b.updateBalancerState(balancer.State{
-		ConnectivityState: connectivity.TransientFailure,
-		Picker:            &picker{err: fmt.Errorf("name resolver error: %v", err)},
-	})
-}
-
-func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.cancelConnectionTimer()
-	if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
-		// Cleanup state pertaining to the previous resolver state.
-		// Treat an empty address list like an error by calling b.ResolverError.
-		b.closeSubConnsLocked()
-		b.addressList.updateAddrs(nil)
-		b.resolverErrorLocked(errors.New("produced zero addresses"))
-		return balancer.ErrBadResolverState
-	}
-	b.healthCheckingEnabled = state.ResolverState.Attributes.Value(enableHealthListenerKeyType{}) != nil
-	cfg, ok := state.BalancerConfig.(pfConfig)
-	if state.BalancerConfig != nil && !ok {
-		return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v: %w", state.BalancerConfig, state.BalancerConfig, balancer.ErrBadResolverState)
-	}
-
-	if b.logger.V(2) {
-		b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
-	}
-
-	var newAddrs []resolver.Address
-	if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
-		// Perform the optional shuffling described in gRFC A62. The shuffling
-		// will change the order of endpoints but not touch the order of the
-		// addresses within each endpoint. - A61
-		if cfg.ShuffleAddressList {
-			endpoints = append([]resolver.Endpoint{}, endpoints...)
-			internal.RandShuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
-		}
-
-		// "Flatten the list by concatenating the ordered list of addresses for
-		// each of the endpoints, in order." - A61
-		for _, endpoint := range endpoints {
-			newAddrs = append(newAddrs, endpoint.Addresses...)
-		}
-	} else {
-		// Endpoints not set, process addresses until we migrate resolver
-		// emissions fully to Endpoints. The top channel does wrap emitted
-		// addresses with endpoints, however some balancers such as weighted
-		// target do not forward the corresponding correct endpoints down/split
-		// endpoints properly. Once all balancers correctly forward endpoints
-		// down, can delete this else conditional.
-		newAddrs = state.ResolverState.Addresses
-		if cfg.ShuffleAddressList {
-			newAddrs = append([]resolver.Address{}, newAddrs...)
-			internal.RandShuffle(len(newAddrs), func(i, j int) { newAddrs[i], newAddrs[j] = newAddrs[j], newAddrs[i] })
-		}
-	}
-
-	// If an address appears in multiple endpoints or in the same endpoint
-	// multiple times, we keep it only once. We will create only one SubConn
-	// for the address because an AddressMap is used to store SubConns.
-	// Not de-duplicating would result in attempting to connect to the same
-	// SubConn multiple times in the same pass. We don't want this.
-	newAddrs = deDupAddresses(newAddrs)
-	newAddrs = interleaveAddresses(newAddrs)
-
-	prevAddr := b.addressList.currentAddress()
-	prevSCData, found := b.subConns.Get(prevAddr)
-	prevAddrsCount := b.addressList.size()
-	isPrevRawConnectivityStateReady := found && prevSCData.rawConnectivityState == connectivity.Ready
-	b.addressList.updateAddrs(newAddrs)
-
-	// If the previous ready SubConn exists in new address list,
-	// keep this connection and don't create new SubConns.
-	if isPrevRawConnectivityStateReady && b.addressList.seekTo(prevAddr) {
-		return nil
-	}
-
-	b.reconcileSubConnsLocked(newAddrs)
-	// If it's the first resolver update or the balancer was already READY
-	// (but the new address list does not contain the ready SubConn) or
-	// CONNECTING, enter CONNECTING.
-	// We may be in TRANSIENT_FAILURE due to a previous empty address list,
-	// we should still enter CONNECTING because the sticky TF behaviour
-	//  mentioned in A62 applies only when the TRANSIENT_FAILURE is reported
-	// due to connectivity failures.
-	if isPrevRawConnectivityStateReady || b.state == connectivity.Connecting || prevAddrsCount == 0 {
-		// Start connection attempt at first address.
-		b.forceUpdateConcludedStateLocked(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		b.startFirstPassLocked()
-	} else if b.state == connectivity.TransientFailure {
-		// If we're in TRANSIENT_FAILURE, we stay in TRANSIENT_FAILURE until
-		// we're READY. See A62.
-		b.startFirstPassLocked()
-	}
-	return nil
-}
-
-// UpdateSubConnState is unused as a StateListener is always registered when
-// creating SubConns.
-func (b *pickfirstBalancer) UpdateSubConnState(subConn balancer.SubConn, state balancer.SubConnState) {
-	b.logger.Errorf("UpdateSubConnState(%v, %+v) called unexpectedly", subConn, state)
-}
-
-func (b *pickfirstBalancer) Close() {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	b.closeSubConnsLocked()
-	b.cancelConnectionTimer()
-	b.state = connectivity.Shutdown
-}
-
-// ExitIdle moves the balancer out of idle state. It can be called concurrently
-// by the idlePicker and clientConn so access to variables should be
-// synchronized.
-func (b *pickfirstBalancer) ExitIdle() {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	if b.state == connectivity.Idle {
-		// Move the balancer into CONNECTING state immediately. This is done to
-		// avoid staying in IDLE if a resolver update arrives before the first
-		// SubConn reports CONNECTING.
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		b.startFirstPassLocked()
-	}
-}
-
-func (b *pickfirstBalancer) startFirstPassLocked() {
-	b.firstPass = true
-	b.numTF = 0
-	// Reset the connection attempt record for existing SubConns.
-	for _, sd := range b.subConns.Values() {
-		sd.connectionFailedInFirstPass = false
-	}
-	b.requestConnectionLocked()
-}
-
-func (b *pickfirstBalancer) closeSubConnsLocked() {
-	for _, sd := range b.subConns.Values() {
-		sd.subConn.Shutdown()
-	}
-	b.subConns = resolver.NewAddressMapV2[*scData]()
-}
-
-// deDupAddresses ensures that each address appears only once in the slice.
-func deDupAddresses(addrs []resolver.Address) []resolver.Address {
-	seenAddrs := resolver.NewAddressMapV2[*scData]()
-	retAddrs := []resolver.Address{}
-
-	for _, addr := range addrs {
-		if _, ok := seenAddrs.Get(addr); ok {
-			continue
-		}
-		retAddrs = append(retAddrs, addr)
-	}
-	return retAddrs
-}
-
-// interleaveAddresses interleaves addresses of both families (IPv4 and IPv6)
-// as per RFC-8305 section 4.
-// Whichever address family is first in the list is followed by an address of
-// the other address family; that is, if the first address in the list is IPv6,
-// then the first IPv4 address should be moved up in the list to be second in
-// the list. It doesn't support configuring "First Address Family Count", i.e.
-// there will always be a single member of the first address family at the
-// beginning of the interleaved list.
-// Addresses that are neither IPv4 nor IPv6 are treated as part of a third
-// "unknown" family for interleaving.
-// See: https://datatracker.ietf.org/doc/html/rfc8305#autoid-6
-func interleaveAddresses(addrs []resolver.Address) []resolver.Address {
-	familyAddrsMap := map[ipAddrFamily][]resolver.Address{}
-	interleavingOrder := []ipAddrFamily{}
-	for _, addr := range addrs {
-		family := addressFamily(addr.Addr)
-		if _, found := familyAddrsMap[family]; !found {
-			interleavingOrder = append(interleavingOrder, family)
-		}
-		familyAddrsMap[family] = append(familyAddrsMap[family], addr)
-	}
-
-	interleavedAddrs := make([]resolver.Address, 0, len(addrs))
-
-	for curFamilyIdx := 0; len(interleavedAddrs) < len(addrs); curFamilyIdx = (curFamilyIdx + 1) % len(interleavingOrder) {
-		// Some IP types may have fewer addresses than others, so we look for
-		// the next type that has a remaining member to add to the interleaved
-		// list.
-		family := interleavingOrder[curFamilyIdx]
-		remainingMembers := familyAddrsMap[family]
-		if len(remainingMembers) > 0 {
-			interleavedAddrs = append(interleavedAddrs, remainingMembers[0])
-			familyAddrsMap[family] = remainingMembers[1:]
-		}
-	}
-
-	return interleavedAddrs
-}
-
-// addressFamily returns the ipAddrFamily after parsing the address string.
-// If the address isn't of the format "ip-address:port", it returns
-// ipAddrFamilyUnknown. The address may be valid even if it's not an IP when
-// using a resolver like passthrough where the address may be a hostname in
-// some format that the dialer can resolve.
-func addressFamily(address string) ipAddrFamily {
-	// Parse the IP after removing the port.
-	host, _, err := net.SplitHostPort(address)
-	if err != nil {
-		return ipAddrFamilyUnknown
-	}
-	ip, err := netip.ParseAddr(host)
-	if err != nil {
-		return ipAddrFamilyUnknown
-	}
-	switch {
-	case ip.Is4() || ip.Is4In6():
-		return ipAddrFamilyV4
-	case ip.Is6():
-		return ipAddrFamilyV6
-	default:
-		return ipAddrFamilyUnknown
-	}
-}
-
-// reconcileSubConnsLocked updates the active subchannels based on a new address
-// list from the resolver. It does this by:
-//   - closing subchannels: any existing subchannels associated with addresses
-//     that are no longer in the updated list are shut down.
-//   - removing subchannels: entries for these closed subchannels are removed
-//     from the subchannel map.
-//
-// This ensures that the subchannel map accurately reflects the current set of
-// addresses received from the name resolver.
-func (b *pickfirstBalancer) reconcileSubConnsLocked(newAddrs []resolver.Address) {
-	newAddrsMap := resolver.NewAddressMapV2[bool]()
-	for _, addr := range newAddrs {
-		newAddrsMap.Set(addr, true)
-	}
-
-	for _, oldAddr := range b.subConns.Keys() {
-		if _, ok := newAddrsMap.Get(oldAddr); ok {
-			continue
-		}
-		val, _ := b.subConns.Get(oldAddr)
-		val.subConn.Shutdown()
-		b.subConns.Delete(oldAddr)
-	}
-}
-
-// shutdownRemainingLocked shuts down remaining subConns. Called when a subConn
-// becomes ready, which means that all other subConn must be shutdown.
-func (b *pickfirstBalancer) shutdownRemainingLocked(selected *scData) {
-	b.cancelConnectionTimer()
-	for _, sd := range b.subConns.Values() {
-		if sd.subConn != selected.subConn {
-			sd.subConn.Shutdown()
-		}
-	}
-	b.subConns = resolver.NewAddressMapV2[*scData]()
-	b.subConns.Set(selected.addr, selected)
-}
-
-// requestConnectionLocked starts connecting on the subchannel corresponding to
-// the current address. If no subchannel exists, one is created. If the current
-// subchannel is in TransientFailure, a connection to the next address is
-// attempted until a subchannel is found.
-func (b *pickfirstBalancer) requestConnectionLocked() {
-	if !b.addressList.isValid() {
-		return
-	}
-	var lastErr error
-	for valid := true; valid; valid = b.addressList.increment() {
-		curAddr := b.addressList.currentAddress()
-		sd, ok := b.subConns.Get(curAddr)
-		if !ok {
-			var err error
-			// We want to assign the new scData to sd from the outer scope,
-			// hence we can't use := below.
-			sd, err = b.newSCData(curAddr)
-			if err != nil {
-				// This should never happen, unless the clientConn is being shut
-				// down.
-				if b.logger.V(2) {
-					b.logger.Infof("Failed to create a subConn for address %v: %v", curAddr.String(), err)
-				}
-				// Do nothing, the LB policy will be closed soon.
-				return
-			}
-			b.subConns.Set(curAddr, sd)
-		}
-
-		switch sd.rawConnectivityState {
-		case connectivity.Idle:
-			sd.subConn.Connect()
-			b.scheduleNextConnectionLocked()
-			return
-		case connectivity.TransientFailure:
-			// The SubConn is being re-used and failed during a previous pass
-			// over the addressList. It has not completed backoff yet.
-			// Mark it as having failed and try the next address.
-			sd.connectionFailedInFirstPass = true
-			lastErr = sd.lastErr
-			continue
-		case connectivity.Connecting:
-			// Wait for the connection attempt to complete or the timer to fire
-			// before attempting the next address.
-			b.scheduleNextConnectionLocked()
-			return
-		default:
-			b.logger.Errorf("SubConn with unexpected state %v present in SubConns map.", sd.rawConnectivityState)
-			return
-
-		}
-	}
-
-	// All the remaining addresses in the list are in TRANSIENT_FAILURE, end the
-	// first pass if possible.
-	b.endFirstPassIfPossibleLocked(lastErr)
-}
-
-func (b *pickfirstBalancer) scheduleNextConnectionLocked() {
-	b.cancelConnectionTimer()
-	if !b.addressList.hasNext() {
-		return
-	}
-	curAddr := b.addressList.currentAddress()
-	cancelled := false // Access to this is protected by the balancer's mutex.
-	closeFn := internal.TimeAfterFunc(connectionDelayInterval, func() {
-		b.mu.Lock()
-		defer b.mu.Unlock()
-		// If the scheduled task is cancelled while acquiring the mutex, return.
-		if cancelled {
-			return
-		}
-		if b.logger.V(2) {
-			b.logger.Infof("Happy Eyeballs timer expired while waiting for connection to %q.", curAddr.Addr)
-		}
-		if b.addressList.increment() {
-			b.requestConnectionLocked()
-		}
-	})
-	// Access to the cancellation callback held by the balancer is guarded by
-	// the balancer's mutex, so it's safe to set the boolean from the callback.
-	b.cancelConnectionTimer = sync.OnceFunc(func() {
-		cancelled = true
-		closeFn()
-	})
-}
-
-func (b *pickfirstBalancer) updateSubConnState(sd *scData, newState balancer.SubConnState) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	oldState := sd.rawConnectivityState
-	sd.rawConnectivityState = newState.ConnectivityState
-	// Previously relevant SubConns can still callback with state updates.
-	// To prevent pickers from returning these obsolete SubConns, this logic
-	// is included to check if the current list of active SubConns includes this
-	// SubConn.
-	if !b.isActiveSCData(sd) {
-		return
-	}
-	if newState.ConnectivityState == connectivity.Shutdown {
-		sd.effectiveState = connectivity.Shutdown
-		return
-	}
-
-	// Record a connection attempt when exiting CONNECTING.
-	if newState.ConnectivityState == connectivity.TransientFailure {
-		sd.connectionFailedInFirstPass = true
-		connectionAttemptsFailedMetric.Record(b.metricsRecorder, 1, b.target)
-	}
-
-	if newState.ConnectivityState == connectivity.Ready {
-		connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
-		b.shutdownRemainingLocked(sd)
-		if !b.addressList.seekTo(sd.addr) {
-			// This should not fail as we should have only one SubConn after
-			// entering READY. The SubConn should be present in the addressList.
-			b.logger.Errorf("Address %q not found address list in %v", sd.addr, b.addressList.addresses)
-			return
-		}
-		if !b.healthCheckingEnabled {
-			if b.logger.V(2) {
-				b.logger.Infof("SubConn %p reported connectivity state READY and the health listener is disabled. Transitioning SubConn to READY.", sd.subConn)
-			}
-
-			sd.effectiveState = connectivity.Ready
-			b.updateBalancerState(balancer.State{
-				ConnectivityState: connectivity.Ready,
-				Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
-			})
-			return
-		}
-		if b.logger.V(2) {
-			b.logger.Infof("SubConn %p reported connectivity state READY. Registering health listener.", sd.subConn)
-		}
-		// Send a CONNECTING update to take the SubConn out of sticky-TF if
-		// required.
-		sd.effectiveState = connectivity.Connecting
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-		sd.subConn.RegisterHealthListener(func(scs balancer.SubConnState) {
-			b.updateSubConnHealthState(sd, scs)
-		})
-		return
-	}
-
-	// If the LB policy is READY, and it receives a subchannel state change,
-	// it means that the READY subchannel has failed.
-	// A SubConn can also transition from CONNECTING directly to IDLE when
-	// a transport is successfully created, but the connection fails
-	// before the SubConn can send the notification for READY. We treat
-	// this as a successful connection and transition to IDLE.
-	// TODO: https://github.com/grpc/grpc-go/issues/7862 - Remove the second
-	// part of the if condition below once the issue is fixed.
-	if oldState == connectivity.Ready || (oldState == connectivity.Connecting && newState.ConnectivityState == connectivity.Idle) {
-		// Once a transport fails, the balancer enters IDLE and starts from
-		// the first address when the picker is used.
-		b.shutdownRemainingLocked(sd)
-		sd.effectiveState = newState.ConnectivityState
-		// READY SubConn interspliced in between CONNECTING and IDLE, need to
-		// account for that.
-		if oldState == connectivity.Connecting {
-			// A known issue (https://github.com/grpc/grpc-go/issues/7862)
-			// causes a race that prevents the READY state change notification.
-			// This works around it.
-			connectionAttemptsSucceededMetric.Record(b.metricsRecorder, 1, b.target)
-		}
-		disconnectionsMetric.Record(b.metricsRecorder, 1, b.target)
-		b.addressList.reset()
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Idle,
-			Picker:            &idlePicker{exitIdle: sync.OnceFunc(b.ExitIdle)},
-		})
-		return
-	}
-
-	if b.firstPass {
-		switch newState.ConnectivityState {
-		case connectivity.Connecting:
-			// The effective state can be in either IDLE, CONNECTING or
-			// TRANSIENT_FAILURE. If it's  TRANSIENT_FAILURE, stay in
-			// TRANSIENT_FAILURE until it's READY. See A62.
-			if sd.effectiveState != connectivity.TransientFailure {
-				sd.effectiveState = connectivity.Connecting
-				b.updateBalancerState(balancer.State{
-					ConnectivityState: connectivity.Connecting,
-					Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-				})
-			}
-		case connectivity.TransientFailure:
-			sd.lastErr = newState.ConnectionError
-			sd.effectiveState = connectivity.TransientFailure
-			// Since we're re-using common SubConns while handling resolver
-			// updates, we could receive an out of turn TRANSIENT_FAILURE from
-			// a pass over the previous address list. Happy Eyeballs will also
-			// cause out of order updates to arrive.
-
-			if curAddr := b.addressList.currentAddress(); equalAddressIgnoringBalAttributes(&curAddr, &sd.addr) {
-				b.cancelConnectionTimer()
-				if b.addressList.increment() {
-					b.requestConnectionLocked()
-					return
-				}
-			}
-
-			// End the first pass if we've seen a TRANSIENT_FAILURE from all
-			// SubConns once.
-			b.endFirstPassIfPossibleLocked(newState.ConnectionError)
-		}
-		return
-	}
-
-	// We have finished the first pass, keep re-connecting failing SubConns.
-	switch newState.ConnectivityState {
-	case connectivity.TransientFailure:
-		b.numTF = (b.numTF + 1) % b.subConns.Len()
-		sd.lastErr = newState.ConnectionError
-		if b.numTF%b.subConns.Len() == 0 {
-			b.updateBalancerState(balancer.State{
-				ConnectivityState: connectivity.TransientFailure,
-				Picker:            &picker{err: newState.ConnectionError},
-			})
-		}
-		// We don't need to request re-resolution since the SubConn already
-		// does that before reporting TRANSIENT_FAILURE.
-		// TODO: #7534 - Move re-resolution requests from SubConn into
-		// pick_first.
-	case connectivity.Idle:
-		sd.subConn.Connect()
-	}
-}
-
-// endFirstPassIfPossibleLocked ends the first happy-eyeballs pass if all the
-// addresses are tried and their SubConns have reported a failure.
-func (b *pickfirstBalancer) endFirstPassIfPossibleLocked(lastErr error) {
-	// An optimization to avoid iterating over the entire SubConn map.
-	if b.addressList.isValid() {
-		return
-	}
-	// Connect() has been called on all the SubConns. The first pass can be
-	// ended if all the SubConns have reported a failure.
-	for _, sd := range b.subConns.Values() {
-		if !sd.connectionFailedInFirstPass {
-			return
-		}
-	}
-	b.firstPass = false
-	b.updateBalancerState(balancer.State{
-		ConnectivityState: connectivity.TransientFailure,
-		Picker:            &picker{err: lastErr},
-	})
-	// Start re-connecting all the SubConns that are already in IDLE.
-	for _, sd := range b.subConns.Values() {
-		if sd.rawConnectivityState == connectivity.Idle {
-			sd.subConn.Connect()
-		}
-	}
-}
-
-func (b *pickfirstBalancer) isActiveSCData(sd *scData) bool {
-	activeSD, found := b.subConns.Get(sd.addr)
-	return found && activeSD == sd
-}
-
-func (b *pickfirstBalancer) updateSubConnHealthState(sd *scData, state balancer.SubConnState) {
-	b.mu.Lock()
-	defer b.mu.Unlock()
-	// Previously relevant SubConns can still callback with state updates.
-	// To prevent pickers from returning these obsolete SubConns, this logic
-	// is included to check if the current list of active SubConns includes
-	// this SubConn.
-	if !b.isActiveSCData(sd) {
-		return
-	}
-	sd.effectiveState = state.ConnectivityState
-	switch state.ConnectivityState {
-	case connectivity.Ready:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Ready,
-			Picker:            &picker{result: balancer.PickResult{SubConn: sd.subConn}},
-		})
-	case connectivity.TransientFailure:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.TransientFailure,
-			Picker:            &picker{err: fmt.Errorf("pickfirst: health check failure: %v", state.ConnectionError)},
-		})
-	case connectivity.Connecting:
-		b.updateBalancerState(balancer.State{
-			ConnectivityState: connectivity.Connecting,
-			Picker:            &picker{err: balancer.ErrNoSubConnAvailable},
-		})
-	default:
-		b.logger.Errorf("Got unexpected health update for SubConn %p: %v", state)
-	}
-}
-
-// updateBalancerState stores the state reported to the channel and calls
-// ClientConn.UpdateState(). As an optimization, it avoids sending duplicate
-// updates to the channel.
-func (b *pickfirstBalancer) updateBalancerState(newState balancer.State) {
-	// In case of TransientFailures allow the picker to be updated to update
-	// the connectivity error, in all other cases don't send duplicate state
-	// updates.
-	if newState.ConnectivityState == b.state && b.state != connectivity.TransientFailure {
-		return
-	}
-	b.forceUpdateConcludedStateLocked(newState)
-}
-
-// forceUpdateConcludedStateLocked stores the state reported to the channel and
-// calls ClientConn.UpdateState().
-// A separate function is defined to force update the ClientConn state since the
-// channel doesn't correctly assume that LB policies start in CONNECTING and
-// relies on LB policy to send an initial CONNECTING update.
-func (b *pickfirstBalancer) forceUpdateConcludedStateLocked(newState balancer.State) {
-	b.state = newState.ConnectivityState
-	b.cc.UpdateState(newState)
-}
-
-type picker struct {
-	result balancer.PickResult
-	err    error
-}
-
-func (p *picker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	return p.result, p.err
-}
-
-// idlePicker is used when the SubConn is IDLE and kicks the SubConn into
-// CONNECTING when Pick is called.
-type idlePicker struct {
-	exitIdle func()
-}
-
-func (i *idlePicker) Pick(balancer.PickInfo) (balancer.PickResult, error) {
-	i.exitIdle()
-	return balancer.PickResult{}, balancer.ErrNoSubConnAvailable
-}
-
-// addressList manages sequentially iterating over addresses present in a list
-// of endpoints. It provides a 1 dimensional view of the addresses present in
-// the endpoints.
-// This type is not safe for concurrent access.
-type addressList struct {
-	addresses []resolver.Address
-	idx       int
-}
-
-func (al *addressList) isValid() bool {
-	return al.idx < len(al.addresses)
-}
-
-func (al *addressList) size() int {
-	return len(al.addresses)
-}
-
-// increment moves to the next index in the address list.
-// This method returns false if it went off the list, true otherwise.
-func (al *addressList) increment() bool {
-	if !al.isValid() {
-		return false
-	}
-	al.idx++
-	return al.idx < len(al.addresses)
-}
-
-// currentAddress returns the current address pointed to in the addressList.
-// If the list is in an invalid state, it returns an empty address instead.
-func (al *addressList) currentAddress() resolver.Address {
-	if !al.isValid() {
-		return resolver.Address{}
-	}
-	return al.addresses[al.idx]
-}
-
-func (al *addressList) reset() {
-	al.idx = 0
-}
-
-func (al *addressList) updateAddrs(addrs []resolver.Address) {
-	al.addresses = addrs
-	al.reset()
-}
-
-// seekTo returns false if the needle was not found and the current index was
-// left unchanged.
-func (al *addressList) seekTo(needle resolver.Address) bool {
-	for ai, addr := range al.addresses {
-		if !equalAddressIgnoringBalAttributes(&addr, &needle) {
-			continue
-		}
-		al.idx = ai
-		return true
-	}
-	return false
-}
-
-// hasNext returns whether incrementing the addressList will result in moving
-// past the end of the list. If the list has already moved past the end, it
-// returns false.
-func (al *addressList) hasNext() bool {
-	if !al.isValid() {
-		return false
-	}
-	return al.idx+1 < len(al.addresses)
-}
-
-// equalAddressIgnoringBalAttributes returns true is a and b are considered
-// equal. This is different from the Equal method on the resolver.Address type
-// which considers all fields to determine equality. Here, we only consider
-// fields that are meaningful to the SubConn.
-func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool {
-	return a.Addr == b.Addr && a.ServerName == b.ServerName &&
-		a.Attributes.Equal(b.Attributes)
-}
diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
index 22045bf..22e6e32 100644
--- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
+++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
@@ -26,7 +26,7 @@
 
 	"google.golang.org/grpc/balancer"
 	"google.golang.org/grpc/balancer/endpointsharding"
-	"google.golang.org/grpc/balancer/pickfirst/pickfirstleaf"
+	"google.golang.org/grpc/balancer/pickfirst"
 	"google.golang.org/grpc/grpclog"
 	internalgrpclog "google.golang.org/grpc/internal/grpclog"
 )
@@ -47,7 +47,7 @@
 }
 
 func (bb builder) Build(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer {
-	childBuilder := balancer.Get(pickfirstleaf.Name).Build
+	childBuilder := balancer.Get(pickfirst.Name).Build
 	bal := &rrBalancer{
 		cc:       cc,
 		Balancer: endpointsharding.NewBalancer(cc, opts, childBuilder, endpointsharding.Options{}),
@@ -67,6 +67,6 @@
 	return b.Balancer.UpdateClientConnState(balancer.ClientConnState{
 		// Enable the health listener in pickfirst children for client side health
 		// checks and outlier detection, if configured.
-		ResolverState: pickfirstleaf.EnableHealthListener(ccs.ResolverState),
+		ResolverState: pickfirst.EnableHealthListener(ccs.ResolverState),
 	})
 }
diff --git a/vendor/google.golang.org/grpc/balancer_wrapper.go b/vendor/google.golang.org/grpc/balancer_wrapper.go
index 948a21e..2c760e6 100644
--- a/vendor/google.golang.org/grpc/balancer_wrapper.go
+++ b/vendor/google.golang.org/grpc/balancer_wrapper.go
@@ -450,13 +450,14 @@
 	if acbw.ccb.cc.dopts.disableHealthCheck {
 		return noOpRegisterHealthListenerFn
 	}
+	cfg := acbw.ac.cc.healthCheckConfig()
+	if cfg == nil {
+		return noOpRegisterHealthListenerFn
+	}
 	regHealthLisFn := internal.RegisterClientHealthCheckListener
 	if regHealthLisFn == nil {
 		// The health package is not imported.
-		return noOpRegisterHealthListenerFn
-	}
-	cfg := acbw.ac.cc.healthCheckConfig()
-	if cfg == nil {
+		channelz.Error(logger, acbw.ac.channelz, "Health check is requested but health package is not imported.")
 		return noOpRegisterHealthListenerFn
 	}
 	return func(ctx context.Context, listener func(balancer.SubConnState)) func() {
diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
index b1364a0..42c61cf 100644
--- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
+++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go
@@ -18,7 +18,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/binlog/v1/binarylog.proto
 
diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go
index a3c315f..c0c2c9a 100644
--- a/vendor/google.golang.org/grpc/clientconn.go
+++ b/vendor/google.golang.org/grpc/clientconn.go
@@ -40,11 +40,12 @@
 	"google.golang.org/grpc/internal/grpcsync"
 	"google.golang.org/grpc/internal/idle"
 	iresolver "google.golang.org/grpc/internal/resolver"
-	"google.golang.org/grpc/internal/stats"
+	istats "google.golang.org/grpc/internal/stats"
 	"google.golang.org/grpc/internal/transport"
 	"google.golang.org/grpc/keepalive"
 	"google.golang.org/grpc/resolver"
 	"google.golang.org/grpc/serviceconfig"
+	"google.golang.org/grpc/stats"
 	"google.golang.org/grpc/status"
 
 	_ "google.golang.org/grpc/balancer/roundrobin"           // To register roundrobin.
@@ -210,7 +211,8 @@
 	cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelz)
 	cc.pickerWrapper = newPickerWrapper()
 
-	cc.metricsRecorderList = stats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)
+	cc.metricsRecorderList = istats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers)
+	cc.statsHandler = istats.NewCombinedHandler(cc.dopts.copts.StatsHandlers...)
 
 	cc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc.
 	cc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout)
@@ -621,7 +623,8 @@
 	channelz            *channelz.Channel // Channelz object.
 	resolverBuilder     resolver.Builder  // See initParsedTargetAndResolverBuilder().
 	idlenessMgr         *idle.Manager
-	metricsRecorderList *stats.MetricsRecorderList
+	metricsRecorderList *istats.MetricsRecorderList
+	statsHandler        stats.Handler
 
 	// The following provide their own synchronization, and therefore don't
 	// require cc.mu to be held to access them.
diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go
index c8e337c..06f6c6c 100644
--- a/vendor/google.golang.org/grpc/credentials/credentials.go
+++ b/vendor/google.golang.org/grpc/credentials/credentials.go
@@ -44,8 +44,7 @@
 	// A54). uri is the URI of the entry point for the request.  When supported
 	// by the underlying implementation, ctx can be used for timeout and
 	// cancellation. Additionally, RequestInfo data will be available via ctx
-	// to this call.  TODO(zhaoq): Define the set of the qualified keys instead
-	// of leaving it as an arbitrary string.
+	// to this call.
 	GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)
 	// RequireTransportSecurity indicates whether the credentials requires
 	// transport security.
diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go
index 11d0ae1..dadd21e 100644
--- a/vendor/google.golang.org/grpc/encoding/encoding.go
+++ b/vendor/google.golang.org/grpc/encoding/encoding.go
@@ -27,8 +27,10 @@
 
 import (
 	"io"
+	"slices"
 	"strings"
 
+	"google.golang.org/grpc/encoding/internal"
 	"google.golang.org/grpc/internal/grpcutil"
 )
 
@@ -36,6 +38,24 @@
 // It is intended for grpc internal use only.
 const Identity = "identity"
 
+func init() {
+	internal.RegisterCompressorForTesting = func(c Compressor) func() {
+		name := c.Name()
+		curCompressor, found := registeredCompressor[name]
+		RegisterCompressor(c)
+		return func() {
+			if found {
+				registeredCompressor[name] = curCompressor
+				return
+			}
+			delete(registeredCompressor, name)
+			grpcutil.RegisteredCompressorNames = slices.DeleteFunc(grpcutil.RegisteredCompressorNames, func(s string) bool {
+				return s == name
+			})
+		}
+	}
+}
+
 // Compressor is used for compressing and decompressing when sending or
 // receiving messages.
 //
diff --git a/vendor/google.golang.org/grpc/encoding/internal/internal.go b/vendor/google.golang.org/grpc/encoding/internal/internal.go
new file mode 100644
index 0000000..ee9acb4
--- /dev/null
+++ b/vendor/google.golang.org/grpc/encoding/internal/internal.go
@@ -0,0 +1,28 @@
+/*
+ *
+ * Copyright 2025 gRPC authors.
+ *
+ * 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 internal contains code internal to the encoding package.
+package internal
+
+// RegisterCompressorForTesting registers a compressor in the global compressor
+// registry. It returns a cleanup function that should be called at the end
+// of the test to unregister the compressor.
+//
+// This prevents compressors registered in one test from appearing in the
+// encoding headers of subsequent tests.
+var RegisterCompressorForTesting any // func RegisterCompressor(c Compressor) func()
diff --git a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
index ad75313..2b57ba6 100644
--- a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
+++ b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go
@@ -75,6 +75,7 @@
 	MetricTypeIntHisto
 	MetricTypeFloatHisto
 	MetricTypeIntGauge
+	MetricTypeIntUpDownCount
 )
 
 // Int64CountHandle is a typed handle for a int count metric. This handle
@@ -93,6 +94,23 @@
 	recorder.RecordInt64Count(h, incr, labels...)
 }
 
+// Int64UpDownCountHandle is a typed handle for an int up-down counter metric.
+// This handle is passed at the recording point in order to know which metric
+// to record on.
+type Int64UpDownCountHandle MetricDescriptor
+
+// Descriptor returns the int64 up-down counter handle typecast to a pointer to a
+// MetricDescriptor.
+func (h *Int64UpDownCountHandle) Descriptor() *MetricDescriptor {
+	return (*MetricDescriptor)(h)
+}
+
+// Record records the int64 up-down counter value on the metrics recorder provided.
+// The value 'v' can be positive to increment or negative to decrement.
+func (h *Int64UpDownCountHandle) Record(recorder MetricsRecorder, v int64, labels ...string) {
+	recorder.RecordInt64UpDownCount(h, v, labels...)
+}
+
 // Float64CountHandle is a typed handle for a float count metric. This handle is
 // passed at the recording point in order to know which metric to record on.
 type Float64CountHandle MetricDescriptor
@@ -249,6 +267,21 @@
 	return (*Int64GaugeHandle)(descPtr)
 }
 
+// RegisterInt64UpDownCount registers the metric description onto the global registry.
+// It returns a typed handle to use for recording data.
+//
+// NOTE: this function must only be called during initialization time (i.e. in
+// an init() function), and is not thread-safe. If multiple metrics are
+// registered with the same name, this function will panic.
+func RegisterInt64UpDownCount(descriptor MetricDescriptor) *Int64UpDownCountHandle {
+	registerMetric(descriptor.Name, descriptor.Default)
+	// Set the specific metric type for the up-down counter
+	descriptor.Type = MetricTypeIntUpDownCount
+	descPtr := &descriptor
+	metricsRegistry[descriptor.Name] = descPtr
+	return (*Int64UpDownCountHandle)(descPtr)
+}
+
 // snapshotMetricsRegistryForTesting snapshots the global data of the metrics
 // registry. Returns a cleanup function that sets the metrics registry to its
 // original state.
diff --git a/vendor/google.golang.org/grpc/experimental/stats/metrics.go b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
index ee14236..cb57f1a 100644
--- a/vendor/google.golang.org/grpc/experimental/stats/metrics.go
+++ b/vendor/google.golang.org/grpc/experimental/stats/metrics.go
@@ -38,6 +38,9 @@
 	// RecordInt64Gauge records the measurement alongside labels on the int
 	// gauge associated with the provided handle.
 	RecordInt64Gauge(handle *Int64GaugeHandle, incr int64, labels ...string)
+	// RecordInt64UpDownCounter records the measurement alongside labels on the int
+	// count associated with the provided handle.
+	RecordInt64UpDownCount(handle *Int64UpDownCountHandle, incr int64, labels ...string)
 }
 
 // Metrics is an experimental legacy alias of the now-stable stats.MetricSet.
diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
index 22d263f..8f7d9f6 100644
--- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
+++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go
@@ -17,7 +17,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/health/v1/health.proto
 
diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
index 7e060f5..91f7609 100644
--- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
+++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go
@@ -52,12 +52,6 @@
 	// or "false".
 	EnforceALPNEnabled = boolFromEnv("GRPC_ENFORCE_ALPN_ENABLED", true)
 
-	// NewPickFirstEnabled is set if the new pickfirst leaf policy is to be used
-	// instead of the exiting pickfirst implementation. This can be disabled by
-	// setting the environment variable "GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST"
-	// to "false".
-	NewPickFirstEnabled = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST", true)
-
 	// XDSEndpointHashKeyBackwardCompat controls the parsing of the endpoint hash
 	// key from EDS LbEndpoint metadata. Endpoint hash keys can be disabled by
 	// setting "GRPC_XDS_ENDPOINT_HASH_KEY_BACKWARD_COMPAT" to "true". When the
@@ -75,6 +69,14 @@
 	// ALTSHandshakerKeepaliveParams is set if we should add the
 	// KeepaliveParams when dial the ALTS handshaker service.
 	ALTSHandshakerKeepaliveParams = boolFromEnv("GRPC_EXPERIMENTAL_ALTS_HANDSHAKER_KEEPALIVE_PARAMS", false)
+
+	// EnableDefaultPortForProxyTarget controls whether the resolver adds a default port 443
+	// to a target address that lacks one. This flag only has an effect when all of
+	// the following conditions are met:
+	//   - A connect proxy is being used.
+	//   - Target resolution is disabled.
+	//   - The DNS resolver is being used.
+	EnableDefaultPortForProxyTarget = boolFromEnv("GRPC_EXPERIMENTAL_ENABLE_DEFAULT_PORT_FOR_PROXY_TARGET", true)
 )
 
 func boolFromEnv(envVar string, def bool) bool {
diff --git a/vendor/google.golang.org/grpc/internal/envconfig/xds.go b/vendor/google.golang.org/grpc/internal/envconfig/xds.go
index b1f883b..7685d08 100644
--- a/vendor/google.golang.org/grpc/internal/envconfig/xds.go
+++ b/vendor/google.golang.org/grpc/internal/envconfig/xds.go
@@ -74,4 +74,9 @@
 	// For more details, see:
 	// https://github.com/grpc/proposal/blob/master/A86-xds-http-connect.md
 	XDSHTTPConnectEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT", false)
+
+	// XDSBootstrapCallCredsEnabled controls if call credentials can be used in
+	// xDS bootstrap configuration via the `call_creds` field. For more details,
+	// see: https://github.com/grpc/proposal/blob/master/A97-xds-jwt-call-creds.md
+	XDSBootstrapCallCredsEnabled = boolFromEnv("GRPC_EXPERIMENTAL_XDS_BOOTSTRAP_CALL_CREDS", false)
 )
diff --git a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
index 20b8fb0..5bfa67b 100644
--- a/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
+++ b/vendor/google.golang.org/grpc/internal/resolver/delegatingresolver/delegatingresolver.go
@@ -22,11 +22,13 @@
 
 import (
 	"fmt"
+	"net"
 	"net/http"
 	"net/url"
 	"sync"
 
 	"google.golang.org/grpc/grpclog"
+	"google.golang.org/grpc/internal/envconfig"
 	"google.golang.org/grpc/internal/proxyattributes"
 	"google.golang.org/grpc/internal/transport"
 	"google.golang.org/grpc/internal/transport/networktype"
@@ -40,6 +42,8 @@
 	HTTPSProxyFromEnvironment = http.ProxyFromEnvironment
 )
 
+const defaultPort = "443"
+
 // delegatingResolver manages both target URI and proxy address resolution by
 // delegating these tasks to separate child resolvers. Essentially, it acts as
 // an intermediary between the gRPC ClientConn and the child resolvers.
@@ -107,10 +111,18 @@
 		targetResolver: nopResolver{},
 	}
 
+	addr := target.Endpoint()
 	var err error
-	r.proxyURL, err = proxyURLForTarget(target.Endpoint())
+	if target.URL.Scheme == "dns" && !targetResolutionEnabled && envconfig.EnableDefaultPortForProxyTarget {
+		addr, err = parseTarget(addr)
+		if err != nil {
+			return nil, fmt.Errorf("delegating_resolver: invalid target address %q: %v", target.Endpoint(), err)
+		}
+	}
+
+	r.proxyURL, err = proxyURLForTarget(addr)
 	if err != nil {
-		return nil, fmt.Errorf("delegating_resolver: failed to determine proxy URL for target %s: %v", target, err)
+		return nil, fmt.Errorf("delegating_resolver: failed to determine proxy URL for target %q: %v", target, err)
 	}
 
 	// proxy is not configured or proxy address excluded using `NO_PROXY` env
@@ -132,8 +144,8 @@
 	// bypass the target resolver and store the unresolved target address.
 	if target.URL.Scheme == "dns" && !targetResolutionEnabled {
 		r.targetResolverState = &resolver.State{
-			Addresses: []resolver.Address{{Addr: target.Endpoint()}},
-			Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: target.Endpoint()}}}},
+			Addresses: []resolver.Address{{Addr: addr}},
+			Endpoints: []resolver.Endpoint{{Addresses: []resolver.Address{{Addr: addr}}}},
 		}
 		r.updateTargetResolverState(*r.targetResolverState)
 		return r, nil
@@ -202,6 +214,44 @@
 	return false
 }
 
+// parseTarget takes a target string and ensures it is a valid "host:port" target.
+//
+// It does the following:
+//  1. If the target already has a port (e.g., "host:port", "[ipv6]:port"),
+//     it is returned as is.
+//  2. If the host part is empty (e.g., ":80"), it defaults to "localhost",
+//     returning "localhost:80".
+//  3. If the target is missing a port (e.g., "host", "ipv6"), the defaultPort
+//     is added.
+//
+// An error is returned for empty targets or targets with a trailing colon
+// but no port (e.g., "host:").
+func parseTarget(target string) (string, error) {
+	if target == "" {
+		return "", fmt.Errorf("missing address")
+	}
+
+	host, port, err := net.SplitHostPort(target)
+	if err != nil {
+		// If SplitHostPort fails, it's likely because the port is missing.
+		// We append the default port and return the result.
+		return net.JoinHostPort(target, defaultPort), nil
+	}
+
+	// If SplitHostPort succeeds, we check for edge cases.
+	if port == "" {
+		// A success with an empty port means the target had a trailing colon,
+		// e.g., "host:", which is an error.
+		return "", fmt.Errorf("missing port after port-separator colon")
+	}
+	if host == "" {
+		// A success with an empty host means the target was like ":80".
+		// We default the host to "localhost".
+		host = "localhost"
+	}
+	return net.JoinHostPort(host, port), nil
+}
+
 func skipProxy(address resolver.Address) bool {
 	// Avoid proxy when network is not tcp.
 	networkType, ok := networktype.Get(address)
diff --git a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
index 7904465..d5f7e4d 100644
--- a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
+++ b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go
@@ -64,6 +64,16 @@
 	}
 }
 
+// RecordInt64UpDownCount records the measurement alongside labels on the int
+// count associated with the provided handle.
+func (l *MetricsRecorderList) RecordInt64UpDownCount(handle *estats.Int64UpDownCountHandle, incr int64, labels ...string) {
+	verifyLabels(handle.Descriptor(), labels...)
+
+	for _, metricRecorder := range l.metricsRecorders {
+		metricRecorder.RecordInt64UpDownCount(handle, incr, labels...)
+	}
+}
+
 // RecordFloat64Count records the measurement alongside labels on the float
 // count associated with the provided handle.
 func (l *MetricsRecorderList) RecordFloat64Count(handle *estats.Float64CountHandle, incr float64, labels ...string) {
diff --git a/vendor/google.golang.org/grpc/internal/stats/stats.go b/vendor/google.golang.org/grpc/internal/stats/stats.go
new file mode 100644
index 0000000..49019b8
--- /dev/null
+++ b/vendor/google.golang.org/grpc/internal/stats/stats.go
@@ -0,0 +1,70 @@
+/*
+ *
+ * Copyright 2025 gRPC authors.
+ *
+ * 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 stats
+
+import (
+	"context"
+
+	"google.golang.org/grpc/stats"
+)
+
+type combinedHandler struct {
+	handlers []stats.Handler
+}
+
+// NewCombinedHandler combines multiple stats.Handlers into a single handler.
+//
+// It returns nil if no handlers are provided. If only one handler is
+// provided, it is returned directly without wrapping.
+func NewCombinedHandler(handlers ...stats.Handler) stats.Handler {
+	switch len(handlers) {
+	case 0:
+		return nil
+	case 1:
+		return handlers[0]
+	default:
+		return &combinedHandler{handlers: handlers}
+	}
+}
+
+func (ch *combinedHandler) TagRPC(ctx context.Context, info *stats.RPCTagInfo) context.Context {
+	for _, h := range ch.handlers {
+		ctx = h.TagRPC(ctx, info)
+	}
+	return ctx
+}
+
+func (ch *combinedHandler) HandleRPC(ctx context.Context, stats stats.RPCStats) {
+	for _, h := range ch.handlers {
+		h.HandleRPC(ctx, stats)
+	}
+}
+
+func (ch *combinedHandler) TagConn(ctx context.Context, info *stats.ConnTagInfo) context.Context {
+	for _, h := range ch.handlers {
+		ctx = h.TagConn(ctx, info)
+	}
+	return ctx
+}
+
+func (ch *combinedHandler) HandleConn(ctx context.Context, stats stats.ConnStats) {
+	for _, h := range ch.handlers {
+		h.HandleConn(ctx, stats)
+	}
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/client_stream.go b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
index ccc0e01..9804525 100644
--- a/vendor/google.golang.org/grpc/internal/transport/client_stream.go
+++ b/vendor/google.golang.org/grpc/internal/transport/client_stream.go
@@ -29,25 +29,27 @@
 
 // ClientStream implements streaming functionality for a gRPC client.
 type ClientStream struct {
-	*Stream // Embed for common stream functionality.
+	Stream // Embed for common stream functionality.
 
 	ct       *http2Client
 	done     chan struct{} // closed at the end of stream to unblock writers.
 	doneFunc func()        // invoked at the end of stream.
 
-	headerChan       chan struct{} // closed to indicate the end of header metadata.
-	headerChanClosed uint32        // set when headerChan is closed. Used to avoid closing headerChan multiple times.
+	headerChan chan struct{} // closed to indicate the end of header metadata.
+	header     metadata.MD   // the received header metadata
+
+	status *status.Status // the status error received from the server
+
+	// Non-pointer fields are at the end to optimize GC allocations.
+
 	// headerValid indicates whether a valid header was received.  Only
 	// meaningful after headerChan is closed (always call waitOnHeader() before
 	// reading its value).
-	headerValid bool
-	header      metadata.MD // the received header metadata
-	noHeaders   bool        // set if the client never received headers (set only after the stream is done).
-
-	bytesReceived atomic.Bool // indicates whether any bytes have been received on this stream
-	unprocessed   atomic.Bool // set if the server sends a refused stream or GOAWAY including this stream
-
-	status *status.Status // the status error received from the server
+	headerValid      bool
+	noHeaders        bool        // set if the client never received headers (set only after the stream is done).
+	headerChanClosed uint32      // set when headerChan is closed. Used to avoid closing headerChan multiple times.
+	bytesReceived    atomic.Bool // indicates whether any bytes have been received on this stream
+	unprocessed      atomic.Bool // set if the server sends a refused stream or GOAWAY including this stream
 }
 
 // Read reads an n byte message from the input stream.
@@ -142,3 +144,11 @@
 func (s *ClientStream) Status() *status.Status {
 	return s.status
 }
+
+func (s *ClientStream) requestRead(n int) {
+	s.ct.adjustWindow(s, uint32(n))
+}
+
+func (s *ClientStream) updateWindow(n int) {
+	s.ct.updateWindow(s, uint32(n))
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
index a2831e5..2dcd1e6 100644
--- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
+++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go
@@ -496,6 +496,16 @@
 	serverSide
 )
 
+// maxWriteBufSize is the maximum length (number of elements) the cached
+// writeBuf can grow to. The length depends on the number of buffers
+// contained within the BufferSlice produced by the codec, which is
+// generally small.
+//
+// If a writeBuf larger than this limit is required, it will be allocated
+// and freed after use, rather than being cached. This avoids holding
+// on to large amounts of memory.
+const maxWriteBufSize = 64
+
 // Loopy receives frames from the control buffer.
 // Each frame is handled individually; most of the work done by loopy goes
 // into handling data frames. Loopy maintains a queue of active streams, and each
@@ -530,6 +540,8 @@
 
 	// Side-specific handlers
 	ssGoAwayHandler func(*goAway) (bool, error)
+
+	writeBuf [][]byte // cached slice to avoid heap allocations for calls to mem.Reader.Peek.
 }
 
 func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error), bufferPool mem.BufferPool) *loopyWriter {
@@ -665,11 +677,10 @@
 
 func (l *loopyWriter) registerStreamHandler(h *registerStream) {
 	str := &outStream{
-		id:     h.streamID,
-		state:  empty,
-		itl:    &itemList{},
-		wq:     h.wq,
-		reader: mem.BufferSlice{}.Reader(),
+		id:    h.streamID,
+		state: empty,
+		itl:   &itemList{},
+		wq:    h.wq,
 	}
 	l.estdStreams[h.streamID] = str
 }
@@ -701,11 +712,10 @@
 	}
 	// Case 2: Client wants to originate stream.
 	str := &outStream{
-		id:     h.streamID,
-		state:  empty,
-		itl:    &itemList{},
-		wq:     h.wq,
-		reader: mem.BufferSlice{}.Reader(),
+		id:    h.streamID,
+		state: empty,
+		itl:   &itemList{},
+		wq:    h.wq,
 	}
 	return l.originateStream(str, h)
 }
@@ -948,11 +958,11 @@
 	if str == nil {
 		return true, nil
 	}
-	reader := str.reader
+	reader := &str.reader
 	dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream.
 	if !dataItem.processing {
 		dataItem.processing = true
-		str.reader.Reset(dataItem.data)
+		reader.Reset(dataItem.data)
 		dataItem.data.Free()
 	}
 	// A data item is represented by a dataFrame, since it later translates into
@@ -964,11 +974,11 @@
 
 	if len(dataItem.h) == 0 && reader.Remaining() == 0 { // Empty data frame
 		// Client sends out empty data frame with endStream = true
-		if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil {
+		if err := l.framer.writeData(dataItem.streamID, dataItem.endStream, nil); err != nil {
 			return false, err
 		}
 		str.itl.dequeue() // remove the empty data item from stream
-		_ = reader.Close()
+		reader.Close()
 		if str.itl.isEmpty() {
 			str.state = empty
 		} else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers.
@@ -1001,25 +1011,20 @@
 	remainingBytes := len(dataItem.h) + reader.Remaining() - hSize - dSize
 	size := hSize + dSize
 
-	var buf *[]byte
-
-	if hSize != 0 && dSize == 0 {
-		buf = &dataItem.h
-	} else {
-		// Note: this is only necessary because the http2.Framer does not support
-		// partially writing a frame, so the sequence must be materialized into a buffer.
-		// TODO: Revisit once https://github.com/golang/go/issues/66655 is addressed.
-		pool := l.bufferPool
-		if pool == nil {
-			// Note that this is only supposed to be nil in tests. Otherwise, stream is
-			// always initialized with a BufferPool.
-			pool = mem.DefaultBufferPool()
+	l.writeBuf = l.writeBuf[:0]
+	if hSize > 0 {
+		l.writeBuf = append(l.writeBuf, dataItem.h[:hSize])
+	}
+	if dSize > 0 {
+		var err error
+		l.writeBuf, err = reader.Peek(dSize, l.writeBuf)
+		if err != nil {
+			// This must never happen since the reader must have at least dSize
+			// bytes.
+			// Log an error to fail tests.
+			l.logger.Errorf("unexpected error while reading Data frame payload: %v", err)
+			return false, err
 		}
-		buf = pool.Get(size)
-		defer pool.Put(buf)
-
-		copy((*buf)[:hSize], dataItem.h)
-		_, _ = reader.Read((*buf)[hSize:])
 	}
 
 	// Now that outgoing flow controls are checked we can replenish str's write quota
@@ -1032,7 +1037,14 @@
 	if dataItem.onEachWrite != nil {
 		dataItem.onEachWrite()
 	}
-	if err := l.framer.fr.WriteData(dataItem.streamID, endStream, (*buf)[:size]); err != nil {
+	err := l.framer.writeData(dataItem.streamID, endStream, l.writeBuf)
+	reader.Discard(dSize)
+	if cap(l.writeBuf) > maxWriteBufSize {
+		l.writeBuf = nil
+	} else {
+		clear(l.writeBuf)
+	}
+	if err != nil {
 		return false, err
 	}
 	str.bytesOutStanding += size
@@ -1040,7 +1052,7 @@
 	dataItem.h = dataItem.h[hSize:]
 
 	if remainingBytes == 0 { // All the data from that message was written out.
-		_ = reader.Close()
+		reader.Close()
 		str.itl.dequeue()
 	}
 	if str.itl.isEmpty() {
diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
index dfc0f22..7cfbc96 100644
--- a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
+++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go
@@ -28,7 +28,7 @@
 // writeQuota is a soft limit on the amount of data a stream can
 // schedule before some of it is written out.
 type writeQuota struct {
-	quota int32
+	_ noCopy
 	// get waits on read from when quota goes less than or equal to zero.
 	// replenish writes on it when quota goes positive again.
 	ch chan struct{}
@@ -38,16 +38,17 @@
 	// It is implemented as a field so that it can be updated
 	// by tests.
 	replenish func(n int)
+	quota     int32
 }
 
-func newWriteQuota(sz int32, done <-chan struct{}) *writeQuota {
-	w := &writeQuota{
-		quota: sz,
-		ch:    make(chan struct{}, 1),
-		done:  done,
-	}
+// init allows a writeQuota to be initialized in-place, which is useful for
+// resetting a buffer or for avoiding a heap allocation when the buffer is
+// embedded in another struct.
+func (w *writeQuota) init(sz int32, done <-chan struct{}) {
+	w.quota = sz
+	w.ch = make(chan struct{}, 1)
+	w.done = done
 	w.replenish = w.realReplenish
-	return w
 }
 
 func (w *writeQuota) get(sz int32) error {
@@ -67,9 +68,9 @@
 
 func (w *writeQuota) realReplenish(n int) {
 	sz := int32(n)
-	a := atomic.AddInt32(&w.quota, sz)
-	b := a - sz
-	if b <= 0 && a > 0 {
+	newQuota := atomic.AddInt32(&w.quota, sz)
+	previousQuota := newQuota - sz
+	if previousQuota <= 0 && newQuota > 0 {
 		select {
 		case w.ch <- struct{}{}:
 		default:
diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
index d954a64..7ab3422 100644
--- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go
+++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go
@@ -50,7 +50,7 @@
 // NewServerHandlerTransport returns a ServerTransport handling gRPC from
 // inside an http.Handler, or writes an HTTP error to w and returns an error.
 // It requires that the http Server supports HTTP/2.
-func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {
+func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) {
 	if r.Method != http.MethodPost {
 		w.Header().Set("Allow", http.MethodPost)
 		msg := fmt.Sprintf("invalid gRPC request method %q", r.Method)
@@ -170,7 +170,7 @@
 	// TODO make sure this is consistent across handler_server and http2_server
 	contentSubtype string
 
-	stats  []stats.Handler
+	stats  stats.Handler
 	logger *grpclog.PrefixLogger
 
 	bufferPool mem.BufferPool
@@ -274,15 +274,13 @@
 		}
 	})
 
-	if err == nil { // transport has not been closed
+	if err == nil && ht.stats != nil { // transport has not been closed
 		// Note: The trailer fields are compressed with hpack after this call returns.
 		// No WireLength field is set here.
 		s.hdrMu.Lock()
-		for _, sh := range ht.stats {
-			sh.HandleRPC(s.Context(), &stats.OutTrailer{
-				Trailer: s.trailer.Copy(),
-			})
-		}
+		ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{
+			Trailer: s.trailer.Copy(),
+		})
 		s.hdrMu.Unlock()
 	}
 	ht.Close(errors.New("finished writing status"))
@@ -374,19 +372,23 @@
 		ht.rw.(http.Flusher).Flush()
 	})
 
-	if err == nil {
-		for _, sh := range ht.stats {
-			// Note: The header fields are compressed with hpack after this call returns.
-			// No WireLength field is set here.
-			sh.HandleRPC(s.Context(), &stats.OutHeader{
-				Header:      md.Copy(),
-				Compression: s.sendCompress,
-			})
-		}
+	if err == nil && ht.stats != nil {
+		// Note: The header fields are compressed with hpack after this call returns.
+		// No WireLength field is set here.
+		ht.stats.HandleRPC(s.Context(), &stats.OutHeader{
+			Header:      md.Copy(),
+			Compression: s.sendCompress,
+		})
 	}
 	return err
 }
 
+func (ht *serverHandlerTransport) adjustWindow(*ServerStream, uint32) {
+}
+
+func (ht *serverHandlerTransport) updateWindow(*ServerStream, uint32) {
+}
+
 func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream func(*ServerStream)) {
 	// With this transport type there will be exactly 1 stream: this HTTP request.
 	var cancel context.CancelFunc
@@ -411,11 +413,9 @@
 	ctx = metadata.NewIncomingContext(ctx, ht.headerMD)
 	req := ht.req
 	s := &ServerStream{
-		Stream: &Stream{
+		Stream: Stream{
 			id:             0, // irrelevant
 			ctx:            ctx,
-			requestRead:    func(int) {},
-			buf:            newRecvBuffer(),
 			method:         req.URL.Path,
 			recvCompress:   req.Header.Get("grpc-encoding"),
 			contentSubtype: ht.contentSubtype,
@@ -424,9 +424,11 @@
 		st:               ht,
 		headerWireLength: 0, // won't have access to header wire length until golang/go#18997.
 	}
-	s.trReader = &transportReader{
-		reader:        &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf},
-		windowHandler: func(int) {},
+	s.Stream.buf.init()
+	s.readRequester = s
+	s.trReader = transportReader{
+		reader:        recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: &s.buf},
+		windowHandler: s,
 	}
 
 	// readerDone is closed when the Body.Read-ing goroutine exits.
diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
index 7cb2387..65b4ab2 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go
@@ -44,6 +44,7 @@
 	"google.golang.org/grpc/internal/grpcutil"
 	imetadata "google.golang.org/grpc/internal/metadata"
 	"google.golang.org/grpc/internal/proxyattributes"
+	istats "google.golang.org/grpc/internal/stats"
 	istatus "google.golang.org/grpc/internal/status"
 	isyscall "google.golang.org/grpc/internal/syscall"
 	"google.golang.org/grpc/internal/transport/networktype"
@@ -105,7 +106,7 @@
 	kp               keepalive.ClientParameters
 	keepaliveEnabled bool
 
-	statsHandlers []stats.Handler
+	statsHandler stats.Handler
 
 	initialWindowSize int32
 
@@ -335,14 +336,14 @@
 		writerDone:            make(chan struct{}),
 		goAway:                make(chan struct{}),
 		keepaliveDone:         make(chan struct{}),
-		framer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize),
+		framer:                newFramer(conn, writeBufSize, readBufSize, opts.SharedWriteBuffer, maxHeaderListSize, opts.BufferPool),
 		fc:                    &trInFlow{limit: uint32(icwz)},
 		scheme:                scheme,
 		activeStreams:         make(map[uint32]*ClientStream),
 		isSecure:              isSecure,
 		perRPCCreds:           perRPCCreds,
 		kp:                    kp,
-		statsHandlers:         opts.StatsHandlers,
+		statsHandler:          istats.NewCombinedHandler(opts.StatsHandlers...),
 		initialWindowSize:     initialWindowSize,
 		nextID:                1,
 		maxConcurrentStreams:  defaultMaxStreamsClient,
@@ -386,15 +387,14 @@
 			updateFlowControl: t.updateFlowControl,
 		}
 	}
-	for _, sh := range t.statsHandlers {
-		t.ctx = sh.TagConn(t.ctx, &stats.ConnTagInfo{
+	if t.statsHandler != nil {
+		t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{
 			RemoteAddr: t.remoteAddr,
 			LocalAddr:  t.localAddr,
 		})
-		connBegin := &stats.ConnBegin{
+		t.statsHandler.HandleConn(t.ctx, &stats.ConnBegin{
 			Client: true,
-		}
-		sh.HandleConn(t.ctx, connBegin)
+		})
 	}
 	if t.keepaliveEnabled {
 		t.kpDormancyCond = sync.NewCond(&t.mu)
@@ -481,10 +481,9 @@
 func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *ClientStream {
 	// TODO(zhaoq): Handle uint32 overflow of Stream.id.
 	s := &ClientStream{
-		Stream: &Stream{
+		Stream: Stream{
 			method:         callHdr.Method,
 			sendCompress:   callHdr.SendCompress,
-			buf:            newRecvBuffer(),
 			contentSubtype: callHdr.ContentSubtype,
 		},
 		ct:         t,
@@ -492,26 +491,21 @@
 		headerChan: make(chan struct{}),
 		doneFunc:   callHdr.DoneFunc,
 	}
-	s.wq = newWriteQuota(defaultWriteQuota, s.done)
-	s.requestRead = func(n int) {
-		t.adjustWindow(s, uint32(n))
-	}
+	s.Stream.buf.init()
+	s.Stream.wq.init(defaultWriteQuota, s.done)
+	s.readRequester = s
 	// The client side stream context should have exactly the same life cycle with the user provided context.
 	// That means, s.ctx should be read-only. And s.ctx is done iff ctx is done.
 	// So we use the original context here instead of creating a copy.
 	s.ctx = ctx
-	s.trReader = &transportReader{
-		reader: &recvBufferReader{
-			ctx:     s.ctx,
-			ctxDone: s.ctx.Done(),
-			recv:    s.buf,
-			closeStream: func(err error) {
-				s.Close(err)
-			},
+	s.trReader = transportReader{
+		reader: recvBufferReader{
+			ctx:          s.ctx,
+			ctxDone:      s.ctx.Done(),
+			recv:         &s.buf,
+			clientStream: s,
 		},
-		windowHandler: func(n int) {
-			t.updateWindow(s, uint32(n))
-		},
+		windowHandler: s,
 	}
 	return s
 }
@@ -823,7 +817,7 @@
 			return nil
 		},
 		onOrphaned: cleanup,
-		wq:         s.wq,
+		wq:         &s.wq,
 	}
 	firstTry := true
 	var ch chan struct{}
@@ -854,7 +848,7 @@
 		transportDrainRequired = t.nextID > MaxStreamID
 
 		s.id = hdr.streamID
-		s.fc = &inFlow{limit: uint32(t.initialWindowSize)}
+		s.fc = inFlow{limit: uint32(t.initialWindowSize)}
 		t.activeStreams[s.id] = s
 		t.mu.Unlock()
 
@@ -905,27 +899,23 @@
 			return nil, &NewStreamError{Err: ErrConnClosing, AllowTransparentRetry: true}
 		}
 	}
-	if len(t.statsHandlers) != 0 {
+	if t.statsHandler != nil {
 		header, ok := metadata.FromOutgoingContext(ctx)
 		if ok {
 			header.Set("user-agent", t.userAgent)
 		} else {
 			header = metadata.Pairs("user-agent", t.userAgent)
 		}
-		for _, sh := range t.statsHandlers {
-			// Note: The header fields are compressed with hpack after this call returns.
-			// No WireLength field is set here.
-			// Note: Creating a new stats object to prevent pollution.
-			outHeader := &stats.OutHeader{
-				Client:      true,
-				FullMethod:  callHdr.Method,
-				RemoteAddr:  t.remoteAddr,
-				LocalAddr:   t.localAddr,
-				Compression: callHdr.SendCompress,
-				Header:      header,
-			}
-			sh.HandleRPC(s.ctx, outHeader)
-		}
+		// Note: The header fields are compressed with hpack after this call returns.
+		// No WireLength field is set here.
+		t.statsHandler.HandleRPC(s.ctx, &stats.OutHeader{
+			Client:      true,
+			FullMethod:  callHdr.Method,
+			RemoteAddr:  t.remoteAddr,
+			LocalAddr:   t.localAddr,
+			Compression: callHdr.SendCompress,
+			Header:      header,
+		})
 	}
 	if transportDrainRequired {
 		if t.logger.V(logLevel) {
@@ -1002,6 +992,9 @@
 // accessed anymore.
 func (t *http2Client) Close(err error) {
 	t.conn.SetWriteDeadline(time.Now().Add(time.Second * 10))
+	// For background on the deadline value chosen here, see
+	// https://github.com/grpc/grpc-go/issues/8425#issuecomment-3057938248 .
+	t.conn.SetReadDeadline(time.Now().Add(time.Second))
 	t.mu.Lock()
 	// Make sure we only close once.
 	if t.state == closing {
@@ -1063,11 +1056,10 @@
 	for _, s := range streams {
 		t.closeStream(s, err, false, http2.ErrCodeNo, st, nil, false)
 	}
-	for _, sh := range t.statsHandlers {
-		connEnd := &stats.ConnEnd{
+	if t.statsHandler != nil {
+		t.statsHandler.HandleConn(t.ctx, &stats.ConnEnd{
 			Client: true,
-		}
-		sh.HandleConn(t.ctx, connEnd)
+		})
 	}
 }
 
@@ -1178,7 +1170,7 @@
 	})
 }
 
-func (t *http2Client) handleData(f *http2.DataFrame) {
+func (t *http2Client) handleData(f *parsedDataFrame) {
 	size := f.Header().Length
 	var sendBDPPing bool
 	if t.bdpEst != nil {
@@ -1222,22 +1214,15 @@
 			t.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false)
 			return
 		}
+		dataLen := f.data.Len()
 		if f.Header().Flags.Has(http2.FlagDataPadded) {
-			if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {
+			if w := s.fc.onRead(size - uint32(dataLen)); w > 0 {
 				t.controlBuf.put(&outgoingWindowUpdate{s.id, w})
 			}
 		}
-		// TODO(bradfitz, zhaoq): A copy is required here because there is no
-		// guarantee f.Data() is consumed before the arrival of next frame.
-		// Can this copy be eliminated?
-		if len(f.Data()) > 0 {
-			pool := t.bufferPool
-			if pool == nil {
-				// Note that this is only supposed to be nil in tests. Otherwise, stream is
-				// always initialized with a BufferPool.
-				pool = mem.DefaultBufferPool()
-			}
-			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
+		if dataLen > 0 {
+			f.data.Ref()
+			s.write(recvMsg{buffer: f.data})
 		}
 	}
 	// The server has closed the stream without sending trailers.  Record that
@@ -1477,17 +1462,14 @@
 		contentTypeErr = "malformed header: missing HTTP content-type"
 		grpcMessage    string
 		recvCompress   string
-		httpStatusCode *int
 		httpStatusErr  string
-		rawStatusCode  = codes.Unknown
+		// the code from the grpc-status header, if present
+		grpcStatusCode = codes.Unknown
 		// headerError is set if an error is encountered while parsing the headers
 		headerError string
+		httpStatus  string
 	)
 
-	if initialHeader {
-		httpStatusErr = "malformed header: missing HTTP status"
-	}
-
 	for _, hf := range frame.Fields {
 		switch hf.Name {
 		case "content-type":
@@ -1507,36 +1489,11 @@
 				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
 				return
 			}
-			rawStatusCode = codes.Code(uint32(code))
+			grpcStatusCode = codes.Code(uint32(code))
 		case "grpc-message":
 			grpcMessage = decodeGrpcMessage(hf.Value)
 		case ":status":
-			c, err := strconv.ParseInt(hf.Value, 10, 32)
-			if err != nil {
-				se := status.New(codes.Internal, fmt.Sprintf("transport: malformed http-status: %v", err))
-				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
-				return
-			}
-			statusCode := int(c)
-			if statusCode >= 100 && statusCode < 200 {
-				if endStream {
-					se := status.New(codes.Internal, fmt.Sprintf(
-						"protocol error: informational header with status code %d must not have END_STREAM set", statusCode))
-					t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
-				}
-				return
-			}
-			httpStatusCode = &statusCode
-			if statusCode == 200 {
-				httpStatusErr = ""
-				break
-			}
-
-			httpStatusErr = fmt.Sprintf(
-				"unexpected HTTP status code received from server: %d (%s)",
-				statusCode,
-				http.StatusText(statusCode),
-			)
+			httpStatus = hf.Value
 		default:
 			if isReservedHeader(hf.Name) && !isWhitelistedHeader(hf.Name) {
 				break
@@ -1551,25 +1508,52 @@
 		}
 	}
 
-	if !isGRPC || httpStatusErr != "" {
-		var code = codes.Internal // when header does not include HTTP status, return INTERNAL
-
-		if httpStatusCode != nil {
+	// If a non-gRPC response is received, then evaluate the HTTP status to
+	// process the response and close the stream.
+	// In case http status doesn't provide any error information (status : 200),
+	// then evalute response code to be Unknown.
+	if !isGRPC {
+		var grpcErrorCode = codes.Internal
+		if httpStatus == "" {
+			httpStatusErr = "malformed header: missing HTTP status"
+		} else {
+			// Parse the status codes (e.g. "200", 404").
+			statusCode, err := strconv.Atoi(httpStatus)
+			if err != nil {
+				se := status.New(grpcErrorCode, fmt.Sprintf("transport: malformed http-status: %v", err))
+				t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
+				return
+			}
+			if statusCode >= 100 && statusCode < 200 {
+				if endStream {
+					se := status.New(codes.Internal, fmt.Sprintf(
+						"protocol error: informational header with status code %d must not have END_STREAM set", statusCode))
+					t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
+				}
+				// In case of informational headers, return.
+				return
+			}
+			httpStatusErr = fmt.Sprintf(
+				"unexpected HTTP status code received from server: %d (%s)",
+				statusCode,
+				http.StatusText(statusCode),
+			)
 			var ok bool
-			code, ok = HTTPStatusConvTab[*httpStatusCode]
+			grpcErrorCode, ok = HTTPStatusConvTab[statusCode]
 			if !ok {
-				code = codes.Unknown
+				grpcErrorCode = codes.Unknown
 			}
 		}
 		var errs []string
 		if httpStatusErr != "" {
 			errs = append(errs, httpStatusErr)
 		}
+
 		if contentTypeErr != "" {
 			errs = append(errs, contentTypeErr)
 		}
-		// Verify the HTTP response is a 200.
-		se := status.New(code, strings.Join(errs, "; "))
+
+		se := status.New(grpcErrorCode, strings.Join(errs, "; "))
 		t.closeStream(s, se.Err(), true, http2.ErrCodeProtocol, se, nil, endStream)
 		return
 	}
@@ -1600,22 +1584,20 @@
 		}
 	}
 
-	for _, sh := range t.statsHandlers {
+	if t.statsHandler != nil {
 		if !endStream {
-			inHeader := &stats.InHeader{
+			t.statsHandler.HandleRPC(s.ctx, &stats.InHeader{
 				Client:      true,
 				WireLength:  int(frame.Header().Length),
 				Header:      metadata.MD(mdata).Copy(),
 				Compression: s.recvCompress,
-			}
-			sh.HandleRPC(s.ctx, inHeader)
+			})
 		} else {
-			inTrailer := &stats.InTrailer{
+			t.statsHandler.HandleRPC(s.ctx, &stats.InTrailer{
 				Client:     true,
 				WireLength: int(frame.Header().Length),
 				Trailer:    metadata.MD(mdata).Copy(),
-			}
-			sh.HandleRPC(s.ctx, inTrailer)
+			})
 		}
 	}
 
@@ -1623,7 +1605,7 @@
 		return
 	}
 
-	status := istatus.NewWithProto(rawStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])
+	status := istatus.NewWithProto(grpcStatusCode, grpcMessage, mdata[grpcStatusDetailsBinHeader])
 
 	// If client received END_STREAM from server while stream was still active,
 	// send RST_STREAM.
@@ -1670,7 +1652,7 @@
 	// loop to keep reading incoming messages on this transport.
 	for {
 		t.controlBuf.throttle()
-		frame, err := t.framer.fr.ReadFrame()
+		frame, err := t.framer.readFrame()
 		if t.keepaliveEnabled {
 			atomic.StoreInt64(&t.lastRead, time.Now().UnixNano())
 		}
@@ -1685,7 +1667,7 @@
 				if s != nil {
 					// use error detail to provide better err message
 					code := http2ErrConvTab[se.Code]
-					errorDetail := t.framer.fr.ErrorDetail()
+					errorDetail := t.framer.errorDetail()
 					var msg string
 					if errorDetail != nil {
 						msg = errorDetail.Error()
@@ -1703,8 +1685,9 @@
 		switch frame := frame.(type) {
 		case *http2.MetaHeadersFrame:
 			t.operateHeaders(frame)
-		case *http2.DataFrame:
+		case *parsedDataFrame:
 			t.handleData(frame)
+			frame.data.Free()
 		case *http2.RSTStreamFrame:
 			t.handleRSTStream(frame)
 		case *http2.SettingsFrame:
diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
index 83cee31..6f78a6b 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go
@@ -35,6 +35,8 @@
 
 	"golang.org/x/net/http2"
 	"golang.org/x/net/http2/hpack"
+	"google.golang.org/protobuf/proto"
+
 	"google.golang.org/grpc/internal"
 	"google.golang.org/grpc/internal/grpclog"
 	"google.golang.org/grpc/internal/grpcutil"
@@ -42,7 +44,6 @@
 	istatus "google.golang.org/grpc/internal/status"
 	"google.golang.org/grpc/internal/syscall"
 	"google.golang.org/grpc/mem"
-	"google.golang.org/protobuf/proto"
 
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/credentials"
@@ -86,7 +87,7 @@
 	// updates, reset streams, and various settings) to the controller.
 	controlBuf *controlBuffer
 	fc         *trInFlow
-	stats      []stats.Handler
+	stats      stats.Handler
 	// Keepalive and max-age parameters for the server.
 	kp keepalive.ServerParameters
 	// Keepalive enforcement policy.
@@ -168,7 +169,7 @@
 	if config.MaxHeaderListSize != nil {
 		maxHeaderListSize = *config.MaxHeaderListSize
 	}
-	framer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize)
+	framer := newFramer(conn, writeBufSize, readBufSize, config.SharedWriteBuffer, maxHeaderListSize, config.BufferPool)
 	// Send initial settings as connection preface to client.
 	isettings := []http2.Setting{{
 		ID:  http2.SettingMaxFrameSize,
@@ -260,7 +261,7 @@
 		fc:                &trInFlow{limit: uint32(icwz)},
 		state:             reachable,
 		activeStreams:     make(map[uint32]*ServerStream),
-		stats:             config.StatsHandlers,
+		stats:             config.StatsHandler,
 		kp:                kp,
 		idle:              time.Now(),
 		kep:               kep,
@@ -390,16 +391,15 @@
 	}
 	t.maxStreamID = streamID
 
-	buf := newRecvBuffer()
 	s := &ServerStream{
-		Stream: &Stream{
-			id:  streamID,
-			buf: buf,
-			fc:  &inFlow{limit: uint32(t.initialWindowSize)},
+		Stream: Stream{
+			id: streamID,
+			fc: inFlow{limit: uint32(t.initialWindowSize)},
 		},
 		st:               t,
 		headerWireLength: int(frame.Header().Length),
 	}
+	s.Stream.buf.init()
 	var (
 		// if false, content-type was missing or invalid
 		isGRPC      = false
@@ -640,25 +640,21 @@
 		t.channelz.SocketMetrics.StreamsStarted.Add(1)
 		t.channelz.SocketMetrics.LastRemoteStreamCreatedTimestamp.Store(time.Now().UnixNano())
 	}
-	s.requestRead = func(n int) {
-		t.adjustWindow(s, uint32(n))
-	}
+	s.readRequester = s
 	s.ctxDone = s.ctx.Done()
-	s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone)
-	s.trReader = &transportReader{
-		reader: &recvBufferReader{
+	s.Stream.wq.init(defaultWriteQuota, s.ctxDone)
+	s.trReader = transportReader{
+		reader: recvBufferReader{
 			ctx:     s.ctx,
 			ctxDone: s.ctxDone,
-			recv:    s.buf,
+			recv:    &s.buf,
 		},
-		windowHandler: func(n int) {
-			t.updateWindow(s, uint32(n))
-		},
+		windowHandler: s,
 	}
 	// Register the stream with loopy.
 	t.controlBuf.put(&registerStream{
 		streamID: s.id,
-		wq:       s.wq,
+		wq:       &s.wq,
 	})
 	handle(s)
 	return nil
@@ -674,7 +670,7 @@
 	}()
 	for {
 		t.controlBuf.throttle()
-		frame, err := t.framer.fr.ReadFrame()
+		frame, err := t.framer.readFrame()
 		atomic.StoreInt64(&t.lastRead, time.Now().UnixNano())
 		if err != nil {
 			if se, ok := err.(http2.StreamError); ok {
@@ -711,8 +707,9 @@
 				})
 				continue
 			}
-		case *http2.DataFrame:
+		case *parsedDataFrame:
 			t.handleData(frame)
+			frame.data.Free()
 		case *http2.RSTStreamFrame:
 			t.handleRSTStream(frame)
 		case *http2.SettingsFrame:
@@ -792,7 +789,7 @@
 
 }
 
-func (t *http2Server) handleData(f *http2.DataFrame) {
+func (t *http2Server) handleData(f *parsedDataFrame) {
 	size := f.Header().Length
 	var sendBDPPing bool
 	if t.bdpEst != nil {
@@ -837,22 +834,15 @@
 			t.closeStream(s, true, http2.ErrCodeFlowControl, false)
 			return
 		}
+		dataLen := f.data.Len()
 		if f.Header().Flags.Has(http2.FlagDataPadded) {
-			if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 {
+			if w := s.fc.onRead(size - uint32(dataLen)); w > 0 {
 				t.controlBuf.put(&outgoingWindowUpdate{s.id, w})
 			}
 		}
-		// TODO(bradfitz, zhaoq): A copy is required here because there is no
-		// guarantee f.Data() is consumed before the arrival of next frame.
-		// Can this copy be eliminated?
-		if len(f.Data()) > 0 {
-			pool := t.bufferPool
-			if pool == nil {
-				// Note that this is only supposed to be nil in tests. Otherwise, stream is
-				// always initialized with a BufferPool.
-				pool = mem.DefaultBufferPool()
-			}
-			s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)})
+		if dataLen > 0 {
+			f.data.Ref()
+			s.write(recvMsg{buffer: f.data})
 		}
 	}
 	if f.StreamEnded() {
@@ -1059,14 +1049,13 @@
 		t.closeStream(s, true, http2.ErrCodeInternal, false)
 		return ErrHeaderListSizeLimitViolation
 	}
-	for _, sh := range t.stats {
+	if t.stats != nil {
 		// Note: Headers are compressed with hpack after this call returns.
 		// No WireLength field is set here.
-		outHeader := &stats.OutHeader{
+		t.stats.HandleRPC(s.Context(), &stats.OutHeader{
 			Header:      s.header.Copy(),
 			Compression: s.sendCompress,
-		}
-		sh.HandleRPC(s.Context(), outHeader)
+		})
 	}
 	return nil
 }
@@ -1134,10 +1123,10 @@
 	// Send a RST_STREAM after the trailers if the client has not already half-closed.
 	rst := s.getState() == streamActive
 	t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)
-	for _, sh := range t.stats {
+	if t.stats != nil {
 		// Note: The trailer fields are compressed with hpack after this call returns.
 		// No WireLength field is set here.
-		sh.HandleRPC(s.Context(), &stats.OutTrailer{
+		t.stats.HandleRPC(s.Context(), &stats.OutTrailer{
 			Trailer: s.trailer.Copy(),
 		})
 	}
@@ -1305,7 +1294,8 @@
 // deleteStream deletes the stream s from transport's active streams.
 func (t *http2Server) deleteStream(s *ServerStream, eosReceived bool) {
 	t.mu.Lock()
-	if _, ok := t.activeStreams[s.id]; ok {
+	_, isActive := t.activeStreams[s.id]
+	if isActive {
 		delete(t.activeStreams, s.id)
 		if len(t.activeStreams) == 0 {
 			t.idle = time.Now()
@@ -1313,7 +1303,7 @@
 	}
 	t.mu.Unlock()
 
-	if channelz.IsOn() {
+	if isActive && channelz.IsOn() {
 		if eosReceived {
 			t.channelz.SocketMetrics.StreamsSucceeded.Add(1)
 		} else {
diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go
index e3663f8..6209eb2 100644
--- a/vendor/google.golang.org/grpc/internal/transport/http_util.go
+++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go
@@ -25,7 +25,6 @@
 	"fmt"
 	"io"
 	"math"
-	"net"
 	"net/http"
 	"net/url"
 	"strconv"
@@ -37,6 +36,7 @@
 	"golang.org/x/net/http2"
 	"golang.org/x/net/http2/hpack"
 	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/mem"
 )
 
 const (
@@ -300,11 +300,11 @@
 	buf       []byte
 	offset    int
 	batchSize int
-	conn      net.Conn
+	conn      io.Writer
 	err       error
 }
 
-func newBufWriter(conn net.Conn, batchSize int, pool *sync.Pool) *bufWriter {
+func newBufWriter(conn io.Writer, batchSize int, pool *sync.Pool) *bufWriter {
 	w := &bufWriter{
 		batchSize: batchSize,
 		conn:      conn,
@@ -388,15 +388,35 @@
 	return ioError{error: err}
 }
 
+type parsedDataFrame struct {
+	http2.FrameHeader
+	data mem.Buffer
+}
+
+func (df *parsedDataFrame) StreamEnded() bool {
+	return df.FrameHeader.Flags.Has(http2.FlagDataEndStream)
+}
+
 type framer struct {
-	writer *bufWriter
-	fr     *http2.Framer
+	writer    *bufWriter
+	fr        *http2.Framer
+	headerBuf []byte // cached slice for framer headers to reduce heap allocs.
+	reader    io.Reader
+	dataFrame parsedDataFrame // Cached data frame to avoid heap allocations.
+	pool      mem.BufferPool
+	errDetail error
 }
 
 var writeBufferPoolMap = make(map[int]*sync.Pool)
 var writeBufferMutex sync.Mutex
 
-func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32) *framer {
+func newFramer(conn io.ReadWriter, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32, memPool mem.BufferPool) *framer {
+	if memPool == nil {
+		// Note that this is only supposed to be nil in tests. Otherwise, stream
+		// is always initialized with a BufferPool.
+		memPool = mem.DefaultBufferPool()
+	}
+
 	if writeBufferSize < 0 {
 		writeBufferSize = 0
 	}
@@ -412,6 +432,8 @@
 	f := &framer{
 		writer: w,
 		fr:     http2.NewFramer(w, r),
+		reader: r,
+		pool:   memPool,
 	}
 	f.fr.SetMaxReadFrameSize(http2MaxFrameLen)
 	// Opt-in to Frame reuse API on framer to reduce garbage.
@@ -422,6 +444,146 @@
 	return f
 }
 
+// writeData writes a DATA frame.
+//
+// It is the caller's responsibility not to violate the maximum frame size.
+func (f *framer) writeData(streamID uint32, endStream bool, data [][]byte) error {
+	var flags http2.Flags
+	if endStream {
+		flags = http2.FlagDataEndStream
+	}
+	length := uint32(0)
+	for _, d := range data {
+		length += uint32(len(d))
+	}
+	// TODO: Replace the header write with the framer API being added in
+	// https://github.com/golang/go/issues/66655.
+	f.headerBuf = append(f.headerBuf[:0],
+		byte(length>>16),
+		byte(length>>8),
+		byte(length),
+		byte(http2.FrameData),
+		byte(flags),
+		byte(streamID>>24),
+		byte(streamID>>16),
+		byte(streamID>>8),
+		byte(streamID))
+	if _, err := f.writer.Write(f.headerBuf); err != nil {
+		return err
+	}
+	for _, d := range data {
+		if _, err := f.writer.Write(d); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+// readFrame reads a single frame. The returned Frame is only valid
+// until the next call to readFrame.
+func (f *framer) readFrame() (any, error) {
+	f.errDetail = nil
+	fh, err := f.fr.ReadFrameHeader()
+	if err != nil {
+		f.errDetail = f.fr.ErrorDetail()
+		return nil, err
+	}
+	// Read the data frame directly from the underlying io.Reader to avoid
+	// copies.
+	if fh.Type == http2.FrameData {
+		err = f.readDataFrame(fh)
+		return &f.dataFrame, err
+	}
+	fr, err := f.fr.ReadFrameForHeader(fh)
+	if err != nil {
+		f.errDetail = f.fr.ErrorDetail()
+		return nil, err
+	}
+	return fr, err
+}
+
+// errorDetail returns a more detailed error of the last error
+// returned by framer.readFrame. For instance, if readFrame
+// returns a StreamError with code PROTOCOL_ERROR, errorDetail
+// will say exactly what was invalid. errorDetail is not guaranteed
+// to return a non-nil value.
+// errorDetail is reset after the next call to readFrame.
+func (f *framer) errorDetail() error {
+	return f.errDetail
+}
+
+func (f *framer) readDataFrame(fh http2.FrameHeader) (err error) {
+	if fh.StreamID == 0 {
+		// DATA frames MUST be associated with a stream. If a
+		// DATA frame is received whose stream identifier
+		// field is 0x0, the recipient MUST respond with a
+		// connection error (Section 5.4.1) of type
+		// PROTOCOL_ERROR.
+		f.errDetail = errors.New("DATA frame with stream ID 0")
+		return http2.ConnectionError(http2.ErrCodeProtocol)
+	}
+	// Converting a *[]byte to a mem.SliceBuffer incurs a heap allocation. This
+	// conversion is performed by mem.NewBuffer. To avoid the extra allocation
+	// a []byte is allocated directly if required and cast to a mem.SliceBuffer.
+	var buf []byte
+	// poolHandle is the pointer returned by the buffer pool (if it's used.).
+	var poolHandle *[]byte
+	useBufferPool := !mem.IsBelowBufferPoolingThreshold(int(fh.Length))
+	if useBufferPool {
+		poolHandle = f.pool.Get(int(fh.Length))
+		buf = *poolHandle
+		defer func() {
+			if err != nil {
+				f.pool.Put(poolHandle)
+			}
+		}()
+	} else {
+		buf = make([]byte, int(fh.Length))
+	}
+	if fh.Flags.Has(http2.FlagDataPadded) {
+		if fh.Length == 0 {
+			return io.ErrUnexpectedEOF
+		}
+		// This initial 1-byte read can be inefficient for unbuffered readers,
+		// but it allows the rest of the payload to be read directly to the
+		// start of the destination slice. This makes it easy to return the
+		// original slice back to the buffer pool.
+		if _, err := io.ReadFull(f.reader, buf[:1]); err != nil {
+			return err
+		}
+		padSize := buf[0]
+		buf = buf[:len(buf)-1]
+		if int(padSize) > len(buf) {
+			// If the length of the padding is greater than the
+			// length of the frame payload, the recipient MUST
+			// treat this as a connection error.
+			// Filed: https://github.com/http2/http2-spec/issues/610
+			f.errDetail = errors.New("pad size larger than data payload")
+			return http2.ConnectionError(http2.ErrCodeProtocol)
+		}
+		if _, err := io.ReadFull(f.reader, buf); err != nil {
+			return err
+		}
+		buf = buf[:len(buf)-int(padSize)]
+	} else if _, err := io.ReadFull(f.reader, buf); err != nil {
+		return err
+	}
+
+	f.dataFrame.FrameHeader = fh
+	if useBufferPool {
+		// Update the handle to point to the (potentially re-sliced) buf.
+		*poolHandle = buf
+		f.dataFrame.data = mem.NewBuffer(poolHandle, f.pool)
+	} else {
+		f.dataFrame.data = mem.SliceBuffer(buf)
+	}
+	return nil
+}
+
+func (df *parsedDataFrame) Header() http2.FrameHeader {
+	return df.FrameHeader
+}
+
 func getWriteBufferPool(size int) *sync.Pool {
 	writeBufferMutex.Lock()
 	defer writeBufferMutex.Unlock()
diff --git a/vendor/google.golang.org/grpc/internal/transport/server_stream.go b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
index cf8da0b..ed6a13b 100644
--- a/vendor/google.golang.org/grpc/internal/transport/server_stream.go
+++ b/vendor/google.golang.org/grpc/internal/transport/server_stream.go
@@ -32,7 +32,7 @@
 
 // ServerStream implements streaming functionality for a gRPC server.
 type ServerStream struct {
-	*Stream // Embed for common stream functionality.
+	Stream // Embed for common stream functionality.
 
 	st      internalServerTransport
 	ctxDone <-chan struct{} // closed at the end of stream.  Cache of ctx.Done() (for performance)
@@ -43,12 +43,13 @@
 	// Holds compressor names passed in grpc-accept-encoding metadata from the
 	// client.
 	clientAdvertisedCompressors string
-	headerWireLength            int
 
 	// hdrMu protects outgoing header and trailer metadata.
 	hdrMu      sync.Mutex
 	header     metadata.MD // the outgoing header metadata.  Updated by WriteHeader.
 	headerSent atomic.Bool // atomically set when the headers are sent out.
+
+	headerWireLength int
 }
 
 // Read reads an n byte message from the input stream.
@@ -178,3 +179,11 @@
 	s.hdrMu.Unlock()
 	return nil
 }
+
+func (s *ServerStream) requestRead(n int) {
+	s.st.adjustWindow(s, uint32(n))
+}
+
+func (s *ServerStream) updateWindow(n int) {
+	s.st.updateWindow(s, uint32(n))
+}
diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go
index 7dd53e8..5ff83a7 100644
--- a/vendor/google.golang.org/grpc/internal/transport/transport.go
+++ b/vendor/google.golang.org/grpc/internal/transport/transport.go
@@ -68,11 +68,11 @@
 	err     error
 }
 
-func newRecvBuffer() *recvBuffer {
-	b := &recvBuffer{
-		c: make(chan recvMsg, 1),
-	}
-	return b
+// init allows a recvBuffer to be initialized in-place, which is useful
+// for resetting a buffer or for avoiding a heap allocation when the buffer
+// is embedded in another struct.
+func (b *recvBuffer) init() {
+	b.c = make(chan recvMsg, 1)
 }
 
 func (b *recvBuffer) put(r recvMsg) {
@@ -123,12 +123,13 @@
 // recvBufferReader implements io.Reader interface to read the data from
 // recvBuffer.
 type recvBufferReader struct {
-	closeStream func(error) // Closes the client transport stream with the given error and nil trailer metadata.
-	ctx         context.Context
-	ctxDone     <-chan struct{} // cache of ctx.Done() (for performance).
-	recv        *recvBuffer
-	last        mem.Buffer // Stores the remaining data in the previous calls.
-	err         error
+	_            noCopy
+	clientStream *ClientStream // The client transport stream is closed with a status representing ctx.Err() and nil trailer metadata.
+	ctx          context.Context
+	ctxDone      <-chan struct{} // cache of ctx.Done() (for performance).
+	recv         *recvBuffer
+	last         mem.Buffer // Stores the remaining data in the previous calls.
+	err          error
 }
 
 func (r *recvBufferReader) ReadMessageHeader(header []byte) (n int, err error) {
@@ -139,7 +140,7 @@
 		n, r.last = mem.ReadUnsafe(header, r.last)
 		return n, nil
 	}
-	if r.closeStream != nil {
+	if r.clientStream != nil {
 		n, r.err = r.readMessageHeaderClient(header)
 	} else {
 		n, r.err = r.readMessageHeader(header)
@@ -164,7 +165,7 @@
 		}
 		return buf, nil
 	}
-	if r.closeStream != nil {
+	if r.clientStream != nil {
 		buf, r.err = r.readClient(n)
 	} else {
 		buf, r.err = r.read(n)
@@ -209,7 +210,7 @@
 		// TODO: delaying ctx error seems like a unnecessary side effect. What
 		// we really want is to mark the stream as done, and return ctx error
 		// faster.
-		r.closeStream(ContextErr(r.ctx.Err()))
+		r.clientStream.Close(ContextErr(r.ctx.Err()))
 		m := <-r.recv.get()
 		return r.readMessageHeaderAdditional(m, header)
 	case m := <-r.recv.get():
@@ -236,7 +237,7 @@
 		// TODO: delaying ctx error seems like a unnecessary side effect. What
 		// we really want is to mark the stream as done, and return ctx error
 		// faster.
-		r.closeStream(ContextErr(r.ctx.Err()))
+		r.clientStream.Close(ContextErr(r.ctx.Err()))
 		m := <-r.recv.get()
 		return r.readAdditional(m, n)
 	case m := <-r.recv.get():
@@ -285,27 +286,32 @@
 
 // Stream represents an RPC in the transport layer.
 type Stream struct {
-	id           uint32
 	ctx          context.Context // the associated context of the stream
 	method       string          // the associated RPC method of the stream
 	recvCompress string
 	sendCompress string
-	buf          *recvBuffer
-	trReader     *transportReader
-	fc           *inFlow
-	wq           *writeQuota
 
-	// Callback to state application's intentions to read data. This
-	// is used to adjust flow control, if needed.
-	requestRead func(int)
-
-	state streamState
+	readRequester readRequester
 
 	// contentSubtype is the content-subtype for requests.
 	// this must be lowercase or the behavior is undefined.
 	contentSubtype string
 
 	trailer metadata.MD // the key-value map of trailer metadata.
+
+	// Non-pointer fields are at the end to optimize GC performance.
+	state    streamState
+	id       uint32
+	buf      recvBuffer
+	trReader transportReader
+	fc       inFlow
+	wq       writeQuota
+}
+
+// readRequester is used to state application's intentions to read data. This
+// is used to adjust flow control, if needed.
+type readRequester interface {
+	requestRead(int)
 }
 
 func (s *Stream) swapState(st streamState) streamState {
@@ -355,7 +361,7 @@
 	if er := s.trReader.er; er != nil {
 		return er
 	}
-	s.requestRead(len(header))
+	s.readRequester.requestRead(len(header))
 	for len(header) != 0 {
 		n, err := s.trReader.ReadMessageHeader(header)
 		header = header[n:]
@@ -378,7 +384,7 @@
 	if er := s.trReader.er; er != nil {
 		return nil, er
 	}
-	s.requestRead(n)
+	s.readRequester.requestRead(n)
 	for n != 0 {
 		buf, err := s.trReader.Read(n)
 		var bufLen int
@@ -401,16 +407,34 @@
 	return data, nil
 }
 
+// noCopy may be embedded into structs which must not be copied
+// after the first use.
+//
+// See https://golang.org/issues/8005#issuecomment-190753527
+// for details.
+type noCopy struct {
+}
+
+func (*noCopy) Lock()   {}
+func (*noCopy) Unlock() {}
+
 // transportReader reads all the data available for this Stream from the transport and
 // passes them into the decoder, which converts them into a gRPC message stream.
 // The error is io.EOF when the stream is done or another non-nil error if
 // the stream broke.
 type transportReader struct {
-	reader *recvBufferReader
+	_ noCopy
 	// The handler to control the window update procedure for both this
 	// particular stream and the associated transport.
-	windowHandler func(int)
+	windowHandler windowHandler
 	er            error
+	reader        recvBufferReader
+}
+
+// The handler to control the window update procedure for both this
+// particular stream and the associated transport.
+type windowHandler interface {
+	updateWindow(int)
 }
 
 func (t *transportReader) ReadMessageHeader(header []byte) (int, error) {
@@ -419,7 +443,7 @@
 		t.er = err
 		return 0, err
 	}
-	t.windowHandler(n)
+	t.windowHandler.updateWindow(n)
 	return n, nil
 }
 
@@ -429,7 +453,7 @@
 		t.er = err
 		return buf, err
 	}
-	t.windowHandler(buf.Len())
+	t.windowHandler.updateWindow(buf.Len())
 	return buf, nil
 }
 
@@ -454,7 +478,7 @@
 	ConnectionTimeout     time.Duration
 	Credentials           credentials.TransportCredentials
 	InTapHandle           tap.ServerInHandle
-	StatsHandlers         []stats.Handler
+	StatsHandler          stats.Handler
 	KeepaliveParams       keepalive.ServerParameters
 	KeepalivePolicy       keepalive.EnforcementPolicy
 	InitialWindowSize     int32
@@ -615,6 +639,8 @@
 	write(s *ServerStream, hdr []byte, data mem.BufferSlice, opts *WriteOptions) error
 	writeStatus(s *ServerStream, st *status.Status) error
 	incrMsgRecv()
+	adjustWindow(s *ServerStream, n uint32)
+	updateWindow(s *ServerStream, n uint32)
 }
 
 // connectionErrorf creates an ConnectionError with the specified error description.
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/benchmark_service.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/benchmark_service.pb.go
index aba5449..bcefec6 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/benchmark_service.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/benchmark_service.pb.go
@@ -17,7 +17,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/benchmark_service.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/control.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/control.pb.go
index 7be6870..fbe5632 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/control.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/control.pb.go
@@ -14,7 +14,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/control.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/core/stats.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/core/stats.pb.go
index f1859cc..9bbdf3c2 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/core/stats.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/core/stats.pb.go
@@ -14,7 +14,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/core/stats.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/empty.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/empty.pb.go
index 4f03987..621ce27 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/empty.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/empty.pb.go
@@ -14,7 +14,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/empty.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/messages.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/messages.pb.go
index 1fa224d..fd1cf8d 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/messages.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/messages.pb.go
@@ -16,7 +16,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/messages.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/payloads.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/payloads.pb.go
index 69fc874..8dc7bdd 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/payloads.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/payloads.pb.go
@@ -14,7 +14,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/payloads.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/report_qps_scenario_service.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/report_qps_scenario_service.pb.go
index c518b69..1dbdecd 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/report_qps_scenario_service.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/report_qps_scenario_service.pb.go
@@ -17,7 +17,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/report_qps_scenario_service.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/stats.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/stats.pb.go
index b21404e..23564bf 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/stats.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/stats.pb.go
@@ -14,7 +14,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/stats.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go
index 03e824d..629601c 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/test.pb.go
@@ -17,7 +17,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/test.proto
 
diff --git a/vendor/google.golang.org/grpc/interop/grpc_testing/worker_service.pb.go b/vendor/google.golang.org/grpc/interop/grpc_testing/worker_service.pb.go
index 8b5d482..d9cc8b3 100644
--- a/vendor/google.golang.org/grpc/interop/grpc_testing/worker_service.pb.go
+++ b/vendor/google.golang.org/grpc/interop/grpc_testing/worker_service.pb.go
@@ -17,7 +17,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/testing/worker_service.proto
 
diff --git a/vendor/google.golang.org/grpc/mem/buffer_pool.go b/vendor/google.golang.org/grpc/mem/buffer_pool.go
index c37c58c..f211e72 100644
--- a/vendor/google.golang.org/grpc/mem/buffer_pool.go
+++ b/vendor/google.golang.org/grpc/mem/buffer_pool.go
@@ -32,6 +32,9 @@
 	Get(length int) *[]byte
 
 	// Put returns a buffer to the pool.
+	//
+	// The provided pointer must hold a prefix of the buffer obtained via
+	// BufferPool.Get to ensure the buffer's entire capacity can be re-used.
 	Put(*[]byte)
 }
 
@@ -118,7 +121,11 @@
 }
 
 func (p *sizedBufferPool) Get(size int) *[]byte {
-	buf := p.pool.Get().(*[]byte)
+	buf, ok := p.pool.Get().(*[]byte)
+	if !ok {
+		buf := make([]byte, size, p.defaultSize)
+		return &buf
+	}
 	b := *buf
 	clear(b[:cap(b)])
 	*buf = b[:size]
@@ -137,12 +144,6 @@
 
 func newSizedBufferPool(size int) *sizedBufferPool {
 	return &sizedBufferPool{
-		pool: sync.Pool{
-			New: func() any {
-				buf := make([]byte, size)
-				return &buf
-			},
-		},
 		defaultSize: size,
 	}
 }
@@ -160,6 +161,7 @@
 func (p *simpleBufferPool) Get(size int) *[]byte {
 	bs, ok := p.pool.Get().(*[]byte)
 	if ok && cap(*bs) >= size {
+		clear((*bs)[:cap(*bs)])
 		*bs = (*bs)[:size]
 		return bs
 	}
diff --git a/vendor/google.golang.org/grpc/mem/buffer_slice.go b/vendor/google.golang.org/grpc/mem/buffer_slice.go
index af510d2..084fb19 100644
--- a/vendor/google.golang.org/grpc/mem/buffer_slice.go
+++ b/vendor/google.golang.org/grpc/mem/buffer_slice.go
@@ -19,6 +19,7 @@
 package mem
 
 import (
+	"fmt"
 	"io"
 )
 
@@ -117,43 +118,36 @@
 
 // Reader returns a new Reader for the input slice after taking references to
 // each underlying buffer.
-func (s BufferSlice) Reader() Reader {
+func (s BufferSlice) Reader() *Reader {
 	s.Ref()
-	return &sliceReader{
+	return &Reader{
 		data: s,
 		len:  s.Len(),
 	}
 }
 
 // Reader exposes a BufferSlice's data as an io.Reader, allowing it to interface
-// with other parts systems. It also provides an additional convenience method
-// Remaining(), which returns the number of unread bytes remaining in the slice.
+// with other systems.
+//
 // Buffers will be freed as they are read.
-type Reader interface {
-	io.Reader
-	io.ByteReader
-	// Close frees the underlying BufferSlice and never returns an error. Subsequent
-	// calls to Read will return (0, io.EOF).
-	Close() error
-	// Remaining returns the number of unread bytes remaining in the slice.
-	Remaining() int
-	// Reset frees the currently held buffer slice and starts reading from the
-	// provided slice. This allows reusing the reader object.
-	Reset(s BufferSlice)
-}
-
-type sliceReader struct {
+//
+// A Reader can be constructed from a BufferSlice; alternatively the zero value
+// of a Reader may be used after calling Reset on it.
+type Reader struct {
 	data BufferSlice
 	len  int
 	// The index into data[0].ReadOnlyData().
 	bufferIdx int
 }
 
-func (r *sliceReader) Remaining() int {
+// Remaining returns the number of unread bytes remaining in the slice.
+func (r *Reader) Remaining() int {
 	return r.len
 }
 
-func (r *sliceReader) Reset(s BufferSlice) {
+// Reset frees the currently held buffer slice and starts reading from the
+// provided slice. This allows reusing the reader object.
+func (r *Reader) Reset(s BufferSlice) {
 	r.data.Free()
 	s.Ref()
 	r.data = s
@@ -161,14 +155,16 @@
 	r.bufferIdx = 0
 }
 
-func (r *sliceReader) Close() error {
+// Close frees the underlying BufferSlice and never returns an error. Subsequent
+// calls to Read will return (0, io.EOF).
+func (r *Reader) Close() error {
 	r.data.Free()
 	r.data = nil
 	r.len = 0
 	return nil
 }
 
-func (r *sliceReader) freeFirstBufferIfEmpty() bool {
+func (r *Reader) freeFirstBufferIfEmpty() bool {
 	if len(r.data) == 0 || r.bufferIdx != len(r.data[0].ReadOnlyData()) {
 		return false
 	}
@@ -179,7 +175,7 @@
 	return true
 }
 
-func (r *sliceReader) Read(buf []byte) (n int, _ error) {
+func (r *Reader) Read(buf []byte) (n int, _ error) {
 	if r.len == 0 {
 		return 0, io.EOF
 	}
@@ -202,7 +198,8 @@
 	return n, nil
 }
 
-func (r *sliceReader) ReadByte() (byte, error) {
+// ReadByte reads a single byte.
+func (r *Reader) ReadByte() (byte, error) {
 	if r.len == 0 {
 		return 0, io.EOF
 	}
@@ -290,3 +287,59 @@
 		}
 	}
 }
+
+// Discard skips the next n bytes, returning the number of bytes discarded.
+//
+// It frees buffers as they are fully consumed.
+//
+// If Discard skips fewer than n bytes, it also returns an error.
+func (r *Reader) Discard(n int) (discarded int, err error) {
+	total := n
+	for n > 0 && r.len > 0 {
+		curData := r.data[0].ReadOnlyData()
+		curSize := min(n, len(curData)-r.bufferIdx)
+		n -= curSize
+		r.len -= curSize
+		r.bufferIdx += curSize
+		if r.bufferIdx >= len(curData) {
+			r.data[0].Free()
+			r.data = r.data[1:]
+			r.bufferIdx = 0
+		}
+	}
+	discarded = total - n
+	if n > 0 {
+		return discarded, fmt.Errorf("insufficient bytes in reader")
+	}
+	return discarded, nil
+}
+
+// Peek returns the next n bytes without advancing the reader.
+//
+// Peek appends results to the provided res slice and returns the updated slice.
+// This pattern allows re-using the storage of res if it has sufficient
+// capacity.
+//
+// The returned subslices are views into the underlying buffers and are only
+// valid until the reader is advanced past the corresponding buffer.
+//
+// If Peek returns fewer than n bytes, it also returns an error.
+func (r *Reader) Peek(n int, res [][]byte) ([][]byte, error) {
+	for i := 0; n > 0 && i < len(r.data); i++ {
+		curData := r.data[i].ReadOnlyData()
+		start := 0
+		if i == 0 {
+			start = r.bufferIdx
+		}
+		curSize := min(n, len(curData)-start)
+		if curSize == 0 {
+			continue
+		}
+		res = append(res, curData[start:start+curSize])
+		n -= curSize
+	}
+	if n > 0 {
+		return nil, fmt.Errorf("insufficient bytes in reader")
+	}
+	return res, nil
+}
diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go
index ee0ff96..1e783fe 100644
--- a/vendor/google.golang.org/grpc/preloader.go
+++ b/vendor/google.golang.org/grpc/preloader.go
@@ -47,9 +47,6 @@
 	}
 
 	// check if the context has the relevant information to prepareMsg
-	if rpcInfo.preloaderInfo == nil {
-		return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil")
-	}
 	if rpcInfo.preloaderInfo.codec == nil {
 		return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil")
 	}
diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go
index 92f5292..92fdc3a 100644
--- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go
+++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go
@@ -21,7 +21,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // source: grpc/reflection/v1/reflection.proto
 
diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go
index 5253e86..c803cf3 100644
--- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go
+++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go
@@ -18,7 +18,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.36.6
+// 	protoc-gen-go v1.36.10
 // 	protoc        v5.27.1
 // grpc/reflection/v1alpha/reflection.proto is a deprecated file.
 
diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go
index 47ea09f..6b04c9e 100644
--- a/vendor/google.golang.org/grpc/rpc_util.go
+++ b/vendor/google.golang.org/grpc/rpc_util.go
@@ -657,8 +657,20 @@
 	Read(n int) (mem.BufferSlice, error)
 }
 
+// noCopy may be embedded into structs which must not be copied
+// after the first use.
+//
+// See https://golang.org/issues/8005#issuecomment-190753527
+// for details.
+type noCopy struct {
+}
+
+func (*noCopy) Lock()   {}
+func (*noCopy) Unlock() {}
+
 // parser reads complete gRPC messages from the underlying reader.
 type parser struct {
+	_ noCopy
 	// r is the underlying reader.
 	// See the comment on recvMsg for the permissible
 	// error types.
@@ -949,7 +961,7 @@
 // Information about RPC
 type rpcInfo struct {
 	failfast      bool
-	preloaderInfo *compressorInfo
+	preloaderInfo compressorInfo
 }
 
 // Information about Preloader
@@ -968,7 +980,7 @@
 func newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context {
 	return context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{
 		failfast: failfast,
-		preloaderInfo: &compressorInfo{
+		preloaderInfo: compressorInfo{
 			codec: codec,
 			cp:    cp,
 			comp:  comp,
diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go
index 1da2a54..ddd3773 100644
--- a/vendor/google.golang.org/grpc/server.go
+++ b/vendor/google.golang.org/grpc/server.go
@@ -124,7 +124,8 @@
 
 // Server is a gRPC server to serve RPC requests.
 type Server struct {
-	opts serverOptions
+	opts         serverOptions
+	statsHandler stats.Handler
 
 	mu  sync.Mutex // guards following
 	lis map[net.Listener]bool
@@ -692,13 +693,14 @@
 		o.apply(&opts)
 	}
 	s := &Server{
-		lis:      make(map[net.Listener]bool),
-		opts:     opts,
-		conns:    make(map[string]map[transport.ServerTransport]bool),
-		services: make(map[string]*serviceInfo),
-		quit:     grpcsync.NewEvent(),
-		done:     grpcsync.NewEvent(),
-		channelz: channelz.RegisterServer(""),
+		lis:          make(map[net.Listener]bool),
+		opts:         opts,
+		statsHandler: istats.NewCombinedHandler(opts.statsHandlers...),
+		conns:        make(map[string]map[transport.ServerTransport]bool),
+		services:     make(map[string]*serviceInfo),
+		quit:         grpcsync.NewEvent(),
+		done:         grpcsync.NewEvent(),
+		channelz:     channelz.RegisterServer(""),
 	}
 	chainUnaryServerInterceptors(s)
 	chainStreamServerInterceptors(s)
@@ -999,7 +1001,7 @@
 		ConnectionTimeout:     s.opts.connectionTimeout,
 		Credentials:           s.opts.creds,
 		InTapHandle:           s.opts.inTapHandle,
-		StatsHandlers:         s.opts.statsHandlers,
+		StatsHandler:          s.statsHandler,
 		KeepaliveParams:       s.opts.keepaliveParams,
 		KeepalivePolicy:       s.opts.keepalivePolicy,
 		InitialWindowSize:     s.opts.initialWindowSize,
@@ -1036,18 +1038,18 @@
 func (s *Server) serveStreams(ctx context.Context, st transport.ServerTransport, rawConn net.Conn) {
 	ctx = transport.SetConnection(ctx, rawConn)
 	ctx = peer.NewContext(ctx, st.Peer())
-	for _, sh := range s.opts.statsHandlers {
-		ctx = sh.TagConn(ctx, &stats.ConnTagInfo{
+	if s.statsHandler != nil {
+		ctx = s.statsHandler.TagConn(ctx, &stats.ConnTagInfo{
 			RemoteAddr: st.Peer().Addr,
 			LocalAddr:  st.Peer().LocalAddr,
 		})
-		sh.HandleConn(ctx, &stats.ConnBegin{})
+		s.statsHandler.HandleConn(ctx, &stats.ConnBegin{})
 	}
 
 	defer func() {
 		st.Close(errors.New("finished serving streams for the server transport"))
-		for _, sh := range s.opts.statsHandlers {
-			sh.HandleConn(ctx, &stats.ConnEnd{})
+		if s.statsHandler != nil {
+			s.statsHandler.HandleConn(ctx, &stats.ConnEnd{})
 		}
 	}()
 
@@ -1104,7 +1106,7 @@
 // Notice: This API is EXPERIMENTAL and may be changed or removed in a
 // later release.
 func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-	st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers, s.opts.bufferPool)
+	st, err := transport.NewServerHandlerTransport(w, r, s.statsHandler, s.opts.bufferPool)
 	if err != nil {
 		// Errors returned from transport.NewServerHandlerTransport have
 		// already been written to w.
@@ -1198,12 +1200,8 @@
 		return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", payloadLen, s.opts.maxSendMessageSize)
 	}
 	err = stream.Write(hdr, payload, opts)
-	if err == nil {
-		if len(s.opts.statsHandlers) != 0 {
-			for _, sh := range s.opts.statsHandlers {
-				sh.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))
-			}
-		}
+	if err == nil && s.statsHandler != nil {
+		s.statsHandler.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now()))
 	}
 	return err
 }
@@ -1245,16 +1243,15 @@
 }
 
 func (s *Server) processUnaryRPC(ctx context.Context, stream *transport.ServerStream, info *serviceInfo, md *MethodDesc, trInfo *traceInfo) (err error) {
-	shs := s.opts.statsHandlers
-	if len(shs) != 0 || trInfo != nil || channelz.IsOn() {
+	sh := s.statsHandler
+	if sh != nil || trInfo != nil || channelz.IsOn() {
 		if channelz.IsOn() {
 			s.incrCallsStarted()
 		}
 		var statsBegin *stats.Begin
-		for _, sh := range shs {
-			beginTime := time.Now()
+		if sh != nil {
 			statsBegin = &stats.Begin{
-				BeginTime:      beginTime,
+				BeginTime:      time.Now(),
 				IsClientStream: false,
 				IsServerStream: false,
 			}
@@ -1282,7 +1279,7 @@
 				trInfo.tr.Finish()
 			}
 
-			for _, sh := range shs {
+			if sh != nil {
 				end := &stats.End{
 					BeginTime: statsBegin.BeginTime,
 					EndTime:   time.Now(),
@@ -1379,7 +1376,7 @@
 	}
 
 	var payInfo *payloadInfo
-	if len(shs) != 0 || len(binlogs) != 0 {
+	if sh != nil || len(binlogs) != 0 {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
@@ -1405,7 +1402,7 @@
 			return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err)
 		}
 
-		for _, sh := range shs {
+		if sh != nil {
 			sh.HandleRPC(ctx, &stats.InPayload{
 				RecvTime:         time.Now(),
 				Payload:          v,
@@ -1579,33 +1576,30 @@
 	if channelz.IsOn() {
 		s.incrCallsStarted()
 	}
-	shs := s.opts.statsHandlers
+	sh := s.statsHandler
 	var statsBegin *stats.Begin
-	if len(shs) != 0 {
-		beginTime := time.Now()
+	if sh != nil {
 		statsBegin = &stats.Begin{
-			BeginTime:      beginTime,
+			BeginTime:      time.Now(),
 			IsClientStream: sd.ClientStreams,
 			IsServerStream: sd.ServerStreams,
 		}
-		for _, sh := range shs {
-			sh.HandleRPC(ctx, statsBegin)
-		}
+		sh.HandleRPC(ctx, statsBegin)
 	}
 	ctx = NewContextWithServerTransportStream(ctx, stream)
 	ss := &serverStream{
 		ctx:                   ctx,
 		s:                     stream,
-		p:                     &parser{r: stream, bufferPool: s.opts.bufferPool},
+		p:                     parser{r: stream, bufferPool: s.opts.bufferPool},
 		codec:                 s.getCodec(stream.ContentSubtype()),
 		desc:                  sd,
 		maxReceiveMessageSize: s.opts.maxReceiveMessageSize,
 		maxSendMessageSize:    s.opts.maxSendMessageSize,
 		trInfo:                trInfo,
-		statsHandler:          shs,
+		statsHandler:          sh,
 	}
 
-	if len(shs) != 0 || trInfo != nil || channelz.IsOn() {
+	if sh != nil || trInfo != nil || channelz.IsOn() {
 		// See comment in processUnaryRPC on defers.
 		defer func() {
 			if trInfo != nil {
@@ -1619,7 +1613,7 @@
 				ss.mu.Unlock()
 			}
 
-			if len(shs) != 0 {
+			if sh != nil {
 				end := &stats.End{
 					BeginTime: statsBegin.BeginTime,
 					EndTime:   time.Now(),
@@ -1627,9 +1621,7 @@
 				if err != nil && err != io.EOF {
 					end.Error = toRPCErr(err)
 				}
-				for _, sh := range shs {
-					sh.HandleRPC(ctx, end)
-				}
+				sh.HandleRPC(ctx, end)
 			}
 
 			if channelz.IsOn() {
@@ -1818,19 +1810,17 @@
 	method := sm[pos+1:]
 
 	// FromIncomingContext is expensive: skip if there are no statsHandlers
-	if len(s.opts.statsHandlers) > 0 {
+	if s.statsHandler != nil {
 		md, _ := metadata.FromIncomingContext(ctx)
-		for _, sh := range s.opts.statsHandlers {
-			ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
-			sh.HandleRPC(ctx, &stats.InHeader{
-				FullMethod:  stream.Method(),
-				RemoteAddr:  t.Peer().Addr,
-				LocalAddr:   t.Peer().LocalAddr,
-				Compression: stream.RecvCompress(),
-				WireLength:  stream.HeaderWireLength(),
-				Header:      md,
-			})
-		}
+		ctx = s.statsHandler.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: stream.Method()})
+		s.statsHandler.HandleRPC(ctx, &stats.InHeader{
+			FullMethod:  stream.Method(),
+			RemoteAddr:  t.Peer().Addr,
+			LocalAddr:   t.Peer().LocalAddr,
+			Compression: stream.RecvCompress(),
+			WireLength:  stream.HeaderWireLength(),
+			Header:      md,
+		})
 	}
 	// To have calls in stream callouts work. Will delete once all stats handler
 	// calls come from the gRPC layer.
diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go
index 0a0af89..ca87ff9 100644
--- a/vendor/google.golang.org/grpc/stream.go
+++ b/vendor/google.golang.org/grpc/stream.go
@@ -177,6 +177,8 @@
 	return cc.NewStream(ctx, desc, method, opts...)
 }
 
+var emptyMethodConfig = serviceconfig.MethodConfig{}
+
 func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) {
 	// Start tracking the RPC for idleness purposes. This is where a stream is
 	// created for both streaming and unary RPCs, and hence is a good place to
@@ -217,7 +219,7 @@
 		return nil, err
 	}
 
-	var mc serviceconfig.MethodConfig
+	mc := &emptyMethodConfig
 	var onCommit func()
 	newStream := func(ctx context.Context, done func()) (iresolver.ClientStream, error) {
 		return newClientStreamWithParams(ctx, desc, cc, method, mc, onCommit, done, nameResolutionDelayed, opts...)
@@ -240,7 +242,7 @@
 		if rpcConfig.Context != nil {
 			ctx = rpcConfig.Context
 		}
-		mc = rpcConfig.MethodConfig
+		mc = &rpcConfig.MethodConfig
 		onCommit = rpcConfig.OnCommitted
 		if rpcConfig.Interceptor != nil {
 			rpcInfo.Context = nil
@@ -258,7 +260,7 @@
 	return newStream(ctx, func() {})
 }
 
-func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) {
+func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, mc *serviceconfig.MethodConfig, onCommit, doneFunc func(), nameResolutionDelayed bool, opts ...CallOption) (_ iresolver.ClientStream, err error) {
 	callInfo := defaultCallInfo()
 	if mc.WaitForReady != nil {
 		callInfo.failFast = !*mc.WaitForReady
@@ -325,7 +327,7 @@
 	cs := &clientStream{
 		callHdr:             callHdr,
 		ctx:                 ctx,
-		methodConfig:        &mc,
+		methodConfig:        mc,
 		opts:                opts,
 		callInfo:            callInfo,
 		cc:                  cc,
@@ -418,19 +420,21 @@
 	ctx := newContextWithRPCInfo(cs.ctx, cs.callInfo.failFast, cs.callInfo.codec, cs.compressorV0, cs.compressorV1)
 	method := cs.callHdr.Method
 	var beginTime time.Time
-	shs := cs.cc.dopts.copts.StatsHandlers
-	for _, sh := range shs {
-		ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{FullMethodName: method, FailFast: cs.callInfo.failFast, NameResolutionDelay: cs.nameResolutionDelay})
+	sh := cs.cc.statsHandler
+	if sh != nil {
 		beginTime = time.Now()
-		begin := &stats.Begin{
+		ctx = sh.TagRPC(ctx, &stats.RPCTagInfo{
+			FullMethodName: method, FailFast: cs.callInfo.failFast,
+			NameResolutionDelay: cs.nameResolutionDelay,
+		})
+		sh.HandleRPC(ctx, &stats.Begin{
 			Client:                    true,
 			BeginTime:                 beginTime,
 			FailFast:                  cs.callInfo.failFast,
 			IsClientStream:            cs.desc.ClientStreams,
 			IsServerStream:            cs.desc.ServerStreams,
 			IsTransparentRetryAttempt: isTransparent,
-		}
-		sh.HandleRPC(ctx, begin)
+		})
 	}
 
 	var trInfo *traceInfo
@@ -461,7 +465,7 @@
 		beginTime:      beginTime,
 		cs:             cs,
 		decompressorV0: cs.cc.dopts.dc,
-		statsHandlers:  shs,
+		statsHandler:   sh,
 		trInfo:         trInfo,
 	}, nil
 }
@@ -482,10 +486,8 @@
 	if a.trInfo != nil {
 		a.trInfo.firstLine.SetRemoteAddr(a.transport.RemoteAddr())
 	}
-	if pick.blocked {
-		for _, sh := range a.statsHandlers {
-			sh.HandleRPC(a.ctx, &stats.DelayedPickComplete{})
-		}
+	if pick.blocked && a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.DelayedPickComplete{})
 	}
 	return nil
 }
@@ -529,7 +531,7 @@
 	}
 	a.transportStream = s
 	a.ctx = s.Context()
-	a.parser = &parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}
+	a.parser = parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool}
 	return nil
 }
 
@@ -601,7 +603,7 @@
 	cs              *clientStream
 	transport       transport.ClientTransport
 	transportStream *transport.ClientStream
-	parser          *parser
+	parser          parser
 	pickResult      balancer.PickResult
 
 	finished        bool
@@ -615,8 +617,8 @@
 	// and cleared when the finish method is called.
 	trInfo *traceInfo
 
-	statsHandlers []stats.Handler
-	beginTime     time.Time
+	statsHandler stats.Handler
+	beginTime    time.Time
 
 	// set for newStream errors that may be transparently retried
 	allowTransparentRetry bool
@@ -1110,17 +1112,15 @@
 		}
 		return io.EOF
 	}
-	if len(a.statsHandlers) != 0 {
-		for _, sh := range a.statsHandlers {
-			sh.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))
-		}
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now()))
 	}
 	return nil
 }
 
 func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) {
 	cs := a.cs
-	if len(a.statsHandlers) != 0 && payInfo == nil {
+	if a.statsHandler != nil && payInfo == nil {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
@@ -1141,7 +1141,7 @@
 		// Only initialize this state once per stream.
 		a.decompressorSet = true
 	}
-	if err := recv(a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decompressorV1, false); err != nil {
+	if err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decompressorV1, false); err != nil {
 		if err == io.EOF {
 			if statusErr := a.transportStream.Status().Err(); statusErr != nil {
 				return statusErr
@@ -1163,8 +1163,8 @@
 		}
 		a.mu.Unlock()
 	}
-	for _, sh := range a.statsHandlers {
-		sh.HandleRPC(a.ctx, &stats.InPayload{
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.InPayload{
 			Client:           true,
 			RecvTime:         time.Now(),
 			Payload:          m,
@@ -1179,7 +1179,7 @@
 	}
 	// Special handling for non-server-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decompressorV1, false); err == io.EOF {
+	if err := recv(&a.parser, cs.codec, a.transportStream, a.decompressorV0, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decompressorV1, false); err == io.EOF {
 		return a.transportStream.Status().Err() // non-server streaming Recv returns nil on success
 	} else if err != nil {
 		return toRPCErr(err)
@@ -1217,15 +1217,14 @@
 			ServerLoad:    balancerload.Parse(tr),
 		})
 	}
-	for _, sh := range a.statsHandlers {
-		end := &stats.End{
+	if a.statsHandler != nil {
+		a.statsHandler.HandleRPC(a.ctx, &stats.End{
 			Client:    true,
 			BeginTime: a.beginTime,
 			EndTime:   time.Now(),
 			Trailer:   tr,
 			Error:     err,
-		}
-		sh.HandleRPC(a.ctx, end)
+		})
 	}
 	if a.trInfo != nil && a.trInfo.tr != nil {
 		if err == nil {
@@ -1331,7 +1330,7 @@
 		return nil, err
 	}
 	as.transportStream = s
-	as.parser = &parser{r: s, bufferPool: ac.dopts.copts.BufferPool}
+	as.parser = parser{r: s, bufferPool: ac.dopts.copts.BufferPool}
 	ac.incrCallsStarted()
 	if desc != unaryStreamDesc {
 		// Listen on stream context to cleanup when the stream context is
@@ -1374,7 +1373,7 @@
 	decompressorSet  bool
 	decompressorV0   Decompressor
 	decompressorV1   encoding.Compressor
-	parser           *parser
+	parser           parser
 
 	// mu guards finished and is held for the entire finish method.
 	mu       sync.Mutex
@@ -1487,7 +1486,7 @@
 		// Only initialize this state once per stream.
 		as.decompressorSet = true
 	}
-	if err := recv(as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err != nil {
+	if err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err != nil {
 		if err == io.EOF {
 			if statusErr := as.transportStream.Status().Err(); statusErr != nil {
 				return statusErr
@@ -1509,7 +1508,7 @@
 
 	// Special handling for non-server-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err == io.EOF {
+	if err := recv(&as.parser, as.codec, as.transportStream, as.decompressorV0, m, *as.callInfo.maxReceiveMessageSize, nil, as.decompressorV1, false); err == io.EOF {
 		return as.transportStream.Status().Err() // non-server streaming Recv returns nil on success
 	} else if err != nil {
 		return toRPCErr(err)
@@ -1597,7 +1596,7 @@
 type serverStream struct {
 	ctx   context.Context
 	s     *transport.ServerStream
-	p     *parser
+	p     parser
 	codec baseCodec
 	desc  *StreamDesc
 
@@ -1614,7 +1613,7 @@
 	maxSendMessageSize    int
 	trInfo                *traceInfo
 
-	statsHandler []stats.Handler
+	statsHandler stats.Handler
 
 	binlogs []binarylog.MethodLogger
 	// serverHeaderBinlogged indicates whether server header has been logged. It
@@ -1750,10 +1749,8 @@
 			binlog.Log(ss.ctx, sm)
 		}
 	}
-	if len(ss.statsHandler) != 0 {
-		for _, sh := range ss.statsHandler {
-			sh.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))
-		}
+	if ss.statsHandler != nil {
+		ss.statsHandler.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now()))
 	}
 	return nil
 }
@@ -1784,11 +1781,11 @@
 		}
 	}()
 	var payInfo *payloadInfo
-	if len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 {
+	if ss.statsHandler != nil || len(ss.binlogs) != 0 {
 		payInfo = &payloadInfo{}
 		defer payInfo.free()
 	}
-	if err := recv(ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, payInfo, ss.decompressorV1, true); err != nil {
+	if err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, payInfo, ss.decompressorV1, true); err != nil {
 		if err == io.EOF {
 			if len(ss.binlogs) != 0 {
 				chc := &binarylog.ClientHalfClose{}
@@ -1808,16 +1805,14 @@
 		return toRPCErr(err)
 	}
 	ss.recvFirstMsg = true
-	if len(ss.statsHandler) != 0 {
-		for _, sh := range ss.statsHandler {
-			sh.HandleRPC(ss.s.Context(), &stats.InPayload{
-				RecvTime:         time.Now(),
-				Payload:          m,
-				Length:           payInfo.uncompressedBytes.Len(),
-				WireLength:       payInfo.compressedLength + headerLen,
-				CompressedLength: payInfo.compressedLength,
-			})
-		}
+	if ss.statsHandler != nil {
+		ss.statsHandler.HandleRPC(ss.s.Context(), &stats.InPayload{
+			RecvTime:         time.Now(),
+			Payload:          m,
+			Length:           payInfo.uncompressedBytes.Len(),
+			WireLength:       payInfo.compressedLength + headerLen,
+			CompressedLength: payInfo.compressedLength,
+		})
 	}
 	if len(ss.binlogs) != 0 {
 		cm := &binarylog.ClientMessage{
@@ -1834,7 +1829,7 @@
 	}
 	// Special handling for non-client-stream rpcs.
 	// This recv expects EOF or errors, so we don't collect inPayload.
-	if err := recv(ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, nil, ss.decompressorV1, true); err == io.EOF {
+	if err := recv(&ss.p, ss.codec, ss.s, ss.decompressorV0, m, ss.maxReceiveMessageSize, nil, ss.decompressorV1, true); err == io.EOF {
 		return nil
 	} else if err != nil {
 		return err
diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go
index 76f2e0d..9e6d018 100644
--- a/vendor/google.golang.org/grpc/version.go
+++ b/vendor/google.golang.org/grpc/version.go
@@ -19,4 +19,4 @@
 package grpc
 
 // Version is the current grpc version.
-const Version = "1.76.0"
+const Version = "1.77.0"
diff --git a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
index 669133d..c96e448 100644
--- a/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
+++ b/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go
@@ -32,7 +32,7 @@
 func Unmarshal(tag string, goType reflect.Type, evs protoreflect.EnumValueDescriptors) protoreflect.FieldDescriptor {
 	f := new(filedesc.Field)
 	f.L0.ParentFile = filedesc.SurrogateProto2
-	f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures
+	packed := false
 	for len(tag) > 0 {
 		i := strings.IndexByte(tag, ',')
 		if i < 0 {
@@ -108,7 +108,7 @@
 				f.L1.StringName.InitJSON(jsonName)
 			}
 		case s == "packed":
-			f.L1.EditionFeatures.IsPacked = true
+			packed = true
 		case strings.HasPrefix(s, "def="):
 			// The default tag is special in that everything afterwards is the
 			// default regardless of the presence of commas.
@@ -121,6 +121,13 @@
 		tag = strings.TrimPrefix(tag[i:], ",")
 	}
 
+	// Update EditionFeatures after the loop and after we know whether this is
+	// a proto2 or proto3 field.
+	f.L1.EditionFeatures = f.L0.ParentFile.L1.EditionFeatures
+	if packed {
+		f.L1.EditionFeatures.IsPacked = true
+	}
+
 	// The generator uses the group message name instead of the field name.
 	// We obtain the real field name by lowercasing the group name.
 	if f.L1.Kind == protoreflect.GroupKind {
diff --git a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
index 099b2bf..9aa7a9b 100644
--- a/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
+++ b/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go
@@ -424,27 +424,34 @@
 	return Token{}, d.newSyntaxError("invalid field name: %s", errId(d.in))
 }
 
-// parseTypeName parses Any type URL or extension field name. The name is
-// enclosed in [ and ] characters. The C++ parser does not handle many legal URL
-// strings. This implementation is more liberal and allows for the pattern
-// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed
-// in between [ ], '.', '/' and the sub names.
+// parseTypeName parses an Any type URL or an extension field name. The name is
+// enclosed in [ and ] characters. We allow almost arbitrary type URL prefixes,
+// closely following the text-format spec [1,2]. We implement "ExtensionName |
+// AnyName" as follows (with some exceptions for backwards compatibility):
+//
+// char      = [-_a-zA-Z0-9]
+// url_char  = char | [.~!$&'()*+,;=] | "%", hex, hex
+//
+// Ident         = char, { char }
+// TypeName      = Ident, { ".", Ident } ;
+// UrlPrefix     = url_char, { url_char | "/" } ;
+// ExtensionName = "[", TypeName, "]" ;
+// AnyName       = "[", UrlPrefix, "/", TypeName, "]" ;
+//
+// Additionally, we allow arbitrary whitespace and comments between [ and ].
+//
+// [1] https://protobuf.dev/reference/protobuf/textformat-spec/#characters
+// [2] https://protobuf.dev/reference/protobuf/textformat-spec/#field-names
 func (d *Decoder) parseTypeName() (Token, error) {
-	startPos := len(d.orig) - len(d.in)
 	// Use alias s to advance first in order to use d.in for error handling.
-	// Caller already checks for [ as first character.
+	// Caller already checks for [ as first character (d.in[0] == '[').
 	s := consume(d.in[1:], 0)
 	if len(s) == 0 {
 		return Token{}, ErrUnexpectedEOF
 	}
 
+	// Collect everything between [ and ] in name.
 	var name []byte
-	for len(s) > 0 && isTypeNameChar(s[0]) {
-		name = append(name, s[0])
-		s = s[1:]
-	}
-	s = consume(s, 0)
-
 	var closed bool
 	for len(s) > 0 && !closed {
 		switch {
@@ -452,23 +459,20 @@
 			s = s[1:]
 			closed = true
 
-		case s[0] == '/', s[0] == '.':
-			if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {
-				return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-					d.orig[startPos:len(d.orig)-len(s)+1])
-			}
+		case s[0] == '/' || isTypeNameChar(s[0]) || isUrlExtraChar(s[0]):
 			name = append(name, s[0])
-			s = s[1:]
-			s = consume(s, 0)
-			for len(s) > 0 && isTypeNameChar(s[0]) {
-				name = append(name, s[0])
-				s = s[1:]
+			s = consume(s[1:], 0)
+
+		// URL percent-encoded chars
+		case s[0] == '%':
+			if len(s) < 3 || !isHexChar(s[1]) || !isHexChar(s[2]) {
+				return Token{}, d.parseTypeNameError(s, 3)
 			}
-			s = consume(s, 0)
+			name = append(name, s[0], s[1], s[2])
+			s = consume(s[3:], 0)
 
 		default:
-			return Token{}, d.newSyntaxError(
-				"invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1])
+			return Token{}, d.parseTypeNameError(s, 1)
 		}
 	}
 
@@ -476,15 +480,38 @@
 		return Token{}, ErrUnexpectedEOF
 	}
 
-	// First character cannot be '.'. Last character cannot be '.' or '/'.
-	size := len(name)
-	if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {
-		return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-			d.orig[startPos:len(d.orig)-len(s)])
+	// Split collected name on last '/' into urlPrefix and typeName (if '/' is
+	// present).
+	typeName := name
+	if i := bytes.LastIndexByte(name, '/'); i != -1 {
+		urlPrefix := name[:i]
+		typeName = name[i+1:]
+
+		// urlPrefix may be empty (for backwards compatibility).
+		// If non-empty, it must not start with '/'.
+		if len(urlPrefix) > 0 && urlPrefix[0] == '/' {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
 	}
 
+	// typeName must not be empty (note: "" splits to [""]) and all identifier
+	// parts must not be empty.
+	for _, ident := range bytes.Split(typeName, []byte{'.'}) {
+		if len(ident) == 0 {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
+	}
+
+	// typeName must not contain any percent-encoded or special URL chars.
+	for _, b := range typeName {
+		if b == '%' || (b != '.' && isUrlExtraChar(b)) {
+			return Token{}, d.parseTypeNameError(s, 0)
+		}
+	}
+
+	startPos := len(d.orig) - len(d.in)
+	endPos := len(d.orig) - len(s)
 	d.in = s
-	endPos := len(d.orig) - len(d.in)
 	d.consume(0)
 
 	return Token{
@@ -496,16 +523,32 @@
 	}, nil
 }
 
-func isTypeNameChar(b byte) bool {
-	return (b == '-' || b == '_' ||
-		('0' <= b && b <= '9') ||
-		('a' <= b && b <= 'z') ||
-		('A' <= b && b <= 'Z'))
+func (d *Decoder) parseTypeNameError(s []byte, numUnconsumedChars int) error {
+	return d.newSyntaxError(
+		"invalid type URL/extension field name: %s",
+		d.in[:len(d.in)-len(s)+min(numUnconsumedChars, len(s))],
+	)
 }
 
-func isWhiteSpace(b byte) bool {
+func isHexChar(b byte) bool {
+	return ('0' <= b && b <= '9') ||
+		('a' <= b && b <= 'f') ||
+		('A' <= b && b <= 'F')
+}
+
+func isTypeNameChar(b byte) bool {
+	return b == '-' || b == '_' ||
+		('0' <= b && b <= '9') ||
+		('a' <= b && b <= 'z') ||
+		('A' <= b && b <= 'Z')
+}
+
+// isUrlExtraChar complements isTypeNameChar with extra characters that we allow
+// in URLs but not in type names. Note that '/' is not included so that it can
+// be treated specially.
+func isUrlExtraChar(b byte) bool {
 	switch b {
-	case ' ', '\n', '\r', '\t':
+	case '.', '~', '!', '$', '&', '(', ')', '*', '+', ',', ';', '=':
 		return true
 	default:
 		return false
diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
index dbcf90b..c775e58 100644
--- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
+++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go
@@ -32,6 +32,7 @@
 	EditionProto3      Edition = 999
 	Edition2023        Edition = 1000
 	Edition2024        Edition = 1001
+	EditionUnstable    Edition = 9999
 	EditionUnsupported Edition = 100000
 )
 
diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
index dd31faa..78f02b1 100644
--- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
+++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go
@@ -330,7 +330,6 @@
 				md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)
 				extensionIdx++
 			case genid.DescriptorProto_Options_field_number:
-				md.unmarshalOptions(v)
 				rawOptions = appendOptions(rawOptions, v)
 			}
 		default:
@@ -356,27 +355,6 @@
 	md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)
 }
 
-func (md *Message) unmarshalOptions(b []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.MessageOptions_MapEntry_field_number:
-				md.L1.IsMapEntry = protowire.DecodeBool(v)
-			case genid.MessageOptions_MessageSetWireFormat_field_number:
-				md.L1.IsMessageSet = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
 func unmarshalMessageReservedRange(b []byte) (r [2]protoreflect.FieldNumber) {
 	for len(b) > 0 {
 		num, typ, n := protowire.ConsumeTag(b)
diff --git a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
index 950a6a3..65aaf4d 100644
--- a/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
+++ b/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go
@@ -26,6 +26,7 @@
 	Edition_EDITION_PROTO3_enum_value          = 999
 	Edition_EDITION_2023_enum_value            = 1000
 	Edition_EDITION_2024_enum_value            = 1001
+	Edition_EDITION_UNSTABLE_enum_value        = 9999
 	Edition_EDITION_1_TEST_ONLY_enum_value     = 1
 	Edition_EDITION_2_TEST_ONLY_enum_value     = 2
 	Edition_EDITION_99997_TEST_ONLY_enum_value = 99997
diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
index 229c698..4a3bf39 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/codec_map.go
@@ -113,6 +113,9 @@
 }
 
 func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
+	if opts.depth--; opts.depth < 0 {
+		return out, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return out, errUnknown
 	}
@@ -170,6 +173,9 @@
 }
 
 func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
+	if opts.depth--; opts.depth < 0 {
+		return out, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return out, errUnknown
 	}
diff --git a/vendor/google.golang.org/protobuf/internal/impl/decode.go b/vendor/google.golang.org/protobuf/internal/impl/decode.go
index e0dd21f..1228b5c 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/decode.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/decode.go
@@ -102,8 +102,7 @@
 
 func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
 	mi.init()
-	opts.depth--
-	if opts.depth < 0 {
+	if opts.depth--; opts.depth < 0 {
 		return out, errRecursionDepth
 	}
 	if flags.ProtoLegacy && mi.isMessageSet {
diff --git a/vendor/google.golang.org/protobuf/internal/impl/validate.go b/vendor/google.golang.org/protobuf/internal/impl/validate.go
index 7b2995d..99a1eb9 100644
--- a/vendor/google.golang.org/protobuf/internal/impl/validate.go
+++ b/vendor/google.golang.org/protobuf/internal/impl/validate.go
@@ -68,9 +68,13 @@
 	if in.Resolver == nil {
 		in.Resolver = protoregistry.GlobalTypes
 	}
+	if in.Depth == 0 {
+		in.Depth = protowire.DefaultRecursionLimit
+	}
 	o, st := mi.validate(in.Buf, 0, unmarshalOptions{
 		flags:    in.Flags,
 		resolver: in.Resolver,
+		depth:    in.Depth,
 	})
 	if o.initialized {
 		out.Flags |= protoiface.UnmarshalInitialized
@@ -257,6 +261,9 @@
 		states[0].typ = validationTypeGroup
 		states[0].endGroup = groupTag
 	}
+	if opts.depth--; opts.depth < 0 {
+		return out, ValidationInvalid
+	}
 	initialized := true
 	start := len(b)
 State:
@@ -451,6 +458,13 @@
 						mi:      vi.mi,
 						tail:    b,
 					})
+					if vi.typ == validationTypeMessage ||
+						vi.typ == validationTypeGroup ||
+						vi.typ == validationTypeMap {
+						if opts.depth--; opts.depth < 0 {
+							return out, ValidationInvalid
+						}
+					}
 					b = v
 					continue State
 				case validationTypeRepeatedVarint:
@@ -499,6 +513,9 @@
 						mi:       vi.mi,
 						endGroup: num,
 					})
+					if opts.depth--; opts.depth < 0 {
+						return out, ValidationInvalid
+					}
 					continue State
 				case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:
 					typeid, v, n, err := messageset.ConsumeFieldValue(b, false)
@@ -521,6 +538,13 @@
 							mi:   xvi.mi,
 							tail: b[n:],
 						})
+						if xvi.typ == validationTypeMessage ||
+							xvi.typ == validationTypeGroup ||
+							xvi.typ == validationTypeMap {
+							if opts.depth--; opts.depth < 0 {
+								return out, ValidationInvalid
+							}
+						}
 						b = v
 						continue State
 					}
@@ -547,12 +571,14 @@
 		switch st.typ {
 		case validationTypeMessage, validationTypeGroup:
 			numRequiredFields = int(st.mi.numRequiredFields)
+			opts.depth++
 		case validationTypeMap:
 			// If this is a map field with a message value that contains
 			// required fields, require that the value be present.
 			if st.mi != nil && st.mi.numRequiredFields > 0 {
 				numRequiredFields = 1
 			}
+			opts.depth++
 		}
 		// If there are more than 64 required fields, this check will
 		// always fail and we will report that the message is potentially
diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go
index 77de0f2..763fd82 100644
--- a/vendor/google.golang.org/protobuf/internal/version/version.go
+++ b/vendor/google.golang.org/protobuf/internal/version/version.go
@@ -52,7 +52,7 @@
 const (
 	Major      = 1
 	Minor      = 36
-	Patch      = 10
+	Patch      = 11
 	PreRelease = ""
 )
 
diff --git a/vendor/google.golang.org/protobuf/proto/decode.go b/vendor/google.golang.org/protobuf/proto/decode.go
index 4cbf1ae..889d851 100644
--- a/vendor/google.golang.org/protobuf/proto/decode.go
+++ b/vendor/google.golang.org/protobuf/proto/decode.go
@@ -121,9 +121,8 @@
 
 		out, err = methods.Unmarshal(in)
 	} else {
-		o.RecursionLimit--
-		if o.RecursionLimit < 0 {
-			return out, errors.New("exceeded max recursion depth")
+		if o.RecursionLimit--; o.RecursionLimit < 0 {
+			return out, errRecursionDepth
 		}
 		err = o.unmarshalMessageSlow(b, m)
 	}
@@ -220,6 +219,9 @@
 }
 
 func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {
+	if o.RecursionLimit--; o.RecursionLimit < 0 {
+		return 0, errRecursionDepth
+	}
 	if wtyp != protowire.BytesType {
 		return 0, errUnknown
 	}
@@ -305,3 +307,5 @@
 var errUnknown = errors.New("BUG: internal error (unknown)")
 
 var errDecode = errors.New("cannot parse invalid wire-format data")
+
+var errRecursionDepth = errors.New("exceeded maximum recursion depth")
diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
index 9196288..40f17af 100644
--- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
+++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go
@@ -108,7 +108,9 @@
 	if f.L1.Path == "" {
 		return nil, errors.New("file path must be populated")
 	}
-	if f.L1.Syntax == protoreflect.Editions && (fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) {
+	if f.L1.Syntax == protoreflect.Editions &&
+		(fd.GetEdition() < editionssupport.Minimum || fd.GetEdition() > editionssupport.Maximum) &&
+		fd.GetEdition() != descriptorpb.Edition_EDITION_UNSTABLE {
 		// Allow cmd/protoc-gen-go/testdata to use any edition for easier
 		// testing of upcoming edition features.
 		if !strings.HasPrefix(fd.GetName(), "cmd/protoc-gen-go/testdata/") {
@@ -152,6 +154,7 @@
 		imp := &f.L2.Imports[i]
 		imps.importPublic(imp.Imports())
 	}
+	optionImps := importSet{f.Path(): true}
 	if len(fd.GetOptionDependency()) > 0 {
 		optionImports := make(filedesc.FileImports, len(fd.GetOptionDependency()))
 		for i, path := range fd.GetOptionDependency() {
@@ -165,10 +168,12 @@
 			}
 			imp.FileDescriptor = f
 
-			if imps[imp.Path()] {
+			if imps[imp.Path()] || optionImps[imp.Path()] {
 				return nil, errors.New("already imported %q", path)
 			}
-			imps[imp.Path()] = true
+			// This needs to be a separate map so that we don't recognize non-options
+			// symbols coming from option imports.
+			optionImps[imp.Path()] = true
 		}
 		f.L2.OptionImports = func() protoreflect.FileImports {
 			return &optionImports
diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
index 697a61b..147b8c7 100644
--- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
+++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go
@@ -46,6 +46,8 @@
 		return descriptorpb.Edition_EDITION_2023
 	case filedesc.Edition2024:
 		return descriptorpb.Edition_EDITION_2024
+	case filedesc.EditionUnstable:
+		return descriptorpb.Edition_EDITION_UNSTABLE
 	default:
 		panic(fmt.Sprintf("unknown value for edition: %v", ed))
 	}
@@ -58,7 +60,7 @@
 		return def
 	}
 	edpb := toEditionProto(ed)
-	if defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb {
+	if (defaults.GetMinimumEdition() > edpb || defaults.GetMaximumEdition() < edpb) && edpb != descriptorpb.Edition_EDITION_UNSTABLE {
 		// This should never happen protodesc.(FileOptions).New would fail when
 		// initializing the file descriptor.
 		// This most likely means the embedded defaults were not updated.
diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
index 4eacb52..0b23faa 100644
--- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
+++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
@@ -69,6 +69,8 @@
 	// comparison.
 	Edition_EDITION_2023 Edition = 1000
 	Edition_EDITION_2024 Edition = 1001
+	// A placeholder edition for developing and testing unscheduled features.
+	Edition_EDITION_UNSTABLE Edition = 9999
 	// Placeholder editions for testing feature resolution.  These should not be
 	// used or relied on outside of tests.
 	Edition_EDITION_1_TEST_ONLY     Edition = 1
@@ -91,6 +93,7 @@
 		999:        "EDITION_PROTO3",
 		1000:       "EDITION_2023",
 		1001:       "EDITION_2024",
+		9999:       "EDITION_UNSTABLE",
 		1:          "EDITION_1_TEST_ONLY",
 		2:          "EDITION_2_TEST_ONLY",
 		99997:      "EDITION_99997_TEST_ONLY",
@@ -105,6 +108,7 @@
 		"EDITION_PROTO3":          999,
 		"EDITION_2023":            1000,
 		"EDITION_2024":            1001,
+		"EDITION_UNSTABLE":        9999,
 		"EDITION_1_TEST_ONLY":     1,
 		"EDITION_2_TEST_ONLY":     2,
 		"EDITION_99997_TEST_ONLY": 99997,
@@ -4793,11 +4797,11 @@
 	"\x18EnumValueDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
 	"\x06number\x18\x02 \x01(\x05R\x06number\x12;\n" +
-	"\aoptions\x18\x03 \x01(\v2!.google.protobuf.EnumValueOptionsR\aoptions\"\xa7\x01\n" +
+	"\aoptions\x18\x03 \x01(\v2!.google.protobuf.EnumValueOptionsR\aoptions\"\xb5\x01\n" +
 	"\x16ServiceDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12>\n" +
 	"\x06method\x18\x02 \x03(\v2&.google.protobuf.MethodDescriptorProtoR\x06method\x129\n" +
-	"\aoptions\x18\x03 \x01(\v2\x1f.google.protobuf.ServiceOptionsR\aoptions\"\x89\x02\n" +
+	"\aoptions\x18\x03 \x01(\v2\x1f.google.protobuf.ServiceOptionsR\aoptionsJ\x04\b\x04\x10\x05R\x06stream\"\x89\x02\n" +
 	"\x15MethodDescriptorProto\x12\x12\n" +
 	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1d\n" +
 	"\n" +
@@ -5033,14 +5037,15 @@
 	"\bSemantic\x12\b\n" +
 	"\x04NONE\x10\x00\x12\a\n" +
 	"\x03SET\x10\x01\x12\t\n" +
-	"\x05ALIAS\x10\x02*\xa7\x02\n" +
+	"\x05ALIAS\x10\x02*\xbe\x02\n" +
 	"\aEdition\x12\x13\n" +
 	"\x0fEDITION_UNKNOWN\x10\x00\x12\x13\n" +
 	"\x0eEDITION_LEGACY\x10\x84\a\x12\x13\n" +
 	"\x0eEDITION_PROTO2\x10\xe6\a\x12\x13\n" +
 	"\x0eEDITION_PROTO3\x10\xe7\a\x12\x11\n" +
 	"\fEDITION_2023\x10\xe8\a\x12\x11\n" +
-	"\fEDITION_2024\x10\xe9\a\x12\x17\n" +
+	"\fEDITION_2024\x10\xe9\a\x12\x15\n" +
+	"\x10EDITION_UNSTABLE\x10\x8fN\x12\x17\n" +
 	"\x13EDITION_1_TEST_ONLY\x10\x01\x12\x17\n" +
 	"\x13EDITION_2_TEST_ONLY\x10\x02\x12\x1d\n" +
 	"\x17EDITION_99997_TEST_ONLY\x10\x9d\x8d\x06\x12\x1d\n" +
diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
index 06d584c..484c21f 100644
--- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
+++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go
@@ -172,13 +172,14 @@
 // ) to obtain a formatter capable of generating timestamps in this format.
 type Timestamp struct {
 	state protoimpl.MessageState `protogen:"open.v1"`
-	// Represents seconds of UTC time since Unix epoch
-	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
-	// 9999-12-31T23:59:59Z inclusive.
+	// Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
+	// be between -315576000000 and 315576000000 inclusive (which corresponds to
+	// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
 	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
-	// Non-negative fractions of a second at nanosecond resolution. Negative
-	// second values with fractions must still have non-negative nanos values
-	// that count forward in time. Must be from 0 to 999,999,999
+	// Non-negative fractions of a second at nanosecond resolution. This field is
+	// the nanosecond portion of the duration, not an alternative to seconds.
+	// Negative second values with fractions must still have non-negative nanos
+	// values that count forward in time. Must be between 0 and 999,999,999
 	// inclusive.
 	Nanos         int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
 	unknownFields protoimpl.UnknownFields
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 33672ee..f3bf157 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -92,9 +92,6 @@
 ## explicit; go 1.17
 github.com/golang/protobuf/jsonpb
 github.com/golang/protobuf/proto
-github.com/golang/protobuf/ptypes/any
-github.com/golang/protobuf/ptypes/empty
-github.com/golang/protobuf/ptypes/timestamp
 # github.com/golang/snappy v0.0.4
 ## explicit
 github.com/golang/snappy
@@ -232,8 +229,8 @@
 # github.com/olekukonko/tablewriter v0.0.5
 ## explicit; go 1.12
 github.com/olekukonko/tablewriter
-# github.com/opencord/voltha-lib-go/v7 v7.7.1
-## explicit; go 1.24.5
+# github.com/opencord/voltha-lib-go/v7 v7.8.1
+## explicit; go 1.25.3
 github.com/opencord/voltha-lib-go/v7/pkg/config
 github.com/opencord/voltha-lib-go/v7/pkg/db
 github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore
@@ -251,8 +248,8 @@
 github.com/opencord/voltha-lib-go/v7/pkg/probe
 github.com/opencord/voltha-lib-go/v7/pkg/techprofile
 github.com/opencord/voltha-lib-go/v7/pkg/version
-# github.com/opencord/voltha-protos/v5 v5.6.8
-## explicit; go 1.16
+# github.com/opencord/voltha-protos/v5 v5.7.1
+## explicit; go 1.25.3
 github.com/opencord/voltha-protos/v5/go/adapter_service
 github.com/opencord/voltha-protos/v5/go/common
 github.com/opencord/voltha-protos/v5/go/core_adapter
@@ -494,15 +491,15 @@
 go.etcd.io/raft/v3/quorum
 go.etcd.io/raft/v3/raftpb
 go.etcd.io/raft/v3/tracker
-# go.opentelemetry.io/auto/sdk v1.1.0
-## explicit; go 1.22.0
+# go.opentelemetry.io/auto/sdk v1.2.1
+## explicit; go 1.24.0
 go.opentelemetry.io/auto/sdk
 go.opentelemetry.io/auto/sdk/internal/telemetry
 # go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0
 ## explicit; go 1.22.0
 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal
-# go.opentelemetry.io/otel v1.37.0
+# go.opentelemetry.io/otel v1.38.0
 ## explicit; go 1.23.0
 go.opentelemetry.io/otel
 go.opentelemetry.io/otel/attribute
@@ -513,8 +510,8 @@
 go.opentelemetry.io/otel/internal/global
 go.opentelemetry.io/otel/propagation
 go.opentelemetry.io/otel/semconv/v1.17.0
-go.opentelemetry.io/otel/semconv/v1.26.0
-go.opentelemetry.io/otel/semconv/v1.34.0
+go.opentelemetry.io/otel/semconv/v1.37.0
+go.opentelemetry.io/otel/semconv/v1.37.0/otelconv
 # go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0
 ## explicit; go 1.22.0
 go.opentelemetry.io/otel/exporters/otlp/otlptrace
@@ -526,12 +523,12 @@
 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/envconfig
 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/otlpconfig
 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/internal/retry
-# go.opentelemetry.io/otel/metric v1.37.0
+# go.opentelemetry.io/otel/metric v1.38.0
 ## explicit; go 1.23.0
 go.opentelemetry.io/otel/metric
 go.opentelemetry.io/otel/metric/embedded
 go.opentelemetry.io/otel/metric/noop
-# go.opentelemetry.io/otel/sdk v1.37.0
+# go.opentelemetry.io/otel/sdk v1.38.0
 ## explicit; go 1.23.0
 go.opentelemetry.io/otel/sdk
 go.opentelemetry.io/otel/sdk/instrumentation
@@ -539,7 +536,8 @@
 go.opentelemetry.io/otel/sdk/internal/x
 go.opentelemetry.io/otel/sdk/resource
 go.opentelemetry.io/otel/sdk/trace
-# go.opentelemetry.io/otel/trace v1.37.0
+go.opentelemetry.io/otel/sdk/trace/internal/x
+# go.opentelemetry.io/otel/trace v1.38.0
 ## explicit; go 1.23.0
 go.opentelemetry.io/otel/trace
 go.opentelemetry.io/otel/trace/embedded
@@ -581,7 +579,7 @@
 golang.org/x/crypto/blowfish
 golang.org/x/crypto/md4
 golang.org/x/crypto/pbkdf2
-# golang.org/x/net v0.46.0
+# golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82
 ## explicit; go 1.24.0
 golang.org/x/net/context
 golang.org/x/net/http/httpguts
@@ -607,16 +605,16 @@
 # golang.org/x/time v0.9.0
 ## explicit; go 1.18
 golang.org/x/time/rate
-# google.golang.org/genproto/googleapis/api v0.0.0-20250804133106-a7a43d27e69b
-## explicit; go 1.23.0
+# google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2
+## explicit; go 1.24.0
 google.golang.org/genproto/googleapis/api
 google.golang.org/genproto/googleapis/api/annotations
 google.golang.org/genproto/googleapis/api/httpbody
-# google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b
-## explicit; go 1.23.0
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20251124214823-79d6a2a48846
+## explicit; go 1.24.0
 google.golang.org/genproto/googleapis/rpc/errdetails
 google.golang.org/genproto/googleapis/rpc/status
-# google.golang.org/grpc v1.76.0
+# google.golang.org/grpc v1.77.0
 ## explicit; go 1.24.0
 google.golang.org/grpc
 google.golang.org/grpc/attributes
@@ -627,7 +625,6 @@
 google.golang.org/grpc/balancer/grpclb/state
 google.golang.org/grpc/balancer/pickfirst
 google.golang.org/grpc/balancer/pickfirst/internal
-google.golang.org/grpc/balancer/pickfirst/pickfirstleaf
 google.golang.org/grpc/balancer/roundrobin
 google.golang.org/grpc/binarylog/grpc_binarylog_v1
 google.golang.org/grpc/channelz
@@ -637,6 +634,7 @@
 google.golang.org/grpc/credentials/insecure
 google.golang.org/grpc/encoding
 google.golang.org/grpc/encoding/gzip
+google.golang.org/grpc/encoding/internal
 google.golang.org/grpc/encoding/proto
 google.golang.org/grpc/experimental/stats
 google.golang.org/grpc/grpclog
@@ -688,7 +686,7 @@
 google.golang.org/grpc/stats
 google.golang.org/grpc/status
 google.golang.org/grpc/tap
-# google.golang.org/protobuf v1.36.10
+# google.golang.org/protobuf v1.36.11
 ## explicit; go 1.23
 google.golang.org/protobuf/encoding/protodelim
 google.golang.org/protobuf/encoding/protojson