protobuf: update all generated code to google.golang.org/protobuf (#3932)

diff --git a/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go b/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
index 7381dfc..4725858 100644
--- a/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
+++ b/balancer/grpclb/grpc_lb_v1/load_balancer.pb.go
@@ -1,78 +1,94 @@
+// Copyright 2015 The 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.
+
+// This file defines the GRPCLB LoadBalancing protocol.
+//
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/lb/v1/load_balancer.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lb/v1/load_balancer.proto
 
 package grpc_lb_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type LoadBalanceRequest struct {
-	// Types that are valid to be assigned to LoadBalanceRequestType:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to LoadBalanceRequestType:
 	//	*LoadBalanceRequest_InitialRequest
 	//	*LoadBalanceRequest_ClientStats
 	LoadBalanceRequestType isLoadBalanceRequest_LoadBalanceRequestType `protobuf_oneof:"load_balance_request_type"`
-	XXX_NoUnkeyedLiteral   struct{}                                    `json:"-"`
-	XXX_unrecognized       []byte                                      `json:"-"`
-	XXX_sizecache          int32                                       `json:"-"`
 }
 
-func (m *LoadBalanceRequest) Reset()         { *m = LoadBalanceRequest{} }
-func (m *LoadBalanceRequest) String() string { return proto.CompactTextString(m) }
-func (*LoadBalanceRequest) ProtoMessage()    {}
+func (x *LoadBalanceRequest) Reset() {
+	*x = LoadBalanceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalanceRequest) ProtoMessage() {}
+
+func (x *LoadBalanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalanceRequest.ProtoReflect.Descriptor instead.
 func (*LoadBalanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{0}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *LoadBalanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalanceRequest.Unmarshal(m, b)
-}
-func (m *LoadBalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalanceRequest.Marshal(b, m, deterministic)
-}
-func (m *LoadBalanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalanceRequest.Merge(m, src)
-}
-func (m *LoadBalanceRequest) XXX_Size() int {
-	return xxx_messageInfo_LoadBalanceRequest.Size(m)
-}
-func (m *LoadBalanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalanceRequest proto.InternalMessageInfo
-
-type isLoadBalanceRequest_LoadBalanceRequestType interface {
-	isLoadBalanceRequest_LoadBalanceRequestType()
-}
-
-type LoadBalanceRequest_InitialRequest struct {
-	InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3,oneof"`
-}
-
-type LoadBalanceRequest_ClientStats struct {
-	ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,proto3,oneof"`
-}
-
-func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
-func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {}
-
 func (m *LoadBalanceRequest) GetLoadBalanceRequestType() isLoadBalanceRequest_LoadBalanceRequestType {
 	if m != nil {
 		return m.LoadBalanceRequestType
@@ -80,117 +96,144 @@
 	return nil
 }
 
-func (m *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest {
-	if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok {
+func (x *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest {
+	if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok {
 		return x.InitialRequest
 	}
 	return nil
 }
 
-func (m *LoadBalanceRequest) GetClientStats() *ClientStats {
-	if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok {
+func (x *LoadBalanceRequest) GetClientStats() *ClientStats {
+	if x, ok := x.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok {
 		return x.ClientStats
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadBalanceRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadBalanceRequest_InitialRequest)(nil),
-		(*LoadBalanceRequest_ClientStats)(nil),
-	}
+type isLoadBalanceRequest_LoadBalanceRequestType interface {
+	isLoadBalanceRequest_LoadBalanceRequestType()
 }
 
+type LoadBalanceRequest_InitialRequest struct {
+	// This message should be sent on the first request to the load balancer.
+	InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,proto3,oneof"`
+}
+
+type LoadBalanceRequest_ClientStats struct {
+	// The client stats should be periodically reported to the load balancer
+	// based on the duration defined in the InitialLoadBalanceResponse.
+	ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,proto3,oneof"`
+}
+
+func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {}
+
+func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {}
+
 type InitialLoadBalanceRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name of the load balanced service (e.g., service.googleapis.com). Its
 	// length should be less than 256 bytes.
 	// The name might include a port number. How to handle the port number is up
 	// to the balancer.
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *InitialLoadBalanceRequest) Reset()         { *m = InitialLoadBalanceRequest{} }
-func (m *InitialLoadBalanceRequest) String() string { return proto.CompactTextString(m) }
-func (*InitialLoadBalanceRequest) ProtoMessage()    {}
+func (x *InitialLoadBalanceRequest) Reset() {
+	*x = InitialLoadBalanceRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *InitialLoadBalanceRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InitialLoadBalanceRequest) ProtoMessage() {}
+
+func (x *InitialLoadBalanceRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InitialLoadBalanceRequest.ProtoReflect.Descriptor instead.
 func (*InitialLoadBalanceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{1}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *InitialLoadBalanceRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Unmarshal(m, b)
-}
-func (m *InitialLoadBalanceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Marshal(b, m, deterministic)
-}
-func (m *InitialLoadBalanceRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitialLoadBalanceRequest.Merge(m, src)
-}
-func (m *InitialLoadBalanceRequest) XXX_Size() int {
-	return xxx_messageInfo_InitialLoadBalanceRequest.Size(m)
-}
-func (m *InitialLoadBalanceRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_InitialLoadBalanceRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InitialLoadBalanceRequest proto.InternalMessageInfo
-
-func (m *InitialLoadBalanceRequest) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *InitialLoadBalanceRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // Contains the number of calls finished for a particular load balance token.
 type ClientStatsPerToken struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// See Server.load_balance_token.
 	LoadBalanceToken string `protobuf:"bytes,1,opt,name=load_balance_token,json=loadBalanceToken,proto3" json:"load_balance_token,omitempty"`
 	// The total number of RPCs that finished associated with the token.
-	NumCalls             int64    `protobuf:"varint,2,opt,name=num_calls,json=numCalls,proto3" json:"num_calls,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	NumCalls int64 `protobuf:"varint,2,opt,name=num_calls,json=numCalls,proto3" json:"num_calls,omitempty"`
 }
 
-func (m *ClientStatsPerToken) Reset()         { *m = ClientStatsPerToken{} }
-func (m *ClientStatsPerToken) String() string { return proto.CompactTextString(m) }
-func (*ClientStatsPerToken) ProtoMessage()    {}
+func (x *ClientStatsPerToken) Reset() {
+	*x = ClientStatsPerToken{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStatsPerToken) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStatsPerToken) ProtoMessage() {}
+
+func (x *ClientStatsPerToken) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStatsPerToken.ProtoReflect.Descriptor instead.
 func (*ClientStatsPerToken) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{2}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ClientStatsPerToken) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStatsPerToken.Unmarshal(m, b)
-}
-func (m *ClientStatsPerToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStatsPerToken.Marshal(b, m, deterministic)
-}
-func (m *ClientStatsPerToken) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStatsPerToken.Merge(m, src)
-}
-func (m *ClientStatsPerToken) XXX_Size() int {
-	return xxx_messageInfo_ClientStatsPerToken.Size(m)
-}
-func (m *ClientStatsPerToken) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStatsPerToken.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStatsPerToken proto.InternalMessageInfo
-
-func (m *ClientStatsPerToken) GetLoadBalanceToken() string {
-	if m != nil {
-		return m.LoadBalanceToken
+func (x *ClientStatsPerToken) GetLoadBalanceToken() string {
+	if x != nil {
+		return x.LoadBalanceToken
 	}
 	return ""
 }
 
-func (m *ClientStatsPerToken) GetNumCalls() int64 {
-	if m != nil {
-		return m.NumCalls
+func (x *ClientStatsPerToken) GetNumCalls() int64 {
+	if x != nil {
+		return x.NumCalls
 	}
 	return 0
 }
@@ -198,6 +241,10 @@
 // Contains client level statistics that are useful to load balancing. Each
 // count except the timestamp should be reset to zero after reporting the stats.
 type ClientStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The timestamp of generating the report.
 	Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
 	// The total number of RPCs that started.
@@ -211,127 +258,172 @@
 	NumCallsFinishedKnownReceived int64 `protobuf:"varint,7,opt,name=num_calls_finished_known_received,json=numCallsFinishedKnownReceived,proto3" json:"num_calls_finished_known_received,omitempty"`
 	// The list of dropped calls.
 	CallsFinishedWithDrop []*ClientStatsPerToken `protobuf:"bytes,8,rep,name=calls_finished_with_drop,json=callsFinishedWithDrop,proto3" json:"calls_finished_with_drop,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}               `json:"-"`
-	XXX_unrecognized      []byte                 `json:"-"`
-	XXX_sizecache         int32                  `json:"-"`
 }
 
-func (m *ClientStats) Reset()         { *m = ClientStats{} }
-func (m *ClientStats) String() string { return proto.CompactTextString(m) }
-func (*ClientStats) ProtoMessage()    {}
+func (x *ClientStats) Reset() {
+	*x = ClientStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStats) ProtoMessage() {}
+
+func (x *ClientStats) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
 func (*ClientStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{3}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ClientStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStats.Unmarshal(m, b)
-}
-func (m *ClientStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStats.Marshal(b, m, deterministic)
-}
-func (m *ClientStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStats.Merge(m, src)
-}
-func (m *ClientStats) XXX_Size() int {
-	return xxx_messageInfo_ClientStats.Size(m)
-}
-func (m *ClientStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStats proto.InternalMessageInfo
-
-func (m *ClientStats) GetTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.Timestamp
+func (x *ClientStats) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
 	}
 	return nil
 }
 
-func (m *ClientStats) GetNumCallsStarted() int64 {
-	if m != nil {
-		return m.NumCallsStarted
+func (x *ClientStats) GetNumCallsStarted() int64 {
+	if x != nil {
+		return x.NumCallsStarted
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinished() int64 {
-	if m != nil {
-		return m.NumCallsFinished
+func (x *ClientStats) GetNumCallsFinished() int64 {
+	if x != nil {
+		return x.NumCallsFinished
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 {
-	if m != nil {
-		return m.NumCallsFinishedWithClientFailedToSend
+func (x *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 {
+	if x != nil {
+		return x.NumCallsFinishedWithClientFailedToSend
 	}
 	return 0
 }
 
-func (m *ClientStats) GetNumCallsFinishedKnownReceived() int64 {
-	if m != nil {
-		return m.NumCallsFinishedKnownReceived
+func (x *ClientStats) GetNumCallsFinishedKnownReceived() int64 {
+	if x != nil {
+		return x.NumCallsFinishedKnownReceived
 	}
 	return 0
 }
 
-func (m *ClientStats) GetCallsFinishedWithDrop() []*ClientStatsPerToken {
-	if m != nil {
-		return m.CallsFinishedWithDrop
+func (x *ClientStats) GetCallsFinishedWithDrop() []*ClientStatsPerToken {
+	if x != nil {
+		return x.CallsFinishedWithDrop
 	}
 	return nil
 }
 
 type LoadBalanceResponse struct {
-	// Types that are valid to be assigned to LoadBalanceResponseType:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to LoadBalanceResponseType:
 	//	*LoadBalanceResponse_InitialResponse
 	//	*LoadBalanceResponse_ServerList
 	//	*LoadBalanceResponse_FallbackResponse
 	LoadBalanceResponseType isLoadBalanceResponse_LoadBalanceResponseType `protobuf_oneof:"load_balance_response_type"`
-	XXX_NoUnkeyedLiteral    struct{}                                      `json:"-"`
-	XXX_unrecognized        []byte                                        `json:"-"`
-	XXX_sizecache           int32                                         `json:"-"`
 }
 
-func (m *LoadBalanceResponse) Reset()         { *m = LoadBalanceResponse{} }
-func (m *LoadBalanceResponse) String() string { return proto.CompactTextString(m) }
-func (*LoadBalanceResponse) ProtoMessage()    {}
+func (x *LoadBalanceResponse) Reset() {
+	*x = LoadBalanceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalanceResponse) ProtoMessage() {}
+
+func (x *LoadBalanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalanceResponse.ProtoReflect.Descriptor instead.
 func (*LoadBalanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{4}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *LoadBalanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalanceResponse.Unmarshal(m, b)
-}
-func (m *LoadBalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalanceResponse.Marshal(b, m, deterministic)
-}
-func (m *LoadBalanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalanceResponse.Merge(m, src)
-}
-func (m *LoadBalanceResponse) XXX_Size() int {
-	return xxx_messageInfo_LoadBalanceResponse.Size(m)
-}
-func (m *LoadBalanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalanceResponse.DiscardUnknown(m)
+func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType {
+	if m != nil {
+		return m.LoadBalanceResponseType
+	}
+	return nil
 }
 
-var xxx_messageInfo_LoadBalanceResponse proto.InternalMessageInfo
+func (x *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok {
+		return x.InitialResponse
+	}
+	return nil
+}
+
+func (x *LoadBalanceResponse) GetServerList() *ServerList {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok {
+		return x.ServerList
+	}
+	return nil
+}
+
+func (x *LoadBalanceResponse) GetFallbackResponse() *FallbackResponse {
+	if x, ok := x.GetLoadBalanceResponseType().(*LoadBalanceResponse_FallbackResponse); ok {
+		return x.FallbackResponse
+	}
+	return nil
+}
 
 type isLoadBalanceResponse_LoadBalanceResponseType interface {
 	isLoadBalanceResponse_LoadBalanceResponseType()
 }
 
 type LoadBalanceResponse_InitialResponse struct {
+	// This message should be sent on the first response to the client.
 	InitialResponse *InitialLoadBalanceResponse `protobuf:"bytes,1,opt,name=initial_response,json=initialResponse,proto3,oneof"`
 }
 
 type LoadBalanceResponse_ServerList struct {
+	// Contains the list of servers selected by the load balancer. The client
+	// should send requests to these servers in the specified order.
 	ServerList *ServerList `protobuf:"bytes,2,opt,name=server_list,json=serverList,proto3,oneof"`
 }
 
 type LoadBalanceResponse_FallbackResponse struct {
+	// If this field is set, then the client should eagerly enter fallback
+	// mode (even if there are existing, healthy connections to backends).
 	FallbackResponse *FallbackResponse `protobuf:"bytes,3,opt,name=fallback_response,json=fallbackResponse,proto3,oneof"`
 }
 
@@ -341,155 +433,141 @@
 
 func (*LoadBalanceResponse_FallbackResponse) isLoadBalanceResponse_LoadBalanceResponseType() {}
 
-func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType {
-	if m != nil {
-		return m.LoadBalanceResponseType
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok {
-		return x.InitialResponse
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetServerList() *ServerList {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok {
-		return x.ServerList
-	}
-	return nil
-}
-
-func (m *LoadBalanceResponse) GetFallbackResponse() *FallbackResponse {
-	if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_FallbackResponse); ok {
-		return x.FallbackResponse
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadBalanceResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadBalanceResponse_InitialResponse)(nil),
-		(*LoadBalanceResponse_ServerList)(nil),
-		(*LoadBalanceResponse_FallbackResponse)(nil),
-	}
-}
-
 type FallbackResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *FallbackResponse) Reset()         { *m = FallbackResponse{} }
-func (m *FallbackResponse) String() string { return proto.CompactTextString(m) }
-func (*FallbackResponse) ProtoMessage()    {}
+func (x *FallbackResponse) Reset() {
+	*x = FallbackResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FallbackResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FallbackResponse) ProtoMessage() {}
+
+func (x *FallbackResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FallbackResponse.ProtoReflect.Descriptor instead.
 func (*FallbackResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{5}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *FallbackResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FallbackResponse.Unmarshal(m, b)
-}
-func (m *FallbackResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FallbackResponse.Marshal(b, m, deterministic)
-}
-func (m *FallbackResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FallbackResponse.Merge(m, src)
-}
-func (m *FallbackResponse) XXX_Size() int {
-	return xxx_messageInfo_FallbackResponse.Size(m)
-}
-func (m *FallbackResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FallbackResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FallbackResponse proto.InternalMessageInfo
-
 type InitialLoadBalanceResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This interval defines how often the client should send the client stats
 	// to the load balancer. Stats should only be reported when the duration is
 	// positive.
 	ClientStatsReportInterval *duration.Duration `protobuf:"bytes,2,opt,name=client_stats_report_interval,json=clientStatsReportInterval,proto3" json:"client_stats_report_interval,omitempty"`
-	XXX_NoUnkeyedLiteral      struct{}           `json:"-"`
-	XXX_unrecognized          []byte             `json:"-"`
-	XXX_sizecache             int32              `json:"-"`
 }
 
-func (m *InitialLoadBalanceResponse) Reset()         { *m = InitialLoadBalanceResponse{} }
-func (m *InitialLoadBalanceResponse) String() string { return proto.CompactTextString(m) }
-func (*InitialLoadBalanceResponse) ProtoMessage()    {}
+func (x *InitialLoadBalanceResponse) Reset() {
+	*x = InitialLoadBalanceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *InitialLoadBalanceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*InitialLoadBalanceResponse) ProtoMessage() {}
+
+func (x *InitialLoadBalanceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use InitialLoadBalanceResponse.ProtoReflect.Descriptor instead.
 func (*InitialLoadBalanceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{6}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *InitialLoadBalanceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Unmarshal(m, b)
-}
-func (m *InitialLoadBalanceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Marshal(b, m, deterministic)
-}
-func (m *InitialLoadBalanceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitialLoadBalanceResponse.Merge(m, src)
-}
-func (m *InitialLoadBalanceResponse) XXX_Size() int {
-	return xxx_messageInfo_InitialLoadBalanceResponse.Size(m)
-}
-func (m *InitialLoadBalanceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_InitialLoadBalanceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_InitialLoadBalanceResponse proto.InternalMessageInfo
-
-func (m *InitialLoadBalanceResponse) GetClientStatsReportInterval() *duration.Duration {
-	if m != nil {
-		return m.ClientStatsReportInterval
+func (x *InitialLoadBalanceResponse) GetClientStatsReportInterval() *duration.Duration {
+	if x != nil {
+		return x.ClientStatsReportInterval
 	}
 	return nil
 }
 
 type ServerList struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Contains a list of servers selected by the load balancer. The list will
 	// be updated when server resolutions change or as needed to balance load
 	// across more servers. The client should consume the server list in order
 	// unless instructed otherwise via the client_config.
-	Servers              []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
 }
 
-func (m *ServerList) Reset()         { *m = ServerList{} }
-func (m *ServerList) String() string { return proto.CompactTextString(m) }
-func (*ServerList) ProtoMessage()    {}
+func (x *ServerList) Reset() {
+	*x = ServerList{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerList) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerList) ProtoMessage() {}
+
+func (x *ServerList) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerList.ProtoReflect.Descriptor instead.
 func (*ServerList) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{7}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ServerList) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerList.Unmarshal(m, b)
-}
-func (m *ServerList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerList.Marshal(b, m, deterministic)
-}
-func (m *ServerList) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerList.Merge(m, src)
-}
-func (m *ServerList) XXX_Size() int {
-	return xxx_messageInfo_ServerList.Size(m)
-}
-func (m *ServerList) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerList.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerList proto.InternalMessageInfo
-
-func (m *ServerList) GetServers() []*Server {
-	if m != nil {
-		return m.Servers
+func (x *ServerList) GetServers() []*Server {
+	if x != nil {
+		return x.Servers
 	}
 	return nil
 }
@@ -497,6 +575,10 @@
 // Contains server information. When the drop field is not true, use the other
 // fields.
 type Server struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A resolved address for the server, serialized in network-byte-order. It may
 	// either be an IPv4 or IPv6 address.
 	IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
@@ -513,128 +595,366 @@
 	// Indicates whether this particular request should be dropped by the client.
 	// If the request is dropped, there will be a corresponding entry in
 	// ClientStats.calls_finished_with_drop.
-	Drop                 bool     `protobuf:"varint,4,opt,name=drop,proto3" json:"drop,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Drop bool `protobuf:"varint,4,opt,name=drop,proto3" json:"drop,omitempty"`
 }
 
-func (m *Server) Reset()         { *m = Server{} }
-func (m *Server) String() string { return proto.CompactTextString(m) }
-func (*Server) ProtoMessage()    {}
+func (x *Server) Reset() {
+	*x = Server{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Server) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Server) ProtoMessage() {}
+
+func (x *Server) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lb_v1_load_balancer_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Server.ProtoReflect.Descriptor instead.
 func (*Server) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7cd3f6d792743fdf, []int{8}
+	return file_grpc_lb_v1_load_balancer_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *Server) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Server.Unmarshal(m, b)
-}
-func (m *Server) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Server.Marshal(b, m, deterministic)
-}
-func (m *Server) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Server.Merge(m, src)
-}
-func (m *Server) XXX_Size() int {
-	return xxx_messageInfo_Server.Size(m)
-}
-func (m *Server) XXX_DiscardUnknown() {
-	xxx_messageInfo_Server.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Server proto.InternalMessageInfo
-
-func (m *Server) GetIpAddress() []byte {
-	if m != nil {
-		return m.IpAddress
+func (x *Server) GetIpAddress() []byte {
+	if x != nil {
+		return x.IpAddress
 	}
 	return nil
 }
 
-func (m *Server) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *Server) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *Server) GetLoadBalanceToken() string {
-	if m != nil {
-		return m.LoadBalanceToken
+func (x *Server) GetLoadBalanceToken() string {
+	if x != nil {
+		return x.LoadBalanceToken
 	}
 	return ""
 }
 
-func (m *Server) GetDrop() bool {
-	if m != nil {
-		return m.Drop
+func (x *Server) GetDrop() bool {
+	if x != nil {
+		return x.Drop
 	}
 	return false
 }
 
-func init() {
-	proto.RegisterType((*LoadBalanceRequest)(nil), "grpc.lb.v1.LoadBalanceRequest")
-	proto.RegisterType((*InitialLoadBalanceRequest)(nil), "grpc.lb.v1.InitialLoadBalanceRequest")
-	proto.RegisterType((*ClientStatsPerToken)(nil), "grpc.lb.v1.ClientStatsPerToken")
-	proto.RegisterType((*ClientStats)(nil), "grpc.lb.v1.ClientStats")
-	proto.RegisterType((*LoadBalanceResponse)(nil), "grpc.lb.v1.LoadBalanceResponse")
-	proto.RegisterType((*FallbackResponse)(nil), "grpc.lb.v1.FallbackResponse")
-	proto.RegisterType((*InitialLoadBalanceResponse)(nil), "grpc.lb.v1.InitialLoadBalanceResponse")
-	proto.RegisterType((*ServerList)(nil), "grpc.lb.v1.ServerList")
-	proto.RegisterType((*Server)(nil), "grpc.lb.v1.Server")
+var File_grpc_lb_v1_load_balancer_proto protoreflect.FileDescriptor
+
+var file_grpc_lb_v1_load_balancer_proto_rawDesc = []byte{
+	0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x61,
+	0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x22, 0xc1, 0x01,
+	0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f,
+	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69,
+	0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x22, 0x2f, 0x0a, 0x19, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12,
+	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x22, 0x60, 0x0a, 0x13, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x50, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x61,
+	0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x43,
+	0x61, 0x6c, 0x6c, 0x73, 0x22, 0xb0, 0x03, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2a,
+	0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x43, 0x61,
+	0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75,
+	0x6d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73,
+	0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x2d, 0x6e, 0x75, 0x6d, 0x5f,
+	0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x77,
+	0x69, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65,
+	0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x26, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
+	0x64, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65,
+	0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6b, 0x6e,
+	0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69,
+	0x73, 0x68, 0x65, 0x64, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+	0x64, 0x12, 0x58, 0x0a, 0x18, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x65, 0x72, 0x54,
+	0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x15, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73,
+	0x68, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x04, 0x08, 0x04, 0x10,
+	0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x90, 0x02, 0x0a, 0x13, 0x4c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x53, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c,
+	0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73,
+	0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12,
+	0x4b, 0x0a, 0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x10, 0x66, 0x61, 0x6c, 0x6c,
+	0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1c, 0x0a, 0x1a,
+	0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x61,
+	0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e,
+	0x0a, 0x1a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x1c,
+	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x70,
+	0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x63,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
+	0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x40,
+	0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04,
+	0x22, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+	0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2c,
+	0x0a, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74,
+	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x12, 0x0a, 0x04,
+	0x64, 0x72, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x72, 0x6f, 0x70,
+	0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x32, 0x62, 0x0a, 0x0c, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x65, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
+	0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e,
+	0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x57, 0x0a, 0x0d, 0x69, 0x6f,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x4c, 0x6f, 0x61,
+	0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+	0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
+	0x72, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x62,
+	0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/lb/v1/load_balancer.proto", fileDescriptor_7cd3f6d792743fdf) }
+var (
+	file_grpc_lb_v1_load_balancer_proto_rawDescOnce sync.Once
+	file_grpc_lb_v1_load_balancer_proto_rawDescData = file_grpc_lb_v1_load_balancer_proto_rawDesc
+)
 
-var fileDescriptor_7cd3f6d792743fdf = []byte{
-	// 769 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xdd, 0x6e, 0xdb, 0x36,
-	0x14, 0x8e, 0x62, 0x25, 0x75, 0x8e, 0xb3, 0x45, 0x61, 0xb1, 0xcd, 0x71, 0xd3, 0x24, 0x13, 0xb0,
-	0x22, 0x18, 0x3a, 0x79, 0xc9, 0x6e, 0x36, 0x60, 0x17, 0x9b, 0x5b, 0x04, 0x69, 0xda, 0x8b, 0x80,
-	0x0e, 0xd0, 0xa1, 0xc0, 0xc0, 0x51, 0x12, 0xed, 0x10, 0xa1, 0x49, 0x8d, 0xa2, 0x5d, 0xec, 0x66,
-	0x37, 0x7b, 0x81, 0x3d, 0xca, 0x5e, 0x61, 0x6f, 0x36, 0x88, 0xa4, 0x2c, 0xd5, 0xae, 0xb1, 0x2b,
-	0x91, 0xe7, 0x7c, 0xfc, 0xce, 0xff, 0x11, 0x9c, 0x4c, 0x75, 0x91, 0x0d, 0x45, 0x3a, 0x5c, 0x5c,
-	0x0c, 0x85, 0xa2, 0x39, 0x49, 0xa9, 0xa0, 0x32, 0x63, 0x3a, 0x29, 0xb4, 0x32, 0x0a, 0x41, 0xa5,
-	0x4f, 0x44, 0x9a, 0x2c, 0x2e, 0x06, 0x27, 0x53, 0xa5, 0xa6, 0x82, 0x0d, 0xad, 0x26, 0x9d, 0x4f,
-	0x86, 0xf9, 0x5c, 0x53, 0xc3, 0x95, 0x74, 0xd8, 0xc1, 0xe9, 0xaa, 0xde, 0xf0, 0x19, 0x2b, 0x0d,
-	0x9d, 0x15, 0x0e, 0x10, 0xff, 0x1b, 0x00, 0x7a, 0xa3, 0x68, 0x3e, 0x72, 0x36, 0x30, 0xfb, 0x7d,
-	0xce, 0x4a, 0x83, 0x6e, 0xe1, 0x80, 0x4b, 0x6e, 0x38, 0x15, 0x44, 0x3b, 0x51, 0x3f, 0x38, 0x0b,
-	0xce, 0x7b, 0x97, 0x5f, 0x25, 0x8d, 0xf5, 0xe4, 0x95, 0x83, 0xac, 0xbf, 0xbf, 0xde, 0xc2, 0x9f,
-	0xfa, 0xf7, 0x35, 0xe3, 0x8f, 0xb0, 0x9f, 0x09, 0xce, 0xa4, 0x21, 0xa5, 0xa1, 0xa6, 0xec, 0x6f,
-	0x5b, 0xba, 0x2f, 0xda, 0x74, 0x2f, 0xac, 0x7e, 0x5c, 0xa9, 0xaf, 0xb7, 0x70, 0x2f, 0x6b, 0xae,
-	0xa3, 0x27, 0x70, 0xd4, 0x4e, 0x45, 0xed, 0x14, 0x31, 0x7f, 0x14, 0x2c, 0x1e, 0xc2, 0xd1, 0x46,
-	0x4f, 0x10, 0x82, 0x50, 0xd2, 0x19, 0xb3, 0xee, 0xef, 0x61, 0x7b, 0x8e, 0x7f, 0x83, 0xc7, 0x2d,
-	0x5b, 0xb7, 0x4c, 0xdf, 0xa9, 0x07, 0x26, 0xd1, 0x73, 0x40, 0x1f, 0x18, 0x31, 0x95, 0xd4, 0x3f,
-	0x8c, 0x44, 0x43, 0xed, 0xd0, 0x4f, 0x60, 0x4f, 0xce, 0x67, 0x24, 0xa3, 0x42, 0xb8, 0x68, 0x3a,
-	0xb8, 0x2b, 0xe7, 0xb3, 0x17, 0xd5, 0x3d, 0xfe, 0xa7, 0x03, 0xbd, 0x96, 0x09, 0xf4, 0x3d, 0xec,
-	0x2d, 0x33, 0xef, 0x33, 0x39, 0x48, 0x5c, 0x6d, 0x92, 0xba, 0x36, 0xc9, 0x5d, 0x8d, 0xc0, 0x0d,
-	0x18, 0x7d, 0x0d, 0x87, 0x4b, 0x33, 0x55, 0xea, 0xb4, 0x61, 0xb9, 0x37, 0x77, 0x50, 0x9b, 0x1b,
-	0x3b, 0x71, 0x15, 0x40, 0x83, 0x9d, 0x70, 0xc9, 0xcb, 0x7b, 0x96, 0xf7, 0x3b, 0x16, 0x1c, 0xd5,
-	0xe0, 0x2b, 0x2f, 0x47, 0xbf, 0xc2, 0x37, 0xeb, 0x68, 0xf2, 0x9e, 0x9b, 0x7b, 0xe2, 0x2b, 0x35,
-	0xa1, 0x5c, 0xb0, 0x9c, 0x18, 0x45, 0x4a, 0x26, 0xf3, 0xfe, 0xae, 0x25, 0x7a, 0xb6, 0x4a, 0xf4,
-	0x96, 0x9b, 0x7b, 0x17, 0xeb, 0x95, 0xc5, 0xdf, 0xa9, 0x31, 0x93, 0x39, 0xba, 0x86, 0x2f, 0x3f,
-	0x42, 0xff, 0x20, 0xd5, 0x7b, 0x49, 0x34, 0xcb, 0x18, 0x5f, 0xb0, 0xbc, 0xff, 0xc8, 0x52, 0x3e,
-	0x5d, 0xa5, 0x7c, 0x5d, 0xa1, 0xb0, 0x07, 0xa1, 0x5f, 0xa0, 0xff, 0x31, 0x27, 0x73, 0xad, 0x8a,
-	0x7e, 0xf7, 0xac, 0x73, 0xde, 0xbb, 0x3c, 0xdd, 0xd0, 0x46, 0x75, 0x69, 0xf1, 0x67, 0xd9, 0xaa,
-	0xc7, 0x2f, 0xb5, 0x2a, 0x6e, 0xc2, 0x6e, 0x18, 0xed, 0xdc, 0x84, 0xdd, 0x9d, 0x68, 0x37, 0xfe,
-	0x7b, 0x1b, 0x1e, 0x7f, 0xd0, 0x3f, 0x65, 0xa1, 0x64, 0xc9, 0xd0, 0x18, 0xa2, 0x66, 0x14, 0x9c,
-	0xcc, 0x57, 0xf0, 0xd9, 0xff, 0xcd, 0x82, 0x43, 0x5f, 0x6f, 0xe1, 0x83, 0xe5, 0x30, 0x78, 0xd2,
-	0x1f, 0xa0, 0x57, 0x32, 0xbd, 0x60, 0x9a, 0x08, 0x5e, 0x1a, 0x3f, 0x0c, 0x9f, 0xb7, 0xf9, 0xc6,
-	0x56, 0xfd, 0x86, 0xdb, 0x61, 0x82, 0x72, 0x79, 0x43, 0xaf, 0xe1, 0x70, 0x42, 0x85, 0x48, 0x69,
-	0xf6, 0xd0, 0x38, 0xd4, 0xb1, 0x04, 0xc7, 0x6d, 0x82, 0x2b, 0x0f, 0x6a, 0xb9, 0x11, 0x4d, 0x56,
-	0x64, 0xa3, 0x63, 0x18, 0xac, 0xcc, 0x95, 0x53, 0xb8, 0xc1, 0x42, 0x10, 0xad, 0xb2, 0xc4, 0x7f,
-	0xc2, 0x60, 0x73, 0xa8, 0xe8, 0x1d, 0x1c, 0xb7, 0xa7, 0x9c, 0x68, 0x56, 0x28, 0x6d, 0x08, 0x97,
-	0x86, 0xe9, 0x05, 0x15, 0x3e, 0xd0, 0xa3, 0xb5, 0xd6, 0x7f, 0xe9, 0xd7, 0x16, 0x3e, 0x6a, 0x4d,
-	0x3d, 0xb6, 0x8f, 0x5f, 0xf9, 0xb7, 0x37, 0x61, 0x37, 0x88, 0xb6, 0xe3, 0x9f, 0x00, 0x9a, 0xd4,
-	0xa0, 0xe7, 0xf0, 0xc8, 0xa5, 0xa6, 0xec, 0x07, 0xb6, 0x13, 0xd0, 0x7a, 0x0e, 0x71, 0x0d, 0xb9,
-	0x09, 0xbb, 0x9d, 0x28, 0x8c, 0xff, 0x0a, 0x60, 0xd7, 0x69, 0xd0, 0x53, 0x00, 0x5e, 0x10, 0x9a,
-	0xe7, 0x9a, 0x95, 0xa5, 0xad, 0xea, 0x3e, 0xde, 0xe3, 0xc5, 0xcf, 0x4e, 0x50, 0xed, 0x8e, 0xca,
-	0x03, 0xeb, 0xf5, 0x0e, 0xb6, 0xe7, 0x0d, 0x4b, 0xa2, 0xb3, 0x61, 0x49, 0x20, 0x08, 0x6d, 0x9b,
-	0x86, 0x67, 0xc1, 0x79, 0x17, 0xdb, 0xb3, 0x6b, 0xb7, 0xcb, 0x14, 0xf6, 0x5b, 0x09, 0xd4, 0x08,
-	0x43, 0xcf, 0x9f, 0x2b, 0x31, 0x3a, 0x69, 0xc7, 0xb1, 0xbe, 0xd6, 0x06, 0xa7, 0x1b, 0xf5, 0xae,
-	0x12, 0xe7, 0xc1, 0xb7, 0xc1, 0xe8, 0x2d, 0x7c, 0xc2, 0x55, 0x0b, 0x38, 0x3a, 0x6c, 0x9b, 0xbc,
-	0xad, 0x92, 0x7f, 0x1b, 0xbc, 0xbb, 0xf0, 0xc5, 0x98, 0x2a, 0x41, 0xe5, 0x34, 0x51, 0x7a, 0x3a,
-	0xb4, 0x7f, 0xa0, 0xfa, 0xb7, 0x63, 0x6f, 0x22, 0xb5, 0x1f, 0x22, 0x52, 0xb2, 0xb8, 0x48, 0x77,
-	0x6d, 0xe1, 0xbe, 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x47, 0x55, 0xac, 0xab, 0x06, 0x00,
-	0x00,
+func file_grpc_lb_v1_load_balancer_proto_rawDescGZIP() []byte {
+	file_grpc_lb_v1_load_balancer_proto_rawDescOnce.Do(func() {
+		file_grpc_lb_v1_load_balancer_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lb_v1_load_balancer_proto_rawDescData)
+	})
+	return file_grpc_lb_v1_load_balancer_proto_rawDescData
+}
+
+var file_grpc_lb_v1_load_balancer_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_grpc_lb_v1_load_balancer_proto_goTypes = []interface{}{
+	(*LoadBalanceRequest)(nil),         // 0: grpc.lb.v1.LoadBalanceRequest
+	(*InitialLoadBalanceRequest)(nil),  // 1: grpc.lb.v1.InitialLoadBalanceRequest
+	(*ClientStatsPerToken)(nil),        // 2: grpc.lb.v1.ClientStatsPerToken
+	(*ClientStats)(nil),                // 3: grpc.lb.v1.ClientStats
+	(*LoadBalanceResponse)(nil),        // 4: grpc.lb.v1.LoadBalanceResponse
+	(*FallbackResponse)(nil),           // 5: grpc.lb.v1.FallbackResponse
+	(*InitialLoadBalanceResponse)(nil), // 6: grpc.lb.v1.InitialLoadBalanceResponse
+	(*ServerList)(nil),                 // 7: grpc.lb.v1.ServerList
+	(*Server)(nil),                     // 8: grpc.lb.v1.Server
+	(*timestamp.Timestamp)(nil),        // 9: google.protobuf.Timestamp
+	(*duration.Duration)(nil),          // 10: google.protobuf.Duration
+}
+var file_grpc_lb_v1_load_balancer_proto_depIdxs = []int32{
+	1,  // 0: grpc.lb.v1.LoadBalanceRequest.initial_request:type_name -> grpc.lb.v1.InitialLoadBalanceRequest
+	3,  // 1: grpc.lb.v1.LoadBalanceRequest.client_stats:type_name -> grpc.lb.v1.ClientStats
+	9,  // 2: grpc.lb.v1.ClientStats.timestamp:type_name -> google.protobuf.Timestamp
+	2,  // 3: grpc.lb.v1.ClientStats.calls_finished_with_drop:type_name -> grpc.lb.v1.ClientStatsPerToken
+	6,  // 4: grpc.lb.v1.LoadBalanceResponse.initial_response:type_name -> grpc.lb.v1.InitialLoadBalanceResponse
+	7,  // 5: grpc.lb.v1.LoadBalanceResponse.server_list:type_name -> grpc.lb.v1.ServerList
+	5,  // 6: grpc.lb.v1.LoadBalanceResponse.fallback_response:type_name -> grpc.lb.v1.FallbackResponse
+	10, // 7: grpc.lb.v1.InitialLoadBalanceResponse.client_stats_report_interval:type_name -> google.protobuf.Duration
+	8,  // 8: grpc.lb.v1.ServerList.servers:type_name -> grpc.lb.v1.Server
+	0,  // 9: grpc.lb.v1.LoadBalancer.BalanceLoad:input_type -> grpc.lb.v1.LoadBalanceRequest
+	4,  // 10: grpc.lb.v1.LoadBalancer.BalanceLoad:output_type -> grpc.lb.v1.LoadBalanceResponse
+	10, // [10:11] is the sub-list for method output_type
+	9,  // [9:10] 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 init() { file_grpc_lb_v1_load_balancer_proto_init() }
+func file_grpc_lb_v1_load_balancer_proto_init() {
+	if File_grpc_lb_v1_load_balancer_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalanceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InitialLoadBalanceRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStatsPerToken); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalanceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FallbackResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*InitialLoadBalanceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerList); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lb_v1_load_balancer_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Server); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_lb_v1_load_balancer_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*LoadBalanceRequest_InitialRequest)(nil),
+		(*LoadBalanceRequest_ClientStats)(nil),
+	}
+	file_grpc_lb_v1_load_balancer_proto_msgTypes[4].OneofWrappers = []interface{}{
+		(*LoadBalanceResponse_InitialResponse)(nil),
+		(*LoadBalanceResponse_ServerList)(nil),
+		(*LoadBalanceResponse_FallbackResponse)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lb_v1_load_balancer_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_lb_v1_load_balancer_proto_goTypes,
+		DependencyIndexes: file_grpc_lb_v1_load_balancer_proto_depIdxs,
+		MessageInfos:      file_grpc_lb_v1_load_balancer_proto_msgTypes,
+	}.Build()
+	File_grpc_lb_v1_load_balancer_proto = out.File
+	file_grpc_lb_v1_load_balancer_proto_rawDesc = nil
+	file_grpc_lb_v1_load_balancer_proto_goTypes = nil
+	file_grpc_lb_v1_load_balancer_proto_depIdxs = nil
 }
diff --git a/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go b/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
index 7ec1427..aad29f1 100644
--- a/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
+++ b/balancer/rls/internal/proto/grpc_lookup_v1/rls.pb.go
@@ -1,26 +1,49 @@
+// Copyright 2020 The 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lookup/v1/rls.proto
 
 package grpc_lookup_v1
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type RouteLookupRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Full host name of the target server, e.g. firestore.googleapis.com.
 	// Only set for gRPC requests; HTTP requests must use key_map explicitly.
 	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
@@ -31,66 +54,74 @@
 	// would like from RLS to allow it to find the regional server, e.g. "grpc".
 	TargetType string `protobuf:"bytes,3,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
 	// Map of key values extracted via key builders for the gRPC or HTTP request.
-	KeyMap               map[string]string `protobuf:"bytes,4,rep,name=key_map,json=keyMap,proto3" json:"key_map,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:"-"`
+	KeyMap map[string]string `protobuf:"bytes,4,rep,name=key_map,json=keyMap,proto3" json:"key_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *RouteLookupRequest) Reset()         { *m = RouteLookupRequest{} }
-func (m *RouteLookupRequest) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupRequest) ProtoMessage()    {}
+func (x *RouteLookupRequest) Reset() {
+	*x = RouteLookupRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupRequest) ProtoMessage() {}
+
+func (x *RouteLookupRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupRequest.ProtoReflect.Descriptor instead.
 func (*RouteLookupRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3bab962d3362f3ca, []int{0}
+	return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *RouteLookupRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupRequest.Unmarshal(m, b)
-}
-func (m *RouteLookupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupRequest.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupRequest.Merge(m, src)
-}
-func (m *RouteLookupRequest) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupRequest.Size(m)
-}
-func (m *RouteLookupRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupRequest proto.InternalMessageInfo
-
-func (m *RouteLookupRequest) GetServer() string {
-	if m != nil {
-		return m.Server
+func (x *RouteLookupRequest) GetServer() string {
+	if x != nil {
+		return x.Server
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetPath() string {
-	if m != nil {
-		return m.Path
+func (x *RouteLookupRequest) GetPath() string {
+	if x != nil {
+		return x.Path
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetTargetType() string {
-	if m != nil {
-		return m.TargetType
+func (x *RouteLookupRequest) GetTargetType() string {
+	if x != nil {
+		return x.TargetType
 	}
 	return ""
 }
 
-func (m *RouteLookupRequest) GetKeyMap() map[string]string {
-	if m != nil {
-		return m.KeyMap
+func (x *RouteLookupRequest) GetKeyMap() map[string]string {
+	if x != nil {
+		return x.KeyMap
 	}
 	return nil
 }
 
 type RouteLookupResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Prioritized list (best one first) of addressable entities to use
 	// for routing, using syntax requested by the request target_type.
 	// The targets will be tried in order until a healthy one is found.
@@ -98,81 +129,172 @@
 	// Optional header value to pass along to AFE in the X-Google-RLS-Data header.
 	// Cached with "target" and sent with all requests that match the request key.
 	// Allows the RLS to pass its work product to the eventual target.
-	HeaderData           string   `protobuf:"bytes,2,opt,name=header_data,json=headerData,proto3" json:"header_data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	HeaderData string `protobuf:"bytes,2,opt,name=header_data,json=headerData,proto3" json:"header_data,omitempty"`
 }
 
-func (m *RouteLookupResponse) Reset()         { *m = RouteLookupResponse{} }
-func (m *RouteLookupResponse) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupResponse) ProtoMessage()    {}
+func (x *RouteLookupResponse) Reset() {
+	*x = RouteLookupResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupResponse) ProtoMessage() {}
+
+func (x *RouteLookupResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupResponse.ProtoReflect.Descriptor instead.
 func (*RouteLookupResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3bab962d3362f3ca, []int{1}
+	return file_grpc_lookup_v1_rls_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *RouteLookupResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupResponse.Unmarshal(m, b)
-}
-func (m *RouteLookupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupResponse.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupResponse.Merge(m, src)
-}
-func (m *RouteLookupResponse) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupResponse.Size(m)
-}
-func (m *RouteLookupResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupResponse proto.InternalMessageInfo
-
-func (m *RouteLookupResponse) GetTargets() []string {
-	if m != nil {
-		return m.Targets
+func (x *RouteLookupResponse) GetTargets() []string {
+	if x != nil {
+		return x.Targets
 	}
 	return nil
 }
 
-func (m *RouteLookupResponse) GetHeaderData() string {
-	if m != nil {
-		return m.HeaderData
+func (x *RouteLookupResponse) GetHeaderData() string {
+	if x != nil {
+		return x.HeaderData
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*RouteLookupRequest)(nil), "grpc.lookup.v1.RouteLookupRequest")
-	proto.RegisterMapType((map[string]string)(nil), "grpc.lookup.v1.RouteLookupRequest.KeyMapEntry")
-	proto.RegisterType((*RouteLookupResponse)(nil), "grpc.lookup.v1.RouteLookupResponse")
+var File_grpc_lookup_v1_rls_proto protoreflect.FileDescriptor
+
+var file_grpc_lookup_v1_rls_proto_rawDesc = []byte{
+	0x0a, 0x18, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
+	0x2f, 0x72, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x22, 0xe5, 0x01, 0x0a, 0x12, 0x52,
+	0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74,
+	0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a,
+	0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47,
+	0x0a, 0x07, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x2e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31,
+	0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x06, 0x6b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x1a, 0x39, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x4d, 0x61,
+	0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x22, 0x5e, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75,
+	0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x72,
+	0x67, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x44, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x32, 0x6e, 0x0a, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75,
+	0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74,
+	0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f,
+	0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75,
+	0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x22, 0x00, 0x42, 0x4d, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f,
+	0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x52, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
+	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b,
+	0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76,
+	0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/lookup/v1/rls.proto", fileDescriptor_3bab962d3362f3ca) }
+var (
+	file_grpc_lookup_v1_rls_proto_rawDescOnce sync.Once
+	file_grpc_lookup_v1_rls_proto_rawDescData = file_grpc_lookup_v1_rls_proto_rawDesc
+)
 
-var fileDescriptor_3bab962d3362f3ca = []byte{
-	// 341 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xd1, 0x4b, 0xeb, 0x30,
-	0x14, 0xc6, 0x6f, 0xd7, 0xdd, 0x6e, 0x3b, 0x85, 0xcb, 0x6e, 0xee, 0x45, 0xca, 0x5e, 0x1c, 0xf5,
-	0x65, 0x0f, 0x92, 0xb2, 0xf9, 0xa2, 0x3e, 0x0e, 0x45, 0x50, 0x07, 0xa3, 0xfa, 0x20, 0x3e, 0x58,
-	0xe2, 0x76, 0xc8, 0x46, 0x6b, 0x13, 0x93, 0xb4, 0xd0, 0x3f, 0xd8, 0xff, 0x43, 0xda, 0x54, 0xd8,
-	0x14, 0xf4, 0xed, 0xfb, 0xbe, 0x73, 0x48, 0x7e, 0x27, 0x39, 0x10, 0x70, 0x25, 0x57, 0x51, 0x26,
-	0x44, 0x5a, 0xc8, 0xa8, 0x9c, 0x46, 0x2a, 0xd3, 0x54, 0x2a, 0x61, 0x04, 0xf9, 0x53, 0x57, 0xa8,
-	0xad, 0xd0, 0x72, 0x1a, 0xbe, 0x39, 0x40, 0x62, 0x51, 0x18, 0xbc, 0x6d, 0xa2, 0x18, 0x5f, 0x0b,
-	0xd4, 0x86, 0x1c, 0x80, 0xa7, 0x51, 0x95, 0xa8, 0x02, 0x67, 0xec, 0x4c, 0x06, 0x71, 0xeb, 0x08,
-	0x81, 0xae, 0x64, 0x66, 0x13, 0x74, 0x9a, 0xb4, 0xd1, 0xe4, 0x10, 0x7c, 0xc3, 0x14, 0x47, 0x93,
-	0x98, 0x4a, 0x62, 0xe0, 0x36, 0x25, 0xb0, 0xd1, 0x7d, 0x25, 0x91, 0x5c, 0x41, 0x2f, 0xc5, 0x2a,
-	0x79, 0x61, 0x32, 0xe8, 0x8e, 0xdd, 0x89, 0x3f, 0xa3, 0x74, 0x9f, 0x82, 0x7e, 0x25, 0xa0, 0x37,
-	0x58, 0x2d, 0x98, 0xbc, 0xcc, 0x8d, 0xaa, 0x62, 0x2f, 0x6d, 0xcc, 0xe8, 0x0c, 0xfc, 0x9d, 0x98,
-	0x0c, 0xc1, 0x4d, 0xb1, 0x6a, 0x09, 0x6b, 0x49, 0xfe, 0xc3, 0xef, 0x92, 0x65, 0x05, 0xb6, 0x7c,
-	0xd6, 0x9c, 0x77, 0x4e, 0x9d, 0xf0, 0x09, 0xfe, 0xed, 0x5d, 0xa2, 0xa5, 0xc8, 0x35, 0x92, 0x00,
-	0x7a, 0x16, 0x54, 0x07, 0xee, 0xd8, 0x9d, 0x0c, 0xe2, 0x0f, 0x5b, 0x4f, 0xb5, 0x41, 0xb6, 0x46,
-	0x95, 0xac, 0x99, 0x61, 0xed, 0x81, 0x60, 0xa3, 0x0b, 0x66, 0xd8, 0x75, 0xb7, 0xef, 0x0c, 0x3b,
-	0xb1, 0x67, 0xfb, 0x67, 0xf9, 0xde, 0x33, 0xde, 0xa1, 0x2a, 0xb7, 0x2b, 0x24, 0x0f, 0xe0, 0xef,
-	0xa4, 0x24, 0xfc, 0x79, 0xee, 0xd1, 0xd1, 0xb7, 0x3d, 0x16, 0x3b, 0xfc, 0x35, 0x5f, 0xc0, 0xdf,
-	0xad, 0xf8, 0xd4, 0x3a, 0xef, 0xc7, 0x99, 0x5e, 0xd6, 0xdf, 0xbc, 0x74, 0x1e, 0x8f, 0xb9, 0x10,
-	0x3c, 0x43, 0xca, 0x45, 0xc6, 0x72, 0x4e, 0x85, 0xe2, 0xd1, 0xee, 0x52, 0xd4, 0x3a, 0xb1, 0x3a,
-	0x29, 0xa7, 0xcf, 0x5e, 0xb3, 0x1d, 0x27, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xca, 0x8d, 0x5c,
-	0xc7, 0x39, 0x02, 0x00, 0x00,
+func file_grpc_lookup_v1_rls_proto_rawDescGZIP() []byte {
+	file_grpc_lookup_v1_rls_proto_rawDescOnce.Do(func() {
+		file_grpc_lookup_v1_rls_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_proto_rawDescData)
+	})
+	return file_grpc_lookup_v1_rls_proto_rawDescData
+}
+
+var file_grpc_lookup_v1_rls_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_grpc_lookup_v1_rls_proto_goTypes = []interface{}{
+	(*RouteLookupRequest)(nil),  // 0: grpc.lookup.v1.RouteLookupRequest
+	(*RouteLookupResponse)(nil), // 1: grpc.lookup.v1.RouteLookupResponse
+	nil,                         // 2: grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
+}
+var file_grpc_lookup_v1_rls_proto_depIdxs = []int32{
+	2, // 0: grpc.lookup.v1.RouteLookupRequest.key_map:type_name -> grpc.lookup.v1.RouteLookupRequest.KeyMapEntry
+	0, // 1: grpc.lookup.v1.RouteLookupService.RouteLookup:input_type -> grpc.lookup.v1.RouteLookupRequest
+	1, // 2: grpc.lookup.v1.RouteLookupService.RouteLookup:output_type -> grpc.lookup.v1.RouteLookupResponse
+	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
+}
+
+func init() { file_grpc_lookup_v1_rls_proto_init() }
+func file_grpc_lookup_v1_rls_proto_init() {
+	if File_grpc_lookup_v1_rls_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lookup_v1_rls_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lookup_v1_rls_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_lookup_v1_rls_proto_goTypes,
+		DependencyIndexes: file_grpc_lookup_v1_rls_proto_depIdxs,
+		MessageInfos:      file_grpc_lookup_v1_rls_proto_msgTypes,
+	}.Build()
+	File_grpc_lookup_v1_rls_proto = out.File
+	file_grpc_lookup_v1_rls_proto_rawDesc = nil
+	file_grpc_lookup_v1_rls_proto_goTypes = nil
+	file_grpc_lookup_v1_rls_proto_depIdxs = nil
 }
diff --git a/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go b/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
index 01d5b65..e8a7a6d 100644
--- a/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
+++ b/balancer/rls/internal/proto/grpc_lookup_v1/rls_config.pb.go
@@ -1,31 +1,54 @@
+// Copyright 2020 The 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/lookup/v1/rls_config.proto
 
 package grpc_lookup_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Extract a key based on a given name (e.g. header name or query parameter
 // name).  The name must match one of the names listed in the "name" field.  If
 // the "required_match" field is true, one of the specified names must be
 // present for the keybuilder to match.
 type NameMatcher struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name that will be used in the RLS key_map to refer to this value.
 	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
 	// Ordered list of names (headers or query parameter names) that can supply
@@ -33,160 +56,121 @@
 	Names []string `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
 	// If true, make this extraction required; the key builder will not match
 	// if no value is found.
-	RequiredMatch        bool     `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RequiredMatch bool `protobuf:"varint,3,opt,name=required_match,json=requiredMatch,proto3" json:"required_match,omitempty"`
 }
 
-func (m *NameMatcher) Reset()         { *m = NameMatcher{} }
-func (m *NameMatcher) String() string { return proto.CompactTextString(m) }
-func (*NameMatcher) ProtoMessage()    {}
+func (x *NameMatcher) Reset() {
+	*x = NameMatcher{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *NameMatcher) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NameMatcher) ProtoMessage() {}
+
+func (x *NameMatcher) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NameMatcher.ProtoReflect.Descriptor instead.
 func (*NameMatcher) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{0}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *NameMatcher) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NameMatcher.Unmarshal(m, b)
-}
-func (m *NameMatcher) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NameMatcher.Marshal(b, m, deterministic)
-}
-func (m *NameMatcher) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NameMatcher.Merge(m, src)
-}
-func (m *NameMatcher) XXX_Size() int {
-	return xxx_messageInfo_NameMatcher.Size(m)
-}
-func (m *NameMatcher) XXX_DiscardUnknown() {
-	xxx_messageInfo_NameMatcher.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NameMatcher proto.InternalMessageInfo
-
-func (m *NameMatcher) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *NameMatcher) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *NameMatcher) GetNames() []string {
-	if m != nil {
-		return m.Names
+func (x *NameMatcher) GetNames() []string {
+	if x != nil {
+		return x.Names
 	}
 	return nil
 }
 
-func (m *NameMatcher) GetRequiredMatch() bool {
-	if m != nil {
-		return m.RequiredMatch
+func (x *NameMatcher) GetRequiredMatch() bool {
+	if x != nil {
+		return x.RequiredMatch
 	}
 	return false
 }
 
 // A GrpcKeyBuilder applies to a given gRPC service, name, and headers.
 type GrpcKeyBuilder struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Names []*GrpcKeyBuilder_Name `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
 	// Extract keys from all listed headers.
 	// For gRPC, it is an error to specify "required_match" on the NameMatcher
 	// protos.
-	Headers              []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	Headers []*NameMatcher `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty"`
 }
 
-func (m *GrpcKeyBuilder) Reset()         { *m = GrpcKeyBuilder{} }
-func (m *GrpcKeyBuilder) String() string { return proto.CompactTextString(m) }
-func (*GrpcKeyBuilder) ProtoMessage()    {}
+func (x *GrpcKeyBuilder) Reset() {
+	*x = GrpcKeyBuilder{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GrpcKeyBuilder) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcKeyBuilder) ProtoMessage() {}
+
+func (x *GrpcKeyBuilder) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcKeyBuilder.ProtoReflect.Descriptor instead.
 func (*GrpcKeyBuilder) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{1}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *GrpcKeyBuilder) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcKeyBuilder.Unmarshal(m, b)
-}
-func (m *GrpcKeyBuilder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcKeyBuilder.Marshal(b, m, deterministic)
-}
-func (m *GrpcKeyBuilder) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcKeyBuilder.Merge(m, src)
-}
-func (m *GrpcKeyBuilder) XXX_Size() int {
-	return xxx_messageInfo_GrpcKeyBuilder.Size(m)
-}
-func (m *GrpcKeyBuilder) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcKeyBuilder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcKeyBuilder proto.InternalMessageInfo
-
-func (m *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
-	if m != nil {
-		return m.Names
+func (x *GrpcKeyBuilder) GetNames() []*GrpcKeyBuilder_Name {
+	if x != nil {
+		return x.Names
 	}
 	return nil
 }
 
-func (m *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
-	if m != nil {
-		return m.Headers
+func (x *GrpcKeyBuilder) GetHeaders() []*NameMatcher {
+	if x != nil {
+		return x.Headers
 	}
 	return nil
 }
 
-// To match, one of the given Name fields must match; the service and method
-// fields are specified as fixed strings.  The service name is required and
-// includes the proto package name.  The method name may be omitted, in
-// which case any method on the given service is matched.
-type GrpcKeyBuilder_Name struct {
-	Service              string   `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
-	Method               string   `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GrpcKeyBuilder_Name) Reset()         { *m = GrpcKeyBuilder_Name{} }
-func (m *GrpcKeyBuilder_Name) String() string { return proto.CompactTextString(m) }
-func (*GrpcKeyBuilder_Name) ProtoMessage()    {}
-func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{1, 0}
-}
-
-func (m *GrpcKeyBuilder_Name) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Unmarshal(m, b)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Marshal(b, m, deterministic)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcKeyBuilder_Name.Merge(m, src)
-}
-func (m *GrpcKeyBuilder_Name) XXX_Size() int {
-	return xxx_messageInfo_GrpcKeyBuilder_Name.Size(m)
-}
-func (m *GrpcKeyBuilder_Name) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcKeyBuilder_Name.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcKeyBuilder_Name proto.InternalMessageInfo
-
-func (m *GrpcKeyBuilder_Name) GetService() string {
-	if m != nil {
-		return m.Service
-	}
-	return ""
-}
-
-func (m *GrpcKeyBuilder_Name) GetMethod() string {
-	if m != nil {
-		return m.Method
-	}
-	return ""
-}
-
 // An HttpKeyBuilder applies to a given HTTP URL and headers.
 //
 // Path and host patterns use the matching syntax from gRPC transcoding to
@@ -204,6 +188,10 @@
 // subdomain will be used as the id and the first segment as the object. If
 // neither pattern matches, no keys will be extracted.
 type HttpKeyBuilder struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// host_pattern is an ordered list of host template patterns for the desired
 	// value.  If any host_pattern values are specified, then at least one must
 	// match, and the last one wins and sets any specified variables.  A host
@@ -256,66 +244,74 @@
 	// are marked as "required_match" and are not present, this keybuilder fails
 	// to match.  If a given header appears multiple times in the request we will
 	// report it as a comma-separated string, in standard HTTP fashion.
-	Headers              []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
+	Headers []*NameMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
 }
 
-func (m *HttpKeyBuilder) Reset()         { *m = HttpKeyBuilder{} }
-func (m *HttpKeyBuilder) String() string { return proto.CompactTextString(m) }
-func (*HttpKeyBuilder) ProtoMessage()    {}
+func (x *HttpKeyBuilder) Reset() {
+	*x = HttpKeyBuilder{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HttpKeyBuilder) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HttpKeyBuilder) ProtoMessage() {}
+
+func (x *HttpKeyBuilder) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HttpKeyBuilder.ProtoReflect.Descriptor instead.
 func (*HttpKeyBuilder) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{2}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *HttpKeyBuilder) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HttpKeyBuilder.Unmarshal(m, b)
-}
-func (m *HttpKeyBuilder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HttpKeyBuilder.Marshal(b, m, deterministic)
-}
-func (m *HttpKeyBuilder) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HttpKeyBuilder.Merge(m, src)
-}
-func (m *HttpKeyBuilder) XXX_Size() int {
-	return xxx_messageInfo_HttpKeyBuilder.Size(m)
-}
-func (m *HttpKeyBuilder) XXX_DiscardUnknown() {
-	xxx_messageInfo_HttpKeyBuilder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HttpKeyBuilder proto.InternalMessageInfo
-
-func (m *HttpKeyBuilder) GetHostPatterns() []string {
-	if m != nil {
-		return m.HostPatterns
+func (x *HttpKeyBuilder) GetHostPatterns() []string {
+	if x != nil {
+		return x.HostPatterns
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetPathPatterns() []string {
-	if m != nil {
-		return m.PathPatterns
+func (x *HttpKeyBuilder) GetPathPatterns() []string {
+	if x != nil {
+		return x.PathPatterns
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
-	if m != nil {
-		return m.QueryParameters
+func (x *HttpKeyBuilder) GetQueryParameters() []*NameMatcher {
+	if x != nil {
+		return x.QueryParameters
 	}
 	return nil
 }
 
-func (m *HttpKeyBuilder) GetHeaders() []*NameMatcher {
-	if m != nil {
-		return m.Headers
+func (x *HttpKeyBuilder) GetHeaders() []*NameMatcher {
+	if x != nil {
+		return x.Headers
 	}
 	return nil
 }
 
 type RouteLookupConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Ordered specifications for constructing keys for HTTP requests.  Last
 	// match wins.  If no HttpKeyBuilder matches, an empty key_map will be sent to
 	// the lookup service; it should likely reply with a global default route
@@ -357,149 +353,366 @@
 	// used if RLS returns an error, times out, or returns an invalid response.
 	// Note that requests can be routed only to a subdomain of the original
 	// target, e.g. "us_east_1.cloudbigtable.googleapis.com".
-	DefaultTarget        string   `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	DefaultTarget string `protobuf:"bytes,9,opt,name=default_target,json=defaultTarget,proto3" json:"default_target,omitempty"`
 }
 
-func (m *RouteLookupConfig) Reset()         { *m = RouteLookupConfig{} }
-func (m *RouteLookupConfig) String() string { return proto.CompactTextString(m) }
-func (*RouteLookupConfig) ProtoMessage()    {}
+func (x *RouteLookupConfig) Reset() {
+	*x = RouteLookupConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteLookupConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteLookupConfig) ProtoMessage() {}
+
+func (x *RouteLookupConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteLookupConfig.ProtoReflect.Descriptor instead.
 func (*RouteLookupConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_5fe74d4f6e8f01c1, []int{3}
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *RouteLookupConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteLookupConfig.Unmarshal(m, b)
-}
-func (m *RouteLookupConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteLookupConfig.Marshal(b, m, deterministic)
-}
-func (m *RouteLookupConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteLookupConfig.Merge(m, src)
-}
-func (m *RouteLookupConfig) XXX_Size() int {
-	return xxx_messageInfo_RouteLookupConfig.Size(m)
-}
-func (m *RouteLookupConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteLookupConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteLookupConfig proto.InternalMessageInfo
-
-func (m *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
-	if m != nil {
-		return m.HttpKeybuilders
+func (x *RouteLookupConfig) GetHttpKeybuilders() []*HttpKeyBuilder {
+	if x != nil {
+		return x.HttpKeybuilders
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
-	if m != nil {
-		return m.GrpcKeybuilders
+func (x *RouteLookupConfig) GetGrpcKeybuilders() []*GrpcKeyBuilder {
+	if x != nil {
+		return x.GrpcKeybuilders
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetLookupService() string {
-	if m != nil {
-		return m.LookupService
+func (x *RouteLookupConfig) GetLookupService() string {
+	if x != nil {
+		return x.LookupService
 	}
 	return ""
 }
 
-func (m *RouteLookupConfig) GetLookupServiceTimeout() *duration.Duration {
-	if m != nil {
-		return m.LookupServiceTimeout
+func (x *RouteLookupConfig) GetLookupServiceTimeout() *duration.Duration {
+	if x != nil {
+		return x.LookupServiceTimeout
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetMaxAge() *duration.Duration {
-	if m != nil {
-		return m.MaxAge
+func (x *RouteLookupConfig) GetMaxAge() *duration.Duration {
+	if x != nil {
+		return x.MaxAge
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetStaleAge() *duration.Duration {
-	if m != nil {
-		return m.StaleAge
+func (x *RouteLookupConfig) GetStaleAge() *duration.Duration {
+	if x != nil {
+		return x.StaleAge
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetCacheSizeBytes() int64 {
-	if m != nil {
-		return m.CacheSizeBytes
+func (x *RouteLookupConfig) GetCacheSizeBytes() int64 {
+	if x != nil {
+		return x.CacheSizeBytes
 	}
 	return 0
 }
 
-func (m *RouteLookupConfig) GetValidTargets() []string {
-	if m != nil {
-		return m.ValidTargets
+func (x *RouteLookupConfig) GetValidTargets() []string {
+	if x != nil {
+		return x.ValidTargets
 	}
 	return nil
 }
 
-func (m *RouteLookupConfig) GetDefaultTarget() string {
-	if m != nil {
-		return m.DefaultTarget
+func (x *RouteLookupConfig) GetDefaultTarget() string {
+	if x != nil {
+		return x.DefaultTarget
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*NameMatcher)(nil), "grpc.lookup.v1.NameMatcher")
-	proto.RegisterType((*GrpcKeyBuilder)(nil), "grpc.lookup.v1.GrpcKeyBuilder")
-	proto.RegisterType((*GrpcKeyBuilder_Name)(nil), "grpc.lookup.v1.GrpcKeyBuilder.Name")
-	proto.RegisterType((*HttpKeyBuilder)(nil), "grpc.lookup.v1.HttpKeyBuilder")
-	proto.RegisterType((*RouteLookupConfig)(nil), "grpc.lookup.v1.RouteLookupConfig")
+// To match, one of the given Name fields must match; the service and method
+// fields are specified as fixed strings.  The service name is required and
+// includes the proto package name.  The method name may be omitted, in
+// which case any method on the given service is matched.
+type GrpcKeyBuilder_Name struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
+	Method  string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
 }
 
-func init() { proto.RegisterFile("grpc/lookup/v1/rls_config.proto", fileDescriptor_5fe74d4f6e8f01c1) }
+func (x *GrpcKeyBuilder_Name) Reset() {
+	*x = GrpcKeyBuilder_Name{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
 
-var fileDescriptor_5fe74d4f6e8f01c1 = []byte{
-	// 615 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xed, 0x6a, 0xdb, 0x30,
-	0x14, 0xc5, 0x75, 0x9a, 0x0f, 0xa5, 0x75, 0x53, 0x53, 0x8a, 0xd7, 0x42, 0x17, 0x52, 0x0a, 0xfe,
-	0x31, 0x1c, 0x9a, 0xb1, 0xb1, 0xfd, 0x5c, 0x36, 0xf6, 0xfd, 0x11, 0xdc, 0xfe, 0x1a, 0x03, 0xa1,
-	0xd8, 0xb7, 0xb2, 0xa9, 0x1d, 0xb9, 0x92, 0x1c, 0x9a, 0x3e, 0xd0, 0x9e, 0x62, 0x2f, 0xb2, 0xb7,
-	0x19, 0x92, 0xec, 0x2e, 0x2e, 0x83, 0xec, 0x5f, 0xee, 0xd1, 0x39, 0x27, 0x3a, 0xf7, 0x5e, 0x19,
-	0x3d, 0xa6, 0xbc, 0x88, 0xc6, 0x19, 0x63, 0xd7, 0x65, 0x31, 0x5e, 0x9e, 0x8f, 0x79, 0x26, 0x70,
-	0xc4, 0x16, 0x57, 0x29, 0x0d, 0x0a, 0xce, 0x24, 0x73, 0x1d, 0x45, 0x08, 0x0c, 0x21, 0x58, 0x9e,
-	0x1f, 0x9d, 0x50, 0xc6, 0x68, 0x06, 0x63, 0x7d, 0x3a, 0x2f, 0xaf, 0xc6, 0x71, 0xc9, 0x89, 0x4c,
-	0xd9, 0xc2, 0xf0, 0x47, 0x3f, 0x50, 0xff, 0x2b, 0xc9, 0xe1, 0x0b, 0x91, 0x51, 0x02, 0xdc, 0x1d,
-	0x20, 0xfb, 0x1a, 0x56, 0x9e, 0x35, 0xb4, 0xfc, 0x5e, 0xa8, 0x7e, 0xba, 0x07, 0x68, 0x7b, 0x41,
-	0x72, 0x10, 0xde, 0xd6, 0xd0, 0xf6, 0x7b, 0xa1, 0x29, 0xdc, 0x33, 0xe4, 0x70, 0xb8, 0x29, 0x53,
-	0x0e, 0x31, 0xce, 0x95, 0xd6, 0xb3, 0x87, 0x96, 0xdf, 0x0d, 0x77, 0x6b, 0x54, 0x1b, 0x8e, 0x7e,
-	0x59, 0xc8, 0x79, 0xc7, 0x8b, 0xe8, 0x13, 0xac, 0xa6, 0x65, 0x9a, 0xc5, 0xc0, 0xdd, 0x97, 0xb5,
-	0x9f, 0x35, 0xb4, 0xfd, 0xfe, 0xe4, 0x34, 0x68, 0x5e, 0x38, 0x68, 0xd2, 0x03, 0x75, 0xb9, 0xfa,
-	0x4f, 0x9f, 0xa1, 0x4e, 0x02, 0x24, 0x06, 0x6e, 0x2e, 0xd3, 0x9f, 0x1c, 0x3f, 0x14, 0xaf, 0x45,
-	0x09, 0x6b, 0xee, 0xd1, 0x0b, 0xd4, 0x52, 0xb8, 0xeb, 0xa1, 0x8e, 0x00, 0xbe, 0x4c, 0x23, 0xa8,
-	0xf2, 0xd5, 0xa5, 0x7b, 0x88, 0xda, 0x39, 0xc8, 0x84, 0xc5, 0xde, 0x96, 0x3e, 0xa8, 0xaa, 0xd1,
-	0x6f, 0x0b, 0x39, 0xef, 0xa5, 0x2c, 0xd6, 0xae, 0x7f, 0x8a, 0x76, 0x13, 0x26, 0x24, 0x2e, 0x88,
-	0x94, 0xc0, 0x17, 0x26, 0x46, 0x2f, 0xdc, 0x51, 0xe0, 0xac, 0xc2, 0x14, 0xa9, 0x20, 0x32, 0xf9,
-	0x4b, 0x32, 0xbd, 0xdb, 0x51, 0xe0, 0x3d, 0xe9, 0x2d, 0x1a, 0xdc, 0x94, 0xc0, 0x57, 0xb8, 0x20,
-	0x9c, 0xe4, 0x20, 0x55, 0x2c, 0x7b, 0x73, 0xac, 0x3d, 0x2d, 0x9a, 0xdd, 0x6b, 0xd6, 0xbb, 0xd2,
-	0xfa, 0xff, 0xae, 0x8c, 0x7e, 0xb6, 0xd0, 0x7e, 0xc8, 0x4a, 0x09, 0x9f, 0x35, 0xef, 0xb5, 0x5e,
-	0x22, 0xf7, 0x03, 0x1a, 0x24, 0x52, 0x16, 0xf8, 0x1a, 0x56, 0x73, 0x93, 0xb8, 0x1e, 0xd4, 0xc9,
-	0x43, 0xd7, 0x66, 0x63, 0xc2, 0xbd, 0xc4, 0xd4, 0xb5, 0x4c, 0x59, 0x29, 0x45, 0xc3, 0x6a, 0xeb,
-	0xdf, 0x56, 0xcd, 0x99, 0x87, 0x7b, 0xd4, 0xd4, 0xf7, 0x56, 0x67, 0xc8, 0x31, 0x64, 0x5c, 0x0f,
-	0xd0, 0xd6, 0x73, 0xda, 0x35, 0xe8, 0x45, 0x35, 0xc6, 0x6f, 0xe8, 0xb0, 0x49, 0xc3, 0x32, 0xcd,
-	0x81, 0x95, 0xd2, 0x6b, 0x0d, 0x2d, 0xbf, 0x3f, 0x79, 0x14, 0x98, 0xc7, 0x10, 0xd4, 0x8f, 0x21,
-	0x78, 0x53, 0x3d, 0x86, 0xf0, 0xa0, 0xe1, 0x74, 0x69, 0x64, 0xee, 0x04, 0x75, 0x72, 0x72, 0x8b,
-	0x09, 0x05, 0x6f, 0x7b, 0x93, 0x43, 0x3b, 0x27, 0xb7, 0xaf, 0x28, 0xb8, 0xcf, 0x51, 0x4f, 0x48,
-	0x92, 0x81, 0x56, 0xb5, 0x37, 0xa9, 0xba, 0x9a, 0xab, 0x74, 0x3e, 0x1a, 0x44, 0x24, 0x4a, 0x00,
-	0x8b, 0xf4, 0x0e, 0xf0, 0x7c, 0x25, 0x41, 0x78, 0x9d, 0xa1, 0xe5, 0xdb, 0xa1, 0xa3, 0xf1, 0x8b,
-	0xf4, 0x0e, 0xa6, 0x0a, 0x55, 0xdb, 0xb5, 0x24, 0x59, 0x1a, 0x63, 0x49, 0x38, 0x05, 0x29, 0xbc,
-	0xae, 0xd9, 0x2e, 0x0d, 0x5e, 0x1a, 0x4c, 0xb5, 0x2c, 0x86, 0x2b, 0x52, 0x66, 0xb2, 0xa2, 0x79,
-	0x3d, 0xd3, 0xb2, 0x0a, 0x35, 0xbc, 0x8f, 0xad, 0x2e, 0x1a, 0xf4, 0xc3, 0x63, 0xf5, 0x6a, 0x41,
-	0x6d, 0x35, 0x67, 0x11, 0x08, 0x91, 0x2e, 0x28, 0x16, 0x92, 0x13, 0x09, 0x74, 0x35, 0xbd, 0x40,
-	0xfb, 0x29, 0x7b, 0x30, 0xb1, 0xa9, 0x13, 0x66, 0xc2, 0xac, 0xcc, 0x4c, 0x65, 0x9a, 0x59, 0xdf,
-	0x9f, 0x54, 0x19, 0x29, 0xcb, 0xc8, 0x82, 0x06, 0x8c, 0xd3, 0xf1, 0xfa, 0xb7, 0x4a, 0xaf, 0x42,
-	0x35, 0x9d, 0xe5, 0xf9, 0xbc, 0xad, 0x5b, 0xf1, 0xf4, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
-	0xaa, 0xbd, 0xb2, 0xd0, 0x04, 0x00, 0x00,
+func (x *GrpcKeyBuilder_Name) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcKeyBuilder_Name) ProtoMessage() {}
+
+func (x *GrpcKeyBuilder_Name) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_lookup_v1_rls_config_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcKeyBuilder_Name.ProtoReflect.Descriptor instead.
+func (*GrpcKeyBuilder_Name) Descriptor() ([]byte, []int) {
+	return file_grpc_lookup_v1_rls_config_proto_rawDescGZIP(), []int{1, 0}
+}
+
+func (x *GrpcKeyBuilder_Name) GetService() string {
+	if x != nil {
+		return x.Service
+	}
+	return ""
+}
+
+func (x *GrpcKeyBuilder_Name) GetMethod() string {
+	if x != nil {
+		return x.Method
+	}
+	return ""
+}
+
+var File_grpc_lookup_v1_rls_config_proto protoreflect.FileDescriptor
+
+var file_grpc_lookup_v1_rls_config_proto_rawDesc = []byte{
+	0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x76, 0x31,
+	0x2f, 0x72, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x0e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76,
+	0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x22, 0x5c, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72,
+	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22,
+	0xbc, 0x01, 0x0a, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64,
+	0x65, 0x72, 0x12, 0x39, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
+	0x72, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a,
+	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e,
+	0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xd9,
+	0x01, 0x0a, 0x0e, 0x48, 0x74, 0x74, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
+	0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
+	0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x61,
+	0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x70,
+	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70,
+	0x61, 0x74, 0x68, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x10, 0x71,
+	0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
+	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
+	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68,
+	0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
+	0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b,
+	0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65,
+	0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0xa6, 0x04, 0x0a, 0x11, 0x52,
+	0x6f, 0x75, 0x74, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x12, 0x49, 0x0a, 0x10, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c,
+	0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70,
+	0x4b, 0x65, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70,
+	0x4b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x67,
+	0x72, 0x70, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c, 0x6f, 0x6f,
+	0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x75,
+	0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x67, 0x72, 0x70, 0x63, 0x4b, 0x65, 0x79, 0x62, 0x75,
+	0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
+	0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
+	0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4f, 0x0a,
+	0x16, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32,
+	0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41,
+	0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x52, 0x08, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x41, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61,
+	0x63, 0x68, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42,
+	0x79, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x74, 0x61,
+	0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x61, 0x6c,
+	0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
+	0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74,
+	0x65, 0x67, 0x79, 0x42, 0x53, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x6c, 0x73, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72,
+	0x70, 0x63, 0x2f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x6c,
+	0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_grpc_lookup_v1_rls_config_proto_rawDescOnce sync.Once
+	file_grpc_lookup_v1_rls_config_proto_rawDescData = file_grpc_lookup_v1_rls_config_proto_rawDesc
+)
+
+func file_grpc_lookup_v1_rls_config_proto_rawDescGZIP() []byte {
+	file_grpc_lookup_v1_rls_config_proto_rawDescOnce.Do(func() {
+		file_grpc_lookup_v1_rls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_lookup_v1_rls_config_proto_rawDescData)
+	})
+	return file_grpc_lookup_v1_rls_config_proto_rawDescData
+}
+
+var file_grpc_lookup_v1_rls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_grpc_lookup_v1_rls_config_proto_goTypes = []interface{}{
+	(*NameMatcher)(nil),         // 0: grpc.lookup.v1.NameMatcher
+	(*GrpcKeyBuilder)(nil),      // 1: grpc.lookup.v1.GrpcKeyBuilder
+	(*HttpKeyBuilder)(nil),      // 2: grpc.lookup.v1.HttpKeyBuilder
+	(*RouteLookupConfig)(nil),   // 3: grpc.lookup.v1.RouteLookupConfig
+	(*GrpcKeyBuilder_Name)(nil), // 4: grpc.lookup.v1.GrpcKeyBuilder.Name
+	(*duration.Duration)(nil),   // 5: google.protobuf.Duration
+}
+var file_grpc_lookup_v1_rls_config_proto_depIdxs = []int32{
+	4, // 0: grpc.lookup.v1.GrpcKeyBuilder.names:type_name -> grpc.lookup.v1.GrpcKeyBuilder.Name
+	0, // 1: grpc.lookup.v1.GrpcKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
+	0, // 2: grpc.lookup.v1.HttpKeyBuilder.query_parameters:type_name -> grpc.lookup.v1.NameMatcher
+	0, // 3: grpc.lookup.v1.HttpKeyBuilder.headers:type_name -> grpc.lookup.v1.NameMatcher
+	2, // 4: grpc.lookup.v1.RouteLookupConfig.http_keybuilders:type_name -> grpc.lookup.v1.HttpKeyBuilder
+	1, // 5: grpc.lookup.v1.RouteLookupConfig.grpc_keybuilders:type_name -> grpc.lookup.v1.GrpcKeyBuilder
+	5, // 6: grpc.lookup.v1.RouteLookupConfig.lookup_service_timeout:type_name -> google.protobuf.Duration
+	5, // 7: grpc.lookup.v1.RouteLookupConfig.max_age:type_name -> google.protobuf.Duration
+	5, // 8: grpc.lookup.v1.RouteLookupConfig.stale_age:type_name -> google.protobuf.Duration
+	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
+}
+
+func init() { file_grpc_lookup_v1_rls_config_proto_init() }
+func file_grpc_lookup_v1_rls_config_proto_init() {
+	if File_grpc_lookup_v1_rls_config_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NameMatcher); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcKeyBuilder); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HttpKeyBuilder); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteLookupConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_lookup_v1_rls_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcKeyBuilder_Name); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_lookup_v1_rls_config_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_lookup_v1_rls_config_proto_goTypes,
+		DependencyIndexes: file_grpc_lookup_v1_rls_config_proto_depIdxs,
+		MessageInfos:      file_grpc_lookup_v1_rls_config_proto_msgTypes,
+	}.Build()
+	File_grpc_lookup_v1_rls_config_proto = out.File
+	file_grpc_lookup_v1_rls_config_proto_rawDesc = nil
+	file_grpc_lookup_v1_rls_config_proto_goTypes = nil
+	file_grpc_lookup_v1_rls_config_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/control.pb.go b/benchmark/grpc_testing/control.pb.go
index 7a109d8..9cb9a2f 100644
--- a/benchmark/grpc_testing/control.pb.go
+++ b/benchmark/grpc_testing/control.pb.go
@@ -1,24 +1,43 @@
+// Copyright 2016 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/control.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ClientType int32
 
@@ -27,22 +46,43 @@
 	ClientType_ASYNC_CLIENT ClientType = 1
 )
 
-var ClientType_name = map[int32]string{
-	0: "SYNC_CLIENT",
-	1: "ASYNC_CLIENT",
-}
+// Enum value maps for ClientType.
+var (
+	ClientType_name = map[int32]string{
+		0: "SYNC_CLIENT",
+		1: "ASYNC_CLIENT",
+	}
+	ClientType_value = map[string]int32{
+		"SYNC_CLIENT":  0,
+		"ASYNC_CLIENT": 1,
+	}
+)
 
-var ClientType_value = map[string]int32{
-	"SYNC_CLIENT":  0,
-	"ASYNC_CLIENT": 1,
+func (x ClientType) Enum() *ClientType {
+	p := new(ClientType)
+	*p = x
+	return p
 }
 
 func (x ClientType) String() string {
-	return proto.EnumName(ClientType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ClientType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[0].Descriptor()
+}
+
+func (ClientType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[0]
+}
+
+func (x ClientType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ClientType.Descriptor instead.
 func (ClientType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{0}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{0}
 }
 
 type ServerType int32
@@ -53,24 +93,45 @@
 	ServerType_ASYNC_GENERIC_SERVER ServerType = 2
 )
 
-var ServerType_name = map[int32]string{
-	0: "SYNC_SERVER",
-	1: "ASYNC_SERVER",
-	2: "ASYNC_GENERIC_SERVER",
-}
+// Enum value maps for ServerType.
+var (
+	ServerType_name = map[int32]string{
+		0: "SYNC_SERVER",
+		1: "ASYNC_SERVER",
+		2: "ASYNC_GENERIC_SERVER",
+	}
+	ServerType_value = map[string]int32{
+		"SYNC_SERVER":          0,
+		"ASYNC_SERVER":         1,
+		"ASYNC_GENERIC_SERVER": 2,
+	}
+)
 
-var ServerType_value = map[string]int32{
-	"SYNC_SERVER":          0,
-	"ASYNC_SERVER":         1,
-	"ASYNC_GENERIC_SERVER": 2,
+func (x ServerType) Enum() *ServerType {
+	p := new(ServerType)
+	*p = x
+	return p
 }
 
 func (x ServerType) String() string {
-	return proto.EnumName(ServerType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ServerType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[1].Descriptor()
+}
+
+func (ServerType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[1]
+}
+
+func (x ServerType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ServerType.Descriptor instead.
 func (ServerType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{1}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{1}
 }
 
 type RpcType int32
@@ -80,195 +141,248 @@
 	RpcType_STREAMING RpcType = 1
 )
 
-var RpcType_name = map[int32]string{
-	0: "UNARY",
-	1: "STREAMING",
-}
+// Enum value maps for RpcType.
+var (
+	RpcType_name = map[int32]string{
+		0: "UNARY",
+		1: "STREAMING",
+	}
+	RpcType_value = map[string]int32{
+		"UNARY":     0,
+		"STREAMING": 1,
+	}
+)
 
-var RpcType_value = map[string]int32{
-	"UNARY":     0,
-	"STREAMING": 1,
+func (x RpcType) Enum() *RpcType {
+	p := new(RpcType)
+	*p = x
+	return p
 }
 
 func (x RpcType) String() string {
-	return proto.EnumName(RpcType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (RpcType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_control_proto_enumTypes[2].Descriptor()
+}
+
+func (RpcType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_control_proto_enumTypes[2]
+}
+
+func (x RpcType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use RpcType.Descriptor instead.
 func (RpcType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{2}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{2}
 }
 
 // Parameters of poisson process distribution, which is a good representation
 // of activity coming in from independent identical stationary sources.
 type PoissonParams struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
-	OfferedLoad          float64  `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
 }
 
-func (m *PoissonParams) Reset()         { *m = PoissonParams{} }
-func (m *PoissonParams) String() string { return proto.CompactTextString(m) }
-func (*PoissonParams) ProtoMessage()    {}
+func (x *PoissonParams) Reset() {
+	*x = PoissonParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PoissonParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PoissonParams) ProtoMessage() {}
+
+func (x *PoissonParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PoissonParams.ProtoReflect.Descriptor instead.
 func (*PoissonParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{0}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *PoissonParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PoissonParams.Unmarshal(m, b)
-}
-func (m *PoissonParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PoissonParams.Marshal(b, m, deterministic)
-}
-func (m *PoissonParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PoissonParams.Merge(m, src)
-}
-func (m *PoissonParams) XXX_Size() int {
-	return xxx_messageInfo_PoissonParams.Size(m)
-}
-func (m *PoissonParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_PoissonParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PoissonParams proto.InternalMessageInfo
-
-func (m *PoissonParams) GetOfferedLoad() float64 {
-	if m != nil {
-		return m.OfferedLoad
+func (x *PoissonParams) GetOfferedLoad() float64 {
+	if x != nil {
+		return x.OfferedLoad
 	}
 	return 0
 }
 
 type UniformParams struct {
-	InterarrivalLo       float64  `protobuf:"fixed64,1,opt,name=interarrival_lo,json=interarrivalLo,proto3" json:"interarrival_lo,omitempty"`
-	InterarrivalHi       float64  `protobuf:"fixed64,2,opt,name=interarrival_hi,json=interarrivalHi,proto3" json:"interarrival_hi,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	InterarrivalLo float64 `protobuf:"fixed64,1,opt,name=interarrival_lo,json=interarrivalLo,proto3" json:"interarrival_lo,omitempty"`
+	InterarrivalHi float64 `protobuf:"fixed64,2,opt,name=interarrival_hi,json=interarrivalHi,proto3" json:"interarrival_hi,omitempty"`
 }
 
-func (m *UniformParams) Reset()         { *m = UniformParams{} }
-func (m *UniformParams) String() string { return proto.CompactTextString(m) }
-func (*UniformParams) ProtoMessage()    {}
+func (x *UniformParams) Reset() {
+	*x = UniformParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *UniformParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UniformParams) ProtoMessage() {}
+
+func (x *UniformParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use UniformParams.ProtoReflect.Descriptor instead.
 func (*UniformParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{1}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *UniformParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_UniformParams.Unmarshal(m, b)
-}
-func (m *UniformParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_UniformParams.Marshal(b, m, deterministic)
-}
-func (m *UniformParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_UniformParams.Merge(m, src)
-}
-func (m *UniformParams) XXX_Size() int {
-	return xxx_messageInfo_UniformParams.Size(m)
-}
-func (m *UniformParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_UniformParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_UniformParams proto.InternalMessageInfo
-
-func (m *UniformParams) GetInterarrivalLo() float64 {
-	if m != nil {
-		return m.InterarrivalLo
+func (x *UniformParams) GetInterarrivalLo() float64 {
+	if x != nil {
+		return x.InterarrivalLo
 	}
 	return 0
 }
 
-func (m *UniformParams) GetInterarrivalHi() float64 {
-	if m != nil {
-		return m.InterarrivalHi
+func (x *UniformParams) GetInterarrivalHi() float64 {
+	if x != nil {
+		return x.InterarrivalHi
 	}
 	return 0
 }
 
 type DeterministicParams struct {
-	OfferedLoad          float64  `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	OfferedLoad float64 `protobuf:"fixed64,1,opt,name=offered_load,json=offeredLoad,proto3" json:"offered_load,omitempty"`
 }
 
-func (m *DeterministicParams) Reset()         { *m = DeterministicParams{} }
-func (m *DeterministicParams) String() string { return proto.CompactTextString(m) }
-func (*DeterministicParams) ProtoMessage()    {}
+func (x *DeterministicParams) Reset() {
+	*x = DeterministicParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *DeterministicParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeterministicParams) ProtoMessage() {}
+
+func (x *DeterministicParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use DeterministicParams.ProtoReflect.Descriptor instead.
 func (*DeterministicParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{2}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *DeterministicParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_DeterministicParams.Unmarshal(m, b)
-}
-func (m *DeterministicParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_DeterministicParams.Marshal(b, m, deterministic)
-}
-func (m *DeterministicParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DeterministicParams.Merge(m, src)
-}
-func (m *DeterministicParams) XXX_Size() int {
-	return xxx_messageInfo_DeterministicParams.Size(m)
-}
-func (m *DeterministicParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_DeterministicParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_DeterministicParams proto.InternalMessageInfo
-
-func (m *DeterministicParams) GetOfferedLoad() float64 {
-	if m != nil {
-		return m.OfferedLoad
+func (x *DeterministicParams) GetOfferedLoad() float64 {
+	if x != nil {
+		return x.OfferedLoad
 	}
 	return 0
 }
 
 type ParetoParams struct {
-	InterarrivalBase     float64  `protobuf:"fixed64,1,opt,name=interarrival_base,json=interarrivalBase,proto3" json:"interarrival_base,omitempty"`
-	Alpha                float64  `protobuf:"fixed64,2,opt,name=alpha,proto3" json:"alpha,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	InterarrivalBase float64 `protobuf:"fixed64,1,opt,name=interarrival_base,json=interarrivalBase,proto3" json:"interarrival_base,omitempty"`
+	Alpha            float64 `protobuf:"fixed64,2,opt,name=alpha,proto3" json:"alpha,omitempty"`
 }
 
-func (m *ParetoParams) Reset()         { *m = ParetoParams{} }
-func (m *ParetoParams) String() string { return proto.CompactTextString(m) }
-func (*ParetoParams) ProtoMessage()    {}
+func (x *ParetoParams) Reset() {
+	*x = ParetoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ParetoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ParetoParams) ProtoMessage() {}
+
+func (x *ParetoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ParetoParams.ProtoReflect.Descriptor instead.
 func (*ParetoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{3}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ParetoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ParetoParams.Unmarshal(m, b)
-}
-func (m *ParetoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ParetoParams.Marshal(b, m, deterministic)
-}
-func (m *ParetoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParetoParams.Merge(m, src)
-}
-func (m *ParetoParams) XXX_Size() int {
-	return xxx_messageInfo_ParetoParams.Size(m)
-}
-func (m *ParetoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ParetoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ParetoParams proto.InternalMessageInfo
-
-func (m *ParetoParams) GetInterarrivalBase() float64 {
-	if m != nil {
-		return m.InterarrivalBase
+func (x *ParetoParams) GetInterarrivalBase() float64 {
+	if x != nil {
+		return x.InterarrivalBase
 	}
 	return 0
 }
 
-func (m *ParetoParams) GetAlpha() float64 {
-	if m != nil {
-		return m.Alpha
+func (x *ParetoParams) GetAlpha() float64 {
+	if x != nil {
+		return x.Alpha
 	}
 	return 0
 }
@@ -276,73 +390,130 @@
 // Once an RPC finishes, immediately start a new one.
 // No configuration parameters needed.
 type ClosedLoopParams struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ClosedLoopParams) Reset()         { *m = ClosedLoopParams{} }
-func (m *ClosedLoopParams) String() string { return proto.CompactTextString(m) }
-func (*ClosedLoopParams) ProtoMessage()    {}
+func (x *ClosedLoopParams) Reset() {
+	*x = ClosedLoopParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClosedLoopParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClosedLoopParams) ProtoMessage() {}
+
+func (x *ClosedLoopParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClosedLoopParams.ProtoReflect.Descriptor instead.
 func (*ClosedLoopParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{4}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ClosedLoopParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClosedLoopParams.Unmarshal(m, b)
-}
-func (m *ClosedLoopParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClosedLoopParams.Marshal(b, m, deterministic)
-}
-func (m *ClosedLoopParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClosedLoopParams.Merge(m, src)
-}
-func (m *ClosedLoopParams) XXX_Size() int {
-	return xxx_messageInfo_ClosedLoopParams.Size(m)
-}
-func (m *ClosedLoopParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClosedLoopParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClosedLoopParams proto.InternalMessageInfo
-
 type LoadParams struct {
-	// Types that are valid to be assigned to Load:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Load:
 	//	*LoadParams_ClosedLoop
 	//	*LoadParams_Poisson
 	//	*LoadParams_Uniform
 	//	*LoadParams_Determ
 	//	*LoadParams_Pareto
-	Load                 isLoadParams_Load `protobuf_oneof:"load"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Load isLoadParams_Load `protobuf_oneof:"load"`
 }
 
-func (m *LoadParams) Reset()         { *m = LoadParams{} }
-func (m *LoadParams) String() string { return proto.CompactTextString(m) }
-func (*LoadParams) ProtoMessage()    {}
+func (x *LoadParams) Reset() {
+	*x = LoadParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadParams) ProtoMessage() {}
+
+func (x *LoadParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadParams.ProtoReflect.Descriptor instead.
 func (*LoadParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{5}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *LoadParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadParams.Unmarshal(m, b)
-}
-func (m *LoadParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadParams.Marshal(b, m, deterministic)
-}
-func (m *LoadParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadParams.Merge(m, src)
-}
-func (m *LoadParams) XXX_Size() int {
-	return xxx_messageInfo_LoadParams.Size(m)
-}
-func (m *LoadParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadParams.DiscardUnknown(m)
+func (m *LoadParams) GetLoad() isLoadParams_Load {
+	if m != nil {
+		return m.Load
+	}
+	return nil
 }
 
-var xxx_messageInfo_LoadParams proto.InternalMessageInfo
+func (x *LoadParams) GetClosedLoop() *ClosedLoopParams {
+	if x, ok := x.GetLoad().(*LoadParams_ClosedLoop); ok {
+		return x.ClosedLoop
+	}
+	return nil
+}
+
+func (x *LoadParams) GetPoisson() *PoissonParams {
+	if x, ok := x.GetLoad().(*LoadParams_Poisson); ok {
+		return x.Poisson
+	}
+	return nil
+}
+
+func (x *LoadParams) GetUniform() *UniformParams {
+	if x, ok := x.GetLoad().(*LoadParams_Uniform); ok {
+		return x.Uniform
+	}
+	return nil
+}
+
+func (x *LoadParams) GetDeterm() *DeterministicParams {
+	if x, ok := x.GetLoad().(*LoadParams_Determ); ok {
+		return x.Determ
+	}
+	return nil
+}
+
+func (x *LoadParams) GetPareto() *ParetoParams {
+	if x, ok := x.GetLoad().(*LoadParams_Pareto); ok {
+		return x.Pareto
+	}
+	return nil
+}
 
 type isLoadParams_Load interface {
 	isLoadParams_Load()
@@ -378,108 +549,67 @@
 
 func (*LoadParams_Pareto) isLoadParams_Load() {}
 
-func (m *LoadParams) GetLoad() isLoadParams_Load {
-	if m != nil {
-		return m.Load
-	}
-	return nil
-}
-
-func (m *LoadParams) GetClosedLoop() *ClosedLoopParams {
-	if x, ok := m.GetLoad().(*LoadParams_ClosedLoop); ok {
-		return x.ClosedLoop
-	}
-	return nil
-}
-
-func (m *LoadParams) GetPoisson() *PoissonParams {
-	if x, ok := m.GetLoad().(*LoadParams_Poisson); ok {
-		return x.Poisson
-	}
-	return nil
-}
-
-func (m *LoadParams) GetUniform() *UniformParams {
-	if x, ok := m.GetLoad().(*LoadParams_Uniform); ok {
-		return x.Uniform
-	}
-	return nil
-}
-
-func (m *LoadParams) GetDeterm() *DeterministicParams {
-	if x, ok := m.GetLoad().(*LoadParams_Determ); ok {
-		return x.Determ
-	}
-	return nil
-}
-
-func (m *LoadParams) GetPareto() *ParetoParams {
-	if x, ok := m.GetLoad().(*LoadParams_Pareto); ok {
-		return x.Pareto
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadParams) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadParams_ClosedLoop)(nil),
-		(*LoadParams_Poisson)(nil),
-		(*LoadParams_Uniform)(nil),
-		(*LoadParams_Determ)(nil),
-		(*LoadParams_Pareto)(nil),
-	}
-}
-
 // presence of SecurityParams implies use of TLS
 type SecurityParams struct {
-	UseTestCa            bool     `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"`
-	ServerHostOverride   string   `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	UseTestCa          bool   `protobuf:"varint,1,opt,name=use_test_ca,json=useTestCa,proto3" json:"use_test_ca,omitempty"`
+	ServerHostOverride string `protobuf:"bytes,2,opt,name=server_host_override,json=serverHostOverride,proto3" json:"server_host_override,omitempty"`
 }
 
-func (m *SecurityParams) Reset()         { *m = SecurityParams{} }
-func (m *SecurityParams) String() string { return proto.CompactTextString(m) }
-func (*SecurityParams) ProtoMessage()    {}
+func (x *SecurityParams) Reset() {
+	*x = SecurityParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SecurityParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SecurityParams) ProtoMessage() {}
+
+func (x *SecurityParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SecurityParams.ProtoReflect.Descriptor instead.
 func (*SecurityParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{6}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *SecurityParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SecurityParams.Unmarshal(m, b)
-}
-func (m *SecurityParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SecurityParams.Marshal(b, m, deterministic)
-}
-func (m *SecurityParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SecurityParams.Merge(m, src)
-}
-func (m *SecurityParams) XXX_Size() int {
-	return xxx_messageInfo_SecurityParams.Size(m)
-}
-func (m *SecurityParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_SecurityParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SecurityParams proto.InternalMessageInfo
-
-func (m *SecurityParams) GetUseTestCa() bool {
-	if m != nil {
-		return m.UseTestCa
+func (x *SecurityParams) GetUseTestCa() bool {
+	if x != nil {
+		return x.UseTestCa
 	}
 	return false
 }
 
-func (m *SecurityParams) GetServerHostOverride() string {
-	if m != nil {
-		return m.ServerHostOverride
+func (x *SecurityParams) GetServerHostOverride() string {
+	if x != nil {
+		return x.ServerHostOverride
 	}
 	return ""
 }
 
 type ClientConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// List of targets to connect to. At least one target needs to be specified.
 	ServerTargets  []string        `protobuf:"bytes,1,rep,name=server_targets,json=serverTargets,proto3" json:"server_targets,omitempty"`
 	ClientType     ClientType      `protobuf:"varint,2,opt,name=client_type,json=clientType,proto3,enum=grpc.testing.ClientType" json:"client_type,omitempty"`
@@ -498,236 +628,285 @@
 	PayloadConfig   *PayloadConfig   `protobuf:"bytes,11,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
 	HistogramParams *HistogramParams `protobuf:"bytes,12,opt,name=histogram_params,json=histogramParams,proto3" json:"histogram_params,omitempty"`
 	// Specify the cores we should run the client on, if desired
-	CoreList             []int32  `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
-	CoreLimit            int32    `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	CoreList  []int32 `protobuf:"varint,13,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
+	CoreLimit int32   `protobuf:"varint,14,opt,name=core_limit,json=coreLimit,proto3" json:"core_limit,omitempty"`
 }
 
-func (m *ClientConfig) Reset()         { *m = ClientConfig{} }
-func (m *ClientConfig) String() string { return proto.CompactTextString(m) }
-func (*ClientConfig) ProtoMessage()    {}
+func (x *ClientConfig) Reset() {
+	*x = ClientConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientConfig) ProtoMessage() {}
+
+func (x *ClientConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead.
 func (*ClientConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{7}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ClientConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientConfig.Unmarshal(m, b)
-}
-func (m *ClientConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientConfig.Marshal(b, m, deterministic)
-}
-func (m *ClientConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientConfig.Merge(m, src)
-}
-func (m *ClientConfig) XXX_Size() int {
-	return xxx_messageInfo_ClientConfig.Size(m)
-}
-func (m *ClientConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientConfig proto.InternalMessageInfo
-
-func (m *ClientConfig) GetServerTargets() []string {
-	if m != nil {
-		return m.ServerTargets
+func (x *ClientConfig) GetServerTargets() []string {
+	if x != nil {
+		return x.ServerTargets
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetClientType() ClientType {
-	if m != nil {
-		return m.ClientType
+func (x *ClientConfig) GetClientType() ClientType {
+	if x != nil {
+		return x.ClientType
 	}
 	return ClientType_SYNC_CLIENT
 }
 
-func (m *ClientConfig) GetSecurityParams() *SecurityParams {
-	if m != nil {
-		return m.SecurityParams
+func (x *ClientConfig) GetSecurityParams() *SecurityParams {
+	if x != nil {
+		return x.SecurityParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetOutstandingRpcsPerChannel() int32 {
-	if m != nil {
-		return m.OutstandingRpcsPerChannel
+func (x *ClientConfig) GetOutstandingRpcsPerChannel() int32 {
+	if x != nil {
+		return x.OutstandingRpcsPerChannel
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetClientChannels() int32 {
-	if m != nil {
-		return m.ClientChannels
+func (x *ClientConfig) GetClientChannels() int32 {
+	if x != nil {
+		return x.ClientChannels
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetAsyncClientThreads() int32 {
-	if m != nil {
-		return m.AsyncClientThreads
+func (x *ClientConfig) GetAsyncClientThreads() int32 {
+	if x != nil {
+		return x.AsyncClientThreads
 	}
 	return 0
 }
 
-func (m *ClientConfig) GetRpcType() RpcType {
-	if m != nil {
-		return m.RpcType
+func (x *ClientConfig) GetRpcType() RpcType {
+	if x != nil {
+		return x.RpcType
 	}
 	return RpcType_UNARY
 }
 
-func (m *ClientConfig) GetLoadParams() *LoadParams {
-	if m != nil {
-		return m.LoadParams
+func (x *ClientConfig) GetLoadParams() *LoadParams {
+	if x != nil {
+		return x.LoadParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetPayloadConfig() *PayloadConfig {
-	if m != nil {
-		return m.PayloadConfig
+func (x *ClientConfig) GetPayloadConfig() *PayloadConfig {
+	if x != nil {
+		return x.PayloadConfig
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetHistogramParams() *HistogramParams {
-	if m != nil {
-		return m.HistogramParams
+func (x *ClientConfig) GetHistogramParams() *HistogramParams {
+	if x != nil {
+		return x.HistogramParams
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetCoreList() []int32 {
-	if m != nil {
-		return m.CoreList
+func (x *ClientConfig) GetCoreList() []int32 {
+	if x != nil {
+		return x.CoreList
 	}
 	return nil
 }
 
-func (m *ClientConfig) GetCoreLimit() int32 {
-	if m != nil {
-		return m.CoreLimit
+func (x *ClientConfig) GetCoreLimit() int32 {
+	if x != nil {
+		return x.CoreLimit
 	}
 	return 0
 }
 
 type ClientStatus struct {
-	Stats                *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Stats *ClientStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
 }
 
-func (m *ClientStatus) Reset()         { *m = ClientStatus{} }
-func (m *ClientStatus) String() string { return proto.CompactTextString(m) }
-func (*ClientStatus) ProtoMessage()    {}
+func (x *ClientStatus) Reset() {
+	*x = ClientStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStatus) ProtoMessage() {}
+
+func (x *ClientStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStatus.ProtoReflect.Descriptor instead.
 func (*ClientStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{8}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *ClientStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStatus.Unmarshal(m, b)
-}
-func (m *ClientStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStatus.Marshal(b, m, deterministic)
-}
-func (m *ClientStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStatus.Merge(m, src)
-}
-func (m *ClientStatus) XXX_Size() int {
-	return xxx_messageInfo_ClientStatus.Size(m)
-}
-func (m *ClientStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStatus proto.InternalMessageInfo
-
-func (m *ClientStatus) GetStats() *ClientStats {
-	if m != nil {
-		return m.Stats
+func (x *ClientStatus) GetStats() *ClientStats {
+	if x != nil {
+		return x.Stats
 	}
 	return nil
 }
 
 // Request current stats
 type Mark struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// if true, the stats will be reset after taking their snapshot.
-	Reset_               bool     `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Reset_ bool `protobuf:"varint,1,opt,name=reset,proto3" json:"reset,omitempty"`
 }
 
-func (m *Mark) Reset()         { *m = Mark{} }
-func (m *Mark) String() string { return proto.CompactTextString(m) }
-func (*Mark) ProtoMessage()    {}
+func (x *Mark) Reset() {
+	*x = Mark{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Mark) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Mark) ProtoMessage() {}
+
+func (x *Mark) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Mark.ProtoReflect.Descriptor instead.
 func (*Mark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{9}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *Mark) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Mark.Unmarshal(m, b)
-}
-func (m *Mark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Mark.Marshal(b, m, deterministic)
-}
-func (m *Mark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Mark.Merge(m, src)
-}
-func (m *Mark) XXX_Size() int {
-	return xxx_messageInfo_Mark.Size(m)
-}
-func (m *Mark) XXX_DiscardUnknown() {
-	xxx_messageInfo_Mark.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Mark proto.InternalMessageInfo
-
-func (m *Mark) GetReset_() bool {
-	if m != nil {
-		return m.Reset_
+func (x *Mark) GetReset_() bool {
+	if x != nil {
+		return x.Reset_
 	}
 	return false
 }
 
 type ClientArgs struct {
-	// Types that are valid to be assigned to Argtype:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Argtype:
 	//	*ClientArgs_Setup
 	//	*ClientArgs_Mark
-	Argtype              isClientArgs_Argtype `protobuf_oneof:"argtype"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Argtype isClientArgs_Argtype `protobuf_oneof:"argtype"`
 }
 
-func (m *ClientArgs) Reset()         { *m = ClientArgs{} }
-func (m *ClientArgs) String() string { return proto.CompactTextString(m) }
-func (*ClientArgs) ProtoMessage()    {}
+func (x *ClientArgs) Reset() {
+	*x = ClientArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientArgs) ProtoMessage() {}
+
+func (x *ClientArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientArgs.ProtoReflect.Descriptor instead.
 func (*ClientArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{10}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *ClientArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientArgs.Unmarshal(m, b)
-}
-func (m *ClientArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientArgs.Marshal(b, m, deterministic)
-}
-func (m *ClientArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientArgs.Merge(m, src)
-}
-func (m *ClientArgs) XXX_Size() int {
-	return xxx_messageInfo_ClientArgs.Size(m)
-}
-func (m *ClientArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientArgs.DiscardUnknown(m)
+func (m *ClientArgs) GetArgtype() isClientArgs_Argtype {
+	if m != nil {
+		return m.Argtype
+	}
+	return nil
 }
 
-var xxx_messageInfo_ClientArgs proto.InternalMessageInfo
+func (x *ClientArgs) GetSetup() *ClientConfig {
+	if x, ok := x.GetArgtype().(*ClientArgs_Setup); ok {
+		return x.Setup
+	}
+	return nil
+}
+
+func (x *ClientArgs) GetMark() *Mark {
+	if x, ok := x.GetArgtype().(*ClientArgs_Mark); ok {
+		return x.Mark
+	}
+	return nil
+}
 
 type isClientArgs_Argtype interface {
 	isClientArgs_Argtype()
@@ -745,36 +924,11 @@
 
 func (*ClientArgs_Mark) isClientArgs_Argtype() {}
 
-func (m *ClientArgs) GetArgtype() isClientArgs_Argtype {
-	if m != nil {
-		return m.Argtype
-	}
-	return nil
-}
-
-func (m *ClientArgs) GetSetup() *ClientConfig {
-	if x, ok := m.GetArgtype().(*ClientArgs_Setup); ok {
-		return x.Setup
-	}
-	return nil
-}
-
-func (m *ClientArgs) GetMark() *Mark {
-	if x, ok := m.GetArgtype().(*ClientArgs_Mark); ok {
-		return x.Mark
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ClientArgs) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ClientArgs_Setup)(nil),
-		(*ClientArgs_Mark)(nil),
-	}
-}
-
 type ServerConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	ServerType     ServerType      `protobuf:"varint,1,opt,name=server_type,json=serverType,proto3,enum=grpc.testing.ServerType" json:"server_type,omitempty"`
 	SecurityParams *SecurityParams `protobuf:"bytes,2,opt,name=security_params,json=securityParams,proto3" json:"security_params,omitempty"`
 	// Port on which to listen. Zero means pick unused port.
@@ -786,120 +940,153 @@
 	// payload config, used in generic server
 	PayloadConfig *PayloadConfig `protobuf:"bytes,9,opt,name=payload_config,json=payloadConfig,proto3" json:"payload_config,omitempty"`
 	// Specify the cores we should run the server on, if desired
-	CoreList             []int32  `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	CoreList []int32 `protobuf:"varint,10,rep,packed,name=core_list,json=coreList,proto3" json:"core_list,omitempty"`
 }
 
-func (m *ServerConfig) Reset()         { *m = ServerConfig{} }
-func (m *ServerConfig) String() string { return proto.CompactTextString(m) }
-func (*ServerConfig) ProtoMessage()    {}
+func (x *ServerConfig) Reset() {
+	*x = ServerConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerConfig) ProtoMessage() {}
+
+func (x *ServerConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerConfig.ProtoReflect.Descriptor instead.
 func (*ServerConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{11}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *ServerConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerConfig.Unmarshal(m, b)
-}
-func (m *ServerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerConfig.Marshal(b, m, deterministic)
-}
-func (m *ServerConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerConfig.Merge(m, src)
-}
-func (m *ServerConfig) XXX_Size() int {
-	return xxx_messageInfo_ServerConfig.Size(m)
-}
-func (m *ServerConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerConfig proto.InternalMessageInfo
-
-func (m *ServerConfig) GetServerType() ServerType {
-	if m != nil {
-		return m.ServerType
+func (x *ServerConfig) GetServerType() ServerType {
+	if x != nil {
+		return x.ServerType
 	}
 	return ServerType_SYNC_SERVER
 }
 
-func (m *ServerConfig) GetSecurityParams() *SecurityParams {
-	if m != nil {
-		return m.SecurityParams
+func (x *ServerConfig) GetSecurityParams() *SecurityParams {
+	if x != nil {
+		return x.SecurityParams
 	}
 	return nil
 }
 
-func (m *ServerConfig) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *ServerConfig) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetAsyncServerThreads() int32 {
-	if m != nil {
-		return m.AsyncServerThreads
+func (x *ServerConfig) GetAsyncServerThreads() int32 {
+	if x != nil {
+		return x.AsyncServerThreads
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetCoreLimit() int32 {
-	if m != nil {
-		return m.CoreLimit
+func (x *ServerConfig) GetCoreLimit() int32 {
+	if x != nil {
+		return x.CoreLimit
 	}
 	return 0
 }
 
-func (m *ServerConfig) GetPayloadConfig() *PayloadConfig {
-	if m != nil {
-		return m.PayloadConfig
+func (x *ServerConfig) GetPayloadConfig() *PayloadConfig {
+	if x != nil {
+		return x.PayloadConfig
 	}
 	return nil
 }
 
-func (m *ServerConfig) GetCoreList() []int32 {
-	if m != nil {
-		return m.CoreList
+func (x *ServerConfig) GetCoreList() []int32 {
+	if x != nil {
+		return x.CoreList
 	}
 	return nil
 }
 
 type ServerArgs struct {
-	// Types that are valid to be assigned to Argtype:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Argtype:
 	//	*ServerArgs_Setup
 	//	*ServerArgs_Mark
-	Argtype              isServerArgs_Argtype `protobuf_oneof:"argtype"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Argtype isServerArgs_Argtype `protobuf_oneof:"argtype"`
 }
 
-func (m *ServerArgs) Reset()         { *m = ServerArgs{} }
-func (m *ServerArgs) String() string { return proto.CompactTextString(m) }
-func (*ServerArgs) ProtoMessage()    {}
+func (x *ServerArgs) Reset() {
+	*x = ServerArgs{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerArgs) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerArgs) ProtoMessage() {}
+
+func (x *ServerArgs) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerArgs.ProtoReflect.Descriptor instead.
 func (*ServerArgs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{12}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *ServerArgs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerArgs.Unmarshal(m, b)
-}
-func (m *ServerArgs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerArgs.Marshal(b, m, deterministic)
-}
-func (m *ServerArgs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerArgs.Merge(m, src)
-}
-func (m *ServerArgs) XXX_Size() int {
-	return xxx_messageInfo_ServerArgs.Size(m)
-}
-func (m *ServerArgs) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerArgs.DiscardUnknown(m)
+func (m *ServerArgs) GetArgtype() isServerArgs_Argtype {
+	if m != nil {
+		return m.Argtype
+	}
+	return nil
 }
 
-var xxx_messageInfo_ServerArgs proto.InternalMessageInfo
+func (x *ServerArgs) GetSetup() *ServerConfig {
+	if x, ok := x.GetArgtype().(*ServerArgs_Setup); ok {
+		return x.Setup
+	}
+	return nil
+}
+
+func (x *ServerArgs) GetMark() *Mark {
+	if x, ok := x.GetArgtype().(*ServerArgs_Mark); ok {
+		return x.Mark
+	}
+	return nil
+}
 
 type isServerArgs_Argtype interface {
 	isServerArgs_Argtype()
@@ -917,196 +1104,201 @@
 
 func (*ServerArgs_Mark) isServerArgs_Argtype() {}
 
-func (m *ServerArgs) GetArgtype() isServerArgs_Argtype {
-	if m != nil {
-		return m.Argtype
-	}
-	return nil
-}
-
-func (m *ServerArgs) GetSetup() *ServerConfig {
-	if x, ok := m.GetArgtype().(*ServerArgs_Setup); ok {
-		return x.Setup
-	}
-	return nil
-}
-
-func (m *ServerArgs) GetMark() *Mark {
-	if x, ok := m.GetArgtype().(*ServerArgs_Mark); ok {
-		return x.Mark
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ServerArgs) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ServerArgs_Setup)(nil),
-		(*ServerArgs_Mark)(nil),
-	}
-}
-
 type ServerStatus struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Stats *ServerStats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"`
 	// the port bound by the server
 	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
 	// Number of cores available to the server
-	Cores                int32    `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Cores int32 `protobuf:"varint,3,opt,name=cores,proto3" json:"cores,omitempty"`
 }
 
-func (m *ServerStatus) Reset()         { *m = ServerStatus{} }
-func (m *ServerStatus) String() string { return proto.CompactTextString(m) }
-func (*ServerStatus) ProtoMessage()    {}
+func (x *ServerStatus) Reset() {
+	*x = ServerStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerStatus) ProtoMessage() {}
+
+func (x *ServerStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerStatus.ProtoReflect.Descriptor instead.
 func (*ServerStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{13}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *ServerStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerStatus.Unmarshal(m, b)
-}
-func (m *ServerStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerStatus.Marshal(b, m, deterministic)
-}
-func (m *ServerStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerStatus.Merge(m, src)
-}
-func (m *ServerStatus) XXX_Size() int {
-	return xxx_messageInfo_ServerStatus.Size(m)
-}
-func (m *ServerStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerStatus proto.InternalMessageInfo
-
-func (m *ServerStatus) GetStats() *ServerStats {
-	if m != nil {
-		return m.Stats
+func (x *ServerStatus) GetStats() *ServerStats {
+	if x != nil {
+		return x.Stats
 	}
 	return nil
 }
 
-func (m *ServerStatus) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *ServerStatus) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *ServerStatus) GetCores() int32 {
-	if m != nil {
-		return m.Cores
+func (x *ServerStatus) GetCores() int32 {
+	if x != nil {
+		return x.Cores
 	}
 	return 0
 }
 
 type CoreRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *CoreRequest) Reset()         { *m = CoreRequest{} }
-func (m *CoreRequest) String() string { return proto.CompactTextString(m) }
-func (*CoreRequest) ProtoMessage()    {}
+func (x *CoreRequest) Reset() {
+	*x = CoreRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CoreRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreRequest) ProtoMessage() {}
+
+func (x *CoreRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreRequest.ProtoReflect.Descriptor instead.
 func (*CoreRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{14}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *CoreRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreRequest.Unmarshal(m, b)
-}
-func (m *CoreRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreRequest.Marshal(b, m, deterministic)
-}
-func (m *CoreRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreRequest.Merge(m, src)
-}
-func (m *CoreRequest) XXX_Size() int {
-	return xxx_messageInfo_CoreRequest.Size(m)
-}
-func (m *CoreRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreRequest proto.InternalMessageInfo
-
 type CoreResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Number of cores available on the server
-	Cores                int32    `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Cores int32 `protobuf:"varint,1,opt,name=cores,proto3" json:"cores,omitempty"`
 }
 
-func (m *CoreResponse) Reset()         { *m = CoreResponse{} }
-func (m *CoreResponse) String() string { return proto.CompactTextString(m) }
-func (*CoreResponse) ProtoMessage()    {}
+func (x *CoreResponse) Reset() {
+	*x = CoreResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CoreResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CoreResponse) ProtoMessage() {}
+
+func (x *CoreResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CoreResponse.ProtoReflect.Descriptor instead.
 func (*CoreResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{15}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *CoreResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CoreResponse.Unmarshal(m, b)
-}
-func (m *CoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CoreResponse.Marshal(b, m, deterministic)
-}
-func (m *CoreResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CoreResponse.Merge(m, src)
-}
-func (m *CoreResponse) XXX_Size() int {
-	return xxx_messageInfo_CoreResponse.Size(m)
-}
-func (m *CoreResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_CoreResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CoreResponse proto.InternalMessageInfo
-
-func (m *CoreResponse) GetCores() int32 {
-	if m != nil {
-		return m.Cores
+func (x *CoreResponse) GetCores() int32 {
+	if x != nil {
+		return x.Cores
 	}
 	return 0
 }
 
 type Void struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *Void) Reset()         { *m = Void{} }
-func (m *Void) String() string { return proto.CompactTextString(m) }
-func (*Void) ProtoMessage()    {}
+func (x *Void) Reset() {
+	*x = Void{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Void) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Void) ProtoMessage() {}
+
+func (x *Void) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Void.ProtoReflect.Descriptor instead.
 func (*Void) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{16}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *Void) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Void.Unmarshal(m, b)
-}
-func (m *Void) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Void.Marshal(b, m, deterministic)
-}
-func (m *Void) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Void.Merge(m, src)
-}
-func (m *Void) XXX_Size() int {
-	return xxx_messageInfo_Void.Size(m)
-}
-func (m *Void) XXX_DiscardUnknown() {
-	xxx_messageInfo_Void.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Void proto.InternalMessageInfo
-
 // A single performance scenario: input to qps_json_driver
 type Scenario struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Human readable name for this scenario
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// Client configuration
@@ -1122,239 +1314,681 @@
 	// Benchmark time, in seconds
 	BenchmarkSeconds int32 `protobuf:"varint,7,opt,name=benchmark_seconds,json=benchmarkSeconds,proto3" json:"benchmark_seconds,omitempty"`
 	// Number of workers to spawn locally (usually zero)
-	SpawnLocalWorkerCount int32    `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	SpawnLocalWorkerCount int32 `protobuf:"varint,8,opt,name=spawn_local_worker_count,json=spawnLocalWorkerCount,proto3" json:"spawn_local_worker_count,omitempty"`
 }
 
-func (m *Scenario) Reset()         { *m = Scenario{} }
-func (m *Scenario) String() string { return proto.CompactTextString(m) }
-func (*Scenario) ProtoMessage()    {}
+func (x *Scenario) Reset() {
+	*x = Scenario{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Scenario) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scenario) ProtoMessage() {}
+
+func (x *Scenario) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Scenario.ProtoReflect.Descriptor instead.
 func (*Scenario) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{17}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *Scenario) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scenario.Unmarshal(m, b)
-}
-func (m *Scenario) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scenario.Marshal(b, m, deterministic)
-}
-func (m *Scenario) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scenario.Merge(m, src)
-}
-func (m *Scenario) XXX_Size() int {
-	return xxx_messageInfo_Scenario.Size(m)
-}
-func (m *Scenario) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scenario.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scenario proto.InternalMessageInfo
-
-func (m *Scenario) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Scenario) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Scenario) GetClientConfig() *ClientConfig {
-	if m != nil {
-		return m.ClientConfig
+func (x *Scenario) GetClientConfig() *ClientConfig {
+	if x != nil {
+		return x.ClientConfig
 	}
 	return nil
 }
 
-func (m *Scenario) GetNumClients() int32 {
-	if m != nil {
-		return m.NumClients
+func (x *Scenario) GetNumClients() int32 {
+	if x != nil {
+		return x.NumClients
 	}
 	return 0
 }
 
-func (m *Scenario) GetServerConfig() *ServerConfig {
-	if m != nil {
-		return m.ServerConfig
+func (x *Scenario) GetServerConfig() *ServerConfig {
+	if x != nil {
+		return x.ServerConfig
 	}
 	return nil
 }
 
-func (m *Scenario) GetNumServers() int32 {
-	if m != nil {
-		return m.NumServers
+func (x *Scenario) GetNumServers() int32 {
+	if x != nil {
+		return x.NumServers
 	}
 	return 0
 }
 
-func (m *Scenario) GetWarmupSeconds() int32 {
-	if m != nil {
-		return m.WarmupSeconds
+func (x *Scenario) GetWarmupSeconds() int32 {
+	if x != nil {
+		return x.WarmupSeconds
 	}
 	return 0
 }
 
-func (m *Scenario) GetBenchmarkSeconds() int32 {
-	if m != nil {
-		return m.BenchmarkSeconds
+func (x *Scenario) GetBenchmarkSeconds() int32 {
+	if x != nil {
+		return x.BenchmarkSeconds
 	}
 	return 0
 }
 
-func (m *Scenario) GetSpawnLocalWorkerCount() int32 {
-	if m != nil {
-		return m.SpawnLocalWorkerCount
+func (x *Scenario) GetSpawnLocalWorkerCount() int32 {
+	if x != nil {
+		return x.SpawnLocalWorkerCount
 	}
 	return 0
 }
 
 // A set of scenarios to be run with qps_json_driver
 type Scenarios struct {
-	Scenarios            []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Scenarios []*Scenario `protobuf:"bytes,1,rep,name=scenarios,proto3" json:"scenarios,omitempty"`
 }
 
-func (m *Scenarios) Reset()         { *m = Scenarios{} }
-func (m *Scenarios) String() string { return proto.CompactTextString(m) }
-func (*Scenarios) ProtoMessage()    {}
+func (x *Scenarios) Reset() {
+	*x = Scenarios{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_control_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Scenarios) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Scenarios) ProtoMessage() {}
+
+func (x *Scenarios) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_control_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Scenarios.ProtoReflect.Descriptor instead.
 func (*Scenarios) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6f4e2bf9f888bddb, []int{18}
+	return file_benchmark_grpc_testing_control_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *Scenarios) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scenarios.Unmarshal(m, b)
-}
-func (m *Scenarios) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scenarios.Marshal(b, m, deterministic)
-}
-func (m *Scenarios) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scenarios.Merge(m, src)
-}
-func (m *Scenarios) XXX_Size() int {
-	return xxx_messageInfo_Scenarios.Size(m)
-}
-func (m *Scenarios) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scenarios.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scenarios proto.InternalMessageInfo
-
-func (m *Scenarios) GetScenarios() []*Scenario {
-	if m != nil {
-		return m.Scenarios
+func (x *Scenarios) GetScenarios() []*Scenario {
+	if x != nil {
+		return x.Scenarios
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.ClientType", ClientType_name, ClientType_value)
-	proto.RegisterEnum("grpc.testing.ServerType", ServerType_name, ServerType_value)
-	proto.RegisterEnum("grpc.testing.RpcType", RpcType_name, RpcType_value)
-	proto.RegisterType((*PoissonParams)(nil), "grpc.testing.PoissonParams")
-	proto.RegisterType((*UniformParams)(nil), "grpc.testing.UniformParams")
-	proto.RegisterType((*DeterministicParams)(nil), "grpc.testing.DeterministicParams")
-	proto.RegisterType((*ParetoParams)(nil), "grpc.testing.ParetoParams")
-	proto.RegisterType((*ClosedLoopParams)(nil), "grpc.testing.ClosedLoopParams")
-	proto.RegisterType((*LoadParams)(nil), "grpc.testing.LoadParams")
-	proto.RegisterType((*SecurityParams)(nil), "grpc.testing.SecurityParams")
-	proto.RegisterType((*ClientConfig)(nil), "grpc.testing.ClientConfig")
-	proto.RegisterType((*ClientStatus)(nil), "grpc.testing.ClientStatus")
-	proto.RegisterType((*Mark)(nil), "grpc.testing.Mark")
-	proto.RegisterType((*ClientArgs)(nil), "grpc.testing.ClientArgs")
-	proto.RegisterType((*ServerConfig)(nil), "grpc.testing.ServerConfig")
-	proto.RegisterType((*ServerArgs)(nil), "grpc.testing.ServerArgs")
-	proto.RegisterType((*ServerStatus)(nil), "grpc.testing.ServerStatus")
-	proto.RegisterType((*CoreRequest)(nil), "grpc.testing.CoreRequest")
-	proto.RegisterType((*CoreResponse)(nil), "grpc.testing.CoreResponse")
-	proto.RegisterType((*Void)(nil), "grpc.testing.Void")
-	proto.RegisterType((*Scenario)(nil), "grpc.testing.Scenario")
-	proto.RegisterType((*Scenarios)(nil), "grpc.testing.Scenarios")
+var File_benchmark_grpc_testing_control_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_control_proto_rawDesc = []byte{
+	0x0a, 0x24, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x1a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x62, 0x65, 0x6e,
+	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0x32, 0x0a, 0x0d, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4c,
+	0x6f, 0x61, 0x64, 0x22, 0x61, 0x0a, 0x0d, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72,
+	0x69, 0x76, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x4c, 0x6f, 0x12, 0x27, 0x0a,
+	0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x5f, 0x68, 0x69,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72,
+	0x69, 0x76, 0x61, 0x6c, 0x48, 0x69, 0x22, 0x38, 0x0a, 0x13, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d,
+	0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x21, 0x0a,
+	0x0c, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x01, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x4c, 0x6f, 0x61, 0x64,
+	0x22, 0x51, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c,
+	0x5f, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x61, 0x72, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a,
+	0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f,
+	0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0a, 0x4c, 0x6f, 0x61, 0x64,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
+	0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65,
+	0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x63,
+	0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x6f, 0x69,
+	0x73, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x6f, 0x69, 0x73, 0x73, 0x6f,
+	0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x73, 0x73,
+	0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x48, 0x00, 0x52, 0x07, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3b, 0x0a, 0x06, 0x64,
+	0x65, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x74, 0x65, 0x72,
+	0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00,
+	0x52, 0x06, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x12, 0x34, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
+	0x74, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x74, 0x6f, 0x42, 0x06,
+	0x0a, 0x04, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x62, 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69,
+	0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x75,
+	0x73, 0x65, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x6f,
+	0x73, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x22, 0x8a, 0x05, 0x0a, 0x0c, 0x43,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65,
+	0x74, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a,
+	0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6f, 0x75, 0x74, 0x73, 0x74, 0x61, 0x6e, 0x64,
+	0x69, 0x6e, 0x67, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6f, 0x75, 0x74, 0x73,
+	0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x70, 0x63, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
+	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x30,
+	0x0a, 0x14, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74,
+	0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x73,
+	0x79, 0x6e, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73,
+	0x12, 0x30, 0x0a, 0x08, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x72, 0x70, 0x63, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x39, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a,
+	0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
+	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x12, 0x48, 0x0a, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x70,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
+	0x67, 0x72, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x68, 0x69, 0x73, 0x74,
+	0x6f, 0x67, 0x72, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63,
+	0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08,
+	0x63, 0x6f, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65,
+	0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f,
+	0x72, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3f, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x1c, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b,
+	0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+	0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61,
+	0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0xd6, 0x02,
+	0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39,
+	0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x73, 0x65, 0x63,
+	0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
+	0x70, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x12, 0x61, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
+	0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6c,
+	0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x72, 0x65,
+	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x72,
+	0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x63, 0x6f,
+	0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x41, 0x72, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+	0x00, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61,
+	0x72, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x72, 0x67, 0x74, 0x79, 0x70, 0x65, 0x22, 0x69, 0x0a,
+	0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x0a,
+	0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x43, 0x6f, 0x72, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x24, 0x0a, 0x0c, 0x43, 0x6f, 0x72, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x06, 0x0a,
+	0x04, 0x56, 0x6f, 0x69, 0x64, 0x22, 0xef, 0x02, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72,
+	0x69, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69,
+	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x63,
+	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75,
+	0x6d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x73, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
+	0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x6e, 0x75, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61,
+	0x72, 0x6d, 0x75, 0x70, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0d, 0x77, 0x61, 0x72, 0x6d, 0x75, 0x70, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+	0x73, 0x12, 0x2b, 0x0a, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x73,
+	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x62, 0x65,
+	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x37,
+	0x0a, 0x18, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x77, 0x6f,
+	0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x15, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x57, 0x6f, 0x72, 0x6b,
+	0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x41, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x61,
+	0x72, 0x69, 0x6f, 0x73, 0x12, 0x34, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x52,
+	0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x2a, 0x2f, 0x0a, 0x0a, 0x43, 0x6c,
+	0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e, 0x43,
+	0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53, 0x59,
+	0x4e, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x2a, 0x49, 0x0a, 0x0a, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x59, 0x4e,
+	0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x53,
+	0x59, 0x4e, 0x43, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14,
+	0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x53, 0x45,
+	0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x23, 0x0a, 0x07, 0x52, 0x70, 0x63, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09,
+	0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x42, 0x2f, 0x5a, 0x2d, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/control.proto", fileDescriptor_6f4e2bf9f888bddb)
+var (
+	file_benchmark_grpc_testing_control_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_control_proto_rawDescData = file_benchmark_grpc_testing_control_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_control_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_control_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_control_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_control_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_control_proto_rawDescData
 }
 
-var fileDescriptor_6f4e2bf9f888bddb = []byte{
-	// 1219 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xed, 0x6e, 0xdb, 0x36,
-	0x17, 0xb6, 0x5d, 0xdb, 0xb1, 0x8e, 0x3f, 0xe2, 0x97, 0x6f, 0x3a, 0xa8, 0xe9, 0xc7, 0x5a, 0xad,
-	0xc5, 0x82, 0x0e, 0xb3, 0x0b, 0xaf, 0x40, 0x57, 0xec, 0x47, 0xe1, 0x78, 0x46, 0x1d, 0x20, 0xcd,
-	0x32, 0x3a, 0xed, 0xd0, 0xfd, 0x11, 0x18, 0x99, 0x91, 0x85, 0xca, 0xa2, 0x46, 0x52, 0x2d, 0x72,
-	0x0b, 0xbb, 0xa6, 0x5d, 0xc7, 0x6e, 0x63, 0xb7, 0x30, 0xf0, 0x43, 0x8e, 0xe4, 0xba, 0x68, 0xb6,
-	0xfd, 0x13, 0xcf, 0x79, 0x1e, 0x1e, 0xf2, 0x3c, 0xe7, 0x1c, 0x0a, 0x1e, 0x9e, 0xd3, 0x24, 0x58,
-	0xae, 0x08, 0x7f, 0x37, 0x0c, 0x79, 0x1a, 0xf8, 0x92, 0x0a, 0x19, 0x25, 0xe1, 0x30, 0x60, 0x89,
-	0xe4, 0x2c, 0x1e, 0xa4, 0x9c, 0x49, 0x86, 0x3a, 0xca, 0x37, 0xb0, 0xbe, 0xfd, 0x47, 0x9f, 0xe0,
-	0xa4, 0xe4, 0x32, 0x66, 0x64, 0x21, 0x0c, 0x69, 0xdf, 0xfb, 0x04, 0x4c, 0x48, 0x22, 0x2d, 0xc6,
-	0x1b, 0x41, 0xf7, 0x94, 0x45, 0x42, 0xb0, 0xe4, 0x94, 0x70, 0xb2, 0x12, 0xe8, 0x01, 0x74, 0xd8,
-	0xc5, 0x05, 0xe5, 0x74, 0xe1, 0xab, 0xbd, 0xdc, 0xea, 0xfd, 0xea, 0x41, 0x15, 0xb7, 0xad, 0xed,
-	0x98, 0x91, 0x85, 0x47, 0xa0, 0xfb, 0x3a, 0x89, 0x2e, 0x18, 0x5f, 0x59, 0xce, 0xd7, 0xb0, 0x1b,
-	0x25, 0x92, 0x72, 0xc2, 0x79, 0xf4, 0x9e, 0xc4, 0x7e, 0xcc, 0x2c, 0xad, 0x57, 0x34, 0x1f, 0xb3,
-	0x8f, 0x80, 0xcb, 0xc8, 0xad, 0x7d, 0x0c, 0x9c, 0x45, 0xde, 0xf7, 0xf0, 0xff, 0x1f, 0xa9, 0xa4,
-	0x7c, 0x15, 0x25, 0x91, 0x90, 0x51, 0x70, 0xfd, 0xc3, 0xfd, 0x0c, 0x9d, 0x53, 0xc2, 0xa9, 0x64,
-	0x96, 0xf2, 0x0d, 0xfc, 0xaf, 0x14, 0xf2, 0x9c, 0x08, 0x6a, 0x79, 0xfd, 0xa2, 0xe3, 0x90, 0x08,
-	0x8a, 0xf6, 0xa0, 0x41, 0xe2, 0x74, 0x49, 0xec, 0xa9, 0xcc, 0xc2, 0x43, 0xd0, 0x9f, 0xc4, 0x4c,
-	0xa8, 0x00, 0x2c, 0x35, 0xdb, 0x7a, 0x7f, 0xd4, 0x00, 0x54, 0x3c, 0x1b, 0x65, 0x0c, 0xed, 0x40,
-	0x43, 0xfc, 0x98, 0xb1, 0x54, 0xef, 0xdf, 0x1e, 0xdd, 0x1b, 0x14, 0x55, 0x1b, 0x6c, 0xee, 0x31,
-	0xab, 0x60, 0x08, 0xd6, 0x36, 0xf4, 0x0c, 0x76, 0x52, 0xa3, 0x84, 0x8e, 0xde, 0x1e, 0xdd, 0x2e,
-	0xd3, 0x4b, 0x32, 0xcd, 0x2a, 0x38, 0x47, 0x2b, 0x62, 0x66, 0xe4, 0x70, 0x6f, 0x6c, 0x23, 0x96,
-	0xb4, 0x52, 0x44, 0x8b, 0x46, 0x3f, 0x40, 0x73, 0xa1, 0x93, 0xec, 0xd6, 0x35, 0xef, 0x41, 0x99,
-	0xb7, 0x45, 0x80, 0x59, 0x05, 0x5b, 0x0a, 0x7a, 0x0a, 0xcd, 0x54, 0xe7, 0xd9, 0x6d, 0x68, 0xf2,
-	0xfe, 0xc6, 0x69, 0x0b, 0x1a, 0x28, 0x96, 0xc1, 0x1e, 0x36, 0xa1, 0xae, 0x84, 0xf3, 0xce, 0xa1,
-	0x37, 0xa7, 0x41, 0xc6, 0x23, 0x79, 0x69, 0x33, 0x78, 0x0f, 0xda, 0x99, 0xa0, 0xba, 0x46, 0xfd,
-	0x80, 0xe8, 0x0c, 0xb6, 0xb0, 0x93, 0x09, 0x7a, 0x46, 0x85, 0x9c, 0x10, 0xf4, 0x04, 0xf6, 0x04,
-	0xe5, 0xef, 0x29, 0xf7, 0x97, 0x4c, 0x48, 0x9f, 0xbd, 0xa7, 0x9c, 0x47, 0x0b, 0xaa, 0x73, 0xe5,
-	0x60, 0x64, 0x7c, 0x33, 0x26, 0xe4, 0x4f, 0xd6, 0xe3, 0xfd, 0xde, 0x80, 0xce, 0x24, 0x8e, 0x68,
-	0x22, 0x27, 0x2c, 0xb9, 0x88, 0x42, 0xf4, 0x08, 0x7a, 0x76, 0x0b, 0x49, 0x78, 0x48, 0xa5, 0x70,
-	0xab, 0xf7, 0x6f, 0x1c, 0x38, 0xb8, 0x6b, 0xac, 0x67, 0xc6, 0x88, 0x9e, 0x2b, 0x2d, 0x15, 0xcd,
-	0x97, 0x97, 0xa9, 0x09, 0xd0, 0x1b, 0xb9, 0x9b, 0x5a, 0x2a, 0xc0, 0xd9, 0x65, 0x4a, 0x95, 0x86,
-	0xf9, 0x37, 0x9a, 0xc2, 0xae, 0xb0, 0xd7, 0xf2, 0x53, 0x7d, 0x2f, 0x2b, 0xc9, 0x9d, 0x32, 0xbd,
-	0x7c, 0x77, 0xdc, 0x13, 0xe5, 0x5c, 0xbc, 0x80, 0x3b, 0x2c, 0x93, 0x42, 0x92, 0x64, 0x11, 0x25,
-	0xa1, 0xcf, 0xd3, 0x40, 0xf8, 0x29, 0xe5, 0x7e, 0xb0, 0x24, 0x49, 0x42, 0x63, 0x2d, 0x57, 0x03,
-	0xdf, 0x2a, 0x60, 0x70, 0x1a, 0x88, 0x53, 0xca, 0x27, 0x06, 0xa0, 0xfa, 0xcc, 0x5e, 0xc1, 0x52,
-	0x84, 0x56, 0xa9, 0x81, 0x7b, 0xc6, 0x6c, 0x71, 0x42, 0x65, 0x95, 0x88, 0xcb, 0x24, 0xf0, 0xf3,
-	0x1b, 0x2f, 0x39, 0x25, 0x0b, 0xe1, 0xee, 0x68, 0x34, 0xd2, 0x3e, 0x7b, 0x57, 0xe3, 0x41, 0x4f,
-	0xa0, 0xa5, 0x67, 0x89, 0x4a, 0x4d, 0x4b, 0xa7, 0xe6, 0x66, 0xf9, 0x6e, 0x38, 0x0d, 0x74, 0x5e,
-	0x76, 0xb8, 0xf9, 0x50, 0xf9, 0x54, 0x9a, 0xe7, 0x09, 0x01, 0x9d, 0x90, 0x8d, 0x7c, 0x5e, 0xb5,
-	0x12, 0x86, 0xf8, 0xaa, 0xad, 0x0e, 0xa1, 0x67, 0x67, 0x9a, 0x1f, 0x68, 0x0d, 0xdd, 0xf6, 0xd6,
-	0xd6, 0x30, 0x18, 0x23, 0x33, 0xee, 0xa6, 0xc5, 0x25, 0x9a, 0x41, 0x7f, 0x19, 0x09, 0xc9, 0x42,
-	0x4e, 0x56, 0xf9, 0x19, 0x3a, 0x7a, 0x97, 0xbb, 0xe5, 0x5d, 0x66, 0x39, 0xca, 0x1e, 0x64, 0x77,
-	0x59, 0x36, 0xa0, 0xdb, 0xe0, 0x04, 0x8c, 0x53, 0x3f, 0x8e, 0x84, 0x74, 0xbb, 0xf7, 0x6f, 0x1c,
-	0x34, 0x70, 0x4b, 0x19, 0x8e, 0x23, 0x21, 0xd1, 0x5d, 0x00, 0xeb, 0x5c, 0x45, 0xd2, 0xed, 0xe9,
-	0xfc, 0x39, 0xc6, 0xbb, 0x8a, 0xa4, 0xf7, 0x22, 0xaf, 0xc5, 0xb9, 0x24, 0x32, 0x13, 0x68, 0x08,
-	0x0d, 0x3d, 0x86, 0xed, 0xa8, 0xb8, 0xb5, 0xad, 0xbc, 0x14, 0x54, 0x60, 0x83, 0xf3, 0xee, 0x40,
-	0xfd, 0x15, 0xe1, 0xef, 0xd4, 0x88, 0xe2, 0x54, 0x50, 0x69, 0x3b, 0xc4, 0x2c, 0xbc, 0x0c, 0xc0,
-	0x70, 0xc6, 0x3c, 0x14, 0x68, 0x04, 0x0d, 0x41, 0x65, 0x96, 0xcf, 0xa1, 0xfd, 0x6d, 0x9b, 0x9b,
-	0xec, 0xcc, 0x2a, 0xd8, 0x40, 0xd1, 0x01, 0xd4, 0xd5, 0x4b, 0x61, 0x67, 0x0f, 0x2a, 0x53, 0x54,
-	0xe4, 0x59, 0x05, 0x6b, 0xc4, 0xa1, 0x03, 0x3b, 0x84, 0x87, 0xaa, 0x00, 0xbc, 0x3f, 0x6b, 0xd0,
-	0x99, 0xeb, 0xe6, 0xb1, 0xc9, 0x7e, 0x0e, 0xed, 0xbc, 0xc5, 0x54, 0x81, 0x54, 0xb7, 0xf5, 0x8e,
-	0x21, 0x98, 0xde, 0x11, 0xeb, 0xef, 0x6d, 0xbd, 0x53, 0xfb, 0x17, 0xbd, 0x83, 0xa0, 0x9e, 0x32,
-	0x2e, 0x6d, 0x8f, 0xe8, 0xef, 0xab, 0x2a, 0xcf, 0xcf, 0xb6, 0xa5, 0xca, 0xed, 0xa9, 0x6c, 0x95,
-	0x97, 0xd5, 0x6c, 0x6d, 0xa8, 0xb9, 0xa5, 0x2e, 0x9d, 0x7f, 0x5c, 0x97, 0xa5, 0x6a, 0x82, 0x72,
-	0x35, 0x29, 0x3d, 0xcd, 0x81, 0xae, 0xa1, 0x67, 0x51, 0x80, 0xff, 0xa8, 0x67, 0x94, 0xcb, 0x79,
-	0xad, 0x2a, 0xbd, 0x82, 0xe6, 0x55, 0xba, 0xce, 0x7e, 0xad, 0x90, 0xfd, 0x3d, 0x68, 0xa8, 0x7b,
-	0x99, 0x51, 0xd8, 0xc0, 0x66, 0xe1, 0x75, 0xa1, 0x3d, 0x61, 0x9c, 0x62, 0xfa, 0x5b, 0x46, 0x85,
-	0xf4, 0x1e, 0x42, 0xc7, 0x2c, 0x45, 0xca, 0x12, 0xf3, 0x12, 0x1b, 0x52, 0xb5, 0x48, 0x6a, 0x42,
-	0xfd, 0x0d, 0x8b, 0x16, 0xde, 0x5f, 0x35, 0x68, 0xcd, 0x03, 0x9a, 0x10, 0x1e, 0x31, 0x15, 0x33,
-	0x21, 0x2b, 0x53, 0x6c, 0x0e, 0xd6, 0xdf, 0xe8, 0x05, 0x74, 0xf3, 0x01, 0x68, 0xf4, 0xa9, 0x7d,
-	0xae, 0x13, 0x70, 0x27, 0x28, 0xbe, 0x15, 0x5f, 0x42, 0x3b, 0xc9, 0x56, 0x76, 0x2c, 0xe6, 0x47,
-	0x87, 0x24, 0x5b, 0x19, 0x8e, 0x9a, 0xd1, 0xf6, 0xd9, 0xc8, 0x23, 0xd4, 0x3f, 0xa7, 0x0d, 0xee,
-	0x88, 0x62, 0xab, 0xd8, 0x08, 0xc6, 0x96, 0xcf, 0x67, 0x15, 0xc1, 0x70, 0x84, 0x7a, 0xae, 0x3e,
-	0x10, 0xbe, 0xca, 0x52, 0x5f, 0xd0, 0x80, 0x25, 0x0b, 0xe1, 0x36, 0x35, 0xa6, 0x6b, 0xac, 0x73,
-	0x63, 0x54, 0x3f, 0x38, 0xeb, 0xff, 0xbc, 0x35, 0xd2, 0x54, 0x76, 0x7f, 0xed, 0xc8, 0xc1, 0xcf,
-	0xc0, 0x15, 0x29, 0xf9, 0x90, 0xf8, 0x31, 0x0b, 0x48, 0xec, 0x7f, 0x60, 0xfc, 0x9d, 0xbe, 0x41,
-	0x96, 0xe4, 0x55, 0x7e, 0x53, 0xfb, 0x8f, 0x95, 0xfb, 0x17, 0xed, 0x9d, 0x28, 0xa7, 0x37, 0x06,
-	0x27, 0x4f, 0xb8, 0x40, 0x4f, 0xc1, 0x11, 0xf9, 0x42, 0xbf, 0xa1, 0xed, 0xd1, 0x17, 0x1b, 0xf7,
-	0xb6, 0x6e, 0x7c, 0x05, 0x7c, 0x3c, 0xcc, 0x67, 0x94, 0x6e, 0xf7, 0x5d, 0x68, 0xcf, 0xdf, 0x9e,
-	0x4c, 0xfc, 0xc9, 0xf1, 0xd1, 0xf4, 0xe4, 0xac, 0x5f, 0x41, 0x7d, 0xe8, 0x8c, 0x8b, 0x96, 0xea,
-	0xe3, 0xa3, 0xbc, 0x09, 0x4a, 0x84, 0xf9, 0x14, 0xbf, 0x99, 0xe2, 0x22, 0xc1, 0x5a, 0xaa, 0xc8,
-	0x85, 0x3d, 0x63, 0x79, 0x39, 0x3d, 0x99, 0xe2, 0xa3, 0xb5, 0xa7, 0xf6, 0xf8, 0x2b, 0xd8, 0xb1,
-	0xef, 0x12, 0x72, 0xa0, 0xf1, 0xfa, 0x64, 0x8c, 0xdf, 0xf6, 0x2b, 0xa8, 0x0b, 0xce, 0xfc, 0x0c,
-	0x4f, 0xc7, 0xaf, 0x8e, 0x4e, 0x5e, 0xf6, 0xab, 0x87, 0xc3, 0x5f, 0xbf, 0x0d, 0x19, 0x0b, 0x63,
-	0x3a, 0x08, 0x59, 0x4c, 0x92, 0x70, 0xc0, 0x78, 0xa8, 0xff, 0x9c, 0x87, 0xdb, 0x7f, 0xa4, 0xcf,
-	0x9b, 0xfa, 0x1f, 0xfa, 0xbb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x89, 0xaf, 0xc1, 0xc4,
-	0x0b, 0x00, 0x00,
+var file_benchmark_grpc_testing_control_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_benchmark_grpc_testing_control_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_benchmark_grpc_testing_control_proto_goTypes = []interface{}{
+	(ClientType)(0),             // 0: grpc.testing.ClientType
+	(ServerType)(0),             // 1: grpc.testing.ServerType
+	(RpcType)(0),                // 2: grpc.testing.RpcType
+	(*PoissonParams)(nil),       // 3: grpc.testing.PoissonParams
+	(*UniformParams)(nil),       // 4: grpc.testing.UniformParams
+	(*DeterministicParams)(nil), // 5: grpc.testing.DeterministicParams
+	(*ParetoParams)(nil),        // 6: grpc.testing.ParetoParams
+	(*ClosedLoopParams)(nil),    // 7: grpc.testing.ClosedLoopParams
+	(*LoadParams)(nil),          // 8: grpc.testing.LoadParams
+	(*SecurityParams)(nil),      // 9: grpc.testing.SecurityParams
+	(*ClientConfig)(nil),        // 10: grpc.testing.ClientConfig
+	(*ClientStatus)(nil),        // 11: grpc.testing.ClientStatus
+	(*Mark)(nil),                // 12: grpc.testing.Mark
+	(*ClientArgs)(nil),          // 13: grpc.testing.ClientArgs
+	(*ServerConfig)(nil),        // 14: grpc.testing.ServerConfig
+	(*ServerArgs)(nil),          // 15: grpc.testing.ServerArgs
+	(*ServerStatus)(nil),        // 16: grpc.testing.ServerStatus
+	(*CoreRequest)(nil),         // 17: grpc.testing.CoreRequest
+	(*CoreResponse)(nil),        // 18: grpc.testing.CoreResponse
+	(*Void)(nil),                // 19: grpc.testing.Void
+	(*Scenario)(nil),            // 20: grpc.testing.Scenario
+	(*Scenarios)(nil),           // 21: grpc.testing.Scenarios
+	(*PayloadConfig)(nil),       // 22: grpc.testing.PayloadConfig
+	(*HistogramParams)(nil),     // 23: grpc.testing.HistogramParams
+	(*ClientStats)(nil),         // 24: grpc.testing.ClientStats
+	(*ServerStats)(nil),         // 25: grpc.testing.ServerStats
+}
+var file_benchmark_grpc_testing_control_proto_depIdxs = []int32{
+	7,  // 0: grpc.testing.LoadParams.closed_loop:type_name -> grpc.testing.ClosedLoopParams
+	3,  // 1: grpc.testing.LoadParams.poisson:type_name -> grpc.testing.PoissonParams
+	4,  // 2: grpc.testing.LoadParams.uniform:type_name -> grpc.testing.UniformParams
+	5,  // 3: grpc.testing.LoadParams.determ:type_name -> grpc.testing.DeterministicParams
+	6,  // 4: grpc.testing.LoadParams.pareto:type_name -> grpc.testing.ParetoParams
+	0,  // 5: grpc.testing.ClientConfig.client_type:type_name -> grpc.testing.ClientType
+	9,  // 6: grpc.testing.ClientConfig.security_params:type_name -> grpc.testing.SecurityParams
+	2,  // 7: grpc.testing.ClientConfig.rpc_type:type_name -> grpc.testing.RpcType
+	8,  // 8: grpc.testing.ClientConfig.load_params:type_name -> grpc.testing.LoadParams
+	22, // 9: grpc.testing.ClientConfig.payload_config:type_name -> grpc.testing.PayloadConfig
+	23, // 10: grpc.testing.ClientConfig.histogram_params:type_name -> grpc.testing.HistogramParams
+	24, // 11: grpc.testing.ClientStatus.stats:type_name -> grpc.testing.ClientStats
+	10, // 12: grpc.testing.ClientArgs.setup:type_name -> grpc.testing.ClientConfig
+	12, // 13: grpc.testing.ClientArgs.mark:type_name -> grpc.testing.Mark
+	1,  // 14: grpc.testing.ServerConfig.server_type:type_name -> grpc.testing.ServerType
+	9,  // 15: grpc.testing.ServerConfig.security_params:type_name -> grpc.testing.SecurityParams
+	22, // 16: grpc.testing.ServerConfig.payload_config:type_name -> grpc.testing.PayloadConfig
+	14, // 17: grpc.testing.ServerArgs.setup:type_name -> grpc.testing.ServerConfig
+	12, // 18: grpc.testing.ServerArgs.mark:type_name -> grpc.testing.Mark
+	25, // 19: grpc.testing.ServerStatus.stats:type_name -> grpc.testing.ServerStats
+	10, // 20: grpc.testing.Scenario.client_config:type_name -> grpc.testing.ClientConfig
+	14, // 21: grpc.testing.Scenario.server_config:type_name -> grpc.testing.ServerConfig
+	20, // 22: grpc.testing.Scenarios.scenarios:type_name -> grpc.testing.Scenario
+	23, // [23:23] is the sub-list for method output_type
+	23, // [23:23] is the sub-list for method input_type
+	23, // [23:23] is the sub-list for extension type_name
+	23, // [23:23] is the sub-list for extension extendee
+	0,  // [0:23] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_control_proto_init() }
+func file_benchmark_grpc_testing_control_proto_init() {
+	if File_benchmark_grpc_testing_control_proto != nil {
+		return
+	}
+	file_benchmark_grpc_testing_payloads_proto_init()
+	file_benchmark_grpc_testing_stats_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_control_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PoissonParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*UniformParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*DeterministicParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ParetoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClosedLoopParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SecurityParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Mark); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerArgs); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CoreRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CoreResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Void); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Scenario); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_control_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Scenarios); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[5].OneofWrappers = []interface{}{
+		(*LoadParams_ClosedLoop)(nil),
+		(*LoadParams_Poisson)(nil),
+		(*LoadParams_Uniform)(nil),
+		(*LoadParams_Determ)(nil),
+		(*LoadParams_Pareto)(nil),
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[10].OneofWrappers = []interface{}{
+		(*ClientArgs_Setup)(nil),
+		(*ClientArgs_Mark)(nil),
+	}
+	file_benchmark_grpc_testing_control_proto_msgTypes[12].OneofWrappers = []interface{}{
+		(*ServerArgs_Setup)(nil),
+		(*ServerArgs_Mark)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_control_proto_rawDesc,
+			NumEnums:      3,
+			NumMessages:   19,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_control_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_control_proto_depIdxs,
+		EnumInfos:         file_benchmark_grpc_testing_control_proto_enumTypes,
+		MessageInfos:      file_benchmark_grpc_testing_control_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_control_proto = out.File
+	file_benchmark_grpc_testing_control_proto_rawDesc = nil
+	file_benchmark_grpc_testing_control_proto_goTypes = nil
+	file_benchmark_grpc_testing_control_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/messages.pb.go b/benchmark/grpc_testing/messages.pb.go
index 0fddbc1..924e24e 100644
--- a/benchmark/grpc_testing/messages.pb.go
+++ b/benchmark/grpc_testing/messages.pb.go
@@ -1,24 +1,45 @@
+// Copyright 2016 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.
+
+// Message definitions to be used by integration test service definitions.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/messages.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The type of payload that should be returned.
 type PayloadType int32
@@ -32,24 +53,45 @@
 	PayloadType_RANDOM PayloadType = 2
 )
 
-var PayloadType_name = map[int32]string{
-	0: "COMPRESSABLE",
-	1: "UNCOMPRESSABLE",
-	2: "RANDOM",
-}
+// Enum value maps for PayloadType.
+var (
+	PayloadType_name = map[int32]string{
+		0: "COMPRESSABLE",
+		1: "UNCOMPRESSABLE",
+		2: "RANDOM",
+	}
+	PayloadType_value = map[string]int32{
+		"COMPRESSABLE":   0,
+		"UNCOMPRESSABLE": 1,
+		"RANDOM":         2,
+	}
+)
 
-var PayloadType_value = map[string]int32{
-	"COMPRESSABLE":   0,
-	"UNCOMPRESSABLE": 1,
-	"RANDOM":         2,
+func (x PayloadType) Enum() *PayloadType {
+	p := new(PayloadType)
+	*p = x
+	return p
 }
 
 func (x PayloadType) String() string {
-	return proto.EnumName(PayloadType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PayloadType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_messages_proto_enumTypes[0].Descriptor()
+}
+
+func (PayloadType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_messages_proto_enumTypes[0]
+}
+
+func (x PayloadType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PayloadType.Descriptor instead.
 func (PayloadType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{0}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
 }
 
 // Compression algorithms
@@ -62,72 +104,101 @@
 	CompressionType_DEFLATE CompressionType = 2
 )
 
-var CompressionType_name = map[int32]string{
-	0: "NONE",
-	1: "GZIP",
-	2: "DEFLATE",
-}
+// Enum value maps for CompressionType.
+var (
+	CompressionType_name = map[int32]string{
+		0: "NONE",
+		1: "GZIP",
+		2: "DEFLATE",
+	}
+	CompressionType_value = map[string]int32{
+		"NONE":    0,
+		"GZIP":    1,
+		"DEFLATE": 2,
+	}
+)
 
-var CompressionType_value = map[string]int32{
-	"NONE":    0,
-	"GZIP":    1,
-	"DEFLATE": 2,
+func (x CompressionType) Enum() *CompressionType {
+	p := new(CompressionType)
+	*p = x
+	return p
 }
 
 func (x CompressionType) String() string {
-	return proto.EnumName(CompressionType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (CompressionType) Descriptor() protoreflect.EnumDescriptor {
+	return file_benchmark_grpc_testing_messages_proto_enumTypes[1].Descriptor()
+}
+
+func (CompressionType) Type() protoreflect.EnumType {
+	return &file_benchmark_grpc_testing_messages_proto_enumTypes[1]
+}
+
+func (x CompressionType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use CompressionType.Descriptor instead.
 func (CompressionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{1}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
 }
 
 // A block of data, to simply increase gRPC message size.
 type Payload struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The type of data in body.
 	Type PayloadType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.PayloadType" json:"type,omitempty"`
 	// Primary contents of payload.
-	Body                 []byte   `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
 }
 
-func (m *Payload) Reset()         { *m = Payload{} }
-func (m *Payload) String() string { return proto.CompactTextString(m) }
-func (*Payload) ProtoMessage()    {}
+func (x *Payload) Reset() {
+	*x = Payload{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Payload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Payload) ProtoMessage() {}
+
+func (x *Payload) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Payload.ProtoReflect.Descriptor instead.
 func (*Payload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{0}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Payload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Payload.Unmarshal(m, b)
-}
-func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Payload.Marshal(b, m, deterministic)
-}
-func (m *Payload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Payload.Merge(m, src)
-}
-func (m *Payload) XXX_Size() int {
-	return xxx_messageInfo_Payload.Size(m)
-}
-func (m *Payload) XXX_DiscardUnknown() {
-	xxx_messageInfo_Payload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Payload proto.InternalMessageInfo
-
-func (m *Payload) GetType() PayloadType {
-	if m != nil {
-		return m.Type
+func (x *Payload) GetType() PayloadType {
+	if x != nil {
+		return x.Type
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *Payload) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *Payload) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
@@ -135,54 +206,66 @@
 // A protobuf representation for grpc status. This is used by test
 // clients to specify a status that the server should attempt to return.
 type EchoStatus struct {
-	Code                 int32    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int32  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *EchoStatus) Reset()         { *m = EchoStatus{} }
-func (m *EchoStatus) String() string { return proto.CompactTextString(m) }
-func (*EchoStatus) ProtoMessage()    {}
+func (x *EchoStatus) Reset() {
+	*x = EchoStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EchoStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EchoStatus) ProtoMessage() {}
+
+func (x *EchoStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EchoStatus.ProtoReflect.Descriptor instead.
 func (*EchoStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{1}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EchoStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EchoStatus.Unmarshal(m, b)
-}
-func (m *EchoStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EchoStatus.Marshal(b, m, deterministic)
-}
-func (m *EchoStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EchoStatus.Merge(m, src)
-}
-func (m *EchoStatus) XXX_Size() int {
-	return xxx_messageInfo_EchoStatus.Size(m)
-}
-func (m *EchoStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_EchoStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EchoStatus proto.InternalMessageInfo
-
-func (m *EchoStatus) GetCode() int32 {
-	if m != nil {
-		return m.Code
+func (x *EchoStatus) GetCode() int32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *EchoStatus) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EchoStatus) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 // Unary request.
 type SimpleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, server randomly chooses one from other formats.
 	ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
@@ -198,282 +281,322 @@
 	// Compression algorithm to be used by the server for the response (stream)
 	ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,proto3,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"`
 	// Whether server should return a given status
-	ResponseStatus       *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
 }
 
-func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
-func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
-func (*SimpleRequest) ProtoMessage()    {}
+func (x *SimpleRequest) Reset() {
+	*x = SimpleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleRequest) ProtoMessage() {}
+
+func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
 func (*SimpleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{2}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
-}
-func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
-}
-func (m *SimpleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleRequest.Merge(m, src)
-}
-func (m *SimpleRequest) XXX_Size() int {
-	return xxx_messageInfo_SimpleRequest.Size(m)
-}
-func (m *SimpleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
-
-func (m *SimpleRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *SimpleRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *SimpleRequest) GetResponseSize() int32 {
-	if m != nil {
-		return m.ResponseSize
+func (x *SimpleRequest) GetResponseSize() int32 {
+	if x != nil {
+		return x.ResponseSize
 	}
 	return 0
 }
 
-func (m *SimpleRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleRequest) GetFillUsername() bool {
-	if m != nil {
-		return m.FillUsername
+func (x *SimpleRequest) GetFillUsername() bool {
+	if x != nil {
+		return x.FillUsername
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetFillOauthScope() bool {
-	if m != nil {
-		return m.FillOauthScope
+func (x *SimpleRequest) GetFillOauthScope() bool {
+	if x != nil {
+		return x.FillOauthScope
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetResponseCompression() CompressionType {
-	if m != nil {
-		return m.ResponseCompression
+func (x *SimpleRequest) GetResponseCompression() CompressionType {
+	if x != nil {
+		return x.ResponseCompression
 	}
 	return CompressionType_NONE
 }
 
-func (m *SimpleRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *SimpleRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
 // Unary response, as configured by the request.
 type SimpleResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase message size.
 	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 	// The user the request came from, for verifying authentication was
 	// successful when the client expected it.
 	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
 	// OAuth scope.
-	OauthScope           string   `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
 }
 
-func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
-func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
-func (*SimpleResponse) ProtoMessage()    {}
+func (x *SimpleResponse) Reset() {
+	*x = SimpleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleResponse) ProtoMessage() {}
+
+func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
 func (*SimpleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{3}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
-}
-func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
-}
-func (m *SimpleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleResponse.Merge(m, src)
-}
-func (m *SimpleResponse) XXX_Size() int {
-	return xxx_messageInfo_SimpleResponse.Size(m)
-}
-func (m *SimpleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
-
-func (m *SimpleResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleResponse) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *SimpleResponse) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetOauthScope() string {
-	if m != nil {
-		return m.OauthScope
+func (x *SimpleResponse) GetOauthScope() string {
+	if x != nil {
+		return x.OauthScope
 	}
 	return ""
 }
 
 // Client-streaming request.
 type StreamingInputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Optional input payload sent along with the request.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingInputCallRequest) Reset()         { *m = StreamingInputCallRequest{} }
-func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallRequest) ProtoMessage()    {}
+func (x *StreamingInputCallRequest) Reset() {
+	*x = StreamingInputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallRequest) ProtoMessage() {}
+
+func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{4}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *StreamingInputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingInputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallRequest.Merge(m, src)
-}
-func (m *StreamingInputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallRequest.Size(m)
-}
-func (m *StreamingInputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingInputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingInputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 // Client-streaming response.
 type StreamingInputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Aggregated size of payloads received from the client.
-	AggregatedPayloadSize int32    `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
 }
 
-func (m *StreamingInputCallResponse) Reset()         { *m = StreamingInputCallResponse{} }
-func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallResponse) ProtoMessage()    {}
+func (x *StreamingInputCallResponse) Reset() {
+	*x = StreamingInputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallResponse) ProtoMessage() {}
+
+func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{5}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *StreamingInputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingInputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallResponse.Merge(m, src)
-}
-func (m *StreamingInputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallResponse.Size(m)
-}
-func (m *StreamingInputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
-	if m != nil {
-		return m.AggregatedPayloadSize
+func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
+	if x != nil {
+		return x.AggregatedPayloadSize
 	}
 	return 0
 }
 
 // Configuration for a particular response.
 type ResponseParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload sizes in responses from the server.
 	// If response_type is COMPRESSABLE, this denotes the size before compression.
 	Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
 	// Desired interval between consecutive responses in the response stream in
 	// microseconds.
-	IntervalUs           int32    `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
 }
 
-func (m *ResponseParameters) Reset()         { *m = ResponseParameters{} }
-func (m *ResponseParameters) String() string { return proto.CompactTextString(m) }
-func (*ResponseParameters) ProtoMessage()    {}
+func (x *ResponseParameters) Reset() {
+	*x = ResponseParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ResponseParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResponseParameters) ProtoMessage() {}
+
+func (x *ResponseParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead.
 func (*ResponseParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{6}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ResponseParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResponseParameters.Unmarshal(m, b)
-}
-func (m *ResponseParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResponseParameters.Marshal(b, m, deterministic)
-}
-func (m *ResponseParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResponseParameters.Merge(m, src)
-}
-func (m *ResponseParameters) XXX_Size() int {
-	return xxx_messageInfo_ResponseParameters.Size(m)
-}
-func (m *ResponseParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResponseParameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResponseParameters proto.InternalMessageInfo
-
-func (m *ResponseParameters) GetSize() int32 {
-	if m != nil {
-		return m.Size
+func (x *ResponseParameters) GetSize() int32 {
+	if x != nil {
+		return x.Size
 	}
 	return 0
 }
 
-func (m *ResponseParameters) GetIntervalUs() int32 {
-	if m != nil {
-		return m.IntervalUs
+func (x *ResponseParameters) GetIntervalUs() int32 {
+	if x != nil {
+		return x.IntervalUs
 	}
 	return 0
 }
 
 // Server-streaming request.
 type StreamingOutputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, the payload from each response in the stream
 	// might be of different types. This is to simulate a mixed type of payload
@@ -486,109 +609,121 @@
 	// Compression algorithm to be used by the server for the response (stream)
 	ResponseCompression CompressionType `protobuf:"varint,6,opt,name=response_compression,json=responseCompression,proto3,enum=grpc.testing.CompressionType" json:"response_compression,omitempty"`
 	// Whether server should return a given status
-	ResponseStatus       *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
 }
 
-func (m *StreamingOutputCallRequest) Reset()         { *m = StreamingOutputCallRequest{} }
-func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallRequest) ProtoMessage()    {}
+func (x *StreamingOutputCallRequest) Reset() {
+	*x = StreamingOutputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallRequest) ProtoMessage() {}
+
+func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{7}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *StreamingOutputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallRequest.Merge(m, src)
-}
-func (m *StreamingOutputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallRequest.Size(m)
-}
-func (m *StreamingOutputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingOutputCallRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *StreamingOutputCallRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
-	if m != nil {
-		return m.ResponseParameters
+func (x *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
+	if x != nil {
+		return x.ResponseParameters
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetResponseCompression() CompressionType {
-	if m != nil {
-		return m.ResponseCompression
+func (x *StreamingOutputCallRequest) GetResponseCompression() CompressionType {
+	if x != nil {
+		return x.ResponseCompression
 	}
 	return CompressionType_NONE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
 // Server-streaming response, as configured by the request and parameters.
 type StreamingOutputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase response size.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingOutputCallResponse) Reset()         { *m = StreamingOutputCallResponse{} }
-func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallResponse) ProtoMessage()    {}
+func (x *StreamingOutputCallResponse) Reset() {
+	*x = StreamingOutputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallResponse) ProtoMessage() {}
+
+func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{8}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *StreamingOutputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallResponse.Merge(m, src)
-}
-func (m *StreamingOutputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallResponse.Size(m)
-}
-func (m *StreamingOutputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingOutputCallResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
@@ -596,40 +731,48 @@
 // For reconnect interop test only.
 // Client tells server what reconnection parameters it used.
 type ReconnectParams struct {
-	MaxReconnectBackoffMs int32    `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs,proto3" json:"max_reconnect_backoff_ms,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	MaxReconnectBackoffMs int32 `protobuf:"varint,1,opt,name=max_reconnect_backoff_ms,json=maxReconnectBackoffMs,proto3" json:"max_reconnect_backoff_ms,omitempty"`
 }
 
-func (m *ReconnectParams) Reset()         { *m = ReconnectParams{} }
-func (m *ReconnectParams) String() string { return proto.CompactTextString(m) }
-func (*ReconnectParams) ProtoMessage()    {}
+func (x *ReconnectParams) Reset() {
+	*x = ReconnectParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ReconnectParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconnectParams) ProtoMessage() {}
+
+func (x *ReconnectParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconnectParams.ProtoReflect.Descriptor instead.
 func (*ReconnectParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{9}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *ReconnectParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReconnectParams.Unmarshal(m, b)
-}
-func (m *ReconnectParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReconnectParams.Marshal(b, m, deterministic)
-}
-func (m *ReconnectParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReconnectParams.Merge(m, src)
-}
-func (m *ReconnectParams) XXX_Size() int {
-	return xxx_messageInfo_ReconnectParams.Size(m)
-}
-func (m *ReconnectParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReconnectParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ReconnectParams proto.InternalMessageInfo
-
-func (m *ReconnectParams) GetMaxReconnectBackoffMs() int32 {
-	if m != nil {
-		return m.MaxReconnectBackoffMs
+func (x *ReconnectParams) GetMaxReconnectBackoffMs() int32 {
+	if x != nil {
+		return x.MaxReconnectBackoffMs
 	}
 	return 0
 }
@@ -638,116 +781,380 @@
 // Server tells client whether its reconnects are following the spec and the
 // reconnect backoffs it saw.
 type ReconnectInfo struct {
-	Passed               bool     `protobuf:"varint,1,opt,name=passed,proto3" json:"passed,omitempty"`
-	BackoffMs            []int32  `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs,proto3" json:"backoff_ms,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Passed    bool    `protobuf:"varint,1,opt,name=passed,proto3" json:"passed,omitempty"`
+	BackoffMs []int32 `protobuf:"varint,2,rep,packed,name=backoff_ms,json=backoffMs,proto3" json:"backoff_ms,omitempty"`
 }
 
-func (m *ReconnectInfo) Reset()         { *m = ReconnectInfo{} }
-func (m *ReconnectInfo) String() string { return proto.CompactTextString(m) }
-func (*ReconnectInfo) ProtoMessage()    {}
+func (x *ReconnectInfo) Reset() {
+	*x = ReconnectInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ReconnectInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReconnectInfo) ProtoMessage() {}
+
+func (x *ReconnectInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_messages_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ReconnectInfo.ProtoReflect.Descriptor instead.
 func (*ReconnectInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7e3146bec7fa4346, []int{10}
+	return file_benchmark_grpc_testing_messages_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *ReconnectInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ReconnectInfo.Unmarshal(m, b)
-}
-func (m *ReconnectInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ReconnectInfo.Marshal(b, m, deterministic)
-}
-func (m *ReconnectInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReconnectInfo.Merge(m, src)
-}
-func (m *ReconnectInfo) XXX_Size() int {
-	return xxx_messageInfo_ReconnectInfo.Size(m)
-}
-func (m *ReconnectInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_ReconnectInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ReconnectInfo proto.InternalMessageInfo
-
-func (m *ReconnectInfo) GetPassed() bool {
-	if m != nil {
-		return m.Passed
+func (x *ReconnectInfo) GetPassed() bool {
+	if x != nil {
+		return x.Passed
 	}
 	return false
 }
 
-func (m *ReconnectInfo) GetBackoffMs() []int32 {
-	if m != nil {
-		return m.BackoffMs
+func (x *ReconnectInfo) GetBackoffMs() []int32 {
+	if x != nil {
+		return x.BackoffMs
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value)
-	proto.RegisterEnum("grpc.testing.CompressionType", CompressionType_name, CompressionType_value)
-	proto.RegisterType((*Payload)(nil), "grpc.testing.Payload")
-	proto.RegisterType((*EchoStatus)(nil), "grpc.testing.EchoStatus")
-	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
-	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
-	proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest")
-	proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse")
-	proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters")
-	proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest")
-	proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse")
-	proto.RegisterType((*ReconnectParams)(nil), "grpc.testing.ReconnectParams")
-	proto.RegisterType((*ReconnectInfo)(nil), "grpc.testing.ReconnectInfo")
+var File_benchmark_grpc_testing_messages_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_messages_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4c, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+	0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62,
+	0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22,
+	0x89, 0x03, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79,
+	0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07,
+	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x6c, 0x5f,
+	0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
+	0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10,
+	0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x4f, 0x61, 0x75, 0x74,
+	0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54,
+	0x79, 0x70, 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6d,
+	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7e, 0x0a, 0x0e, 0x53,
+	0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a,
+	0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a,
+	0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x61,
+	0x75, 0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x4c, 0x0a, 0x19, 0x53,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c,
+	0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74, 0x72,
+	0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, 0x65,
+	0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67,
+	0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x22,
+	0x49, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0xf5, 0x02, 0x0a, 0x1a, 0x53,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61,
+	0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
+	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x07,
+	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x50, 0x0a,
+	0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65,
+	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72,
+	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+	0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74,
+	0x75, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f,
+	0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x22, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x63,
+	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6d,
+	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x63, 0x6f,
+	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x73, 0x22, 0x46,
+	0x0a, 0x0d, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
+	0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x6f,
+	0x66, 0x66, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x62, 0x61, 0x63,
+	0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x73, 0x2a, 0x3f, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53,
+	0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, 0x4f, 0x4d,
+	0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52,
+	0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x72,
+	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f,
+	0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x5a, 0x49, 0x50, 0x10, 0x01, 0x12, 0x0b,
+	0x0a, 0x07, 0x44, 0x45, 0x46, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02, 0x42, 0x2f, 0x5a, 0x2d, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f,
+	0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/messages.proto", fileDescriptor_7e3146bec7fa4346)
+var (
+	file_benchmark_grpc_testing_messages_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_messages_proto_rawDescData = file_benchmark_grpc_testing_messages_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_messages_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_messages_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_messages_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_messages_proto_rawDescData
 }
 
-var fileDescriptor_7e3146bec7fa4346 = []byte{
-	// 690 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4b, 0x6f, 0xd3, 0x4c,
-	0x14, 0xfd, 0x9c, 0x77, 0x6f, 0xd2, 0x34, 0x9a, 0x8f, 0x82, 0x5b, 0x54, 0x11, 0x19, 0x21, 0x45,
-	0x95, 0x9a, 0x48, 0x41, 0x02, 0x89, 0x05, 0x28, 0x6d, 0x53, 0x14, 0x94, 0x26, 0xc1, 0x6e, 0x37,
-	0xdd, 0x58, 0x13, 0x67, 0xe2, 0x5a, 0xb5, 0x3d, 0x66, 0x66, 0x82, 0x9a, 0x2e, 0xd8, 0xf3, 0x83,
-	0xd9, 0x23, 0x8f, 0x1f, 0x71, 0xda, 0x2c, 0x5a, 0xd8, 0xb0, 0x9b, 0x39, 0xf7, 0xdc, 0xe3, 0xfb,
-	0x38, 0xd6, 0xc0, 0x9b, 0x29, 0xf1, 0xad, 0x6b, 0x0f, 0xb3, 0x9b, 0x8e, 0xcd, 0x02, 0xcb, 0x14,
-	0x84, 0x0b, 0xc7, 0xb7, 0x3b, 0x1e, 0xe1, 0x1c, 0xdb, 0x84, 0xb7, 0x03, 0x46, 0x05, 0x45, 0xb5,
-	0x30, 0xd8, 0x8e, 0x83, 0xda, 0x10, 0xca, 0x13, 0xbc, 0x74, 0x29, 0x9e, 0xa1, 0x23, 0x28, 0x88,
-	0x65, 0x40, 0x54, 0xa5, 0xa9, 0xb4, 0xea, 0xdd, 0xbd, 0x76, 0x96, 0xd7, 0x8e, 0x49, 0x17, 0xcb,
-	0x80, 0xe8, 0x92, 0x86, 0x10, 0x14, 0xa6, 0x74, 0xb6, 0x54, 0x73, 0x4d, 0xa5, 0x55, 0xd3, 0xe5,
-	0x59, 0xfb, 0x00, 0xd0, 0xb7, 0xae, 0xa9, 0x21, 0xb0, 0x58, 0xf0, 0x90, 0x61, 0xd1, 0x59, 0x24,
-	0x58, 0xd4, 0xe5, 0x19, 0xa9, 0x50, 0x8e, 0xeb, 0x91, 0x89, 0x5b, 0x7a, 0x72, 0xd5, 0x7e, 0xe6,
-	0x61, 0xdb, 0x70, 0xbc, 0xc0, 0x25, 0x3a, 0xf9, 0xb6, 0x20, 0x5c, 0xa0, 0x8f, 0xb0, 0xcd, 0x08,
-	0x0f, 0xa8, 0xcf, 0x89, 0xf9, 0xb8, 0xca, 0x6a, 0x09, 0x3f, 0xbc, 0xa1, 0xd7, 0x99, 0x7c, 0xee,
-	0xdc, 0x45, 0x5f, 0x2c, 0xae, 0x48, 0x86, 0x73, 0x47, 0x50, 0x07, 0xca, 0x41, 0xa4, 0xa0, 0xe6,
-	0x9b, 0x4a, 0xab, 0xda, 0xdd, 0xdd, 0x28, 0xaf, 0x27, 0xac, 0x50, 0x75, 0xee, 0xb8, 0xae, 0xb9,
-	0xe0, 0x84, 0xf9, 0xd8, 0x23, 0x6a, 0xa1, 0xa9, 0xb4, 0x2a, 0x7a, 0x2d, 0x04, 0x2f, 0x63, 0x0c,
-	0xb5, 0xa0, 0x21, 0x49, 0x14, 0x2f, 0xc4, 0xb5, 0xc9, 0x2d, 0x1a, 0x10, 0xb5, 0x28, 0x79, 0xf5,
-	0x10, 0x1f, 0x87, 0xb0, 0x11, 0xa2, 0x68, 0x02, 0xcf, 0xd2, 0x22, 0x2d, 0xea, 0x05, 0x8c, 0x70,
-	0xee, 0x50, 0x5f, 0x2d, 0xc9, 0x5e, 0x0f, 0xd6, 0x8b, 0x39, 0x59, 0x11, 0x64, 0xbf, 0xff, 0x27,
-	0xa9, 0x99, 0x00, 0xea, 0xc1, 0xce, 0xaa, 0x6d, 0xb9, 0x09, 0xb5, 0x2c, 0x3b, 0x53, 0xd7, 0xc5,
-	0x56, 0x9b, 0xd2, 0xeb, 0xe9, 0x48, 0xe4, 0x5d, 0xfb, 0x01, 0xf5, 0x64, 0x15, 0x11, 0x9e, 0x1d,
-	0x93, 0xf2, 0xa8, 0x31, 0xed, 0x43, 0x25, 0x9d, 0x50, 0xb4, 0xe9, 0xf4, 0x8e, 0x5e, 0x41, 0x35,
-	0x3b, 0x98, 0xbc, 0x0c, 0x03, 0x4d, 0x87, 0xa2, 0x0d, 0x61, 0xcf, 0x10, 0x8c, 0x60, 0xcf, 0xf1,
-	0xed, 0x81, 0x1f, 0x2c, 0xc4, 0x09, 0x76, 0xdd, 0xc4, 0x16, 0x4f, 0x2d, 0x45, 0xbb, 0x80, 0xfd,
-	0x4d, 0x6a, 0x71, 0x67, 0xef, 0xe0, 0x05, 0xb6, 0x6d, 0x46, 0x6c, 0x2c, 0xc8, 0xcc, 0x8c, 0x73,
-	0x22, 0xbf, 0x44, 0xc6, 0xdd, 0x5d, 0x85, 0x63, 0xe9, 0xd0, 0x38, 0xda, 0x00, 0x50, 0xa2, 0x31,
-	0xc1, 0x0c, 0x7b, 0x44, 0x10, 0x26, 0x3d, 0x9f, 0x49, 0x95, 0xe7, 0xb0, 0x5d, 0xc7, 0x17, 0x84,
-	0x7d, 0xc7, 0xa1, 0x6b, 0x62, 0x17, 0x42, 0x02, 0x5d, 0x72, 0xed, 0x57, 0x2e, 0x53, 0xe1, 0x78,
-	0x21, 0xee, 0x35, 0xfc, 0xb7, 0xff, 0xc1, 0x57, 0x48, 0x7d, 0x62, 0x06, 0x69, 0xa9, 0x6a, 0xae,
-	0x99, 0x6f, 0x55, 0xbb, 0xcd, 0x75, 0x95, 0x87, 0x2d, 0xe9, 0x88, 0x3d, 0x6c, 0xf3, 0xc9, 0x7f,
-	0xcd, 0x3f, 0x69, 0xf3, 0x11, 0xbc, 0xdc, 0x38, 0xf6, 0x3f, 0xf4, 0xbc, 0xf6, 0x05, 0x76, 0x74,
-	0x62, 0x51, 0xdf, 0x27, 0x96, 0x90, 0xc3, 0xe2, 0xe8, 0x3d, 0xa8, 0x1e, 0xbe, 0x35, 0x59, 0x02,
-	0x9b, 0x53, 0x6c, 0xdd, 0xd0, 0xf9, 0xdc, 0xf4, 0x78, 0x62, 0x2f, 0x0f, 0xdf, 0xa6, 0x59, 0xc7,
-	0x51, 0xf4, 0x9c, 0x6b, 0x67, 0xb0, 0x9d, 0xa2, 0x03, 0x7f, 0x4e, 0xd1, 0x73, 0x28, 0x05, 0x98,
-	0x73, 0x12, 0x15, 0x53, 0xd1, 0xe3, 0x1b, 0x3a, 0x00, 0xc8, 0x68, 0x86, 0x4b, 0x2d, 0xea, 0x5b,
-	0xd3, 0x44, 0xe7, 0xf0, 0x13, 0x54, 0x33, 0xce, 0x40, 0x0d, 0xa8, 0x9d, 0x8c, 0xcf, 0x27, 0x7a,
-	0xdf, 0x30, 0x7a, 0xc7, 0xc3, 0x7e, 0xe3, 0x3f, 0x84, 0xa0, 0x7e, 0x39, 0x5a, 0xc3, 0x14, 0x04,
-	0x50, 0xd2, 0x7b, 0xa3, 0xd3, 0xf1, 0x79, 0x23, 0x77, 0xd8, 0x85, 0x9d, 0x7b, 0xfb, 0x40, 0x15,
-	0x28, 0x8c, 0xc6, 0xa3, 0x30, 0xb9, 0x02, 0x85, 0xcf, 0x57, 0x83, 0x49, 0x43, 0x41, 0x55, 0x28,
-	0x9f, 0xf6, 0xcf, 0x86, 0xbd, 0x8b, 0x7e, 0x23, 0x77, 0xdc, 0xb9, 0x3a, 0xb2, 0x29, 0xb5, 0x5d,
-	0xd2, 0xb6, 0xa9, 0x8b, 0x7d, 0xbb, 0x4d, 0x99, 0x2d, 0x1f, 0xa5, 0xce, 0xe6, 0x37, 0x6a, 0x5a,
-	0x92, 0x6f, 0xd3, 0xdb, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0xde, 0x4b, 0x12, 0xc4, 0x06,
-	0x00, 0x00,
+var file_benchmark_grpc_testing_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_benchmark_grpc_testing_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
+var file_benchmark_grpc_testing_messages_proto_goTypes = []interface{}{
+	(PayloadType)(0),                    // 0: grpc.testing.PayloadType
+	(CompressionType)(0),                // 1: grpc.testing.CompressionType
+	(*Payload)(nil),                     // 2: grpc.testing.Payload
+	(*EchoStatus)(nil),                  // 3: grpc.testing.EchoStatus
+	(*SimpleRequest)(nil),               // 4: grpc.testing.SimpleRequest
+	(*SimpleResponse)(nil),              // 5: grpc.testing.SimpleResponse
+	(*StreamingInputCallRequest)(nil),   // 6: grpc.testing.StreamingInputCallRequest
+	(*StreamingInputCallResponse)(nil),  // 7: grpc.testing.StreamingInputCallResponse
+	(*ResponseParameters)(nil),          // 8: grpc.testing.ResponseParameters
+	(*StreamingOutputCallRequest)(nil),  // 9: grpc.testing.StreamingOutputCallRequest
+	(*StreamingOutputCallResponse)(nil), // 10: grpc.testing.StreamingOutputCallResponse
+	(*ReconnectParams)(nil),             // 11: grpc.testing.ReconnectParams
+	(*ReconnectInfo)(nil),               // 12: grpc.testing.ReconnectInfo
+}
+var file_benchmark_grpc_testing_messages_proto_depIdxs = []int32{
+	0,  // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType
+	0,  // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType
+	2,  // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload
+	1,  // 3: grpc.testing.SimpleRequest.response_compression:type_name -> grpc.testing.CompressionType
+	3,  // 4: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus
+	2,  // 5: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload
+	2,  // 6: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload
+	0,  // 7: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType
+	8,  // 8: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters
+	2,  // 9: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload
+	1,  // 10: grpc.testing.StreamingOutputCallRequest.response_compression:type_name -> grpc.testing.CompressionType
+	3,  // 11: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus
+	2,  // 12: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload
+	13, // [13:13] is the sub-list for method output_type
+	13, // [13:13] is the sub-list for method input_type
+	13, // [13:13] is the sub-list for extension type_name
+	13, // [13:13] is the sub-list for extension extendee
+	0,  // [0:13] is the sub-list for field type_name
+}
+
+func init() { file_benchmark_grpc_testing_messages_proto_init() }
+func file_benchmark_grpc_testing_messages_proto_init() {
+	if File_benchmark_grpc_testing_messages_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Payload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EchoStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResponseParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReconnectParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_messages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ReconnectInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_messages_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   11,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_messages_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_messages_proto_depIdxs,
+		EnumInfos:         file_benchmark_grpc_testing_messages_proto_enumTypes,
+		MessageInfos:      file_benchmark_grpc_testing_messages_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_messages_proto = out.File
+	file_benchmark_grpc_testing_messages_proto_rawDesc = nil
+	file_benchmark_grpc_testing_messages_proto_goTypes = nil
+	file_benchmark_grpc_testing_messages_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/payloads.pb.go b/benchmark/grpc_testing/payloads.pb.go
index c96b7b6..5e63138 100644
--- a/benchmark/grpc_testing/payloads.pb.go
+++ b/benchmark/grpc_testing/payloads.pb.go
@@ -1,185 +1,263 @@
+// Copyright 2016 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/payloads.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ByteBufferParams struct {
-	ReqSize              int32    `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
-	RespSize             int32    `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReqSize  int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
+	RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
 }
 
-func (m *ByteBufferParams) Reset()         { *m = ByteBufferParams{} }
-func (m *ByteBufferParams) String() string { return proto.CompactTextString(m) }
-func (*ByteBufferParams) ProtoMessage()    {}
+func (x *ByteBufferParams) Reset() {
+	*x = ByteBufferParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ByteBufferParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ByteBufferParams) ProtoMessage() {}
+
+func (x *ByteBufferParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ByteBufferParams.ProtoReflect.Descriptor instead.
 func (*ByteBufferParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{0}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ByteBufferParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ByteBufferParams.Unmarshal(m, b)
-}
-func (m *ByteBufferParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ByteBufferParams.Marshal(b, m, deterministic)
-}
-func (m *ByteBufferParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ByteBufferParams.Merge(m, src)
-}
-func (m *ByteBufferParams) XXX_Size() int {
-	return xxx_messageInfo_ByteBufferParams.Size(m)
-}
-func (m *ByteBufferParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ByteBufferParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ByteBufferParams proto.InternalMessageInfo
-
-func (m *ByteBufferParams) GetReqSize() int32 {
-	if m != nil {
-		return m.ReqSize
+func (x *ByteBufferParams) GetReqSize() int32 {
+	if x != nil {
+		return x.ReqSize
 	}
 	return 0
 }
 
-func (m *ByteBufferParams) GetRespSize() int32 {
-	if m != nil {
-		return m.RespSize
+func (x *ByteBufferParams) GetRespSize() int32 {
+	if x != nil {
+		return x.RespSize
 	}
 	return 0
 }
 
 type SimpleProtoParams struct {
-	ReqSize              int32    `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
-	RespSize             int32    `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	ReqSize  int32 `protobuf:"varint,1,opt,name=req_size,json=reqSize,proto3" json:"req_size,omitempty"`
+	RespSize int32 `protobuf:"varint,2,opt,name=resp_size,json=respSize,proto3" json:"resp_size,omitempty"`
 }
 
-func (m *SimpleProtoParams) Reset()         { *m = SimpleProtoParams{} }
-func (m *SimpleProtoParams) String() string { return proto.CompactTextString(m) }
-func (*SimpleProtoParams) ProtoMessage()    {}
+func (x *SimpleProtoParams) Reset() {
+	*x = SimpleProtoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleProtoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleProtoParams) ProtoMessage() {}
+
+func (x *SimpleProtoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleProtoParams.ProtoReflect.Descriptor instead.
 func (*SimpleProtoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{1}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *SimpleProtoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleProtoParams.Unmarshal(m, b)
-}
-func (m *SimpleProtoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleProtoParams.Marshal(b, m, deterministic)
-}
-func (m *SimpleProtoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleProtoParams.Merge(m, src)
-}
-func (m *SimpleProtoParams) XXX_Size() int {
-	return xxx_messageInfo_SimpleProtoParams.Size(m)
-}
-func (m *SimpleProtoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleProtoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleProtoParams proto.InternalMessageInfo
-
-func (m *SimpleProtoParams) GetReqSize() int32 {
-	if m != nil {
-		return m.ReqSize
+func (x *SimpleProtoParams) GetReqSize() int32 {
+	if x != nil {
+		return x.ReqSize
 	}
 	return 0
 }
 
-func (m *SimpleProtoParams) GetRespSize() int32 {
-	if m != nil {
-		return m.RespSize
+func (x *SimpleProtoParams) GetRespSize() int32 {
+	if x != nil {
+		return x.RespSize
 	}
 	return 0
 }
 
 type ComplexProtoParams struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *ComplexProtoParams) Reset()         { *m = ComplexProtoParams{} }
-func (m *ComplexProtoParams) String() string { return proto.CompactTextString(m) }
-func (*ComplexProtoParams) ProtoMessage()    {}
+func (x *ComplexProtoParams) Reset() {
+	*x = ComplexProtoParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ComplexProtoParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ComplexProtoParams) ProtoMessage() {}
+
+func (x *ComplexProtoParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ComplexProtoParams.ProtoReflect.Descriptor instead.
 func (*ComplexProtoParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{2}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ComplexProtoParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ComplexProtoParams.Unmarshal(m, b)
-}
-func (m *ComplexProtoParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ComplexProtoParams.Marshal(b, m, deterministic)
-}
-func (m *ComplexProtoParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ComplexProtoParams.Merge(m, src)
-}
-func (m *ComplexProtoParams) XXX_Size() int {
-	return xxx_messageInfo_ComplexProtoParams.Size(m)
-}
-func (m *ComplexProtoParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_ComplexProtoParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ComplexProtoParams proto.InternalMessageInfo
-
 type PayloadConfig struct {
-	// Types that are valid to be assigned to Payload:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Payload:
 	//	*PayloadConfig_BytebufParams
 	//	*PayloadConfig_SimpleParams
 	//	*PayloadConfig_ComplexParams
-	Payload              isPayloadConfig_Payload `protobuf_oneof:"payload"`
-	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
-	XXX_unrecognized     []byte                  `json:"-"`
-	XXX_sizecache        int32                   `json:"-"`
+	Payload isPayloadConfig_Payload `protobuf_oneof:"payload"`
 }
 
-func (m *PayloadConfig) Reset()         { *m = PayloadConfig{} }
-func (m *PayloadConfig) String() string { return proto.CompactTextString(m) }
-func (*PayloadConfig) ProtoMessage()    {}
+func (x *PayloadConfig) Reset() {
+	*x = PayloadConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PayloadConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PayloadConfig) ProtoMessage() {}
+
+func (x *PayloadConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_payloads_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PayloadConfig.ProtoReflect.Descriptor instead.
 func (*PayloadConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_69438956f5d73a41, []int{3}
+	return file_benchmark_grpc_testing_payloads_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *PayloadConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PayloadConfig.Unmarshal(m, b)
-}
-func (m *PayloadConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PayloadConfig.Marshal(b, m, deterministic)
-}
-func (m *PayloadConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PayloadConfig.Merge(m, src)
-}
-func (m *PayloadConfig) XXX_Size() int {
-	return xxx_messageInfo_PayloadConfig.Size(m)
-}
-func (m *PayloadConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PayloadConfig.DiscardUnknown(m)
+func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload {
+	if m != nil {
+		return m.Payload
+	}
+	return nil
 }
 
-var xxx_messageInfo_PayloadConfig proto.InternalMessageInfo
+func (x *PayloadConfig) GetBytebufParams() *ByteBufferParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_BytebufParams); ok {
+		return x.BytebufParams
+	}
+	return nil
+}
+
+func (x *PayloadConfig) GetSimpleParams() *SimpleProtoParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_SimpleParams); ok {
+		return x.SimpleParams
+	}
+	return nil
+}
+
+func (x *PayloadConfig) GetComplexParams() *ComplexProtoParams {
+	if x, ok := x.GetPayload().(*PayloadConfig_ComplexParams); ok {
+		return x.ComplexParams
+	}
+	return nil
+}
 
 type isPayloadConfig_Payload interface {
 	isPayloadConfig_Payload()
@@ -203,73 +281,151 @@
 
 func (*PayloadConfig_ComplexParams) isPayloadConfig_Payload() {}
 
-func (m *PayloadConfig) GetPayload() isPayloadConfig_Payload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
+var File_benchmark_grpc_testing_payloads_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_payloads_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x4a, 0x0a, 0x10, 0x42, 0x79, 0x74, 0x65, 0x42, 0x75, 0x66,
+	0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x71,
+	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x53, 0x69, 0x7a,
+	0x65, 0x22, 0x4b, 0x0a, 0x11, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x71, 0x53, 0x69, 0x7a,
+	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x14,
+	0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61,
+	0x72, 0x61, 0x6d, 0x73, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x62, 0x75,
+	0x66, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x79,
+	0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00,
+	0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x62, 0x75, 0x66, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
+	0x46, 0x0a, 0x0d, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x70, 0x6c,
+	0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x49, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
+	0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43,
+	0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d,
+	0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61,
+	0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x2f, 0x5a,
+	0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
+	0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func (m *PayloadConfig) GetBytebufParams() *ByteBufferParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_BytebufParams); ok {
-		return x.BytebufParams
-	}
-	return nil
+var (
+	file_benchmark_grpc_testing_payloads_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_payloads_proto_rawDescData = file_benchmark_grpc_testing_payloads_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_payloads_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_payloads_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_payloads_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_payloads_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_payloads_proto_rawDescData
 }
 
-func (m *PayloadConfig) GetSimpleParams() *SimpleProtoParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_SimpleParams); ok {
-		return x.SimpleParams
-	}
-	return nil
+var file_benchmark_grpc_testing_payloads_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_benchmark_grpc_testing_payloads_proto_goTypes = []interface{}{
+	(*ByteBufferParams)(nil),   // 0: grpc.testing.ByteBufferParams
+	(*SimpleProtoParams)(nil),  // 1: grpc.testing.SimpleProtoParams
+	(*ComplexProtoParams)(nil), // 2: grpc.testing.ComplexProtoParams
+	(*PayloadConfig)(nil),      // 3: grpc.testing.PayloadConfig
+}
+var file_benchmark_grpc_testing_payloads_proto_depIdxs = []int32{
+	0, // 0: grpc.testing.PayloadConfig.bytebuf_params:type_name -> grpc.testing.ByteBufferParams
+	1, // 1: grpc.testing.PayloadConfig.simple_params:type_name -> grpc.testing.SimpleProtoParams
+	2, // 2: grpc.testing.PayloadConfig.complex_params:type_name -> grpc.testing.ComplexProtoParams
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
 }
 
-func (m *PayloadConfig) GetComplexParams() *ComplexProtoParams {
-	if x, ok := m.GetPayload().(*PayloadConfig_ComplexParams); ok {
-		return x.ComplexParams
+func init() { file_benchmark_grpc_testing_payloads_proto_init() }
+func file_benchmark_grpc_testing_payloads_proto_init() {
+	if File_benchmark_grpc_testing_payloads_proto != nil {
+		return
 	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*PayloadConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ByteBufferParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleProtoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ComplexProtoParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_payloads_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PayloadConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_benchmark_grpc_testing_payloads_proto_msgTypes[3].OneofWrappers = []interface{}{
 		(*PayloadConfig_BytebufParams)(nil),
 		(*PayloadConfig_SimpleParams)(nil),
 		(*PayloadConfig_ComplexParams)(nil),
 	}
-}
-
-func init() {
-	proto.RegisterType((*ByteBufferParams)(nil), "grpc.testing.ByteBufferParams")
-	proto.RegisterType((*SimpleProtoParams)(nil), "grpc.testing.SimpleProtoParams")
-	proto.RegisterType((*ComplexProtoParams)(nil), "grpc.testing.ComplexProtoParams")
-	proto.RegisterType((*PayloadConfig)(nil), "grpc.testing.PayloadConfig")
-}
-
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/payloads.proto", fileDescriptor_69438956f5d73a41)
-}
-
-var fileDescriptor_69438956f5d73a41 = []byte{
-	// 289 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xc1, 0x4b, 0xc3, 0x30,
-	0x18, 0xc5, 0xd7, 0x89, 0x6e, 0xfb, 0x5c, 0x87, 0x16, 0x0f, 0x8a, 0xa0, 0xa3, 0x20, 0x78, 0x31,
-	0x05, 0xfd, 0x0f, 0x3a, 0xd0, 0xa9, 0x97, 0xd2, 0xdd, 0xbc, 0x94, 0xb4, 0x7e, 0x8d, 0xc5, 0xb6,
-	0xc9, 0x92, 0x0e, 0xec, 0xfe, 0x70, 0xcf, 0x92, 0x34, 0x83, 0xcd, 0x79, 0xf3, 0x9a, 0x97, 0xf7,
-	0xfb, 0xde, 0xe3, 0xc1, 0x4d, 0x8a, 0x75, 0xf6, 0x51, 0x51, 0xf9, 0x19, 0x30, 0x29, 0xb2, 0xa4,
-	0x41, 0xd5, 0x14, 0x35, 0x0b, 0x04, 0x6d, 0x4b, 0x4e, 0xdf, 0x15, 0x11, 0x92, 0x37, 0xdc, 0x1b,
-	0x6b, 0x91, 0x58, 0xd1, 0x7f, 0x81, 0x93, 0xb0, 0x6d, 0x30, 0x5c, 0xe5, 0x39, 0xca, 0x88, 0x4a,
-	0x5a, 0x29, 0xef, 0x02, 0x86, 0x12, 0x97, 0x89, 0x2a, 0xd6, 0x78, 0xee, 0x4c, 0x9d, 0xdb, 0xc3,
-	0x78, 0x20, 0x71, 0xb9, 0x28, 0xd6, 0xe8, 0x5d, 0xc2, 0x48, 0xa2, 0x12, 0x9d, 0xd6, 0x37, 0xda,
-	0x50, 0x3f, 0x68, 0xd1, 0x7f, 0x85, 0xd3, 0x45, 0x51, 0x89, 0x12, 0x23, 0x7d, 0xe8, 0x9f, 0xb0,
-	0x33, 0xf0, 0x66, 0x5c, 0xc3, 0xbe, 0xb6, 0x68, 0xfe, 0xb7, 0x03, 0x6e, 0xd4, 0xf5, 0x99, 0xf1,
-	0x3a, 0x2f, 0x98, 0xf7, 0x04, 0x93, 0xb4, 0x6d, 0x30, 0x5d, 0xe5, 0x89, 0x30, 0x7f, 0xcc, 0x95,
-	0xe3, 0xfb, 0x2b, 0xb2, 0xdd, 0x93, 0xfc, 0x2e, 0x39, 0xef, 0xc5, 0xae, 0xf5, 0xd9, 0xa0, 0x8f,
-	0xe0, 0x2a, 0x93, 0x7e, 0xc3, 0xe9, 0x1b, 0xce, 0xf5, 0x2e, 0x67, 0xaf, 0xe0, 0xbc, 0x17, 0x8f,
-	0x3b, 0x9f, 0xe5, 0x3c, 0xc3, 0x24, 0xeb, 0x82, 0x6f, 0x40, 0x07, 0x06, 0x34, 0xdd, 0x05, 0xed,
-	0x97, 0xd3, 0x91, 0xac, 0xb3, 0x7b, 0x08, 0x47, 0x30, 0xb0, 0xe3, 0x85, 0xc1, 0xdb, 0x1d, 0xe3,
-	0x9c, 0x95, 0x48, 0x18, 0x2f, 0x69, 0xcd, 0x08, 0x97, 0xcc, 0xcc, 0x1c, 0xfc, 0xbd, 0x7a, 0x7a,
-	0x64, 0xd6, 0x7e, 0xf8, 0x09, 0x00, 0x00, 0xff, 0xff, 0x15, 0x79, 0xad, 0xbf, 0x16, 0x02, 0x00,
-	0x00,
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_payloads_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_payloads_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_payloads_proto_depIdxs,
+		MessageInfos:      file_benchmark_grpc_testing_payloads_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_payloads_proto = out.File
+	file_benchmark_grpc_testing_payloads_proto_rawDesc = nil
+	file_benchmark_grpc_testing_payloads_proto_goTypes = nil
+	file_benchmark_grpc_testing_payloads_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/services.pb.go b/benchmark/grpc_testing/services.pb.go
index 4d0acd3..70f66ff 100644
--- a/benchmark/grpc_testing/services.pb.go
+++ b/benchmark/grpc_testing/services.pb.go
@@ -1,49 +1,152 @@
+// Copyright 2016 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.
+
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/services.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/services.proto", fileDescriptor_e86b6b5d31c265e4)
+var File_benchmark_grpc_testing_services_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_services_proto_rawDesc = []byte{
+	0x0a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x25, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x62, 0x65,
+	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x32, 0x87, 0x02, 0x0a, 0x10, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79,
+	0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x4e, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6c, 0x6c,
+	0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12,
+	0x5b, 0x0a, 0x1a, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x97, 0x02, 0x0a,
+	0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45,
+	0x0a, 0x09, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x43, 0x6c, 0x69, 0x65,
+	0x6e, 0x74, 0x12, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x72, 0x67, 0x73, 0x1a, 0x1a, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6c, 0x69, 0x65,
+	0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x09,
+	0x43, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x34, 0x0a, 0x0a, 0x51, 0x75, 0x69, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x12,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x6f,
+	0x69, 0x64, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var fileDescriptor_e86b6b5d31c265e4 = []byte{
-	// 309 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0xc1, 0x4a, 0x3b, 0x31,
-	0x10, 0xc6, 0x69, 0x0f, 0x7f, 0x68, 0xf8, 0x17, 0x24, 0x27, 0x8d, 0x1e, 0x15, 0xbc, 0xb8, 0x2b,
-	0xd5, 0x17, 0xb0, 0x8b, 0x1e, 0x05, 0xbb, 0x54, 0x41, 0x0f, 0x92, 0x6e, 0x87, 0x18, 0x9a, 0x9d,
-	0x59, 0x27, 0xb3, 0x82, 0x4f, 0xe0, 0x23, 0xf8, 0xba, 0xd2, 0xdd, 0x56, 0x6a, 0xd9, 0x9e, 0xf4,
-	0x98, 0xf9, 0xbe, 0xf9, 0x4d, 0x26, 0xf9, 0xd4, 0xc9, 0x0c, 0xb0, 0x78, 0x29, 0x2d, 0x2f, 0x52,
-	0xc7, 0x55, 0xf1, 0x2c, 0x10, 0xc5, 0xa3, 0x4b, 0x23, 0xf0, 0x9b, 0x2f, 0x20, 0x26, 0x15, 0x93,
-	0x90, 0xfe, 0xbf, 0x14, 0x93, 0x95, 0x68, 0x76, 0x35, 0x95, 0x10, 0xa3, 0x75, 0xeb, 0x26, 0x73,
-	0xbc, 0xc3, 0x56, 0x10, 0x0a, 0x53, 0x68, 0x5d, 0xa3, 0x8f, 0xbe, 0xda, 0x1b, 0xaf, 0x8d, 0x79,
-	0x3b, 0x56, 0xdf, 0xa8, 0xc1, 0x14, 0x2d, 0xbf, 0x67, 0x36, 0x04, 0x7d, 0x98, 0x6c, 0x4e, 0x4f,
-	0x72, 0x5f, 0x56, 0x01, 0x26, 0xf0, 0x5a, 0x43, 0x14, 0x73, 0xd4, 0x2d, 0xc6, 0x8a, 0x30, 0x82,
-	0xbe, 0x55, 0xc3, 0x5c, 0x18, 0x6c, 0xe9, 0xd1, 0xfd, 0x92, 0x75, 0xda, 0x3b, 0xef, 0xe9, 0x27,
-	0x65, 0xa6, 0x58, 0x10, 0x46, 0x61, 0xeb, 0x11, 0xe6, 0x7f, 0x09, 0x1f, 0x7d, 0xf6, 0xd5, 0xf0,
-	0x81, 0x78, 0x01, 0xbc, 0x7e, 0x86, 0x6b, 0x35, 0x98, 0xd4, 0xb8, 0x3c, 0x01, 0xeb, 0xfd, 0x2d,
-	0x40, 0x53, 0xbd, 0x62, 0x17, 0x8d, 0xe9, 0x52, 0x72, 0xb1, 0x52, 0xc7, 0xe6, 0xd6, 0x2d, 0x26,
-	0x0b, 0x1e, 0x50, 0xb6, 0x31, 0x6d, 0xb5, 0x0b, 0xd3, 0x2a, 0x1b, 0x98, 0xb1, 0x1a, 0x64, 0xc4,
-	0x90, 0x51, 0x8d, 0xa2, 0x0f, 0xb6, 0xcc, 0xc4, 0xdf, 0x9b, 0x9a, 0x2e, 0x69, 0xf5, 0x21, 0x97,
-	0x4a, 0xdd, 0xd5, 0x5e, 0xda, 0x35, 0xb5, 0xfe, 0xe9, 0xbc, 0x27, 0x3f, 0x37, 0x1d, 0xb5, 0x71,
-	0xfa, 0x78, 0xe6, 0x88, 0x5c, 0x80, 0xc4, 0x51, 0xb0, 0xe8, 0x12, 0x62, 0xd7, 0x64, 0x2a, 0xed,
-	0x8e, 0xd8, 0xec, 0x5f, 0x93, 0xad, 0x8b, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x77, 0x96, 0x9e,
-	0xdb, 0xdf, 0x02, 0x00, 0x00,
+var file_benchmark_grpc_testing_services_proto_goTypes = []interface{}{
+	(*SimpleRequest)(nil),  // 0: grpc.testing.SimpleRequest
+	(*ServerArgs)(nil),     // 1: grpc.testing.ServerArgs
+	(*ClientArgs)(nil),     // 2: grpc.testing.ClientArgs
+	(*CoreRequest)(nil),    // 3: grpc.testing.CoreRequest
+	(*Void)(nil),           // 4: grpc.testing.Void
+	(*SimpleResponse)(nil), // 5: grpc.testing.SimpleResponse
+	(*ServerStatus)(nil),   // 6: grpc.testing.ServerStatus
+	(*ClientStatus)(nil),   // 7: grpc.testing.ClientStatus
+	(*CoreResponse)(nil),   // 8: grpc.testing.CoreResponse
+}
+var file_benchmark_grpc_testing_services_proto_depIdxs = []int32{
+	0, // 0: grpc.testing.BenchmarkService.UnaryCall:input_type -> grpc.testing.SimpleRequest
+	0, // 1: grpc.testing.BenchmarkService.StreamingCall:input_type -> grpc.testing.SimpleRequest
+	0, // 2: grpc.testing.BenchmarkService.UnconstrainedStreamingCall:input_type -> grpc.testing.SimpleRequest
+	1, // 3: grpc.testing.WorkerService.RunServer:input_type -> grpc.testing.ServerArgs
+	2, // 4: grpc.testing.WorkerService.RunClient:input_type -> grpc.testing.ClientArgs
+	3, // 5: grpc.testing.WorkerService.CoreCount:input_type -> grpc.testing.CoreRequest
+	4, // 6: grpc.testing.WorkerService.QuitWorker:input_type -> grpc.testing.Void
+	5, // 7: grpc.testing.BenchmarkService.UnaryCall:output_type -> grpc.testing.SimpleResponse
+	5, // 8: grpc.testing.BenchmarkService.StreamingCall:output_type -> grpc.testing.SimpleResponse
+	5, // 9: grpc.testing.BenchmarkService.UnconstrainedStreamingCall:output_type -> grpc.testing.SimpleResponse
+	6, // 10: grpc.testing.WorkerService.RunServer:output_type -> grpc.testing.ServerStatus
+	7, // 11: grpc.testing.WorkerService.RunClient:output_type -> grpc.testing.ClientStatus
+	8, // 12: grpc.testing.WorkerService.CoreCount:output_type -> grpc.testing.CoreResponse
+	4, // 13: grpc.testing.WorkerService.QuitWorker:output_type -> grpc.testing.Void
+	7, // [7:14] is the sub-list for method output_type
+	0, // [0:7] 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_benchmark_grpc_testing_services_proto_init() }
+func file_benchmark_grpc_testing_services_proto_init() {
+	if File_benchmark_grpc_testing_services_proto != nil {
+		return
+	}
+	file_benchmark_grpc_testing_messages_proto_init()
+	file_benchmark_grpc_testing_control_proto_init()
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_services_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   0,
+			NumExtensions: 0,
+			NumServices:   2,
+		},
+		GoTypes:           file_benchmark_grpc_testing_services_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_services_proto_depIdxs,
+	}.Build()
+	File_benchmark_grpc_testing_services_proto = out.File
+	file_benchmark_grpc_testing_services_proto_rawDesc = nil
+	file_benchmark_grpc_testing_services_proto_goTypes = nil
+	file_benchmark_grpc_testing_services_proto_depIdxs = nil
 }
diff --git a/benchmark/grpc_testing/stats.pb.go b/benchmark/grpc_testing/stats.pb.go
index ebe310c..9dcf37a 100644
--- a/benchmark/grpc_testing/stats.pb.go
+++ b/benchmark/grpc_testing/stats.pb.go
@@ -1,312 +1,473 @@
+// Copyright 2016 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: benchmark/grpc_testing/stats.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ServerStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// wall clock time change in seconds since last reset
 	TimeElapsed float64 `protobuf:"fixed64,1,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
 	// change in user time (in seconds) used by the server since last reset
 	TimeUser float64 `protobuf:"fixed64,2,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
 	// change in server time (in seconds) used by the server process and all
 	// threads since last reset
-	TimeSystem           float64  `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TimeSystem float64 `protobuf:"fixed64,3,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
 }
 
-func (m *ServerStats) Reset()         { *m = ServerStats{} }
-func (m *ServerStats) String() string { return proto.CompactTextString(m) }
-func (*ServerStats) ProtoMessage()    {}
+func (x *ServerStats) Reset() {
+	*x = ServerStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerStats) ProtoMessage() {}
+
+func (x *ServerStats) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerStats.ProtoReflect.Descriptor instead.
 func (*ServerStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{0}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ServerStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerStats.Unmarshal(m, b)
-}
-func (m *ServerStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerStats.Marshal(b, m, deterministic)
-}
-func (m *ServerStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerStats.Merge(m, src)
-}
-func (m *ServerStats) XXX_Size() int {
-	return xxx_messageInfo_ServerStats.Size(m)
-}
-func (m *ServerStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerStats proto.InternalMessageInfo
-
-func (m *ServerStats) GetTimeElapsed() float64 {
-	if m != nil {
-		return m.TimeElapsed
+func (x *ServerStats) GetTimeElapsed() float64 {
+	if x != nil {
+		return x.TimeElapsed
 	}
 	return 0
 }
 
-func (m *ServerStats) GetTimeUser() float64 {
-	if m != nil {
-		return m.TimeUser
+func (x *ServerStats) GetTimeUser() float64 {
+	if x != nil {
+		return x.TimeUser
 	}
 	return 0
 }
 
-func (m *ServerStats) GetTimeSystem() float64 {
-	if m != nil {
-		return m.TimeSystem
+func (x *ServerStats) GetTimeSystem() float64 {
+	if x != nil {
+		return x.TimeSystem
 	}
 	return 0
 }
 
 // Histogram params based on grpc/support/histogram.c
 type HistogramParams struct {
-	Resolution           float64  `protobuf:"fixed64,1,opt,name=resolution,proto3" json:"resolution,omitempty"`
-	MaxPossible          float64  `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible,proto3" json:"max_possible,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Resolution  float64 `protobuf:"fixed64,1,opt,name=resolution,proto3" json:"resolution,omitempty"`                      // first bucket is [0, 1 + resolution)
+	MaxPossible float64 `protobuf:"fixed64,2,opt,name=max_possible,json=maxPossible,proto3" json:"max_possible,omitempty"` // use enough buckets to allow this value
 }
 
-func (m *HistogramParams) Reset()         { *m = HistogramParams{} }
-func (m *HistogramParams) String() string { return proto.CompactTextString(m) }
-func (*HistogramParams) ProtoMessage()    {}
+func (x *HistogramParams) Reset() {
+	*x = HistogramParams{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HistogramParams) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HistogramParams) ProtoMessage() {}
+
+func (x *HistogramParams) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HistogramParams.ProtoReflect.Descriptor instead.
 func (*HistogramParams) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{1}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *HistogramParams) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HistogramParams.Unmarshal(m, b)
-}
-func (m *HistogramParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HistogramParams.Marshal(b, m, deterministic)
-}
-func (m *HistogramParams) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HistogramParams.Merge(m, src)
-}
-func (m *HistogramParams) XXX_Size() int {
-	return xxx_messageInfo_HistogramParams.Size(m)
-}
-func (m *HistogramParams) XXX_DiscardUnknown() {
-	xxx_messageInfo_HistogramParams.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HistogramParams proto.InternalMessageInfo
-
-func (m *HistogramParams) GetResolution() float64 {
-	if m != nil {
-		return m.Resolution
+func (x *HistogramParams) GetResolution() float64 {
+	if x != nil {
+		return x.Resolution
 	}
 	return 0
 }
 
-func (m *HistogramParams) GetMaxPossible() float64 {
-	if m != nil {
-		return m.MaxPossible
+func (x *HistogramParams) GetMaxPossible() float64 {
+	if x != nil {
+		return x.MaxPossible
 	}
 	return 0
 }
 
 // Histogram data based on grpc/support/histogram.c
 type HistogramData struct {
-	Bucket               []uint32 `protobuf:"varint,1,rep,packed,name=bucket,proto3" json:"bucket,omitempty"`
-	MinSeen              float64  `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen,proto3" json:"min_seen,omitempty"`
-	MaxSeen              float64  `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen,proto3" json:"max_seen,omitempty"`
-	Sum                  float64  `protobuf:"fixed64,4,opt,name=sum,proto3" json:"sum,omitempty"`
-	SumOfSquares         float64  `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares,proto3" json:"sum_of_squares,omitempty"`
-	Count                float64  `protobuf:"fixed64,6,opt,name=count,proto3" json:"count,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Bucket       []uint32 `protobuf:"varint,1,rep,packed,name=bucket,proto3" json:"bucket,omitempty"`
+	MinSeen      float64  `protobuf:"fixed64,2,opt,name=min_seen,json=minSeen,proto3" json:"min_seen,omitempty"`
+	MaxSeen      float64  `protobuf:"fixed64,3,opt,name=max_seen,json=maxSeen,proto3" json:"max_seen,omitempty"`
+	Sum          float64  `protobuf:"fixed64,4,opt,name=sum,proto3" json:"sum,omitempty"`
+	SumOfSquares float64  `protobuf:"fixed64,5,opt,name=sum_of_squares,json=sumOfSquares,proto3" json:"sum_of_squares,omitempty"`
+	Count        float64  `protobuf:"fixed64,6,opt,name=count,proto3" json:"count,omitempty"`
 }
 
-func (m *HistogramData) Reset()         { *m = HistogramData{} }
-func (m *HistogramData) String() string { return proto.CompactTextString(m) }
-func (*HistogramData) ProtoMessage()    {}
+func (x *HistogramData) Reset() {
+	*x = HistogramData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HistogramData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HistogramData) ProtoMessage() {}
+
+func (x *HistogramData) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HistogramData.ProtoReflect.Descriptor instead.
 func (*HistogramData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{2}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *HistogramData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HistogramData.Unmarshal(m, b)
-}
-func (m *HistogramData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HistogramData.Marshal(b, m, deterministic)
-}
-func (m *HistogramData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HistogramData.Merge(m, src)
-}
-func (m *HistogramData) XXX_Size() int {
-	return xxx_messageInfo_HistogramData.Size(m)
-}
-func (m *HistogramData) XXX_DiscardUnknown() {
-	xxx_messageInfo_HistogramData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HistogramData proto.InternalMessageInfo
-
-func (m *HistogramData) GetBucket() []uint32 {
-	if m != nil {
-		return m.Bucket
+func (x *HistogramData) GetBucket() []uint32 {
+	if x != nil {
+		return x.Bucket
 	}
 	return nil
 }
 
-func (m *HistogramData) GetMinSeen() float64 {
-	if m != nil {
-		return m.MinSeen
+func (x *HistogramData) GetMinSeen() float64 {
+	if x != nil {
+		return x.MinSeen
 	}
 	return 0
 }
 
-func (m *HistogramData) GetMaxSeen() float64 {
-	if m != nil {
-		return m.MaxSeen
+func (x *HistogramData) GetMaxSeen() float64 {
+	if x != nil {
+		return x.MaxSeen
 	}
 	return 0
 }
 
-func (m *HistogramData) GetSum() float64 {
-	if m != nil {
-		return m.Sum
+func (x *HistogramData) GetSum() float64 {
+	if x != nil {
+		return x.Sum
 	}
 	return 0
 }
 
-func (m *HistogramData) GetSumOfSquares() float64 {
-	if m != nil {
-		return m.SumOfSquares
+func (x *HistogramData) GetSumOfSquares() float64 {
+	if x != nil {
+		return x.SumOfSquares
 	}
 	return 0
 }
 
-func (m *HistogramData) GetCount() float64 {
-	if m != nil {
-		return m.Count
+func (x *HistogramData) GetCount() float64 {
+	if x != nil {
+		return x.Count
 	}
 	return 0
 }
 
 type ClientStats struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Latency histogram. Data points are in nanoseconds.
 	Latencies *HistogramData `protobuf:"bytes,1,opt,name=latencies,proto3" json:"latencies,omitempty"`
 	// See ServerStats for details.
-	TimeElapsed          float64  `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
-	TimeUser             float64  `protobuf:"fixed64,3,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
-	TimeSystem           float64  `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TimeElapsed float64 `protobuf:"fixed64,2,opt,name=time_elapsed,json=timeElapsed,proto3" json:"time_elapsed,omitempty"`
+	TimeUser    float64 `protobuf:"fixed64,3,opt,name=time_user,json=timeUser,proto3" json:"time_user,omitempty"`
+	TimeSystem  float64 `protobuf:"fixed64,4,opt,name=time_system,json=timeSystem,proto3" json:"time_system,omitempty"`
 }
 
-func (m *ClientStats) Reset()         { *m = ClientStats{} }
-func (m *ClientStats) String() string { return proto.CompactTextString(m) }
-func (*ClientStats) ProtoMessage()    {}
+func (x *ClientStats) Reset() {
+	*x = ClientStats{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientStats) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientStats) ProtoMessage() {}
+
+func (x *ClientStats) ProtoReflect() protoreflect.Message {
+	mi := &file_benchmark_grpc_testing_stats_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientStats.ProtoReflect.Descriptor instead.
 func (*ClientStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a0658d5f374c86d6, []int{3}
+	return file_benchmark_grpc_testing_stats_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ClientStats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientStats.Unmarshal(m, b)
-}
-func (m *ClientStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientStats.Marshal(b, m, deterministic)
-}
-func (m *ClientStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientStats.Merge(m, src)
-}
-func (m *ClientStats) XXX_Size() int {
-	return xxx_messageInfo_ClientStats.Size(m)
-}
-func (m *ClientStats) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientStats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientStats proto.InternalMessageInfo
-
-func (m *ClientStats) GetLatencies() *HistogramData {
-	if m != nil {
-		return m.Latencies
+func (x *ClientStats) GetLatencies() *HistogramData {
+	if x != nil {
+		return x.Latencies
 	}
 	return nil
 }
 
-func (m *ClientStats) GetTimeElapsed() float64 {
-	if m != nil {
-		return m.TimeElapsed
+func (x *ClientStats) GetTimeElapsed() float64 {
+	if x != nil {
+		return x.TimeElapsed
 	}
 	return 0
 }
 
-func (m *ClientStats) GetTimeUser() float64 {
-	if m != nil {
-		return m.TimeUser
+func (x *ClientStats) GetTimeUser() float64 {
+	if x != nil {
+		return x.TimeUser
 	}
 	return 0
 }
 
-func (m *ClientStats) GetTimeSystem() float64 {
-	if m != nil {
-		return m.TimeSystem
+func (x *ClientStats) GetTimeSystem() float64 {
+	if x != nil {
+		return x.TimeSystem
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*ServerStats)(nil), "grpc.testing.ServerStats")
-	proto.RegisterType((*HistogramParams)(nil), "grpc.testing.HistogramParams")
-	proto.RegisterType((*HistogramData)(nil), "grpc.testing.HistogramData")
-	proto.RegisterType((*ClientStats)(nil), "grpc.testing.ClientStats")
+var File_benchmark_grpc_testing_stats_proto protoreflect.FileDescriptor
+
+var file_benchmark_grpc_testing_stats_proto_rawDesc = []byte{
+	0x0a, 0x22, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x22, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
+	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
+	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61,
+	0x70, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65,
+	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74,
+	0x65, 0x6d, 0x22, 0x54, 0x0a, 0x0f, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c,
+	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x6f, 0x73,
+	0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78,
+	0x50, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0d, 0x48, 0x69, 0x73,
+	0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75,
+	0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b,
+	0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x19, 0x0a,
+	0x08, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x07, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x75,
+	0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x53, 0x71, 0x75, 0x61, 0x72, 0x65, 0x73,
+	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
+	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63,
+	0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72,
+	0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x69, 0x65,
+	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65,
+	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6c, 0x61,
+	0x70, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x73, 0x65,
+	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x73, 0x65,
+	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x79, 0x73, 0x74,
+	0x65, 0x6d, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x65, 0x6e,
+	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("benchmark/grpc_testing/stats.proto", fileDescriptor_a0658d5f374c86d6)
+var (
+	file_benchmark_grpc_testing_stats_proto_rawDescOnce sync.Once
+	file_benchmark_grpc_testing_stats_proto_rawDescData = file_benchmark_grpc_testing_stats_proto_rawDesc
+)
+
+func file_benchmark_grpc_testing_stats_proto_rawDescGZIP() []byte {
+	file_benchmark_grpc_testing_stats_proto_rawDescOnce.Do(func() {
+		file_benchmark_grpc_testing_stats_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmark_grpc_testing_stats_proto_rawDescData)
+	})
+	return file_benchmark_grpc_testing_stats_proto_rawDescData
 }
 
-var fileDescriptor_a0658d5f374c86d6 = []byte{
-	// 376 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcf, 0x0b, 0xd3, 0x30,
-	0x14, 0xc7, 0xe9, 0xba, 0xcd, 0xed, 0x75, 0x53, 0x09, 0x22, 0x95, 0x81, 0xce, 0xe2, 0x61, 0x17,
-	0x5b, 0xd0, 0x93, 0x57, 0x7f, 0x80, 0x37, 0xc7, 0xaa, 0x17, 0x2f, 0x25, 0xad, 0x6f, 0x31, 0xac,
-	0x49, 0x6a, 0x5e, 0x22, 0xf5, 0x4f, 0x12, 0xff, 0x49, 0x69, 0x5a, 0x74, 0xfe, 0x40, 0x6f, 0xcd,
-	0xe7, 0xf3, 0x25, 0x69, 0xf2, 0x7d, 0x90, 0xd5, 0xa8, 0x9b, 0x8f, 0x8a, 0xdb, 0x4b, 0x21, 0x6c,
-	0xd7, 0x54, 0x0e, 0xc9, 0x49, 0x2d, 0x0a, 0x72, 0xdc, 0x51, 0xde, 0x59, 0xe3, 0x0c, 0xdb, 0x0c,
-	0x26, 0x9f, 0x4c, 0xa6, 0x21, 0x29, 0xd1, 0x7e, 0x46, 0x5b, 0x0e, 0x11, 0xf6, 0x10, 0x36, 0x4e,
-	0x2a, 0xac, 0xb0, 0xe5, 0x1d, 0xe1, 0x87, 0x34, 0xda, 0x47, 0x87, 0xe8, 0x94, 0x0c, 0xec, 0xd5,
-	0x88, 0xd8, 0x0e, 0xd6, 0x21, 0xe2, 0x09, 0x6d, 0x3a, 0x0b, 0x7e, 0x35, 0x80, 0x77, 0x84, 0x96,
-	0x3d, 0x80, 0x90, 0xad, 0xe8, 0x0b, 0x39, 0x54, 0x69, 0x1c, 0x34, 0x0c, 0xa8, 0x0c, 0x24, 0x7b,
-	0x0b, 0xb7, 0x5e, 0x4b, 0x72, 0x46, 0x58, 0xae, 0x8e, 0xdc, 0x72, 0x45, 0xec, 0x3e, 0x80, 0x45,
-	0x32, 0xad, 0x77, 0xd2, 0xe8, 0xe9, 0xc4, 0x2b, 0x32, 0xfc, 0x93, 0xe2, 0x7d, 0xd5, 0x19, 0x22,
-	0x59, 0xb7, 0x38, 0x9d, 0x99, 0x28, 0xde, 0x1f, 0x27, 0x94, 0x7d, 0x8b, 0x60, 0xfb, 0x63, 0xdb,
-	0x97, 0xdc, 0x71, 0x76, 0x17, 0x96, 0xb5, 0x6f, 0x2e, 0xe8, 0xd2, 0x68, 0x1f, 0x1f, 0xb6, 0xa7,
-	0x69, 0xc5, 0xee, 0xc1, 0x4a, 0x49, 0x5d, 0x11, 0xa2, 0x9e, 0x36, 0xba, 0xa1, 0xa4, 0x2e, 0x11,
-	0x75, 0x50, 0xbc, 0x1f, 0x55, 0x3c, 0x29, 0xde, 0x07, 0x75, 0x1b, 0x62, 0xf2, 0x2a, 0x9d, 0x07,
-	0x3a, 0x7c, 0xb2, 0x47, 0x70, 0x93, 0xbc, 0xaa, 0xcc, 0xb9, 0xa2, 0x4f, 0x9e, 0x5b, 0xa4, 0x74,
-	0x11, 0xe4, 0x86, 0xbc, 0x7a, 0x73, 0x2e, 0x47, 0xc6, 0xee, 0xc0, 0xa2, 0x31, 0x5e, 0xbb, 0x74,
-	0x19, 0xe4, 0xb8, 0xc8, 0xbe, 0x46, 0x90, 0xbc, 0x68, 0x25, 0x6a, 0x37, 0x3e, 0xfa, 0x33, 0x58,
-	0xb7, 0xdc, 0xa1, 0x6e, 0x24, 0x52, 0xb8, 0x7f, 0xf2, 0x64, 0x97, 0x5f, 0xb7, 0x94, 0xff, 0x72,
-	0xb7, 0xd3, 0xcf, 0xf4, 0x1f, 0x7d, 0xcd, 0xfe, 0xd3, 0x57, 0xfc, 0xef, 0xbe, 0xe6, 0xbf, 0xf7,
-	0xf5, 0xbc, 0x78, 0xff, 0x58, 0x18, 0x23, 0x5a, 0xcc, 0x85, 0x69, 0xb9, 0x16, 0xb9, 0xb1, 0x22,
-	0xcc, 0x56, 0xf1, 0xf7, 0x51, 0xab, 0x97, 0x61, 0xca, 0x9e, 0x7e, 0x0f, 0x00, 0x00, 0xff, 0xff,
-	0xcc, 0xda, 0x99, 0x65, 0x8b, 0x02, 0x00, 0x00,
+var file_benchmark_grpc_testing_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_benchmark_grpc_testing_stats_proto_goTypes = []interface{}{
+	(*ServerStats)(nil),     // 0: grpc.testing.ServerStats
+	(*HistogramParams)(nil), // 1: grpc.testing.HistogramParams
+	(*HistogramData)(nil),   // 2: grpc.testing.HistogramData
+	(*ClientStats)(nil),     // 3: grpc.testing.ClientStats
+}
+var file_benchmark_grpc_testing_stats_proto_depIdxs = []int32{
+	2, // 0: grpc.testing.ClientStats.latencies:type_name -> grpc.testing.HistogramData
+	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
+}
+
+func init() { file_benchmark_grpc_testing_stats_proto_init() }
+func file_benchmark_grpc_testing_stats_proto_init() {
+	if File_benchmark_grpc_testing_stats_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_benchmark_grpc_testing_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HistogramParams); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HistogramData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_benchmark_grpc_testing_stats_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientStats); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_benchmark_grpc_testing_stats_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   4,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_benchmark_grpc_testing_stats_proto_goTypes,
+		DependencyIndexes: file_benchmark_grpc_testing_stats_proto_depIdxs,
+		MessageInfos:      file_benchmark_grpc_testing_stats_proto_msgTypes,
+	}.Build()
+	File_benchmark_grpc_testing_stats_proto = out.File
+	file_benchmark_grpc_testing_stats_proto_rawDesc = nil
+	file_benchmark_grpc_testing_stats_proto_goTypes = nil
+	file_benchmark_grpc_testing_stats_proto_depIdxs = nil
 }
diff --git a/binarylog/grpc_binarylog_v1/binarylog.pb.go b/binarylog/grpc_binarylog_v1/binarylog.pb.go
index f826ec7..da04729 100644
--- a/binarylog/grpc_binarylog_v1/binarylog.pb.go
+++ b/binarylog/grpc_binarylog_v1/binarylog.pb.go
@@ -1,26 +1,49 @@
+// Copyright 2018 The gRPC Authors
+// All rights reserved.
+//
+// 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.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/binlog/v1/binarylog.proto
 
 package grpc_binarylog_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Enumerates the type of event
 // Note the terminology is different from the RPC semantics
@@ -56,34 +79,55 @@
 	GrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7
 )
 
-var GrpcLogEntry_EventType_name = map[int32]string{
-	0: "EVENT_TYPE_UNKNOWN",
-	1: "EVENT_TYPE_CLIENT_HEADER",
-	2: "EVENT_TYPE_SERVER_HEADER",
-	3: "EVENT_TYPE_CLIENT_MESSAGE",
-	4: "EVENT_TYPE_SERVER_MESSAGE",
-	5: "EVENT_TYPE_CLIENT_HALF_CLOSE",
-	6: "EVENT_TYPE_SERVER_TRAILER",
-	7: "EVENT_TYPE_CANCEL",
-}
+// Enum value maps for GrpcLogEntry_EventType.
+var (
+	GrpcLogEntry_EventType_name = map[int32]string{
+		0: "EVENT_TYPE_UNKNOWN",
+		1: "EVENT_TYPE_CLIENT_HEADER",
+		2: "EVENT_TYPE_SERVER_HEADER",
+		3: "EVENT_TYPE_CLIENT_MESSAGE",
+		4: "EVENT_TYPE_SERVER_MESSAGE",
+		5: "EVENT_TYPE_CLIENT_HALF_CLOSE",
+		6: "EVENT_TYPE_SERVER_TRAILER",
+		7: "EVENT_TYPE_CANCEL",
+	}
+	GrpcLogEntry_EventType_value = map[string]int32{
+		"EVENT_TYPE_UNKNOWN":           0,
+		"EVENT_TYPE_CLIENT_HEADER":     1,
+		"EVENT_TYPE_SERVER_HEADER":     2,
+		"EVENT_TYPE_CLIENT_MESSAGE":    3,
+		"EVENT_TYPE_SERVER_MESSAGE":    4,
+		"EVENT_TYPE_CLIENT_HALF_CLOSE": 5,
+		"EVENT_TYPE_SERVER_TRAILER":    6,
+		"EVENT_TYPE_CANCEL":            7,
+	}
+)
 
-var GrpcLogEntry_EventType_value = map[string]int32{
-	"EVENT_TYPE_UNKNOWN":           0,
-	"EVENT_TYPE_CLIENT_HEADER":     1,
-	"EVENT_TYPE_SERVER_HEADER":     2,
-	"EVENT_TYPE_CLIENT_MESSAGE":    3,
-	"EVENT_TYPE_SERVER_MESSAGE":    4,
-	"EVENT_TYPE_CLIENT_HALF_CLOSE": 5,
-	"EVENT_TYPE_SERVER_TRAILER":    6,
-	"EVENT_TYPE_CANCEL":            7,
+func (x GrpcLogEntry_EventType) Enum() *GrpcLogEntry_EventType {
+	p := new(GrpcLogEntry_EventType)
+	*p = x
+	return p
 }
 
 func (x GrpcLogEntry_EventType) String() string {
-	return proto.EnumName(GrpcLogEntry_EventType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GrpcLogEntry_EventType) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[0].Descriptor()
+}
+
+func (GrpcLogEntry_EventType) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[0]
+}
+
+func (x GrpcLogEntry_EventType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GrpcLogEntry_EventType.Descriptor instead.
 func (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0, 0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // Enumerates the entity that generates the log entry
@@ -95,24 +139,45 @@
 	GrpcLogEntry_LOGGER_SERVER  GrpcLogEntry_Logger = 2
 )
 
-var GrpcLogEntry_Logger_name = map[int32]string{
-	0: "LOGGER_UNKNOWN",
-	1: "LOGGER_CLIENT",
-	2: "LOGGER_SERVER",
-}
+// Enum value maps for GrpcLogEntry_Logger.
+var (
+	GrpcLogEntry_Logger_name = map[int32]string{
+		0: "LOGGER_UNKNOWN",
+		1: "LOGGER_CLIENT",
+		2: "LOGGER_SERVER",
+	}
+	GrpcLogEntry_Logger_value = map[string]int32{
+		"LOGGER_UNKNOWN": 0,
+		"LOGGER_CLIENT":  1,
+		"LOGGER_SERVER":  2,
+	}
+)
 
-var GrpcLogEntry_Logger_value = map[string]int32{
-	"LOGGER_UNKNOWN": 0,
-	"LOGGER_CLIENT":  1,
-	"LOGGER_SERVER":  2,
+func (x GrpcLogEntry_Logger) Enum() *GrpcLogEntry_Logger {
+	p := new(GrpcLogEntry_Logger)
+	*p = x
+	return p
 }
 
 func (x GrpcLogEntry_Logger) String() string {
-	return proto.EnumName(GrpcLogEntry_Logger_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GrpcLogEntry_Logger) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[1].Descriptor()
+}
+
+func (GrpcLogEntry_Logger) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[1]
+}
+
+func (x GrpcLogEntry_Logger) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GrpcLogEntry_Logger.Descriptor instead.
 func (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0, 1}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0, 1}
 }
 
 type Address_Type int32
@@ -128,30 +193,55 @@
 	Address_TYPE_UNIX Address_Type = 3
 )
 
-var Address_Type_name = map[int32]string{
-	0: "TYPE_UNKNOWN",
-	1: "TYPE_IPV4",
-	2: "TYPE_IPV6",
-	3: "TYPE_UNIX",
-}
+// Enum value maps for Address_Type.
+var (
+	Address_Type_name = map[int32]string{
+		0: "TYPE_UNKNOWN",
+		1: "TYPE_IPV4",
+		2: "TYPE_IPV6",
+		3: "TYPE_UNIX",
+	}
+	Address_Type_value = map[string]int32{
+		"TYPE_UNKNOWN": 0,
+		"TYPE_IPV4":    1,
+		"TYPE_IPV6":    2,
+		"TYPE_UNIX":    3,
+	}
+)
 
-var Address_Type_value = map[string]int32{
-	"TYPE_UNKNOWN": 0,
-	"TYPE_IPV4":    1,
-	"TYPE_IPV6":    2,
-	"TYPE_UNIX":    3,
+func (x Address_Type) Enum() *Address_Type {
+	p := new(Address_Type)
+	*p = x
+	return p
 }
 
 func (x Address_Type) String() string {
-	return proto.EnumName(Address_Type_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (Address_Type) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_binlog_v1_binarylog_proto_enumTypes[2].Descriptor()
+}
+
+func (Address_Type) Type() protoreflect.EnumType {
+	return &file_grpc_binlog_v1_binarylog_proto_enumTypes[2]
+}
+
+func (x Address_Type) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use Address_Type.Descriptor instead.
 func (Address_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{7, 0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7, 0}
 }
 
 // Log entry we store in binary logs
 type GrpcLogEntry struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The timestamp of the binary log message
 	Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
 	// Uniquely identifies a call. The value must not be 0 in order to disambiguate
@@ -166,11 +256,11 @@
 	// durability or ordering is not guaranteed.
 	SequenceIdWithinCall uint64                 `protobuf:"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3" json:"sequence_id_within_call,omitempty"`
 	Type                 GrpcLogEntry_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType" json:"type,omitempty"`
-	Logger               GrpcLogEntry_Logger    `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"`
+	Logger               GrpcLogEntry_Logger    `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"` // One of the above Logger enum
 	// The logger uses one of the following fields to record the payload,
 	// according to the type of the log entry.
 	//
-	// Types that are valid to be assigned to Payload:
+	// Types that are assignable to Payload:
 	//	*GrpcLogEntry_ClientHeader
 	//	*GrpcLogEntry_ServerHeader
 	//	*GrpcLogEntry_Message
@@ -183,72 +273,125 @@
 	// EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
 	// the case of trailers-only. On server side, peer is always
 	// logged on EVENT_TYPE_CLIENT_HEADER.
-	Peer                 *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Peer *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"`
 }
 
-func (m *GrpcLogEntry) Reset()         { *m = GrpcLogEntry{} }
-func (m *GrpcLogEntry) String() string { return proto.CompactTextString(m) }
-func (*GrpcLogEntry) ProtoMessage()    {}
+func (x *GrpcLogEntry) Reset() {
+	*x = GrpcLogEntry{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GrpcLogEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcLogEntry) ProtoMessage() {}
+
+func (x *GrpcLogEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcLogEntry.ProtoReflect.Descriptor instead.
 func (*GrpcLogEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{0}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *GrpcLogEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcLogEntry.Unmarshal(m, b)
-}
-func (m *GrpcLogEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcLogEntry.Marshal(b, m, deterministic)
-}
-func (m *GrpcLogEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcLogEntry.Merge(m, src)
-}
-func (m *GrpcLogEntry) XXX_Size() int {
-	return xxx_messageInfo_GrpcLogEntry.Size(m)
-}
-func (m *GrpcLogEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcLogEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcLogEntry proto.InternalMessageInfo
-
-func (m *GrpcLogEntry) GetTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.Timestamp
+func (x *GrpcLogEntry) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
 	}
 	return nil
 }
 
-func (m *GrpcLogEntry) GetCallId() uint64 {
-	if m != nil {
-		return m.CallId
+func (x *GrpcLogEntry) GetCallId() uint64 {
+	if x != nil {
+		return x.CallId
 	}
 	return 0
 }
 
-func (m *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {
-	if m != nil {
-		return m.SequenceIdWithinCall
+func (x *GrpcLogEntry) GetSequenceIdWithinCall() uint64 {
+	if x != nil {
+		return x.SequenceIdWithinCall
 	}
 	return 0
 }
 
-func (m *GrpcLogEntry) GetType() GrpcLogEntry_EventType {
-	if m != nil {
-		return m.Type
+func (x *GrpcLogEntry) GetType() GrpcLogEntry_EventType {
+	if x != nil {
+		return x.Type
 	}
 	return GrpcLogEntry_EVENT_TYPE_UNKNOWN
 }
 
-func (m *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {
-	if m != nil {
-		return m.Logger
+func (x *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger {
+	if x != nil {
+		return x.Logger
 	}
 	return GrpcLogEntry_LOGGER_UNKNOWN
 }
 
+func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {
+	if m != nil {
+		return m.Payload
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetClientHeader() *ClientHeader {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_ClientHeader); ok {
+		return x.ClientHeader
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetServerHeader() *ServerHeader {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_ServerHeader); ok {
+		return x.ServerHeader
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetMessage() *Message {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_Message); ok {
+		return x.Message
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetTrailer() *Trailer {
+	if x, ok := x.GetPayload().(*GrpcLogEntry_Trailer); ok {
+		return x.Trailer
+	}
+	return nil
+}
+
+func (x *GrpcLogEntry) GetPayloadTruncated() bool {
+	if x != nil {
+		return x.PayloadTruncated
+	}
+	return false
+}
+
+func (x *GrpcLogEntry) GetPeer() *Address {
+	if x != nil {
+		return x.Peer
+	}
+	return nil
+}
+
 type isGrpcLogEntry_Payload interface {
 	isGrpcLogEntry_Payload()
 }
@@ -262,6 +405,7 @@
 }
 
 type GrpcLogEntry_Message struct {
+	// Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
 	Message *Message `protobuf:"bytes,8,opt,name=message,proto3,oneof"`
 }
 
@@ -277,66 +421,11 @@
 
 func (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {}
 
-func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetClientHeader() *ClientHeader {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_ClientHeader); ok {
-		return x.ClientHeader
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetServerHeader() *ServerHeader {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_ServerHeader); ok {
-		return x.ServerHeader
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetMessage() *Message {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_Message); ok {
-		return x.Message
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetTrailer() *Trailer {
-	if x, ok := m.GetPayload().(*GrpcLogEntry_Trailer); ok {
-		return x.Trailer
-	}
-	return nil
-}
-
-func (m *GrpcLogEntry) GetPayloadTruncated() bool {
-	if m != nil {
-		return m.PayloadTruncated
-	}
-	return false
-}
-
-func (m *GrpcLogEntry) GetPeer() *Address {
-	if m != nil {
-		return m.Peer
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GrpcLogEntry) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GrpcLogEntry_ClientHeader)(nil),
-		(*GrpcLogEntry_ServerHeader)(nil),
-		(*GrpcLogEntry_Message)(nil),
-		(*GrpcLogEntry_Trailer)(nil),
-	}
-}
-
 type ClientHeader struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
 	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// The name of the RPC method, which looks something like:
@@ -350,106 +439,122 @@
 	// <host> or <host>:<port> .
 	Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"`
 	// the RPC timeout
-	Timeout              *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Timeout *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
 }
 
-func (m *ClientHeader) Reset()         { *m = ClientHeader{} }
-func (m *ClientHeader) String() string { return proto.CompactTextString(m) }
-func (*ClientHeader) ProtoMessage()    {}
+func (x *ClientHeader) Reset() {
+	*x = ClientHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ClientHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ClientHeader) ProtoMessage() {}
+
+func (x *ClientHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ClientHeader.ProtoReflect.Descriptor instead.
 func (*ClientHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{1}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *ClientHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ClientHeader.Unmarshal(m, b)
-}
-func (m *ClientHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ClientHeader.Marshal(b, m, deterministic)
-}
-func (m *ClientHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClientHeader.Merge(m, src)
-}
-func (m *ClientHeader) XXX_Size() int {
-	return xxx_messageInfo_ClientHeader.Size(m)
-}
-func (m *ClientHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_ClientHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ClientHeader proto.InternalMessageInfo
-
-func (m *ClientHeader) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *ClientHeader) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *ClientHeader) GetMethodName() string {
-	if m != nil {
-		return m.MethodName
+func (x *ClientHeader) GetMethodName() string {
+	if x != nil {
+		return x.MethodName
 	}
 	return ""
 }
 
-func (m *ClientHeader) GetAuthority() string {
-	if m != nil {
-		return m.Authority
+func (x *ClientHeader) GetAuthority() string {
+	if x != nil {
+		return x.Authority
 	}
 	return ""
 }
 
-func (m *ClientHeader) GetTimeout() *duration.Duration {
-	if m != nil {
-		return m.Timeout
+func (x *ClientHeader) GetTimeout() *duration.Duration {
+	if x != nil {
+		return x.Timeout
 	}
 	return nil
 }
 
 type ServerHeader struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
-	Metadata             *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
+	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 }
 
-func (m *ServerHeader) Reset()         { *m = ServerHeader{} }
-func (m *ServerHeader) String() string { return proto.CompactTextString(m) }
-func (*ServerHeader) ProtoMessage()    {}
+func (x *ServerHeader) Reset() {
+	*x = ServerHeader{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerHeader) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerHeader) ProtoMessage() {}
+
+func (x *ServerHeader) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerHeader.ProtoReflect.Descriptor instead.
 func (*ServerHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{2}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ServerHeader) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerHeader.Unmarshal(m, b)
-}
-func (m *ServerHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerHeader.Marshal(b, m, deterministic)
-}
-func (m *ServerHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerHeader.Merge(m, src)
-}
-func (m *ServerHeader) XXX_Size() int {
-	return xxx_messageInfo_ServerHeader.Size(m)
-}
-func (m *ServerHeader) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerHeader.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerHeader proto.InternalMessageInfo
-
-func (m *ServerHeader) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *ServerHeader) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
 type Trailer struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This contains only the metadata from the application.
 	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// The gRPC status code.
@@ -459,112 +564,124 @@
 	StatusMessage string `protobuf:"bytes,3,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"`
 	// The value of the 'grpc-status-details-bin' metadata key. If
 	// present, this is always an encoded 'google.rpc.Status' message.
-	StatusDetails        []byte   `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	StatusDetails []byte `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
 }
 
-func (m *Trailer) Reset()         { *m = Trailer{} }
-func (m *Trailer) String() string { return proto.CompactTextString(m) }
-func (*Trailer) ProtoMessage()    {}
+func (x *Trailer) Reset() {
+	*x = Trailer{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Trailer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Trailer) ProtoMessage() {}
+
+func (x *Trailer) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Trailer.ProtoReflect.Descriptor instead.
 func (*Trailer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{3}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *Trailer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Trailer.Unmarshal(m, b)
-}
-func (m *Trailer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Trailer.Marshal(b, m, deterministic)
-}
-func (m *Trailer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Trailer.Merge(m, src)
-}
-func (m *Trailer) XXX_Size() int {
-	return xxx_messageInfo_Trailer.Size(m)
-}
-func (m *Trailer) XXX_DiscardUnknown() {
-	xxx_messageInfo_Trailer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Trailer proto.InternalMessageInfo
-
-func (m *Trailer) GetMetadata() *Metadata {
-	if m != nil {
-		return m.Metadata
+func (x *Trailer) GetMetadata() *Metadata {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func (m *Trailer) GetStatusCode() uint32 {
-	if m != nil {
-		return m.StatusCode
+func (x *Trailer) GetStatusCode() uint32 {
+	if x != nil {
+		return x.StatusCode
 	}
 	return 0
 }
 
-func (m *Trailer) GetStatusMessage() string {
-	if m != nil {
-		return m.StatusMessage
+func (x *Trailer) GetStatusMessage() string {
+	if x != nil {
+		return x.StatusMessage
 	}
 	return ""
 }
 
-func (m *Trailer) GetStatusDetails() []byte {
-	if m != nil {
-		return m.StatusDetails
+func (x *Trailer) GetStatusDetails() []byte {
+	if x != nil {
+		return x.StatusDetails
 	}
 	return nil
 }
 
 // Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
 type Message struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Length of the message. It may not be the same as the length of the
 	// data field, as the logging payload can be truncated or omitted.
 	Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"`
 	// May be truncated or omitted.
-	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
 }
 
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
+func (x *Message) Reset() {
+	*x = Message{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Message) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Message) ProtoMessage() {}
+
+func (x *Message) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Message.ProtoReflect.Descriptor instead.
 func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{4}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-func (m *Message) GetLength() uint32 {
-	if m != nil {
-		return m.Length
+func (x *Message) GetLength() uint32 {
+	if x != nil {
+		return x.Length
 	}
 	return 0
 }
 
-func (m *Message) GetData() []byte {
-	if m != nil {
-		return m.Data
+func (x *Message) GetData() []byte {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
@@ -591,222 +708,480 @@
 // header is just a normal metadata key.
 // The pair will not count towards the size limit.
 type Metadata struct {
-	Entry                []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Entry []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"`
 }
 
-func (m *Metadata) Reset()         { *m = Metadata{} }
-func (m *Metadata) String() string { return proto.CompactTextString(m) }
-func (*Metadata) ProtoMessage()    {}
+func (x *Metadata) Reset() {
+	*x = Metadata{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Metadata) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Metadata) ProtoMessage() {}
+
+func (x *Metadata) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Metadata.ProtoReflect.Descriptor instead.
 func (*Metadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{5}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *Metadata) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Metadata.Unmarshal(m, b)
-}
-func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Metadata.Marshal(b, m, deterministic)
-}
-func (m *Metadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Metadata.Merge(m, src)
-}
-func (m *Metadata) XXX_Size() int {
-	return xxx_messageInfo_Metadata.Size(m)
-}
-func (m *Metadata) XXX_DiscardUnknown() {
-	xxx_messageInfo_Metadata.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Metadata proto.InternalMessageInfo
-
-func (m *Metadata) GetEntry() []*MetadataEntry {
-	if m != nil {
-		return m.Entry
+func (x *Metadata) GetEntry() []*MetadataEntry {
+	if x != nil {
+		return x.Entry
 	}
 	return nil
 }
 
 // A metadata key value pair
 type MetadataEntry struct {
-	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	Value                []byte   `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
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
 
-func (m *MetadataEntry) Reset()         { *m = MetadataEntry{} }
-func (m *MetadataEntry) String() string { return proto.CompactTextString(m) }
-func (*MetadataEntry) ProtoMessage()    {}
+func (x *MetadataEntry) Reset() {
+	*x = MetadataEntry{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MetadataEntry) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MetadataEntry) ProtoMessage() {}
+
+func (x *MetadataEntry) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MetadataEntry.ProtoReflect.Descriptor instead.
 func (*MetadataEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{6}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *MetadataEntry) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MetadataEntry.Unmarshal(m, b)
-}
-func (m *MetadataEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MetadataEntry.Marshal(b, m, deterministic)
-}
-func (m *MetadataEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetadataEntry.Merge(m, src)
-}
-func (m *MetadataEntry) XXX_Size() int {
-	return xxx_messageInfo_MetadataEntry.Size(m)
-}
-func (m *MetadataEntry) XXX_DiscardUnknown() {
-	xxx_messageInfo_MetadataEntry.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MetadataEntry proto.InternalMessageInfo
-
-func (m *MetadataEntry) GetKey() string {
-	if m != nil {
-		return m.Key
+func (x *MetadataEntry) GetKey() string {
+	if x != nil {
+		return x.Key
 	}
 	return ""
 }
 
-func (m *MetadataEntry) GetValue() []byte {
-	if m != nil {
-		return m.Value
+func (x *MetadataEntry) GetValue() []byte {
+	if x != nil {
+		return x.Value
 	}
 	return nil
 }
 
 // Address information
 type Address struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Type    Address_Type `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type" json:"type,omitempty"`
 	Address string       `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
 	// only for TYPE_IPV4 and TYPE_IPV6
-	IpPort               uint32   `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"`
 }
 
-func (m *Address) Reset()         { *m = Address{} }
-func (m *Address) String() string { return proto.CompactTextString(m) }
-func (*Address) ProtoMessage()    {}
+func (x *Address) Reset() {
+	*x = Address{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address) ProtoMessage() {}
+
+func (x *Address) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_binlog_v1_binarylog_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address.ProtoReflect.Descriptor instead.
 func (*Address) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b7972e58de45083a, []int{7}
+	return file_grpc_binlog_v1_binarylog_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *Address) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address.Unmarshal(m, b)
-}
-func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address.Marshal(b, m, deterministic)
-}
-func (m *Address) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address.Merge(m, src)
-}
-func (m *Address) XXX_Size() int {
-	return xxx_messageInfo_Address.Size(m)
-}
-func (m *Address) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address proto.InternalMessageInfo
-
-func (m *Address) GetType() Address_Type {
-	if m != nil {
-		return m.Type
+func (x *Address) GetType() Address_Type {
+	if x != nil {
+		return x.Type
 	}
 	return Address_TYPE_UNKNOWN
 }
 
-func (m *Address) GetAddress() string {
-	if m != nil {
-		return m.Address
+func (x *Address) GetAddress() string {
+	if x != nil {
+		return x.Address
 	}
 	return ""
 }
 
-func (m *Address) GetIpPort() uint32 {
-	if m != nil {
-		return m.IpPort
+func (x *Address) GetIpPort() uint32 {
+	if x != nil {
+		return x.IpPort
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_EventType", GrpcLogEntry_EventType_name, GrpcLogEntry_EventType_value)
-	proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_Logger", GrpcLogEntry_Logger_name, GrpcLogEntry_Logger_value)
-	proto.RegisterEnum("grpc.binarylog.v1.Address_Type", Address_Type_name, Address_Type_value)
-	proto.RegisterType((*GrpcLogEntry)(nil), "grpc.binarylog.v1.GrpcLogEntry")
-	proto.RegisterType((*ClientHeader)(nil), "grpc.binarylog.v1.ClientHeader")
-	proto.RegisterType((*ServerHeader)(nil), "grpc.binarylog.v1.ServerHeader")
-	proto.RegisterType((*Trailer)(nil), "grpc.binarylog.v1.Trailer")
-	proto.RegisterType((*Message)(nil), "grpc.binarylog.v1.Message")
-	proto.RegisterType((*Metadata)(nil), "grpc.binarylog.v1.Metadata")
-	proto.RegisterType((*MetadataEntry)(nil), "grpc.binarylog.v1.MetadataEntry")
-	proto.RegisterType((*Address)(nil), "grpc.binarylog.v1.Address")
+var File_grpc_binlog_v1_binarylog_proto protoreflect.FileDescriptor
+
+var file_grpc_binlog_v1_binarylog_proto_rawDesc = []byte{
+	0x0a, 0x1e, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31,
+	0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x12, 0x11, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x22, 0xbb, 0x07, 0x0a, 0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
+	0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
+	0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x65, 0x71, 0x75,
+	0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x63,
+	0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x73, 0x65, 0x71, 0x75, 0x65,
+	0x6e, 0x63, 0x65, 0x49, 0x64, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12,
+	0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
+	0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x45,
+	0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3e,
+	0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x2e,
+	0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x46,
+	0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18,
+	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
+	0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76,
+	0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00,
+	0x52, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36,
+	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65,
+	0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69,
+	0x6c, 0x65, 0x72, 0x48, 0x00, 0x52, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x2b,
+	0x0a, 0x11, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61,
+	0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x70,
+	0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x04, 0x70, 0x65, 0x65, 0x72, 0x22, 0xf5, 0x01, 0x0a, 0x09,
+	0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45,
+	0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+	0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x01, 0x12,
+	0x1c, 0x0a, 0x18, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45,
+	0x52, 0x56, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a,
+	0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45,
+	0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19,
+	0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45,
+	0x52, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x45,
+	0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
+	0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a,
+	0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56,
+	0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11,
+	0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45,
+	0x4c, 0x10, 0x07, 0x22, 0x42, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a,
+	0x0e, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x49, 0x45,
+	0x4e, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53,
+	0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e,
+	0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b,
+	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
+	0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74,
+	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x22, 0x47, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,
+	0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52,
+	0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb1, 0x01, 0x0a, 0x07, 0x54, 0x72,
+	0x61, 0x69, 0x6c, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f,
+	0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12,
+	0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x35, 0x0a,
+	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67,
+	0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68,
+	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
+	0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+	0x12, 0x36, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67,
+	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x37, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61,
+	0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x22, 0xb8, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a,
+	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
+	0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07,
+	0x69, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69,
+	0x70, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
+	0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
+	0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x0d,
+	0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0d, 0x0a,
+	0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x58, 0x10, 0x03, 0x42, 0x5c, 0x0a, 0x14,
+	0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f,
+	0x67, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x62,
+	0x69, 0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x62, 0x69,
+	0x6e, 0x61, 0x72, 0x79, 0x6c, 0x6f, 0x67, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/binlog/v1/binarylog.proto", fileDescriptor_b7972e58de45083a) }
+var (
+	file_grpc_binlog_v1_binarylog_proto_rawDescOnce sync.Once
+	file_grpc_binlog_v1_binarylog_proto_rawDescData = file_grpc_binlog_v1_binarylog_proto_rawDesc
+)
 
-var fileDescriptor_b7972e58de45083a = []byte{
-	// 904 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x51, 0x6f, 0xe3, 0x44,
-	0x10, 0xae, 0xdb, 0x34, 0x6e, 0x26, 0x49, 0xe5, 0xae, 0xca, 0x9d, 0xaf, 0x94, 0x6b, 0x64, 0x09,
-	0x14, 0x84, 0xe4, 0xa8, 0x29, 0xd7, 0xe3, 0x05, 0xa4, 0x24, 0xf5, 0xa5, 0x11, 0xb9, 0x34, 0xda,
-	0xe4, 0x7a, 0x80, 0x90, 0xac, 0x6d, 0xbc, 0x38, 0x16, 0x8e, 0xd7, 0xac, 0x37, 0x41, 0xf9, 0x59,
-	0xbc, 0x21, 0xdd, 0xef, 0xe2, 0x1d, 0x79, 0xd7, 0x4e, 0x4d, 0xd3, 0x82, 0xc4, 0xbd, 0xed, 0x7c,
-	0xf3, 0xcd, 0x37, 0xbb, 0xe3, 0x99, 0x31, 0xbc, 0xf4, 0x79, 0x3c, 0x6b, 0xdd, 0x05, 0x51, 0xc8,
-	0xfc, 0xd6, 0xea, 0x3c, 0x3d, 0x11, 0xbe, 0x0e, 0x99, 0x6f, 0xc7, 0x9c, 0x09, 0x86, 0x8e, 0x52,
-	0xbf, 0x7d, 0x8f, 0xae, 0xce, 0x4f, 0x5e, 0xfa, 0x8c, 0xf9, 0x21, 0x6d, 0x49, 0xc2, 0xdd, 0xf2,
-	0x97, 0x96, 0xb7, 0xe4, 0x44, 0x04, 0x2c, 0x52, 0x21, 0x27, 0x67, 0x0f, 0xfd, 0x22, 0x58, 0xd0,
-	0x44, 0x90, 0x45, 0xac, 0x08, 0xd6, 0x07, 0x1d, 0x6a, 0x7d, 0x1e, 0xcf, 0x86, 0xcc, 0x77, 0x22,
-	0xc1, 0xd7, 0xe8, 0x1b, 0xa8, 0x6c, 0x38, 0xa6, 0xd6, 0xd0, 0x9a, 0xd5, 0xf6, 0x89, 0xad, 0x54,
-	0xec, 0x5c, 0xc5, 0x9e, 0xe6, 0x0c, 0x7c, 0x4f, 0x46, 0xcf, 0x41, 0x9f, 0x91, 0x30, 0x74, 0x03,
-	0xcf, 0xdc, 0x6d, 0x68, 0xcd, 0x12, 0x2e, 0xa7, 0xe6, 0xc0, 0x43, 0xaf, 0xe0, 0x79, 0x42, 0x7f,
-	0x5b, 0xd2, 0x68, 0x46, 0xdd, 0xc0, 0x73, 0x7f, 0x0f, 0xc4, 0x3c, 0x88, 0xdc, 0xd4, 0x69, 0xee,
-	0x49, 0xe2, 0x71, 0xee, 0x1e, 0x78, 0xef, 0xa5, 0xb3, 0x47, 0xc2, 0x10, 0x7d, 0x0b, 0x25, 0xb1,
-	0x8e, 0xa9, 0x59, 0x6a, 0x68, 0xcd, 0xc3, 0xf6, 0x97, 0xf6, 0xd6, 0xeb, 0xed, 0xe2, 0xc5, 0x6d,
-	0x67, 0x45, 0x23, 0x31, 0x5d, 0xc7, 0x14, 0xcb, 0x30, 0xf4, 0x1d, 0x94, 0x43, 0xe6, 0xfb, 0x94,
-	0x9b, 0xfb, 0x52, 0xe0, 0x8b, 0xff, 0x12, 0x18, 0x4a, 0x36, 0xce, 0xa2, 0xd0, 0x1b, 0xa8, 0xcf,
-	0xc2, 0x80, 0x46, 0xc2, 0x9d, 0x53, 0xe2, 0x51, 0x6e, 0x96, 0x65, 0x31, 0xce, 0x1e, 0x91, 0xe9,
-	0x49, 0xde, 0xb5, 0xa4, 0x5d, 0xef, 0xe0, 0xda, 0xac, 0x60, 0xa7, 0x3a, 0x09, 0xe5, 0x2b, 0xca,
-	0x73, 0x1d, 0xfd, 0x49, 0x9d, 0x89, 0xe4, 0xdd, 0xeb, 0x24, 0x05, 0x1b, 0x5d, 0x82, 0xbe, 0xa0,
-	0x49, 0x42, 0x7c, 0x6a, 0x1e, 0xe4, 0x9f, 0x65, 0x4b, 0xe1, 0xad, 0x62, 0x5c, 0xef, 0xe0, 0x9c,
-	0x9c, 0xc6, 0x09, 0x4e, 0x82, 0x90, 0x72, 0xb3, 0xf2, 0x64, 0xdc, 0x54, 0x31, 0xd2, 0xb8, 0x8c,
-	0x8c, 0xbe, 0x82, 0xa3, 0x98, 0xac, 0x43, 0x46, 0x3c, 0x57, 0xf0, 0x65, 0x34, 0x23, 0x82, 0x7a,
-	0x26, 0x34, 0xb4, 0xe6, 0x01, 0x36, 0x32, 0xc7, 0x34, 0xc7, 0x91, 0x0d, 0xa5, 0x98, 0x52, 0x6e,
-	0x56, 0x9f, 0xcc, 0xd0, 0xf1, 0x3c, 0x4e, 0x93, 0x04, 0x4b, 0x9e, 0xf5, 0x97, 0x06, 0x95, 0xcd,
-	0x07, 0x43, 0xcf, 0x00, 0x39, 0xb7, 0xce, 0x68, 0xea, 0x4e, 0x7f, 0x1c, 0x3b, 0xee, 0xbb, 0xd1,
-	0xf7, 0xa3, 0x9b, 0xf7, 0x23, 0x63, 0x07, 0x9d, 0x82, 0x59, 0xc0, 0x7b, 0xc3, 0x41, 0x7a, 0xbe,
-	0x76, 0x3a, 0x57, 0x0e, 0x36, 0xb4, 0x07, 0xde, 0x89, 0x83, 0x6f, 0x1d, 0x9c, 0x7b, 0x77, 0xd1,
-	0x67, 0xf0, 0x62, 0x3b, 0xf6, 0xad, 0x33, 0x99, 0x74, 0xfa, 0x8e, 0xb1, 0xf7, 0xc0, 0x9d, 0x05,
-	0xe7, 0xee, 0x12, 0x6a, 0xc0, 0xe9, 0x23, 0x99, 0x3b, 0xc3, 0x37, 0x6e, 0x6f, 0x78, 0x33, 0x71,
-	0x8c, 0xfd, 0xc7, 0x05, 0xa6, 0xb8, 0x33, 0x18, 0x3a, 0xd8, 0x28, 0xa3, 0x4f, 0xe0, 0xa8, 0x28,
-	0xd0, 0x19, 0xf5, 0x9c, 0xa1, 0xa1, 0x5b, 0x5d, 0x28, 0xab, 0x36, 0x43, 0x08, 0x0e, 0x87, 0x37,
-	0xfd, 0xbe, 0x83, 0x0b, 0xef, 0x3d, 0x82, 0x7a, 0x86, 0xa9, 0x8c, 0x86, 0x56, 0x80, 0x54, 0x0a,
-	0x63, 0xb7, 0x5b, 0x01, 0x3d, 0xab, 0xbf, 0xf5, 0x41, 0x83, 0x5a, 0xb1, 0xf9, 0xd0, 0x6b, 0x38,
-	0x58, 0x50, 0x41, 0x3c, 0x22, 0x48, 0x36, 0xbc, 0x9f, 0x3e, 0xda, 0x25, 0x8a, 0x82, 0x37, 0x64,
-	0x74, 0x06, 0xd5, 0x05, 0x15, 0x73, 0xe6, 0xb9, 0x11, 0x59, 0x50, 0x39, 0xc0, 0x15, 0x0c, 0x0a,
-	0x1a, 0x91, 0x05, 0x45, 0xa7, 0x50, 0x21, 0x4b, 0x31, 0x67, 0x3c, 0x10, 0x6b, 0x39, 0xb6, 0x15,
-	0x7c, 0x0f, 0xa0, 0x0b, 0xd0, 0xd3, 0x45, 0xc0, 0x96, 0x42, 0x8e, 0x6b, 0xb5, 0xfd, 0x62, 0x6b,
-	0x67, 0x5c, 0x65, 0x9b, 0x09, 0xe7, 0x4c, 0xab, 0x0f, 0xb5, 0x62, 0xc7, 0xff, 0xef, 0xcb, 0x5b,
-	0x7f, 0x68, 0xa0, 0x67, 0x1d, 0xfc, 0x51, 0x15, 0x48, 0x04, 0x11, 0xcb, 0xc4, 0x9d, 0x31, 0x4f,
-	0x55, 0xa0, 0x8e, 0x41, 0x41, 0x3d, 0xe6, 0x51, 0xf4, 0x39, 0x1c, 0x66, 0x84, 0x7c, 0x0e, 0x55,
-	0x19, 0xea, 0x0a, 0xcd, 0x46, 0xaf, 0x40, 0xf3, 0xa8, 0x20, 0x41, 0x98, 0xc8, 0x8a, 0xd4, 0x72,
-	0xda, 0x95, 0x02, 0xad, 0x57, 0xa0, 0xe7, 0x11, 0xcf, 0xa0, 0x1c, 0xd2, 0xc8, 0x17, 0x73, 0x79,
-	0xe1, 0x3a, 0xce, 0x2c, 0x84, 0xa0, 0x24, 0x9f, 0xb1, 0x2b, 0xe3, 0xe5, 0xd9, 0xea, 0xc2, 0x41,
-	0x7e, 0x77, 0x74, 0x09, 0xfb, 0x34, 0xdd, 0x5c, 0xa6, 0xd6, 0xd8, 0x6b, 0x56, 0xdb, 0x8d, 0x7f,
-	0x79, 0xa7, 0xdc, 0x70, 0x58, 0xd1, 0xad, 0xd7, 0x50, 0xff, 0x07, 0x8e, 0x0c, 0xd8, 0xfb, 0x95,
-	0xae, 0x65, 0xf6, 0x0a, 0x4e, 0x8f, 0xe8, 0x18, 0xf6, 0x57, 0x24, 0x5c, 0xd2, 0x2c, 0xb7, 0x32,
-	0xac, 0x3f, 0x35, 0xd0, 0xb3, 0x39, 0x46, 0x17, 0xd9, 0x76, 0xd6, 0xe4, 0x72, 0x3d, 0x7b, 0x7a,
-	0xe2, 0xed, 0xc2, 0x4e, 0x36, 0x41, 0x27, 0x0a, 0xcd, 0x3a, 0x2c, 0x37, 0xd3, 0x9f, 0x47, 0x10,
-	0xbb, 0x31, 0xe3, 0x42, 0x56, 0xb5, 0x8e, 0xcb, 0x41, 0x3c, 0x66, 0x5c, 0x58, 0x0e, 0x94, 0xe4,
-	0x8e, 0x30, 0xa0, 0xf6, 0x60, 0x3b, 0xd4, 0xa1, 0x22, 0x91, 0xc1, 0xf8, 0xf6, 0x6b, 0x43, 0x2b,
-	0x9a, 0x97, 0xc6, 0xee, 0xc6, 0x7c, 0x37, 0x1a, 0xfc, 0x60, 0xec, 0x75, 0x7f, 0x86, 0xe3, 0x80,
-	0x6d, 0x5f, 0xb2, 0x7b, 0xd8, 0x95, 0xd6, 0x90, 0xf9, 0xe3, 0xb4, 0x51, 0xc7, 0xda, 0x4f, 0xed,
-	0xac, 0x71, 0x7d, 0x16, 0x92, 0xc8, 0xb7, 0x19, 0xf7, 0x5b, 0xf9, 0x7f, 0x59, 0x85, 0x49, 0xd3,
-	0xdd, 0x98, 0xee, 0xea, 0xfc, 0xae, 0x2c, 0xbb, 0xfc, 0xe2, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0x10, 0x93, 0x68, 0x41, 0xc2, 0x07, 0x00, 0x00,
+func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte {
+	file_grpc_binlog_v1_binarylog_proto_rawDescOnce.Do(func() {
+		file_grpc_binlog_v1_binarylog_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_binlog_v1_binarylog_proto_rawDescData)
+	})
+	return file_grpc_binlog_v1_binarylog_proto_rawDescData
+}
+
+var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
+var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{
+	(GrpcLogEntry_EventType)(0), // 0: grpc.binarylog.v1.GrpcLogEntry.EventType
+	(GrpcLogEntry_Logger)(0),    // 1: grpc.binarylog.v1.GrpcLogEntry.Logger
+	(Address_Type)(0),           // 2: grpc.binarylog.v1.Address.Type
+	(*GrpcLogEntry)(nil),        // 3: grpc.binarylog.v1.GrpcLogEntry
+	(*ClientHeader)(nil),        // 4: grpc.binarylog.v1.ClientHeader
+	(*ServerHeader)(nil),        // 5: grpc.binarylog.v1.ServerHeader
+	(*Trailer)(nil),             // 6: grpc.binarylog.v1.Trailer
+	(*Message)(nil),             // 7: grpc.binarylog.v1.Message
+	(*Metadata)(nil),            // 8: grpc.binarylog.v1.Metadata
+	(*MetadataEntry)(nil),       // 9: grpc.binarylog.v1.MetadataEntry
+	(*Address)(nil),             // 10: grpc.binarylog.v1.Address
+	(*timestamp.Timestamp)(nil), // 11: google.protobuf.Timestamp
+	(*duration.Duration)(nil),   // 12: google.protobuf.Duration
+}
+var file_grpc_binlog_v1_binarylog_proto_depIdxs = []int32{
+	11, // 0: grpc.binarylog.v1.GrpcLogEntry.timestamp:type_name -> google.protobuf.Timestamp
+	0,  // 1: grpc.binarylog.v1.GrpcLogEntry.type:type_name -> grpc.binarylog.v1.GrpcLogEntry.EventType
+	1,  // 2: grpc.binarylog.v1.GrpcLogEntry.logger:type_name -> grpc.binarylog.v1.GrpcLogEntry.Logger
+	4,  // 3: grpc.binarylog.v1.GrpcLogEntry.client_header:type_name -> grpc.binarylog.v1.ClientHeader
+	5,  // 4: grpc.binarylog.v1.GrpcLogEntry.server_header:type_name -> grpc.binarylog.v1.ServerHeader
+	7,  // 5: grpc.binarylog.v1.GrpcLogEntry.message:type_name -> grpc.binarylog.v1.Message
+	6,  // 6: grpc.binarylog.v1.GrpcLogEntry.trailer:type_name -> grpc.binarylog.v1.Trailer
+	10, // 7: grpc.binarylog.v1.GrpcLogEntry.peer:type_name -> grpc.binarylog.v1.Address
+	8,  // 8: grpc.binarylog.v1.ClientHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
+	12, // 9: grpc.binarylog.v1.ClientHeader.timeout:type_name -> google.protobuf.Duration
+	8,  // 10: grpc.binarylog.v1.ServerHeader.metadata:type_name -> grpc.binarylog.v1.Metadata
+	8,  // 11: grpc.binarylog.v1.Trailer.metadata:type_name -> grpc.binarylog.v1.Metadata
+	9,  // 12: grpc.binarylog.v1.Metadata.entry:type_name -> grpc.binarylog.v1.MetadataEntry
+	2,  // 13: grpc.binarylog.v1.Address.type:type_name -> grpc.binarylog.v1.Address.Type
+	14, // [14:14] is the sub-list for method output_type
+	14, // [14:14] is the sub-list for method input_type
+	14, // [14:14] is the sub-list for extension type_name
+	14, // [14:14] is the sub-list for extension extendee
+	0,  // [0:14] is the sub-list for field type_name
+}
+
+func init() { file_grpc_binlog_v1_binarylog_proto_init() }
+func file_grpc_binlog_v1_binarylog_proto_init() {
+	if File_grpc_binlog_v1_binarylog_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcLogEntry); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ClientHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerHeader); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Trailer); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Message); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Metadata); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MetadataEntry); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*GrpcLogEntry_ClientHeader)(nil),
+		(*GrpcLogEntry_ServerHeader)(nil),
+		(*GrpcLogEntry_Message)(nil),
+		(*GrpcLogEntry_Trailer)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_binlog_v1_binarylog_proto_rawDesc,
+			NumEnums:      3,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_binlog_v1_binarylog_proto_goTypes,
+		DependencyIndexes: file_grpc_binlog_v1_binarylog_proto_depIdxs,
+		EnumInfos:         file_grpc_binlog_v1_binarylog_proto_enumTypes,
+		MessageInfos:      file_grpc_binlog_v1_binarylog_proto_msgTypes,
+	}.Build()
+	File_grpc_binlog_v1_binarylog_proto = out.File
+	file_grpc_binlog_v1_binarylog_proto_rawDesc = nil
+	file_grpc_binlog_v1_binarylog_proto_goTypes = nil
+	file_grpc_binlog_v1_binarylog_proto_depIdxs = nil
 }
diff --git a/channelz/grpc_channelz_v1/channelz.pb.go b/channelz/grpc_channelz_v1/channelz.pb.go
index 9c364e1..ca98e68 100644
--- a/channelz/grpc_channelz_v1/channelz.pb.go
+++ b/channelz/grpc_channelz_v1/channelz.pb.go
@@ -1,28 +1,54 @@
+// Copyright 2018 The 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.
+
+// This file defines an interface for exporting monitoring information
+// out of gRPC servers.  See the full design at
+// https://github.com/grpc/proposal/blob/master/A14-channelz.md
+//
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/channelz/v1/channelz.proto
 
 package grpc_channelz_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
 	wrappers "github.com/golang/protobuf/ptypes/wrappers"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ChannelConnectivityState_State int32
 
@@ -35,30 +61,51 @@
 	ChannelConnectivityState_SHUTDOWN          ChannelConnectivityState_State = 5
 )
 
-var ChannelConnectivityState_State_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "IDLE",
-	2: "CONNECTING",
-	3: "READY",
-	4: "TRANSIENT_FAILURE",
-	5: "SHUTDOWN",
-}
+// Enum value maps for ChannelConnectivityState_State.
+var (
+	ChannelConnectivityState_State_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "IDLE",
+		2: "CONNECTING",
+		3: "READY",
+		4: "TRANSIENT_FAILURE",
+		5: "SHUTDOWN",
+	}
+	ChannelConnectivityState_State_value = map[string]int32{
+		"UNKNOWN":           0,
+		"IDLE":              1,
+		"CONNECTING":        2,
+		"READY":             3,
+		"TRANSIENT_FAILURE": 4,
+		"SHUTDOWN":          5,
+	}
+)
 
-var ChannelConnectivityState_State_value = map[string]int32{
-	"UNKNOWN":           0,
-	"IDLE":              1,
-	"CONNECTING":        2,
-	"READY":             3,
-	"TRANSIENT_FAILURE": 4,
-	"SHUTDOWN":          5,
+func (x ChannelConnectivityState_State) Enum() *ChannelConnectivityState_State {
+	p := new(ChannelConnectivityState_State)
+	*p = x
+	return p
 }
 
 func (x ChannelConnectivityState_State) String() string {
-	return proto.EnumName(ChannelConnectivityState_State_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ChannelConnectivityState_State) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_channelz_v1_channelz_proto_enumTypes[0].Descriptor()
+}
+
+func (ChannelConnectivityState_State) Type() protoreflect.EnumType {
+	return &file_grpc_channelz_v1_channelz_proto_enumTypes[0]
+}
+
+func (x ChannelConnectivityState_State) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ChannelConnectivityState_State.Descriptor instead.
 func (ChannelConnectivityState_State) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{2, 0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2, 0}
 }
 
 // The supported severity levels of trace events.
@@ -71,34 +118,59 @@
 	ChannelTraceEvent_CT_ERROR   ChannelTraceEvent_Severity = 3
 )
 
-var ChannelTraceEvent_Severity_name = map[int32]string{
-	0: "CT_UNKNOWN",
-	1: "CT_INFO",
-	2: "CT_WARNING",
-	3: "CT_ERROR",
-}
+// Enum value maps for ChannelTraceEvent_Severity.
+var (
+	ChannelTraceEvent_Severity_name = map[int32]string{
+		0: "CT_UNKNOWN",
+		1: "CT_INFO",
+		2: "CT_WARNING",
+		3: "CT_ERROR",
+	}
+	ChannelTraceEvent_Severity_value = map[string]int32{
+		"CT_UNKNOWN": 0,
+		"CT_INFO":    1,
+		"CT_WARNING": 2,
+		"CT_ERROR":   3,
+	}
+)
 
-var ChannelTraceEvent_Severity_value = map[string]int32{
-	"CT_UNKNOWN": 0,
-	"CT_INFO":    1,
-	"CT_WARNING": 2,
-	"CT_ERROR":   3,
+func (x ChannelTraceEvent_Severity) Enum() *ChannelTraceEvent_Severity {
+	p := new(ChannelTraceEvent_Severity)
+	*p = x
+	return p
 }
 
 func (x ChannelTraceEvent_Severity) String() string {
-	return proto.EnumName(ChannelTraceEvent_Severity_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ChannelTraceEvent_Severity) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_channelz_v1_channelz_proto_enumTypes[1].Descriptor()
+}
+
+func (ChannelTraceEvent_Severity) Type() protoreflect.EnumType {
+	return &file_grpc_channelz_v1_channelz_proto_enumTypes[1]
+}
+
+func (x ChannelTraceEvent_Severity) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ChannelTraceEvent_Severity.Descriptor instead.
 func (ChannelTraceEvent_Severity) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{4, 0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4, 0}
 }
 
 // Channel is a logical grouping of channels, subchannels, and sockets.
 type Channel struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for this channel. This should bet set.
 	Ref *ChannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this channel.
-	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
 	// There are no ordering guarantees on the order of channel refs.
 	// There may not be cycles in the ref graph.
 	// A channel ref may be present in more than one channel or subchannel.
@@ -109,68 +181,72 @@
 	// A sub channel ref may be present in more than one channel or subchannel.
 	SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
 	// There are no ordering guarantees on the order of sockets.
-	SocketRef            []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
 }
 
-func (m *Channel) Reset()         { *m = Channel{} }
-func (m *Channel) String() string { return proto.CompactTextString(m) }
-func (*Channel) ProtoMessage()    {}
+func (x *Channel) Reset() {
+	*x = Channel{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Channel) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Channel) ProtoMessage() {}
+
+func (x *Channel) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Channel.ProtoReflect.Descriptor instead.
 func (*Channel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{0}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Channel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Channel.Unmarshal(m, b)
-}
-func (m *Channel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Channel.Marshal(b, m, deterministic)
-}
-func (m *Channel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Channel.Merge(m, src)
-}
-func (m *Channel) XXX_Size() int {
-	return xxx_messageInfo_Channel.Size(m)
-}
-func (m *Channel) XXX_DiscardUnknown() {
-	xxx_messageInfo_Channel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Channel proto.InternalMessageInfo
-
-func (m *Channel) GetRef() *ChannelRef {
-	if m != nil {
-		return m.Ref
+func (x *Channel) GetRef() *ChannelRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Channel) GetData() *ChannelData {
-	if m != nil {
-		return m.Data
+func (x *Channel) GetData() *ChannelData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Channel) GetChannelRef() []*ChannelRef {
-	if m != nil {
-		return m.ChannelRef
+func (x *Channel) GetChannelRef() []*ChannelRef {
+	if x != nil {
+		return x.ChannelRef
 	}
 	return nil
 }
 
-func (m *Channel) GetSubchannelRef() []*SubchannelRef {
-	if m != nil {
-		return m.SubchannelRef
+func (x *Channel) GetSubchannelRef() []*SubchannelRef {
+	if x != nil {
+		return x.SubchannelRef
 	}
 	return nil
 }
 
-func (m *Channel) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *Channel) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
@@ -178,10 +254,14 @@
 // Subchannel is a logical grouping of channels, subchannels, and sockets.
 // A subchannel is load balanced over by it's ancestor
 type Subchannel struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for this channel.
 	Ref *SubchannelRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this channel.
-	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
+	Data *ChannelData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` // At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
 	// There are no ordering guarantees on the order of channel refs.
 	// There may not be cycles in the ref graph.
 	// A channel ref may be present in more than one channel or subchannel.
@@ -192,68 +272,72 @@
 	// A sub channel ref may be present in more than one channel or subchannel.
 	SubchannelRef []*SubchannelRef `protobuf:"bytes,4,rep,name=subchannel_ref,json=subchannelRef,proto3" json:"subchannel_ref,omitempty"`
 	// There are no ordering guarantees on the order of sockets.
-	SocketRef            []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	SocketRef []*SocketRef `protobuf:"bytes,5,rep,name=socket_ref,json=socketRef,proto3" json:"socket_ref,omitempty"`
 }
 
-func (m *Subchannel) Reset()         { *m = Subchannel{} }
-func (m *Subchannel) String() string { return proto.CompactTextString(m) }
-func (*Subchannel) ProtoMessage()    {}
+func (x *Subchannel) Reset() {
+	*x = Subchannel{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Subchannel) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Subchannel) ProtoMessage() {}
+
+func (x *Subchannel) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Subchannel.ProtoReflect.Descriptor instead.
 func (*Subchannel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{1}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Subchannel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Subchannel.Unmarshal(m, b)
-}
-func (m *Subchannel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Subchannel.Marshal(b, m, deterministic)
-}
-func (m *Subchannel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Subchannel.Merge(m, src)
-}
-func (m *Subchannel) XXX_Size() int {
-	return xxx_messageInfo_Subchannel.Size(m)
-}
-func (m *Subchannel) XXX_DiscardUnknown() {
-	xxx_messageInfo_Subchannel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Subchannel proto.InternalMessageInfo
-
-func (m *Subchannel) GetRef() *SubchannelRef {
-	if m != nil {
-		return m.Ref
+func (x *Subchannel) GetRef() *SubchannelRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Subchannel) GetData() *ChannelData {
-	if m != nil {
-		return m.Data
+func (x *Subchannel) GetData() *ChannelData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Subchannel) GetChannelRef() []*ChannelRef {
-	if m != nil {
-		return m.ChannelRef
+func (x *Subchannel) GetChannelRef() []*ChannelRef {
+	if x != nil {
+		return x.ChannelRef
 	}
 	return nil
 }
 
-func (m *Subchannel) GetSubchannelRef() []*SubchannelRef {
-	if m != nil {
-		return m.SubchannelRef
+func (x *Subchannel) GetSubchannelRef() []*SubchannelRef {
+	if x != nil {
+		return x.SubchannelRef
 	}
 	return nil
 }
 
-func (m *Subchannel) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *Subchannel) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
@@ -261,46 +345,58 @@
 // These come from the specified states in this document:
 // https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md
 type ChannelConnectivityState struct {
-	State                ChannelConnectivityState_State `protobuf:"varint,1,opt,name=state,proto3,enum=grpc.channelz.v1.ChannelConnectivityState_State" json:"state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	State ChannelConnectivityState_State `protobuf:"varint,1,opt,name=state,proto3,enum=grpc.channelz.v1.ChannelConnectivityState_State" json:"state,omitempty"`
 }
 
-func (m *ChannelConnectivityState) Reset()         { *m = ChannelConnectivityState{} }
-func (m *ChannelConnectivityState) String() string { return proto.CompactTextString(m) }
-func (*ChannelConnectivityState) ProtoMessage()    {}
+func (x *ChannelConnectivityState) Reset() {
+	*x = ChannelConnectivityState{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelConnectivityState) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelConnectivityState) ProtoMessage() {}
+
+func (x *ChannelConnectivityState) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelConnectivityState.ProtoReflect.Descriptor instead.
 func (*ChannelConnectivityState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{2}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ChannelConnectivityState) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelConnectivityState.Unmarshal(m, b)
-}
-func (m *ChannelConnectivityState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelConnectivityState.Marshal(b, m, deterministic)
-}
-func (m *ChannelConnectivityState) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelConnectivityState.Merge(m, src)
-}
-func (m *ChannelConnectivityState) XXX_Size() int {
-	return xxx_messageInfo_ChannelConnectivityState.Size(m)
-}
-func (m *ChannelConnectivityState) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelConnectivityState.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelConnectivityState proto.InternalMessageInfo
-
-func (m *ChannelConnectivityState) GetState() ChannelConnectivityState_State {
-	if m != nil {
-		return m.State
+func (x *ChannelConnectivityState) GetState() ChannelConnectivityState_State {
+	if x != nil {
+		return x.State
 	}
 	return ChannelConnectivityState_UNKNOWN
 }
 
 // Channel data is data related to a specific Channel or Subchannel.
 type ChannelData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The connectivity state of the channel or subchannel.  Implementations
 	// should always set this.
 	State *ChannelConnectivityState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
@@ -316,81 +412,85 @@
 	CallsFailed int64 `protobuf:"varint,6,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
 	// The last time a call was started on the channel.
 	LastCallStartedTimestamp *timestamp.Timestamp `protobuf:"bytes,7,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}             `json:"-"`
-	XXX_unrecognized         []byte               `json:"-"`
-	XXX_sizecache            int32                `json:"-"`
 }
 
-func (m *ChannelData) Reset()         { *m = ChannelData{} }
-func (m *ChannelData) String() string { return proto.CompactTextString(m) }
-func (*ChannelData) ProtoMessage()    {}
+func (x *ChannelData) Reset() {
+	*x = ChannelData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelData) ProtoMessage() {}
+
+func (x *ChannelData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelData.ProtoReflect.Descriptor instead.
 func (*ChannelData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{3}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ChannelData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelData.Unmarshal(m, b)
-}
-func (m *ChannelData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelData.Marshal(b, m, deterministic)
-}
-func (m *ChannelData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelData.Merge(m, src)
-}
-func (m *ChannelData) XXX_Size() int {
-	return xxx_messageInfo_ChannelData.Size(m)
-}
-func (m *ChannelData) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelData proto.InternalMessageInfo
-
-func (m *ChannelData) GetState() *ChannelConnectivityState {
-	if m != nil {
-		return m.State
+func (x *ChannelData) GetState() *ChannelConnectivityState {
+	if x != nil {
+		return x.State
 	}
 	return nil
 }
 
-func (m *ChannelData) GetTarget() string {
-	if m != nil {
-		return m.Target
+func (x *ChannelData) GetTarget() string {
+	if x != nil {
+		return x.Target
 	}
 	return ""
 }
 
-func (m *ChannelData) GetTrace() *ChannelTrace {
-	if m != nil {
-		return m.Trace
+func (x *ChannelData) GetTrace() *ChannelTrace {
+	if x != nil {
+		return x.Trace
 	}
 	return nil
 }
 
-func (m *ChannelData) GetCallsStarted() int64 {
-	if m != nil {
-		return m.CallsStarted
+func (x *ChannelData) GetCallsStarted() int64 {
+	if x != nil {
+		return x.CallsStarted
 	}
 	return 0
 }
 
-func (m *ChannelData) GetCallsSucceeded() int64 {
-	if m != nil {
-		return m.CallsSucceeded
+func (x *ChannelData) GetCallsSucceeded() int64 {
+	if x != nil {
+		return x.CallsSucceeded
 	}
 	return 0
 }
 
-func (m *ChannelData) GetCallsFailed() int64 {
-	if m != nil {
-		return m.CallsFailed
+func (x *ChannelData) GetCallsFailed() int64 {
+	if x != nil {
+		return x.CallsFailed
 	}
 	return 0
 }
 
-func (m *ChannelData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastCallStartedTimestamp
+func (x *ChannelData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastCallStartedTimestamp
 	}
 	return nil
 }
@@ -398,6 +498,10 @@
 // A trace event is an interesting thing that happened to a channel or
 // subchannel, such as creation, address resolution, subchannel creation, etc.
 type ChannelTraceEvent struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// High level description of the event.
 	Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
 	// the severity of the trace event
@@ -409,57 +513,82 @@
 	// this field would be filled if this trace event was for a subchannel being
 	// created.
 	//
-	// Types that are valid to be assigned to ChildRef:
+	// Types that are assignable to ChildRef:
 	//	*ChannelTraceEvent_ChannelRef
 	//	*ChannelTraceEvent_SubchannelRef
-	ChildRef             isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	ChildRef isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"`
 }
 
-func (m *ChannelTraceEvent) Reset()         { *m = ChannelTraceEvent{} }
-func (m *ChannelTraceEvent) String() string { return proto.CompactTextString(m) }
-func (*ChannelTraceEvent) ProtoMessage()    {}
+func (x *ChannelTraceEvent) Reset() {
+	*x = ChannelTraceEvent{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelTraceEvent) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelTraceEvent) ProtoMessage() {}
+
+func (x *ChannelTraceEvent) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelTraceEvent.ProtoReflect.Descriptor instead.
 func (*ChannelTraceEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{4}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ChannelTraceEvent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelTraceEvent.Unmarshal(m, b)
-}
-func (m *ChannelTraceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelTraceEvent.Marshal(b, m, deterministic)
-}
-func (m *ChannelTraceEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelTraceEvent.Merge(m, src)
-}
-func (m *ChannelTraceEvent) XXX_Size() int {
-	return xxx_messageInfo_ChannelTraceEvent.Size(m)
-}
-func (m *ChannelTraceEvent) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelTraceEvent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelTraceEvent proto.InternalMessageInfo
-
-func (m *ChannelTraceEvent) GetDescription() string {
-	if m != nil {
-		return m.Description
+func (x *ChannelTraceEvent) GetDescription() string {
+	if x != nil {
+		return x.Description
 	}
 	return ""
 }
 
-func (m *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity {
-	if m != nil {
-		return m.Severity
+func (x *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity {
+	if x != nil {
+		return x.Severity
 	}
 	return ChannelTraceEvent_CT_UNKNOWN
 }
 
-func (m *ChannelTraceEvent) GetTimestamp() *timestamp.Timestamp {
+func (x *ChannelTraceEvent) GetTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.Timestamp
+	}
+	return nil
+}
+
+func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef {
 	if m != nil {
-		return m.Timestamp
+		return m.ChildRef
+	}
+	return nil
+}
+
+func (x *ChannelTraceEvent) GetChannelRef() *ChannelRef {
+	if x, ok := x.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok {
+		return x.ChannelRef
+	}
+	return nil
+}
+
+func (x *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef {
+	if x, ok := x.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok {
+		return x.SubchannelRef
 	}
 	return nil
 }
@@ -480,37 +609,12 @@
 
 func (*ChannelTraceEvent_SubchannelRef) isChannelTraceEvent_ChildRef() {}
 
-func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef {
-	if m != nil {
-		return m.ChildRef
-	}
-	return nil
-}
-
-func (m *ChannelTraceEvent) GetChannelRef() *ChannelRef {
-	if x, ok := m.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok {
-		return x.ChannelRef
-	}
-	return nil
-}
-
-func (m *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef {
-	if x, ok := m.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok {
-		return x.SubchannelRef
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ChannelTraceEvent) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ChannelTraceEvent_ChannelRef)(nil),
-		(*ChannelTraceEvent_SubchannelRef)(nil),
-	}
-}
-
 // ChannelTrace represents the recent events that have occurred on the channel.
 type ChannelTrace struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Number of events ever logged in this tracing object. This can differ from
 	// events.size() because events can be overwritten or garbage collected by
 	// implementations.
@@ -518,254 +622,290 @@
 	// Time that this channel was created.
 	CreationTimestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=creation_timestamp,json=creationTimestamp,proto3" json:"creation_timestamp,omitempty"`
 	// List of events that have occurred on this channel.
-	Events               []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Events []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events,proto3" json:"events,omitempty"`
 }
 
-func (m *ChannelTrace) Reset()         { *m = ChannelTrace{} }
-func (m *ChannelTrace) String() string { return proto.CompactTextString(m) }
-func (*ChannelTrace) ProtoMessage()    {}
+func (x *ChannelTrace) Reset() {
+	*x = ChannelTrace{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelTrace) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelTrace) ProtoMessage() {}
+
+func (x *ChannelTrace) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelTrace.ProtoReflect.Descriptor instead.
 func (*ChannelTrace) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{5}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *ChannelTrace) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelTrace.Unmarshal(m, b)
-}
-func (m *ChannelTrace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelTrace.Marshal(b, m, deterministic)
-}
-func (m *ChannelTrace) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelTrace.Merge(m, src)
-}
-func (m *ChannelTrace) XXX_Size() int {
-	return xxx_messageInfo_ChannelTrace.Size(m)
-}
-func (m *ChannelTrace) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelTrace.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelTrace proto.InternalMessageInfo
-
-func (m *ChannelTrace) GetNumEventsLogged() int64 {
-	if m != nil {
-		return m.NumEventsLogged
+func (x *ChannelTrace) GetNumEventsLogged() int64 {
+	if x != nil {
+		return x.NumEventsLogged
 	}
 	return 0
 }
 
-func (m *ChannelTrace) GetCreationTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.CreationTimestamp
+func (x *ChannelTrace) GetCreationTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.CreationTimestamp
 	}
 	return nil
 }
 
-func (m *ChannelTrace) GetEvents() []*ChannelTraceEvent {
-	if m != nil {
-		return m.Events
+func (x *ChannelTrace) GetEvents() []*ChannelTraceEvent {
+	if x != nil {
+		return x.Events
 	}
 	return nil
 }
 
 // ChannelRef is a reference to a Channel.
 type ChannelRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this channel.  Must be a positive number.
 	ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
 	// An optional name associated with the channel.
-	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *ChannelRef) Reset()         { *m = ChannelRef{} }
-func (m *ChannelRef) String() string { return proto.CompactTextString(m) }
-func (*ChannelRef) ProtoMessage()    {}
+func (x *ChannelRef) Reset() {
+	*x = ChannelRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChannelRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChannelRef) ProtoMessage() {}
+
+func (x *ChannelRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChannelRef.ProtoReflect.Descriptor instead.
 func (*ChannelRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{6}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ChannelRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ChannelRef.Unmarshal(m, b)
-}
-func (m *ChannelRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ChannelRef.Marshal(b, m, deterministic)
-}
-func (m *ChannelRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChannelRef.Merge(m, src)
-}
-func (m *ChannelRef) XXX_Size() int {
-	return xxx_messageInfo_ChannelRef.Size(m)
-}
-func (m *ChannelRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_ChannelRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ChannelRef proto.InternalMessageInfo
-
-func (m *ChannelRef) GetChannelId() int64 {
-	if m != nil {
-		return m.ChannelId
+func (x *ChannelRef) GetChannelId() int64 {
+	if x != nil {
+		return x.ChannelId
 	}
 	return 0
 }
 
-func (m *ChannelRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ChannelRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // SubchannelRef is a reference to a Subchannel.
 type SubchannelRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this subchannel.  Must be a positive number.
 	SubchannelId int64 `protobuf:"varint,7,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
 	// An optional name associated with the subchannel.
-	Name                 string   `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *SubchannelRef) Reset()         { *m = SubchannelRef{} }
-func (m *SubchannelRef) String() string { return proto.CompactTextString(m) }
-func (*SubchannelRef) ProtoMessage()    {}
+func (x *SubchannelRef) Reset() {
+	*x = SubchannelRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SubchannelRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SubchannelRef) ProtoMessage() {}
+
+func (x *SubchannelRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SubchannelRef.ProtoReflect.Descriptor instead.
 func (*SubchannelRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{7}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *SubchannelRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SubchannelRef.Unmarshal(m, b)
-}
-func (m *SubchannelRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SubchannelRef.Marshal(b, m, deterministic)
-}
-func (m *SubchannelRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SubchannelRef.Merge(m, src)
-}
-func (m *SubchannelRef) XXX_Size() int {
-	return xxx_messageInfo_SubchannelRef.Size(m)
-}
-func (m *SubchannelRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_SubchannelRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SubchannelRef proto.InternalMessageInfo
-
-func (m *SubchannelRef) GetSubchannelId() int64 {
-	if m != nil {
-		return m.SubchannelId
+func (x *SubchannelRef) GetSubchannelId() int64 {
+	if x != nil {
+		return x.SubchannelId
 	}
 	return 0
 }
 
-func (m *SubchannelRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SubchannelRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // SocketRef is a reference to a Socket.
 type SocketRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The globally unique id for this socket.  Must be a positive number.
 	SocketId int64 `protobuf:"varint,3,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
 	// An optional name associated with the socket.
-	Name                 string   `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *SocketRef) Reset()         { *m = SocketRef{} }
-func (m *SocketRef) String() string { return proto.CompactTextString(m) }
-func (*SocketRef) ProtoMessage()    {}
+func (x *SocketRef) Reset() {
+	*x = SocketRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketRef) ProtoMessage() {}
+
+func (x *SocketRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketRef.ProtoReflect.Descriptor instead.
 func (*SocketRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{8}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *SocketRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketRef.Unmarshal(m, b)
-}
-func (m *SocketRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketRef.Marshal(b, m, deterministic)
-}
-func (m *SocketRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketRef.Merge(m, src)
-}
-func (m *SocketRef) XXX_Size() int {
-	return xxx_messageInfo_SocketRef.Size(m)
-}
-func (m *SocketRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketRef proto.InternalMessageInfo
-
-func (m *SocketRef) GetSocketId() int64 {
-	if m != nil {
-		return m.SocketId
+func (x *SocketRef) GetSocketId() int64 {
+	if x != nil {
+		return x.SocketId
 	}
 	return 0
 }
 
-func (m *SocketRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SocketRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // ServerRef is a reference to a Server.
 type ServerRef struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A globally unique identifier for this server.  Must be a positive number.
 	ServerId int64 `protobuf:"varint,5,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 	// An optional name associated with the server.
-	Name                 string   `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *ServerRef) Reset()         { *m = ServerRef{} }
-func (m *ServerRef) String() string { return proto.CompactTextString(m) }
-func (*ServerRef) ProtoMessage()    {}
+func (x *ServerRef) Reset() {
+	*x = ServerRef{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerRef) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerRef) ProtoMessage() {}
+
+func (x *ServerRef) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerRef.ProtoReflect.Descriptor instead.
 func (*ServerRef) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{9}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *ServerRef) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerRef.Unmarshal(m, b)
-}
-func (m *ServerRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerRef.Marshal(b, m, deterministic)
-}
-func (m *ServerRef) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerRef.Merge(m, src)
-}
-func (m *ServerRef) XXX_Size() int {
-	return xxx_messageInfo_ServerRef.Size(m)
-}
-func (m *ServerRef) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerRef.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerRef proto.InternalMessageInfo
-
-func (m *ServerRef) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *ServerRef) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
-func (m *ServerRef) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ServerRef) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
@@ -773,66 +913,78 @@
 // Server represents a single server.  There may be multiple servers in a single
 // program.
 type Server struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for a Server.  This should be set.
 	Ref *ServerRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// The associated data of the Server.
 	Data *ServerData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
 	// The sockets that the server is listening on.  There are no ordering
 	// guarantees.  This may be absent.
-	ListenSocket         []*SocketRef `protobuf:"bytes,3,rep,name=listen_socket,json=listenSocket,proto3" json:"listen_socket,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
-	XXX_unrecognized     []byte       `json:"-"`
-	XXX_sizecache        int32        `json:"-"`
+	ListenSocket []*SocketRef `protobuf:"bytes,3,rep,name=listen_socket,json=listenSocket,proto3" json:"listen_socket,omitempty"`
 }
 
-func (m *Server) Reset()         { *m = Server{} }
-func (m *Server) String() string { return proto.CompactTextString(m) }
-func (*Server) ProtoMessage()    {}
+func (x *Server) Reset() {
+	*x = Server{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Server) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Server) ProtoMessage() {}
+
+func (x *Server) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Server.ProtoReflect.Descriptor instead.
 func (*Server) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{10}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *Server) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Server.Unmarshal(m, b)
-}
-func (m *Server) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Server.Marshal(b, m, deterministic)
-}
-func (m *Server) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Server.Merge(m, src)
-}
-func (m *Server) XXX_Size() int {
-	return xxx_messageInfo_Server.Size(m)
-}
-func (m *Server) XXX_DiscardUnknown() {
-	xxx_messageInfo_Server.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Server proto.InternalMessageInfo
-
-func (m *Server) GetRef() *ServerRef {
-	if m != nil {
-		return m.Ref
+func (x *Server) GetRef() *ServerRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Server) GetData() *ServerData {
-	if m != nil {
-		return m.Data
+func (x *Server) GetData() *ServerData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Server) GetListenSocket() []*SocketRef {
-	if m != nil {
-		return m.ListenSocket
+func (x *Server) GetListenSocket() []*SocketRef {
+	if x != nil {
+		return x.ListenSocket
 	}
 	return nil
 }
 
 // ServerData is data for a specific Server.
 type ServerData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// A trace of recent events on the server.  May be absent.
 	Trace *ChannelTrace `protobuf:"bytes,1,opt,name=trace,proto3" json:"trace,omitempty"`
 	// The number of incoming calls started on the server
@@ -843,73 +995,81 @@
 	CallsFailed int64 `protobuf:"varint,4,opt,name=calls_failed,json=callsFailed,proto3" json:"calls_failed,omitempty"`
 	// The last time a call was started on the server.
 	LastCallStartedTimestamp *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_call_started_timestamp,json=lastCallStartedTimestamp,proto3" json:"last_call_started_timestamp,omitempty"`
-	XXX_NoUnkeyedLiteral     struct{}             `json:"-"`
-	XXX_unrecognized         []byte               `json:"-"`
-	XXX_sizecache            int32                `json:"-"`
 }
 
-func (m *ServerData) Reset()         { *m = ServerData{} }
-func (m *ServerData) String() string { return proto.CompactTextString(m) }
-func (*ServerData) ProtoMessage()    {}
+func (x *ServerData) Reset() {
+	*x = ServerData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerData) ProtoMessage() {}
+
+func (x *ServerData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerData.ProtoReflect.Descriptor instead.
 func (*ServerData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{11}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *ServerData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerData.Unmarshal(m, b)
-}
-func (m *ServerData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerData.Marshal(b, m, deterministic)
-}
-func (m *ServerData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerData.Merge(m, src)
-}
-func (m *ServerData) XXX_Size() int {
-	return xxx_messageInfo_ServerData.Size(m)
-}
-func (m *ServerData) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerData proto.InternalMessageInfo
-
-func (m *ServerData) GetTrace() *ChannelTrace {
-	if m != nil {
-		return m.Trace
+func (x *ServerData) GetTrace() *ChannelTrace {
+	if x != nil {
+		return x.Trace
 	}
 	return nil
 }
 
-func (m *ServerData) GetCallsStarted() int64 {
-	if m != nil {
-		return m.CallsStarted
+func (x *ServerData) GetCallsStarted() int64 {
+	if x != nil {
+		return x.CallsStarted
 	}
 	return 0
 }
 
-func (m *ServerData) GetCallsSucceeded() int64 {
-	if m != nil {
-		return m.CallsSucceeded
+func (x *ServerData) GetCallsSucceeded() int64 {
+	if x != nil {
+		return x.CallsSucceeded
 	}
 	return 0
 }
 
-func (m *ServerData) GetCallsFailed() int64 {
-	if m != nil {
-		return m.CallsFailed
+func (x *ServerData) GetCallsFailed() int64 {
+	if x != nil {
+		return x.CallsFailed
 	}
 	return 0
 }
 
-func (m *ServerData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastCallStartedTimestamp
+func (x *ServerData) GetLastCallStartedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastCallStartedTimestamp
 	}
 	return nil
 }
 
 // Information about an actual connection.  Pronounced "sock-ay".
 type Socket struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The identifier for the Socket.
 	Ref *SocketRef `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
 	// Data specific to this Socket.
@@ -923,75 +1083,79 @@
 	Security *Security `protobuf:"bytes,5,opt,name=security,proto3" json:"security,omitempty"`
 	// Optional, represents the name of the remote endpoint, if different than
 	// the original target name.
-	RemoteName           string   `protobuf:"bytes,6,opt,name=remote_name,json=remoteName,proto3" json:"remote_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	RemoteName string `protobuf:"bytes,6,opt,name=remote_name,json=remoteName,proto3" json:"remote_name,omitempty"`
 }
 
-func (m *Socket) Reset()         { *m = Socket{} }
-func (m *Socket) String() string { return proto.CompactTextString(m) }
-func (*Socket) ProtoMessage()    {}
+func (x *Socket) Reset() {
+	*x = Socket{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Socket) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Socket) ProtoMessage() {}
+
+func (x *Socket) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Socket.ProtoReflect.Descriptor instead.
 func (*Socket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{12}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{12}
 }
 
-func (m *Socket) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Socket.Unmarshal(m, b)
-}
-func (m *Socket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Socket.Marshal(b, m, deterministic)
-}
-func (m *Socket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Socket.Merge(m, src)
-}
-func (m *Socket) XXX_Size() int {
-	return xxx_messageInfo_Socket.Size(m)
-}
-func (m *Socket) XXX_DiscardUnknown() {
-	xxx_messageInfo_Socket.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Socket proto.InternalMessageInfo
-
-func (m *Socket) GetRef() *SocketRef {
-	if m != nil {
-		return m.Ref
+func (x *Socket) GetRef() *SocketRef {
+	if x != nil {
+		return x.Ref
 	}
 	return nil
 }
 
-func (m *Socket) GetData() *SocketData {
-	if m != nil {
-		return m.Data
+func (x *Socket) GetData() *SocketData {
+	if x != nil {
+		return x.Data
 	}
 	return nil
 }
 
-func (m *Socket) GetLocal() *Address {
-	if m != nil {
-		return m.Local
+func (x *Socket) GetLocal() *Address {
+	if x != nil {
+		return x.Local
 	}
 	return nil
 }
 
-func (m *Socket) GetRemote() *Address {
-	if m != nil {
-		return m.Remote
+func (x *Socket) GetRemote() *Address {
+	if x != nil {
+		return x.Remote
 	}
 	return nil
 }
 
-func (m *Socket) GetSecurity() *Security {
-	if m != nil {
-		return m.Security
+func (x *Socket) GetSecurity() *Security {
+	if x != nil {
+		return x.Security
 	}
 	return nil
 }
 
-func (m *Socket) GetRemoteName() string {
-	if m != nil {
-		return m.RemoteName
+func (x *Socket) GetRemoteName() string {
+	if x != nil {
+		return x.RemoteName
 	}
 	return ""
 }
@@ -1000,6 +1164,10 @@
 // are specific to the implementation, so there may be minor differences in
 // the semantics.  (e.g. flow control windows)
 type SocketData struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of streams that have been started.
 	StreamsStarted int64 `protobuf:"varint,1,opt,name=streams_started,json=streamsStarted,proto3" json:"streams_started,omitempty"`
 	// The number of streams that have ended successfully:
@@ -1037,164 +1205,204 @@
 	RemoteFlowControlWindow *wrappers.Int64Value `protobuf:"bytes,12,opt,name=remote_flow_control_window,json=remoteFlowControlWindow,proto3" json:"remote_flow_control_window,omitempty"`
 	// Socket options set on this socket.  May be absent if 'summary' is set
 	// on GetSocketRequest.
-	Option               []*SocketOption `protobuf:"bytes,13,rep,name=option,proto3" json:"option,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	Option []*SocketOption `protobuf:"bytes,13,rep,name=option,proto3" json:"option,omitempty"`
 }
 
-func (m *SocketData) Reset()         { *m = SocketData{} }
-func (m *SocketData) String() string { return proto.CompactTextString(m) }
-func (*SocketData) ProtoMessage()    {}
+func (x *SocketData) Reset() {
+	*x = SocketData{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketData) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketData) ProtoMessage() {}
+
+func (x *SocketData) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketData.ProtoReflect.Descriptor instead.
 func (*SocketData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{13}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{13}
 }
 
-func (m *SocketData) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketData.Unmarshal(m, b)
-}
-func (m *SocketData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketData.Marshal(b, m, deterministic)
-}
-func (m *SocketData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketData.Merge(m, src)
-}
-func (m *SocketData) XXX_Size() int {
-	return xxx_messageInfo_SocketData.Size(m)
-}
-func (m *SocketData) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketData.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketData proto.InternalMessageInfo
-
-func (m *SocketData) GetStreamsStarted() int64 {
-	if m != nil {
-		return m.StreamsStarted
+func (x *SocketData) GetStreamsStarted() int64 {
+	if x != nil {
+		return x.StreamsStarted
 	}
 	return 0
 }
 
-func (m *SocketData) GetStreamsSucceeded() int64 {
-	if m != nil {
-		return m.StreamsSucceeded
+func (x *SocketData) GetStreamsSucceeded() int64 {
+	if x != nil {
+		return x.StreamsSucceeded
 	}
 	return 0
 }
 
-func (m *SocketData) GetStreamsFailed() int64 {
-	if m != nil {
-		return m.StreamsFailed
+func (x *SocketData) GetStreamsFailed() int64 {
+	if x != nil {
+		return x.StreamsFailed
 	}
 	return 0
 }
 
-func (m *SocketData) GetMessagesSent() int64 {
-	if m != nil {
-		return m.MessagesSent
+func (x *SocketData) GetMessagesSent() int64 {
+	if x != nil {
+		return x.MessagesSent
 	}
 	return 0
 }
 
-func (m *SocketData) GetMessagesReceived() int64 {
-	if m != nil {
-		return m.MessagesReceived
+func (x *SocketData) GetMessagesReceived() int64 {
+	if x != nil {
+		return x.MessagesReceived
 	}
 	return 0
 }
 
-func (m *SocketData) GetKeepAlivesSent() int64 {
-	if m != nil {
-		return m.KeepAlivesSent
+func (x *SocketData) GetKeepAlivesSent() int64 {
+	if x != nil {
+		return x.KeepAlivesSent
 	}
 	return 0
 }
 
-func (m *SocketData) GetLastLocalStreamCreatedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastLocalStreamCreatedTimestamp
+func (x *SocketData) GetLastLocalStreamCreatedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastLocalStreamCreatedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastRemoteStreamCreatedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastRemoteStreamCreatedTimestamp
+func (x *SocketData) GetLastRemoteStreamCreatedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastRemoteStreamCreatedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastMessageSentTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastMessageSentTimestamp
+func (x *SocketData) GetLastMessageSentTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastMessageSentTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLastMessageReceivedTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.LastMessageReceivedTimestamp
+func (x *SocketData) GetLastMessageReceivedTimestamp() *timestamp.Timestamp {
+	if x != nil {
+		return x.LastMessageReceivedTimestamp
 	}
 	return nil
 }
 
-func (m *SocketData) GetLocalFlowControlWindow() *wrappers.Int64Value {
-	if m != nil {
-		return m.LocalFlowControlWindow
+func (x *SocketData) GetLocalFlowControlWindow() *wrappers.Int64Value {
+	if x != nil {
+		return x.LocalFlowControlWindow
 	}
 	return nil
 }
 
-func (m *SocketData) GetRemoteFlowControlWindow() *wrappers.Int64Value {
-	if m != nil {
-		return m.RemoteFlowControlWindow
+func (x *SocketData) GetRemoteFlowControlWindow() *wrappers.Int64Value {
+	if x != nil {
+		return x.RemoteFlowControlWindow
 	}
 	return nil
 }
 
-func (m *SocketData) GetOption() []*SocketOption {
-	if m != nil {
-		return m.Option
+func (x *SocketData) GetOption() []*SocketOption {
+	if x != nil {
+		return x.Option
 	}
 	return nil
 }
 
 // Address represents the address used to create the socket.
 type Address struct {
-	// Types that are valid to be assigned to Address:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Address:
 	//	*Address_TcpipAddress
 	//	*Address_UdsAddress_
 	//	*Address_OtherAddress_
-	Address              isAddress_Address `protobuf_oneof:"address"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Address isAddress_Address `protobuf_oneof:"address"`
 }
 
-func (m *Address) Reset()         { *m = Address{} }
-func (m *Address) String() string { return proto.CompactTextString(m) }
-func (*Address) ProtoMessage()    {}
+func (x *Address) Reset() {
+	*x = Address{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address) ProtoMessage() {}
+
+func (x *Address) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address.ProtoReflect.Descriptor instead.
 func (*Address) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14}
 }
 
-func (m *Address) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address.Unmarshal(m, b)
-}
-func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address.Marshal(b, m, deterministic)
-}
-func (m *Address) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address.Merge(m, src)
-}
-func (m *Address) XXX_Size() int {
-	return xxx_messageInfo_Address.Size(m)
-}
-func (m *Address) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address.DiscardUnknown(m)
+func (m *Address) GetAddress() isAddress_Address {
+	if m != nil {
+		return m.Address
+	}
+	return nil
 }
 
-var xxx_messageInfo_Address proto.InternalMessageInfo
+func (x *Address) GetTcpipAddress() *Address_TcpIpAddress {
+	if x, ok := x.GetAddress().(*Address_TcpipAddress); ok {
+		return x.TcpipAddress
+	}
+	return nil
+}
+
+func (x *Address) GetUdsAddress() *Address_UdsAddress {
+	if x, ok := x.GetAddress().(*Address_UdsAddress_); ok {
+		return x.UdsAddress
+	}
+	return nil
+}
+
+func (x *Address) GetOtherAddress() *Address_OtherAddress {
+	if x, ok := x.GetAddress().(*Address_OtherAddress_); ok {
+		return x.OtherAddress
+	}
+	return nil
+}
 
 type isAddress_Address interface {
 	isAddress_Address()
@@ -1218,218 +1426,70 @@
 
 func (*Address_OtherAddress_) isAddress_Address() {}
 
-func (m *Address) GetAddress() isAddress_Address {
-	if m != nil {
-		return m.Address
-	}
-	return nil
-}
-
-func (m *Address) GetTcpipAddress() *Address_TcpIpAddress {
-	if x, ok := m.GetAddress().(*Address_TcpipAddress); ok {
-		return x.TcpipAddress
-	}
-	return nil
-}
-
-func (m *Address) GetUdsAddress() *Address_UdsAddress {
-	if x, ok := m.GetAddress().(*Address_UdsAddress_); ok {
-		return x.UdsAddress
-	}
-	return nil
-}
-
-func (m *Address) GetOtherAddress() *Address_OtherAddress {
-	if x, ok := m.GetAddress().(*Address_OtherAddress_); ok {
-		return x.OtherAddress
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Address) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Address_TcpipAddress)(nil),
-		(*Address_UdsAddress_)(nil),
-		(*Address_OtherAddress_)(nil),
-	}
-}
-
-type Address_TcpIpAddress struct {
-	// Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
-	// bytes in length.
-	IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
-	// 0-64k, or -1 if not appropriate.
-	Port                 int32    `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_TcpIpAddress) Reset()         { *m = Address_TcpIpAddress{} }
-func (m *Address_TcpIpAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_TcpIpAddress) ProtoMessage()    {}
-func (*Address_TcpIpAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 0}
-}
-
-func (m *Address_TcpIpAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_TcpIpAddress.Unmarshal(m, b)
-}
-func (m *Address_TcpIpAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_TcpIpAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_TcpIpAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_TcpIpAddress.Merge(m, src)
-}
-func (m *Address_TcpIpAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_TcpIpAddress.Size(m)
-}
-func (m *Address_TcpIpAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_TcpIpAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_TcpIpAddress proto.InternalMessageInfo
-
-func (m *Address_TcpIpAddress) GetIpAddress() []byte {
-	if m != nil {
-		return m.IpAddress
-	}
-	return nil
-}
-
-func (m *Address_TcpIpAddress) GetPort() int32 {
-	if m != nil {
-		return m.Port
-	}
-	return 0
-}
-
-// A Unix Domain Socket address.
-type Address_UdsAddress struct {
-	Filename             string   `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_UdsAddress) Reset()         { *m = Address_UdsAddress{} }
-func (m *Address_UdsAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_UdsAddress) ProtoMessage()    {}
-func (*Address_UdsAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 1}
-}
-
-func (m *Address_UdsAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_UdsAddress.Unmarshal(m, b)
-}
-func (m *Address_UdsAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_UdsAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_UdsAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_UdsAddress.Merge(m, src)
-}
-func (m *Address_UdsAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_UdsAddress.Size(m)
-}
-func (m *Address_UdsAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_UdsAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_UdsAddress proto.InternalMessageInfo
-
-func (m *Address_UdsAddress) GetFilename() string {
-	if m != nil {
-		return m.Filename
-	}
-	return ""
-}
-
-// An address type not included above.
-type Address_OtherAddress struct {
-	// The human readable version of the value.  This value should be set.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The actual address message.
-	Value                *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Address_OtherAddress) Reset()         { *m = Address_OtherAddress{} }
-func (m *Address_OtherAddress) String() string { return proto.CompactTextString(m) }
-func (*Address_OtherAddress) ProtoMessage()    {}
-func (*Address_OtherAddress) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{14, 2}
-}
-
-func (m *Address_OtherAddress) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Address_OtherAddress.Unmarshal(m, b)
-}
-func (m *Address_OtherAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Address_OtherAddress.Marshal(b, m, deterministic)
-}
-func (m *Address_OtherAddress) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Address_OtherAddress.Merge(m, src)
-}
-func (m *Address_OtherAddress) XXX_Size() int {
-	return xxx_messageInfo_Address_OtherAddress.Size(m)
-}
-func (m *Address_OtherAddress) XXX_DiscardUnknown() {
-	xxx_messageInfo_Address_OtherAddress.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Address_OtherAddress proto.InternalMessageInfo
-
-func (m *Address_OtherAddress) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Address_OtherAddress) GetValue() *any.Any {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
 // Security represents details about how secure the socket is.
 type Security struct {
-	// Types that are valid to be assigned to Model:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to Model:
 	//	*Security_Tls_
 	//	*Security_Other
-	Model                isSecurity_Model `protobuf_oneof:"model"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	Model isSecurity_Model `protobuf_oneof:"model"`
 }
 
-func (m *Security) Reset()         { *m = Security{} }
-func (m *Security) String() string { return proto.CompactTextString(m) }
-func (*Security) ProtoMessage()    {}
+func (x *Security) Reset() {
+	*x = Security{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Security) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Security) ProtoMessage() {}
+
+func (x *Security) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Security.ProtoReflect.Descriptor instead.
 func (*Security) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15}
 }
 
-func (m *Security) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security.Unmarshal(m, b)
-}
-func (m *Security) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security.Marshal(b, m, deterministic)
-}
-func (m *Security) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security.Merge(m, src)
-}
-func (m *Security) XXX_Size() int {
-	return xxx_messageInfo_Security.Size(m)
-}
-func (m *Security) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security.DiscardUnknown(m)
+func (m *Security) GetModel() isSecurity_Model {
+	if m != nil {
+		return m.Model
+	}
+	return nil
 }
 
-var xxx_messageInfo_Security proto.InternalMessageInfo
+func (x *Security) GetTls() *Security_Tls {
+	if x, ok := x.GetModel().(*Security_Tls_); ok {
+		return x.Tls
+	}
+	return nil
+}
+
+func (x *Security) GetOther() *Security_OtherSecurity {
+	if x, ok := x.GetModel().(*Security_Other); ok {
+		return x.Other
+	}
+	return nil
+}
 
 type isSecurity_Model interface {
 	isSecurity_Model()
@@ -1447,185 +1507,13 @@
 
 func (*Security_Other) isSecurity_Model() {}
 
-func (m *Security) GetModel() isSecurity_Model {
-	if m != nil {
-		return m.Model
-	}
-	return nil
-}
-
-func (m *Security) GetTls() *Security_Tls {
-	if x, ok := m.GetModel().(*Security_Tls_); ok {
-		return x.Tls
-	}
-	return nil
-}
-
-func (m *Security) GetOther() *Security_OtherSecurity {
-	if x, ok := m.GetModel().(*Security_Other); ok {
-		return x.Other
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Security) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Security_Tls_)(nil),
-		(*Security_Other)(nil),
-	}
-}
-
-type Security_Tls struct {
-	// Types that are valid to be assigned to CipherSuite:
-	//	*Security_Tls_StandardName
-	//	*Security_Tls_OtherName
-	CipherSuite isSecurity_Tls_CipherSuite `protobuf_oneof:"cipher_suite"`
-	// the certificate used by this endpoint.
-	LocalCertificate []byte `protobuf:"bytes,3,opt,name=local_certificate,json=localCertificate,proto3" json:"local_certificate,omitempty"`
-	// the certificate used by the remote endpoint.
-	RemoteCertificate    []byte   `protobuf:"bytes,4,opt,name=remote_certificate,json=remoteCertificate,proto3" json:"remote_certificate,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Security_Tls) Reset()         { *m = Security_Tls{} }
-func (m *Security_Tls) String() string { return proto.CompactTextString(m) }
-func (*Security_Tls) ProtoMessage()    {}
-func (*Security_Tls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15, 0}
-}
-
-func (m *Security_Tls) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security_Tls.Unmarshal(m, b)
-}
-func (m *Security_Tls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security_Tls.Marshal(b, m, deterministic)
-}
-func (m *Security_Tls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security_Tls.Merge(m, src)
-}
-func (m *Security_Tls) XXX_Size() int {
-	return xxx_messageInfo_Security_Tls.Size(m)
-}
-func (m *Security_Tls) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security_Tls.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Security_Tls proto.InternalMessageInfo
-
-type isSecurity_Tls_CipherSuite interface {
-	isSecurity_Tls_CipherSuite()
-}
-
-type Security_Tls_StandardName struct {
-	StandardName string `protobuf:"bytes,1,opt,name=standard_name,json=standardName,proto3,oneof"`
-}
-
-type Security_Tls_OtherName struct {
-	OtherName string `protobuf:"bytes,2,opt,name=other_name,json=otherName,proto3,oneof"`
-}
-
-func (*Security_Tls_StandardName) isSecurity_Tls_CipherSuite() {}
-
-func (*Security_Tls_OtherName) isSecurity_Tls_CipherSuite() {}
-
-func (m *Security_Tls) GetCipherSuite() isSecurity_Tls_CipherSuite {
-	if m != nil {
-		return m.CipherSuite
-	}
-	return nil
-}
-
-func (m *Security_Tls) GetStandardName() string {
-	if x, ok := m.GetCipherSuite().(*Security_Tls_StandardName); ok {
-		return x.StandardName
-	}
-	return ""
-}
-
-func (m *Security_Tls) GetOtherName() string {
-	if x, ok := m.GetCipherSuite().(*Security_Tls_OtherName); ok {
-		return x.OtherName
-	}
-	return ""
-}
-
-func (m *Security_Tls) GetLocalCertificate() []byte {
-	if m != nil {
-		return m.LocalCertificate
-	}
-	return nil
-}
-
-func (m *Security_Tls) GetRemoteCertificate() []byte {
-	if m != nil {
-		return m.RemoteCertificate
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Security_Tls) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Security_Tls_StandardName)(nil),
-		(*Security_Tls_OtherName)(nil),
-	}
-}
-
-type Security_OtherSecurity struct {
-	// The human readable version of the value.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The actual security details message.
-	Value                *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Security_OtherSecurity) Reset()         { *m = Security_OtherSecurity{} }
-func (m *Security_OtherSecurity) String() string { return proto.CompactTextString(m) }
-func (*Security_OtherSecurity) ProtoMessage()    {}
-func (*Security_OtherSecurity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{15, 1}
-}
-
-func (m *Security_OtherSecurity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Security_OtherSecurity.Unmarshal(m, b)
-}
-func (m *Security_OtherSecurity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Security_OtherSecurity.Marshal(b, m, deterministic)
-}
-func (m *Security_OtherSecurity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Security_OtherSecurity.Merge(m, src)
-}
-func (m *Security_OtherSecurity) XXX_Size() int {
-	return xxx_messageInfo_Security_OtherSecurity.Size(m)
-}
-func (m *Security_OtherSecurity) XXX_DiscardUnknown() {
-	xxx_messageInfo_Security_OtherSecurity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Security_OtherSecurity proto.InternalMessageInfo
-
-func (m *Security_OtherSecurity) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Security_OtherSecurity) GetValue() *any.Any {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
 // SocketOption represents socket options for a socket.  Specifically, these
 // are the options returned by getsockopt().
 type SocketOption struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The full name of the socket option.  Typically this will be the upper case
 	// name, such as "SO_REUSEPORT".
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1634,54 +1522,58 @@
 	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 	// Additional data associated with the socket option.  At least one of value
 	// or additional will be set.
-	Additional           *any.Any `protobuf:"bytes,3,opt,name=additional,proto3" json:"additional,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Additional *any.Any `protobuf:"bytes,3,opt,name=additional,proto3" json:"additional,omitempty"`
 }
 
-func (m *SocketOption) Reset()         { *m = SocketOption{} }
-func (m *SocketOption) String() string { return proto.CompactTextString(m) }
-func (*SocketOption) ProtoMessage()    {}
+func (x *SocketOption) Reset() {
+	*x = SocketOption{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOption) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOption) ProtoMessage() {}
+
+func (x *SocketOption) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[16]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOption.ProtoReflect.Descriptor instead.
 func (*SocketOption) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{16}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{16}
 }
 
-func (m *SocketOption) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOption.Unmarshal(m, b)
-}
-func (m *SocketOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOption.Marshal(b, m, deterministic)
-}
-func (m *SocketOption) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOption.Merge(m, src)
-}
-func (m *SocketOption) XXX_Size() int {
-	return xxx_messageInfo_SocketOption.Size(m)
-}
-func (m *SocketOption) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOption.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOption proto.InternalMessageInfo
-
-func (m *SocketOption) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *SocketOption) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *SocketOption) GetValue() string {
-	if m != nil {
-		return m.Value
+func (x *SocketOption) GetValue() string {
+	if x != nil {
+		return x.Value
 	}
 	return ""
 }
 
-func (m *SocketOption) GetAdditional() *any.Any {
-	if m != nil {
-		return m.Additional
+func (x *SocketOption) GetAdditional() *any.Any {
+	if x != nil {
+		return x.Additional
 	}
 	return nil
 }
@@ -1689,40 +1581,48 @@
 // For use with SocketOption's additional field.  This is primarily used for
 // SO_RCVTIMEO and SO_SNDTIMEO
 type SocketOptionTimeout struct {
-	Duration             *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Duration *duration.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
 }
 
-func (m *SocketOptionTimeout) Reset()         { *m = SocketOptionTimeout{} }
-func (m *SocketOptionTimeout) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionTimeout) ProtoMessage()    {}
+func (x *SocketOptionTimeout) Reset() {
+	*x = SocketOptionTimeout{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionTimeout) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionTimeout) ProtoMessage() {}
+
+func (x *SocketOptionTimeout) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionTimeout.ProtoReflect.Descriptor instead.
 func (*SocketOptionTimeout) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{17}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{17}
 }
 
-func (m *SocketOptionTimeout) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionTimeout.Unmarshal(m, b)
-}
-func (m *SocketOptionTimeout) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionTimeout.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionTimeout) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionTimeout.Merge(m, src)
-}
-func (m *SocketOptionTimeout) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionTimeout.Size(m)
-}
-func (m *SocketOptionTimeout) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionTimeout.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionTimeout proto.InternalMessageInfo
-
-func (m *SocketOptionTimeout) GetDuration() *duration.Duration {
-	if m != nil {
-		return m.Duration
+func (x *SocketOptionTimeout) GetDuration() *duration.Duration {
+	if x != nil {
+		return x.Duration
 	}
 	return nil
 }
@@ -1730,50 +1630,58 @@
 // For use with SocketOption's additional field.  This is primarily used for
 // SO_LINGER.
 type SocketOptionLinger struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// active maps to `struct linger.l_onoff`
 	Active bool `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"`
 	// duration maps to `struct linger.l_linger`
-	Duration             *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Duration *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
 }
 
-func (m *SocketOptionLinger) Reset()         { *m = SocketOptionLinger{} }
-func (m *SocketOptionLinger) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionLinger) ProtoMessage()    {}
+func (x *SocketOptionLinger) Reset() {
+	*x = SocketOptionLinger{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionLinger) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionLinger) ProtoMessage() {}
+
+func (x *SocketOptionLinger) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionLinger.ProtoReflect.Descriptor instead.
 func (*SocketOptionLinger) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{18}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{18}
 }
 
-func (m *SocketOptionLinger) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionLinger.Unmarshal(m, b)
-}
-func (m *SocketOptionLinger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionLinger.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionLinger) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionLinger.Merge(m, src)
-}
-func (m *SocketOptionLinger) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionLinger.Size(m)
-}
-func (m *SocketOptionLinger) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionLinger.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionLinger proto.InternalMessageInfo
-
-func (m *SocketOptionLinger) GetActive() bool {
-	if m != nil {
-		return m.Active
+func (x *SocketOptionLinger) GetActive() bool {
+	if x != nil {
+		return x.Active
 	}
 	return false
 }
 
-func (m *SocketOptionLinger) GetDuration() *duration.Duration {
-	if m != nil {
-		return m.Duration
+func (x *SocketOptionLinger) GetDuration() *duration.Duration {
+	if x != nil {
+		return x.Duration
 	}
 	return nil
 }
@@ -1781,269 +1689,281 @@
 // For use with SocketOption's additional field.  Tcp info for
 // SOL_TCP and TCP_INFO.
 type SocketOptionTcpInfo struct {
-	TcpiState            uint32   `protobuf:"varint,1,opt,name=tcpi_state,json=tcpiState,proto3" json:"tcpi_state,omitempty"`
-	TcpiCaState          uint32   `protobuf:"varint,2,opt,name=tcpi_ca_state,json=tcpiCaState,proto3" json:"tcpi_ca_state,omitempty"`
-	TcpiRetransmits      uint32   `protobuf:"varint,3,opt,name=tcpi_retransmits,json=tcpiRetransmits,proto3" json:"tcpi_retransmits,omitempty"`
-	TcpiProbes           uint32   `protobuf:"varint,4,opt,name=tcpi_probes,json=tcpiProbes,proto3" json:"tcpi_probes,omitempty"`
-	TcpiBackoff          uint32   `protobuf:"varint,5,opt,name=tcpi_backoff,json=tcpiBackoff,proto3" json:"tcpi_backoff,omitempty"`
-	TcpiOptions          uint32   `protobuf:"varint,6,opt,name=tcpi_options,json=tcpiOptions,proto3" json:"tcpi_options,omitempty"`
-	TcpiSndWscale        uint32   `protobuf:"varint,7,opt,name=tcpi_snd_wscale,json=tcpiSndWscale,proto3" json:"tcpi_snd_wscale,omitempty"`
-	TcpiRcvWscale        uint32   `protobuf:"varint,8,opt,name=tcpi_rcv_wscale,json=tcpiRcvWscale,proto3" json:"tcpi_rcv_wscale,omitempty"`
-	TcpiRto              uint32   `protobuf:"varint,9,opt,name=tcpi_rto,json=tcpiRto,proto3" json:"tcpi_rto,omitempty"`
-	TcpiAto              uint32   `protobuf:"varint,10,opt,name=tcpi_ato,json=tcpiAto,proto3" json:"tcpi_ato,omitempty"`
-	TcpiSndMss           uint32   `protobuf:"varint,11,opt,name=tcpi_snd_mss,json=tcpiSndMss,proto3" json:"tcpi_snd_mss,omitempty"`
-	TcpiRcvMss           uint32   `protobuf:"varint,12,opt,name=tcpi_rcv_mss,json=tcpiRcvMss,proto3" json:"tcpi_rcv_mss,omitempty"`
-	TcpiUnacked          uint32   `protobuf:"varint,13,opt,name=tcpi_unacked,json=tcpiUnacked,proto3" json:"tcpi_unacked,omitempty"`
-	TcpiSacked           uint32   `protobuf:"varint,14,opt,name=tcpi_sacked,json=tcpiSacked,proto3" json:"tcpi_sacked,omitempty"`
-	TcpiLost             uint32   `protobuf:"varint,15,opt,name=tcpi_lost,json=tcpiLost,proto3" json:"tcpi_lost,omitempty"`
-	TcpiRetrans          uint32   `protobuf:"varint,16,opt,name=tcpi_retrans,json=tcpiRetrans,proto3" json:"tcpi_retrans,omitempty"`
-	TcpiFackets          uint32   `protobuf:"varint,17,opt,name=tcpi_fackets,json=tcpiFackets,proto3" json:"tcpi_fackets,omitempty"`
-	TcpiLastDataSent     uint32   `protobuf:"varint,18,opt,name=tcpi_last_data_sent,json=tcpiLastDataSent,proto3" json:"tcpi_last_data_sent,omitempty"`
-	TcpiLastAckSent      uint32   `protobuf:"varint,19,opt,name=tcpi_last_ack_sent,json=tcpiLastAckSent,proto3" json:"tcpi_last_ack_sent,omitempty"`
-	TcpiLastDataRecv     uint32   `protobuf:"varint,20,opt,name=tcpi_last_data_recv,json=tcpiLastDataRecv,proto3" json:"tcpi_last_data_recv,omitempty"`
-	TcpiLastAckRecv      uint32   `protobuf:"varint,21,opt,name=tcpi_last_ack_recv,json=tcpiLastAckRecv,proto3" json:"tcpi_last_ack_recv,omitempty"`
-	TcpiPmtu             uint32   `protobuf:"varint,22,opt,name=tcpi_pmtu,json=tcpiPmtu,proto3" json:"tcpi_pmtu,omitempty"`
-	TcpiRcvSsthresh      uint32   `protobuf:"varint,23,opt,name=tcpi_rcv_ssthresh,json=tcpiRcvSsthresh,proto3" json:"tcpi_rcv_ssthresh,omitempty"`
-	TcpiRtt              uint32   `protobuf:"varint,24,opt,name=tcpi_rtt,json=tcpiRtt,proto3" json:"tcpi_rtt,omitempty"`
-	TcpiRttvar           uint32   `protobuf:"varint,25,opt,name=tcpi_rttvar,json=tcpiRttvar,proto3" json:"tcpi_rttvar,omitempty"`
-	TcpiSndSsthresh      uint32   `protobuf:"varint,26,opt,name=tcpi_snd_ssthresh,json=tcpiSndSsthresh,proto3" json:"tcpi_snd_ssthresh,omitempty"`
-	TcpiSndCwnd          uint32   `protobuf:"varint,27,opt,name=tcpi_snd_cwnd,json=tcpiSndCwnd,proto3" json:"tcpi_snd_cwnd,omitempty"`
-	TcpiAdvmss           uint32   `protobuf:"varint,28,opt,name=tcpi_advmss,json=tcpiAdvmss,proto3" json:"tcpi_advmss,omitempty"`
-	TcpiReordering       uint32   `protobuf:"varint,29,opt,name=tcpi_reordering,json=tcpiReordering,proto3" json:"tcpi_reordering,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	TcpiState        uint32 `protobuf:"varint,1,opt,name=tcpi_state,json=tcpiState,proto3" json:"tcpi_state,omitempty"`
+	TcpiCaState      uint32 `protobuf:"varint,2,opt,name=tcpi_ca_state,json=tcpiCaState,proto3" json:"tcpi_ca_state,omitempty"`
+	TcpiRetransmits  uint32 `protobuf:"varint,3,opt,name=tcpi_retransmits,json=tcpiRetransmits,proto3" json:"tcpi_retransmits,omitempty"`
+	TcpiProbes       uint32 `protobuf:"varint,4,opt,name=tcpi_probes,json=tcpiProbes,proto3" json:"tcpi_probes,omitempty"`
+	TcpiBackoff      uint32 `protobuf:"varint,5,opt,name=tcpi_backoff,json=tcpiBackoff,proto3" json:"tcpi_backoff,omitempty"`
+	TcpiOptions      uint32 `protobuf:"varint,6,opt,name=tcpi_options,json=tcpiOptions,proto3" json:"tcpi_options,omitempty"`
+	TcpiSndWscale    uint32 `protobuf:"varint,7,opt,name=tcpi_snd_wscale,json=tcpiSndWscale,proto3" json:"tcpi_snd_wscale,omitempty"`
+	TcpiRcvWscale    uint32 `protobuf:"varint,8,opt,name=tcpi_rcv_wscale,json=tcpiRcvWscale,proto3" json:"tcpi_rcv_wscale,omitempty"`
+	TcpiRto          uint32 `protobuf:"varint,9,opt,name=tcpi_rto,json=tcpiRto,proto3" json:"tcpi_rto,omitempty"`
+	TcpiAto          uint32 `protobuf:"varint,10,opt,name=tcpi_ato,json=tcpiAto,proto3" json:"tcpi_ato,omitempty"`
+	TcpiSndMss       uint32 `protobuf:"varint,11,opt,name=tcpi_snd_mss,json=tcpiSndMss,proto3" json:"tcpi_snd_mss,omitempty"`
+	TcpiRcvMss       uint32 `protobuf:"varint,12,opt,name=tcpi_rcv_mss,json=tcpiRcvMss,proto3" json:"tcpi_rcv_mss,omitempty"`
+	TcpiUnacked      uint32 `protobuf:"varint,13,opt,name=tcpi_unacked,json=tcpiUnacked,proto3" json:"tcpi_unacked,omitempty"`
+	TcpiSacked       uint32 `protobuf:"varint,14,opt,name=tcpi_sacked,json=tcpiSacked,proto3" json:"tcpi_sacked,omitempty"`
+	TcpiLost         uint32 `protobuf:"varint,15,opt,name=tcpi_lost,json=tcpiLost,proto3" json:"tcpi_lost,omitempty"`
+	TcpiRetrans      uint32 `protobuf:"varint,16,opt,name=tcpi_retrans,json=tcpiRetrans,proto3" json:"tcpi_retrans,omitempty"`
+	TcpiFackets      uint32 `protobuf:"varint,17,opt,name=tcpi_fackets,json=tcpiFackets,proto3" json:"tcpi_fackets,omitempty"`
+	TcpiLastDataSent uint32 `protobuf:"varint,18,opt,name=tcpi_last_data_sent,json=tcpiLastDataSent,proto3" json:"tcpi_last_data_sent,omitempty"`
+	TcpiLastAckSent  uint32 `protobuf:"varint,19,opt,name=tcpi_last_ack_sent,json=tcpiLastAckSent,proto3" json:"tcpi_last_ack_sent,omitempty"`
+	TcpiLastDataRecv uint32 `protobuf:"varint,20,opt,name=tcpi_last_data_recv,json=tcpiLastDataRecv,proto3" json:"tcpi_last_data_recv,omitempty"`
+	TcpiLastAckRecv  uint32 `protobuf:"varint,21,opt,name=tcpi_last_ack_recv,json=tcpiLastAckRecv,proto3" json:"tcpi_last_ack_recv,omitempty"`
+	TcpiPmtu         uint32 `protobuf:"varint,22,opt,name=tcpi_pmtu,json=tcpiPmtu,proto3" json:"tcpi_pmtu,omitempty"`
+	TcpiRcvSsthresh  uint32 `protobuf:"varint,23,opt,name=tcpi_rcv_ssthresh,json=tcpiRcvSsthresh,proto3" json:"tcpi_rcv_ssthresh,omitempty"`
+	TcpiRtt          uint32 `protobuf:"varint,24,opt,name=tcpi_rtt,json=tcpiRtt,proto3" json:"tcpi_rtt,omitempty"`
+	TcpiRttvar       uint32 `protobuf:"varint,25,opt,name=tcpi_rttvar,json=tcpiRttvar,proto3" json:"tcpi_rttvar,omitempty"`
+	TcpiSndSsthresh  uint32 `protobuf:"varint,26,opt,name=tcpi_snd_ssthresh,json=tcpiSndSsthresh,proto3" json:"tcpi_snd_ssthresh,omitempty"`
+	TcpiSndCwnd      uint32 `protobuf:"varint,27,opt,name=tcpi_snd_cwnd,json=tcpiSndCwnd,proto3" json:"tcpi_snd_cwnd,omitempty"`
+	TcpiAdvmss       uint32 `protobuf:"varint,28,opt,name=tcpi_advmss,json=tcpiAdvmss,proto3" json:"tcpi_advmss,omitempty"`
+	TcpiReordering   uint32 `protobuf:"varint,29,opt,name=tcpi_reordering,json=tcpiReordering,proto3" json:"tcpi_reordering,omitempty"`
 }
 
-func (m *SocketOptionTcpInfo) Reset()         { *m = SocketOptionTcpInfo{} }
-func (m *SocketOptionTcpInfo) String() string { return proto.CompactTextString(m) }
-func (*SocketOptionTcpInfo) ProtoMessage()    {}
+func (x *SocketOptionTcpInfo) Reset() {
+	*x = SocketOptionTcpInfo{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SocketOptionTcpInfo) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SocketOptionTcpInfo) ProtoMessage() {}
+
+func (x *SocketOptionTcpInfo) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[19]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SocketOptionTcpInfo.ProtoReflect.Descriptor instead.
 func (*SocketOptionTcpInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{19}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{19}
 }
 
-func (m *SocketOptionTcpInfo) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SocketOptionTcpInfo.Unmarshal(m, b)
-}
-func (m *SocketOptionTcpInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SocketOptionTcpInfo.Marshal(b, m, deterministic)
-}
-func (m *SocketOptionTcpInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SocketOptionTcpInfo.Merge(m, src)
-}
-func (m *SocketOptionTcpInfo) XXX_Size() int {
-	return xxx_messageInfo_SocketOptionTcpInfo.Size(m)
-}
-func (m *SocketOptionTcpInfo) XXX_DiscardUnknown() {
-	xxx_messageInfo_SocketOptionTcpInfo.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SocketOptionTcpInfo proto.InternalMessageInfo
-
-func (m *SocketOptionTcpInfo) GetTcpiState() uint32 {
-	if m != nil {
-		return m.TcpiState
+func (x *SocketOptionTcpInfo) GetTcpiState() uint32 {
+	if x != nil {
+		return x.TcpiState
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiCaState() uint32 {
-	if m != nil {
-		return m.TcpiCaState
+func (x *SocketOptionTcpInfo) GetTcpiCaState() uint32 {
+	if x != nil {
+		return x.TcpiCaState
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRetransmits() uint32 {
-	if m != nil {
-		return m.TcpiRetransmits
+func (x *SocketOptionTcpInfo) GetTcpiRetransmits() uint32 {
+	if x != nil {
+		return x.TcpiRetransmits
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiProbes() uint32 {
-	if m != nil {
-		return m.TcpiProbes
+func (x *SocketOptionTcpInfo) GetTcpiProbes() uint32 {
+	if x != nil {
+		return x.TcpiProbes
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiBackoff() uint32 {
-	if m != nil {
-		return m.TcpiBackoff
+func (x *SocketOptionTcpInfo) GetTcpiBackoff() uint32 {
+	if x != nil {
+		return x.TcpiBackoff
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiOptions() uint32 {
-	if m != nil {
-		return m.TcpiOptions
+func (x *SocketOptionTcpInfo) GetTcpiOptions() uint32 {
+	if x != nil {
+		return x.TcpiOptions
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndWscale() uint32 {
-	if m != nil {
-		return m.TcpiSndWscale
+func (x *SocketOptionTcpInfo) GetTcpiSndWscale() uint32 {
+	if x != nil {
+		return x.TcpiSndWscale
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvWscale() uint32 {
-	if m != nil {
-		return m.TcpiRcvWscale
+func (x *SocketOptionTcpInfo) GetTcpiRcvWscale() uint32 {
+	if x != nil {
+		return x.TcpiRcvWscale
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRto() uint32 {
-	if m != nil {
-		return m.TcpiRto
+func (x *SocketOptionTcpInfo) GetTcpiRto() uint32 {
+	if x != nil {
+		return x.TcpiRto
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiAto() uint32 {
-	if m != nil {
-		return m.TcpiAto
+func (x *SocketOptionTcpInfo) GetTcpiAto() uint32 {
+	if x != nil {
+		return x.TcpiAto
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndMss() uint32 {
-	if m != nil {
-		return m.TcpiSndMss
+func (x *SocketOptionTcpInfo) GetTcpiSndMss() uint32 {
+	if x != nil {
+		return x.TcpiSndMss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvMss() uint32 {
-	if m != nil {
-		return m.TcpiRcvMss
+func (x *SocketOptionTcpInfo) GetTcpiRcvMss() uint32 {
+	if x != nil {
+		return x.TcpiRcvMss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiUnacked() uint32 {
-	if m != nil {
-		return m.TcpiUnacked
+func (x *SocketOptionTcpInfo) GetTcpiUnacked() uint32 {
+	if x != nil {
+		return x.TcpiUnacked
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSacked() uint32 {
-	if m != nil {
-		return m.TcpiSacked
+func (x *SocketOptionTcpInfo) GetTcpiSacked() uint32 {
+	if x != nil {
+		return x.TcpiSacked
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLost() uint32 {
-	if m != nil {
-		return m.TcpiLost
+func (x *SocketOptionTcpInfo) GetTcpiLost() uint32 {
+	if x != nil {
+		return x.TcpiLost
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRetrans() uint32 {
-	if m != nil {
-		return m.TcpiRetrans
+func (x *SocketOptionTcpInfo) GetTcpiRetrans() uint32 {
+	if x != nil {
+		return x.TcpiRetrans
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiFackets() uint32 {
-	if m != nil {
-		return m.TcpiFackets
+func (x *SocketOptionTcpInfo) GetTcpiFackets() uint32 {
+	if x != nil {
+		return x.TcpiFackets
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastDataSent() uint32 {
-	if m != nil {
-		return m.TcpiLastDataSent
+func (x *SocketOptionTcpInfo) GetTcpiLastDataSent() uint32 {
+	if x != nil {
+		return x.TcpiLastDataSent
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastAckSent() uint32 {
-	if m != nil {
-		return m.TcpiLastAckSent
+func (x *SocketOptionTcpInfo) GetTcpiLastAckSent() uint32 {
+	if x != nil {
+		return x.TcpiLastAckSent
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastDataRecv() uint32 {
-	if m != nil {
-		return m.TcpiLastDataRecv
+func (x *SocketOptionTcpInfo) GetTcpiLastDataRecv() uint32 {
+	if x != nil {
+		return x.TcpiLastDataRecv
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiLastAckRecv() uint32 {
-	if m != nil {
-		return m.TcpiLastAckRecv
+func (x *SocketOptionTcpInfo) GetTcpiLastAckRecv() uint32 {
+	if x != nil {
+		return x.TcpiLastAckRecv
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiPmtu() uint32 {
-	if m != nil {
-		return m.TcpiPmtu
+func (x *SocketOptionTcpInfo) GetTcpiPmtu() uint32 {
+	if x != nil {
+		return x.TcpiPmtu
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRcvSsthresh() uint32 {
-	if m != nil {
-		return m.TcpiRcvSsthresh
+func (x *SocketOptionTcpInfo) GetTcpiRcvSsthresh() uint32 {
+	if x != nil {
+		return x.TcpiRcvSsthresh
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRtt() uint32 {
-	if m != nil {
-		return m.TcpiRtt
+func (x *SocketOptionTcpInfo) GetTcpiRtt() uint32 {
+	if x != nil {
+		return x.TcpiRtt
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiRttvar() uint32 {
-	if m != nil {
-		return m.TcpiRttvar
+func (x *SocketOptionTcpInfo) GetTcpiRttvar() uint32 {
+	if x != nil {
+		return x.TcpiRttvar
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndSsthresh() uint32 {
-	if m != nil {
-		return m.TcpiSndSsthresh
+func (x *SocketOptionTcpInfo) GetTcpiSndSsthresh() uint32 {
+	if x != nil {
+		return x.TcpiSndSsthresh
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiSndCwnd() uint32 {
-	if m != nil {
-		return m.TcpiSndCwnd
+func (x *SocketOptionTcpInfo) GetTcpiSndCwnd() uint32 {
+	if x != nil {
+		return x.TcpiSndCwnd
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiAdvmss() uint32 {
-	if m != nil {
-		return m.TcpiAdvmss
+func (x *SocketOptionTcpInfo) GetTcpiAdvmss() uint32 {
+	if x != nil {
+		return x.TcpiAdvmss
 	}
 	return 0
 }
 
-func (m *SocketOptionTcpInfo) GetTcpiReordering() uint32 {
-	if m != nil {
-		return m.TcpiReordering
+func (x *SocketOptionTcpInfo) GetTcpiReordering() uint32 {
+	if x != nil {
+		return x.TcpiReordering
 	}
 	return 0
 }
 
 type GetTopChannelsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// start_channel_id indicates that only channels at or above this id should be
 	// included in the results.
 	// To request the first page, this should be set to 0. To request
@@ -2053,52 +1973,60 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetTopChannelsRequest) Reset()         { *m = GetTopChannelsRequest{} }
-func (m *GetTopChannelsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetTopChannelsRequest) ProtoMessage()    {}
+func (x *GetTopChannelsRequest) Reset() {
+	*x = GetTopChannelsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetTopChannelsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetTopChannelsRequest) ProtoMessage() {}
+
+func (x *GetTopChannelsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[20]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetTopChannelsRequest.ProtoReflect.Descriptor instead.
 func (*GetTopChannelsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{20}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{20}
 }
 
-func (m *GetTopChannelsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetTopChannelsRequest.Unmarshal(m, b)
-}
-func (m *GetTopChannelsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetTopChannelsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetTopChannelsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetTopChannelsRequest.Merge(m, src)
-}
-func (m *GetTopChannelsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetTopChannelsRequest.Size(m)
-}
-func (m *GetTopChannelsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetTopChannelsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetTopChannelsRequest proto.InternalMessageInfo
-
-func (m *GetTopChannelsRequest) GetStartChannelId() int64 {
-	if m != nil {
-		return m.StartChannelId
+func (x *GetTopChannelsRequest) GetStartChannelId() int64 {
+	if x != nil {
+		return x.StartChannelId
 	}
 	return 0
 }
 
-func (m *GetTopChannelsRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetTopChannelsRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetTopChannelsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of channels that the connection detail service knows about.  Sorted in
 	// ascending channel_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2106,52 +2034,60 @@
 	// If set, indicates that the list of channels is the final list.  Requesting
 	// more channels can only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetTopChannelsResponse) Reset()         { *m = GetTopChannelsResponse{} }
-func (m *GetTopChannelsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetTopChannelsResponse) ProtoMessage()    {}
+func (x *GetTopChannelsResponse) Reset() {
+	*x = GetTopChannelsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetTopChannelsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetTopChannelsResponse) ProtoMessage() {}
+
+func (x *GetTopChannelsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetTopChannelsResponse.ProtoReflect.Descriptor instead.
 func (*GetTopChannelsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{21}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{21}
 }
 
-func (m *GetTopChannelsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetTopChannelsResponse.Unmarshal(m, b)
-}
-func (m *GetTopChannelsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetTopChannelsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetTopChannelsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetTopChannelsResponse.Merge(m, src)
-}
-func (m *GetTopChannelsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetTopChannelsResponse.Size(m)
-}
-func (m *GetTopChannelsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetTopChannelsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetTopChannelsResponse proto.InternalMessageInfo
-
-func (m *GetTopChannelsResponse) GetChannel() []*Channel {
-	if m != nil {
-		return m.Channel
+func (x *GetTopChannelsResponse) GetChannel() []*Channel {
+	if x != nil {
+		return x.Channel
 	}
 	return nil
 }
 
-func (m *GetTopChannelsResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetTopChannelsResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetServersRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// start_server_id indicates that only servers at or above this id should be
 	// included in the results.
 	// To request the first page, this must be set to 0. To request
@@ -2161,52 +2097,60 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,2,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetServersRequest) Reset()         { *m = GetServersRequest{} }
-func (m *GetServersRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServersRequest) ProtoMessage()    {}
+func (x *GetServersRequest) Reset() {
+	*x = GetServersRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServersRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServersRequest) ProtoMessage() {}
+
+func (x *GetServersRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[22]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServersRequest.ProtoReflect.Descriptor instead.
 func (*GetServersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{22}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{22}
 }
 
-func (m *GetServersRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServersRequest.Unmarshal(m, b)
-}
-func (m *GetServersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServersRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServersRequest.Merge(m, src)
-}
-func (m *GetServersRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServersRequest.Size(m)
-}
-func (m *GetServersRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServersRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServersRequest proto.InternalMessageInfo
-
-func (m *GetServersRequest) GetStartServerId() int64 {
-	if m != nil {
-		return m.StartServerId
+func (x *GetServersRequest) GetStartServerId() int64 {
+	if x != nil {
+		return x.StartServerId
 	}
 	return 0
 }
 
-func (m *GetServersRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetServersRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetServersResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of servers that the connection detail service knows about.  Sorted in
 	// ascending server_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2214,133 +2158,157 @@
 	// If set, indicates that the list of servers is the final list.  Requesting
 	// more servers will only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetServersResponse) Reset()         { *m = GetServersResponse{} }
-func (m *GetServersResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServersResponse) ProtoMessage()    {}
+func (x *GetServersResponse) Reset() {
+	*x = GetServersResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServersResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServersResponse) ProtoMessage() {}
+
+func (x *GetServersResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[23]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServersResponse.ProtoReflect.Descriptor instead.
 func (*GetServersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{23}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{23}
 }
 
-func (m *GetServersResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServersResponse.Unmarshal(m, b)
-}
-func (m *GetServersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServersResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServersResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServersResponse.Merge(m, src)
-}
-func (m *GetServersResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServersResponse.Size(m)
-}
-func (m *GetServersResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServersResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServersResponse proto.InternalMessageInfo
-
-func (m *GetServersResponse) GetServer() []*Server {
-	if m != nil {
-		return m.Server
+func (x *GetServersResponse) GetServer() []*Server {
+	if x != nil {
+		return x.Server
 	}
 	return nil
 }
 
-func (m *GetServersResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetServersResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetServerRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// server_id is the identifier of the specific server to get.
-	ServerId             int64    `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 }
 
-func (m *GetServerRequest) Reset()         { *m = GetServerRequest{} }
-func (m *GetServerRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServerRequest) ProtoMessage()    {}
+func (x *GetServerRequest) Reset() {
+	*x = GetServerRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerRequest) ProtoMessage() {}
+
+func (x *GetServerRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[24]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerRequest.ProtoReflect.Descriptor instead.
 func (*GetServerRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{24}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{24}
 }
 
-func (m *GetServerRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerRequest.Unmarshal(m, b)
-}
-func (m *GetServerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServerRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerRequest.Merge(m, src)
-}
-func (m *GetServerRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServerRequest.Size(m)
-}
-func (m *GetServerRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerRequest proto.InternalMessageInfo
-
-func (m *GetServerRequest) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *GetServerRequest) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
 type GetServerResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Server that corresponds to the requested server_id.  This field
 	// should be set.
-	Server               *Server  `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Server *Server `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
 }
 
-func (m *GetServerResponse) Reset()         { *m = GetServerResponse{} }
-func (m *GetServerResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServerResponse) ProtoMessage()    {}
+func (x *GetServerResponse) Reset() {
+	*x = GetServerResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerResponse) ProtoMessage() {}
+
+func (x *GetServerResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[25]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerResponse.ProtoReflect.Descriptor instead.
 func (*GetServerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{25}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{25}
 }
 
-func (m *GetServerResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerResponse.Unmarshal(m, b)
-}
-func (m *GetServerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServerResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerResponse.Merge(m, src)
-}
-func (m *GetServerResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServerResponse.Size(m)
-}
-func (m *GetServerResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerResponse proto.InternalMessageInfo
-
-func (m *GetServerResponse) GetServer() *Server {
-	if m != nil {
-		return m.Server
+func (x *GetServerResponse) GetServer() *Server {
+	if x != nil {
+		return x.Server
 	}
 	return nil
 }
 
 type GetServerSocketsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	ServerId int64 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
 	// start_socket_id indicates that only sockets at or above this id should be
 	// included in the results.
@@ -2351,59 +2319,67 @@
 	// If non-zero, the server will return a page of results containing
 	// at most this many items. If zero, the server will choose a
 	// reasonable page size.  Must never be negative.
-	MaxResults           int64    `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxResults int64 `protobuf:"varint,3,opt,name=max_results,json=maxResults,proto3" json:"max_results,omitempty"`
 }
 
-func (m *GetServerSocketsRequest) Reset()         { *m = GetServerSocketsRequest{} }
-func (m *GetServerSocketsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetServerSocketsRequest) ProtoMessage()    {}
+func (x *GetServerSocketsRequest) Reset() {
+	*x = GetServerSocketsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerSocketsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerSocketsRequest) ProtoMessage() {}
+
+func (x *GetServerSocketsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[26]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerSocketsRequest.ProtoReflect.Descriptor instead.
 func (*GetServerSocketsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{26}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{26}
 }
 
-func (m *GetServerSocketsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerSocketsRequest.Unmarshal(m, b)
-}
-func (m *GetServerSocketsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerSocketsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetServerSocketsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerSocketsRequest.Merge(m, src)
-}
-func (m *GetServerSocketsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetServerSocketsRequest.Size(m)
-}
-func (m *GetServerSocketsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerSocketsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerSocketsRequest proto.InternalMessageInfo
-
-func (m *GetServerSocketsRequest) GetServerId() int64 {
-	if m != nil {
-		return m.ServerId
+func (x *GetServerSocketsRequest) GetServerId() int64 {
+	if x != nil {
+		return x.ServerId
 	}
 	return 0
 }
 
-func (m *GetServerSocketsRequest) GetStartSocketId() int64 {
-	if m != nil {
-		return m.StartSocketId
+func (x *GetServerSocketsRequest) GetStartSocketId() int64 {
+	if x != nil {
+		return x.StartSocketId
 	}
 	return 0
 }
 
-func (m *GetServerSocketsRequest) GetMaxResults() int64 {
-	if m != nil {
-		return m.MaxResults
+func (x *GetServerSocketsRequest) GetMaxResults() int64 {
+	if x != nil {
+		return x.MaxResults
 	}
 	return 0
 }
 
 type GetServerSocketsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// list of socket refs that the connection detail service knows about.  Sorted in
 	// ascending socket_id order.
 	// Must contain at least 1 result, otherwise 'end' must be true.
@@ -2411,513 +2387,1841 @@
 	// If set, indicates that the list of sockets is the final list.  Requesting
 	// more sockets will only return more if they are created after this RPC
 	// completes.
-	End                  bool     `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	End bool `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
 }
 
-func (m *GetServerSocketsResponse) Reset()         { *m = GetServerSocketsResponse{} }
-func (m *GetServerSocketsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetServerSocketsResponse) ProtoMessage()    {}
+func (x *GetServerSocketsResponse) Reset() {
+	*x = GetServerSocketsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetServerSocketsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetServerSocketsResponse) ProtoMessage() {}
+
+func (x *GetServerSocketsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[27]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetServerSocketsResponse.ProtoReflect.Descriptor instead.
 func (*GetServerSocketsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{27}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{27}
 }
 
-func (m *GetServerSocketsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetServerSocketsResponse.Unmarshal(m, b)
-}
-func (m *GetServerSocketsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetServerSocketsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetServerSocketsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetServerSocketsResponse.Merge(m, src)
-}
-func (m *GetServerSocketsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetServerSocketsResponse.Size(m)
-}
-func (m *GetServerSocketsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetServerSocketsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetServerSocketsResponse proto.InternalMessageInfo
-
-func (m *GetServerSocketsResponse) GetSocketRef() []*SocketRef {
-	if m != nil {
-		return m.SocketRef
+func (x *GetServerSocketsResponse) GetSocketRef() []*SocketRef {
+	if x != nil {
+		return x.SocketRef
 	}
 	return nil
 }
 
-func (m *GetServerSocketsResponse) GetEnd() bool {
-	if m != nil {
-		return m.End
+func (x *GetServerSocketsResponse) GetEnd() bool {
+	if x != nil {
+		return x.End
 	}
 	return false
 }
 
 type GetChannelRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// channel_id is the identifier of the specific channel to get.
-	ChannelId            int64    `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ChannelId int64 `protobuf:"varint,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
 }
 
-func (m *GetChannelRequest) Reset()         { *m = GetChannelRequest{} }
-func (m *GetChannelRequest) String() string { return proto.CompactTextString(m) }
-func (*GetChannelRequest) ProtoMessage()    {}
+func (x *GetChannelRequest) Reset() {
+	*x = GetChannelRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChannelRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChannelRequest) ProtoMessage() {}
+
+func (x *GetChannelRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[28]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetChannelRequest.ProtoReflect.Descriptor instead.
 func (*GetChannelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{28}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{28}
 }
 
-func (m *GetChannelRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetChannelRequest.Unmarshal(m, b)
-}
-func (m *GetChannelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetChannelRequest.Marshal(b, m, deterministic)
-}
-func (m *GetChannelRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetChannelRequest.Merge(m, src)
-}
-func (m *GetChannelRequest) XXX_Size() int {
-	return xxx_messageInfo_GetChannelRequest.Size(m)
-}
-func (m *GetChannelRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetChannelRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetChannelRequest proto.InternalMessageInfo
-
-func (m *GetChannelRequest) GetChannelId() int64 {
-	if m != nil {
-		return m.ChannelId
+func (x *GetChannelRequest) GetChannelId() int64 {
+	if x != nil {
+		return x.ChannelId
 	}
 	return 0
 }
 
 type GetChannelResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Channel that corresponds to the requested channel_id.  This field
 	// should be set.
-	Channel              *Channel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Channel *Channel `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
 }
 
-func (m *GetChannelResponse) Reset()         { *m = GetChannelResponse{} }
-func (m *GetChannelResponse) String() string { return proto.CompactTextString(m) }
-func (*GetChannelResponse) ProtoMessage()    {}
+func (x *GetChannelResponse) Reset() {
+	*x = GetChannelResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetChannelResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetChannelResponse) ProtoMessage() {}
+
+func (x *GetChannelResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[29]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetChannelResponse.ProtoReflect.Descriptor instead.
 func (*GetChannelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{29}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{29}
 }
 
-func (m *GetChannelResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetChannelResponse.Unmarshal(m, b)
-}
-func (m *GetChannelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetChannelResponse.Marshal(b, m, deterministic)
-}
-func (m *GetChannelResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetChannelResponse.Merge(m, src)
-}
-func (m *GetChannelResponse) XXX_Size() int {
-	return xxx_messageInfo_GetChannelResponse.Size(m)
-}
-func (m *GetChannelResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetChannelResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetChannelResponse proto.InternalMessageInfo
-
-func (m *GetChannelResponse) GetChannel() *Channel {
-	if m != nil {
-		return m.Channel
+func (x *GetChannelResponse) GetChannel() *Channel {
+	if x != nil {
+		return x.Channel
 	}
 	return nil
 }
 
 type GetSubchannelRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// subchannel_id is the identifier of the specific subchannel to get.
-	SubchannelId         int64    `protobuf:"varint,1,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	SubchannelId int64 `protobuf:"varint,1,opt,name=subchannel_id,json=subchannelId,proto3" json:"subchannel_id,omitempty"`
 }
 
-func (m *GetSubchannelRequest) Reset()         { *m = GetSubchannelRequest{} }
-func (m *GetSubchannelRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSubchannelRequest) ProtoMessage()    {}
+func (x *GetSubchannelRequest) Reset() {
+	*x = GetSubchannelRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSubchannelRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSubchannelRequest) ProtoMessage() {}
+
+func (x *GetSubchannelRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[30]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSubchannelRequest.ProtoReflect.Descriptor instead.
 func (*GetSubchannelRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{30}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{30}
 }
 
-func (m *GetSubchannelRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSubchannelRequest.Unmarshal(m, b)
-}
-func (m *GetSubchannelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSubchannelRequest.Marshal(b, m, deterministic)
-}
-func (m *GetSubchannelRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSubchannelRequest.Merge(m, src)
-}
-func (m *GetSubchannelRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSubchannelRequest.Size(m)
-}
-func (m *GetSubchannelRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSubchannelRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSubchannelRequest proto.InternalMessageInfo
-
-func (m *GetSubchannelRequest) GetSubchannelId() int64 {
-	if m != nil {
-		return m.SubchannelId
+func (x *GetSubchannelRequest) GetSubchannelId() int64 {
+	if x != nil {
+		return x.SubchannelId
 	}
 	return 0
 }
 
 type GetSubchannelResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Subchannel that corresponds to the requested subchannel_id.  This
 	// field should be set.
-	Subchannel           *Subchannel `protobuf:"bytes,1,opt,name=subchannel,proto3" json:"subchannel,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	Subchannel *Subchannel `protobuf:"bytes,1,opt,name=subchannel,proto3" json:"subchannel,omitempty"`
 }
 
-func (m *GetSubchannelResponse) Reset()         { *m = GetSubchannelResponse{} }
-func (m *GetSubchannelResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSubchannelResponse) ProtoMessage()    {}
+func (x *GetSubchannelResponse) Reset() {
+	*x = GetSubchannelResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSubchannelResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSubchannelResponse) ProtoMessage() {}
+
+func (x *GetSubchannelResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[31]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSubchannelResponse.ProtoReflect.Descriptor instead.
 func (*GetSubchannelResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{31}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{31}
 }
 
-func (m *GetSubchannelResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSubchannelResponse.Unmarshal(m, b)
-}
-func (m *GetSubchannelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSubchannelResponse.Marshal(b, m, deterministic)
-}
-func (m *GetSubchannelResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSubchannelResponse.Merge(m, src)
-}
-func (m *GetSubchannelResponse) XXX_Size() int {
-	return xxx_messageInfo_GetSubchannelResponse.Size(m)
-}
-func (m *GetSubchannelResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSubchannelResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSubchannelResponse proto.InternalMessageInfo
-
-func (m *GetSubchannelResponse) GetSubchannel() *Subchannel {
-	if m != nil {
-		return m.Subchannel
+func (x *GetSubchannelResponse) GetSubchannel() *Subchannel {
+	if x != nil {
+		return x.Subchannel
 	}
 	return nil
 }
 
 type GetSocketRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// socket_id is the identifier of the specific socket to get.
 	SocketId int64 `protobuf:"varint,1,opt,name=socket_id,json=socketId,proto3" json:"socket_id,omitempty"`
 	// If true, the response will contain only high level information
 	// that is inexpensive to obtain. Fields thay may be omitted are
 	// documented.
-	Summary              bool     `protobuf:"varint,2,opt,name=summary,proto3" json:"summary,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Summary bool `protobuf:"varint,2,opt,name=summary,proto3" json:"summary,omitempty"`
 }
 
-func (m *GetSocketRequest) Reset()         { *m = GetSocketRequest{} }
-func (m *GetSocketRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSocketRequest) ProtoMessage()    {}
+func (x *GetSocketRequest) Reset() {
+	*x = GetSocketRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSocketRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSocketRequest) ProtoMessage() {}
+
+func (x *GetSocketRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[32]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSocketRequest.ProtoReflect.Descriptor instead.
 func (*GetSocketRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{32}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{32}
 }
 
-func (m *GetSocketRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketRequest.Unmarshal(m, b)
-}
-func (m *GetSocketRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketRequest.Marshal(b, m, deterministic)
-}
-func (m *GetSocketRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketRequest.Merge(m, src)
-}
-func (m *GetSocketRequest) XXX_Size() int {
-	return xxx_messageInfo_GetSocketRequest.Size(m)
-}
-func (m *GetSocketRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSocketRequest proto.InternalMessageInfo
-
-func (m *GetSocketRequest) GetSocketId() int64 {
-	if m != nil {
-		return m.SocketId
+func (x *GetSocketRequest) GetSocketId() int64 {
+	if x != nil {
+		return x.SocketId
 	}
 	return 0
 }
 
-func (m *GetSocketRequest) GetSummary() bool {
-	if m != nil {
-		return m.Summary
+func (x *GetSocketRequest) GetSummary() bool {
+	if x != nil {
+		return x.Summary
 	}
 	return false
 }
 
 type GetSocketResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The Socket that corresponds to the requested socket_id.  This field
 	// should be set.
-	Socket               *Socket  `protobuf:"bytes,1,opt,name=socket,proto3" json:"socket,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Socket *Socket `protobuf:"bytes,1,opt,name=socket,proto3" json:"socket,omitempty"`
 }
 
-func (m *GetSocketResponse) Reset()         { *m = GetSocketResponse{} }
-func (m *GetSocketResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSocketResponse) ProtoMessage()    {}
+func (x *GetSocketResponse) Reset() {
+	*x = GetSocketResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetSocketResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetSocketResponse) ProtoMessage() {}
+
+func (x *GetSocketResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[33]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetSocketResponse.ProtoReflect.Descriptor instead.
 func (*GetSocketResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6ee37dfd35a8ab00, []int{33}
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{33}
 }
 
-func (m *GetSocketResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetSocketResponse.Unmarshal(m, b)
-}
-func (m *GetSocketResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetSocketResponse.Marshal(b, m, deterministic)
-}
-func (m *GetSocketResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetSocketResponse.Merge(m, src)
-}
-func (m *GetSocketResponse) XXX_Size() int {
-	return xxx_messageInfo_GetSocketResponse.Size(m)
-}
-func (m *GetSocketResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetSocketResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetSocketResponse proto.InternalMessageInfo
-
-func (m *GetSocketResponse) GetSocket() *Socket {
-	if m != nil {
-		return m.Socket
+func (x *GetSocketResponse) GetSocket() *Socket {
+	if x != nil {
+		return x.Socket
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.channelz.v1.ChannelConnectivityState_State", ChannelConnectivityState_State_name, ChannelConnectivityState_State_value)
-	proto.RegisterEnum("grpc.channelz.v1.ChannelTraceEvent_Severity", ChannelTraceEvent_Severity_name, ChannelTraceEvent_Severity_value)
-	proto.RegisterType((*Channel)(nil), "grpc.channelz.v1.Channel")
-	proto.RegisterType((*Subchannel)(nil), "grpc.channelz.v1.Subchannel")
-	proto.RegisterType((*ChannelConnectivityState)(nil), "grpc.channelz.v1.ChannelConnectivityState")
-	proto.RegisterType((*ChannelData)(nil), "grpc.channelz.v1.ChannelData")
-	proto.RegisterType((*ChannelTraceEvent)(nil), "grpc.channelz.v1.ChannelTraceEvent")
-	proto.RegisterType((*ChannelTrace)(nil), "grpc.channelz.v1.ChannelTrace")
-	proto.RegisterType((*ChannelRef)(nil), "grpc.channelz.v1.ChannelRef")
-	proto.RegisterType((*SubchannelRef)(nil), "grpc.channelz.v1.SubchannelRef")
-	proto.RegisterType((*SocketRef)(nil), "grpc.channelz.v1.SocketRef")
-	proto.RegisterType((*ServerRef)(nil), "grpc.channelz.v1.ServerRef")
-	proto.RegisterType((*Server)(nil), "grpc.channelz.v1.Server")
-	proto.RegisterType((*ServerData)(nil), "grpc.channelz.v1.ServerData")
-	proto.RegisterType((*Socket)(nil), "grpc.channelz.v1.Socket")
-	proto.RegisterType((*SocketData)(nil), "grpc.channelz.v1.SocketData")
-	proto.RegisterType((*Address)(nil), "grpc.channelz.v1.Address")
-	proto.RegisterType((*Address_TcpIpAddress)(nil), "grpc.channelz.v1.Address.TcpIpAddress")
-	proto.RegisterType((*Address_UdsAddress)(nil), "grpc.channelz.v1.Address.UdsAddress")
-	proto.RegisterType((*Address_OtherAddress)(nil), "grpc.channelz.v1.Address.OtherAddress")
-	proto.RegisterType((*Security)(nil), "grpc.channelz.v1.Security")
-	proto.RegisterType((*Security_Tls)(nil), "grpc.channelz.v1.Security.Tls")
-	proto.RegisterType((*Security_OtherSecurity)(nil), "grpc.channelz.v1.Security.OtherSecurity")
-	proto.RegisterType((*SocketOption)(nil), "grpc.channelz.v1.SocketOption")
-	proto.RegisterType((*SocketOptionTimeout)(nil), "grpc.channelz.v1.SocketOptionTimeout")
-	proto.RegisterType((*SocketOptionLinger)(nil), "grpc.channelz.v1.SocketOptionLinger")
-	proto.RegisterType((*SocketOptionTcpInfo)(nil), "grpc.channelz.v1.SocketOptionTcpInfo")
-	proto.RegisterType((*GetTopChannelsRequest)(nil), "grpc.channelz.v1.GetTopChannelsRequest")
-	proto.RegisterType((*GetTopChannelsResponse)(nil), "grpc.channelz.v1.GetTopChannelsResponse")
-	proto.RegisterType((*GetServersRequest)(nil), "grpc.channelz.v1.GetServersRequest")
-	proto.RegisterType((*GetServersResponse)(nil), "grpc.channelz.v1.GetServersResponse")
-	proto.RegisterType((*GetServerRequest)(nil), "grpc.channelz.v1.GetServerRequest")
-	proto.RegisterType((*GetServerResponse)(nil), "grpc.channelz.v1.GetServerResponse")
-	proto.RegisterType((*GetServerSocketsRequest)(nil), "grpc.channelz.v1.GetServerSocketsRequest")
-	proto.RegisterType((*GetServerSocketsResponse)(nil), "grpc.channelz.v1.GetServerSocketsResponse")
-	proto.RegisterType((*GetChannelRequest)(nil), "grpc.channelz.v1.GetChannelRequest")
-	proto.RegisterType((*GetChannelResponse)(nil), "grpc.channelz.v1.GetChannelResponse")
-	proto.RegisterType((*GetSubchannelRequest)(nil), "grpc.channelz.v1.GetSubchannelRequest")
-	proto.RegisterType((*GetSubchannelResponse)(nil), "grpc.channelz.v1.GetSubchannelResponse")
-	proto.RegisterType((*GetSocketRequest)(nil), "grpc.channelz.v1.GetSocketRequest")
-	proto.RegisterType((*GetSocketResponse)(nil), "grpc.channelz.v1.GetSocketResponse")
+type Address_TcpIpAddress struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Either the IPv4 or IPv6 address in bytes.  Will be either 4 bytes or 16
+	// bytes in length.
+	IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
+	// 0-64k, or -1 if not appropriate.
+	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
 }
 
-func init() { proto.RegisterFile("grpc/channelz/v1/channelz.proto", fileDescriptor_6ee37dfd35a8ab00) }
+func (x *Address_TcpIpAddress) Reset() {
+	*x = Address_TcpIpAddress{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[34]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
 
-var fileDescriptor_6ee37dfd35a8ab00 = []byte{
-	// 2584 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4b, 0x6f, 0xdb, 0xd8,
-	0xf5, 0xb7, 0xde, 0xd4, 0xd1, 0x23, 0xf2, 0x4d, 0x26, 0x43, 0x2b, 0x99, 0xb1, 0xff, 0xf4, 0x4c,
-	0xc6, 0x93, 0xfc, 0x23, 0xc7, 0x9e, 0x34, 0x28, 0x3a, 0x2d, 0x3a, 0xb6, 0x62, 0xc7, 0x72, 0x1d,
-	0x39, 0xa0, 0xe4, 0x49, 0xa6, 0x28, 0xca, 0xa1, 0xc9, 0x6b, 0x99, 0x35, 0x45, 0xaa, 0xbc, 0x57,
-	0xf2, 0x24, 0x9b, 0x2e, 0xba, 0xef, 0xb2, 0x28, 0xfa, 0x01, 0xba, 0xe9, 0xa2, 0x40, 0x81, 0x02,
-	0xed, 0xb6, 0xdf, 0xa6, 0xdf, 0xa2, 0xb8, 0x0f, 0x3e, 0xf4, 0xb2, 0x14, 0x64, 0xd9, 0x8d, 0x21,
-	0x1e, 0xfe, 0xce, 0xef, 0x9c, 0x7b, 0x5e, 0xf7, 0xf2, 0x1a, 0xd6, 0x7b, 0xc1, 0xc0, 0xda, 0xb6,
-	0x2e, 0x4d, 0xcf, 0xc3, 0xee, 0xbb, 0xed, 0xd1, 0x4e, 0xf4, 0xbb, 0x31, 0x08, 0x7c, 0xea, 0xa3,
-	0x1a, 0x03, 0x34, 0x22, 0xe1, 0x68, 0xa7, 0xbe, 0xd6, 0xf3, 0xfd, 0x9e, 0x8b, 0xb7, 0xf9, 0xfb,
-	0xf3, 0xe1, 0xc5, 0xb6, 0xe9, 0xbd, 0x15, 0xe0, 0xfa, 0xa7, 0x93, 0xaf, 0xec, 0x61, 0x60, 0x52,
-	0xc7, 0xf7, 0xe4, 0xfb, 0xf5, 0xc9, 0xf7, 0xd4, 0xe9, 0x63, 0x42, 0xcd, 0xfe, 0x60, 0x1e, 0xc1,
-	0x75, 0x60, 0x0e, 0x06, 0x38, 0x20, 0xe2, 0xbd, 0xf6, 0xb7, 0x34, 0x14, 0x9a, 0xc2, 0x17, 0xd4,
-	0x80, 0x4c, 0x80, 0x2f, 0xd4, 0xd4, 0x46, 0x6a, 0xab, 0xb4, 0x7b, 0xbf, 0x31, 0xe9, 0x67, 0x43,
-	0xe2, 0x74, 0x7c, 0xa1, 0x33, 0x20, 0xda, 0x81, 0xac, 0x6d, 0x52, 0x53, 0x4d, 0x73, 0x85, 0x4f,
-	0xe6, 0x2a, 0x3c, 0x37, 0xa9, 0xa9, 0x73, 0x28, 0xfa, 0x19, 0x94, 0x24, 0xc0, 0x60, 0xa6, 0x32,
-	0x1b, 0x99, 0x85, 0xa6, 0xc0, 0x8a, 0x7e, 0xa3, 0x43, 0xa8, 0x92, 0xe1, 0x79, 0x92, 0x21, 0xcb,
-	0x19, 0xd6, 0xa7, 0x19, 0x3a, 0x11, 0x8e, 0x91, 0x54, 0x48, 0xf2, 0x11, 0xfd, 0x04, 0x80, 0xf8,
-	0xd6, 0x15, 0xa6, 0x9c, 0x23, 0xc7, 0x39, 0xee, 0xcd, 0xe0, 0xe0, 0x18, 0xa6, 0x5f, 0x24, 0xe1,
-	0x4f, 0xed, 0x1f, 0x69, 0x80, 0x98, 0x1c, 0xed, 0x24, 0x83, 0xb6, 0xd0, 0x8f, 0xff, 0xe1, 0xb8,
-	0xfd, 0x3b, 0x05, 0xaa, 0x74, 0xaf, 0xe9, 0x7b, 0x1e, 0xb6, 0xa8, 0x33, 0x72, 0xe8, 0xdb, 0x0e,
-	0x35, 0x29, 0x46, 0x87, 0x90, 0x23, 0xec, 0x07, 0x8f, 0x63, 0x75, 0xf7, 0xc9, 0xdc, 0x95, 0x4d,
-	0xa9, 0x36, 0xf8, 0x5f, 0x5d, 0xa8, 0x6b, 0xbf, 0x86, 0x9c, 0x20, 0x2c, 0x41, 0xe1, 0xac, 0xfd,
-	0x8b, 0xf6, 0xe9, 0xeb, 0x76, 0x6d, 0x05, 0x29, 0x90, 0x6d, 0x3d, 0x3f, 0x39, 0xa8, 0xa5, 0x50,
-	0x15, 0xa0, 0x79, 0xda, 0x6e, 0x1f, 0x34, 0xbb, 0xad, 0xf6, 0x8b, 0x5a, 0x1a, 0x15, 0x21, 0xa7,
-	0x1f, 0xec, 0x3d, 0xff, 0xae, 0x96, 0x41, 0x1f, 0xc1, 0x6a, 0x57, 0xdf, 0x6b, 0x77, 0x5a, 0x07,
-	0xed, 0xae, 0x71, 0xb8, 0xd7, 0x3a, 0x39, 0xd3, 0x0f, 0x6a, 0x59, 0x54, 0x06, 0xa5, 0x73, 0x74,
-	0xd6, 0x7d, 0xce, 0x98, 0x72, 0xda, 0x7f, 0xd2, 0x50, 0x4a, 0x64, 0x07, 0x7d, 0x93, 0xf4, 0xbb,
-	0xb4, 0xfb, 0x70, 0x79, 0xbf, 0xa5, 0xc7, 0xe8, 0x2e, 0xe4, 0xa9, 0x19, 0xf4, 0x30, 0xe5, 0xe5,
-	0x50, 0xd4, 0xe5, 0x13, 0x7a, 0x0a, 0x39, 0x1a, 0x98, 0x16, 0x56, 0x33, 0x9c, 0xf9, 0xd3, 0xb9,
-	0xcc, 0x5d, 0x86, 0xd2, 0x05, 0x18, 0x6d, 0x42, 0xc5, 0x32, 0x5d, 0x97, 0x18, 0x84, 0x9a, 0x01,
-	0xc5, 0xb6, 0x9a, 0xdd, 0x48, 0x6d, 0x65, 0xf4, 0x32, 0x17, 0x76, 0x84, 0x0c, 0x7d, 0x01, 0xb7,
-	0x24, 0x68, 0x68, 0x59, 0x18, 0xdb, 0xd8, 0x56, 0x73, 0x1c, 0x56, 0x15, 0xb0, 0x50, 0x8a, 0xfe,
-	0x0f, 0x84, 0xa2, 0x71, 0x61, 0x3a, 0x2e, 0xb6, 0xd5, 0x3c, 0x47, 0x95, 0xb8, 0xec, 0x90, 0x8b,
-	0xd0, 0x77, 0x70, 0xcf, 0x35, 0x09, 0x35, 0x98, 0x2c, 0x34, 0x6a, 0x44, 0x43, 0x48, 0x2d, 0x70,
-	0xe7, 0xeb, 0x0d, 0x31, 0x85, 0x1a, 0xe1, 0x14, 0x6a, 0x74, 0x43, 0x84, 0xae, 0x32, 0xf5, 0xa6,
-	0xe9, 0xba, 0xd2, 0xbb, 0xe8, 0x8d, 0xf6, 0xa7, 0x0c, 0xac, 0x26, 0xd7, 0x78, 0x30, 0xc2, 0x1e,
-	0x45, 0x1b, 0x50, 0xb2, 0x31, 0xb1, 0x02, 0x67, 0xc0, 0xc6, 0x20, 0x8f, 0x7b, 0x51, 0x4f, 0x8a,
-	0xd0, 0x11, 0x28, 0x04, 0x8f, 0x70, 0xe0, 0xd0, 0xb7, 0x3c, 0xa6, 0xd5, 0xdd, 0xff, 0xbf, 0x39,
-	0x78, 0x9c, 0xb8, 0xd1, 0x91, 0x3a, 0x7a, 0xa4, 0x8d, 0x7e, 0x0c, 0xc5, 0x78, 0x29, 0x99, 0x85,
-	0x4b, 0x89, 0xc1, 0xe8, 0xe7, 0xe3, 0xfd, 0x9a, 0x5d, 0x3c, 0x52, 0x8f, 0x56, 0xc6, 0x3a, 0xf6,
-	0x68, 0xaa, 0x63, 0x73, 0x4b, 0x4d, 0x98, 0xa3, 0x95, 0x89, 0x9e, 0xd5, 0x0e, 0x40, 0x09, 0x97,
-	0xc6, 0xcb, 0xbf, 0x6b, 0xc4, 0x8d, 0x51, 0x82, 0x42, 0xb3, 0x6b, 0xb4, 0xda, 0x87, 0xa7, 0xb2,
-	0x37, 0xba, 0xc6, 0xeb, 0x3d, 0xbd, 0x2d, 0x7a, 0xa3, 0x0c, 0x4a, 0xb3, 0x6b, 0x1c, 0xe8, 0xfa,
-	0xa9, 0x5e, 0xcb, 0xec, 0x97, 0xa0, 0x68, 0x5d, 0x3a, 0xae, 0xcd, 0x7c, 0x61, 0xbd, 0x5c, 0x4e,
-	0x46, 0x10, 0x3d, 0x84, 0x55, 0x6f, 0xd8, 0x37, 0x30, 0x8b, 0x24, 0x31, 0x5c, 0xbf, 0xd7, 0xc3,
-	0x36, 0xcf, 0x4d, 0x46, 0xbf, 0xe5, 0x0d, 0xfb, 0x3c, 0xc2, 0xe4, 0x84, 0x8b, 0x51, 0x0b, 0x90,
-	0x15, 0x60, 0xbe, 0x8b, 0x25, 0x2a, 0x25, 0xbd, 0x30, 0xbc, 0xab, 0xa1, 0x56, 0x24, 0x42, 0x5f,
-	0x43, 0x5e, 0x98, 0x94, 0x13, 0x71, 0x73, 0x89, 0x44, 0xeb, 0x52, 0x45, 0xb3, 0x00, 0xe2, 0xf0,
-	0xa3, 0x4f, 0x20, 0x0c, 0xbf, 0xe1, 0x84, 0xae, 0x17, 0xa5, 0xa4, 0x65, 0x23, 0x04, 0x59, 0xcf,
-	0xec, 0x63, 0xd9, 0xa4, 0xfc, 0xf7, 0x71, 0x56, 0xc9, 0xd4, 0xb2, 0xc7, 0x59, 0x25, 0x5b, 0xcb,
-	0x1d, 0x67, 0x95, 0x5c, 0x2d, 0x7f, 0x9c, 0x55, 0xf2, 0xb5, 0xc2, 0x71, 0x56, 0x29, 0xd4, 0x94,
-	0xe3, 0xac, 0xa2, 0xd4, 0x8a, 0x9a, 0x0b, 0x95, 0xb1, 0xfc, 0xb0, 0x0e, 0x4d, 0x24, 0xd6, 0xb1,
-	0x79, 0x8b, 0x64, 0xf4, 0x72, 0x2c, 0x4c, 0x58, 0x53, 0xc6, 0xac, 0xa5, 0x6a, 0xe9, 0xe3, 0xac,
-	0x92, 0xae, 0x65, 0xe6, 0x59, 0xd6, 0xbe, 0x87, 0x62, 0x34, 0x7b, 0xd1, 0x3d, 0x90, 0xd3, 0x97,
-	0x59, 0xc9, 0x70, 0x2b, 0x8a, 0x10, 0x24, 0x2c, 0x64, 0xe7, 0x5a, 0x98, 0xbd, 0x1e, 0x66, 0x01,
-	0x07, 0x23, 0x1c, 0x84, 0x16, 0xf8, 0x03, 0xb3, 0x90, 0x93, 0x16, 0xb8, 0x20, 0x61, 0x21, 0xbf,
-	0xd4, 0x1a, 0x62, 0x0b, 0x7f, 0x4d, 0x41, 0x5e, 0x98, 0x40, 0x8f, 0x93, 0x7b, 0xeb, 0xac, 0x7d,
-	0x26, 0xf4, 0x44, 0xec, 0xab, 0x4f, 0xc6, 0xf6, 0xd5, 0xfb, 0xf3, 0xf0, 0x89, 0x6d, 0xf5, 0x1b,
-	0xa8, 0xb8, 0x0e, 0xa1, 0xd8, 0x33, 0x44, 0x60, 0x64, 0x19, 0xdd, 0xb8, 0xa5, 0x95, 0x85, 0x86,
-	0x10, 0x68, 0x7f, 0x60, 0xa7, 0x81, 0x88, 0x36, 0x9e, 0xda, 0xa9, 0x0f, 0x9a, 0xda, 0xe9, 0xe5,
-	0xa6, 0x76, 0x66, 0xa9, 0xa9, 0x9d, 0x7d, 0xef, 0xa9, 0x9d, 0xfb, 0x80, 0xa9, 0xfd, 0x97, 0x34,
-	0xe4, 0x45, 0x6c, 0x16, 0xa7, 0x2f, 0x8a, 0xe9, 0x92, 0xe9, 0xe3, 0xf8, 0x44, 0xfa, 0xb6, 0x21,
-	0xe7, 0xfa, 0x96, 0xe9, 0xca, 0xd9, 0xbc, 0x36, 0xad, 0xb2, 0x67, 0xdb, 0x01, 0x26, 0x44, 0x17,
-	0x38, 0xb4, 0x03, 0xf9, 0x00, 0xf7, 0x7d, 0x8a, 0xe5, 0x44, 0xbe, 0x41, 0x43, 0x02, 0xd1, 0x33,
-	0xb6, 0x9b, 0x58, 0x43, 0xbe, 0x9b, 0x44, 0x71, 0x99, 0x2e, 0x2c, 0x81, 0xd0, 0x23, 0x2c, 0x5a,
-	0x87, 0x92, 0x60, 0x30, 0x12, 0x5d, 0x00, 0x42, 0xd4, 0x36, 0xfb, 0x58, 0xfb, 0x7d, 0x01, 0x20,
-	0x5e, 0x11, 0x4b, 0x2f, 0xa1, 0x01, 0x36, 0xfb, 0x71, 0x15, 0x88, 0x21, 0x54, 0x95, 0xe2, 0xb0,
-	0x0e, 0x1e, 0xc1, 0x6a, 0x04, 0x8c, 0x2a, 0x41, 0x14, 0x4c, 0x2d, 0x84, 0x46, 0xb5, 0xf0, 0x39,
-	0x84, 0xea, 0x61, 0x35, 0x88, 0x9a, 0xa9, 0x48, 0xa9, 0xac, 0x87, 0x4d, 0xa8, 0xf4, 0x31, 0x21,
-	0x66, 0x0f, 0x13, 0x83, 0x60, 0x8f, 0x86, 0xc7, 0x86, 0x50, 0xd8, 0x61, 0x3b, 0xef, 0x23, 0x58,
-	0x8d, 0x40, 0x01, 0xb6, 0xb0, 0x33, 0x8a, 0x0e, 0x0e, 0xb5, 0xf0, 0x85, 0x2e, 0xe5, 0x68, 0x0b,
-	0x6a, 0x57, 0x18, 0x0f, 0x0c, 0xd3, 0x75, 0x46, 0x21, 0xa9, 0x38, 0x3e, 0x54, 0x99, 0x7c, 0x8f,
-	0x8b, 0x39, 0xed, 0x25, 0x6c, 0xf2, 0x5a, 0xe4, 0x19, 0x32, 0x84, 0x5f, 0x06, 0x1f, 0xf5, 0xef,
-	0x79, 0x92, 0x58, 0x67, 0x34, 0x27, 0x8c, 0xa5, 0xc3, 0x49, 0x9a, 0x82, 0x23, 0xde, 0x2d, 0x7e,
-	0x03, 0x9f, 0x71, 0x4b, 0x32, 0x2f, 0x73, 0x4d, 0x29, 0x0b, 0x4d, 0x6d, 0x30, 0x1e, 0x9d, 0xd3,
-	0xcc, 0xb1, 0x15, 0x76, 0x98, 0x0c, 0x0c, 0x0f, 0x40, 0xc2, 0x44, 0x71, 0xb9, 0x0e, 0x7b, 0x29,
-	0xb4, 0x59, 0x9c, 0x62, 0x6a, 0x13, 0xd6, 0xc7, 0xa8, 0xc3, 0x5c, 0x24, 0xe8, 0x61, 0x21, 0xfd,
-	0xfd, 0x04, 0x7d, 0x98, 0xb4, 0xd8, 0xc4, 0xb7, 0xb0, 0x26, 0xd2, 0x71, 0xe1, 0xfa, 0xd7, 0x86,
-	0xe5, 0x7b, 0x34, 0xf0, 0x5d, 0xe3, 0xda, 0xf1, 0x6c, 0xff, 0x5a, 0x2d, 0x85, 0xfd, 0x3c, 0x41,
-	0xde, 0xf2, 0xe8, 0xb3, 0xa7, 0xdf, 0x9a, 0xee, 0x10, 0xeb, 0x77, 0xb9, 0xf6, 0xa1, 0xeb, 0x5f,
-	0x37, 0x85, 0xee, 0x6b, 0xae, 0x8a, 0xde, 0x40, 0x5d, 0x06, 0x7f, 0x16, 0x71, 0x79, 0x31, 0xf1,
-	0xc7, 0x42, 0x7d, 0x9a, 0xf9, 0x19, 0xe4, 0x7d, 0x71, 0x22, 0xac, 0xf0, 0x11, 0xfe, 0xe9, 0xbc,
-	0xf1, 0x71, 0xca, 0x51, 0xba, 0x44, 0x6b, 0xff, 0xcc, 0x40, 0x41, 0xb6, 0x3c, 0x7a, 0x09, 0x15,
-	0x6a, 0x0d, 0x9c, 0x81, 0x61, 0x0a, 0x81, 0x9c, 0x5c, 0x0f, 0xe6, 0x0e, 0x89, 0x46, 0xd7, 0x1a,
-	0xb4, 0x06, 0xf2, 0xe1, 0x68, 0x45, 0x2f, 0x73, 0xf5, 0x90, 0xee, 0x05, 0x94, 0x86, 0x36, 0x89,
-	0xc8, 0xc4, 0x58, 0xfb, 0x6c, 0x3e, 0xd9, 0x99, 0x4d, 0x62, 0x2a, 0x18, 0x46, 0x4f, 0xcc, 0x2f,
-	0x9f, 0x5e, 0xe2, 0x20, 0xa2, 0xca, 0x2c, 0xf2, 0xeb, 0x94, 0xc1, 0x13, 0x7e, 0xf9, 0x89, 0xe7,
-	0xfa, 0x1e, 0x94, 0x93, 0x7e, 0xb3, 0x93, 0xcf, 0xc4, 0x9a, 0xcb, 0x7a, 0x31, 0x5e, 0x06, 0x82,
-	0xec, 0xc0, 0x0f, 0xc4, 0xe7, 0x49, 0x4e, 0xe7, 0xbf, 0xeb, 0x5b, 0x00, 0xb1, 0xb7, 0xa8, 0x0e,
-	0xca, 0x85, 0xe3, 0x62, 0x3e, 0xe7, 0xc4, 0x79, 0x3c, 0x7a, 0xae, 0xb7, 0xa1, 0x9c, 0x74, 0x26,
-	0x3a, 0x15, 0xa4, 0xe2, 0x53, 0x01, 0x7a, 0x08, 0xb9, 0x11, 0xcb, 0xae, 0x0c, 0xd1, 0x9d, 0xa9,
-	0x02, 0xd8, 0xf3, 0xde, 0xea, 0x02, 0xb2, 0x5f, 0x84, 0x82, 0xf4, 0x54, 0xfb, 0x63, 0x86, 0x9d,
-	0x6c, 0xe5, 0xb8, 0xdd, 0x85, 0x0c, 0x75, 0xc9, 0xfc, 0x6d, 0x37, 0x04, 0x36, 0xba, 0x2e, 0x8b,
-	0x08, 0x03, 0xb3, 0x8f, 0x37, 0x1e, 0x18, 0x69, 0x77, 0xeb, 0x06, 0x2d, 0xbe, 0x86, 0xf0, 0xe9,
-	0x68, 0x45, 0x17, 0x8a, 0xf5, 0x7f, 0xa5, 0x20, 0xd3, 0x75, 0x09, 0xfa, 0x1c, 0x2a, 0x84, 0x9a,
-	0x9e, 0x6d, 0x06, 0xb6, 0x11, 0x2f, 0x8f, 0x45, 0x3e, 0x14, 0xb3, 0x91, 0x8f, 0xd6, 0x01, 0x44,
-	0x22, 0xe3, 0xa3, 0xe4, 0xd1, 0x8a, 0x5e, 0xe4, 0x32, 0x0e, 0x78, 0x04, 0xab, 0xa2, 0xef, 0x2c,
-	0x1c, 0x50, 0xe7, 0xc2, 0xb1, 0xd8, 0xa7, 0x65, 0x86, 0x67, 0xa4, 0xc6, 0x5f, 0x34, 0x63, 0x39,
-	0x7a, 0x0c, 0x48, 0x36, 0x53, 0x12, 0x9d, 0xe5, 0xe8, 0x55, 0xf1, 0x26, 0x01, 0xdf, 0xaf, 0x42,
-	0xd9, 0x72, 0x06, 0xcc, 0x3a, 0x19, 0x3a, 0x14, 0xd7, 0x4f, 0xa1, 0x32, 0xb6, 0xaa, 0x0f, 0x4e,
-	0x4d, 0x01, 0x72, 0x7d, 0xdf, 0xc6, 0xae, 0xe6, 0x41, 0x39, 0xd9, 0x6b, 0x33, 0x89, 0xef, 0x24,
-	0x89, 0x8b, 0x92, 0x02, 0x3d, 0x05, 0x30, 0x6d, 0xdb, 0x61, 0x5a, 0xd1, 0xae, 0x3e, 0xdb, 0x66,
-	0x02, 0xa7, 0x9d, 0xc0, 0xed, 0xa4, 0x3d, 0x36, 0xc6, 0xfc, 0x21, 0x45, 0x3f, 0x02, 0x25, 0xbc,
-	0x2d, 0x93, 0x75, 0xb1, 0x36, 0x45, 0xf5, 0x5c, 0x02, 0xf4, 0x08, 0xaa, 0x59, 0x80, 0x92, 0x6c,
-	0x27, 0x8e, 0xd7, 0xc3, 0x01, 0xfb, 0x4c, 0x37, 0xd9, 0xe7, 0xbb, 0x58, 0x85, 0xa2, 0xcb, 0xa7,
-	0x31, 0x23, 0xe9, 0xe5, 0x8d, 0xfc, 0x5d, 0x99, 0xf0, 0xd9, 0x1a, 0xb4, 0xbc, 0x0b, 0x9f, 0xf5,
-	0x22, 0x9b, 0x21, 0x46, 0x7c, 0xa9, 0x50, 0xd1, 0x8b, 0x4c, 0x22, 0x6e, 0x35, 0x34, 0x31, 0xa1,
-	0x0c, 0xcb, 0x94, 0x88, 0x34, 0x47, 0x94, 0x98, 0xb0, 0x69, 0x0a, 0xcc, 0x97, 0x50, 0xe3, 0x98,
-	0x00, 0xd3, 0xc0, 0xf4, 0x48, 0xdf, 0xa1, 0x62, 0x60, 0x54, 0xf4, 0x5b, 0x4c, 0xae, 0xc7, 0x62,
-	0x76, 0x46, 0xe1, 0xd0, 0x41, 0xe0, 0x9f, 0x63, 0xc2, 0x4b, 0xa7, 0xa2, 0x73, 0x07, 0x5e, 0x71,
-	0x09, 0x3b, 0x4a, 0x72, 0xc0, 0xb9, 0x69, 0x5d, 0xf9, 0x17, 0xe2, 0x1b, 0x54, 0x9a, 0xdb, 0x17,
-	0xa2, 0x08, 0x22, 0xe6, 0x29, 0xe1, 0x9b, 0xbc, 0x84, 0x88, 0xa5, 0x11, 0xf4, 0x00, 0x6e, 0x89,
-	0x45, 0x79, 0xb6, 0x71, 0x4d, 0x2c, 0xd3, 0xc5, 0x7c, 0x37, 0xaf, 0xe8, 0x7c, 0x31, 0x1d, 0xcf,
-	0x7e, 0xcd, 0x85, 0x11, 0x2e, 0xb0, 0x46, 0x21, 0x4e, 0x89, 0x71, 0xba, 0x35, 0x92, 0xb8, 0x35,
-	0x50, 0x04, 0x8e, 0xfa, 0x7c, 0x23, 0xad, 0xe8, 0x05, 0x0e, 0xa0, 0x7e, 0xf4, 0xca, 0xa4, 0x3e,
-	0xdf, 0x04, 0xe5, 0xab, 0x3d, 0xea, 0xa3, 0x0d, 0xe9, 0x28, 0xf3, 0xa2, 0x4f, 0x08, 0xdf, 0xc6,
-	0xe4, 0x6a, 0x3b, 0x9e, 0xfd, 0x92, 0x90, 0x08, 0xc1, 0xec, 0x33, 0x44, 0x39, 0x46, 0xe8, 0xd6,
-	0x88, 0x21, 0xc2, 0xc5, 0x0e, 0x3d, 0xd3, 0xba, 0xc2, 0xb6, 0x5a, 0x89, 0x17, 0x7b, 0x26, 0x44,
-	0x51, 0x4c, 0x89, 0x40, 0x54, 0x13, 0x56, 0x04, 0xe0, 0x1e, 0xf0, 0x84, 0x1a, 0xae, 0x4f, 0xa8,
-	0x7a, 0x8b, 0xbf, 0xe6, 0x3e, 0x9f, 0xf8, 0x84, 0x46, 0x06, 0x64, 0xf2, 0xd4, 0x5a, 0x6c, 0x40,
-	0x26, 0x2e, 0x82, 0x5c, 0x30, 0x3a, 0x4a, 0xd4, 0xd5, 0x18, 0x72, 0x28, 0x44, 0xe8, 0x31, 0xdc,
-	0x16, 0x26, 0xd8, 0x31, 0x81, 0x9d, 0x94, 0xc5, 0xf9, 0x0b, 0x71, 0x24, 0xaf, 0x8e, 0x13, 0x93,
-	0xf0, 0x63, 0xa7, 0x3c, 0xd8, 0xa1, 0x18, 0x6e, 0x5a, 0x57, 0x02, 0x7d, 0x3b, 0xae, 0x19, 0x86,
-	0xde, 0xb3, 0xae, 0x38, 0x78, 0x9a, 0x3b, 0xc0, 0xd6, 0x48, 0xbd, 0x33, 0xcd, 0xad, 0x63, 0x6b,
-	0x34, 0xcd, 0xcd, 0xd1, 0x1f, 0x4d, 0x71, 0x73, 0x70, 0x18, 0x9a, 0x41, 0x9f, 0x0e, 0xd5, 0xbb,
-	0x71, 0x68, 0x5e, 0xf5, 0xe9, 0x10, 0x3d, 0x84, 0xd5, 0x28, 0x3b, 0x84, 0xd0, 0xcb, 0x00, 0x93,
-	0x4b, 0xf5, 0xe3, 0x44, 0x61, 0x5b, 0xa3, 0x8e, 0x14, 0x27, 0x2a, 0x84, 0xaa, 0x6a, 0xb2, 0x42,
-	0x68, 0x94, 0x9f, 0x80, 0xd2, 0x91, 0x19, 0xa8, 0x6b, 0x89, 0x1c, 0x73, 0x49, 0x64, 0x87, 0xd5,
-	0x49, 0x64, 0xa7, 0x1e, 0xdb, 0xe9, 0x78, 0x76, 0x64, 0x27, 0xec, 0x47, 0x86, 0xb5, 0xae, 0x3d,
-	0x5b, 0xbd, 0x17, 0x27, 0xa3, 0xe3, 0xd9, 0xcd, 0x6b, 0x2f, 0x2e, 0x08, 0xd3, 0x1e, 0xb1, 0xa2,
-	0xba, 0x1f, 0x1b, 0xdc, 0xe3, 0x12, 0x76, 0xf2, 0x97, 0x39, 0xf7, 0x03, 0x1b, 0x07, 0x8e, 0xd7,
-	0x53, 0x3f, 0xe1, 0xa0, 0xaa, 0x48, 0x7b, 0x28, 0xd5, 0xce, 0xe1, 0xa3, 0x17, 0x98, 0x76, 0xfd,
-	0x81, 0xfc, 0x86, 0x24, 0x3a, 0xfe, 0xed, 0x10, 0x13, 0xca, 0x0e, 0xdb, 0xfc, 0x9b, 0xc1, 0x98,
-	0xba, 0xc1, 0xa8, 0x72, 0x79, 0x33, 0xba, 0x58, 0x58, 0x87, 0x52, 0xdf, 0xfc, 0xc1, 0x08, 0x30,
-	0x19, 0xba, 0x94, 0xc8, 0xcf, 0x06, 0xe8, 0x9b, 0x3f, 0xe8, 0x42, 0xa2, 0x19, 0x70, 0x77, 0xd2,
-	0x06, 0x19, 0xf8, 0x1e, 0xc1, 0xe8, 0x2b, 0x28, 0x48, 0x7a, 0x35, 0xc5, 0x8f, 0x58, 0x6b, 0xf3,
-	0xaf, 0xb3, 0x42, 0x24, 0xaa, 0x41, 0x06, 0x7b, 0xe2, 0xf3, 0x44, 0xd1, 0xd9, 0x4f, 0xed, 0x57,
-	0xb0, 0xfa, 0x02, 0x53, 0xf1, 0xc9, 0x1c, 0x2d, 0xe0, 0x01, 0xfb, 0xf8, 0x61, 0x0b, 0x88, 0xaf,
-	0x13, 0x52, 0xe1, 0x77, 0x8a, 0x19, 0x48, 0xf4, 0x32, 0xee, 0xbf, 0x01, 0x94, 0x64, 0x97, 0xae,
-	0x3f, 0x81, 0xbc, 0x20, 0x96, 0x9e, 0xab, 0x73, 0xaf, 0x12, 0x24, 0x6e, 0x86, 0xdf, 0xdb, 0x50,
-	0x8b, 0x98, 0x43, 0xb7, 0xc7, 0xee, 0x3f, 0x52, 0xe3, 0xf7, 0x1f, 0xda, 0x41, 0x62, 0xa1, 0x33,
-	0x3d, 0x49, 0x2d, 0xe3, 0x89, 0xf6, 0x3b, 0xf8, 0x38, 0xa2, 0x11, 0x3b, 0x06, 0x59, 0xc6, 0x7c,
-	0x22, 0xa4, 0xd1, 0x1d, 0x50, 0x3a, 0x19, 0xd2, 0xf0, 0x22, 0x68, 0x22, 0xa4, 0x99, 0xa9, 0x90,
-	0x5e, 0x82, 0x3a, 0xed, 0x80, 0x5c, 0xce, 0xf8, 0xff, 0x03, 0x52, 0xef, 0xf3, 0xff, 0x80, 0x19,
-	0x21, 0xde, 0xe5, 0x11, 0x8b, 0xee, 0xe4, 0xc4, 0x22, 0x6f, 0xbe, 0x97, 0xd3, 0x5a, 0x3c, 0xe1,
-	0x91, 0xce, 0xac, 0x5a, 0x4d, 0x2d, 0x57, 0xab, 0xda, 0xd7, 0x70, 0x87, 0x2d, 0x34, 0x71, 0x5b,
-	0x27, 0x3c, 0x98, 0xba, 0xb1, 0x4b, 0x4d, 0xdf, 0xd8, 0x69, 0x67, 0xbc, 0x37, 0x93, 0xca, 0xd2,
-	0x95, 0x9f, 0x02, 0xc4, 0xc0, 0xf9, 0xff, 0x5b, 0x4b, 0x68, 0x26, 0xf0, 0x5a, 0x4b, 0x54, 0x9d,
-	0x0c, 0x5a, 0x9c, 0xf6, 0x28, 0xa7, 0xa9, 0x89, 0x7b, 0x3d, 0x15, 0x0a, 0x64, 0xd8, 0xef, 0x9b,
-	0xc1, 0x5b, 0x19, 0xd9, 0xf0, 0x31, 0xac, 0x47, 0x49, 0x95, 0xa8, 0x47, 0x71, 0xf3, 0x35, 0xbf,
-	0x1e, 0x85, 0x86, 0xc4, 0xed, 0xfe, 0x39, 0x07, 0x8a, 0x0c, 0xdd, 0x3b, 0x64, 0x41, 0x75, 0x7c,
-	0x5a, 0xa0, 0x2f, 0xa6, 0x09, 0x66, 0xce, 0xac, 0xfa, 0xd6, 0x62, 0xa0, 0xf4, 0xf1, 0x35, 0x40,
-	0xdc, 0xd3, 0x68, 0x73, 0xa6, 0xde, 0xf8, 0x3c, 0xa9, 0x7f, 0x76, 0x33, 0x48, 0x12, 0x77, 0xa1,
-	0x18, 0x49, 0x91, 0x76, 0x83, 0x4a, 0x48, 0xbb, 0x79, 0x23, 0x46, 0xb2, 0x3a, 0x89, 0x41, 0x21,
-	0xfb, 0x05, 0x7d, 0x79, 0x83, 0xe2, 0x78, 0x53, 0xd7, 0x1f, 0x2e, 0x03, 0x1d, 0x8b, 0x4c, 0xf8,
-	0xef, 0xdb, 0xd9, 0xde, 0x8d, 0xb7, 0xd3, 0x9c, 0xc8, 0x4c, 0xf6, 0xcf, 0xf7, 0x50, 0x19, 0xab,
-	0x66, 0xf4, 0x60, 0xb6, 0x57, 0x93, 0xbd, 0x52, 0xff, 0x62, 0x21, 0x6e, 0x3c, 0xf6, 0xe2, 0xa2,
-	0x70, 0x4e, 0xec, 0x93, 0x55, 0x3f, 0x2f, 0xf6, 0x63, 0xe5, 0xbc, 0xff, 0x06, 0x6e, 0x3b, 0xfe,
-	0x14, 0x70, 0xbf, 0x12, 0x16, 0xec, 0x2b, 0x76, 0x24, 0x7f, 0x95, 0xfa, 0xe5, 0x13, 0x79, 0x44,
-	0xef, 0xf9, 0xae, 0xe9, 0xf5, 0x1a, 0x7e, 0xd0, 0xdb, 0x1e, 0xff, 0xb7, 0x3d, 0x7b, 0x0a, 0x77,
-	0xd3, 0x77, 0xc6, 0x68, 0xe7, 0x3c, 0xcf, 0x4f, 0xf3, 0x5f, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff,
-	0x54, 0xae, 0x0b, 0x93, 0xdf, 0x1f, 0x00, 0x00,
+func (x *Address_TcpIpAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address_TcpIpAddress) ProtoMessage() {}
+
+func (x *Address_TcpIpAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[34]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address_TcpIpAddress.ProtoReflect.Descriptor instead.
+func (*Address_TcpIpAddress) Descriptor() ([]byte, []int) {
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 0}
+}
+
+func (x *Address_TcpIpAddress) GetIpAddress() []byte {
+	if x != nil {
+		return x.IpAddress
+	}
+	return nil
+}
+
+func (x *Address_TcpIpAddress) GetPort() int32 {
+	if x != nil {
+		return x.Port
+	}
+	return 0
+}
+
+// A Unix Domain Socket address.
+type Address_UdsAddress struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Filename string `protobuf:"bytes,1,opt,name=filename,proto3" json:"filename,omitempty"`
+}
+
+func (x *Address_UdsAddress) Reset() {
+	*x = Address_UdsAddress{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[35]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address_UdsAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address_UdsAddress) ProtoMessage() {}
+
+func (x *Address_UdsAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[35]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address_UdsAddress.ProtoReflect.Descriptor instead.
+func (*Address_UdsAddress) Descriptor() ([]byte, []int) {
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 1}
+}
+
+func (x *Address_UdsAddress) GetFilename() string {
+	if x != nil {
+		return x.Filename
+	}
+	return ""
+}
+
+// An address type not included above.
+type Address_OtherAddress struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The human readable version of the value.  This value should be set.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The actual address message.
+	Value *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *Address_OtherAddress) Reset() {
+	*x = Address_OtherAddress{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[36]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Address_OtherAddress) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Address_OtherAddress) ProtoMessage() {}
+
+func (x *Address_OtherAddress) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[36]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Address_OtherAddress.ProtoReflect.Descriptor instead.
+func (*Address_OtherAddress) Descriptor() ([]byte, []int) {
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{14, 2}
+}
+
+func (x *Address_OtherAddress) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *Address_OtherAddress) GetValue() *any.Any {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+type Security_Tls struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to CipherSuite:
+	//	*Security_Tls_StandardName
+	//	*Security_Tls_OtherName
+	CipherSuite isSecurity_Tls_CipherSuite `protobuf_oneof:"cipher_suite"`
+	// the certificate used by this endpoint.
+	LocalCertificate []byte `protobuf:"bytes,3,opt,name=local_certificate,json=localCertificate,proto3" json:"local_certificate,omitempty"`
+	// the certificate used by the remote endpoint.
+	RemoteCertificate []byte `protobuf:"bytes,4,opt,name=remote_certificate,json=remoteCertificate,proto3" json:"remote_certificate,omitempty"`
+}
+
+func (x *Security_Tls) Reset() {
+	*x = Security_Tls{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[37]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Security_Tls) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Security_Tls) ProtoMessage() {}
+
+func (x *Security_Tls) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[37]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Security_Tls.ProtoReflect.Descriptor instead.
+func (*Security_Tls) Descriptor() ([]byte, []int) {
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15, 0}
+}
+
+func (m *Security_Tls) GetCipherSuite() isSecurity_Tls_CipherSuite {
+	if m != nil {
+		return m.CipherSuite
+	}
+	return nil
+}
+
+func (x *Security_Tls) GetStandardName() string {
+	if x, ok := x.GetCipherSuite().(*Security_Tls_StandardName); ok {
+		return x.StandardName
+	}
+	return ""
+}
+
+func (x *Security_Tls) GetOtherName() string {
+	if x, ok := x.GetCipherSuite().(*Security_Tls_OtherName); ok {
+		return x.OtherName
+	}
+	return ""
+}
+
+func (x *Security_Tls) GetLocalCertificate() []byte {
+	if x != nil {
+		return x.LocalCertificate
+	}
+	return nil
+}
+
+func (x *Security_Tls) GetRemoteCertificate() []byte {
+	if x != nil {
+		return x.RemoteCertificate
+	}
+	return nil
+}
+
+type isSecurity_Tls_CipherSuite interface {
+	isSecurity_Tls_CipherSuite()
+}
+
+type Security_Tls_StandardName struct {
+	// The cipher suite name in the RFC 4346 format:
+	// https://tools.ietf.org/html/rfc4346#appendix-C
+	StandardName string `protobuf:"bytes,1,opt,name=standard_name,json=standardName,proto3,oneof"`
+}
+
+type Security_Tls_OtherName struct {
+	// Some other way to describe the cipher suite if
+	// the RFC 4346 name is not available.
+	OtherName string `protobuf:"bytes,2,opt,name=other_name,json=otherName,proto3,oneof"`
+}
+
+func (*Security_Tls_StandardName) isSecurity_Tls_CipherSuite() {}
+
+func (*Security_Tls_OtherName) isSecurity_Tls_CipherSuite() {}
+
+type Security_OtherSecurity struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The human readable version of the value.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The actual security details message.
+	Value *any.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *Security_OtherSecurity) Reset() {
+	*x = Security_OtherSecurity{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[38]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Security_OtherSecurity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Security_OtherSecurity) ProtoMessage() {}
+
+func (x *Security_OtherSecurity) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_channelz_v1_channelz_proto_msgTypes[38]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Security_OtherSecurity.ProtoReflect.Descriptor instead.
+func (*Security_OtherSecurity) Descriptor() ([]byte, []int) {
+	return file_grpc_channelz_v1_channelz_proto_rawDescGZIP(), []int{15, 1}
+}
+
+func (x *Security_OtherSecurity) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *Security_OtherSecurity) GetValue() *any.Any {
+	if x != nil {
+		return x.Value
+	}
+	return nil
+}
+
+var File_grpc_channelz_v1_channelz_proto protoreflect.FileDescriptor
+
+var file_grpc_channelz_v1_channelz_proto_rawDesc = []byte{
+	0x0a, 0x1f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2f,
+	0x76, 0x31, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x10, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
+	0x2e, 0x76, 0x31, 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, 0x1a, 0x1e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1a,
+	0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0xaf, 0x02, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x03, 0x72,
+	0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x31, 0x0a, 0x04, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3d,
+	0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+	0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
+	0x66, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x46, 0x0a,
+	0x0e, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18,
+	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+	0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f,
+	0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
+	0x66, 0x22, 0xb5, 0x02, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x12, 0x31, 0x0a, 0x03, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x03,
+	0x72, 0x65, 0x66, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61,
+	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+	0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x46, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x52, 0x0d,
+	0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x3a, 0x0a,
+	0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09,
+	0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x22, 0xc2, 0x01, 0x0a, 0x18, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
+	0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74,
+	0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5e,
+	0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
+	0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0e,
+	0x0a, 0x0a, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x09,
+	0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x52, 0x41,
+	0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x04,
+	0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x22, 0xe9,
+	0x02, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40,
+	0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+	0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+	0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63,
+	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+	0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 0x23,
+	0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x72,
+	0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x75, 0x63,
+	0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61,
+	0x6c, 0x6c, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c,
+	0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12,
+	0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61,
+	0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
+	0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x98, 0x03, 0x0a, 0x11, 0x43,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
+	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54,
+	0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69,
+	0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x09,
+	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
+	0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66,
+	0x48, 0x00, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65,
+	0x66, 0x22, 0x45, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a,
+	0x0a, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a,
+	0x07, 0x43, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x54,
+	0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x54,
+	0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x68, 0x69, 0x6c,
+	0x64, 0x5f, 0x72, 0x65, 0x66, 0x22, 0xc2, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x65, 0x76,
+	0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x67,
+	0x65, 0x64, 0x12, 0x49, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3b, 0x0a,
+	0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x45, 0x76, 0x65,
+	0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x0a, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10,
+	0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
+	0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22,
+	0x6c, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x66,
+	0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
+	0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a,
+	0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10,
+	0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x60, 0x0a,
+	0x09, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73,
+	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10,
+	0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08,
+	0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22,
+	0x60, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x09,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08,
+	0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a,
+	0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10,
+	0x09, 0x22, 0xab, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x03,
+	0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x30, 0x0a, 0x04, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a,
+	0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65,
+	0x66, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x22,
+	0x8e, 0x02, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x34,
+	0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74,
+	0x72, 0x61, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x74,
+	0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x6c,
+	0x6c, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6c,
+	0x6c, 0x73, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64,
+	0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c,
+	0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x46,
+	0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x61,
+	0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
+	0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x61, 0x6c, 0x6c,
+	0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+	0x22, 0xa6, 0x02, 0x0a, 0x06, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x72,
+	0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61,
+	0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b,
+	0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x05,
+	0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x31, 0x0a,
+	0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31,
+	0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+	0x12, 0x36, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08,
+	0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f,
+	0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72,
+	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x83, 0x07, 0x0a, 0x0a, 0x53, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65,
+	0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x73, 0x75, 0x63,
+	0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x25,
+	0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x46,
+	0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52,
+	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x65, 0x65, 0x70, 0x5f,
+	0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x53, 0x65, 0x6e,
+	0x74, 0x12, 0x68, 0x0a, 0x23, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f,
+	0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x6c, 0x61, 0x73, 0x74,
+	0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74,
+	0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x6a, 0x0a, 0x24, 0x6c,
+	0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61,
+	0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
+	0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74,
+	0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x59, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d,
+	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+	0x6d, 0x70, 0x12, 0x61, 0x0a, 0x1f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65,
+	0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x56, 0x0a, 0x19, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x66,
+	0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x77, 0x69, 0x6e, 0x64,
+	0x6f, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77,
+	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x58, 0x0a,
+	0x1a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e,
+	0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17,
+	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
+	0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65,
+	0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+	0xb8, 0x03, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x74,
+	0x63, 0x70, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x54, 0x63,
+	0x70, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x63,
+	0x70, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x47, 0x0a, 0x0b, 0x75, 0x64,
+	0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
+	0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x55, 0x64, 0x73, 0x41, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x75, 0x64, 0x73, 0x41, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64,
+	0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
+	0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x1a, 0x41, 0x0a, 0x0c, 0x54, 0x63, 0x70, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65,
+	0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
+	0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x04, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x28, 0x0a, 0x0a, 0x55, 0x64, 0x73, 0x41, 0x64, 0x64, 0x72,
+	0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x1a,
+	0x4e, 0x0a, 0x0c, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
+	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
+	0x09, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x96, 0x03, 0x0a, 0x08, 0x53,
+	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
+	0x2e, 0x54, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x6f,
+	0x74, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
+	0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x65, 0x63, 0x75,
+	0x72, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x1a, 0xb9, 0x01,
+	0x0a, 0x03, 0x54, 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
+	0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c,
+	0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a,
+	0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x09, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a,
+	0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43,
+	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65,
+	0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x65,
+	0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x63, 0x69, 0x70,
+	0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x1a, 0x4f, 0x0a, 0x0d, 0x4f, 0x74, 0x68,
+	0x65, 0x72, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x6f,
+	0x64, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a,
+	0x0a, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f,
+	0x6e, 0x61, 0x6c, 0x22, 0x4c, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x22, 0x63, 0x0a, 0x12, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x4c, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12,
+	0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75,
+	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, 0x08, 0x0a, 0x13, 0x53, 0x6f, 0x63, 0x6b, 0x65,
+	0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x63, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d,
+	0x0a, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0d, 0x52, 0x09, 0x74, 0x63, 0x70, 0x69, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a,
+	0x0d, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x63, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x43, 0x61, 0x53, 0x74, 0x61, 0x74,
+	0x65, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70,
+	0x69, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b,
+	0x74, 0x63, 0x70, 0x69, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x21, 0x0a,
+	0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66,
+	0x12, 0x21, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x4f, 0x70, 0x74, 0x69,
+	0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f,
+	0x77, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x63,
+	0x70, 0x69, 0x53, 0x6e, 0x64, 0x57, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74,
+	0x63, 0x70, 0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x77, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x08,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x57, 0x73, 0x63,
+	0x61, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74, 0x6f, 0x18,
+	0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x6f, 0x12, 0x19,
+	0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x61, 0x74, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d,
+	0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x41, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x63, 0x70,
+	0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x0a, 0x74, 0x63, 0x70, 0x69, 0x53, 0x6e, 0x64, 0x4d, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x74,
+	0x63, 0x70, 0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x6d, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x4d, 0x73, 0x73, 0x12, 0x21, 0x0a,
+	0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x75, 0x6e, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x0d, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x55, 0x6e, 0x61, 0x63, 0x6b, 0x65, 0x64,
+	0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x18,
+	0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x53, 0x61, 0x63, 0x6b, 0x65,
+	0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x6f, 0x73, 0x74, 0x18, 0x0f,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x6f, 0x73, 0x74, 0x12, 0x21,
+	0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x18, 0x10,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e,
+	0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x66, 0x61, 0x63, 0x6b, 0x65, 0x74,
+	0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x46, 0x61, 0x63,
+	0x6b, 0x65, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73,
+	0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28,
+	0x0d, 0x52, 0x10, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53,
+	0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74,
+	0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x0f, 0x74, 0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x53, 0x65, 0x6e, 0x74,
+	0x12, 0x2d, 0x0a, 0x13, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x64, 0x61,
+	0x74, 0x61, 0x5f, 0x72, 0x65, 0x63, 0x76, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x74,
+	0x63, 0x70, 0x69, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x63, 0x76, 0x12,
+	0x2b, 0x0a, 0x12, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x6b,
+	0x5f, 0x72, 0x65, 0x63, 0x76, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70,
+	0x69, 0x4c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x6b, 0x52, 0x65, 0x63, 0x76, 0x12, 0x1b, 0x0a, 0x09,
+	0x74, 0x63, 0x70, 0x69, 0x5f, 0x70, 0x6d, 0x74, 0x75, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x08, 0x74, 0x63, 0x70, 0x69, 0x50, 0x6d, 0x74, 0x75, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x63, 0x70,
+	0x69, 0x5f, 0x72, 0x63, 0x76, 0x5f, 0x73, 0x73, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x18, 0x17,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x52, 0x63, 0x76, 0x53, 0x73, 0x74,
+	0x68, 0x72, 0x65, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74,
+	0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x74,
+	0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x74, 0x74, 0x76, 0x61, 0x72, 0x18,
+	0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x52, 0x74, 0x74, 0x76, 0x61,
+	0x72, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x73, 0x73,
+	0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x63,
+	0x70, 0x69, 0x53, 0x6e, 0x64, 0x53, 0x73, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x12, 0x22, 0x0a,
+	0x0d, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x73, 0x6e, 0x64, 0x5f, 0x63, 0x77, 0x6e, 0x64, 0x18, 0x1b,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x53, 0x6e, 0x64, 0x43, 0x77, 0x6e,
+	0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x61, 0x64, 0x76, 0x6d, 0x73, 0x73,
+	0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x63, 0x70, 0x69, 0x41, 0x64, 0x76, 0x6d,
+	0x73, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x63, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x64,
+	0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x63, 0x70,
+	0x69, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x62, 0x0a, 0x15, 0x47,
+	0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1f,
+	0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
+	0x5f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x10,
+	0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64,
+	0x22, 0x5c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d,
+	0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a,
+	0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x58,
+	0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x2f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74,
+	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30,
+	0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
+	0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x22, 0x7f, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72,
+	0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64,
+	0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
+	0x73, 0x22, 0x68, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a,
+	0x0a, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x52, 0x09,
+	0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x32, 0x0a, 0x11, 0x47,
+	0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22,
+	0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+	0x6c, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x3b, 0x0a, 0x14, 0x47, 0x65,
+	0x74, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x75,
+	0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+	0x65, 0x6c, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x49,
+	0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12,
+	0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74,
+	0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30,
+	0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
+	0x31, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74,
+	0x32, 0x9a, 0x05, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x12, 0x63, 0x0a,
+	0x0e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12,
+	0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54,
+	0x6f, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x57, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
+	0x12, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
+	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x47,
+	0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e,
+	0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x12, 0x69, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x2a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a,
+	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x6f, 0x63,
+	0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0a,
+	0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x23, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
+	0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e,
+	0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x63,
+	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76,
+	0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x6f,
+	0x63, 0x6b, 0x65, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65,
+	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53,
+	0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x58, 0x0a,
+	0x13, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+	0x7a, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x50, 0x72,
+	0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
+	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x68,
+	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x7a, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x63, 0x68, 0x61, 0x6e,
+	0x6e, 0x65, 0x6c, 0x7a, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_grpc_channelz_v1_channelz_proto_rawDescOnce sync.Once
+	file_grpc_channelz_v1_channelz_proto_rawDescData = file_grpc_channelz_v1_channelz_proto_rawDesc
+)
+
+func file_grpc_channelz_v1_channelz_proto_rawDescGZIP() []byte {
+	file_grpc_channelz_v1_channelz_proto_rawDescOnce.Do(func() {
+		file_grpc_channelz_v1_channelz_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_channelz_v1_channelz_proto_rawDescData)
+	})
+	return file_grpc_channelz_v1_channelz_proto_rawDescData
+}
+
+var file_grpc_channelz_v1_channelz_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_grpc_channelz_v1_channelz_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
+var file_grpc_channelz_v1_channelz_proto_goTypes = []interface{}{
+	(ChannelConnectivityState_State)(0), // 0: grpc.channelz.v1.ChannelConnectivityState.State
+	(ChannelTraceEvent_Severity)(0),     // 1: grpc.channelz.v1.ChannelTraceEvent.Severity
+	(*Channel)(nil),                     // 2: grpc.channelz.v1.Channel
+	(*Subchannel)(nil),                  // 3: grpc.channelz.v1.Subchannel
+	(*ChannelConnectivityState)(nil),    // 4: grpc.channelz.v1.ChannelConnectivityState
+	(*ChannelData)(nil),                 // 5: grpc.channelz.v1.ChannelData
+	(*ChannelTraceEvent)(nil),           // 6: grpc.channelz.v1.ChannelTraceEvent
+	(*ChannelTrace)(nil),                // 7: grpc.channelz.v1.ChannelTrace
+	(*ChannelRef)(nil),                  // 8: grpc.channelz.v1.ChannelRef
+	(*SubchannelRef)(nil),               // 9: grpc.channelz.v1.SubchannelRef
+	(*SocketRef)(nil),                   // 10: grpc.channelz.v1.SocketRef
+	(*ServerRef)(nil),                   // 11: grpc.channelz.v1.ServerRef
+	(*Server)(nil),                      // 12: grpc.channelz.v1.Server
+	(*ServerData)(nil),                  // 13: grpc.channelz.v1.ServerData
+	(*Socket)(nil),                      // 14: grpc.channelz.v1.Socket
+	(*SocketData)(nil),                  // 15: grpc.channelz.v1.SocketData
+	(*Address)(nil),                     // 16: grpc.channelz.v1.Address
+	(*Security)(nil),                    // 17: grpc.channelz.v1.Security
+	(*SocketOption)(nil),                // 18: grpc.channelz.v1.SocketOption
+	(*SocketOptionTimeout)(nil),         // 19: grpc.channelz.v1.SocketOptionTimeout
+	(*SocketOptionLinger)(nil),          // 20: grpc.channelz.v1.SocketOptionLinger
+	(*SocketOptionTcpInfo)(nil),         // 21: grpc.channelz.v1.SocketOptionTcpInfo
+	(*GetTopChannelsRequest)(nil),       // 22: grpc.channelz.v1.GetTopChannelsRequest
+	(*GetTopChannelsResponse)(nil),      // 23: grpc.channelz.v1.GetTopChannelsResponse
+	(*GetServersRequest)(nil),           // 24: grpc.channelz.v1.GetServersRequest
+	(*GetServersResponse)(nil),          // 25: grpc.channelz.v1.GetServersResponse
+	(*GetServerRequest)(nil),            // 26: grpc.channelz.v1.GetServerRequest
+	(*GetServerResponse)(nil),           // 27: grpc.channelz.v1.GetServerResponse
+	(*GetServerSocketsRequest)(nil),     // 28: grpc.channelz.v1.GetServerSocketsRequest
+	(*GetServerSocketsResponse)(nil),    // 29: grpc.channelz.v1.GetServerSocketsResponse
+	(*GetChannelRequest)(nil),           // 30: grpc.channelz.v1.GetChannelRequest
+	(*GetChannelResponse)(nil),          // 31: grpc.channelz.v1.GetChannelResponse
+	(*GetSubchannelRequest)(nil),        // 32: grpc.channelz.v1.GetSubchannelRequest
+	(*GetSubchannelResponse)(nil),       // 33: grpc.channelz.v1.GetSubchannelResponse
+	(*GetSocketRequest)(nil),            // 34: grpc.channelz.v1.GetSocketRequest
+	(*GetSocketResponse)(nil),           // 35: grpc.channelz.v1.GetSocketResponse
+	(*Address_TcpIpAddress)(nil),        // 36: grpc.channelz.v1.Address.TcpIpAddress
+	(*Address_UdsAddress)(nil),          // 37: grpc.channelz.v1.Address.UdsAddress
+	(*Address_OtherAddress)(nil),        // 38: grpc.channelz.v1.Address.OtherAddress
+	(*Security_Tls)(nil),                // 39: grpc.channelz.v1.Security.Tls
+	(*Security_OtherSecurity)(nil),      // 40: grpc.channelz.v1.Security.OtherSecurity
+	(*timestamp.Timestamp)(nil),         // 41: google.protobuf.Timestamp
+	(*wrappers.Int64Value)(nil),         // 42: google.protobuf.Int64Value
+	(*any.Any)(nil),                     // 43: google.protobuf.Any
+	(*duration.Duration)(nil),           // 44: google.protobuf.Duration
+}
+var file_grpc_channelz_v1_channelz_proto_depIdxs = []int32{
+	8,  // 0: grpc.channelz.v1.Channel.ref:type_name -> grpc.channelz.v1.ChannelRef
+	5,  // 1: grpc.channelz.v1.Channel.data:type_name -> grpc.channelz.v1.ChannelData
+	8,  // 2: grpc.channelz.v1.Channel.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
+	9,  // 3: grpc.channelz.v1.Channel.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
+	10, // 4: grpc.channelz.v1.Channel.socket_ref:type_name -> grpc.channelz.v1.SocketRef
+	9,  // 5: grpc.channelz.v1.Subchannel.ref:type_name -> grpc.channelz.v1.SubchannelRef
+	5,  // 6: grpc.channelz.v1.Subchannel.data:type_name -> grpc.channelz.v1.ChannelData
+	8,  // 7: grpc.channelz.v1.Subchannel.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
+	9,  // 8: grpc.channelz.v1.Subchannel.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
+	10, // 9: grpc.channelz.v1.Subchannel.socket_ref:type_name -> grpc.channelz.v1.SocketRef
+	0,  // 10: grpc.channelz.v1.ChannelConnectivityState.state:type_name -> grpc.channelz.v1.ChannelConnectivityState.State
+	4,  // 11: grpc.channelz.v1.ChannelData.state:type_name -> grpc.channelz.v1.ChannelConnectivityState
+	7,  // 12: grpc.channelz.v1.ChannelData.trace:type_name -> grpc.channelz.v1.ChannelTrace
+	41, // 13: grpc.channelz.v1.ChannelData.last_call_started_timestamp:type_name -> google.protobuf.Timestamp
+	1,  // 14: grpc.channelz.v1.ChannelTraceEvent.severity:type_name -> grpc.channelz.v1.ChannelTraceEvent.Severity
+	41, // 15: grpc.channelz.v1.ChannelTraceEvent.timestamp:type_name -> google.protobuf.Timestamp
+	8,  // 16: grpc.channelz.v1.ChannelTraceEvent.channel_ref:type_name -> grpc.channelz.v1.ChannelRef
+	9,  // 17: grpc.channelz.v1.ChannelTraceEvent.subchannel_ref:type_name -> grpc.channelz.v1.SubchannelRef
+	41, // 18: grpc.channelz.v1.ChannelTrace.creation_timestamp:type_name -> google.protobuf.Timestamp
+	6,  // 19: grpc.channelz.v1.ChannelTrace.events:type_name -> grpc.channelz.v1.ChannelTraceEvent
+	11, // 20: grpc.channelz.v1.Server.ref:type_name -> grpc.channelz.v1.ServerRef
+	13, // 21: grpc.channelz.v1.Server.data:type_name -> grpc.channelz.v1.ServerData
+	10, // 22: grpc.channelz.v1.Server.listen_socket:type_name -> grpc.channelz.v1.SocketRef
+	7,  // 23: grpc.channelz.v1.ServerData.trace:type_name -> grpc.channelz.v1.ChannelTrace
+	41, // 24: grpc.channelz.v1.ServerData.last_call_started_timestamp:type_name -> google.protobuf.Timestamp
+	10, // 25: grpc.channelz.v1.Socket.ref:type_name -> grpc.channelz.v1.SocketRef
+	15, // 26: grpc.channelz.v1.Socket.data:type_name -> grpc.channelz.v1.SocketData
+	16, // 27: grpc.channelz.v1.Socket.local:type_name -> grpc.channelz.v1.Address
+	16, // 28: grpc.channelz.v1.Socket.remote:type_name -> grpc.channelz.v1.Address
+	17, // 29: grpc.channelz.v1.Socket.security:type_name -> grpc.channelz.v1.Security
+	41, // 30: grpc.channelz.v1.SocketData.last_local_stream_created_timestamp:type_name -> google.protobuf.Timestamp
+	41, // 31: grpc.channelz.v1.SocketData.last_remote_stream_created_timestamp:type_name -> google.protobuf.Timestamp
+	41, // 32: grpc.channelz.v1.SocketData.last_message_sent_timestamp:type_name -> google.protobuf.Timestamp
+	41, // 33: grpc.channelz.v1.SocketData.last_message_received_timestamp:type_name -> google.protobuf.Timestamp
+	42, // 34: grpc.channelz.v1.SocketData.local_flow_control_window:type_name -> google.protobuf.Int64Value
+	42, // 35: grpc.channelz.v1.SocketData.remote_flow_control_window:type_name -> google.protobuf.Int64Value
+	18, // 36: grpc.channelz.v1.SocketData.option:type_name -> grpc.channelz.v1.SocketOption
+	36, // 37: grpc.channelz.v1.Address.tcpip_address:type_name -> grpc.channelz.v1.Address.TcpIpAddress
+	37, // 38: grpc.channelz.v1.Address.uds_address:type_name -> grpc.channelz.v1.Address.UdsAddress
+	38, // 39: grpc.channelz.v1.Address.other_address:type_name -> grpc.channelz.v1.Address.OtherAddress
+	39, // 40: grpc.channelz.v1.Security.tls:type_name -> grpc.channelz.v1.Security.Tls
+	40, // 41: grpc.channelz.v1.Security.other:type_name -> grpc.channelz.v1.Security.OtherSecurity
+	43, // 42: grpc.channelz.v1.SocketOption.additional:type_name -> google.protobuf.Any
+	44, // 43: grpc.channelz.v1.SocketOptionTimeout.duration:type_name -> google.protobuf.Duration
+	44, // 44: grpc.channelz.v1.SocketOptionLinger.duration:type_name -> google.protobuf.Duration
+	2,  // 45: grpc.channelz.v1.GetTopChannelsResponse.channel:type_name -> grpc.channelz.v1.Channel
+	12, // 46: grpc.channelz.v1.GetServersResponse.server:type_name -> grpc.channelz.v1.Server
+	12, // 47: grpc.channelz.v1.GetServerResponse.server:type_name -> grpc.channelz.v1.Server
+	10, // 48: grpc.channelz.v1.GetServerSocketsResponse.socket_ref:type_name -> grpc.channelz.v1.SocketRef
+	2,  // 49: grpc.channelz.v1.GetChannelResponse.channel:type_name -> grpc.channelz.v1.Channel
+	3,  // 50: grpc.channelz.v1.GetSubchannelResponse.subchannel:type_name -> grpc.channelz.v1.Subchannel
+	14, // 51: grpc.channelz.v1.GetSocketResponse.socket:type_name -> grpc.channelz.v1.Socket
+	43, // 52: grpc.channelz.v1.Address.OtherAddress.value:type_name -> google.protobuf.Any
+	43, // 53: grpc.channelz.v1.Security.OtherSecurity.value:type_name -> google.protobuf.Any
+	22, // 54: grpc.channelz.v1.Channelz.GetTopChannels:input_type -> grpc.channelz.v1.GetTopChannelsRequest
+	24, // 55: grpc.channelz.v1.Channelz.GetServers:input_type -> grpc.channelz.v1.GetServersRequest
+	26, // 56: grpc.channelz.v1.Channelz.GetServer:input_type -> grpc.channelz.v1.GetServerRequest
+	28, // 57: grpc.channelz.v1.Channelz.GetServerSockets:input_type -> grpc.channelz.v1.GetServerSocketsRequest
+	30, // 58: grpc.channelz.v1.Channelz.GetChannel:input_type -> grpc.channelz.v1.GetChannelRequest
+	32, // 59: grpc.channelz.v1.Channelz.GetSubchannel:input_type -> grpc.channelz.v1.GetSubchannelRequest
+	34, // 60: grpc.channelz.v1.Channelz.GetSocket:input_type -> grpc.channelz.v1.GetSocketRequest
+	23, // 61: grpc.channelz.v1.Channelz.GetTopChannels:output_type -> grpc.channelz.v1.GetTopChannelsResponse
+	25, // 62: grpc.channelz.v1.Channelz.GetServers:output_type -> grpc.channelz.v1.GetServersResponse
+	27, // 63: grpc.channelz.v1.Channelz.GetServer:output_type -> grpc.channelz.v1.GetServerResponse
+	29, // 64: grpc.channelz.v1.Channelz.GetServerSockets:output_type -> grpc.channelz.v1.GetServerSocketsResponse
+	31, // 65: grpc.channelz.v1.Channelz.GetChannel:output_type -> grpc.channelz.v1.GetChannelResponse
+	33, // 66: grpc.channelz.v1.Channelz.GetSubchannel:output_type -> grpc.channelz.v1.GetSubchannelResponse
+	35, // 67: grpc.channelz.v1.Channelz.GetSocket:output_type -> grpc.channelz.v1.GetSocketResponse
+	61, // [61:68] is the sub-list for method output_type
+	54, // [54:61] is the sub-list for method input_type
+	54, // [54:54] is the sub-list for extension type_name
+	54, // [54:54] is the sub-list for extension extendee
+	0,  // [0:54] is the sub-list for field type_name
+}
+
+func init() { file_grpc_channelz_v1_channelz_proto_init() }
+func file_grpc_channelz_v1_channelz_proto_init() {
+	if File_grpc_channelz_v1_channelz_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_channelz_v1_channelz_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Channel); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Subchannel); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelConnectivityState); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelTraceEvent); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelTrace); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ChannelRef); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SubchannelRef); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketRef); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerRef); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Server); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Socket); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketData); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Security); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketOption); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketOptionTimeout); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketOptionLinger); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SocketOptionTcpInfo); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetTopChannelsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetTopChannelsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServersRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServersResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServerRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServerResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServerSocketsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetServerSocketsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChannelRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetChannelResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSubchannelRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSubchannelResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetSocketResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address_TcpIpAddress); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address_UdsAddress); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Address_OtherAddress); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Security_Tls); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_channelz_v1_channelz_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Security_OtherSecurity); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_channelz_v1_channelz_proto_msgTypes[4].OneofWrappers = []interface{}{
+		(*ChannelTraceEvent_ChannelRef)(nil),
+		(*ChannelTraceEvent_SubchannelRef)(nil),
+	}
+	file_grpc_channelz_v1_channelz_proto_msgTypes[14].OneofWrappers = []interface{}{
+		(*Address_TcpipAddress)(nil),
+		(*Address_UdsAddress_)(nil),
+		(*Address_OtherAddress_)(nil),
+	}
+	file_grpc_channelz_v1_channelz_proto_msgTypes[15].OneofWrappers = []interface{}{
+		(*Security_Tls_)(nil),
+		(*Security_Other)(nil),
+	}
+	file_grpc_channelz_v1_channelz_proto_msgTypes[37].OneofWrappers = []interface{}{
+		(*Security_Tls_StandardName)(nil),
+		(*Security_Tls_OtherName)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_channelz_v1_channelz_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   39,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_channelz_v1_channelz_proto_goTypes,
+		DependencyIndexes: file_grpc_channelz_v1_channelz_proto_depIdxs,
+		EnumInfos:         file_grpc_channelz_v1_channelz_proto_enumTypes,
+		MessageInfos:      file_grpc_channelz_v1_channelz_proto_msgTypes,
+	}.Build()
+	File_grpc_channelz_v1_channelz_proto = out.File
+	file_grpc_channelz_v1_channelz_proto_rawDesc = nil
+	file_grpc_channelz_v1_channelz_proto_goTypes = nil
+	file_grpc_channelz_v1_channelz_proto_depIdxs = nil
 }
diff --git a/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go b/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go
index 38c4832..e0744ee 100644
--- a/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go
+++ b/credentials/alts/internal/proto/grpc_gcp/altscontext.pb.go
@@ -1,26 +1,52 @@
+// Copyright 2018 The 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.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/altscontext.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/gcp/altscontext.proto
 
 package grpc_gcp
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type AltsContext struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application protocol negotiated for this connection.
 	ApplicationProtocol string `protobuf:"bytes,1,opt,name=application_protocol,json=applicationProtocol,proto3" json:"application_protocol,omitempty"`
 	// The record protocol negotiated for this connection.
@@ -34,119 +60,205 @@
 	// The RPC protocol versions supported by the peer.
 	PeerRpcVersions *RpcProtocolVersions `protobuf:"bytes,6,opt,name=peer_rpc_versions,json=peerRpcVersions,proto3" json:"peer_rpc_versions,omitempty"`
 	// Additional attributes of the peer.
-	PeerAttributes       map[string]string `protobuf:"bytes,7,rep,name=peer_attributes,json=peerAttributes,proto3" json:"peer_attributes,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:"-"`
+	PeerAttributes map[string]string `protobuf:"bytes,7,rep,name=peer_attributes,json=peerAttributes,proto3" json:"peer_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *AltsContext) Reset()         { *m = AltsContext{} }
-func (m *AltsContext) String() string { return proto.CompactTextString(m) }
-func (*AltsContext) ProtoMessage()    {}
+func (x *AltsContext) Reset() {
+	*x = AltsContext{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_altscontext_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AltsContext) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AltsContext) ProtoMessage() {}
+
+func (x *AltsContext) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_altscontext_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AltsContext.ProtoReflect.Descriptor instead.
 func (*AltsContext) Descriptor() ([]byte, []int) {
-	return fileDescriptor_6647a41e53a575a3, []int{0}
+	return file_grpc_gcp_altscontext_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AltsContext) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AltsContext.Unmarshal(m, b)
-}
-func (m *AltsContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AltsContext.Marshal(b, m, deterministic)
-}
-func (m *AltsContext) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AltsContext.Merge(m, src)
-}
-func (m *AltsContext) XXX_Size() int {
-	return xxx_messageInfo_AltsContext.Size(m)
-}
-func (m *AltsContext) XXX_DiscardUnknown() {
-	xxx_messageInfo_AltsContext.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AltsContext proto.InternalMessageInfo
-
-func (m *AltsContext) GetApplicationProtocol() string {
-	if m != nil {
-		return m.ApplicationProtocol
+func (x *AltsContext) GetApplicationProtocol() string {
+	if x != nil {
+		return x.ApplicationProtocol
 	}
 	return ""
 }
 
-func (m *AltsContext) GetRecordProtocol() string {
-	if m != nil {
-		return m.RecordProtocol
+func (x *AltsContext) GetRecordProtocol() string {
+	if x != nil {
+		return x.RecordProtocol
 	}
 	return ""
 }
 
-func (m *AltsContext) GetSecurityLevel() SecurityLevel {
-	if m != nil {
-		return m.SecurityLevel
+func (x *AltsContext) GetSecurityLevel() SecurityLevel {
+	if x != nil {
+		return x.SecurityLevel
 	}
 	return SecurityLevel_SECURITY_NONE
 }
 
-func (m *AltsContext) GetPeerServiceAccount() string {
-	if m != nil {
-		return m.PeerServiceAccount
+func (x *AltsContext) GetPeerServiceAccount() string {
+	if x != nil {
+		return x.PeerServiceAccount
 	}
 	return ""
 }
 
-func (m *AltsContext) GetLocalServiceAccount() string {
-	if m != nil {
-		return m.LocalServiceAccount
+func (x *AltsContext) GetLocalServiceAccount() string {
+	if x != nil {
+		return x.LocalServiceAccount
 	}
 	return ""
 }
 
-func (m *AltsContext) GetPeerRpcVersions() *RpcProtocolVersions {
-	if m != nil {
-		return m.PeerRpcVersions
+func (x *AltsContext) GetPeerRpcVersions() *RpcProtocolVersions {
+	if x != nil {
+		return x.PeerRpcVersions
 	}
 	return nil
 }
 
-func (m *AltsContext) GetPeerAttributes() map[string]string {
-	if m != nil {
-		return m.PeerAttributes
+func (x *AltsContext) GetPeerAttributes() map[string]string {
+	if x != nil {
+		return x.PeerAttributes
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*AltsContext)(nil), "grpc.gcp.AltsContext")
-	proto.RegisterMapType((map[string]string)(nil), "grpc.gcp.AltsContext.PeerAttributesEntry")
+var File_grpc_gcp_altscontext_proto protoreflect.FileDescriptor
+
+var file_grpc_gcp_altscontext_proto_rawDesc = []byte{
+	0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x63,
+	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70,
+	0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72,
+	0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xf1, 0x03, 0x0a, 0x0b, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+	0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
+	0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65,
+	0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3e, 0x0a, 0x0e,
+	0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0d, 0x73,
+	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x14,
+	0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x65, 0x65, 0x72,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32,
+	0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c,
+	0x6f, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65,
+	0x65, 0x72, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x52, 0x0a,
+	0x0f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
+	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
+	0x70, 0x2e, 0x41, 0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x50, 0x65,
+	0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x0e, 0x70, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
+	0x73, 0x1a, 0x41, 0x0a, 0x13, 0x50, 0x65, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+	0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x3a, 0x02, 0x38, 0x01, 0x42, 0x6c, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x10, 0x41,
+	0x6c, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
+	0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
+	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e,
+	0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+	0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67,
+	0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/gcp/altscontext.proto", fileDescriptor_6647a41e53a575a3) }
+var (
+	file_grpc_gcp_altscontext_proto_rawDescOnce sync.Once
+	file_grpc_gcp_altscontext_proto_rawDescData = file_grpc_gcp_altscontext_proto_rawDesc
+)
 
-var fileDescriptor_6647a41e53a575a3 = []byte{
-	// 411 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0x4d, 0x6f, 0x13, 0x31,
-	0x10, 0x86, 0xb5, 0x0d, 0x2d, 0xe0, 0x88, 0xb4, 0xb8, 0xa9, 0x58, 0x45, 0x42, 0x8a, 0xb8, 0xb0,
-	0x5c, 0x76, 0x21, 0x5c, 0x10, 0x07, 0x50, 0x8a, 0x38, 0x20, 0x71, 0x88, 0xb6, 0x12, 0x07, 0x2e,
-	0x2b, 0x77, 0x3a, 0xb2, 0x2c, 0x5c, 0x8f, 0x35, 0x76, 0x22, 0xf2, 0xb3, 0xf9, 0x07, 0x68, 0xed,
-	0xcd, 0x07, 0x1f, 0xb7, 0x9d, 0x79, 0x9f, 0x19, 0xbf, 0xb3, 0x33, 0x62, 0xa6, 0xd9, 0x43, 0xa3,
-	0xc1, 0x37, 0xca, 0xc6, 0x00, 0xe4, 0x22, 0xfe, 0x8c, 0xb5, 0x67, 0x8a, 0x24, 0x1f, 0xf5, 0x5a,
-	0xad, 0xc1, 0xcf, 0xaa, 0x3d, 0x15, 0x59, 0xb9, 0xe0, 0x89, 0x63, 0x17, 0x10, 0xd6, 0x6c, 0xe2,
-	0xb6, 0x03, 0xba, 0xbf, 0x27, 0x97, 0x6b, 0x5e, 0xfc, 0x1a, 0x89, 0xf1, 0xd2, 0xc6, 0xf0, 0x29,
-	0x77, 0x92, 0x6f, 0xc4, 0x54, 0x79, 0x6f, 0x0d, 0xa8, 0x68, 0xc8, 0x75, 0x09, 0x02, 0xb2, 0x65,
-	0x31, 0x2f, 0xaa, 0xc7, 0xed, 0xe5, 0x91, 0xb6, 0x1a, 0x24, 0xf9, 0x52, 0x9c, 0x33, 0x02, 0xf1,
-	0xdd, 0x81, 0x3e, 0x49, 0xf4, 0x24, 0xa7, 0xf7, 0xe0, 0x07, 0x31, 0xd9, 0x9b, 0xb0, 0xb8, 0x41,
-	0x5b, 0x8e, 0xe6, 0x45, 0x35, 0x59, 0x3c, 0xab, 0x77, 0xc6, 0xeb, 0x9b, 0x41, 0xff, 0xda, 0xcb,
-	0xed, 0x93, 0x70, 0x1c, 0xca, 0xd7, 0x62, 0xea, 0x11, 0xb9, 0x0b, 0xc8, 0x1b, 0x03, 0xd8, 0x29,
-	0x00, 0x5a, 0xbb, 0x58, 0x3e, 0x48, 0xaf, 0xc9, 0x5e, 0xbb, 0xc9, 0xd2, 0x32, 0x2b, 0x72, 0x21,
-	0xae, 0x2c, 0x81, 0xb2, 0xff, 0x94, 0x9c, 0xe6, 0x71, 0x92, 0xf8, 0x57, 0xcd, 0x17, 0xf1, 0x34,
-	0xbd, 0xc2, 0x1e, 0xba, 0x0d, 0x72, 0x30, 0xe4, 0x42, 0x79, 0x36, 0x2f, 0xaa, 0xf1, 0xe2, 0xf9,
-	0xc1, 0x68, 0xeb, 0x61, 0x37, 0xd7, 0xb7, 0x01, 0x6a, 0xcf, 0xfb, 0xba, 0xd6, 0xc3, 0x2e, 0x21,
-	0x5b, 0x91, 0x52, 0x9d, 0x8a, 0x91, 0xcd, 0xed, 0x3a, 0x62, 0x28, 0x1f, 0xce, 0x47, 0xd5, 0x78,
-	0xf1, 0xea, 0xd0, 0xe8, 0xe8, 0xe7, 0xd7, 0x2b, 0x44, 0x5e, 0xee, 0xd9, 0xcf, 0x2e, 0xf2, 0xb6,
-	0x9d, 0xf8, 0x3f, 0x92, 0xb3, 0xa5, 0xb8, 0xfc, 0x0f, 0x26, 0x2f, 0xc4, 0xe8, 0x07, 0x6e, 0x87,
-	0x35, 0xf5, 0x9f, 0x72, 0x2a, 0x4e, 0x37, 0xca, 0xae, 0x71, 0x58, 0x46, 0x0e, 0xde, 0x9f, 0xbc,
-	0x2b, 0xae, 0xad, 0xb8, 0x32, 0x94, 0x1d, 0xf4, 0x47, 0x54, 0x1b, 0x17, 0x91, 0x9d, 0xb2, 0xd7,
-	0x17, 0x47, 0x66, 0xd2, 0x74, 0xab, 0xe2, 0xfb, 0x47, 0x4d, 0xa4, 0x2d, 0xd6, 0x9a, 0xac, 0x72,
-	0xba, 0x26, 0xd6, 0x4d, 0x3a, 0x2e, 0x60, 0xbc, 0x43, 0x17, 0x8d, 0xb2, 0x21, 0x9d, 0x62, 0xb3,
-	0xeb, 0xd2, 0xa4, 0x2b, 0x48, 0x50, 0xa7, 0xc1, 0xdf, 0x9e, 0xa5, 0xf8, 0xed, 0xef, 0x00, 0x00,
-	0x00, 0xff, 0xff, 0x9b, 0x8c, 0xe4, 0x6a, 0xba, 0x02, 0x00, 0x00,
+func file_grpc_gcp_altscontext_proto_rawDescGZIP() []byte {
+	file_grpc_gcp_altscontext_proto_rawDescOnce.Do(func() {
+		file_grpc_gcp_altscontext_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_altscontext_proto_rawDescData)
+	})
+	return file_grpc_gcp_altscontext_proto_rawDescData
+}
+
+var file_grpc_gcp_altscontext_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_grpc_gcp_altscontext_proto_goTypes = []interface{}{
+	(*AltsContext)(nil),         // 0: grpc.gcp.AltsContext
+	nil,                         // 1: grpc.gcp.AltsContext.PeerAttributesEntry
+	(SecurityLevel)(0),          // 2: grpc.gcp.SecurityLevel
+	(*RpcProtocolVersions)(nil), // 3: grpc.gcp.RpcProtocolVersions
+}
+var file_grpc_gcp_altscontext_proto_depIdxs = []int32{
+	2, // 0: grpc.gcp.AltsContext.security_level:type_name -> grpc.gcp.SecurityLevel
+	3, // 1: grpc.gcp.AltsContext.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
+	1, // 2: grpc.gcp.AltsContext.peer_attributes:type_name -> grpc.gcp.AltsContext.PeerAttributesEntry
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	3, // [3:3] is the sub-list for extension type_name
+	3, // [3:3] is the sub-list for extension extendee
+	0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_grpc_gcp_altscontext_proto_init() }
+func file_grpc_gcp_altscontext_proto_init() {
+	if File_grpc_gcp_altscontext_proto != nil {
+		return
+	}
+	file_grpc_gcp_transport_security_common_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_gcp_altscontext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AltsContext); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_gcp_altscontext_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_gcp_altscontext_proto_goTypes,
+		DependencyIndexes: file_grpc_gcp_altscontext_proto_depIdxs,
+		MessageInfos:      file_grpc_gcp_altscontext_proto_msgTypes,
+	}.Build()
+	File_grpc_gcp_altscontext_proto = out.File
+	file_grpc_gcp_altscontext_proto_rawDesc = nil
+	file_grpc_gcp_altscontext_proto_goTypes = nil
+	file_grpc_gcp_altscontext_proto_depIdxs = nil
 }
diff --git a/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go b/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go
index 6d9c304..ed94ab2 100644
--- a/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go
+++ b/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go
@@ -1,24 +1,46 @@
+// Copyright 2018 The 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.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/handshaker.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/gcp/handshaker.proto
 
 package grpc_gcp
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type HandshakeProtocol int32
 
@@ -31,24 +53,45 @@
 	HandshakeProtocol_ALTS HandshakeProtocol = 2
 )
 
-var HandshakeProtocol_name = map[int32]string{
-	0: "HANDSHAKE_PROTOCOL_UNSPECIFIED",
-	1: "TLS",
-	2: "ALTS",
-}
+// Enum value maps for HandshakeProtocol.
+var (
+	HandshakeProtocol_name = map[int32]string{
+		0: "HANDSHAKE_PROTOCOL_UNSPECIFIED",
+		1: "TLS",
+		2: "ALTS",
+	}
+	HandshakeProtocol_value = map[string]int32{
+		"HANDSHAKE_PROTOCOL_UNSPECIFIED": 0,
+		"TLS":                            1,
+		"ALTS":                           2,
+	}
+)
 
-var HandshakeProtocol_value = map[string]int32{
-	"HANDSHAKE_PROTOCOL_UNSPECIFIED": 0,
-	"TLS":                            1,
-	"ALTS":                           2,
+func (x HandshakeProtocol) Enum() *HandshakeProtocol {
+	p := new(HandshakeProtocol)
+	*p = x
+	return p
 }
 
 func (x HandshakeProtocol) String() string {
-	return proto.EnumName(HandshakeProtocol_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (HandshakeProtocol) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_gcp_handshaker_proto_enumTypes[0].Descriptor()
+}
+
+func (HandshakeProtocol) Type() protoreflect.EnumType {
+	return &file_grpc_gcp_handshaker_proto_enumTypes[0]
+}
+
+func (x HandshakeProtocol) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use HandshakeProtocol.Descriptor instead.
 func (HandshakeProtocol) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{0}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{0}
 }
 
 type NetworkProtocol int32
@@ -59,138 +102,159 @@
 	NetworkProtocol_UDP                          NetworkProtocol = 2
 )
 
-var NetworkProtocol_name = map[int32]string{
-	0: "NETWORK_PROTOCOL_UNSPECIFIED",
-	1: "TCP",
-	2: "UDP",
-}
+// Enum value maps for NetworkProtocol.
+var (
+	NetworkProtocol_name = map[int32]string{
+		0: "NETWORK_PROTOCOL_UNSPECIFIED",
+		1: "TCP",
+		2: "UDP",
+	}
+	NetworkProtocol_value = map[string]int32{
+		"NETWORK_PROTOCOL_UNSPECIFIED": 0,
+		"TCP":                          1,
+		"UDP":                          2,
+	}
+)
 
-var NetworkProtocol_value = map[string]int32{
-	"NETWORK_PROTOCOL_UNSPECIFIED": 0,
-	"TCP":                          1,
-	"UDP":                          2,
+func (x NetworkProtocol) Enum() *NetworkProtocol {
+	p := new(NetworkProtocol)
+	*p = x
+	return p
 }
 
 func (x NetworkProtocol) String() string {
-	return proto.EnumName(NetworkProtocol_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (NetworkProtocol) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_gcp_handshaker_proto_enumTypes[1].Descriptor()
+}
+
+func (NetworkProtocol) Type() protoreflect.EnumType {
+	return &file_grpc_gcp_handshaker_proto_enumTypes[1]
+}
+
+func (x NetworkProtocol) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use NetworkProtocol.Descriptor instead.
 func (NetworkProtocol) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{1}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{1}
 }
 
 type Endpoint struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// IP address. It should contain an IPv4 or IPv6 string literal, e.g.
 	// "192.168.0.1" or "2001:db8::1".
 	IpAddress string `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"`
 	// Port number.
 	Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
 	// Network protocol (e.g., TCP, UDP) associated with this endpoint.
-	Protocol             NetworkProtocol `protobuf:"varint,3,opt,name=protocol,proto3,enum=grpc.gcp.NetworkProtocol" json:"protocol,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-	XXX_unrecognized     []byte          `json:"-"`
-	XXX_sizecache        int32           `json:"-"`
+	Protocol NetworkProtocol `protobuf:"varint,3,opt,name=protocol,proto3,enum=grpc.gcp.NetworkProtocol" json:"protocol,omitempty"`
 }
 
-func (m *Endpoint) Reset()         { *m = Endpoint{} }
-func (m *Endpoint) String() string { return proto.CompactTextString(m) }
-func (*Endpoint) ProtoMessage()    {}
+func (x *Endpoint) Reset() {
+	*x = Endpoint{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Endpoint) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Endpoint) ProtoMessage() {}
+
+func (x *Endpoint) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Endpoint.ProtoReflect.Descriptor instead.
 func (*Endpoint) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{0}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Endpoint) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Endpoint.Unmarshal(m, b)
-}
-func (m *Endpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Endpoint.Marshal(b, m, deterministic)
-}
-func (m *Endpoint) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Endpoint.Merge(m, src)
-}
-func (m *Endpoint) XXX_Size() int {
-	return xxx_messageInfo_Endpoint.Size(m)
-}
-func (m *Endpoint) XXX_DiscardUnknown() {
-	xxx_messageInfo_Endpoint.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Endpoint proto.InternalMessageInfo
-
-func (m *Endpoint) GetIpAddress() string {
-	if m != nil {
-		return m.IpAddress
+func (x *Endpoint) GetIpAddress() string {
+	if x != nil {
+		return x.IpAddress
 	}
 	return ""
 }
 
-func (m *Endpoint) GetPort() int32 {
-	if m != nil {
-		return m.Port
+func (x *Endpoint) GetPort() int32 {
+	if x != nil {
+		return x.Port
 	}
 	return 0
 }
 
-func (m *Endpoint) GetProtocol() NetworkProtocol {
-	if m != nil {
-		return m.Protocol
+func (x *Endpoint) GetProtocol() NetworkProtocol {
+	if x != nil {
+		return x.Protocol
 	}
 	return NetworkProtocol_NETWORK_PROTOCOL_UNSPECIFIED
 }
 
 type Identity struct {
-	// Types that are valid to be assigned to IdentityOneof:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to IdentityOneof:
 	//	*Identity_ServiceAccount
 	//	*Identity_Hostname
 	IdentityOneof isIdentity_IdentityOneof `protobuf_oneof:"identity_oneof"`
 	// Additional attributes of the identity.
-	Attributes           map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,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:"-"`
+	Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *Identity) Reset()         { *m = Identity{} }
-func (m *Identity) String() string { return proto.CompactTextString(m) }
-func (*Identity) ProtoMessage()    {}
+func (x *Identity) Reset() {
+	*x = Identity{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Identity) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Identity) ProtoMessage() {}
+
+func (x *Identity) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Identity.ProtoReflect.Descriptor instead.
 func (*Identity) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{1}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Identity) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Identity.Unmarshal(m, b)
-}
-func (m *Identity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Identity.Marshal(b, m, deterministic)
-}
-func (m *Identity) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Identity.Merge(m, src)
-}
-func (m *Identity) XXX_Size() int {
-	return xxx_messageInfo_Identity.Size(m)
-}
-func (m *Identity) XXX_DiscardUnknown() {
-	xxx_messageInfo_Identity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Identity proto.InternalMessageInfo
-
-type isIdentity_IdentityOneof interface {
-	isIdentity_IdentityOneof()
-}
-
-type Identity_ServiceAccount struct {
-	ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3,oneof"`
-}
-
-type Identity_Hostname struct {
-	Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof"`
-}
-
-func (*Identity_ServiceAccount) isIdentity_IdentityOneof() {}
-
-func (*Identity_Hostname) isIdentity_IdentityOneof() {}
-
 func (m *Identity) GetIdentityOneof() isIdentity_IdentityOneof {
 	if m != nil {
 		return m.IdentityOneof
@@ -198,36 +262,50 @@
 	return nil
 }
 
-func (m *Identity) GetServiceAccount() string {
-	if x, ok := m.GetIdentityOneof().(*Identity_ServiceAccount); ok {
+func (x *Identity) GetServiceAccount() string {
+	if x, ok := x.GetIdentityOneof().(*Identity_ServiceAccount); ok {
 		return x.ServiceAccount
 	}
 	return ""
 }
 
-func (m *Identity) GetHostname() string {
-	if x, ok := m.GetIdentityOneof().(*Identity_Hostname); ok {
+func (x *Identity) GetHostname() string {
+	if x, ok := x.GetIdentityOneof().(*Identity_Hostname); ok {
 		return x.Hostname
 	}
 	return ""
 }
 
-func (m *Identity) GetAttributes() map[string]string {
-	if m != nil {
-		return m.Attributes
+func (x *Identity) GetAttributes() map[string]string {
+	if x != nil {
+		return x.Attributes
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Identity) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Identity_ServiceAccount)(nil),
-		(*Identity_Hostname)(nil),
-	}
+type isIdentity_IdentityOneof interface {
+	isIdentity_IdentityOneof()
 }
 
+type Identity_ServiceAccount struct {
+	// Service account of a connection endpoint.
+	ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3,oneof"`
+}
+
+type Identity_Hostname struct {
+	// Hostname of a connection endpoint.
+	Hostname string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof"`
+}
+
+func (*Identity_ServiceAccount) isIdentity_IdentityOneof() {}
+
+func (*Identity_Hostname) isIdentity_IdentityOneof() {}
+
 type StartClientHandshakeReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Handshake security protocol requested by the client.
 	HandshakeSecurityProtocol HandshakeProtocol `protobuf:"varint,1,opt,name=handshake_security_protocol,json=handshakeSecurityProtocol,proto3,enum=grpc.gcp.HandshakeProtocol" json:"handshake_security_protocol,omitempty"`
 	// The application protocols supported by the client, e.g., "h2" (for http2),
@@ -256,159 +334,175 @@
 	// (Optional) RPC protocol versions supported by the client.
 	RpcVersions *RpcProtocolVersions `protobuf:"bytes,9,opt,name=rpc_versions,json=rpcVersions,proto3" json:"rpc_versions,omitempty"`
 	// (Optional) Maximum frame size supported by the client.
-	MaxFrameSize         uint32   `protobuf:"varint,10,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxFrameSize uint32 `protobuf:"varint,10,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
 }
 
-func (m *StartClientHandshakeReq) Reset()         { *m = StartClientHandshakeReq{} }
-func (m *StartClientHandshakeReq) String() string { return proto.CompactTextString(m) }
-func (*StartClientHandshakeReq) ProtoMessage()    {}
+func (x *StartClientHandshakeReq) Reset() {
+	*x = StartClientHandshakeReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StartClientHandshakeReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StartClientHandshakeReq) ProtoMessage() {}
+
+func (x *StartClientHandshakeReq) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StartClientHandshakeReq.ProtoReflect.Descriptor instead.
 func (*StartClientHandshakeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{2}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *StartClientHandshakeReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartClientHandshakeReq.Unmarshal(m, b)
-}
-func (m *StartClientHandshakeReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartClientHandshakeReq.Marshal(b, m, deterministic)
-}
-func (m *StartClientHandshakeReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartClientHandshakeReq.Merge(m, src)
-}
-func (m *StartClientHandshakeReq) XXX_Size() int {
-	return xxx_messageInfo_StartClientHandshakeReq.Size(m)
-}
-func (m *StartClientHandshakeReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartClientHandshakeReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StartClientHandshakeReq proto.InternalMessageInfo
-
-func (m *StartClientHandshakeReq) GetHandshakeSecurityProtocol() HandshakeProtocol {
-	if m != nil {
-		return m.HandshakeSecurityProtocol
+func (x *StartClientHandshakeReq) GetHandshakeSecurityProtocol() HandshakeProtocol {
+	if x != nil {
+		return x.HandshakeSecurityProtocol
 	}
 	return HandshakeProtocol_HANDSHAKE_PROTOCOL_UNSPECIFIED
 }
 
-func (m *StartClientHandshakeReq) GetApplicationProtocols() []string {
-	if m != nil {
-		return m.ApplicationProtocols
+func (x *StartClientHandshakeReq) GetApplicationProtocols() []string {
+	if x != nil {
+		return x.ApplicationProtocols
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetRecordProtocols() []string {
-	if m != nil {
-		return m.RecordProtocols
+func (x *StartClientHandshakeReq) GetRecordProtocols() []string {
+	if x != nil {
+		return x.RecordProtocols
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetTargetIdentities() []*Identity {
-	if m != nil {
-		return m.TargetIdentities
+func (x *StartClientHandshakeReq) GetTargetIdentities() []*Identity {
+	if x != nil {
+		return x.TargetIdentities
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetLocalIdentity() *Identity {
-	if m != nil {
-		return m.LocalIdentity
+func (x *StartClientHandshakeReq) GetLocalIdentity() *Identity {
+	if x != nil {
+		return x.LocalIdentity
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetLocalEndpoint() *Endpoint {
-	if m != nil {
-		return m.LocalEndpoint
+func (x *StartClientHandshakeReq) GetLocalEndpoint() *Endpoint {
+	if x != nil {
+		return x.LocalEndpoint
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetRemoteEndpoint() *Endpoint {
-	if m != nil {
-		return m.RemoteEndpoint
+func (x *StartClientHandshakeReq) GetRemoteEndpoint() *Endpoint {
+	if x != nil {
+		return x.RemoteEndpoint
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetTargetName() string {
-	if m != nil {
-		return m.TargetName
+func (x *StartClientHandshakeReq) GetTargetName() string {
+	if x != nil {
+		return x.TargetName
 	}
 	return ""
 }
 
-func (m *StartClientHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
-	if m != nil {
-		return m.RpcVersions
+func (x *StartClientHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
+	if x != nil {
+		return x.RpcVersions
 	}
 	return nil
 }
 
-func (m *StartClientHandshakeReq) GetMaxFrameSize() uint32 {
-	if m != nil {
-		return m.MaxFrameSize
+func (x *StartClientHandshakeReq) GetMaxFrameSize() uint32 {
+	if x != nil {
+		return x.MaxFrameSize
 	}
 	return 0
 }
 
 type ServerHandshakeParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The record protocols supported by the server, e.g.,
 	// "ALTSRP_GCM_AES128".
 	RecordProtocols []string `protobuf:"bytes,1,rep,name=record_protocols,json=recordProtocols,proto3" json:"record_protocols,omitempty"`
 	// (Optional) A list of local identities supported by the server, if
 	// specified. Otherwise, the handshaker chooses a default local identity.
-	LocalIdentities      []*Identity `protobuf:"bytes,2,rep,name=local_identities,json=localIdentities,proto3" json:"local_identities,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	LocalIdentities []*Identity `protobuf:"bytes,2,rep,name=local_identities,json=localIdentities,proto3" json:"local_identities,omitempty"`
 }
 
-func (m *ServerHandshakeParameters) Reset()         { *m = ServerHandshakeParameters{} }
-func (m *ServerHandshakeParameters) String() string { return proto.CompactTextString(m) }
-func (*ServerHandshakeParameters) ProtoMessage()    {}
+func (x *ServerHandshakeParameters) Reset() {
+	*x = ServerHandshakeParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerHandshakeParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerHandshakeParameters) ProtoMessage() {}
+
+func (x *ServerHandshakeParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerHandshakeParameters.ProtoReflect.Descriptor instead.
 func (*ServerHandshakeParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{3}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *ServerHandshakeParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerHandshakeParameters.Unmarshal(m, b)
-}
-func (m *ServerHandshakeParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerHandshakeParameters.Marshal(b, m, deterministic)
-}
-func (m *ServerHandshakeParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerHandshakeParameters.Merge(m, src)
-}
-func (m *ServerHandshakeParameters) XXX_Size() int {
-	return xxx_messageInfo_ServerHandshakeParameters.Size(m)
-}
-func (m *ServerHandshakeParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerHandshakeParameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerHandshakeParameters proto.InternalMessageInfo
-
-func (m *ServerHandshakeParameters) GetRecordProtocols() []string {
-	if m != nil {
-		return m.RecordProtocols
+func (x *ServerHandshakeParameters) GetRecordProtocols() []string {
+	if x != nil {
+		return x.RecordProtocols
 	}
 	return nil
 }
 
-func (m *ServerHandshakeParameters) GetLocalIdentities() []*Identity {
-	if m != nil {
-		return m.LocalIdentities
+func (x *ServerHandshakeParameters) GetLocalIdentities() []*Identity {
+	if x != nil {
+		return x.LocalIdentities
 	}
 	return nil
 }
 
 type StartServerHandshakeReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application protocols supported by the server, e.g., "h2" (for http2),
 	// "grpc".
 	ApplicationProtocols []string `protobuf:"bytes,1,rep,name=application_protocols,json=applicationProtocols,proto3" json:"application_protocols,omitempty"`
@@ -430,177 +524,228 @@
 	// (Optional) RPC protocol versions supported by the server.
 	RpcVersions *RpcProtocolVersions `protobuf:"bytes,6,opt,name=rpc_versions,json=rpcVersions,proto3" json:"rpc_versions,omitempty"`
 	// (Optional) Maximum frame size supported by the server.
-	MaxFrameSize         uint32   `protobuf:"varint,7,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxFrameSize uint32 `protobuf:"varint,7,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
 }
 
-func (m *StartServerHandshakeReq) Reset()         { *m = StartServerHandshakeReq{} }
-func (m *StartServerHandshakeReq) String() string { return proto.CompactTextString(m) }
-func (*StartServerHandshakeReq) ProtoMessage()    {}
+func (x *StartServerHandshakeReq) Reset() {
+	*x = StartServerHandshakeReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StartServerHandshakeReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StartServerHandshakeReq) ProtoMessage() {}
+
+func (x *StartServerHandshakeReq) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StartServerHandshakeReq.ProtoReflect.Descriptor instead.
 func (*StartServerHandshakeReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{4}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *StartServerHandshakeReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StartServerHandshakeReq.Unmarshal(m, b)
-}
-func (m *StartServerHandshakeReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StartServerHandshakeReq.Marshal(b, m, deterministic)
-}
-func (m *StartServerHandshakeReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StartServerHandshakeReq.Merge(m, src)
-}
-func (m *StartServerHandshakeReq) XXX_Size() int {
-	return xxx_messageInfo_StartServerHandshakeReq.Size(m)
-}
-func (m *StartServerHandshakeReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_StartServerHandshakeReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StartServerHandshakeReq proto.InternalMessageInfo
-
-func (m *StartServerHandshakeReq) GetApplicationProtocols() []string {
-	if m != nil {
-		return m.ApplicationProtocols
+func (x *StartServerHandshakeReq) GetApplicationProtocols() []string {
+	if x != nil {
+		return x.ApplicationProtocols
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetHandshakeParameters() map[int32]*ServerHandshakeParameters {
-	if m != nil {
-		return m.HandshakeParameters
+func (x *StartServerHandshakeReq) GetHandshakeParameters() map[int32]*ServerHandshakeParameters {
+	if x != nil {
+		return x.HandshakeParameters
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetInBytes() []byte {
-	if m != nil {
-		return m.InBytes
+func (x *StartServerHandshakeReq) GetInBytes() []byte {
+	if x != nil {
+		return x.InBytes
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetLocalEndpoint() *Endpoint {
-	if m != nil {
-		return m.LocalEndpoint
+func (x *StartServerHandshakeReq) GetLocalEndpoint() *Endpoint {
+	if x != nil {
+		return x.LocalEndpoint
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetRemoteEndpoint() *Endpoint {
-	if m != nil {
-		return m.RemoteEndpoint
+func (x *StartServerHandshakeReq) GetRemoteEndpoint() *Endpoint {
+	if x != nil {
+		return x.RemoteEndpoint
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
-	if m != nil {
-		return m.RpcVersions
+func (x *StartServerHandshakeReq) GetRpcVersions() *RpcProtocolVersions {
+	if x != nil {
+		return x.RpcVersions
 	}
 	return nil
 }
 
-func (m *StartServerHandshakeReq) GetMaxFrameSize() uint32 {
-	if m != nil {
-		return m.MaxFrameSize
+func (x *StartServerHandshakeReq) GetMaxFrameSize() uint32 {
+	if x != nil {
+		return x.MaxFrameSize
 	}
 	return 0
 }
 
 type NextHandshakeMessageReq struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Bytes in out_frames returned from the peer's HandshakerResp. It is possible
 	// that the peer's out_frames are split into multiple NextHandshakerMessageReq
 	// messages.
-	InBytes              []byte   `protobuf:"bytes,1,opt,name=in_bytes,json=inBytes,proto3" json:"in_bytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	InBytes []byte `protobuf:"bytes,1,opt,name=in_bytes,json=inBytes,proto3" json:"in_bytes,omitempty"`
 }
 
-func (m *NextHandshakeMessageReq) Reset()         { *m = NextHandshakeMessageReq{} }
-func (m *NextHandshakeMessageReq) String() string { return proto.CompactTextString(m) }
-func (*NextHandshakeMessageReq) ProtoMessage()    {}
+func (x *NextHandshakeMessageReq) Reset() {
+	*x = NextHandshakeMessageReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *NextHandshakeMessageReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NextHandshakeMessageReq) ProtoMessage() {}
+
+func (x *NextHandshakeMessageReq) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use NextHandshakeMessageReq.ProtoReflect.Descriptor instead.
 func (*NextHandshakeMessageReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{5}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *NextHandshakeMessageReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NextHandshakeMessageReq.Unmarshal(m, b)
-}
-func (m *NextHandshakeMessageReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NextHandshakeMessageReq.Marshal(b, m, deterministic)
-}
-func (m *NextHandshakeMessageReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NextHandshakeMessageReq.Merge(m, src)
-}
-func (m *NextHandshakeMessageReq) XXX_Size() int {
-	return xxx_messageInfo_NextHandshakeMessageReq.Size(m)
-}
-func (m *NextHandshakeMessageReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_NextHandshakeMessageReq.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NextHandshakeMessageReq proto.InternalMessageInfo
-
-func (m *NextHandshakeMessageReq) GetInBytes() []byte {
-	if m != nil {
-		return m.InBytes
+func (x *NextHandshakeMessageReq) GetInBytes() []byte {
+	if x != nil {
+		return x.InBytes
 	}
 	return nil
 }
 
 type HandshakerReq struct {
-	// Types that are valid to be assigned to ReqOneof:
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Types that are assignable to ReqOneof:
 	//	*HandshakerReq_ClientStart
 	//	*HandshakerReq_ServerStart
 	//	*HandshakerReq_Next
-	ReqOneof             isHandshakerReq_ReqOneof `protobuf_oneof:"req_oneof"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	ReqOneof isHandshakerReq_ReqOneof `protobuf_oneof:"req_oneof"`
 }
 
-func (m *HandshakerReq) Reset()         { *m = HandshakerReq{} }
-func (m *HandshakerReq) String() string { return proto.CompactTextString(m) }
-func (*HandshakerReq) ProtoMessage()    {}
+func (x *HandshakerReq) Reset() {
+	*x = HandshakerReq{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HandshakerReq) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HandshakerReq) ProtoMessage() {}
+
+func (x *HandshakerReq) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HandshakerReq.ProtoReflect.Descriptor instead.
 func (*HandshakerReq) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{6}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *HandshakerReq) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HandshakerReq.Unmarshal(m, b)
-}
-func (m *HandshakerReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HandshakerReq.Marshal(b, m, deterministic)
-}
-func (m *HandshakerReq) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HandshakerReq.Merge(m, src)
-}
-func (m *HandshakerReq) XXX_Size() int {
-	return xxx_messageInfo_HandshakerReq.Size(m)
-}
-func (m *HandshakerReq) XXX_DiscardUnknown() {
-	xxx_messageInfo_HandshakerReq.DiscardUnknown(m)
+func (m *HandshakerReq) GetReqOneof() isHandshakerReq_ReqOneof {
+	if m != nil {
+		return m.ReqOneof
+	}
+	return nil
 }
 
-var xxx_messageInfo_HandshakerReq proto.InternalMessageInfo
+func (x *HandshakerReq) GetClientStart() *StartClientHandshakeReq {
+	if x, ok := x.GetReqOneof().(*HandshakerReq_ClientStart); ok {
+		return x.ClientStart
+	}
+	return nil
+}
+
+func (x *HandshakerReq) GetServerStart() *StartServerHandshakeReq {
+	if x, ok := x.GetReqOneof().(*HandshakerReq_ServerStart); ok {
+		return x.ServerStart
+	}
+	return nil
+}
+
+func (x *HandshakerReq) GetNext() *NextHandshakeMessageReq {
+	if x, ok := x.GetReqOneof().(*HandshakerReq_Next); ok {
+		return x.Next
+	}
+	return nil
+}
 
 type isHandshakerReq_ReqOneof interface {
 	isHandshakerReq_ReqOneof()
 }
 
 type HandshakerReq_ClientStart struct {
+	// The start client handshake request message.
 	ClientStart *StartClientHandshakeReq `protobuf:"bytes,1,opt,name=client_start,json=clientStart,proto3,oneof"`
 }
 
 type HandshakerReq_ServerStart struct {
+	// The start server handshake request message.
 	ServerStart *StartServerHandshakeReq `protobuf:"bytes,2,opt,name=server_start,json=serverStart,proto3,oneof"`
 }
 
 type HandshakerReq_Next struct {
+	// The next handshake request message.
 	Next *NextHandshakeMessageReq `protobuf:"bytes,3,opt,name=next,proto3,oneof"`
 }
 
@@ -610,44 +755,11 @@
 
 func (*HandshakerReq_Next) isHandshakerReq_ReqOneof() {}
 
-func (m *HandshakerReq) GetReqOneof() isHandshakerReq_ReqOneof {
-	if m != nil {
-		return m.ReqOneof
-	}
-	return nil
-}
-
-func (m *HandshakerReq) GetClientStart() *StartClientHandshakeReq {
-	if x, ok := m.GetReqOneof().(*HandshakerReq_ClientStart); ok {
-		return x.ClientStart
-	}
-	return nil
-}
-
-func (m *HandshakerReq) GetServerStart() *StartServerHandshakeReq {
-	if x, ok := m.GetReqOneof().(*HandshakerReq_ServerStart); ok {
-		return x.ServerStart
-	}
-	return nil
-}
-
-func (m *HandshakerReq) GetNext() *NextHandshakeMessageReq {
-	if x, ok := m.GetReqOneof().(*HandshakerReq_Next); ok {
-		return x.Next
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*HandshakerReq) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*HandshakerReq_ClientStart)(nil),
-		(*HandshakerReq_ServerStart)(nil),
-		(*HandshakerReq_Next)(nil),
-	}
-}
-
 type HandshakerResult struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The application protocol negotiated for this connection.
 	ApplicationProtocol string `protobuf:"bytes,1,opt,name=application_protocol,json=applicationProtocol,proto3" json:"application_protocol,omitempty"`
 	// The record protocol negotiated for this connection.
@@ -667,143 +779,159 @@
 	// The RPC protocol versions supported by the peer.
 	PeerRpcVersions *RpcProtocolVersions `protobuf:"bytes,7,opt,name=peer_rpc_versions,json=peerRpcVersions,proto3" json:"peer_rpc_versions,omitempty"`
 	// The maximum frame size of the peer.
-	MaxFrameSize         uint32   `protobuf:"varint,8,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	MaxFrameSize uint32 `protobuf:"varint,8,opt,name=max_frame_size,json=maxFrameSize,proto3" json:"max_frame_size,omitempty"`
 }
 
-func (m *HandshakerResult) Reset()         { *m = HandshakerResult{} }
-func (m *HandshakerResult) String() string { return proto.CompactTextString(m) }
-func (*HandshakerResult) ProtoMessage()    {}
+func (x *HandshakerResult) Reset() {
+	*x = HandshakerResult{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HandshakerResult) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HandshakerResult) ProtoMessage() {}
+
+func (x *HandshakerResult) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HandshakerResult.ProtoReflect.Descriptor instead.
 func (*HandshakerResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{7}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *HandshakerResult) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HandshakerResult.Unmarshal(m, b)
-}
-func (m *HandshakerResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HandshakerResult.Marshal(b, m, deterministic)
-}
-func (m *HandshakerResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HandshakerResult.Merge(m, src)
-}
-func (m *HandshakerResult) XXX_Size() int {
-	return xxx_messageInfo_HandshakerResult.Size(m)
-}
-func (m *HandshakerResult) XXX_DiscardUnknown() {
-	xxx_messageInfo_HandshakerResult.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HandshakerResult proto.InternalMessageInfo
-
-func (m *HandshakerResult) GetApplicationProtocol() string {
-	if m != nil {
-		return m.ApplicationProtocol
+func (x *HandshakerResult) GetApplicationProtocol() string {
+	if x != nil {
+		return x.ApplicationProtocol
 	}
 	return ""
 }
 
-func (m *HandshakerResult) GetRecordProtocol() string {
-	if m != nil {
-		return m.RecordProtocol
+func (x *HandshakerResult) GetRecordProtocol() string {
+	if x != nil {
+		return x.RecordProtocol
 	}
 	return ""
 }
 
-func (m *HandshakerResult) GetKeyData() []byte {
-	if m != nil {
-		return m.KeyData
+func (x *HandshakerResult) GetKeyData() []byte {
+	if x != nil {
+		return x.KeyData
 	}
 	return nil
 }
 
-func (m *HandshakerResult) GetPeerIdentity() *Identity {
-	if m != nil {
-		return m.PeerIdentity
+func (x *HandshakerResult) GetPeerIdentity() *Identity {
+	if x != nil {
+		return x.PeerIdentity
 	}
 	return nil
 }
 
-func (m *HandshakerResult) GetLocalIdentity() *Identity {
-	if m != nil {
-		return m.LocalIdentity
+func (x *HandshakerResult) GetLocalIdentity() *Identity {
+	if x != nil {
+		return x.LocalIdentity
 	}
 	return nil
 }
 
-func (m *HandshakerResult) GetKeepChannelOpen() bool {
-	if m != nil {
-		return m.KeepChannelOpen
+func (x *HandshakerResult) GetKeepChannelOpen() bool {
+	if x != nil {
+		return x.KeepChannelOpen
 	}
 	return false
 }
 
-func (m *HandshakerResult) GetPeerRpcVersions() *RpcProtocolVersions {
-	if m != nil {
-		return m.PeerRpcVersions
+func (x *HandshakerResult) GetPeerRpcVersions() *RpcProtocolVersions {
+	if x != nil {
+		return x.PeerRpcVersions
 	}
 	return nil
 }
 
-func (m *HandshakerResult) GetMaxFrameSize() uint32 {
-	if m != nil {
-		return m.MaxFrameSize
+func (x *HandshakerResult) GetMaxFrameSize() uint32 {
+	if x != nil {
+		return x.MaxFrameSize
 	}
 	return 0
 }
 
 type HandshakerStatus struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The status code. This could be the gRPC status code.
 	Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
 	// The status details.
-	Details              string   `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Details string `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
 }
 
-func (m *HandshakerStatus) Reset()         { *m = HandshakerStatus{} }
-func (m *HandshakerStatus) String() string { return proto.CompactTextString(m) }
-func (*HandshakerStatus) ProtoMessage()    {}
+func (x *HandshakerStatus) Reset() {
+	*x = HandshakerStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HandshakerStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HandshakerStatus) ProtoMessage() {}
+
+func (x *HandshakerStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HandshakerStatus.ProtoReflect.Descriptor instead.
 func (*HandshakerStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{8}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *HandshakerStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HandshakerStatus.Unmarshal(m, b)
-}
-func (m *HandshakerStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HandshakerStatus.Marshal(b, m, deterministic)
-}
-func (m *HandshakerStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HandshakerStatus.Merge(m, src)
-}
-func (m *HandshakerStatus) XXX_Size() int {
-	return xxx_messageInfo_HandshakerStatus.Size(m)
-}
-func (m *HandshakerStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_HandshakerStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HandshakerStatus proto.InternalMessageInfo
-
-func (m *HandshakerStatus) GetCode() uint32 {
-	if m != nil {
-		return m.Code
+func (x *HandshakerStatus) GetCode() uint32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *HandshakerStatus) GetDetails() string {
-	if m != nil {
-		return m.Details
+func (x *HandshakerStatus) GetDetails() string {
+	if x != nil {
+		return x.Details
 	}
 	return ""
 }
 
 type HandshakerResp struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Frames to be given to the peer for the NextHandshakeMessageReq. May be
 	// empty if no out_frames have to be sent to the peer or if in_bytes in the
 	// HandshakerReq are incomplete. All the non-empty out frames must be sent to
@@ -818,160 +946,481 @@
 	// to frames that needs to be forwarded to the peer.
 	Result *HandshakerResult `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"`
 	// Status of the handshaker.
-	Status               *HandshakerStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
+	Status *HandshakerStatus `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
 }
 
-func (m *HandshakerResp) Reset()         { *m = HandshakerResp{} }
-func (m *HandshakerResp) String() string { return proto.CompactTextString(m) }
-func (*HandshakerResp) ProtoMessage()    {}
+func (x *HandshakerResp) Reset() {
+	*x = HandshakerResp{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_handshaker_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HandshakerResp) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HandshakerResp) ProtoMessage() {}
+
+func (x *HandshakerResp) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_handshaker_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HandshakerResp.ProtoReflect.Descriptor instead.
 func (*HandshakerResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_54c074f40c7c7e99, []int{9}
+	return file_grpc_gcp_handshaker_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *HandshakerResp) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HandshakerResp.Unmarshal(m, b)
-}
-func (m *HandshakerResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HandshakerResp.Marshal(b, m, deterministic)
-}
-func (m *HandshakerResp) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HandshakerResp.Merge(m, src)
-}
-func (m *HandshakerResp) XXX_Size() int {
-	return xxx_messageInfo_HandshakerResp.Size(m)
-}
-func (m *HandshakerResp) XXX_DiscardUnknown() {
-	xxx_messageInfo_HandshakerResp.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HandshakerResp proto.InternalMessageInfo
-
-func (m *HandshakerResp) GetOutFrames() []byte {
-	if m != nil {
-		return m.OutFrames
+func (x *HandshakerResp) GetOutFrames() []byte {
+	if x != nil {
+		return x.OutFrames
 	}
 	return nil
 }
 
-func (m *HandshakerResp) GetBytesConsumed() uint32 {
-	if m != nil {
-		return m.BytesConsumed
+func (x *HandshakerResp) GetBytesConsumed() uint32 {
+	if x != nil {
+		return x.BytesConsumed
 	}
 	return 0
 }
 
-func (m *HandshakerResp) GetResult() *HandshakerResult {
-	if m != nil {
-		return m.Result
+func (x *HandshakerResp) GetResult() *HandshakerResult {
+	if x != nil {
+		return x.Result
 	}
 	return nil
 }
 
-func (m *HandshakerResp) GetStatus() *HandshakerStatus {
-	if m != nil {
-		return m.Status
+func (x *HandshakerResp) GetStatus() *HandshakerStatus {
+	if x != nil {
+		return x.Status
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.gcp.HandshakeProtocol", HandshakeProtocol_name, HandshakeProtocol_value)
-	proto.RegisterEnum("grpc.gcp.NetworkProtocol", NetworkProtocol_name, NetworkProtocol_value)
-	proto.RegisterType((*Endpoint)(nil), "grpc.gcp.Endpoint")
-	proto.RegisterType((*Identity)(nil), "grpc.gcp.Identity")
-	proto.RegisterMapType((map[string]string)(nil), "grpc.gcp.Identity.AttributesEntry")
-	proto.RegisterType((*StartClientHandshakeReq)(nil), "grpc.gcp.StartClientHandshakeReq")
-	proto.RegisterType((*ServerHandshakeParameters)(nil), "grpc.gcp.ServerHandshakeParameters")
-	proto.RegisterType((*StartServerHandshakeReq)(nil), "grpc.gcp.StartServerHandshakeReq")
-	proto.RegisterMapType((map[int32]*ServerHandshakeParameters)(nil), "grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry")
-	proto.RegisterType((*NextHandshakeMessageReq)(nil), "grpc.gcp.NextHandshakeMessageReq")
-	proto.RegisterType((*HandshakerReq)(nil), "grpc.gcp.HandshakerReq")
-	proto.RegisterType((*HandshakerResult)(nil), "grpc.gcp.HandshakerResult")
-	proto.RegisterType((*HandshakerStatus)(nil), "grpc.gcp.HandshakerStatus")
-	proto.RegisterType((*HandshakerResp)(nil), "grpc.gcp.HandshakerResp")
+var File_grpc_gcp_handshaker_proto protoreflect.FileDescriptor
+
+var file_grpc_gcp_handshaker_proto_rawDesc = []byte{
+	0x0a, 0x19, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x68, 0x61, 0x6e, 0x64, 0x73,
+	0x68, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x67, 0x63, 0x70, 0x1a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f,
+	0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
+	0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0x74, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+	0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f,
+	0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x35,
+	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x74, 0x77,
+	0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xe8, 0x01, 0x0a, 0x08, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x74, 0x79, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a,
+	0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
+	0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x61,
+	0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a,
+	0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10,
+	0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
+	0x22, 0xd3, 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
+	0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x5b, 0x0a, 0x1b,
+	0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
+	0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e,
+	0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x19,
+	0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74,
+	0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+	0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x29,
+	0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+	0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
+	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x3f, 0x0a, 0x11, 0x74, 0x61, 0x72,
+	0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f,
+	0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64,
+	0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65,
+	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+	0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
+	0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f,
+	0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72,
+	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a,
+	0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40,
+	0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69,
+	0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61,
+	0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
+	0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
+	0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12,
+	0x3d, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x6c,
+	0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xa5,
+	0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61,
+	0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70,
+	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+	0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12,
+	0x6d, 0x0a, 0x14, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72,
+	0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71,
+	0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
+	0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x61, 0x6e, 0x64, 0x73,
+	0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19,
+	0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63,
+	0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64,
+	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70,
+	0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65,
+	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+	0x74, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+	0x74, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67,
+	0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78,
+	0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6b, 0x0a, 0x18, 0x48, 0x61, 0x6e,
+	0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
+	0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
+	0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x34, 0x0a, 0x17, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61,
+	0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
+	0x71, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xe5, 0x01, 0x0a,
+	0x0d, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x46,
+	0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73,
+	0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e,
+	0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48,
+	0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x37,
+	0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64,
+	0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x48,
+	0x00, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f,
+	0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9a, 0x03, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
+	0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70,
+	0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f,
+	0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f,
+	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74,
+	0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61,
+	0x12, 0x37, 0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67,
+	0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x70, 0x65, 0x65,
+	0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63,
+	0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e,
+	0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x63, 0x68, 0x61,
+	0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x0f, 0x6b, 0x65, 0x65, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e,
+	0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+	0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65, 0x65, 0x72,
+	0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d,
+	0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a,
+	0x65, 0x22, 0x40, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53,
+	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74,
+	0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61,
+	0x69, 0x6c, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
+	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x72,
+	0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x46,
+	0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63,
+	0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62,
+	0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x06,
+	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
+	0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
+	0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64,
+	0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
+	0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x41, 0x4e,
+	0x44, 0x53, 0x48, 0x41, 0x4b, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f,
+	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a,
+	0x03, 0x54, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x4c, 0x54, 0x53, 0x10, 0x02,
+	0x2a, 0x45, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50,
+	0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07,
+	0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x02, 0x32, 0x5b, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73,
+	0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0b,
+	0x44, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65,
+	0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00,
+	0x28, 0x01, 0x30, 0x01, 0x42, 0x6b, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x0f, 0x48,
+	0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+	0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
+	0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63,
+	0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/gcp/handshaker.proto", fileDescriptor_54c074f40c7c7e99) }
+var (
+	file_grpc_gcp_handshaker_proto_rawDescOnce sync.Once
+	file_grpc_gcp_handshaker_proto_rawDescData = file_grpc_gcp_handshaker_proto_rawDesc
+)
 
-var fileDescriptor_54c074f40c7c7e99 = []byte{
-	// 1203 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
-	0x14, 0xce, 0xda, 0x4e, 0xe2, 0x1c, 0xc7, 0x3f, 0x99, 0xa6, 0xea, 0x26, 0x6d, 0xc1, 0x18, 0x10,
-	0x6e, 0x2f, 0x6c, 0x70, 0x41, 0xa5, 0x45, 0x55, 0x6b, 0x3b, 0x8e, 0x1c, 0x5a, 0x1c, 0x6b, 0x9d,
-	0x82, 0x44, 0x2f, 0x56, 0xd3, 0xf5, 0xd4, 0x59, 0x79, 0x3d, 0xb3, 0x9d, 0x19, 0x87, 0xb8, 0xf7,
-	0xbc, 0x04, 0xf7, 0xbc, 0x06, 0x2f, 0xc1, 0x33, 0x20, 0xf1, 0x18, 0x68, 0x67, 0x7f, 0x6d, 0xaf,
-	0xab, 0x22, 0xb8, 0xdb, 0x39, 0xf3, 0x7d, 0x67, 0xce, 0x9c, 0xf3, 0x9d, 0xb3, 0x03, 0x47, 0x13,
-	0xee, 0x5a, 0xcd, 0x89, 0xe5, 0x36, 0x2f, 0x31, 0x1d, 0x8b, 0x4b, 0x3c, 0x25, 0xbc, 0xe1, 0x72,
-	0x26, 0x19, 0xca, 0x7b, 0x5b, 0x8d, 0x89, 0xe5, 0x1e, 0xd7, 0x23, 0x90, 0xe4, 0x98, 0x0a, 0x97,
-	0x71, 0x69, 0x0a, 0x62, 0xcd, 0xb9, 0x2d, 0x17, 0xa6, 0xc5, 0x66, 0x33, 0x46, 0x7d, 0x4e, 0x4d,
-	0x42, 0xbe, 0x47, 0xc7, 0x2e, 0xb3, 0xa9, 0x44, 0x77, 0x01, 0x6c, 0xd7, 0xc4, 0xe3, 0x31, 0x27,
-	0x42, 0xe8, 0x5a, 0x55, 0xab, 0xef, 0x19, 0x7b, 0xb6, 0xdb, 0xf6, 0x0d, 0x08, 0x41, 0xce, 0x73,
-	0xa4, 0x67, 0xaa, 0x5a, 0x7d, 0xdb, 0x50, 0xdf, 0xe8, 0x1b, 0xc8, 0x2b, 0x3f, 0x16, 0x73, 0xf4,
-	0x6c, 0x55, 0xab, 0x97, 0x5a, 0x47, 0x8d, 0x30, 0x8a, 0xc6, 0x80, 0xc8, 0x5f, 0x18, 0x9f, 0x0e,
-	0x03, 0x80, 0x11, 0x41, 0x6b, 0x7f, 0x6b, 0x90, 0x3f, 0x1b, 0x13, 0x2a, 0x6d, 0xb9, 0x40, 0xf7,
-	0xa0, 0x2c, 0x08, 0xbf, 0xb2, 0x2d, 0x62, 0x62, 0xcb, 0x62, 0x73, 0x2a, 0xfd, 0xb3, 0xfb, 0x5b,
-	0x46, 0x29, 0xd8, 0x68, 0xfb, 0x76, 0x74, 0x07, 0xf2, 0x97, 0x4c, 0x48, 0x8a, 0x67, 0x44, 0x85,
-	0xe1, 0x61, 0x22, 0x0b, 0xea, 0x00, 0x60, 0x29, 0xb9, 0xfd, 0x7a, 0x2e, 0x89, 0xd0, 0xb3, 0xd5,
-	0x6c, 0xbd, 0xd0, 0xaa, 0xc5, 0xe1, 0x84, 0x07, 0x36, 0xda, 0x11, 0xa8, 0x47, 0x25, 0x5f, 0x18,
-	0x09, 0xd6, 0xf1, 0x13, 0x28, 0xaf, 0x6c, 0xa3, 0x0a, 0x64, 0xa7, 0x64, 0x11, 0xe4, 0xc3, 0xfb,
-	0x44, 0x87, 0xb0, 0x7d, 0x85, 0x9d, 0x79, 0x10, 0x83, 0xe1, 0x2f, 0x1e, 0x67, 0xbe, 0xd5, 0x3a,
-	0x15, 0x28, 0xd9, 0xc1, 0x31, 0x26, 0xa3, 0x84, 0xbd, 0xa9, 0xfd, 0x99, 0x83, 0x5b, 0x23, 0x89,
-	0xb9, 0xec, 0x3a, 0x36, 0xa1, 0xb2, 0x1f, 0x16, 0xcd, 0x20, 0x6f, 0xd1, 0x2b, 0xb8, 0x1d, 0x15,
-	0x31, 0xae, 0x4f, 0x94, 0x50, 0x4d, 0x25, 0xf4, 0x76, 0x7c, 0x83, 0x88, 0x1c, 0xa5, 0xf4, 0x28,
-	0xe2, 0x8f, 0x02, 0x7a, 0xb8, 0x85, 0x1e, 0xc0, 0x4d, 0xec, 0xba, 0x8e, 0x6d, 0x61, 0x69, 0x33,
-	0x1a, 0x79, 0x15, 0x7a, 0xa6, 0x9a, 0xad, 0xef, 0x19, 0x87, 0x89, 0xcd, 0x90, 0x23, 0xd0, 0x3d,
-	0xa8, 0x70, 0x62, 0x31, 0x3e, 0x4e, 0xe0, 0xb3, 0x0a, 0x5f, 0xf6, 0xed, 0x31, 0xf4, 0x29, 0x1c,
-	0x48, 0xcc, 0x27, 0x44, 0x9a, 0xc1, 0x8d, 0x6d, 0x22, 0xf4, 0x9c, 0x4a, 0x3a, 0x5a, 0x4f, 0xba,
-	0x51, 0xf1, 0xc1, 0x67, 0x11, 0x16, 0x3d, 0x82, 0x92, 0xc3, 0x2c, 0xec, 0x84, 0xfc, 0x85, 0xbe,
-	0x5d, 0xd5, 0x36, 0xb0, 0x8b, 0x0a, 0x19, 0x49, 0x26, 0xa2, 0x92, 0x40, 0xbb, 0xfa, 0xce, 0x2a,
-	0x35, 0x54, 0x75, 0x40, 0x8d, 0x44, 0xfe, 0x1d, 0x94, 0x39, 0x99, 0x31, 0x49, 0x62, 0xee, 0xee,
-	0x46, 0x6e, 0xc9, 0x87, 0x46, 0xe4, 0x8f, 0xa1, 0x10, 0xdc, 0x59, 0x49, 0x30, 0xaf, 0xca, 0x0f,
-	0xbe, 0x69, 0xe0, 0x49, 0xf0, 0x19, 0xec, 0x73, 0xd7, 0x32, 0xaf, 0x08, 0x17, 0x36, 0xa3, 0x42,
-	0xdf, 0x53, 0xae, 0xef, 0xc6, 0xae, 0x0d, 0xd7, 0x0a, 0x53, 0xf8, 0x63, 0x00, 0x32, 0x0a, 0xdc,
-	0xb5, 0xc2, 0x05, 0xfa, 0x0c, 0x4a, 0x33, 0x7c, 0x6d, 0xbe, 0xe1, 0x78, 0x46, 0x4c, 0x61, 0xbf,
-	0x23, 0x3a, 0x54, 0xb5, 0x7a, 0xd1, 0xd8, 0x9f, 0xe1, 0xeb, 0x53, 0xcf, 0x38, 0xb2, 0xdf, 0x91,
-	0xda, 0xaf, 0x1a, 0x1c, 0x8d, 0x08, 0xbf, 0x22, 0x3c, 0xd6, 0x04, 0xf6, 0x76, 0x25, 0xe1, 0xe9,
-	0x55, 0xd4, 0xd2, 0xab, 0xf8, 0x04, 0x2a, 0x4b, 0x45, 0xf0, 0x8a, 0x98, 0xd9, 0x58, 0xc4, 0x72,
-	0xb2, 0x0c, 0x36, 0x11, 0xb5, 0xdf, 0x43, 0x75, 0xaf, 0x04, 0xe3, 0xa9, 0x7b, 0xa3, 0x00, 0xb5,
-	0xf7, 0x08, 0x70, 0x06, 0x87, 0x71, 0x4b, 0xb8, 0xd1, 0x95, 0x82, 0x98, 0x1e, 0xc7, 0x31, 0x6d,
-	0x38, 0xb5, 0x91, 0x92, 0x0f, 0xbf, 0xcb, 0x6f, 0x5c, 0xa6, 0x64, 0xea, 0x08, 0xf2, 0x36, 0x35,
-	0x5f, 0x2f, 0xfc, 0x81, 0xa1, 0xd5, 0xf7, 0x8d, 0x5d, 0x9b, 0x76, 0xbc, 0x65, 0x8a, 0xc6, 0x72,
-	0xff, 0x41, 0x63, 0xdb, 0x1f, 0xac, 0xb1, 0x55, 0x09, 0xed, 0xfc, 0x0f, 0x12, 0xda, 0x5d, 0x97,
-	0xd0, 0xf1, 0x14, 0xf4, 0x4d, 0xb9, 0x4a, 0x8e, 0xbc, 0x6d, 0x7f, 0xe4, 0x3d, 0x4a, 0x8e, 0xbc,
-	0x42, 0xeb, 0xd3, 0x44, 0x21, 0x36, 0xc9, 0x30, 0x31, 0x17, 0x6b, 0x5f, 0xc3, 0xad, 0x01, 0xb9,
-	0x8e, 0xa7, 0xdf, 0x0f, 0x44, 0x08, 0x3c, 0x51, 0x32, 0x49, 0x96, 0x40, 0x5b, 0x2a, 0x41, 0xed,
-	0x2f, 0x0d, 0x8a, 0x11, 0x85, 0x7b, 0xe0, 0x53, 0xd8, 0xb7, 0xd4, 0x1c, 0x35, 0x85, 0x57, 0x7f,
-	0x45, 0x28, 0xb4, 0x3e, 0x59, 0x91, 0xc5, 0xfa, 0xa8, 0xed, 0x6f, 0x19, 0x05, 0x9f, 0xa8, 0x00,
-	0x9e, 0x1f, 0xa1, 0xe2, 0x0e, 0xfc, 0x64, 0x52, 0xfd, 0xac, 0xcb, 0xcb, 0xf3, 0xe3, 0x13, 0x7d,
-	0x3f, 0x0f, 0x21, 0x47, 0xc9, 0xb5, 0x54, 0xda, 0x59, 0xe2, 0x6f, 0xb8, 0x6d, 0x7f, 0xcb, 0x50,
-	0x84, 0x4e, 0x01, 0xf6, 0x38, 0x79, 0x1b, 0xfc, 0x23, 0x7e, 0xcb, 0x42, 0x25, 0x79, 0x4f, 0x31,
-	0x77, 0x24, 0xfa, 0x0a, 0x0e, 0xd3, 0xda, 0x27, 0xf8, 0x0f, 0xdd, 0x48, 0xe9, 0x1e, 0xf4, 0x05,
-	0x94, 0x57, 0xfa, 0x3e, 0xf8, 0x43, 0x95, 0x96, 0xdb, 0xde, 0xcb, 0xf9, 0x94, 0x2c, 0xcc, 0x31,
-	0x96, 0x38, 0x94, 0xfd, 0x94, 0x2c, 0x4e, 0xb0, 0xc4, 0xe8, 0x21, 0x14, 0x5d, 0x42, 0x78, 0x3c,
-	0x94, 0x73, 0x1b, 0x87, 0xf2, 0xbe, 0x07, 0x5c, 0x9f, 0xc9, 0xff, 0x7e, 0x9c, 0xdf, 0x87, 0x83,
-	0x29, 0x21, 0xae, 0x69, 0x5d, 0x62, 0x4a, 0x89, 0x63, 0x32, 0x97, 0x50, 0xa5, 0xfb, 0xbc, 0x51,
-	0xf6, 0x36, 0xba, 0xbe, 0xfd, 0xdc, 0x25, 0x14, 0x9d, 0xc1, 0x81, 0x8a, 0x6f, 0xa9, 0x47, 0x76,
-	0x3f, 0xa4, 0x47, 0xca, 0x1e, 0xcf, 0x78, 0x6f, 0x9f, 0xe4, 0x53, 0x46, 0xed, 0xb3, 0x64, 0x6d,
-	0x46, 0x12, 0xcb, 0xb9, 0x7a, 0x0a, 0x59, 0x6c, 0x4c, 0x54, 0x2d, 0x8a, 0x86, 0xfa, 0x46, 0x3a,
-	0xec, 0x8e, 0x89, 0xc4, 0xb6, 0xfa, 0xc3, 0x7a, 0x49, 0x0f, 0x97, 0xb5, 0x3f, 0x34, 0x28, 0x2d,
-	0x95, 0xd7, 0xf5, 0x9e, 0x5a, 0x6c, 0x2e, 0xfd, 0xa3, 0x43, 0xd9, 0xef, 0xb1, 0xb9, 0x54, 0xc7,
-	0x0a, 0xf4, 0x39, 0x94, 0x54, 0x43, 0x98, 0x16, 0xa3, 0x62, 0x3e, 0x23, 0x63, 0xe5, 0xb2, 0x68,
-	0x14, 0x95, 0xb5, 0x1b, 0x18, 0x51, 0x0b, 0x76, 0xb8, 0x12, 0x4b, 0xa0, 0xbf, 0xe3, 0x94, 0xa7,
-	0x42, 0x20, 0x27, 0x23, 0x40, 0x7a, 0x1c, 0xa1, 0x2e, 0x11, 0x14, 0x36, 0x95, 0xe3, 0x5f, 0xd3,
-	0x08, 0x90, 0xf7, 0xbf, 0x87, 0x83, 0xb5, 0xa7, 0x07, 0xaa, 0xc1, 0x47, 0xfd, 0xf6, 0xe0, 0x64,
-	0xd4, 0x6f, 0x3f, 0xef, 0x99, 0x43, 0xe3, 0xfc, 0xe2, 0xbc, 0x7b, 0xfe, 0xc2, 0x7c, 0x39, 0x18,
-	0x0d, 0x7b, 0xdd, 0xb3, 0xd3, 0xb3, 0xde, 0x49, 0x65, 0x0b, 0xed, 0x42, 0xf6, 0xe2, 0xc5, 0xa8,
-	0xa2, 0xa1, 0x3c, 0xe4, 0xda, 0x2f, 0x2e, 0x46, 0x95, 0xcc, 0xfd, 0x1e, 0x94, 0x57, 0xde, 0x85,
-	0xa8, 0x0a, 0x77, 0x06, 0xbd, 0x8b, 0x9f, 0xce, 0x8d, 0xe7, 0xef, 0xf3, 0xd3, 0x1d, 0x56, 0x34,
-	0xef, 0xe3, 0xe5, 0xc9, 0xb0, 0x92, 0x69, 0xbd, 0x4a, 0x84, 0xc4, 0x47, 0xfe, 0x2b, 0x11, 0x9d,
-	0x42, 0xe1, 0x84, 0x45, 0x66, 0x74, 0x2b, 0x3d, 0x1d, 0x6f, 0x8f, 0xf5, 0x0d, 0x79, 0x72, 0x6b,
-	0x5b, 0x75, 0xed, 0x4b, 0xad, 0x33, 0x85, 0x9b, 0x36, 0xf3, 0x31, 0xd8, 0x91, 0xa2, 0x61, 0x53,
-	0x49, 0x38, 0xc5, 0x4e, 0xa7, 0x1c, 0xc3, 0x55, 0xf4, 0x43, 0xed, 0xe7, 0xa7, 0x13, 0xc6, 0x26,
-	0x0e, 0x69, 0x4c, 0x98, 0x83, 0xe9, 0xa4, 0xc1, 0xf8, 0xa4, 0xa9, 0x1e, 0xdf, 0x16, 0x27, 0x4a,
-	0xde, 0xd8, 0x11, 0x4d, 0xcf, 0x49, 0x33, 0x74, 0xd2, 0x54, 0xbd, 0xa9, 0x40, 0xe6, 0xc4, 0x72,
-	0x5f, 0xef, 0xa8, 0xf5, 0x83, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc1, 0xf9, 0x9d, 0xf2, 0xd9,
-	0x0b, 0x00, 0x00,
+func file_grpc_gcp_handshaker_proto_rawDescGZIP() []byte {
+	file_grpc_gcp_handshaker_proto_rawDescOnce.Do(func() {
+		file_grpc_gcp_handshaker_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_handshaker_proto_rawDescData)
+	})
+	return file_grpc_gcp_handshaker_proto_rawDescData
+}
+
+var file_grpc_gcp_handshaker_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_grpc_gcp_handshaker_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
+var file_grpc_gcp_handshaker_proto_goTypes = []interface{}{
+	(HandshakeProtocol)(0),            // 0: grpc.gcp.HandshakeProtocol
+	(NetworkProtocol)(0),              // 1: grpc.gcp.NetworkProtocol
+	(*Endpoint)(nil),                  // 2: grpc.gcp.Endpoint
+	(*Identity)(nil),                  // 3: grpc.gcp.Identity
+	(*StartClientHandshakeReq)(nil),   // 4: grpc.gcp.StartClientHandshakeReq
+	(*ServerHandshakeParameters)(nil), // 5: grpc.gcp.ServerHandshakeParameters
+	(*StartServerHandshakeReq)(nil),   // 6: grpc.gcp.StartServerHandshakeReq
+	(*NextHandshakeMessageReq)(nil),   // 7: grpc.gcp.NextHandshakeMessageReq
+	(*HandshakerReq)(nil),             // 8: grpc.gcp.HandshakerReq
+	(*HandshakerResult)(nil),          // 9: grpc.gcp.HandshakerResult
+	(*HandshakerStatus)(nil),          // 10: grpc.gcp.HandshakerStatus
+	(*HandshakerResp)(nil),            // 11: grpc.gcp.HandshakerResp
+	nil,                               // 12: grpc.gcp.Identity.AttributesEntry
+	nil,                               // 13: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry
+	(*RpcProtocolVersions)(nil),       // 14: grpc.gcp.RpcProtocolVersions
+}
+var file_grpc_gcp_handshaker_proto_depIdxs = []int32{
+	1,  // 0: grpc.gcp.Endpoint.protocol:type_name -> grpc.gcp.NetworkProtocol
+	12, // 1: grpc.gcp.Identity.attributes:type_name -> grpc.gcp.Identity.AttributesEntry
+	0,  // 2: grpc.gcp.StartClientHandshakeReq.handshake_security_protocol:type_name -> grpc.gcp.HandshakeProtocol
+	3,  // 3: grpc.gcp.StartClientHandshakeReq.target_identities:type_name -> grpc.gcp.Identity
+	3,  // 4: grpc.gcp.StartClientHandshakeReq.local_identity:type_name -> grpc.gcp.Identity
+	2,  // 5: grpc.gcp.StartClientHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint
+	2,  // 6: grpc.gcp.StartClientHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint
+	14, // 7: grpc.gcp.StartClientHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
+	3,  // 8: grpc.gcp.ServerHandshakeParameters.local_identities:type_name -> grpc.gcp.Identity
+	13, // 9: grpc.gcp.StartServerHandshakeReq.handshake_parameters:type_name -> grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry
+	2,  // 10: grpc.gcp.StartServerHandshakeReq.local_endpoint:type_name -> grpc.gcp.Endpoint
+	2,  // 11: grpc.gcp.StartServerHandshakeReq.remote_endpoint:type_name -> grpc.gcp.Endpoint
+	14, // 12: grpc.gcp.StartServerHandshakeReq.rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
+	4,  // 13: grpc.gcp.HandshakerReq.client_start:type_name -> grpc.gcp.StartClientHandshakeReq
+	6,  // 14: grpc.gcp.HandshakerReq.server_start:type_name -> grpc.gcp.StartServerHandshakeReq
+	7,  // 15: grpc.gcp.HandshakerReq.next:type_name -> grpc.gcp.NextHandshakeMessageReq
+	3,  // 16: grpc.gcp.HandshakerResult.peer_identity:type_name -> grpc.gcp.Identity
+	3,  // 17: grpc.gcp.HandshakerResult.local_identity:type_name -> grpc.gcp.Identity
+	14, // 18: grpc.gcp.HandshakerResult.peer_rpc_versions:type_name -> grpc.gcp.RpcProtocolVersions
+	9,  // 19: grpc.gcp.HandshakerResp.result:type_name -> grpc.gcp.HandshakerResult
+	10, // 20: grpc.gcp.HandshakerResp.status:type_name -> grpc.gcp.HandshakerStatus
+	5,  // 21: grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry.value:type_name -> grpc.gcp.ServerHandshakeParameters
+	8,  // 22: grpc.gcp.HandshakerService.DoHandshake:input_type -> grpc.gcp.HandshakerReq
+	11, // 23: grpc.gcp.HandshakerService.DoHandshake:output_type -> grpc.gcp.HandshakerResp
+	23, // [23:24] is the sub-list for method output_type
+	22, // [22:23] is the sub-list for method input_type
+	22, // [22:22] is the sub-list for extension type_name
+	22, // [22:22] is the sub-list for extension extendee
+	0,  // [0:22] is the sub-list for field type_name
+}
+
+func init() { file_grpc_gcp_handshaker_proto_init() }
+func file_grpc_gcp_handshaker_proto_init() {
+	if File_grpc_gcp_handshaker_proto != nil {
+		return
+	}
+	file_grpc_gcp_transport_security_common_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_gcp_handshaker_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Endpoint); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Identity); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartClientHandshakeReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerHandshakeParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StartServerHandshakeReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*NextHandshakeMessageReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HandshakerReq); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HandshakerResult); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HandshakerStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_handshaker_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HandshakerResp); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_gcp_handshaker_proto_msgTypes[1].OneofWrappers = []interface{}{
+		(*Identity_ServiceAccount)(nil),
+		(*Identity_Hostname)(nil),
+	}
+	file_grpc_gcp_handshaker_proto_msgTypes[6].OneofWrappers = []interface{}{
+		(*HandshakerReq_ClientStart)(nil),
+		(*HandshakerReq_ServerStart)(nil),
+		(*HandshakerReq_Next)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_gcp_handshaker_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   12,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_gcp_handshaker_proto_goTypes,
+		DependencyIndexes: file_grpc_gcp_handshaker_proto_depIdxs,
+		EnumInfos:         file_grpc_gcp_handshaker_proto_enumTypes,
+		MessageInfos:      file_grpc_gcp_handshaker_proto_msgTypes,
+	}.Build()
+	File_grpc_gcp_handshaker_proto = out.File
+	file_grpc_gcp_handshaker_proto_rawDesc = nil
+	file_grpc_gcp_handshaker_proto_goTypes = nil
+	file_grpc_gcp_handshaker_proto_depIdxs = nil
 }
diff --git a/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go b/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go
index 9928051..922b531 100644
--- a/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go
+++ b/credentials/alts/internal/proto/grpc_gcp/transport_security_common.pb.go
@@ -1,24 +1,46 @@
+// Copyright 2018 The 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.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/gcp/transport_security_common.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/gcp/transport_security_common.proto
 
 package grpc_gcp
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The security level of the created channel. The list is sorted in increasing
 // level of security. This order must always be maintained.
@@ -30,155 +52,275 @@
 	SecurityLevel_INTEGRITY_AND_PRIVACY SecurityLevel = 2
 )
 
-var SecurityLevel_name = map[int32]string{
-	0: "SECURITY_NONE",
-	1: "INTEGRITY_ONLY",
-	2: "INTEGRITY_AND_PRIVACY",
-}
+// Enum value maps for SecurityLevel.
+var (
+	SecurityLevel_name = map[int32]string{
+		0: "SECURITY_NONE",
+		1: "INTEGRITY_ONLY",
+		2: "INTEGRITY_AND_PRIVACY",
+	}
+	SecurityLevel_value = map[string]int32{
+		"SECURITY_NONE":         0,
+		"INTEGRITY_ONLY":        1,
+		"INTEGRITY_AND_PRIVACY": 2,
+	}
+)
 
-var SecurityLevel_value = map[string]int32{
-	"SECURITY_NONE":         0,
-	"INTEGRITY_ONLY":        1,
-	"INTEGRITY_AND_PRIVACY": 2,
+func (x SecurityLevel) Enum() *SecurityLevel {
+	p := new(SecurityLevel)
+	*p = x
+	return p
 }
 
 func (x SecurityLevel) String() string {
-	return proto.EnumName(SecurityLevel_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (SecurityLevel) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_gcp_transport_security_common_proto_enumTypes[0].Descriptor()
+}
+
+func (SecurityLevel) Type() protoreflect.EnumType {
+	return &file_grpc_gcp_transport_security_common_proto_enumTypes[0]
+}
+
+func (x SecurityLevel) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SecurityLevel.Descriptor instead.
 func (SecurityLevel) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_b97e31e3cc23582a, []int{0}
+	return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0}
 }
 
 // Max and min supported RPC protocol versions.
 type RpcProtocolVersions struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Maximum supported RPC version.
 	MaxRpcVersion *RpcProtocolVersions_Version `protobuf:"bytes,1,opt,name=max_rpc_version,json=maxRpcVersion,proto3" json:"max_rpc_version,omitempty"`
 	// Minimum supported RPC version.
-	MinRpcVersion        *RpcProtocolVersions_Version `protobuf:"bytes,2,opt,name=min_rpc_version,json=minRpcVersion,proto3" json:"min_rpc_version,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
+	MinRpcVersion *RpcProtocolVersions_Version `protobuf:"bytes,2,opt,name=min_rpc_version,json=minRpcVersion,proto3" json:"min_rpc_version,omitempty"`
 }
 
-func (m *RpcProtocolVersions) Reset()         { *m = RpcProtocolVersions{} }
-func (m *RpcProtocolVersions) String() string { return proto.CompactTextString(m) }
-func (*RpcProtocolVersions) ProtoMessage()    {}
+func (x *RpcProtocolVersions) Reset() {
+	*x = RpcProtocolVersions{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RpcProtocolVersions) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RpcProtocolVersions) ProtoMessage() {}
+
+func (x *RpcProtocolVersions) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RpcProtocolVersions.ProtoReflect.Descriptor instead.
 func (*RpcProtocolVersions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b97e31e3cc23582a, []int{0}
+	return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *RpcProtocolVersions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RpcProtocolVersions.Unmarshal(m, b)
-}
-func (m *RpcProtocolVersions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RpcProtocolVersions.Marshal(b, m, deterministic)
-}
-func (m *RpcProtocolVersions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RpcProtocolVersions.Merge(m, src)
-}
-func (m *RpcProtocolVersions) XXX_Size() int {
-	return xxx_messageInfo_RpcProtocolVersions.Size(m)
-}
-func (m *RpcProtocolVersions) XXX_DiscardUnknown() {
-	xxx_messageInfo_RpcProtocolVersions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RpcProtocolVersions proto.InternalMessageInfo
-
-func (m *RpcProtocolVersions) GetMaxRpcVersion() *RpcProtocolVersions_Version {
-	if m != nil {
-		return m.MaxRpcVersion
+func (x *RpcProtocolVersions) GetMaxRpcVersion() *RpcProtocolVersions_Version {
+	if x != nil {
+		return x.MaxRpcVersion
 	}
 	return nil
 }
 
-func (m *RpcProtocolVersions) GetMinRpcVersion() *RpcProtocolVersions_Version {
-	if m != nil {
-		return m.MinRpcVersion
+func (x *RpcProtocolVersions) GetMinRpcVersion() *RpcProtocolVersions_Version {
+	if x != nil {
+		return x.MinRpcVersion
 	}
 	return nil
 }
 
 // RPC version contains a major version and a minor version.
 type RpcProtocolVersions_Version struct {
-	Major                uint32   `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"`
-	Minor                uint32   `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Major uint32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"`
+	Minor uint32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"`
 }
 
-func (m *RpcProtocolVersions_Version) Reset()         { *m = RpcProtocolVersions_Version{} }
-func (m *RpcProtocolVersions_Version) String() string { return proto.CompactTextString(m) }
-func (*RpcProtocolVersions_Version) ProtoMessage()    {}
+func (x *RpcProtocolVersions_Version) Reset() {
+	*x = RpcProtocolVersions_Version{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RpcProtocolVersions_Version) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RpcProtocolVersions_Version) ProtoMessage() {}
+
+func (x *RpcProtocolVersions_Version) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_gcp_transport_security_common_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RpcProtocolVersions_Version.ProtoReflect.Descriptor instead.
 func (*RpcProtocolVersions_Version) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b97e31e3cc23582a, []int{0, 0}
+	return file_grpc_gcp_transport_security_common_proto_rawDescGZIP(), []int{0, 0}
 }
 
-func (m *RpcProtocolVersions_Version) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RpcProtocolVersions_Version.Unmarshal(m, b)
-}
-func (m *RpcProtocolVersions_Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RpcProtocolVersions_Version.Marshal(b, m, deterministic)
-}
-func (m *RpcProtocolVersions_Version) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RpcProtocolVersions_Version.Merge(m, src)
-}
-func (m *RpcProtocolVersions_Version) XXX_Size() int {
-	return xxx_messageInfo_RpcProtocolVersions_Version.Size(m)
-}
-func (m *RpcProtocolVersions_Version) XXX_DiscardUnknown() {
-	xxx_messageInfo_RpcProtocolVersions_Version.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RpcProtocolVersions_Version proto.InternalMessageInfo
-
-func (m *RpcProtocolVersions_Version) GetMajor() uint32 {
-	if m != nil {
-		return m.Major
+func (x *RpcProtocolVersions_Version) GetMajor() uint32 {
+	if x != nil {
+		return x.Major
 	}
 	return 0
 }
 
-func (m *RpcProtocolVersions_Version) GetMinor() uint32 {
-	if m != nil {
-		return m.Minor
+func (x *RpcProtocolVersions_Version) GetMinor() uint32 {
+	if x != nil {
+		return x.Minor
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterEnum("grpc.gcp.SecurityLevel", SecurityLevel_name, SecurityLevel_value)
-	proto.RegisterType((*RpcProtocolVersions)(nil), "grpc.gcp.RpcProtocolVersions")
-	proto.RegisterType((*RpcProtocolVersions_Version)(nil), "grpc.gcp.RpcProtocolVersions.Version")
+var File_grpc_gcp_transport_security_common_proto protoreflect.FileDescriptor
+
+var file_grpc_gcp_transport_security_common_proto_rawDesc = []byte{
+	0x0a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x67, 0x63, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73,
+	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f,
+	0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x67, 0x63, 0x70, 0x22, 0xea, 0x01, 0x0a, 0x13, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f,
+	0x6d, 0x61, 0x78, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
+	0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61,
+	0x78, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0f, 0x6d,
+	0x69, 0x6e, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e,
+	0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e,
+	0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x35, 0x0a, 0x07, 0x56, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d,
+	0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f,
+	0x72, 0x2a, 0x51, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76,
+	0x65, 0x6c, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e,
+	0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x49,
+	0x54, 0x59, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x54,
+	0x45, 0x47, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41,
+	0x43, 0x59, 0x10, 0x02, 0x42, 0x78, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x1c, 0x54,
+	0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
+	0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
+	0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, 0x70, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("grpc/gcp/transport_security_common.proto", fileDescriptor_b97e31e3cc23582a)
+var (
+	file_grpc_gcp_transport_security_common_proto_rawDescOnce sync.Once
+	file_grpc_gcp_transport_security_common_proto_rawDescData = file_grpc_gcp_transport_security_common_proto_rawDesc
+)
+
+func file_grpc_gcp_transport_security_common_proto_rawDescGZIP() []byte {
+	file_grpc_gcp_transport_security_common_proto_rawDescOnce.Do(func() {
+		file_grpc_gcp_transport_security_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_gcp_transport_security_common_proto_rawDescData)
+	})
+	return file_grpc_gcp_transport_security_common_proto_rawDescData
 }
 
-var fileDescriptor_b97e31e3cc23582a = []byte{
-	// 323 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x41, 0x4b, 0x3b, 0x31,
-	0x10, 0xc5, 0xff, 0x5b, 0xf8, 0xab, 0x44, 0x56, 0xeb, 0x6a, 0x41, 0xc5, 0x83, 0x08, 0x42, 0xf1,
-	0x90, 0x05, 0xc5, 0xb3, 0xb4, 0xb5, 0x48, 0xa1, 0x6e, 0xeb, 0xb6, 0x16, 0xea, 0x25, 0xc4, 0x18,
-	0x42, 0x24, 0x9b, 0x09, 0xb3, 0xb1, 0xd4, 0xaf, 0xec, 0xa7, 0x90, 0x4d, 0xbb, 0x14, 0xc1, 0x8b,
-	0xb7, 0xbc, 0xc7, 0xcc, 0x6f, 0x32, 0xf3, 0x48, 0x5b, 0xa1, 0x13, 0xa9, 0x12, 0x2e, 0xf5, 0xc8,
-	0x6d, 0xe9, 0x00, 0x3d, 0x2b, 0xa5, 0xf8, 0x40, 0xed, 0x3f, 0x99, 0x80, 0xa2, 0x00, 0x4b, 0x1d,
-	0x82, 0x87, 0x64, 0xa7, 0xaa, 0xa4, 0x4a, 0xb8, 0x8b, 0xaf, 0x88, 0x1c, 0xe6, 0x4e, 0x8c, 0x2b,
-	0x5b, 0x80, 0x99, 0x49, 0x2c, 0x35, 0xd8, 0x32, 0x79, 0x24, 0xfb, 0x05, 0x5f, 0x32, 0x74, 0x82,
-	0x2d, 0x56, 0xde, 0x71, 0x74, 0x1e, 0xb5, 0x77, 0xaf, 0x2f, 0x69, 0xdd, 0x4b, 0x7f, 0xe9, 0xa3,
-	0xeb, 0x47, 0x1e, 0x17, 0x7c, 0x99, 0x3b, 0xb1, 0x96, 0x01, 0xa7, 0xed, 0x0f, 0x5c, 0xe3, 0x6f,
-	0x38, 0x6d, 0x37, 0xb8, 0xd3, 0x5b, 0xb2, 0x5d, 0x93, 0x8f, 0xc8, 0xff, 0x82, 0xbf, 0x03, 0x86,
-	0xef, 0xc5, 0xf9, 0x4a, 0x04, 0x57, 0x5b, 0xc0, 0x30, 0xa5, 0x72, 0x2b, 0x71, 0xf5, 0x44, 0xe2,
-	0xc9, 0xfa, 0x1e, 0x43, 0xb9, 0x90, 0x26, 0x39, 0x20, 0xf1, 0xa4, 0xdf, 0x7b, 0xce, 0x07, 0xd3,
-	0x39, 0xcb, 0x46, 0x59, 0xbf, 0xf9, 0x2f, 0x49, 0xc8, 0xde, 0x20, 0x9b, 0xf6, 0x1f, 0x82, 0x37,
-	0xca, 0x86, 0xf3, 0x66, 0x94, 0x9c, 0x90, 0xd6, 0xc6, 0xeb, 0x64, 0xf7, 0x6c, 0x9c, 0x0f, 0x66,
-	0x9d, 0xde, 0xbc, 0xd9, 0xe8, 0x2e, 0x49, 0x4b, 0xc3, 0x6a, 0x07, 0x6e, 0x7c, 0x49, 0xb5, 0xf5,
-	0x12, 0x2d, 0x37, 0xdd, 0xb3, 0x69, 0x9d, 0x41, 0x3d, 0xb2, 0x17, 0x12, 0x08, 0x2b, 0x8e, 0xa3,
-	0x97, 0x3b, 0x05, 0xa0, 0x8c, 0xa4, 0x0a, 0x0c, 0xb7, 0x8a, 0x02, 0xaa, 0x34, 0xc4, 0x27, 0x50,
-	0xbe, 0x49, 0xeb, 0x35, 0x37, 0x65, 0x5a, 0x11, 0xd3, 0x9a, 0x98, 0x86, 0xe8, 0x42, 0x11, 0x53,
-	0xc2, 0xbd, 0x6e, 0x05, 0x7d, 0xf3, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x31, 0x14, 0xb4, 0x11, 0xf6,
-	0x01, 0x00, 0x00,
+var file_grpc_gcp_transport_security_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_grpc_gcp_transport_security_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_grpc_gcp_transport_security_common_proto_goTypes = []interface{}{
+	(SecurityLevel)(0),                  // 0: grpc.gcp.SecurityLevel
+	(*RpcProtocolVersions)(nil),         // 1: grpc.gcp.RpcProtocolVersions
+	(*RpcProtocolVersions_Version)(nil), // 2: grpc.gcp.RpcProtocolVersions.Version
+}
+var file_grpc_gcp_transport_security_common_proto_depIdxs = []int32{
+	2, // 0: grpc.gcp.RpcProtocolVersions.max_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version
+	2, // 1: grpc.gcp.RpcProtocolVersions.min_rpc_version:type_name -> grpc.gcp.RpcProtocolVersions.Version
+	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
+}
+
+func init() { file_grpc_gcp_transport_security_common_proto_init() }
+func file_grpc_gcp_transport_security_common_proto_init() {
+	if File_grpc_gcp_transport_security_common_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_gcp_transport_security_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RpcProtocolVersions); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_gcp_transport_security_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RpcProtocolVersions_Version); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_gcp_transport_security_common_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_gcp_transport_security_common_proto_goTypes,
+		DependencyIndexes: file_grpc_gcp_transport_security_common_proto_depIdxs,
+		EnumInfos:         file_grpc_gcp_transport_security_common_proto_enumTypes,
+		MessageInfos:      file_grpc_gcp_transport_security_common_proto_msgTypes,
+	}.Build()
+	File_grpc_gcp_transport_security_common_proto = out.File
+	file_grpc_gcp_transport_security_common_proto_rawDesc = nil
+	file_grpc_gcp_transport_security_common_proto_goTypes = nil
+	file_grpc_gcp_transport_security_common_proto_depIdxs = nil
 }
diff --git a/credentials/tls/certprovider/meshca/internal/meshca_experimental/config.pb.go b/credentials/tls/certprovider/meshca/internal/meshca_experimental/config.pb.go
index 936dfb6..afabe3b 100644
--- a/credentials/tls/certprovider/meshca/internal/meshca_experimental/config.pb.go
+++ b/credentials/tls/certprovider/meshca/internal/meshca_experimental/config.pb.go
@@ -1,4 +1,21 @@
+// Copyright 2020 The 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/tls/provider/meshca/experimental/config.proto
 
 // NOTE: This proto will very likely move to a different namespace and a
@@ -7,23 +24,25 @@
 package meshca_experimental
 
 import (
-	fmt "fmt"
 	v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Type of key to be embedded in CSRs sent to the MeshCA.
 type GoogleMeshCaConfig_KeyType int32
@@ -33,27 +52,52 @@
 	GoogleMeshCaConfig_KEY_TYPE_RSA     GoogleMeshCaConfig_KeyType = 1
 )
 
-var GoogleMeshCaConfig_KeyType_name = map[int32]string{
-	0: "KEY_TYPE_UNKNOWN",
-	1: "KEY_TYPE_RSA",
-}
+// Enum value maps for GoogleMeshCaConfig_KeyType.
+var (
+	GoogleMeshCaConfig_KeyType_name = map[int32]string{
+		0: "KEY_TYPE_UNKNOWN",
+		1: "KEY_TYPE_RSA",
+	}
+	GoogleMeshCaConfig_KeyType_value = map[string]int32{
+		"KEY_TYPE_UNKNOWN": 0,
+		"KEY_TYPE_RSA":     1,
+	}
+)
 
-var GoogleMeshCaConfig_KeyType_value = map[string]int32{
-	"KEY_TYPE_UNKNOWN": 0,
-	"KEY_TYPE_RSA":     1,
+func (x GoogleMeshCaConfig_KeyType) Enum() *GoogleMeshCaConfig_KeyType {
+	p := new(GoogleMeshCaConfig_KeyType)
+	*p = x
+	return p
 }
 
 func (x GoogleMeshCaConfig_KeyType) String() string {
-	return proto.EnumName(GoogleMeshCaConfig_KeyType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GoogleMeshCaConfig_KeyType) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_tls_provider_meshca_experimental_config_proto_enumTypes[0].Descriptor()
+}
+
+func (GoogleMeshCaConfig_KeyType) Type() protoreflect.EnumType {
+	return &file_grpc_tls_provider_meshca_experimental_config_proto_enumTypes[0]
+}
+
+func (x GoogleMeshCaConfig_KeyType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GoogleMeshCaConfig_KeyType.Descriptor instead.
 func (GoogleMeshCaConfig_KeyType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_2f29f6dba7c86653, []int{0, 0}
+	return file_grpc_tls_provider_meshca_experimental_config_proto_rawDescGZIP(), []int{0, 0}
 }
 
 // GoogleMeshCaConfig contains all configuration parameters required by the
 // MeshCA CertificateProvider plugin implementation.
 type GoogleMeshCaConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// GoogleMeshCA server endpoint to get CSRs signed via the *CreateCertificate*
 	// unary call. This must have :ref:`api_type
 	// <envoy_api_field_config.core.v3.ApiConfigSource.api_type>` :ref:`GRPC
@@ -83,116 +127,205 @@
 	// GCE location (region/zone) where the workload is located.
 	//
 	// GCE/GKE Metadata Server will be contacted if left unspecified.
-	Location             string   `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"`
 }
 
-func (m *GoogleMeshCaConfig) Reset()         { *m = GoogleMeshCaConfig{} }
-func (m *GoogleMeshCaConfig) String() string { return proto.CompactTextString(m) }
-func (*GoogleMeshCaConfig) ProtoMessage()    {}
+func (x *GoogleMeshCaConfig) Reset() {
+	*x = GoogleMeshCaConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_tls_provider_meshca_experimental_config_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GoogleMeshCaConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GoogleMeshCaConfig) ProtoMessage() {}
+
+func (x *GoogleMeshCaConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_tls_provider_meshca_experimental_config_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GoogleMeshCaConfig.ProtoReflect.Descriptor instead.
 func (*GoogleMeshCaConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_2f29f6dba7c86653, []int{0}
+	return file_grpc_tls_provider_meshca_experimental_config_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *GoogleMeshCaConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GoogleMeshCaConfig.Unmarshal(m, b)
-}
-func (m *GoogleMeshCaConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GoogleMeshCaConfig.Marshal(b, m, deterministic)
-}
-func (m *GoogleMeshCaConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GoogleMeshCaConfig.Merge(m, src)
-}
-func (m *GoogleMeshCaConfig) XXX_Size() int {
-	return xxx_messageInfo_GoogleMeshCaConfig.Size(m)
-}
-func (m *GoogleMeshCaConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_GoogleMeshCaConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GoogleMeshCaConfig proto.InternalMessageInfo
-
-func (m *GoogleMeshCaConfig) GetServer() *v3.ApiConfigSource {
-	if m != nil {
-		return m.Server
+func (x *GoogleMeshCaConfig) GetServer() *v3.ApiConfigSource {
+	if x != nil {
+		return x.Server
 	}
 	return nil
 }
 
-func (m *GoogleMeshCaConfig) GetCertificateLifetime() *duration.Duration {
-	if m != nil {
-		return m.CertificateLifetime
+func (x *GoogleMeshCaConfig) GetCertificateLifetime() *duration.Duration {
+	if x != nil {
+		return x.CertificateLifetime
 	}
 	return nil
 }
 
-func (m *GoogleMeshCaConfig) GetRenewalGracePeriod() *duration.Duration {
-	if m != nil {
-		return m.RenewalGracePeriod
+func (x *GoogleMeshCaConfig) GetRenewalGracePeriod() *duration.Duration {
+	if x != nil {
+		return x.RenewalGracePeriod
 	}
 	return nil
 }
 
-func (m *GoogleMeshCaConfig) GetKeyType() GoogleMeshCaConfig_KeyType {
-	if m != nil {
-		return m.KeyType
+func (x *GoogleMeshCaConfig) GetKeyType() GoogleMeshCaConfig_KeyType {
+	if x != nil {
+		return x.KeyType
 	}
 	return GoogleMeshCaConfig_KEY_TYPE_UNKNOWN
 }
 
-func (m *GoogleMeshCaConfig) GetKeySize() uint32 {
-	if m != nil {
-		return m.KeySize
+func (x *GoogleMeshCaConfig) GetKeySize() uint32 {
+	if x != nil {
+		return x.KeySize
 	}
 	return 0
 }
 
-func (m *GoogleMeshCaConfig) GetLocation() string {
-	if m != nil {
-		return m.Location
+func (x *GoogleMeshCaConfig) GetLocation() string {
+	if x != nil {
+		return x.Location
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterEnum("grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig_KeyType", GoogleMeshCaConfig_KeyType_name, GoogleMeshCaConfig_KeyType_value)
-	proto.RegisterType((*GoogleMeshCaConfig)(nil), "grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig")
+var File_grpc_tls_provider_meshca_experimental_config_proto protoreflect.FileDescriptor
+
+var file_grpc_tls_provider_meshca_experimental_config_proto_rawDesc = []byte{
+	0x0a, 0x32, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x6c, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69,
+	0x64, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72,
+	0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x6c, 0x73, 0x2e, 0x70,
+	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x65,
+	0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x1a, 0x28, 0x65, 0x6e, 0x76,
+	0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76,
+	0x33, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x03, 0x0a, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x4d, 0x65, 0x73, 0x68, 0x43, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x06,
+	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65,
+	0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65,
+	0x2e, 0x76, 0x33, 0x2e, 0x41, 0x70, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75,
+	0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x14, 0x63,
+	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74,
+	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+	0x65, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x72, 0x65, 0x6e,
+	0x65, 0x77, 0x61, 0x6c, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f,
+	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x47, 0x72, 0x61, 0x63, 0x65,
+	0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x5c, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79,
+	0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x6d, 0x65, 0x73,
+	0x68, 0x63, 0x61, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
+	0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x61, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x53, 0x69, 0x7a, 0x65, 0x12,
+	0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x07, 0x4b,
+	0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59,
+	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c,
+	0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x53, 0x41, 0x10, 0x01, 0x42, 0x98,
+	0x01, 0x0a, 0x28, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x6c, 0x73, 0x2e, 0x70,
+	0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x65,
+	0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x42, 0x11, 0x4d, 0x65, 0x73,
+	0x68, 0x43, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
+	0x5a, 0x57, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x61, 0x6c, 0x73, 0x2f, 0x74, 0x6c, 0x73, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x70, 0x72, 0x6f,
+	0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2f, 0x69, 0x6e, 0x74,
+	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x5f, 0x65, 0x78, 0x70,
+	0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x33,
 }
 
-func init() {
-	proto.RegisterFile("grpc/tls/provider/meshca/experimental/config.proto", fileDescriptor_2f29f6dba7c86653)
+var (
+	file_grpc_tls_provider_meshca_experimental_config_proto_rawDescOnce sync.Once
+	file_grpc_tls_provider_meshca_experimental_config_proto_rawDescData = file_grpc_tls_provider_meshca_experimental_config_proto_rawDesc
+)
+
+func file_grpc_tls_provider_meshca_experimental_config_proto_rawDescGZIP() []byte {
+	file_grpc_tls_provider_meshca_experimental_config_proto_rawDescOnce.Do(func() {
+		file_grpc_tls_provider_meshca_experimental_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_tls_provider_meshca_experimental_config_proto_rawDescData)
+	})
+	return file_grpc_tls_provider_meshca_experimental_config_proto_rawDescData
 }
 
-var fileDescriptor_2f29f6dba7c86653 = []byte{
-	// 439 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x6f, 0xd3, 0x30,
-	0x18, 0xc6, 0x09, 0x83, 0x6e, 0x98, 0x3f, 0x2a, 0xa6, 0x87, 0xac, 0x07, 0x54, 0x4d, 0x9a, 0x94,
-	0x93, 0x2d, 0xda, 0x33, 0x87, 0x6e, 0x4c, 0x3b, 0x74, 0x94, 0x2a, 0x1d, 0x9a, 0x86, 0x90, 0x22,
-	0xcf, 0x7d, 0x9b, 0x59, 0x73, 0xed, 0xe8, 0x8d, 0x1b, 0xc8, 0x3e, 0x09, 0x9f, 0x84, 0xcf, 0x87,
-	0xe2, 0x78, 0x53, 0x04, 0x07, 0x7a, 0xcb, 0x1b, 0xfb, 0xf7, 0x3c, 0x8f, 0x1e, 0xbf, 0x64, 0x9c,
-	0x63, 0x21, 0xb9, 0xd3, 0x25, 0x2f, 0xd0, 0x56, 0x6a, 0x05, 0xc8, 0x37, 0x50, 0xde, 0x4a, 0xc1,
-	0xe1, 0x67, 0x01, 0xa8, 0x36, 0x60, 0x9c, 0xd0, 0x5c, 0x5a, 0xb3, 0x56, 0x39, 0x2b, 0xd0, 0x3a,
-	0x4b, 0x8f, 0x1b, 0x86, 0x39, 0x5d, 0xb2, 0x07, 0x86, 0xb5, 0x0c, 0xeb, 0x32, 0xc3, 0x04, 0x4c,
-	0x65, 0xeb, 0x80, 0x72, 0x69, 0x11, 0x78, 0x35, 0x09, 0x63, 0x56, 0xda, 0x2d, 0x4a, 0x68, 0x05,
-	0x87, 0xef, 0x73, 0x6b, 0x73, 0x0d, 0xdc, 0x4f, 0x37, 0xdb, 0x35, 0x5f, 0x6d, 0x51, 0x38, 0x65,
-	0x4d, 0x7b, 0x7e, 0xf4, 0x7b, 0x8f, 0xd0, 0x73, 0x7f, 0xe5, 0x33, 0x94, 0xb7, 0xa7, 0xe2, 0xd4,
-	0x6b, 0xd0, 0x8f, 0xa4, 0x57, 0x02, 0x56, 0x80, 0x71, 0x34, 0x8a, 0x92, 0x97, 0xe3, 0x63, 0xe6,
-	0x1d, 0x59, 0x08, 0xdb, 0x38, 0xb2, 0x6a, 0xc2, 0xa6, 0x85, 0x6a, 0x81, 0xa5, 0xf7, 0x4c, 0x03,
-	0x44, 0x2f, 0xc8, 0x40, 0x02, 0x3a, 0xb5, 0x56, 0x52, 0x38, 0xc8, 0xb4, 0x5a, 0x83, 0x53, 0x1b,
-	0x88, 0x9f, 0x7a, 0xb1, 0x43, 0xd6, 0x86, 0x62, 0x0f, 0xa1, 0xd8, 0xa7, 0x10, 0x2a, 0x7d, 0xd7,
-	0xc1, 0x2e, 0x02, 0x45, 0x67, 0x64, 0x80, 0x60, 0xe0, 0x87, 0xd0, 0x59, 0x8e, 0x42, 0x42, 0xd6,
-	0x34, 0x61, 0x57, 0xf1, 0xde, 0xff, 0xd4, 0x68, 0xc0, 0xce, 0x1b, 0x6a, 0xe1, 0x21, 0xfa, 0x9d,
-	0x1c, 0xdc, 0x41, 0x9d, 0xb9, 0xba, 0x80, 0xf8, 0xd9, 0x28, 0x4a, 0xde, 0x8c, 0xa7, 0x6c, 0xa7,
-	0xd2, 0xd9, 0xbf, 0x35, 0xb1, 0x19, 0xd4, 0x97, 0x75, 0x01, 0xe9, 0xfe, 0x5d, 0xfb, 0x41, 0x0f,
-	0x5b, 0xf5, 0x52, 0xdd, 0x43, 0xfc, 0x7c, 0x14, 0x25, 0xaf, 0xfd, 0xd1, 0x52, 0xdd, 0x03, 0x1d,
-	0x92, 0x03, 0x6d, 0xa5, 0x0f, 0x16, 0xf7, 0x46, 0x51, 0xf2, 0x22, 0x7d, 0x9c, 0x8f, 0x3e, 0x90,
-	0xfd, 0x20, 0x45, 0x07, 0xa4, 0x3f, 0x3b, 0xbb, 0xce, 0x2e, 0xaf, 0x17, 0x67, 0xd9, 0xd7, 0xf9,
-	0x6c, 0xfe, 0xe5, 0x6a, 0xde, 0x7f, 0x42, 0xfb, 0xe4, 0xd5, 0xe3, 0xdf, 0x74, 0x39, 0xed, 0x47,
-	0x27, 0xbf, 0x22, 0x92, 0x28, 0xbb, 0x5b, 0xf4, 0x93, 0xb7, 0xdd, 0xd4, 0x8b, 0xa6, 0xa7, 0x45,
-	0xf4, 0xed, 0x2a, 0xf4, 0x96, 0x5b, 0x2d, 0x4c, 0xce, 0x2c, 0xe6, 0xdc, 0x6f, 0xac, 0x44, 0x58,
-	0x81, 0x71, 0x4a, 0xe8, 0xd2, 0x6f, 0x6f, 0xf3, 0x24, 0x7f, 0x6f, 0xb0, 0x32, 0x0e, 0xd0, 0x08,
-	0x1d, 0xe6, 0xac, 0xeb, 0x76, 0xd3, 0xf3, 0x2f, 0x31, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, 0x72,
-	0x44, 0x68, 0xc5, 0x01, 0x03, 0x00, 0x00,
+var file_grpc_tls_provider_meshca_experimental_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_grpc_tls_provider_meshca_experimental_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_grpc_tls_provider_meshca_experimental_config_proto_goTypes = []interface{}{
+	(GoogleMeshCaConfig_KeyType)(0), // 0: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.KeyType
+	(*GoogleMeshCaConfig)(nil),      // 1: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig
+	(*v3.ApiConfigSource)(nil),      // 2: envoy.config.core.v3.ApiConfigSource
+	(*duration.Duration)(nil),       // 3: google.protobuf.Duration
+}
+var file_grpc_tls_provider_meshca_experimental_config_proto_depIdxs = []int32{
+	2, // 0: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.server:type_name -> envoy.config.core.v3.ApiConfigSource
+	3, // 1: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.certificate_lifetime:type_name -> google.protobuf.Duration
+	3, // 2: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.renewal_grace_period:type_name -> google.protobuf.Duration
+	0, // 3: grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.key_type:type_name -> grpc.tls.provider.meshca.experimental.GoogleMeshCaConfig.KeyType
+	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
+}
+
+func init() { file_grpc_tls_provider_meshca_experimental_config_proto_init() }
+func file_grpc_tls_provider_meshca_experimental_config_proto_init() {
+	if File_grpc_tls_provider_meshca_experimental_config_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_tls_provider_meshca_experimental_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GoogleMeshCaConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_tls_provider_meshca_experimental_config_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_tls_provider_meshca_experimental_config_proto_goTypes,
+		DependencyIndexes: file_grpc_tls_provider_meshca_experimental_config_proto_depIdxs,
+		EnumInfos:         file_grpc_tls_provider_meshca_experimental_config_proto_enumTypes,
+		MessageInfos:      file_grpc_tls_provider_meshca_experimental_config_proto_msgTypes,
+	}.Build()
+	File_grpc_tls_provider_meshca_experimental_config_proto = out.File
+	file_grpc_tls_provider_meshca_experimental_config_proto_rawDesc = nil
+	file_grpc_tls_provider_meshca_experimental_config_proto_goTypes = nil
+	file_grpc_tls_provider_meshca_experimental_config_proto_depIdxs = nil
 }
diff --git a/credentials/tls/certprovider/meshca/internal/v1/meshca.pb.go b/credentials/tls/certprovider/meshca/internal/v1/meshca.pb.go
index 16122f7..bc0fcd4 100644
--- a/credentials/tls/certprovider/meshca/internal/v1/meshca.pb.go
+++ b/credentials/tls/certprovider/meshca/internal/v1/meshca.pb.go
@@ -1,155 +1,276 @@
+// Copyright 2019 Istio Authors. All Rights Reserved.
+//
+// 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.25.0
+// 	protoc        v3.3.0
 // source: istio/google/security/meshca/v1/meshca.proto
 
 package google_security_meshca_v1
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Certificate request message.
 type MeshCertificateRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The request ID must be a valid UUID with the exception that zero UUID is
 	// not supported (00000000-0000-0000-0000-000000000000).
 	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
 	// PEM-encoded certificate request.
 	Csr string `protobuf:"bytes,2,opt,name=csr,proto3" json:"csr,omitempty"`
 	// Optional: requested certificate validity period.
-	Validity             *duration.Duration `protobuf:"bytes,3,opt,name=validity,proto3" json:"validity,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Validity *duration.Duration `protobuf:"bytes,3,opt,name=validity,proto3" json:"validity,omitempty"` // Reserved 4
 }
 
-func (m *MeshCertificateRequest) Reset()         { *m = MeshCertificateRequest{} }
-func (m *MeshCertificateRequest) String() string { return proto.CompactTextString(m) }
-func (*MeshCertificateRequest) ProtoMessage()    {}
+func (x *MeshCertificateRequest) Reset() {
+	*x = MeshCertificateRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_istio_google_security_meshca_v1_meshca_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MeshCertificateRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeshCertificateRequest) ProtoMessage() {}
+
+func (x *MeshCertificateRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_istio_google_security_meshca_v1_meshca_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeshCertificateRequest.ProtoReflect.Descriptor instead.
 func (*MeshCertificateRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_f72841047b94fe5e, []int{0}
+	return file_istio_google_security_meshca_v1_meshca_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *MeshCertificateRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeshCertificateRequest.Unmarshal(m, b)
-}
-func (m *MeshCertificateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeshCertificateRequest.Marshal(b, m, deterministic)
-}
-func (m *MeshCertificateRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeshCertificateRequest.Merge(m, src)
-}
-func (m *MeshCertificateRequest) XXX_Size() int {
-	return xxx_messageInfo_MeshCertificateRequest.Size(m)
-}
-func (m *MeshCertificateRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeshCertificateRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeshCertificateRequest proto.InternalMessageInfo
-
-func (m *MeshCertificateRequest) GetRequestId() string {
-	if m != nil {
-		return m.RequestId
+func (x *MeshCertificateRequest) GetRequestId() string {
+	if x != nil {
+		return x.RequestId
 	}
 	return ""
 }
 
-func (m *MeshCertificateRequest) GetCsr() string {
-	if m != nil {
-		return m.Csr
+func (x *MeshCertificateRequest) GetCsr() string {
+	if x != nil {
+		return x.Csr
 	}
 	return ""
 }
 
-func (m *MeshCertificateRequest) GetValidity() *duration.Duration {
-	if m != nil {
-		return m.Validity
+func (x *MeshCertificateRequest) GetValidity() *duration.Duration {
+	if x != nil {
+		return x.Validity
 	}
 	return nil
 }
 
 // Certificate response message.
 type MeshCertificateResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// PEM-encoded certificate chain.
 	// Leaf cert is element '0'. Root cert is element 'n'.
-	CertChain            []string `protobuf:"bytes,1,rep,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	CertChain []string `protobuf:"bytes,1,rep,name=cert_chain,json=certChain,proto3" json:"cert_chain,omitempty"`
 }
 
-func (m *MeshCertificateResponse) Reset()         { *m = MeshCertificateResponse{} }
-func (m *MeshCertificateResponse) String() string { return proto.CompactTextString(m) }
-func (*MeshCertificateResponse) ProtoMessage()    {}
+func (x *MeshCertificateResponse) Reset() {
+	*x = MeshCertificateResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_istio_google_security_meshca_v1_meshca_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MeshCertificateResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MeshCertificateResponse) ProtoMessage() {}
+
+func (x *MeshCertificateResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_istio_google_security_meshca_v1_meshca_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MeshCertificateResponse.ProtoReflect.Descriptor instead.
 func (*MeshCertificateResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_f72841047b94fe5e, []int{1}
+	return file_istio_google_security_meshca_v1_meshca_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *MeshCertificateResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MeshCertificateResponse.Unmarshal(m, b)
-}
-func (m *MeshCertificateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MeshCertificateResponse.Marshal(b, m, deterministic)
-}
-func (m *MeshCertificateResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeshCertificateResponse.Merge(m, src)
-}
-func (m *MeshCertificateResponse) XXX_Size() int {
-	return xxx_messageInfo_MeshCertificateResponse.Size(m)
-}
-func (m *MeshCertificateResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_MeshCertificateResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MeshCertificateResponse proto.InternalMessageInfo
-
-func (m *MeshCertificateResponse) GetCertChain() []string {
-	if m != nil {
-		return m.CertChain
+func (x *MeshCertificateResponse) GetCertChain() []string {
+	if x != nil {
+		return x.CertChain
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*MeshCertificateRequest)(nil), "google.security.meshca.v1.MeshCertificateRequest")
-	proto.RegisterType((*MeshCertificateResponse)(nil), "google.security.meshca.v1.MeshCertificateResponse")
+var File_istio_google_security_meshca_v1_meshca_proto protoreflect.FileDescriptor
+
+var file_istio_google_security_meshca_v1_meshca_proto_rawDesc = []byte{
+	0x0a, 0x2c, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73,
+	0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2f, 0x76,
+	0x31, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e,
+	0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x16, 0x4d, 0x65,
+	0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x73, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x63, 0x73, 0x72, 0x12, 0x35, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74,
+	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0x38, 0x0a, 0x17,
+	0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f,
+	0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x65, 0x72,
+	0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x32, 0x96, 0x01, 0x0a, 0x16, 0x4d, 0x65, 0x73, 0x68, 0x43,
+	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x7c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x65, 0x72, 0x74, 0x69,
+	0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e,
+	0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68,
+	0x63, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
+	0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42,
+	0x2e, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x65,
+	0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x63, 0x61, 0x2e, 0x76, 0x31,
+	0x42, 0x0b, 0x4d, 0x65, 0x73, 0x68, 0x43, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("istio/google/security/meshca/v1/meshca.proto", fileDescriptor_f72841047b94fe5e)
+var (
+	file_istio_google_security_meshca_v1_meshca_proto_rawDescOnce sync.Once
+	file_istio_google_security_meshca_v1_meshca_proto_rawDescData = file_istio_google_security_meshca_v1_meshca_proto_rawDesc
+)
+
+func file_istio_google_security_meshca_v1_meshca_proto_rawDescGZIP() []byte {
+	file_istio_google_security_meshca_v1_meshca_proto_rawDescOnce.Do(func() {
+		file_istio_google_security_meshca_v1_meshca_proto_rawDescData = protoimpl.X.CompressGZIP(file_istio_google_security_meshca_v1_meshca_proto_rawDescData)
+	})
+	return file_istio_google_security_meshca_v1_meshca_proto_rawDescData
 }
 
-var fileDescriptor_f72841047b94fe5e = []byte{
-	// 284 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x41, 0x4b, 0xc3, 0x30,
-	0x1c, 0xc5, 0x8d, 0x05, 0x71, 0xd9, 0x45, 0x73, 0xd0, 0x6e, 0x30, 0x29, 0x3d, 0xed, 0x20, 0x29,
-	0xad, 0x08, 0x9e, 0x57, 0x2f, 0x1e, 0x84, 0x51, 0x3f, 0xc0, 0xc8, 0xd2, 0xff, 0xd6, 0x3f, 0x6c,
-	0xcd, 0x4c, 0xd2, 0xc2, 0xc0, 0x83, 0x9f, 0xc2, 0xcf, 0x2b, 0x69, 0x33, 0x11, 0xe6, 0x0e, 0xde,
-	0x1e, 0x2f, 0xef, 0xe5, 0xff, 0xe3, 0xd1, 0x7b, 0x34, 0x16, 0x55, 0xb2, 0x56, 0x6a, 0xbd, 0x81,
-	0xc4, 0x80, 0x6c, 0x34, 0xda, 0x7d, 0xb2, 0x05, 0x53, 0x49, 0x91, 0xb4, 0xa9, 0x57, 0x7c, 0xa7,
-	0x95, 0x55, 0x6c, 0xd4, 0xe7, 0xf8, 0x21, 0xc7, 0xfd, 0x6b, 0x9b, 0x8e, 0xef, 0xfc, 0x17, 0x5d,
-	0x70, 0xd9, 0xac, 0x92, 0xb2, 0xd1, 0xc2, 0xa2, 0xaa, 0xfb, 0x6a, 0xfc, 0x49, 0xe8, 0xcd, 0x2b,
-	0x98, 0x2a, 0x07, 0x6d, 0x71, 0x85, 0x52, 0x58, 0x28, 0xe0, 0xbd, 0x01, 0x63, 0xd9, 0x84, 0x52,
-	0xdd, 0xcb, 0x05, 0x96, 0x21, 0x89, 0xc8, 0x74, 0x50, 0x0c, 0xbc, 0xf3, 0x52, 0xb2, 0x2b, 0x1a,
-	0x48, 0xa3, 0xc3, 0xf3, 0xce, 0x77, 0x92, 0x3d, 0xd2, 0xcb, 0x56, 0x6c, 0xb0, 0x44, 0xbb, 0x0f,
-	0x83, 0x88, 0x4c, 0x87, 0xd9, 0x88, 0x7b, 0xb2, 0xc3, 0x79, 0xfe, 0xec, 0xcf, 0x17, 0x3f, 0xd1,
-	0xf8, 0x89, 0xde, 0x1e, 0x11, 0x98, 0x9d, 0xaa, 0x0d, 0x38, 0x04, 0x09, 0xda, 0x2e, 0x64, 0x25,
-	0xb0, 0x0e, 0x49, 0x14, 0x38, 0x04, 0xe7, 0xe4, 0xce, 0xc8, 0xbe, 0x8e, 0xe1, 0xdf, 0x40, 0xb7,
-	0x28, 0x81, 0x7d, 0xd0, 0xeb, 0x5c, 0x83, 0xb0, 0xf0, 0xeb, 0x8d, 0xa5, 0xfc, 0xe4, 0x50, 0xfc,
-	0xef, 0x11, 0xc6, 0xd9, 0x7f, 0x2a, 0x3d, 0x75, 0x7c, 0x36, 0xe3, 0x74, 0x22, 0xd5, 0xf6, 0x74,
-	0x75, 0x36, 0xec, 0xba, 0x62, 0xee, 0x66, 0x99, 0x93, 0xe5, 0x45, 0xb7, 0xcf, 0xc3, 0x77, 0x00,
-	0x00, 0x00, 0xff, 0xff, 0xb7, 0x0d, 0xfd, 0xff, 0xf7, 0x01, 0x00, 0x00,
+var file_istio_google_security_meshca_v1_meshca_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_istio_google_security_meshca_v1_meshca_proto_goTypes = []interface{}{
+	(*MeshCertificateRequest)(nil),  // 0: google.security.meshca.v1.MeshCertificateRequest
+	(*MeshCertificateResponse)(nil), // 1: google.security.meshca.v1.MeshCertificateResponse
+	(*duration.Duration)(nil),       // 2: google.protobuf.Duration
+}
+var file_istio_google_security_meshca_v1_meshca_proto_depIdxs = []int32{
+	2, // 0: google.security.meshca.v1.MeshCertificateRequest.validity:type_name -> google.protobuf.Duration
+	0, // 1: google.security.meshca.v1.MeshCertificateService.CreateCertificate:input_type -> google.security.meshca.v1.MeshCertificateRequest
+	1, // 2: google.security.meshca.v1.MeshCertificateService.CreateCertificate:output_type -> google.security.meshca.v1.MeshCertificateResponse
+	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
+}
+
+func init() { file_istio_google_security_meshca_v1_meshca_proto_init() }
+func file_istio_google_security_meshca_v1_meshca_proto_init() {
+	if File_istio_google_security_meshca_v1_meshca_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_istio_google_security_meshca_v1_meshca_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MeshCertificateRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_istio_google_security_meshca_v1_meshca_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MeshCertificateResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_istio_google_security_meshca_v1_meshca_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_istio_google_security_meshca_v1_meshca_proto_goTypes,
+		DependencyIndexes: file_istio_google_security_meshca_v1_meshca_proto_depIdxs,
+		MessageInfos:      file_istio_google_security_meshca_v1_meshca_proto_msgTypes,
+	}.Build()
+	File_istio_google_security_meshca_v1_meshca_proto = out.File
+	file_istio_google_security_meshca_v1_meshca_proto_rawDesc = nil
+	file_istio_google_security_meshca_v1_meshca_proto_goTypes = nil
+	file_istio_google_security_meshca_v1_meshca_proto_depIdxs = nil
 }
diff --git a/encoding/proto/proto_test.go b/encoding/proto/proto_test.go
index e56015b..8421ea7 100644
--- a/encoding/proto/proto_test.go
+++ b/encoding/proto/proto_test.go
@@ -106,11 +106,11 @@
 	var err error
 
 	if m1, err = codec1.Marshal(&proto1); err != nil {
-		t.Errorf("codec.Marshal(%v) failed", proto1)
+		t.Errorf("codec.Marshal(%s) failed", &proto1)
 	}
 
 	if m2, err = codec2.Marshal(&proto2); err != nil {
-		t.Errorf("codec.Marshal(%v) failed", proto2)
+		t.Errorf("codec.Marshal(%s) failed", &proto2)
 	}
 
 	if err = codec1.Unmarshal(m1, &proto1); err != nil {
diff --git a/examples/examples_test.sh b/examples/examples_test.sh
index 85e2958..9015272 100755
--- a/examples/examples_test.sh
+++ b/examples/examples_test.sh
@@ -70,14 +70,14 @@
     ["features/errors"]=""
     ["features/interceptor"]="unary echoing message \"hello world\""
     ["features/load_balancing"]="serving on :50051"
-    ["features/metadata"]="message:\"this is examples/metadata\" , sending echo"
+    ["features/metadata"]="message:\"this is examples/metadata\", sending echo"
     ["features/multiplex"]=":50051"
     ["features/name_resolving"]="serving on localhost:50051"
 )
 
 declare -A EXPECTED_CLIENT_OUTPUT=(
     ["helloworld"]="Greeting: Hello world"
-    ["route_guide"]="location:<latitude:416851321 longitude:-742674555 >"
+    ["route_guide"]="Feature: name: \"\", point:(416851321, -742674555)"
     ["features/authentication"]="UnaryEcho:  hello world"
     ["features/compression"]="UnaryEcho call returned \"compress\", <nil>"
     ["features/deadline"]="wanted = DeadlineExceeded, got = DeadlineExceeded"
diff --git a/examples/features/proto/echo/echo.pb.go b/examples/features/proto/echo/echo.pb.go
index 4048b43..b096703 100644
--- a/examples/features/proto/echo/echo.pb.go
+++ b/examples/features/proto/echo/echo.pb.go
@@ -1,129 +1,265 @@
+//
+//
+// Copyright 2018 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.
+//
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: examples/features/proto/echo/echo.proto
 
 package echo
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // EchoRequest is the request for echo.
 type EchoRequest struct {
-	Message              string   `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *EchoRequest) Reset()         { *m = EchoRequest{} }
-func (m *EchoRequest) String() string { return proto.CompactTextString(m) }
-func (*EchoRequest) ProtoMessage()    {}
+func (x *EchoRequest) Reset() {
+	*x = EchoRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_features_proto_echo_echo_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EchoRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EchoRequest) ProtoMessage() {}
+
+func (x *EchoRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_features_proto_echo_echo_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EchoRequest.ProtoReflect.Descriptor instead.
 func (*EchoRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_2fd1d686b7b805dc, []int{0}
+	return file_examples_features_proto_echo_echo_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *EchoRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EchoRequest.Unmarshal(m, b)
-}
-func (m *EchoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EchoRequest.Marshal(b, m, deterministic)
-}
-func (m *EchoRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EchoRequest.Merge(m, src)
-}
-func (m *EchoRequest) XXX_Size() int {
-	return xxx_messageInfo_EchoRequest.Size(m)
-}
-func (m *EchoRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_EchoRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EchoRequest proto.InternalMessageInfo
-
-func (m *EchoRequest) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EchoRequest) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 // EchoResponse is the response for echo.
 type EchoResponse struct {
-	Message              string   `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *EchoResponse) Reset()         { *m = EchoResponse{} }
-func (m *EchoResponse) String() string { return proto.CompactTextString(m) }
-func (*EchoResponse) ProtoMessage()    {}
+func (x *EchoResponse) Reset() {
+	*x = EchoResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_features_proto_echo_echo_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EchoResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EchoResponse) ProtoMessage() {}
+
+func (x *EchoResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_features_proto_echo_echo_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EchoResponse.ProtoReflect.Descriptor instead.
 func (*EchoResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_2fd1d686b7b805dc, []int{1}
+	return file_examples_features_proto_echo_echo_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EchoResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EchoResponse.Unmarshal(m, b)
-}
-func (m *EchoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EchoResponse.Marshal(b, m, deterministic)
-}
-func (m *EchoResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EchoResponse.Merge(m, src)
-}
-func (m *EchoResponse) XXX_Size() int {
-	return xxx_messageInfo_EchoResponse.Size(m)
-}
-func (m *EchoResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_EchoResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EchoResponse proto.InternalMessageInfo
-
-func (m *EchoResponse) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EchoResponse) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*EchoRequest)(nil), "grpc.examples.echo.EchoRequest")
-	proto.RegisterType((*EchoResponse)(nil), "grpc.examples.echo.EchoResponse")
+var File_examples_features_proto_echo_echo_proto protoreflect.FileDescriptor
+
+var file_examples_features_proto_echo_echo_proto_rawDesc = []byte{
+	0x0a, 0x27, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75,
+	0x72, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x2f, 0x65,
+	0x63, 0x68, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x22, 0x27, 0x0a,
+	0x0b, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07,
+	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x28, 0x0a, 0x0c, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x32, 0xfb, 0x02, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x50, 0x0a, 0x09, 0x55, 0x6e, 0x61,
+	0x72, 0x79, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78,
+	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65,
+	0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68,
+	0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x13, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x45, 0x63,
+	0x68, 0x6f, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
+	0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70,
+	0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x13, 0x43, 0x6c, 0x69,
+	0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x45, 0x63, 0x68, 0x6f,
+	0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73,
+	0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+	0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x65, 0x0a, 0x1a, 0x42, 0x69, 0x64, 0x69, 0x72,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e,
+	0x67, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78, 0x61,
+	0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x78,
+	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x65, 0x63, 0x68, 0x6f, 0x2e, 0x45, 0x63, 0x68, 0x6f,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x35,
+	0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
+	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65,
+	0x73, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2f, 0x65, 0x63, 0x68, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("examples/features/proto/echo/echo.proto", fileDescriptor_2fd1d686b7b805dc)
+var (
+	file_examples_features_proto_echo_echo_proto_rawDescOnce sync.Once
+	file_examples_features_proto_echo_echo_proto_rawDescData = file_examples_features_proto_echo_echo_proto_rawDesc
+)
+
+func file_examples_features_proto_echo_echo_proto_rawDescGZIP() []byte {
+	file_examples_features_proto_echo_echo_proto_rawDescOnce.Do(func() {
+		file_examples_features_proto_echo_echo_proto_rawDescData = protoimpl.X.CompressGZIP(file_examples_features_proto_echo_echo_proto_rawDescData)
+	})
+	return file_examples_features_proto_echo_echo_proto_rawDescData
 }
 
-var fileDescriptor_2fd1d686b7b805dc = []byte{
-	// 236 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x92, 0xb1, 0x4b, 0x03, 0x31,
-	0x14, 0xc6, 0x8d, 0x88, 0xd2, 0xe8, 0x14, 0x97, 0xd2, 0xc5, 0x72, 0x4b, 0x6f, 0x4a, 0x8a, 0xc5,
-	0x7f, 0xa0, 0xe2, 0x2e, 0x2d, 0x2e, 0xe2, 0x12, 0xcf, 0xcf, 0x34, 0x90, 0xcb, 0x3b, 0x5f, 0x52,
-	0xd1, 0xbf, 0xdd, 0x45, 0x72, 0x47, 0x41, 0x90, 0x3a, 0xd5, 0x25, 0xe4, 0xe3, 0xfd, 0xde, 0xf7,
-	0x5b, 0x9e, 0x9c, 0xe1, 0xc3, 0xb6, 0x5d, 0x40, 0x32, 0xaf, 0xb0, 0x79, 0xcb, 0x48, 0xa6, 0x63,
-	0xca, 0x64, 0xd0, 0x6c, 0x86, 0x47, 0xf7, 0x59, 0x29, 0xc7, 0x5d, 0xa3, 0x77, 0xb4, 0x2e, 0x93,
-	0x6a, 0x26, 0xcf, 0xef, 0x9a, 0x0d, 0xad, 0xf0, 0xb6, 0x45, 0xca, 0x6a, 0x2c, 0xcf, 0x5a, 0xa4,
-	0x64, 0x1d, 0xc6, 0x62, 0x2a, 0xea, 0xd1, 0x6a, 0x17, 0xab, 0x5a, 0x5e, 0x0c, 0x60, 0xea, 0x28,
-	0x26, 0xec, 0x27, 0xaf, 0xbf, 0x8e, 0xe5, 0x49, 0x41, 0xd5, 0xbd, 0x1c, 0x3d, 0x44, 0xcb, 0x9f,
-	0x7d, 0xb8, 0xd2, 0xbf, 0xed, 0xfa, 0x87, 0x7a, 0x32, 0xdd, 0x0f, 0x0c, 0xca, 0xea, 0x48, 0x3d,
-	0xc9, 0xcb, 0x35, 0xf8, 0x1d, 0xbc, 0xce, 0x0c, 0xdb, 0xfa, 0xe8, 0x0e, 0xd6, 0x3d, 0x17, 0xa5,
-	0xfd, 0x36, 0x78, 0xc4, 0x7c, 0xf8, 0xf6, 0x5a, 0x28, 0xc8, 0xc9, 0xd2, 0xbf, 0x78, 0x46, 0x93,
-	0x3d, 0x45, 0x1b, 0xfe, 0x43, 0x32, 0x17, 0xcb, 0x9b, 0xc7, 0x85, 0x23, 0x72, 0x01, 0xda, 0x51,
-	0xb0, 0xd1, 0x69, 0x62, 0x67, 0xca, 0xaa, 0xf9, 0xeb, 0x4c, 0x9e, 0x4f, 0xfb, 0xff, 0xe2, 0x3b,
-	0x00, 0x00, 0xff, 0xff, 0xf7, 0x79, 0x87, 0xf0, 0x4d, 0x02, 0x00, 0x00,
+var file_examples_features_proto_echo_echo_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_examples_features_proto_echo_echo_proto_goTypes = []interface{}{
+	(*EchoRequest)(nil),  // 0: grpc.examples.echo.EchoRequest
+	(*EchoResponse)(nil), // 1: grpc.examples.echo.EchoResponse
+}
+var file_examples_features_proto_echo_echo_proto_depIdxs = []int32{
+	0, // 0: grpc.examples.echo.Echo.UnaryEcho:input_type -> grpc.examples.echo.EchoRequest
+	0, // 1: grpc.examples.echo.Echo.ServerStreamingEcho:input_type -> grpc.examples.echo.EchoRequest
+	0, // 2: grpc.examples.echo.Echo.ClientStreamingEcho:input_type -> grpc.examples.echo.EchoRequest
+	0, // 3: grpc.examples.echo.Echo.BidirectionalStreamingEcho:input_type -> grpc.examples.echo.EchoRequest
+	1, // 4: grpc.examples.echo.Echo.UnaryEcho:output_type -> grpc.examples.echo.EchoResponse
+	1, // 5: grpc.examples.echo.Echo.ServerStreamingEcho:output_type -> grpc.examples.echo.EchoResponse
+	1, // 6: grpc.examples.echo.Echo.ClientStreamingEcho:output_type -> grpc.examples.echo.EchoResponse
+	1, // 7: grpc.examples.echo.Echo.BidirectionalStreamingEcho:output_type -> grpc.examples.echo.EchoResponse
+	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
+}
+
+func init() { file_examples_features_proto_echo_echo_proto_init() }
+func file_examples_features_proto_echo_echo_proto_init() {
+	if File_examples_features_proto_echo_echo_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_examples_features_proto_echo_echo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EchoRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_features_proto_echo_echo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EchoResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_examples_features_proto_echo_echo_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_examples_features_proto_echo_echo_proto_goTypes,
+		DependencyIndexes: file_examples_features_proto_echo_echo_proto_depIdxs,
+		MessageInfos:      file_examples_features_proto_echo_echo_proto_msgTypes,
+	}.Build()
+	File_examples_features_proto_echo_echo_proto = out.File
+	file_examples_features_proto_echo_echo_proto_rawDesc = nil
+	file_examples_features_proto_echo_echo_proto_goTypes = nil
+	file_examples_features_proto_echo_echo_proto_depIdxs = nil
 }
diff --git a/examples/go.mod b/examples/go.mod
index d4e2b7c..9f056e4 100644
--- a/examples/go.mod
+++ b/examples/go.mod
@@ -8,6 +8,7 @@
 	golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
 	google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98
 	google.golang.org/grpc v1.31.0
+	google.golang.org/protobuf v1.25.0
 )
 
 replace google.golang.org/grpc => ../
diff --git a/examples/helloworld/helloworld/helloworld.pb.go b/examples/helloworld/helloworld/helloworld.pb.go
index 531c792..5f9912a 100644
--- a/examples/helloworld/helloworld/helloworld.pb.go
+++ b/examples/helloworld/helloworld/helloworld.pb.go
@@ -1,127 +1,240 @@
+// Copyright 2015 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: examples/helloworld/helloworld/helloworld.proto
 
 package helloworld
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The request message containing the user's name.
 type HelloRequest struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *HelloRequest) Reset()         { *m = HelloRequest{} }
-func (m *HelloRequest) String() string { return proto.CompactTextString(m) }
-func (*HelloRequest) ProtoMessage()    {}
+func (x *HelloRequest) Reset() {
+	*x = HelloRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_helloworld_helloworld_helloworld_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HelloRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HelloRequest) ProtoMessage() {}
+
+func (x *HelloRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_helloworld_helloworld_helloworld_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
 func (*HelloRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b83ea99a5323a2c7, []int{0}
+	return file_examples_helloworld_helloworld_helloworld_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *HelloRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HelloRequest.Unmarshal(m, b)
-}
-func (m *HelloRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HelloRequest.Marshal(b, m, deterministic)
-}
-func (m *HelloRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HelloRequest.Merge(m, src)
-}
-func (m *HelloRequest) XXX_Size() int {
-	return xxx_messageInfo_HelloRequest.Size(m)
-}
-func (m *HelloRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_HelloRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HelloRequest proto.InternalMessageInfo
-
-func (m *HelloRequest) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *HelloRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // The response message containing the greetings
 type HelloReply struct {
-	Message              string   `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *HelloReply) Reset()         { *m = HelloReply{} }
-func (m *HelloReply) String() string { return proto.CompactTextString(m) }
-func (*HelloReply) ProtoMessage()    {}
+func (x *HelloReply) Reset() {
+	*x = HelloReply{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_helloworld_helloworld_helloworld_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HelloReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HelloReply) ProtoMessage() {}
+
+func (x *HelloReply) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_helloworld_helloworld_helloworld_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HelloReply.ProtoReflect.Descriptor instead.
 func (*HelloReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b83ea99a5323a2c7, []int{1}
+	return file_examples_helloworld_helloworld_helloworld_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *HelloReply) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HelloReply.Unmarshal(m, b)
-}
-func (m *HelloReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HelloReply.Marshal(b, m, deterministic)
-}
-func (m *HelloReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HelloReply.Merge(m, src)
-}
-func (m *HelloReply) XXX_Size() int {
-	return xxx_messageInfo_HelloReply.Size(m)
-}
-func (m *HelloReply) XXX_DiscardUnknown() {
-	xxx_messageInfo_HelloReply.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HelloReply proto.InternalMessageInfo
-
-func (m *HelloReply) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *HelloReply) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*HelloRequest)(nil), "helloworld.HelloRequest")
-	proto.RegisterType((*HelloReply)(nil), "helloworld.HelloReply")
+var File_examples_helloworld_helloworld_helloworld_proto protoreflect.FileDescriptor
+
+var file_examples_helloworld_helloworld_helloworld_proto_rawDesc = []byte{
+	0x0a, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
+	0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64,
+	0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x0a, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x22, 0x22, 0x0a,
+	0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
+	0x65, 0x22, 0x26, 0x0a, 0x0a, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x49, 0x0a, 0x07, 0x47, 0x72, 0x65,
+	0x65, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
+	0x12, 0x18, 0x2e, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x48, 0x65,
+	0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x68, 0x65, 0x6c,
+	0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70,
+	0x6c, 0x79, 0x22, 0x00, 0x42, 0x67, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f,
+	0x72, 0x6c, 0x64, 0x42, 0x0f, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x65,
+	0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72,
+	0x6c, 0x64, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("examples/helloworld/helloworld/helloworld.proto", fileDescriptor_b83ea99a5323a2c7)
+var (
+	file_examples_helloworld_helloworld_helloworld_proto_rawDescOnce sync.Once
+	file_examples_helloworld_helloworld_helloworld_proto_rawDescData = file_examples_helloworld_helloworld_helloworld_proto_rawDesc
+)
+
+func file_examples_helloworld_helloworld_helloworld_proto_rawDescGZIP() []byte {
+	file_examples_helloworld_helloworld_helloworld_proto_rawDescOnce.Do(func() {
+		file_examples_helloworld_helloworld_helloworld_proto_rawDescData = protoimpl.X.CompressGZIP(file_examples_helloworld_helloworld_helloworld_proto_rawDescData)
+	})
+	return file_examples_helloworld_helloworld_helloworld_proto_rawDescData
 }
 
-var fileDescriptor_b83ea99a5323a2c7 = []byte{
-	// 205 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xad, 0x48, 0xcc,
-	0x2d, 0xc8, 0x49, 0x2d, 0xd6, 0xcf, 0x48, 0xcd, 0xc9, 0xc9, 0x2f, 0xcf, 0x2f, 0xca, 0x49, 0xc1,
-	0xce, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x42, 0x88, 0x28, 0x29, 0x71, 0xf1, 0x78,
-	0x80, 0x78, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0x42, 0x42, 0x5c, 0x2c, 0x79, 0x89, 0xb9,
-	0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x60, 0xb6, 0x92, 0x1a, 0x17, 0x17, 0x54, 0x4d,
-	0x41, 0x4e, 0xa5, 0x90, 0x04, 0x17, 0x7b, 0x6e, 0x6a, 0x71, 0x71, 0x62, 0x3a, 0x4c, 0x11, 0x8c,
-	0x6b, 0xe4, 0xc9, 0xc5, 0xee, 0x5e, 0x94, 0x9a, 0x5a, 0x92, 0x5a, 0x24, 0x64, 0xc7, 0xc5, 0x11,
-	0x9c, 0x58, 0x09, 0xd6, 0x25, 0x24, 0xa1, 0x87, 0xe4, 0x02, 0x64, 0xcb, 0xa4, 0xc4, 0xb0, 0xc8,
-	0x14, 0xe4, 0x54, 0x2a, 0x31, 0x38, 0xa5, 0x73, 0x49, 0x67, 0xe6, 0xeb, 0xa5, 0x17, 0x15, 0x24,
-	0xeb, 0xc1, 0x7c, 0x87, 0xa4, 0xd6, 0x89, 0x1f, 0xac, 0x38, 0x1c, 0xc4, 0x0e, 0x00, 0x79, 0x29,
-	0x80, 0x31, 0xca, 0x34, 0x3d, 0x3f, 0x3f, 0x3d, 0x27, 0x55, 0x2f, 0x3d, 0x3f, 0x27, 0x31, 0x2f,
-	0x5d, 0x2f, 0xbf, 0x28, 0x5d, 0x1f, 0xa4, 0x9d, 0x40, 0xe0, 0x24, 0xb1, 0x81, 0x83, 0xc4, 0x18,
-	0x10, 0x00, 0x00, 0xff, 0xff, 0x46, 0xfe, 0x45, 0x5c, 0x45, 0x01, 0x00, 0x00,
+var file_examples_helloworld_helloworld_helloworld_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_examples_helloworld_helloworld_helloworld_proto_goTypes = []interface{}{
+	(*HelloRequest)(nil), // 0: helloworld.HelloRequest
+	(*HelloReply)(nil),   // 1: helloworld.HelloReply
+}
+var file_examples_helloworld_helloworld_helloworld_proto_depIdxs = []int32{
+	0, // 0: helloworld.Greeter.SayHello:input_type -> helloworld.HelloRequest
+	1, // 1: helloworld.Greeter.SayHello:output_type -> helloworld.HelloReply
+	1, // [1:2] is the sub-list for method output_type
+	0, // [0:1] 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_examples_helloworld_helloworld_helloworld_proto_init() }
+func file_examples_helloworld_helloworld_helloworld_proto_init() {
+	if File_examples_helloworld_helloworld_helloworld_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_examples_helloworld_helloworld_helloworld_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HelloRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_helloworld_helloworld_helloworld_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HelloReply); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_examples_helloworld_helloworld_helloworld_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_examples_helloworld_helloworld_helloworld_proto_goTypes,
+		DependencyIndexes: file_examples_helloworld_helloworld_helloworld_proto_depIdxs,
+		MessageInfos:      file_examples_helloworld_helloworld_helloworld_proto_msgTypes,
+	}.Build()
+	File_examples_helloworld_helloworld_helloworld_proto = out.File
+	file_examples_helloworld_helloworld_helloworld_proto_rawDesc = nil
+	file_examples_helloworld_helloworld_helloworld_proto_goTypes = nil
+	file_examples_helloworld_helloworld_helloworld_proto_depIdxs = nil
 }
diff --git a/examples/route_guide/client/client.go b/examples/route_guide/client/client.go
index 3e9d4e1..172f10f 100644
--- a/examples/route_guide/client/client.go
+++ b/examples/route_guide/client/client.go
@@ -72,7 +72,8 @@
 		if err != nil {
 			log.Fatalf("%v.ListFeatures(_) = _, %v", client, err)
 		}
-		log.Println(feature)
+		log.Printf("Feature: name: %q, point:(%v, %v)", feature.GetName(),
+			feature.GetLocation().GetLatitude(), feature.GetLocation().GetLongitude())
 	}
 }
 
diff --git a/examples/route_guide/routeguide/route_guide.pb.go b/examples/route_guide/routeguide/route_guide.pb.go
index 78c8566..f99a1da 100644
--- a/examples/route_guide/routeguide/route_guide.pb.go
+++ b/examples/route_guide/routeguide/route_guide.pb.go
@@ -1,72 +1,99 @@
+// Copyright 2015 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: examples/route_guide/routeguide/route_guide.proto
 
 package routeguide
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Points are represented as latitude-longitude pairs in the E7 representation
 // (degrees multiplied by 10**7 and rounded to the nearest integer).
 // Latitudes should be in the range +/- 90 degrees and longitude should be in
 // the range +/- 180 degrees (inclusive).
 type Point struct {
-	Latitude             int32    `protobuf:"varint,1,opt,name=latitude,proto3" json:"latitude,omitempty"`
-	Longitude            int32    `protobuf:"varint,2,opt,name=longitude,proto3" json:"longitude,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Latitude  int32 `protobuf:"varint,1,opt,name=latitude,proto3" json:"latitude,omitempty"`
+	Longitude int32 `protobuf:"varint,2,opt,name=longitude,proto3" json:"longitude,omitempty"`
 }
 
-func (m *Point) Reset()         { *m = Point{} }
-func (m *Point) String() string { return proto.CompactTextString(m) }
-func (*Point) ProtoMessage()    {}
+func (x *Point) Reset() {
+	*x = Point{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Point) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Point) ProtoMessage() {}
+
+func (x *Point) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Point.ProtoReflect.Descriptor instead.
 func (*Point) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af806a20656386f8, []int{0}
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Point) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Point.Unmarshal(m, b)
-}
-func (m *Point) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Point.Marshal(b, m, deterministic)
-}
-func (m *Point) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Point.Merge(m, src)
-}
-func (m *Point) XXX_Size() int {
-	return xxx_messageInfo_Point.Size(m)
-}
-func (m *Point) XXX_DiscardUnknown() {
-	xxx_messageInfo_Point.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Point proto.InternalMessageInfo
-
-func (m *Point) GetLatitude() int32 {
-	if m != nil {
-		return m.Latitude
+func (x *Point) GetLatitude() int32 {
+	if x != nil {
+		return x.Latitude
 	}
 	return 0
 }
 
-func (m *Point) GetLongitude() int32 {
-	if m != nil {
-		return m.Longitude
+func (x *Point) GetLongitude() int32 {
+	if x != nil {
+		return x.Longitude
 	}
 	return 0
 }
@@ -74,50 +101,58 @@
 // A latitude-longitude rectangle, represented as two diagonally opposite
 // points "lo" and "hi".
 type Rectangle struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// One corner of the rectangle.
 	Lo *Point `protobuf:"bytes,1,opt,name=lo,proto3" json:"lo,omitempty"`
 	// The other corner of the rectangle.
-	Hi                   *Point   `protobuf:"bytes,2,opt,name=hi,proto3" json:"hi,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Hi *Point `protobuf:"bytes,2,opt,name=hi,proto3" json:"hi,omitempty"`
 }
 
-func (m *Rectangle) Reset()         { *m = Rectangle{} }
-func (m *Rectangle) String() string { return proto.CompactTextString(m) }
-func (*Rectangle) ProtoMessage()    {}
+func (x *Rectangle) Reset() {
+	*x = Rectangle{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Rectangle) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Rectangle) ProtoMessage() {}
+
+func (x *Rectangle) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Rectangle.ProtoReflect.Descriptor instead.
 func (*Rectangle) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af806a20656386f8, []int{1}
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Rectangle) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Rectangle.Unmarshal(m, b)
-}
-func (m *Rectangle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Rectangle.Marshal(b, m, deterministic)
-}
-func (m *Rectangle) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Rectangle.Merge(m, src)
-}
-func (m *Rectangle) XXX_Size() int {
-	return xxx_messageInfo_Rectangle.Size(m)
-}
-func (m *Rectangle) XXX_DiscardUnknown() {
-	xxx_messageInfo_Rectangle.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Rectangle proto.InternalMessageInfo
-
-func (m *Rectangle) GetLo() *Point {
-	if m != nil {
-		return m.Lo
+func (x *Rectangle) GetLo() *Point {
+	if x != nil {
+		return x.Lo
 	}
 	return nil
 }
 
-func (m *Rectangle) GetHi() *Point {
-	if m != nil {
-		return m.Hi
+func (x *Rectangle) GetHi() *Point {
+	if x != nil {
+		return x.Hi
 	}
 	return nil
 }
@@ -126,100 +161,116 @@
 //
 // If a feature could not be named, the name is empty.
 type Feature struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The name of the feature.
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The point where the feature is detected.
-	Location             *Point   `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Location *Point `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
 }
 
-func (m *Feature) Reset()         { *m = Feature{} }
-func (m *Feature) String() string { return proto.CompactTextString(m) }
-func (*Feature) ProtoMessage()    {}
+func (x *Feature) Reset() {
+	*x = Feature{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Feature) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Feature) ProtoMessage() {}
+
+func (x *Feature) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Feature.ProtoReflect.Descriptor instead.
 func (*Feature) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af806a20656386f8, []int{2}
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *Feature) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Feature.Unmarshal(m, b)
-}
-func (m *Feature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Feature.Marshal(b, m, deterministic)
-}
-func (m *Feature) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Feature.Merge(m, src)
-}
-func (m *Feature) XXX_Size() int {
-	return xxx_messageInfo_Feature.Size(m)
-}
-func (m *Feature) XXX_DiscardUnknown() {
-	xxx_messageInfo_Feature.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Feature proto.InternalMessageInfo
-
-func (m *Feature) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *Feature) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
-func (m *Feature) GetLocation() *Point {
-	if m != nil {
-		return m.Location
+func (x *Feature) GetLocation() *Point {
+	if x != nil {
+		return x.Location
 	}
 	return nil
 }
 
 // A RouteNote is a message sent while at a given point.
 type RouteNote struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The location from which the message is sent.
 	Location *Point `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
 	// The message to be sent.
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *RouteNote) Reset()         { *m = RouteNote{} }
-func (m *RouteNote) String() string { return proto.CompactTextString(m) }
-func (*RouteNote) ProtoMessage()    {}
+func (x *RouteNote) Reset() {
+	*x = RouteNote{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteNote) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteNote) ProtoMessage() {}
+
+func (x *RouteNote) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteNote.ProtoReflect.Descriptor instead.
 func (*RouteNote) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af806a20656386f8, []int{3}
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *RouteNote) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteNote.Unmarshal(m, b)
-}
-func (m *RouteNote) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteNote.Marshal(b, m, deterministic)
-}
-func (m *RouteNote) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteNote.Merge(m, src)
-}
-func (m *RouteNote) XXX_Size() int {
-	return xxx_messageInfo_RouteNote.Size(m)
-}
-func (m *RouteNote) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteNote.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteNote proto.InternalMessageInfo
-
-func (m *RouteNote) GetLocation() *Point {
-	if m != nil {
-		return m.Location
+func (x *RouteNote) GetLocation() *Point {
+	if x != nil {
+		return x.Location
 	}
 	return nil
 }
 
-func (m *RouteNote) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *RouteNote) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
@@ -230,6 +281,10 @@
 // detected features, and the total distance covered as the cumulative sum of
 // the distance between each point.
 type RouteSummary struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of points received.
 	PointCount int32 `protobuf:"varint,1,opt,name=point_count,json=pointCount,proto3" json:"point_count,omitempty"`
 	// The number of known features passed while traversing the route.
@@ -237,105 +292,254 @@
 	// The distance covered in metres.
 	Distance int32 `protobuf:"varint,3,opt,name=distance,proto3" json:"distance,omitempty"`
 	// The duration of the traversal in seconds.
-	ElapsedTime          int32    `protobuf:"varint,4,opt,name=elapsed_time,json=elapsedTime,proto3" json:"elapsed_time,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ElapsedTime int32 `protobuf:"varint,4,opt,name=elapsed_time,json=elapsedTime,proto3" json:"elapsed_time,omitempty"`
 }
 
-func (m *RouteSummary) Reset()         { *m = RouteSummary{} }
-func (m *RouteSummary) String() string { return proto.CompactTextString(m) }
-func (*RouteSummary) ProtoMessage()    {}
+func (x *RouteSummary) Reset() {
+	*x = RouteSummary{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RouteSummary) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RouteSummary) ProtoMessage() {}
+
+func (x *RouteSummary) ProtoReflect() protoreflect.Message {
+	mi := &file_examples_route_guide_routeguide_route_guide_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RouteSummary.ProtoReflect.Descriptor instead.
 func (*RouteSummary) Descriptor() ([]byte, []int) {
-	return fileDescriptor_af806a20656386f8, []int{4}
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *RouteSummary) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RouteSummary.Unmarshal(m, b)
-}
-func (m *RouteSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RouteSummary.Marshal(b, m, deterministic)
-}
-func (m *RouteSummary) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RouteSummary.Merge(m, src)
-}
-func (m *RouteSummary) XXX_Size() int {
-	return xxx_messageInfo_RouteSummary.Size(m)
-}
-func (m *RouteSummary) XXX_DiscardUnknown() {
-	xxx_messageInfo_RouteSummary.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RouteSummary proto.InternalMessageInfo
-
-func (m *RouteSummary) GetPointCount() int32 {
-	if m != nil {
-		return m.PointCount
+func (x *RouteSummary) GetPointCount() int32 {
+	if x != nil {
+		return x.PointCount
 	}
 	return 0
 }
 
-func (m *RouteSummary) GetFeatureCount() int32 {
-	if m != nil {
-		return m.FeatureCount
+func (x *RouteSummary) GetFeatureCount() int32 {
+	if x != nil {
+		return x.FeatureCount
 	}
 	return 0
 }
 
-func (m *RouteSummary) GetDistance() int32 {
-	if m != nil {
-		return m.Distance
+func (x *RouteSummary) GetDistance() int32 {
+	if x != nil {
+		return x.Distance
 	}
 	return 0
 }
 
-func (m *RouteSummary) GetElapsedTime() int32 {
-	if m != nil {
-		return m.ElapsedTime
+func (x *RouteSummary) GetElapsedTime() int32 {
+	if x != nil {
+		return x.ElapsedTime
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*Point)(nil), "routeguide.Point")
-	proto.RegisterType((*Rectangle)(nil), "routeguide.Rectangle")
-	proto.RegisterType((*Feature)(nil), "routeguide.Feature")
-	proto.RegisterType((*RouteNote)(nil), "routeguide.RouteNote")
-	proto.RegisterType((*RouteSummary)(nil), "routeguide.RouteSummary")
+var File_examples_route_guide_routeguide_route_guide_proto protoreflect.FileDescriptor
+
+var file_examples_route_guide_routeguide_route_guide_proto_rawDesc = []byte{
+	0x0a, 0x31, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65,
+	0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64,
+	0x65, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x22,
+	0x41, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69,
+	0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69,
+	0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75,
+	0x64, 0x65, 0x22, 0x51, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12,
+	0x21, 0x0a, 0x02, 0x6c, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x6f,
+	0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x02,
+	0x6c, 0x6f, 0x12, 0x21, 0x0a, 0x02, 0x68, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
+	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e,
+	0x74, 0x52, 0x02, 0x68, 0x69, 0x22, 0x4c, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75,
+	0x69, 0x64, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65,
+	0x12, 0x2d, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e,
+	0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+	0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0c, 0x52, 0x6f,
+	0x75, 0x74, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f,
+	0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0a, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66,
+	0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
+	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c,
+	0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x0b, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x32,
+	0x85, 0x02, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x47, 0x75, 0x69, 0x64, 0x65, 0x12, 0x36,
+	0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x11, 0x2e, 0x72,
+	0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x1a,
+	0x13, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x46, 0x65, 0x61,
+	0x74, 0x75, 0x72, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65,
+	0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75,
+	0x69, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x74, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x1a, 0x13, 0x2e,
+	0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75,
+	0x72, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64,
+	0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x11, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69,
+	0x64, 0x65, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
+	0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61,
+	0x72, 0x79, 0x22, 0x00, 0x28, 0x01, 0x12, 0x3f, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43,
+	0x68, 0x61, 0x74, 0x12, 0x15, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65,
+	0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x1a, 0x15, 0x2e, 0x72, 0x6f, 0x75,
+	0x74, 0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4e, 0x6f, 0x74,
+	0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x68, 0x0a, 0x1b, 0x69, 0x6f, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x72, 0x6f, 0x75, 0x74,
+	0x65, 0x67, 0x75, 0x69, 0x64, 0x65, 0x42, 0x0f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x47, 0x75, 0x69,
+	0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65,
+	0x5f, 0x67, 0x75, 0x69, 0x64, 0x65, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x67, 0x75, 0x69, 0x64,
+	0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("examples/route_guide/routeguide/route_guide.proto", fileDescriptor_af806a20656386f8)
+var (
+	file_examples_route_guide_routeguide_route_guide_proto_rawDescOnce sync.Once
+	file_examples_route_guide_routeguide_route_guide_proto_rawDescData = file_examples_route_guide_routeguide_route_guide_proto_rawDesc
+)
+
+func file_examples_route_guide_routeguide_route_guide_proto_rawDescGZIP() []byte {
+	file_examples_route_guide_routeguide_route_guide_proto_rawDescOnce.Do(func() {
+		file_examples_route_guide_routeguide_route_guide_proto_rawDescData = protoimpl.X.CompressGZIP(file_examples_route_guide_routeguide_route_guide_proto_rawDescData)
+	})
+	return file_examples_route_guide_routeguide_route_guide_proto_rawDescData
 }
 
-var fileDescriptor_af806a20656386f8 = []byte{
-	// 434 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x53, 0xcd, 0x6e, 0xd3, 0x40,
-	0x10, 0xae, 0x43, 0x4b, 0xe3, 0x49, 0x10, 0x62, 0x10, 0x92, 0x15, 0x90, 0xa0, 0xe6, 0xd2, 0x0b,
-	0x4e, 0x29, 0x52, 0x8f, 0x45, 0xb4, 0x12, 0xbd, 0x54, 0x28, 0x98, 0x9e, 0xb8, 0x44, 0x8b, 0x3d,
-	0x6c, 0x56, 0x5a, 0x7b, 0x2c, 0x7b, 0x2d, 0xc1, 0x03, 0xf0, 0x04, 0xbc, 0x30, 0xda, 0x5d, 0x3b,
-	0x76, 0x69, 0xaa, 0xde, 0x66, 0xbe, 0xf9, 0xbe, 0xf9, 0xd5, 0xc0, 0x7b, 0xfa, 0x25, 0x8a, 0x4a,
-	0x53, 0xb3, 0xac, 0xb9, 0x35, 0xb4, 0x96, 0xad, 0xca, 0xc9, 0xdb, 0x23, 0xd3, 0xc3, 0x49, 0x55,
-	0xb3, 0x61, 0x84, 0x21, 0x1a, 0x7f, 0x82, 0x83, 0x15, 0xab, 0xd2, 0xe0, 0x02, 0xa6, 0x5a, 0x18,
-	0x65, 0xda, 0x9c, 0xa2, 0xe0, 0x4d, 0x70, 0x7c, 0x90, 0x6e, 0x7d, 0x7c, 0x05, 0xa1, 0xe6, 0x52,
-	0xfa, 0xe0, 0xc4, 0x05, 0x07, 0x20, 0xfe, 0x0a, 0x61, 0x4a, 0x99, 0x11, 0xa5, 0xd4, 0x84, 0x47,
-	0x30, 0xd1, 0xec, 0x12, 0xcc, 0x4e, 0x9f, 0x25, 0x43, 0xa1, 0xc4, 0x55, 0x49, 0x27, 0x9a, 0x2d,
-	0x65, 0xa3, 0x5c, 0x9a, 0xdd, 0x94, 0x8d, 0x8a, 0xaf, 0xe1, 0xf0, 0x33, 0x09, 0xd3, 0xd6, 0x84,
-	0x08, 0xfb, 0xa5, 0x28, 0x7c, 0x4f, 0x61, 0xea, 0x6c, 0x7c, 0x07, 0x53, 0xcd, 0x99, 0x30, 0x8a,
-	0xcb, 0xfb, 0xf3, 0x6c, 0x29, 0xf1, 0x0d, 0x84, 0xa9, 0x8d, 0x7e, 0x61, 0x73, 0x5b, 0x1b, 0x3c,
-	0xa8, 0xc5, 0x08, 0x0e, 0x0b, 0x6a, 0x1a, 0x21, 0xfd, 0xe0, 0x61, 0xda, 0xbb, 0xf1, 0xdf, 0x00,
-	0xe6, 0x2e, 0xed, 0xb7, 0xb6, 0x28, 0x44, 0xfd, 0x1b, 0x5f, 0xc3, 0xac, 0xb2, 0xea, 0x75, 0xc6,
-	0x6d, 0x69, 0xba, 0x25, 0x82, 0x83, 0x2e, 0x2d, 0x82, 0x6f, 0xe1, 0xc9, 0x4f, 0x3f, 0x55, 0x47,
-	0xf1, 0xab, 0x9c, 0x77, 0xa0, 0x27, 0x2d, 0x60, 0x9a, 0xab, 0xc6, 0x88, 0x32, 0xa3, 0xe8, 0x91,
-	0xbf, 0x43, 0xef, 0xe3, 0x11, 0xcc, 0x49, 0x8b, 0xaa, 0xa1, 0x7c, 0x6d, 0x54, 0x41, 0xd1, 0xbe,
-	0x8b, 0xcf, 0x3a, 0xec, 0x46, 0x15, 0x74, 0xfa, 0x67, 0x02, 0xe0, 0xba, 0xba, 0xb2, 0xe3, 0xe0,
-	0x19, 0xc0, 0x15, 0x99, 0x7e, 0x97, 0x77, 0x27, 0x5d, 0x3c, 0x1f, 0x43, 0x1d, 0x2f, 0xde, 0xc3,
-	0x73, 0x98, 0x5f, 0xab, 0xa6, 0x17, 0x36, 0xf8, 0x62, 0x4c, 0xdb, 0x5e, 0xfb, 0x1e, 0xf5, 0x49,
-	0x80, 0xe7, 0x30, 0x4b, 0x29, 0xe3, 0x3a, 0x77, 0xbd, 0xec, 0x2a, 0x1c, 0xdd, 0xca, 0x38, 0xda,
-	0x63, 0xbc, 0x77, 0x1c, 0xe0, 0xc7, 0xee, 0x64, 0x97, 0x1b, 0x61, 0xfe, 0x2b, 0xde, 0x5f, 0x72,
-	0xb1, 0x1b, 0xb6, 0xf2, 0x93, 0xe0, 0x62, 0x03, 0x2f, 0x15, 0x27, 0xb2, 0xae, 0xb2, 0xa4, 0x7f,
-	0x90, 0x11, 0xfd, 0xe2, 0xe9, 0xb0, 0xa3, 0x95, 0xfd, 0x89, 0x55, 0xf0, 0xfd, 0x4c, 0x32, 0x4b,
-	0x4d, 0x89, 0x64, 0x2d, 0x4a, 0x99, 0x70, 0x2d, 0x97, 0x56, 0xbe, 0x7c, 0xe0, 0xbf, 0x7e, 0x3c,
-	0x76, 0x4f, 0xf5, 0xe1, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x28, 0xef, 0x54, 0xdd, 0x89, 0x03,
-	0x00, 0x00,
+var file_examples_route_guide_routeguide_route_guide_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
+var file_examples_route_guide_routeguide_route_guide_proto_goTypes = []interface{}{
+	(*Point)(nil),        // 0: routeguide.Point
+	(*Rectangle)(nil),    // 1: routeguide.Rectangle
+	(*Feature)(nil),      // 2: routeguide.Feature
+	(*RouteNote)(nil),    // 3: routeguide.RouteNote
+	(*RouteSummary)(nil), // 4: routeguide.RouteSummary
+}
+var file_examples_route_guide_routeguide_route_guide_proto_depIdxs = []int32{
+	0, // 0: routeguide.Rectangle.lo:type_name -> routeguide.Point
+	0, // 1: routeguide.Rectangle.hi:type_name -> routeguide.Point
+	0, // 2: routeguide.Feature.location:type_name -> routeguide.Point
+	0, // 3: routeguide.RouteNote.location:type_name -> routeguide.Point
+	0, // 4: routeguide.RouteGuide.GetFeature:input_type -> routeguide.Point
+	1, // 5: routeguide.RouteGuide.ListFeatures:input_type -> routeguide.Rectangle
+	0, // 6: routeguide.RouteGuide.RecordRoute:input_type -> routeguide.Point
+	3, // 7: routeguide.RouteGuide.RouteChat:input_type -> routeguide.RouteNote
+	2, // 8: routeguide.RouteGuide.GetFeature:output_type -> routeguide.Feature
+	2, // 9: routeguide.RouteGuide.ListFeatures:output_type -> routeguide.Feature
+	4, // 10: routeguide.RouteGuide.RecordRoute:output_type -> routeguide.RouteSummary
+	3, // 11: routeguide.RouteGuide.RouteChat:output_type -> routeguide.RouteNote
+	8, // [8:12] is the sub-list for method output_type
+	4, // [4:8] 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
+}
+
+func init() { file_examples_route_guide_routeguide_route_guide_proto_init() }
+func file_examples_route_guide_routeguide_route_guide_proto_init() {
+	if File_examples_route_guide_routeguide_route_guide_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_examples_route_guide_routeguide_route_guide_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Point); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_route_guide_routeguide_route_guide_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Rectangle); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_route_guide_routeguide_route_guide_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Feature); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_route_guide_routeguide_route_guide_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteNote); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_examples_route_guide_routeguide_route_guide_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RouteSummary); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_examples_route_guide_routeguide_route_guide_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   5,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_examples_route_guide_routeguide_route_guide_proto_goTypes,
+		DependencyIndexes: file_examples_route_guide_routeguide_route_guide_proto_depIdxs,
+		MessageInfos:      file_examples_route_guide_routeguide_route_guide_proto_msgTypes,
+	}.Build()
+	File_examples_route_guide_routeguide_route_guide_proto = out.File
+	file_examples_route_guide_routeguide_route_guide_proto_rawDesc = nil
+	file_examples_route_guide_routeguide_route_guide_proto_goTypes = nil
+	file_examples_route_guide_routeguide_route_guide_proto_depIdxs = nil
 }
diff --git a/go.mod b/go.mod
index f4a728f..6feb697 100644
--- a/go.mod
+++ b/go.mod
@@ -7,10 +7,11 @@
 	github.com/envoyproxy/go-control-plane v0.9.7
 	github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
 	github.com/golang/protobuf v1.4.2
-	github.com/google/go-cmp v0.4.0
+	github.com/google/go-cmp v0.5.0
 	github.com/google/uuid v1.1.2
 	golang.org/x/net v0.0.0-20190311183353-d8887717615a
 	golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
 	golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
-	google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55
+	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013
+	google.golang.org/protobuf v1.25.0
 )
diff --git a/go.sum b/go.sum
index 215a459..293f549 100644
--- a/go.sum
+++ b/go.sum
@@ -17,24 +17,23 @@
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 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 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
 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 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -45,7 +44,6 @@
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 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-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 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=
@@ -65,7 +63,6 @@
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/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-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A=
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -73,8 +70,9 @@
 google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -84,10 +82,12 @@
 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.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
+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.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/health/grpc_health_v1/health.pb.go b/health/grpc_health_v1/health.pb.go
index e9919c0..2b6803e 100644
--- a/health/grpc_health_v1/health.pb.go
+++ b/health/grpc_health_v1/health.pb.go
@@ -1,24 +1,46 @@
+// Copyright 2015 The 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.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/health/v1/health.proto
 
 package grpc_health_v1
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type HealthCheckResponse_ServingStatus int32
 
@@ -26,136 +48,266 @@
 	HealthCheckResponse_UNKNOWN         HealthCheckResponse_ServingStatus = 0
 	HealthCheckResponse_SERVING         HealthCheckResponse_ServingStatus = 1
 	HealthCheckResponse_NOT_SERVING     HealthCheckResponse_ServingStatus = 2
-	HealthCheckResponse_SERVICE_UNKNOWN HealthCheckResponse_ServingStatus = 3
+	HealthCheckResponse_SERVICE_UNKNOWN HealthCheckResponse_ServingStatus = 3 // Used only by the Watch method.
 )
 
-var HealthCheckResponse_ServingStatus_name = map[int32]string{
-	0: "UNKNOWN",
-	1: "SERVING",
-	2: "NOT_SERVING",
-	3: "SERVICE_UNKNOWN",
-}
+// Enum value maps for HealthCheckResponse_ServingStatus.
+var (
+	HealthCheckResponse_ServingStatus_name = map[int32]string{
+		0: "UNKNOWN",
+		1: "SERVING",
+		2: "NOT_SERVING",
+		3: "SERVICE_UNKNOWN",
+	}
+	HealthCheckResponse_ServingStatus_value = map[string]int32{
+		"UNKNOWN":         0,
+		"SERVING":         1,
+		"NOT_SERVING":     2,
+		"SERVICE_UNKNOWN": 3,
+	}
+)
 
-var HealthCheckResponse_ServingStatus_value = map[string]int32{
-	"UNKNOWN":         0,
-	"SERVING":         1,
-	"NOT_SERVING":     2,
-	"SERVICE_UNKNOWN": 3,
+func (x HealthCheckResponse_ServingStatus) Enum() *HealthCheckResponse_ServingStatus {
+	p := new(HealthCheckResponse_ServingStatus)
+	*p = x
+	return p
 }
 
 func (x HealthCheckResponse_ServingStatus) String() string {
-	return proto.EnumName(HealthCheckResponse_ServingStatus_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (HealthCheckResponse_ServingStatus) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_health_v1_health_proto_enumTypes[0].Descriptor()
+}
+
+func (HealthCheckResponse_ServingStatus) Type() protoreflect.EnumType {
+	return &file_grpc_health_v1_health_proto_enumTypes[0]
+}
+
+func (x HealthCheckResponse_ServingStatus) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use HealthCheckResponse_ServingStatus.Descriptor instead.
 func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e265fd9d4e077217, []int{1, 0}
+	return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1, 0}
 }
 
 type HealthCheckRequest struct {
-	Service              string   `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
 }
 
-func (m *HealthCheckRequest) Reset()         { *m = HealthCheckRequest{} }
-func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) }
-func (*HealthCheckRequest) ProtoMessage()    {}
+func (x *HealthCheckRequest) Reset() {
+	*x = HealthCheckRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_health_v1_health_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HealthCheckRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HealthCheckRequest) ProtoMessage() {}
+
+func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_health_v1_health_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead.
 func (*HealthCheckRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e265fd9d4e077217, []int{0}
+	return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *HealthCheckRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HealthCheckRequest.Unmarshal(m, b)
-}
-func (m *HealthCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HealthCheckRequest.Marshal(b, m, deterministic)
-}
-func (m *HealthCheckRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HealthCheckRequest.Merge(m, src)
-}
-func (m *HealthCheckRequest) XXX_Size() int {
-	return xxx_messageInfo_HealthCheckRequest.Size(m)
-}
-func (m *HealthCheckRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_HealthCheckRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HealthCheckRequest proto.InternalMessageInfo
-
-func (m *HealthCheckRequest) GetService() string {
-	if m != nil {
-		return m.Service
+func (x *HealthCheckRequest) GetService() string {
+	if x != nil {
+		return x.Service
 	}
 	return ""
 }
 
 type HealthCheckResponse struct {
-	Status               HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,proto3,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
-	XXX_unrecognized     []byte                            `json:"-"`
-	XXX_sizecache        int32                             `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,proto3,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"`
 }
 
-func (m *HealthCheckResponse) Reset()         { *m = HealthCheckResponse{} }
-func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) }
-func (*HealthCheckResponse) ProtoMessage()    {}
+func (x *HealthCheckResponse) Reset() {
+	*x = HealthCheckResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_health_v1_health_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HealthCheckResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HealthCheckResponse) ProtoMessage() {}
+
+func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_health_v1_health_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead.
 func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e265fd9d4e077217, []int{1}
+	return file_grpc_health_v1_health_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_HealthCheckResponse.Unmarshal(m, b)
-}
-func (m *HealthCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_HealthCheckResponse.Marshal(b, m, deterministic)
-}
-func (m *HealthCheckResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_HealthCheckResponse.Merge(m, src)
-}
-func (m *HealthCheckResponse) XXX_Size() int {
-	return xxx_messageInfo_HealthCheckResponse.Size(m)
-}
-func (m *HealthCheckResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_HealthCheckResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HealthCheckResponse proto.InternalMessageInfo
-
-func (m *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus {
-	if m != nil {
-		return m.Status
+func (x *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus {
+	if x != nil {
+		return x.Status
 	}
 	return HealthCheckResponse_UNKNOWN
 }
 
-func init() {
-	proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value)
-	proto.RegisterType((*HealthCheckRequest)(nil), "grpc.health.v1.HealthCheckRequest")
-	proto.RegisterType((*HealthCheckResponse)(nil), "grpc.health.v1.HealthCheckResponse")
+var File_grpc_health_v1_health_proto protoreflect.FileDescriptor
+
+var file_grpc_health_v1_health_proto_rawDesc = []byte{
+	0x0a, 0x1b, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x76, 0x31,
+	0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x22, 0x2e, 0x0a,
+	0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb1, 0x01,
+	0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
+	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
+	0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
+	0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x22, 0x4f, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b,
+	0x0a, 0x07, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e,
+	0x4f, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f,
+	0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x03, 0x32, 0xae, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x50, 0x0a, 0x05,
+	0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65, 0x61,
+	0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
+	0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
+	0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52,
+	0x0a, 0x05, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68,
+	0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43,
+	0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61,
+	0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x30, 0x01, 0x42, 0x61, 0x0a, 0x11, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x68, 0x65,
+	0x61, 0x6c, 0x74, 0x68, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50,
+	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
+	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x68,
+	0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74,
+	0x68, 0x5f, 0x76, 0x31, 0xaa, 0x02, 0x0e, 0x47, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x65, 0x61, 0x6c,
+	0x74, 0x68, 0x2e, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("grpc/health/v1/health.proto", fileDescriptor_e265fd9d4e077217) }
+var (
+	file_grpc_health_v1_health_proto_rawDescOnce sync.Once
+	file_grpc_health_v1_health_proto_rawDescData = file_grpc_health_v1_health_proto_rawDesc
+)
 
-var fileDescriptor_e265fd9d4e077217 = []byte{
-	// 297 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48,
-	0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0xd0, 0x2f, 0x33, 0x84, 0xb2, 0xf4, 0x0a, 0x8a, 0xf2,
-	0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, 0x0f,
-	0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, 0x82,
-	0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08,
-	0xc6, 0x55, 0xda, 0xc8, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8,
-	0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, 0xd5,
-	0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, 0x0d,
-	0x50, 0xf2, 0xe7, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, 0x0f,
-	0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, 0xf8,
-	0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x42, 0xc2, 0x5c, 0xfc, 0x60, 0x8e, 0xb3,
-	0x6b, 0x3c, 0x4c, 0x0b, 0xb3, 0xd1, 0x3a, 0x46, 0x2e, 0x36, 0x88, 0xf5, 0x42, 0x01, 0x5c, 0xac,
-	0x60, 0x27, 0x08, 0x29, 0xe1, 0x75, 0x1f, 0x38, 0x14, 0xa4, 0x94, 0x89, 0xf0, 0x83, 0x50, 0x10,
-	0x17, 0x6b, 0x78, 0x62, 0x49, 0x72, 0x06, 0xd5, 0x4c, 0x34, 0x60, 0x74, 0x4a, 0xe4, 0x12, 0xcc,
-	0xcc, 0x47, 0x53, 0xea, 0xc4, 0x0d, 0x51, 0x1b, 0x00, 0x8a, 0xc6, 0x00, 0xc6, 0x28, 0x9d, 0xf4,
-	0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xbd, 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74,
-	0x7d, 0xe4, 0x78, 0x07, 0xb1, 0xe3, 0x21, 0xec, 0xf8, 0x32, 0xc3, 0x55, 0x4c, 0x7c, 0xee, 0x20,
-	0xd3, 0x20, 0x46, 0xe8, 0x85, 0x19, 0x26, 0xb1, 0x81, 0x93, 0x83, 0x31, 0x20, 0x00, 0x00, 0xff,
-	0xff, 0x12, 0x7d, 0x96, 0xcb, 0x2d, 0x02, 0x00, 0x00,
+func file_grpc_health_v1_health_proto_rawDescGZIP() []byte {
+	file_grpc_health_v1_health_proto_rawDescOnce.Do(func() {
+		file_grpc_health_v1_health_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_health_v1_health_proto_rawDescData)
+	})
+	return file_grpc_health_v1_health_proto_rawDescData
+}
+
+var file_grpc_health_v1_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_grpc_health_v1_health_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_grpc_health_v1_health_proto_goTypes = []interface{}{
+	(HealthCheckResponse_ServingStatus)(0), // 0: grpc.health.v1.HealthCheckResponse.ServingStatus
+	(*HealthCheckRequest)(nil),             // 1: grpc.health.v1.HealthCheckRequest
+	(*HealthCheckResponse)(nil),            // 2: grpc.health.v1.HealthCheckResponse
+}
+var file_grpc_health_v1_health_proto_depIdxs = []int32{
+	0, // 0: grpc.health.v1.HealthCheckResponse.status:type_name -> grpc.health.v1.HealthCheckResponse.ServingStatus
+	1, // 1: grpc.health.v1.Health.Check:input_type -> grpc.health.v1.HealthCheckRequest
+	1, // 2: grpc.health.v1.Health.Watch:input_type -> grpc.health.v1.HealthCheckRequest
+	2, // 3: grpc.health.v1.Health.Check:output_type -> grpc.health.v1.HealthCheckResponse
+	2, // 4: grpc.health.v1.Health.Watch:output_type -> grpc.health.v1.HealthCheckResponse
+	3, // [3:5] is the sub-list for method output_type
+	1, // [1:3] 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
+}
+
+func init() { file_grpc_health_v1_health_proto_init() }
+func file_grpc_health_v1_health_proto_init() {
+	if File_grpc_health_v1_health_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HealthCheckRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HealthCheckResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_health_v1_health_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_grpc_health_v1_health_proto_goTypes,
+		DependencyIndexes: file_grpc_health_v1_health_proto_depIdxs,
+		EnumInfos:         file_grpc_health_v1_health_proto_enumTypes,
+		MessageInfos:      file_grpc_health_v1_health_proto_msgTypes,
+	}.Build()
+	File_grpc_health_v1_health_proto = out.File
+	file_grpc_health_v1_health_proto_rawDesc = nil
+	file_grpc_health_v1_health_proto_goTypes = nil
+	file_grpc_health_v1_health_proto_depIdxs = nil
 }
diff --git a/internal/proto/grpc_service_config/service_config.pb.go b/internal/proto/grpc_service_config/service_config.pb.go
index c0436b6..8130a39 100644
--- a/internal/proto/grpc_service_config/service_config.pb.go
+++ b/internal/proto/grpc_service_config/service_config.pb.go
@@ -1,27 +1,56 @@
+// Copyright 2016 The 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.
+
+// A ServiceConfig is supplied when a service is deployed. It mostly contains
+// parameters for how clients that connect to the service should behave (for
+// example, the load balancing policy to use to pick between service replicas).
+//
+// The configuration options provided here act as overrides to automatically
+// chosen option values. Service owners should be conservative in specifying
+// options as the system is likely to choose better values for these options in
+// the vast majority of cases. In other words, please specify a configuration
+// option only if you really have to, and avoid copy-paste inclusion of configs.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: grpc/service_config/service_config.proto
 
 package grpc_service_config
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	duration "github.com/golang/protobuf/ptypes/duration"
 	wrappers "github.com/golang/protobuf/ptypes/wrappers"
 	code "google.golang.org/genproto/googleapis/rpc/code"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Load balancing policy.
 //
@@ -48,26 +77,51 @@
 	ServiceConfig_ROUND_ROBIN ServiceConfig_LoadBalancingPolicy = 1
 )
 
-var ServiceConfig_LoadBalancingPolicy_name = map[int32]string{
-	0: "UNSPECIFIED",
-	1: "ROUND_ROBIN",
-}
+// Enum value maps for ServiceConfig_LoadBalancingPolicy.
+var (
+	ServiceConfig_LoadBalancingPolicy_name = map[int32]string{
+		0: "UNSPECIFIED",
+		1: "ROUND_ROBIN",
+	}
+	ServiceConfig_LoadBalancingPolicy_value = map[string]int32{
+		"UNSPECIFIED": 0,
+		"ROUND_ROBIN": 1,
+	}
+)
 
-var ServiceConfig_LoadBalancingPolicy_value = map[string]int32{
-	"UNSPECIFIED": 0,
-	"ROUND_ROBIN": 1,
+func (x ServiceConfig_LoadBalancingPolicy) Enum() *ServiceConfig_LoadBalancingPolicy {
+	p := new(ServiceConfig_LoadBalancingPolicy)
+	*p = x
+	return p
 }
 
 func (x ServiceConfig_LoadBalancingPolicy) String() string {
-	return proto.EnumName(ServiceConfig_LoadBalancingPolicy_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (ServiceConfig_LoadBalancingPolicy) Descriptor() protoreflect.EnumDescriptor {
+	return file_grpc_service_config_service_config_proto_enumTypes[0].Descriptor()
+}
+
+func (ServiceConfig_LoadBalancingPolicy) Type() protoreflect.EnumType {
+	return &file_grpc_service_config_service_config_proto_enumTypes[0]
+}
+
+func (x ServiceConfig_LoadBalancingPolicy) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ServiceConfig_LoadBalancingPolicy.Descriptor instead.
 func (ServiceConfig_LoadBalancingPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{11, 0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11, 0}
 }
 
 // Configuration for a method.
 type MethodConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Name []*MethodConfig_Name `protobuf:"bytes,1,rep,name=name,proto3" json:"name,omitempty"`
 	// Whether RPCs sent to this method should wait until the connection is
 	// ready by default. If false, the RPC will abort immediately if there is
@@ -125,71 +179,96 @@
 	// Only one of retry_policy or hedging_policy may be set. If neither is set,
 	// RPCs will not be retried or hedged.
 	//
-	// Types that are valid to be assigned to RetryOrHedgingPolicy:
+	// Types that are assignable to RetryOrHedgingPolicy:
 	//	*MethodConfig_RetryPolicy_
 	//	*MethodConfig_HedgingPolicy_
 	RetryOrHedgingPolicy isMethodConfig_RetryOrHedgingPolicy `protobuf_oneof:"retry_or_hedging_policy"`
-	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
-	XXX_unrecognized     []byte                              `json:"-"`
-	XXX_sizecache        int32                               `json:"-"`
 }
 
-func (m *MethodConfig) Reset()         { *m = MethodConfig{} }
-func (m *MethodConfig) String() string { return proto.CompactTextString(m) }
-func (*MethodConfig) ProtoMessage()    {}
+func (x *MethodConfig) Reset() {
+	*x = MethodConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MethodConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MethodConfig) ProtoMessage() {}
+
+func (x *MethodConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MethodConfig.ProtoReflect.Descriptor instead.
 func (*MethodConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *MethodConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MethodConfig.Unmarshal(m, b)
-}
-func (m *MethodConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MethodConfig.Marshal(b, m, deterministic)
-}
-func (m *MethodConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MethodConfig.Merge(m, src)
-}
-func (m *MethodConfig) XXX_Size() int {
-	return xxx_messageInfo_MethodConfig.Size(m)
-}
-func (m *MethodConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_MethodConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MethodConfig proto.InternalMessageInfo
-
-func (m *MethodConfig) GetName() []*MethodConfig_Name {
-	if m != nil {
-		return m.Name
+func (x *MethodConfig) GetName() []*MethodConfig_Name {
+	if x != nil {
+		return x.Name
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetWaitForReady() *wrappers.BoolValue {
-	if m != nil {
-		return m.WaitForReady
+func (x *MethodConfig) GetWaitForReady() *wrappers.BoolValue {
+	if x != nil {
+		return x.WaitForReady
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetTimeout() *duration.Duration {
-	if m != nil {
-		return m.Timeout
+func (x *MethodConfig) GetTimeout() *duration.Duration {
+	if x != nil {
+		return x.Timeout
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetMaxRequestMessageBytes() *wrappers.UInt32Value {
-	if m != nil {
-		return m.MaxRequestMessageBytes
+func (x *MethodConfig) GetMaxRequestMessageBytes() *wrappers.UInt32Value {
+	if x != nil {
+		return x.MaxRequestMessageBytes
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetMaxResponseMessageBytes() *wrappers.UInt32Value {
+func (x *MethodConfig) GetMaxResponseMessageBytes() *wrappers.UInt32Value {
+	if x != nil {
+		return x.MaxResponseMessageBytes
+	}
+	return nil
+}
+
+func (m *MethodConfig) GetRetryOrHedgingPolicy() isMethodConfig_RetryOrHedgingPolicy {
 	if m != nil {
-		return m.MaxResponseMessageBytes
+		return m.RetryOrHedgingPolicy
+	}
+	return nil
+}
+
+func (x *MethodConfig) GetRetryPolicy() *MethodConfig_RetryPolicy {
+	if x, ok := x.GetRetryOrHedgingPolicy().(*MethodConfig_RetryPolicy_); ok {
+		return x.RetryPolicy
+	}
+	return nil
+}
+
+func (x *MethodConfig) GetHedgingPolicy() *MethodConfig_HedgingPolicy {
+	if x, ok := x.GetRetryOrHedgingPolicy().(*MethodConfig_HedgingPolicy_); ok {
+		return x.HedgingPolicy
 	}
 	return nil
 }
@@ -210,33 +289,888 @@
 
 func (*MethodConfig_HedgingPolicy_) isMethodConfig_RetryOrHedgingPolicy() {}
 
-func (m *MethodConfig) GetRetryOrHedgingPolicy() isMethodConfig_RetryOrHedgingPolicy {
+// Configuration for pick_first LB policy.
+type PickFirstConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *PickFirstConfig) Reset() {
+	*x = PickFirstConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PickFirstConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PickFirstConfig) ProtoMessage() {}
+
+func (x *PickFirstConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PickFirstConfig.ProtoReflect.Descriptor instead.
+func (*PickFirstConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{1}
+}
+
+// Configuration for round_robin LB policy.
+type RoundRobinConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+}
+
+func (x *RoundRobinConfig) Reset() {
+	*x = RoundRobinConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *RoundRobinConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*RoundRobinConfig) ProtoMessage() {}
+
+func (x *RoundRobinConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use RoundRobinConfig.ProtoReflect.Descriptor instead.
+func (*RoundRobinConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{2}
+}
+
+// Configuration for priority LB policy.
+type PriorityLoadBalancingPolicyConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Children map[string]*PriorityLoadBalancingPolicyConfig_Child `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	// A list of child names in decreasing priority order
+	// (i.e., first element is the highest priority).
+	Priorities []string `protobuf:"bytes,2,rep,name=priorities,proto3" json:"priorities,omitempty"`
+}
+
+func (x *PriorityLoadBalancingPolicyConfig) Reset() {
+	*x = PriorityLoadBalancingPolicyConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *PriorityLoadBalancingPolicyConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PriorityLoadBalancingPolicyConfig) ProtoMessage() {}
+
+func (x *PriorityLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use PriorityLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
+func (*PriorityLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *PriorityLoadBalancingPolicyConfig) GetChildren() map[string]*PriorityLoadBalancingPolicyConfig_Child {
+	if x != nil {
+		return x.Children
+	}
+	return nil
+}
+
+func (x *PriorityLoadBalancingPolicyConfig) GetPriorities() []string {
+	if x != nil {
+		return x.Priorities
+	}
+	return nil
+}
+
+// Configuration for weighted_target LB policy.
+type WeightedTargetLoadBalancingPolicyConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Targets map[string]*WeightedTargetLoadBalancingPolicyConfig_Target `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+}
+
+func (x *WeightedTargetLoadBalancingPolicyConfig) Reset() {
+	*x = WeightedTargetLoadBalancingPolicyConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *WeightedTargetLoadBalancingPolicyConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*WeightedTargetLoadBalancingPolicyConfig) ProtoMessage() {}
+
+func (x *WeightedTargetLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use WeightedTargetLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
+func (*WeightedTargetLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *WeightedTargetLoadBalancingPolicyConfig) GetTargets() map[string]*WeightedTargetLoadBalancingPolicyConfig_Target {
+	if x != nil {
+		return x.Targets
+	}
+	return nil
+}
+
+// Configuration for grpclb LB policy.
+type GrpcLbConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Optional.  What LB policy to use for routing between the backend
+	// addresses.  If unset, defaults to round_robin.
+	// Currently, the only supported values are round_robin and pick_first.
+	// Note that this will be used both in balancer mode and in fallback mode.
+	// Multiple LB policies can be specified; clients will iterate through
+	// the list in order and stop at the first policy that they support.
+	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
+	// Optional.  If specified, overrides the name of the service to be sent to
+	// the balancer.
+	ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
+}
+
+func (x *GrpcLbConfig) Reset() {
+	*x = GrpcLbConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GrpcLbConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GrpcLbConfig) ProtoMessage() {}
+
+func (x *GrpcLbConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GrpcLbConfig.ProtoReflect.Descriptor instead.
+func (*GrpcLbConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GrpcLbConfig) GetChildPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.ChildPolicy
+	}
+	return nil
+}
+
+func (x *GrpcLbConfig) GetServiceName() string {
+	if x != nil {
+		return x.ServiceName
+	}
+	return ""
+}
+
+// Configuration for the cds LB policy.
+type CdsConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Required.
+}
+
+func (x *CdsConfig) Reset() {
+	*x = CdsConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *CdsConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CdsConfig) ProtoMessage() {}
+
+func (x *CdsConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use CdsConfig.ProtoReflect.Descriptor instead.
+func (*CdsConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{6}
+}
+
+func (x *CdsConfig) GetCluster() string {
+	if x != nil {
+		return x.Cluster
+	}
+	return ""
+}
+
+// Configuration for xds LB policy.
+type XdsConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Name of balancer to connect to.
+	//
+	// Deprecated: Do not use.
+	BalancerName string `protobuf:"bytes,1,opt,name=balancer_name,json=balancerName,proto3" json:"balancer_name,omitempty"`
+	// Optional.  What LB policy to use for intra-locality routing.
+	// If unset, will use whatever algorithm is specified by the balancer.
+	// Multiple LB policies can be specified; clients will iterate through
+	// the list in order and stop at the first policy that they support.
+	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
+	// Optional.  What LB policy to use in fallback mode.  If not
+	// specified, defaults to round_robin.
+	// Multiple LB policies can be specified; clients will iterate through
+	// the list in order and stop at the first policy that they support.
+	FallbackPolicy []*LoadBalancingConfig `protobuf:"bytes,3,rep,name=fallback_policy,json=fallbackPolicy,proto3" json:"fallback_policy,omitempty"`
+	// Optional.  Name to use in EDS query.  If not present, defaults to
+	// the server name from the target URI.
+	EdsServiceName string `protobuf:"bytes,4,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
+	// LRS server to send load reports to.
+	// If not present, load reporting will be disabled.
+	// If set to the empty string, load reporting will be sent to the same
+	// server that we obtained CDS data from.
+	LrsLoadReportingServerName *wrappers.StringValue `protobuf:"bytes,5,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
+}
+
+func (x *XdsConfig) Reset() {
+	*x = XdsConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *XdsConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*XdsConfig) ProtoMessage() {}
+
+func (x *XdsConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use XdsConfig.ProtoReflect.Descriptor instead.
+func (*XdsConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{7}
+}
+
+// Deprecated: Do not use.
+func (x *XdsConfig) GetBalancerName() string {
+	if x != nil {
+		return x.BalancerName
+	}
+	return ""
+}
+
+func (x *XdsConfig) GetChildPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.ChildPolicy
+	}
+	return nil
+}
+
+func (x *XdsConfig) GetFallbackPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.FallbackPolicy
+	}
+	return nil
+}
+
+func (x *XdsConfig) GetEdsServiceName() string {
+	if x != nil {
+		return x.EdsServiceName
+	}
+	return ""
+}
+
+func (x *XdsConfig) GetLrsLoadReportingServerName() *wrappers.StringValue {
+	if x != nil {
+		return x.LrsLoadReportingServerName
+	}
+	return nil
+}
+
+// Configuration for eds LB policy.
+type EdsLoadBalancingPolicyConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Cluster name.  Required.
+	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+	// EDS service name, as returned in CDS.
+	// May be unset if not specified in CDS.
+	EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
+	// Server to send load reports to.
+	// If unset, no load reporting is done.
+	// If set to empty string, load reporting will be sent to the same
+	// server as we are getting xds data from.
+	LrsLoadReportingServerName *wrappers.StringValue `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
+	// Locality-picking policy.
+	// This policy's config is expected to be in the format used
+	// by the weighted_target policy.  Note that the config should include
+	// an empty value for the "targets" field; that empty value will be
+	// replaced by one that is dynamically generated based on the EDS data.
+	// Optional; defaults to "weighted_target".
+	LocalityPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=locality_picking_policy,json=localityPickingPolicy,proto3" json:"locality_picking_policy,omitempty"`
+	// Endpoint-picking policy.
+	// This will be configured as the policy for each child in the
+	// locality-policy's config.
+	// Optional; defaults to "round_robin".
+	EndpointPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=endpoint_picking_policy,json=endpointPickingPolicy,proto3" json:"endpoint_picking_policy,omitempty"`
+}
+
+func (x *EdsLoadBalancingPolicyConfig) Reset() {
+	*x = EdsLoadBalancingPolicyConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EdsLoadBalancingPolicyConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EdsLoadBalancingPolicyConfig) ProtoMessage() {}
+
+func (x *EdsLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EdsLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
+func (*EdsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *EdsLoadBalancingPolicyConfig) GetCluster() string {
+	if x != nil {
+		return x.Cluster
+	}
+	return ""
+}
+
+func (x *EdsLoadBalancingPolicyConfig) GetEdsServiceName() string {
+	if x != nil {
+		return x.EdsServiceName
+	}
+	return ""
+}
+
+func (x *EdsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() *wrappers.StringValue {
+	if x != nil {
+		return x.LrsLoadReportingServerName
+	}
+	return nil
+}
+
+func (x *EdsLoadBalancingPolicyConfig) GetLocalityPickingPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.LocalityPickingPolicy
+	}
+	return nil
+}
+
+func (x *EdsLoadBalancingPolicyConfig) GetEndpointPickingPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.EndpointPickingPolicy
+	}
+	return nil
+}
+
+// Configuration for lrs LB policy.
+type LrsLoadBalancingPolicyConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Cluster name.  Required.
+	ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
+	// EDS service name, as returned in CDS.
+	// May be unset if not specified in CDS.
+	EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
+	// Server to send load reports to.  Required.
+	// If set to empty string, load reporting will be sent to the same
+	// server as we are getting xds data from.
+	LrsLoadReportingServerName string                                 `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
+	Locality                   *LrsLoadBalancingPolicyConfig_Locality `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"`
+	// Endpoint-picking policy.
+	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
+}
+
+func (x *LrsLoadBalancingPolicyConfig) Reset() {
+	*x = LrsLoadBalancingPolicyConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LrsLoadBalancingPolicyConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LrsLoadBalancingPolicyConfig) ProtoMessage() {}
+
+func (x *LrsLoadBalancingPolicyConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LrsLoadBalancingPolicyConfig.ProtoReflect.Descriptor instead.
+func (*LrsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *LrsLoadBalancingPolicyConfig) GetClusterName() string {
+	if x != nil {
+		return x.ClusterName
+	}
+	return ""
+}
+
+func (x *LrsLoadBalancingPolicyConfig) GetEdsServiceName() string {
+	if x != nil {
+		return x.EdsServiceName
+	}
+	return ""
+}
+
+func (x *LrsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() string {
+	if x != nil {
+		return x.LrsLoadReportingServerName
+	}
+	return ""
+}
+
+func (x *LrsLoadBalancingPolicyConfig) GetLocality() *LrsLoadBalancingPolicyConfig_Locality {
+	if x != nil {
+		return x.Locality
+	}
+	return nil
+}
+
+func (x *LrsLoadBalancingPolicyConfig) GetChildPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.ChildPolicy
+	}
+	return nil
+}
+
+// Selects LB policy and provides corresponding configuration.
+//
+// In general, all instances of this field should be repeated. Clients will
+// iterate through the list in order and stop at the first policy that they
+// support.  This allows the service config to specify custom policies that may
+// not be known to all clients.
+//
+// - If the config for the first supported policy is invalid, the whole service
+//   config is invalid.
+// - If the list doesn't contain any supported policy, the whole service config
+//   is invalid.
+type LoadBalancingConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Exactly one LB policy may be configured.
+	//
+	// Types that are assignable to Policy:
+	//	*LoadBalancingConfig_PickFirst
+	//	*LoadBalancingConfig_RoundRobin
+	//	*LoadBalancingConfig_Grpclb
+	//	*LoadBalancingConfig_Priority
+	//	*LoadBalancingConfig_WeightedTarget
+	//	*LoadBalancingConfig_Cds
+	//	*LoadBalancingConfig_Eds
+	//	*LoadBalancingConfig_Lrs
+	//	*LoadBalancingConfig_Xds
+	//	*LoadBalancingConfig_XdsExperimental
+	Policy isLoadBalancingConfig_Policy `protobuf_oneof:"policy"`
+}
+
+func (x *LoadBalancingConfig) Reset() {
+	*x = LoadBalancingConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalancingConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancingConfig) ProtoMessage() {}
+
+func (x *LoadBalancingConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancingConfig.ProtoReflect.Descriptor instead.
+func (*LoadBalancingConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{10}
+}
+
+func (m *LoadBalancingConfig) GetPolicy() isLoadBalancingConfig_Policy {
 	if m != nil {
-		return m.RetryOrHedgingPolicy
+		return m.Policy
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetRetryPolicy() *MethodConfig_RetryPolicy {
-	if x, ok := m.GetRetryOrHedgingPolicy().(*MethodConfig_RetryPolicy_); ok {
-		return x.RetryPolicy
+func (x *LoadBalancingConfig) GetPickFirst() *PickFirstConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_PickFirst); ok {
+		return x.PickFirst
 	}
 	return nil
 }
 
-func (m *MethodConfig) GetHedgingPolicy() *MethodConfig_HedgingPolicy {
-	if x, ok := m.GetRetryOrHedgingPolicy().(*MethodConfig_HedgingPolicy_); ok {
-		return x.HedgingPolicy
+func (x *LoadBalancingConfig) GetRoundRobin() *RoundRobinConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_RoundRobin); ok {
+		return x.RoundRobin
 	}
 	return nil
 }
 
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*MethodConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*MethodConfig_RetryPolicy_)(nil),
-		(*MethodConfig_HedgingPolicy_)(nil),
+func (x *LoadBalancingConfig) GetGrpclb() *GrpcLbConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Grpclb); ok {
+		return x.Grpclb
 	}
+	return nil
+}
+
+func (x *LoadBalancingConfig) GetPriority() *PriorityLoadBalancingPolicyConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Priority); ok {
+		return x.Priority
+	}
+	return nil
+}
+
+func (x *LoadBalancingConfig) GetWeightedTarget() *WeightedTargetLoadBalancingPolicyConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_WeightedTarget); ok {
+		return x.WeightedTarget
+	}
+	return nil
+}
+
+func (x *LoadBalancingConfig) GetCds() *CdsConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Cds); ok {
+		return x.Cds
+	}
+	return nil
+}
+
+func (x *LoadBalancingConfig) GetEds() *EdsLoadBalancingPolicyConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Eds); ok {
+		return x.Eds
+	}
+	return nil
+}
+
+func (x *LoadBalancingConfig) GetLrs() *LrsLoadBalancingPolicyConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Lrs); ok {
+		return x.Lrs
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *LoadBalancingConfig) GetXds() *XdsConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_Xds); ok {
+		return x.Xds
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (x *LoadBalancingConfig) GetXdsExperimental() *XdsConfig {
+	if x, ok := x.GetPolicy().(*LoadBalancingConfig_XdsExperimental); ok {
+		return x.XdsExperimental
+	}
+	return nil
+}
+
+type isLoadBalancingConfig_Policy interface {
+	isLoadBalancingConfig_Policy()
+}
+
+type LoadBalancingConfig_PickFirst struct {
+	PickFirst *PickFirstConfig `protobuf:"bytes,4,opt,name=pick_first,proto3,oneof"`
+}
+
+type LoadBalancingConfig_RoundRobin struct {
+	RoundRobin *RoundRobinConfig `protobuf:"bytes,1,opt,name=round_robin,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Grpclb struct {
+	// gRPC lookaside load balancing.
+	// This will eventually be deprecated by the new xDS-based local
+	// balancing policy.
+	Grpclb *GrpcLbConfig `protobuf:"bytes,3,opt,name=grpclb,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Priority struct {
+	Priority *PriorityLoadBalancingPolicyConfig `protobuf:"bytes,9,opt,name=priority,proto3,oneof"`
+}
+
+type LoadBalancingConfig_WeightedTarget struct {
+	WeightedTarget *WeightedTargetLoadBalancingPolicyConfig `protobuf:"bytes,10,opt,name=weighted_target,json=weightedTarget,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Cds struct {
+	// EXPERIMENTAL -- DO NOT USE
+	// xDS-based load balancing.
+	// The policy is known as xds_experimental while it is under development.
+	// It will be renamed to xds once it is ready for public use.
+	Cds *CdsConfig `protobuf:"bytes,6,opt,name=cds,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Eds struct {
+	Eds *EdsLoadBalancingPolicyConfig `protobuf:"bytes,7,opt,name=eds,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Lrs struct {
+	Lrs *LrsLoadBalancingPolicyConfig `protobuf:"bytes,8,opt,name=lrs,proto3,oneof"`
+}
+
+type LoadBalancingConfig_Xds struct {
+	// Deprecated: Do not use.
+	Xds *XdsConfig `protobuf:"bytes,2,opt,name=xds,proto3,oneof"`
+}
+
+type LoadBalancingConfig_XdsExperimental struct {
+	// TODO(rekarthik): Deprecate this field after the xds policy
+	// is ready for public use.
+	//
+	// Deprecated: Do not use.
+	XdsExperimental *XdsConfig `protobuf:"bytes,5,opt,name=xds_experimental,proto3,oneof"`
+}
+
+func (*LoadBalancingConfig_PickFirst) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_RoundRobin) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Grpclb) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Priority) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_WeightedTarget) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Cds) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Eds) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Lrs) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_Xds) isLoadBalancingConfig_Policy() {}
+
+func (*LoadBalancingConfig_XdsExperimental) isLoadBalancingConfig_Policy() {}
+
+// A ServiceConfig represents information about a service but is not specific to
+// any name resolver.
+type ServiceConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// Deprecated: Do not use.
+	LoadBalancingPolicy ServiceConfig_LoadBalancingPolicy `protobuf:"varint,1,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3,enum=grpc.service_config.ServiceConfig_LoadBalancingPolicy" json:"load_balancing_policy,omitempty"`
+	// Multiple LB policies can be specified; clients will iterate through
+	// the list in order and stop at the first policy that they support. If none
+	// are supported, the service config is considered invalid.
+	LoadBalancingConfig []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=load_balancing_config,json=loadBalancingConfig,proto3" json:"load_balancing_config,omitempty"`
+	// Per-method configuration.
+	MethodConfig      []*MethodConfig                      `protobuf:"bytes,2,rep,name=method_config,json=methodConfig,proto3" json:"method_config,omitempty"`
+	RetryThrottling   *ServiceConfig_RetryThrottlingPolicy `protobuf:"bytes,3,opt,name=retry_throttling,json=retryThrottling,proto3" json:"retry_throttling,omitempty"`
+	HealthCheckConfig *ServiceConfig_HealthCheckConfig     `protobuf:"bytes,5,opt,name=health_check_config,json=healthCheckConfig,proto3" json:"health_check_config,omitempty"`
+}
+
+func (x *ServiceConfig) Reset() {
+	*x = ServiceConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServiceConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServiceConfig) ProtoMessage() {}
+
+func (x *ServiceConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServiceConfig.ProtoReflect.Descriptor instead.
+func (*ServiceConfig) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11}
+}
+
+// Deprecated: Do not use.
+func (x *ServiceConfig) GetLoadBalancingPolicy() ServiceConfig_LoadBalancingPolicy {
+	if x != nil {
+		return x.LoadBalancingPolicy
+	}
+	return ServiceConfig_UNSPECIFIED
+}
+
+func (x *ServiceConfig) GetLoadBalancingConfig() []*LoadBalancingConfig {
+	if x != nil {
+		return x.LoadBalancingConfig
+	}
+	return nil
+}
+
+func (x *ServiceConfig) GetMethodConfig() []*MethodConfig {
+	if x != nil {
+		return x.MethodConfig
+	}
+	return nil
+}
+
+func (x *ServiceConfig) GetRetryThrottling() *ServiceConfig_RetryThrottlingPolicy {
+	if x != nil {
+		return x.RetryThrottling
+	}
+	return nil
+}
+
+func (x *ServiceConfig) GetHealthCheckConfig() *ServiceConfig_HealthCheckConfig {
+	if x != nil {
+		return x.HealthCheckConfig
+	}
+	return nil
 }
 
 // The names of the methods to which this configuration applies.
@@ -267,54 +1201,66 @@
 // - { "service": "s", "method": null }
 // - { "service": "s", "method": "" }
 type MethodConfig_Name struct {
-	Service              string   `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"`
-	Method               string   `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` // Required. Includes proto package name.
+	Method  string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"`
 }
 
-func (m *MethodConfig_Name) Reset()         { *m = MethodConfig_Name{} }
-func (m *MethodConfig_Name) String() string { return proto.CompactTextString(m) }
-func (*MethodConfig_Name) ProtoMessage()    {}
+func (x *MethodConfig_Name) Reset() {
+	*x = MethodConfig_Name{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MethodConfig_Name) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MethodConfig_Name) ProtoMessage() {}
+
+func (x *MethodConfig_Name) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MethodConfig_Name.ProtoReflect.Descriptor instead.
 func (*MethodConfig_Name) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{0, 0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 0}
 }
 
-func (m *MethodConfig_Name) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MethodConfig_Name.Unmarshal(m, b)
-}
-func (m *MethodConfig_Name) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MethodConfig_Name.Marshal(b, m, deterministic)
-}
-func (m *MethodConfig_Name) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MethodConfig_Name.Merge(m, src)
-}
-func (m *MethodConfig_Name) XXX_Size() int {
-	return xxx_messageInfo_MethodConfig_Name.Size(m)
-}
-func (m *MethodConfig_Name) XXX_DiscardUnknown() {
-	xxx_messageInfo_MethodConfig_Name.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MethodConfig_Name proto.InternalMessageInfo
-
-func (m *MethodConfig_Name) GetService() string {
-	if m != nil {
-		return m.Service
+func (x *MethodConfig_Name) GetService() string {
+	if x != nil {
+		return x.Service
 	}
 	return ""
 }
 
-func (m *MethodConfig_Name) GetMethod() string {
-	if m != nil {
-		return m.Method
+func (x *MethodConfig_Name) GetMethod() string {
+	if x != nil {
+		return x.Method
 	}
 	return ""
 }
 
 // The retry policy for outgoing RPCs.
 type MethodConfig_RetryPolicy struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The maximum number of RPC attempts, including the original attempt.
 	//
 	// This field is required and must be greater than 1.
@@ -328,72 +1274,76 @@
 	InitialBackoff *duration.Duration `protobuf:"bytes,2,opt,name=initial_backoff,json=initialBackoff,proto3" json:"initial_backoff,omitempty"`
 	// Required. Must be greater than zero.
 	MaxBackoff        *duration.Duration `protobuf:"bytes,3,opt,name=max_backoff,json=maxBackoff,proto3" json:"max_backoff,omitempty"`
-	BackoffMultiplier float32            `protobuf:"fixed32,4,opt,name=backoff_multiplier,json=backoffMultiplier,proto3" json:"backoff_multiplier,omitempty"`
+	BackoffMultiplier float32            `protobuf:"fixed32,4,opt,name=backoff_multiplier,json=backoffMultiplier,proto3" json:"backoff_multiplier,omitempty"` // Required. Must be greater than zero.
 	// The set of status codes which may be retried.
 	//
 	// This field is required and must be non-empty.
 	RetryableStatusCodes []code.Code `protobuf:"varint,5,rep,packed,name=retryable_status_codes,json=retryableStatusCodes,proto3,enum=google.rpc.Code" json:"retryable_status_codes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
 }
 
-func (m *MethodConfig_RetryPolicy) Reset()         { *m = MethodConfig_RetryPolicy{} }
-func (m *MethodConfig_RetryPolicy) String() string { return proto.CompactTextString(m) }
-func (*MethodConfig_RetryPolicy) ProtoMessage()    {}
+func (x *MethodConfig_RetryPolicy) Reset() {
+	*x = MethodConfig_RetryPolicy{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[13]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MethodConfig_RetryPolicy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MethodConfig_RetryPolicy) ProtoMessage() {}
+
+func (x *MethodConfig_RetryPolicy) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[13]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MethodConfig_RetryPolicy.ProtoReflect.Descriptor instead.
 func (*MethodConfig_RetryPolicy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{0, 1}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 1}
 }
 
-func (m *MethodConfig_RetryPolicy) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MethodConfig_RetryPolicy.Unmarshal(m, b)
-}
-func (m *MethodConfig_RetryPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MethodConfig_RetryPolicy.Marshal(b, m, deterministic)
-}
-func (m *MethodConfig_RetryPolicy) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MethodConfig_RetryPolicy.Merge(m, src)
-}
-func (m *MethodConfig_RetryPolicy) XXX_Size() int {
-	return xxx_messageInfo_MethodConfig_RetryPolicy.Size(m)
-}
-func (m *MethodConfig_RetryPolicy) XXX_DiscardUnknown() {
-	xxx_messageInfo_MethodConfig_RetryPolicy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MethodConfig_RetryPolicy proto.InternalMessageInfo
-
-func (m *MethodConfig_RetryPolicy) GetMaxAttempts() uint32 {
-	if m != nil {
-		return m.MaxAttempts
+func (x *MethodConfig_RetryPolicy) GetMaxAttempts() uint32 {
+	if x != nil {
+		return x.MaxAttempts
 	}
 	return 0
 }
 
-func (m *MethodConfig_RetryPolicy) GetInitialBackoff() *duration.Duration {
-	if m != nil {
-		return m.InitialBackoff
+func (x *MethodConfig_RetryPolicy) GetInitialBackoff() *duration.Duration {
+	if x != nil {
+		return x.InitialBackoff
 	}
 	return nil
 }
 
-func (m *MethodConfig_RetryPolicy) GetMaxBackoff() *duration.Duration {
-	if m != nil {
-		return m.MaxBackoff
+func (x *MethodConfig_RetryPolicy) GetMaxBackoff() *duration.Duration {
+	if x != nil {
+		return x.MaxBackoff
 	}
 	return nil
 }
 
-func (m *MethodConfig_RetryPolicy) GetBackoffMultiplier() float32 {
-	if m != nil {
-		return m.BackoffMultiplier
+func (x *MethodConfig_RetryPolicy) GetBackoffMultiplier() float32 {
+	if x != nil {
+		return x.BackoffMultiplier
 	}
 	return 0
 }
 
-func (m *MethodConfig_RetryPolicy) GetRetryableStatusCodes() []code.Code {
-	if m != nil {
-		return m.RetryableStatusCodes
+func (x *MethodConfig_RetryPolicy) GetRetryableStatusCodes() []code.Code {
+	if x != nil {
+		return x.RetryableStatusCodes
 	}
 	return nil
 }
@@ -402,6 +1352,10 @@
 // once on the server, so only idempotent methods should specify a hedging
 // policy.
 type MethodConfig_HedgingPolicy struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The hedging policy will send up to max_requests RPCs.
 	// This number represents the total number of all attempts, including
 	// the original attempt.
@@ -419,168 +1373,58 @@
 	// the error returned to the client application layer.
 	//
 	// This field is optional.
-	NonFatalStatusCodes  []code.Code `protobuf:"varint,3,rep,packed,name=non_fatal_status_codes,json=nonFatalStatusCodes,proto3,enum=google.rpc.Code" json:"non_fatal_status_codes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	NonFatalStatusCodes []code.Code `protobuf:"varint,3,rep,packed,name=non_fatal_status_codes,json=nonFatalStatusCodes,proto3,enum=google.rpc.Code" json:"non_fatal_status_codes,omitempty"`
 }
 
-func (m *MethodConfig_HedgingPolicy) Reset()         { *m = MethodConfig_HedgingPolicy{} }
-func (m *MethodConfig_HedgingPolicy) String() string { return proto.CompactTextString(m) }
-func (*MethodConfig_HedgingPolicy) ProtoMessage()    {}
+func (x *MethodConfig_HedgingPolicy) Reset() {
+	*x = MethodConfig_HedgingPolicy{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[14]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *MethodConfig_HedgingPolicy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MethodConfig_HedgingPolicy) ProtoMessage() {}
+
+func (x *MethodConfig_HedgingPolicy) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[14]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use MethodConfig_HedgingPolicy.ProtoReflect.Descriptor instead.
 func (*MethodConfig_HedgingPolicy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{0, 2}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{0, 2}
 }
 
-func (m *MethodConfig_HedgingPolicy) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MethodConfig_HedgingPolicy.Unmarshal(m, b)
-}
-func (m *MethodConfig_HedgingPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MethodConfig_HedgingPolicy.Marshal(b, m, deterministic)
-}
-func (m *MethodConfig_HedgingPolicy) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MethodConfig_HedgingPolicy.Merge(m, src)
-}
-func (m *MethodConfig_HedgingPolicy) XXX_Size() int {
-	return xxx_messageInfo_MethodConfig_HedgingPolicy.Size(m)
-}
-func (m *MethodConfig_HedgingPolicy) XXX_DiscardUnknown() {
-	xxx_messageInfo_MethodConfig_HedgingPolicy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MethodConfig_HedgingPolicy proto.InternalMessageInfo
-
-func (m *MethodConfig_HedgingPolicy) GetMaxAttempts() uint32 {
-	if m != nil {
-		return m.MaxAttempts
+func (x *MethodConfig_HedgingPolicy) GetMaxAttempts() uint32 {
+	if x != nil {
+		return x.MaxAttempts
 	}
 	return 0
 }
 
-func (m *MethodConfig_HedgingPolicy) GetHedgingDelay() *duration.Duration {
-	if m != nil {
-		return m.HedgingDelay
+func (x *MethodConfig_HedgingPolicy) GetHedgingDelay() *duration.Duration {
+	if x != nil {
+		return x.HedgingDelay
 	}
 	return nil
 }
 
-func (m *MethodConfig_HedgingPolicy) GetNonFatalStatusCodes() []code.Code {
-	if m != nil {
-		return m.NonFatalStatusCodes
-	}
-	return nil
-}
-
-// Configuration for pick_first LB policy.
-type PickFirstConfig struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *PickFirstConfig) Reset()         { *m = PickFirstConfig{} }
-func (m *PickFirstConfig) String() string { return proto.CompactTextString(m) }
-func (*PickFirstConfig) ProtoMessage()    {}
-func (*PickFirstConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{1}
-}
-
-func (m *PickFirstConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PickFirstConfig.Unmarshal(m, b)
-}
-func (m *PickFirstConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PickFirstConfig.Marshal(b, m, deterministic)
-}
-func (m *PickFirstConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PickFirstConfig.Merge(m, src)
-}
-func (m *PickFirstConfig) XXX_Size() int {
-	return xxx_messageInfo_PickFirstConfig.Size(m)
-}
-func (m *PickFirstConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PickFirstConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PickFirstConfig proto.InternalMessageInfo
-
-// Configuration for round_robin LB policy.
-type RoundRobinConfig struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *RoundRobinConfig) Reset()         { *m = RoundRobinConfig{} }
-func (m *RoundRobinConfig) String() string { return proto.CompactTextString(m) }
-func (*RoundRobinConfig) ProtoMessage()    {}
-func (*RoundRobinConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{2}
-}
-
-func (m *RoundRobinConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_RoundRobinConfig.Unmarshal(m, b)
-}
-func (m *RoundRobinConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_RoundRobinConfig.Marshal(b, m, deterministic)
-}
-func (m *RoundRobinConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RoundRobinConfig.Merge(m, src)
-}
-func (m *RoundRobinConfig) XXX_Size() int {
-	return xxx_messageInfo_RoundRobinConfig.Size(m)
-}
-func (m *RoundRobinConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_RoundRobinConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_RoundRobinConfig proto.InternalMessageInfo
-
-// Configuration for priority LB policy.
-type PriorityLoadBalancingPolicyConfig struct {
-	Children map[string]*PriorityLoadBalancingPolicyConfig_Child `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	// A list of child names in decreasing priority order
-	// (i.e., first element is the highest priority).
-	Priorities           []string `protobuf:"bytes,2,rep,name=priorities,proto3" json:"priorities,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *PriorityLoadBalancingPolicyConfig) Reset()         { *m = PriorityLoadBalancingPolicyConfig{} }
-func (m *PriorityLoadBalancingPolicyConfig) String() string { return proto.CompactTextString(m) }
-func (*PriorityLoadBalancingPolicyConfig) ProtoMessage()    {}
-func (*PriorityLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{3}
-}
-
-func (m *PriorityLoadBalancingPolicyConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig.Unmarshal(m, b)
-}
-func (m *PriorityLoadBalancingPolicyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig.Marshal(b, m, deterministic)
-}
-func (m *PriorityLoadBalancingPolicyConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PriorityLoadBalancingPolicyConfig.Merge(m, src)
-}
-func (m *PriorityLoadBalancingPolicyConfig) XXX_Size() int {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig.Size(m)
-}
-func (m *PriorityLoadBalancingPolicyConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_PriorityLoadBalancingPolicyConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PriorityLoadBalancingPolicyConfig proto.InternalMessageInfo
-
-func (m *PriorityLoadBalancingPolicyConfig) GetChildren() map[string]*PriorityLoadBalancingPolicyConfig_Child {
-	if m != nil {
-		return m.Children
-	}
-	return nil
-}
-
-func (m *PriorityLoadBalancingPolicyConfig) GetPriorities() []string {
-	if m != nil {
-		return m.Priorities
+func (x *MethodConfig_HedgingPolicy) GetNonFatalStatusCodes() []code.Code {
+	if x != nil {
+		return x.NonFatalStatusCodes
 	}
 	return nil
 }
@@ -590,840 +1434,171 @@
 // existing child policies instead of creating new ones every
 // time it receives a config update.
 type PriorityLoadBalancingPolicyConfig_Child struct {
-	Config               []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Config []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty"`
 }
 
-func (m *PriorityLoadBalancingPolicyConfig_Child) Reset() {
-	*m = PriorityLoadBalancingPolicyConfig_Child{}
-}
-func (m *PriorityLoadBalancingPolicyConfig_Child) String() string { return proto.CompactTextString(m) }
-func (*PriorityLoadBalancingPolicyConfig_Child) ProtoMessage()    {}
-func (*PriorityLoadBalancingPolicyConfig_Child) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{3, 0}
-}
-
-func (m *PriorityLoadBalancingPolicyConfig_Child) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child.Unmarshal(m, b)
-}
-func (m *PriorityLoadBalancingPolicyConfig_Child) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child.Marshal(b, m, deterministic)
-}
-func (m *PriorityLoadBalancingPolicyConfig_Child) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child.Merge(m, src)
-}
-func (m *PriorityLoadBalancingPolicyConfig_Child) XXX_Size() int {
-	return xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child.Size(m)
-}
-func (m *PriorityLoadBalancingPolicyConfig_Child) XXX_DiscardUnknown() {
-	xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PriorityLoadBalancingPolicyConfig_Child proto.InternalMessageInfo
-
-func (m *PriorityLoadBalancingPolicyConfig_Child) GetConfig() []*LoadBalancingConfig {
-	if m != nil {
-		return m.Config
+func (x *PriorityLoadBalancingPolicyConfig_Child) Reset() {
+	*x = PriorityLoadBalancingPolicyConfig_Child{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[15]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
 	}
-	return nil
 }
 
-// Configuration for weighted_target LB policy.
-type WeightedTargetLoadBalancingPolicyConfig struct {
-	Targets              map[string]*WeightedTargetLoadBalancingPolicyConfig_Target `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,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 (x *PriorityLoadBalancingPolicyConfig_Child) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
 
-func (m *WeightedTargetLoadBalancingPolicyConfig) Reset() {
-	*m = WeightedTargetLoadBalancingPolicyConfig{}
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig) String() string { return proto.CompactTextString(m) }
-func (*WeightedTargetLoadBalancingPolicyConfig) ProtoMessage()    {}
-func (*WeightedTargetLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{4}
+func (*PriorityLoadBalancingPolicyConfig_Child) ProtoMessage() {}
+
+func (x *PriorityLoadBalancingPolicyConfig_Child) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[15]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
 }
 
-func (m *WeightedTargetLoadBalancingPolicyConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig.Unmarshal(m, b)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig.Marshal(b, m, deterministic)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig.Merge(m, src)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig) XXX_Size() int {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig.Size(m)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig.DiscardUnknown(m)
+// Deprecated: Use PriorityLoadBalancingPolicyConfig_Child.ProtoReflect.Descriptor instead.
+func (*PriorityLoadBalancingPolicyConfig_Child) Descriptor() ([]byte, []int) {
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{3, 0}
 }
 
-var xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig proto.InternalMessageInfo
-
-func (m *WeightedTargetLoadBalancingPolicyConfig) GetTargets() map[string]*WeightedTargetLoadBalancingPolicyConfig_Target {
-	if m != nil {
-		return m.Targets
+func (x *PriorityLoadBalancingPolicyConfig_Child) GetConfig() []*LoadBalancingConfig {
+	if x != nil {
+		return x.Config
 	}
 	return nil
 }
 
 type WeightedTargetLoadBalancingPolicyConfig_Target struct {
-	Weight               uint32                 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
-	ChildPolicy          []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Weight      uint32                 `protobuf:"varint,1,opt,name=weight,proto3" json:"weight,omitempty"`
+	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
 }
 
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) Reset() {
-	*m = WeightedTargetLoadBalancingPolicyConfig_Target{}
+func (x *WeightedTargetLoadBalancingPolicyConfig_Target) Reset() {
+	*x = WeightedTargetLoadBalancingPolicyConfig_Target{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[17]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) String() string {
-	return proto.CompactTextString(m)
+
+func (x *WeightedTargetLoadBalancingPolicyConfig_Target) String() string {
+	return protoimpl.X.MessageStringOf(x)
 }
+
 func (*WeightedTargetLoadBalancingPolicyConfig_Target) ProtoMessage() {}
+
+func (x *WeightedTargetLoadBalancingPolicyConfig_Target) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[17]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use WeightedTargetLoadBalancingPolicyConfig_Target.ProtoReflect.Descriptor instead.
 func (*WeightedTargetLoadBalancingPolicyConfig_Target) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{4, 0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{4, 0}
 }
 
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target.Unmarshal(m, b)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target.Marshal(b, m, deterministic)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target.Merge(m, src)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) XXX_Size() int {
-	return xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target.Size(m)
-}
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) XXX_DiscardUnknown() {
-	xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_WeightedTargetLoadBalancingPolicyConfig_Target proto.InternalMessageInfo
-
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) GetWeight() uint32 {
-	if m != nil {
-		return m.Weight
+func (x *WeightedTargetLoadBalancingPolicyConfig_Target) GetWeight() uint32 {
+	if x != nil {
+		return x.Weight
 	}
 	return 0
 }
 
-func (m *WeightedTargetLoadBalancingPolicyConfig_Target) GetChildPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.ChildPolicy
-	}
-	return nil
-}
-
-// Configuration for grpclb LB policy.
-type GrpcLbConfig struct {
-	// Optional.  What LB policy to use for routing between the backend
-	// addresses.  If unset, defaults to round_robin.
-	// Currently, the only supported values are round_robin and pick_first.
-	// Note that this will be used both in balancer mode and in fallback mode.
-	// Multiple LB policies can be specified; clients will iterate through
-	// the list in order and stop at the first policy that they support.
-	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,1,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-	// Optional.  If specified, overrides the name of the service to be sent to
-	// the balancer.
-	ServiceName          string   `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *GrpcLbConfig) Reset()         { *m = GrpcLbConfig{} }
-func (m *GrpcLbConfig) String() string { return proto.CompactTextString(m) }
-func (*GrpcLbConfig) ProtoMessage()    {}
-func (*GrpcLbConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{5}
-}
-
-func (m *GrpcLbConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GrpcLbConfig.Unmarshal(m, b)
-}
-func (m *GrpcLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GrpcLbConfig.Marshal(b, m, deterministic)
-}
-func (m *GrpcLbConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GrpcLbConfig.Merge(m, src)
-}
-func (m *GrpcLbConfig) XXX_Size() int {
-	return xxx_messageInfo_GrpcLbConfig.Size(m)
-}
-func (m *GrpcLbConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_GrpcLbConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GrpcLbConfig proto.InternalMessageInfo
-
-func (m *GrpcLbConfig) GetChildPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.ChildPolicy
-	}
-	return nil
-}
-
-func (m *GrpcLbConfig) GetServiceName() string {
-	if m != nil {
-		return m.ServiceName
-	}
-	return ""
-}
-
-// Configuration for the cds LB policy.
-type CdsConfig struct {
-	Cluster              string   `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *CdsConfig) Reset()         { *m = CdsConfig{} }
-func (m *CdsConfig) String() string { return proto.CompactTextString(m) }
-func (*CdsConfig) ProtoMessage()    {}
-func (*CdsConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{6}
-}
-
-func (m *CdsConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_CdsConfig.Unmarshal(m, b)
-}
-func (m *CdsConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_CdsConfig.Marshal(b, m, deterministic)
-}
-func (m *CdsConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CdsConfig.Merge(m, src)
-}
-func (m *CdsConfig) XXX_Size() int {
-	return xxx_messageInfo_CdsConfig.Size(m)
-}
-func (m *CdsConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_CdsConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CdsConfig proto.InternalMessageInfo
-
-func (m *CdsConfig) GetCluster() string {
-	if m != nil {
-		return m.Cluster
-	}
-	return ""
-}
-
-// Configuration for xds LB policy.
-type XdsConfig struct {
-	// Name of balancer to connect to.
-	BalancerName string `protobuf:"bytes,1,opt,name=balancer_name,json=balancerName,proto3" json:"balancer_name,omitempty"` // Deprecated: Do not use.
-	// Optional.  What LB policy to use for intra-locality routing.
-	// If unset, will use whatever algorithm is specified by the balancer.
-	// Multiple LB policies can be specified; clients will iterate through
-	// the list in order and stop at the first policy that they support.
-	ChildPolicy []*LoadBalancingConfig `protobuf:"bytes,2,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-	// Optional.  What LB policy to use in fallback mode.  If not
-	// specified, defaults to round_robin.
-	// Multiple LB policies can be specified; clients will iterate through
-	// the list in order and stop at the first policy that they support.
-	FallbackPolicy []*LoadBalancingConfig `protobuf:"bytes,3,rep,name=fallback_policy,json=fallbackPolicy,proto3" json:"fallback_policy,omitempty"`
-	// Optional.  Name to use in EDS query.  If not present, defaults to
-	// the server name from the target URI.
-	EdsServiceName string `protobuf:"bytes,4,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
-	// LRS server to send load reports to.
-	// If not present, load reporting will be disabled.
-	// If set to the empty string, load reporting will be sent to the same
-	// server that we obtained CDS data from.
-	LrsLoadReportingServerName *wrappers.StringValue `protobuf:"bytes,5,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
-	XXX_NoUnkeyedLiteral       struct{}              `json:"-"`
-	XXX_unrecognized           []byte                `json:"-"`
-	XXX_sizecache              int32                 `json:"-"`
-}
-
-func (m *XdsConfig) Reset()         { *m = XdsConfig{} }
-func (m *XdsConfig) String() string { return proto.CompactTextString(m) }
-func (*XdsConfig) ProtoMessage()    {}
-func (*XdsConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{7}
-}
-
-func (m *XdsConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_XdsConfig.Unmarshal(m, b)
-}
-func (m *XdsConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_XdsConfig.Marshal(b, m, deterministic)
-}
-func (m *XdsConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_XdsConfig.Merge(m, src)
-}
-func (m *XdsConfig) XXX_Size() int {
-	return xxx_messageInfo_XdsConfig.Size(m)
-}
-func (m *XdsConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_XdsConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_XdsConfig proto.InternalMessageInfo
-
-// Deprecated: Do not use.
-func (m *XdsConfig) GetBalancerName() string {
-	if m != nil {
-		return m.BalancerName
-	}
-	return ""
-}
-
-func (m *XdsConfig) GetChildPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.ChildPolicy
-	}
-	return nil
-}
-
-func (m *XdsConfig) GetFallbackPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.FallbackPolicy
-	}
-	return nil
-}
-
-func (m *XdsConfig) GetEdsServiceName() string {
-	if m != nil {
-		return m.EdsServiceName
-	}
-	return ""
-}
-
-func (m *XdsConfig) GetLrsLoadReportingServerName() *wrappers.StringValue {
-	if m != nil {
-		return m.LrsLoadReportingServerName
-	}
-	return nil
-}
-
-// Configuration for eds LB policy.
-type EdsLoadBalancingPolicyConfig struct {
-	// Cluster name.  Required.
-	Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
-	// EDS service name, as returned in CDS.
-	// May be unset if not specified in CDS.
-	EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
-	// Server to send load reports to.
-	// If unset, no load reporting is done.
-	// If set to empty string, load reporting will be sent to the same
-	// server as we are getting xds data from.
-	LrsLoadReportingServerName *wrappers.StringValue `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
-	// Locality-picking policy.
-	// This policy's config is expected to be in the format used
-	// by the weighted_target policy.  Note that the config should include
-	// an empty value for the "targets" field; that empty value will be
-	// replaced by one that is dynamically generated based on the EDS data.
-	// Optional; defaults to "weighted_target".
-	LocalityPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=locality_picking_policy,json=localityPickingPolicy,proto3" json:"locality_picking_policy,omitempty"`
-	// Endpoint-picking policy.
-	// This will be configured as the policy for each child in the
-	// locality-policy's config.
-	// Optional; defaults to "round_robin".
-	EndpointPickingPolicy []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=endpoint_picking_policy,json=endpointPickingPolicy,proto3" json:"endpoint_picking_policy,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{}               `json:"-"`
-	XXX_unrecognized      []byte                 `json:"-"`
-	XXX_sizecache         int32                  `json:"-"`
-}
-
-func (m *EdsLoadBalancingPolicyConfig) Reset()         { *m = EdsLoadBalancingPolicyConfig{} }
-func (m *EdsLoadBalancingPolicyConfig) String() string { return proto.CompactTextString(m) }
-func (*EdsLoadBalancingPolicyConfig) ProtoMessage()    {}
-func (*EdsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{8}
-}
-
-func (m *EdsLoadBalancingPolicyConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EdsLoadBalancingPolicyConfig.Unmarshal(m, b)
-}
-func (m *EdsLoadBalancingPolicyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EdsLoadBalancingPolicyConfig.Marshal(b, m, deterministic)
-}
-func (m *EdsLoadBalancingPolicyConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdsLoadBalancingPolicyConfig.Merge(m, src)
-}
-func (m *EdsLoadBalancingPolicyConfig) XXX_Size() int {
-	return xxx_messageInfo_EdsLoadBalancingPolicyConfig.Size(m)
-}
-func (m *EdsLoadBalancingPolicyConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_EdsLoadBalancingPolicyConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EdsLoadBalancingPolicyConfig proto.InternalMessageInfo
-
-func (m *EdsLoadBalancingPolicyConfig) GetCluster() string {
-	if m != nil {
-		return m.Cluster
-	}
-	return ""
-}
-
-func (m *EdsLoadBalancingPolicyConfig) GetEdsServiceName() string {
-	if m != nil {
-		return m.EdsServiceName
-	}
-	return ""
-}
-
-func (m *EdsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() *wrappers.StringValue {
-	if m != nil {
-		return m.LrsLoadReportingServerName
-	}
-	return nil
-}
-
-func (m *EdsLoadBalancingPolicyConfig) GetLocalityPickingPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.LocalityPickingPolicy
-	}
-	return nil
-}
-
-func (m *EdsLoadBalancingPolicyConfig) GetEndpointPickingPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.EndpointPickingPolicy
-	}
-	return nil
-}
-
-// Configuration for lrs LB policy.
-type LrsLoadBalancingPolicyConfig struct {
-	// Cluster name.  Required.
-	ClusterName string `protobuf:"bytes,1,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"`
-	// EDS service name, as returned in CDS.
-	// May be unset if not specified in CDS.
-	EdsServiceName string `protobuf:"bytes,2,opt,name=eds_service_name,json=edsServiceName,proto3" json:"eds_service_name,omitempty"`
-	// Server to send load reports to.  Required.
-	// If set to empty string, load reporting will be sent to the same
-	// server as we are getting xds data from.
-	LrsLoadReportingServerName string                                 `protobuf:"bytes,3,opt,name=lrs_load_reporting_server_name,json=lrsLoadReportingServerName,proto3" json:"lrs_load_reporting_server_name,omitempty"`
-	Locality                   *LrsLoadBalancingPolicyConfig_Locality `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"`
-	// Endpoint-picking policy.
-	ChildPolicy          []*LoadBalancingConfig `protobuf:"bytes,5,rep,name=child_policy,json=childPolicy,proto3" json:"child_policy,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
-	XXX_unrecognized     []byte                 `json:"-"`
-	XXX_sizecache        int32                  `json:"-"`
-}
-
-func (m *LrsLoadBalancingPolicyConfig) Reset()         { *m = LrsLoadBalancingPolicyConfig{} }
-func (m *LrsLoadBalancingPolicyConfig) String() string { return proto.CompactTextString(m) }
-func (*LrsLoadBalancingPolicyConfig) ProtoMessage()    {}
-func (*LrsLoadBalancingPolicyConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{9}
-}
-
-func (m *LrsLoadBalancingPolicyConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig.Unmarshal(m, b)
-}
-func (m *LrsLoadBalancingPolicyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig.Marshal(b, m, deterministic)
-}
-func (m *LrsLoadBalancingPolicyConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LrsLoadBalancingPolicyConfig.Merge(m, src)
-}
-func (m *LrsLoadBalancingPolicyConfig) XXX_Size() int {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig.Size(m)
-}
-func (m *LrsLoadBalancingPolicyConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_LrsLoadBalancingPolicyConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LrsLoadBalancingPolicyConfig proto.InternalMessageInfo
-
-func (m *LrsLoadBalancingPolicyConfig) GetClusterName() string {
-	if m != nil {
-		return m.ClusterName
-	}
-	return ""
-}
-
-func (m *LrsLoadBalancingPolicyConfig) GetEdsServiceName() string {
-	if m != nil {
-		return m.EdsServiceName
-	}
-	return ""
-}
-
-func (m *LrsLoadBalancingPolicyConfig) GetLrsLoadReportingServerName() string {
-	if m != nil {
-		return m.LrsLoadReportingServerName
-	}
-	return ""
-}
-
-func (m *LrsLoadBalancingPolicyConfig) GetLocality() *LrsLoadBalancingPolicyConfig_Locality {
-	if m != nil {
-		return m.Locality
-	}
-	return nil
-}
-
-func (m *LrsLoadBalancingPolicyConfig) GetChildPolicy() []*LoadBalancingConfig {
-	if m != nil {
-		return m.ChildPolicy
+func (x *WeightedTargetLoadBalancingPolicyConfig_Target) GetChildPolicy() []*LoadBalancingConfig {
+	if x != nil {
+		return x.ChildPolicy
 	}
 	return nil
 }
 
 // The locality for which this policy will report load.  Required.
 type LrsLoadBalancingPolicyConfig_Locality struct {
-	Region               string   `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
-	Zone                 string   `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"`
-	Subzone              string   `protobuf:"bytes,3,opt,name=subzone,proto3" json:"subzone,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Region  string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"`
+	Zone    string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"`
+	Subzone string `protobuf:"bytes,3,opt,name=subzone,proto3" json:"subzone,omitempty"`
 }
 
-func (m *LrsLoadBalancingPolicyConfig_Locality) Reset()         { *m = LrsLoadBalancingPolicyConfig_Locality{} }
-func (m *LrsLoadBalancingPolicyConfig_Locality) String() string { return proto.CompactTextString(m) }
-func (*LrsLoadBalancingPolicyConfig_Locality) ProtoMessage()    {}
+func (x *LrsLoadBalancingPolicyConfig_Locality) Reset() {
+	*x = LrsLoadBalancingPolicyConfig_Locality{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[19]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LrsLoadBalancingPolicyConfig_Locality) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LrsLoadBalancingPolicyConfig_Locality) ProtoMessage() {}
+
+func (x *LrsLoadBalancingPolicyConfig_Locality) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[19]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LrsLoadBalancingPolicyConfig_Locality.ProtoReflect.Descriptor instead.
 func (*LrsLoadBalancingPolicyConfig_Locality) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{9, 0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{9, 0}
 }
 
-func (m *LrsLoadBalancingPolicyConfig_Locality) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality.Unmarshal(m, b)
-}
-func (m *LrsLoadBalancingPolicyConfig_Locality) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality.Marshal(b, m, deterministic)
-}
-func (m *LrsLoadBalancingPolicyConfig_Locality) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality.Merge(m, src)
-}
-func (m *LrsLoadBalancingPolicyConfig_Locality) XXX_Size() int {
-	return xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality.Size(m)
-}
-func (m *LrsLoadBalancingPolicyConfig_Locality) XXX_DiscardUnknown() {
-	xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LrsLoadBalancingPolicyConfig_Locality proto.InternalMessageInfo
-
-func (m *LrsLoadBalancingPolicyConfig_Locality) GetRegion() string {
-	if m != nil {
-		return m.Region
+func (x *LrsLoadBalancingPolicyConfig_Locality) GetRegion() string {
+	if x != nil {
+		return x.Region
 	}
 	return ""
 }
 
-func (m *LrsLoadBalancingPolicyConfig_Locality) GetZone() string {
-	if m != nil {
-		return m.Zone
+func (x *LrsLoadBalancingPolicyConfig_Locality) GetZone() string {
+	if x != nil {
+		return x.Zone
 	}
 	return ""
 }
 
-func (m *LrsLoadBalancingPolicyConfig_Locality) GetSubzone() string {
-	if m != nil {
-		return m.Subzone
+func (x *LrsLoadBalancingPolicyConfig_Locality) GetSubzone() string {
+	if x != nil {
+		return x.Subzone
 	}
 	return ""
 }
 
-// Selects LB policy and provides corresponding configuration.
-//
-// In general, all instances of this field should be repeated. Clients will
-// iterate through the list in order and stop at the first policy that they
-// support.  This allows the service config to specify custom policies that may
-// not be known to all clients.
-//
-// - If the config for the first supported policy is invalid, the whole service
-//   config is invalid.
-// - If the list doesn't contain any supported policy, the whole service config
-//   is invalid.
-type LoadBalancingConfig struct {
-	// Exactly one LB policy may be configured.
-	//
-	// Types that are valid to be assigned to Policy:
-	//	*LoadBalancingConfig_PickFirst
-	//	*LoadBalancingConfig_RoundRobin
-	//	*LoadBalancingConfig_Grpclb
-	//	*LoadBalancingConfig_Priority
-	//	*LoadBalancingConfig_WeightedTarget
-	//	*LoadBalancingConfig_Cds
-	//	*LoadBalancingConfig_Eds
-	//	*LoadBalancingConfig_Lrs
-	//	*LoadBalancingConfig_Xds
-	//	*LoadBalancingConfig_XdsExperimental
-	Policy               isLoadBalancingConfig_Policy `protobuf_oneof:"policy"`
-	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
-	XXX_unrecognized     []byte                       `json:"-"`
-	XXX_sizecache        int32                        `json:"-"`
-}
-
-func (m *LoadBalancingConfig) Reset()         { *m = LoadBalancingConfig{} }
-func (m *LoadBalancingConfig) String() string { return proto.CompactTextString(m) }
-func (*LoadBalancingConfig) ProtoMessage()    {}
-func (*LoadBalancingConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{10}
-}
-
-func (m *LoadBalancingConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalancingConfig.Unmarshal(m, b)
-}
-func (m *LoadBalancingConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalancingConfig.Marshal(b, m, deterministic)
-}
-func (m *LoadBalancingConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalancingConfig.Merge(m, src)
-}
-func (m *LoadBalancingConfig) XXX_Size() int {
-	return xxx_messageInfo_LoadBalancingConfig.Size(m)
-}
-func (m *LoadBalancingConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalancingConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalancingConfig proto.InternalMessageInfo
-
-type isLoadBalancingConfig_Policy interface {
-	isLoadBalancingConfig_Policy()
-}
-
-type LoadBalancingConfig_PickFirst struct {
-	PickFirst *PickFirstConfig `protobuf:"bytes,4,opt,name=pick_first,proto3,oneof"`
-}
-
-type LoadBalancingConfig_RoundRobin struct {
-	RoundRobin *RoundRobinConfig `protobuf:"bytes,1,opt,name=round_robin,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Grpclb struct {
-	Grpclb *GrpcLbConfig `protobuf:"bytes,3,opt,name=grpclb,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Priority struct {
-	Priority *PriorityLoadBalancingPolicyConfig `protobuf:"bytes,9,opt,name=priority,proto3,oneof"`
-}
-
-type LoadBalancingConfig_WeightedTarget struct {
-	WeightedTarget *WeightedTargetLoadBalancingPolicyConfig `protobuf:"bytes,10,opt,name=weighted_target,json=weightedTarget,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Cds struct {
-	Cds *CdsConfig `protobuf:"bytes,6,opt,name=cds,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Eds struct {
-	Eds *EdsLoadBalancingPolicyConfig `protobuf:"bytes,7,opt,name=eds,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Lrs struct {
-	Lrs *LrsLoadBalancingPolicyConfig `protobuf:"bytes,8,opt,name=lrs,proto3,oneof"`
-}
-
-type LoadBalancingConfig_Xds struct {
-	Xds *XdsConfig `protobuf:"bytes,2,opt,name=xds,proto3,oneof"`
-}
-
-type LoadBalancingConfig_XdsExperimental struct {
-	XdsExperimental *XdsConfig `protobuf:"bytes,5,opt,name=xds_experimental,proto3,oneof"`
-}
-
-func (*LoadBalancingConfig_PickFirst) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_RoundRobin) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Grpclb) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Priority) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_WeightedTarget) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Cds) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Eds) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Lrs) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_Xds) isLoadBalancingConfig_Policy() {}
-
-func (*LoadBalancingConfig_XdsExperimental) isLoadBalancingConfig_Policy() {}
-
-func (m *LoadBalancingConfig) GetPolicy() isLoadBalancingConfig_Policy {
-	if m != nil {
-		return m.Policy
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetPickFirst() *PickFirstConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_PickFirst); ok {
-		return x.PickFirst
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetRoundRobin() *RoundRobinConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_RoundRobin); ok {
-		return x.RoundRobin
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetGrpclb() *GrpcLbConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Grpclb); ok {
-		return x.Grpclb
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetPriority() *PriorityLoadBalancingPolicyConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Priority); ok {
-		return x.Priority
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetWeightedTarget() *WeightedTargetLoadBalancingPolicyConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_WeightedTarget); ok {
-		return x.WeightedTarget
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetCds() *CdsConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Cds); ok {
-		return x.Cds
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetEds() *EdsLoadBalancingPolicyConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Eds); ok {
-		return x.Eds
-	}
-	return nil
-}
-
-func (m *LoadBalancingConfig) GetLrs() *LrsLoadBalancingPolicyConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Lrs); ok {
-		return x.Lrs
-	}
-	return nil
-}
-
-// Deprecated: Do not use.
-func (m *LoadBalancingConfig) GetXds() *XdsConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_Xds); ok {
-		return x.Xds
-	}
-	return nil
-}
-
-// Deprecated: Do not use.
-func (m *LoadBalancingConfig) GetXdsExperimental() *XdsConfig {
-	if x, ok := m.GetPolicy().(*LoadBalancingConfig_XdsExperimental); ok {
-		return x.XdsExperimental
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*LoadBalancingConfig) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*LoadBalancingConfig_PickFirst)(nil),
-		(*LoadBalancingConfig_RoundRobin)(nil),
-		(*LoadBalancingConfig_Grpclb)(nil),
-		(*LoadBalancingConfig_Priority)(nil),
-		(*LoadBalancingConfig_WeightedTarget)(nil),
-		(*LoadBalancingConfig_Cds)(nil),
-		(*LoadBalancingConfig_Eds)(nil),
-		(*LoadBalancingConfig_Lrs)(nil),
-		(*LoadBalancingConfig_Xds)(nil),
-		(*LoadBalancingConfig_XdsExperimental)(nil),
-	}
-}
-
-// A ServiceConfig represents information about a service but is not specific to
-// any name resolver.
-type ServiceConfig struct {
-	LoadBalancingPolicy ServiceConfig_LoadBalancingPolicy `protobuf:"varint,1,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3,enum=grpc.service_config.ServiceConfig_LoadBalancingPolicy" json:"load_balancing_policy,omitempty"` // Deprecated: Do not use.
-	// Multiple LB policies can be specified; clients will iterate through
-	// the list in order and stop at the first policy that they support. If none
-	// are supported, the service config is considered invalid.
-	LoadBalancingConfig []*LoadBalancingConfig `protobuf:"bytes,4,rep,name=load_balancing_config,json=loadBalancingConfig,proto3" json:"load_balancing_config,omitempty"`
-	// Per-method configuration.
-	MethodConfig         []*MethodConfig                      `protobuf:"bytes,2,rep,name=method_config,json=methodConfig,proto3" json:"method_config,omitempty"`
-	RetryThrottling      *ServiceConfig_RetryThrottlingPolicy `protobuf:"bytes,3,opt,name=retry_throttling,json=retryThrottling,proto3" json:"retry_throttling,omitempty"`
-	HealthCheckConfig    *ServiceConfig_HealthCheckConfig     `protobuf:"bytes,5,opt,name=health_check_config,json=healthCheckConfig,proto3" json:"health_check_config,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
-	XXX_unrecognized     []byte                               `json:"-"`
-	XXX_sizecache        int32                                `json:"-"`
-}
-
-func (m *ServiceConfig) Reset()         { *m = ServiceConfig{} }
-func (m *ServiceConfig) String() string { return proto.CompactTextString(m) }
-func (*ServiceConfig) ProtoMessage()    {}
-func (*ServiceConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{11}
-}
-
-func (m *ServiceConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServiceConfig.Unmarshal(m, b)
-}
-func (m *ServiceConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServiceConfig.Marshal(b, m, deterministic)
-}
-func (m *ServiceConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServiceConfig.Merge(m, src)
-}
-func (m *ServiceConfig) XXX_Size() int {
-	return xxx_messageInfo_ServiceConfig.Size(m)
-}
-func (m *ServiceConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServiceConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServiceConfig proto.InternalMessageInfo
-
-// Deprecated: Do not use.
-func (m *ServiceConfig) GetLoadBalancingPolicy() ServiceConfig_LoadBalancingPolicy {
-	if m != nil {
-		return m.LoadBalancingPolicy
-	}
-	return ServiceConfig_UNSPECIFIED
-}
-
-func (m *ServiceConfig) GetLoadBalancingConfig() []*LoadBalancingConfig {
-	if m != nil {
-		return m.LoadBalancingConfig
-	}
-	return nil
-}
-
-func (m *ServiceConfig) GetMethodConfig() []*MethodConfig {
-	if m != nil {
-		return m.MethodConfig
-	}
-	return nil
-}
-
-func (m *ServiceConfig) GetRetryThrottling() *ServiceConfig_RetryThrottlingPolicy {
-	if m != nil {
-		return m.RetryThrottling
-	}
-	return nil
-}
-
-func (m *ServiceConfig) GetHealthCheckConfig() *ServiceConfig_HealthCheckConfig {
-	if m != nil {
-		return m.HealthCheckConfig
-	}
-	return nil
-}
-
 // If a RetryThrottlingPolicy is provided, gRPC will automatically throttle
 // retry attempts and hedged RPCs when the client's ratio of failures to
 // successes exceeds a threshold.
@@ -1438,6 +1613,10 @@
 // If token_count is less than or equal to max_tokens / 2, then RPCs will not
 // be retried and hedged RPCs will not be sent.
 type ServiceConfig_RetryThrottlingPolicy struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of tokens starts at max_tokens. The token_count will always be
 	// between 0 and max_tokens.
 	//
@@ -1448,221 +1627,793 @@
 	//
 	// This field is required and must be greater than zero. Up to 3 decimal
 	// places are supported.
-	TokenRatio           float32  `protobuf:"fixed32,2,opt,name=token_ratio,json=tokenRatio,proto3" json:"token_ratio,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TokenRatio float32 `protobuf:"fixed32,2,opt,name=token_ratio,json=tokenRatio,proto3" json:"token_ratio,omitempty"`
 }
 
-func (m *ServiceConfig_RetryThrottlingPolicy) Reset()         { *m = ServiceConfig_RetryThrottlingPolicy{} }
-func (m *ServiceConfig_RetryThrottlingPolicy) String() string { return proto.CompactTextString(m) }
-func (*ServiceConfig_RetryThrottlingPolicy) ProtoMessage()    {}
+func (x *ServiceConfig_RetryThrottlingPolicy) Reset() {
+	*x = ServiceConfig_RetryThrottlingPolicy{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[20]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServiceConfig_RetryThrottlingPolicy) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServiceConfig_RetryThrottlingPolicy) ProtoMessage() {}
+
+func (x *ServiceConfig_RetryThrottlingPolicy) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[20]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServiceConfig_RetryThrottlingPolicy.ProtoReflect.Descriptor instead.
 func (*ServiceConfig_RetryThrottlingPolicy) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{11, 0}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11, 0}
 }
 
-func (m *ServiceConfig_RetryThrottlingPolicy) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy.Unmarshal(m, b)
-}
-func (m *ServiceConfig_RetryThrottlingPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy.Marshal(b, m, deterministic)
-}
-func (m *ServiceConfig_RetryThrottlingPolicy) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy.Merge(m, src)
-}
-func (m *ServiceConfig_RetryThrottlingPolicy) XXX_Size() int {
-	return xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy.Size(m)
-}
-func (m *ServiceConfig_RetryThrottlingPolicy) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServiceConfig_RetryThrottlingPolicy proto.InternalMessageInfo
-
-func (m *ServiceConfig_RetryThrottlingPolicy) GetMaxTokens() uint32 {
-	if m != nil {
-		return m.MaxTokens
+func (x *ServiceConfig_RetryThrottlingPolicy) GetMaxTokens() uint32 {
+	if x != nil {
+		return x.MaxTokens
 	}
 	return 0
 }
 
-func (m *ServiceConfig_RetryThrottlingPolicy) GetTokenRatio() float32 {
-	if m != nil {
-		return m.TokenRatio
+func (x *ServiceConfig_RetryThrottlingPolicy) GetTokenRatio() float32 {
+	if x != nil {
+		return x.TokenRatio
 	}
 	return 0
 }
 
 type ServiceConfig_HealthCheckConfig struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Service name to use in the health-checking request.
-	ServiceName          *wrappers.StringValue `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	ServiceName *wrappers.StringValue `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
 }
 
-func (m *ServiceConfig_HealthCheckConfig) Reset()         { *m = ServiceConfig_HealthCheckConfig{} }
-func (m *ServiceConfig_HealthCheckConfig) String() string { return proto.CompactTextString(m) }
-func (*ServiceConfig_HealthCheckConfig) ProtoMessage()    {}
+func (x *ServiceConfig_HealthCheckConfig) Reset() {
+	*x = ServiceConfig_HealthCheckConfig{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_grpc_service_config_service_config_proto_msgTypes[21]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServiceConfig_HealthCheckConfig) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServiceConfig_HealthCheckConfig) ProtoMessage() {}
+
+func (x *ServiceConfig_HealthCheckConfig) ProtoReflect() protoreflect.Message {
+	mi := &file_grpc_service_config_service_config_proto_msgTypes[21]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServiceConfig_HealthCheckConfig.ProtoReflect.Descriptor instead.
 func (*ServiceConfig_HealthCheckConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e32d3cb2c41c77ce, []int{11, 1}
+	return file_grpc_service_config_service_config_proto_rawDescGZIP(), []int{11, 1}
 }
 
-func (m *ServiceConfig_HealthCheckConfig) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServiceConfig_HealthCheckConfig.Unmarshal(m, b)
-}
-func (m *ServiceConfig_HealthCheckConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServiceConfig_HealthCheckConfig.Marshal(b, m, deterministic)
-}
-func (m *ServiceConfig_HealthCheckConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServiceConfig_HealthCheckConfig.Merge(m, src)
-}
-func (m *ServiceConfig_HealthCheckConfig) XXX_Size() int {
-	return xxx_messageInfo_ServiceConfig_HealthCheckConfig.Size(m)
-}
-func (m *ServiceConfig_HealthCheckConfig) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServiceConfig_HealthCheckConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServiceConfig_HealthCheckConfig proto.InternalMessageInfo
-
-func (m *ServiceConfig_HealthCheckConfig) GetServiceName() *wrappers.StringValue {
-	if m != nil {
-		return m.ServiceName
+func (x *ServiceConfig_HealthCheckConfig) GetServiceName() *wrappers.StringValue {
+	if x != nil {
+		return x.ServiceName
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.service_config.ServiceConfig_LoadBalancingPolicy", ServiceConfig_LoadBalancingPolicy_name, ServiceConfig_LoadBalancingPolicy_value)
-	proto.RegisterType((*MethodConfig)(nil), "grpc.service_config.MethodConfig")
-	proto.RegisterType((*MethodConfig_Name)(nil), "grpc.service_config.MethodConfig.Name")
-	proto.RegisterType((*MethodConfig_RetryPolicy)(nil), "grpc.service_config.MethodConfig.RetryPolicy")
-	proto.RegisterType((*MethodConfig_HedgingPolicy)(nil), "grpc.service_config.MethodConfig.HedgingPolicy")
-	proto.RegisterType((*PickFirstConfig)(nil), "grpc.service_config.PickFirstConfig")
-	proto.RegisterType((*RoundRobinConfig)(nil), "grpc.service_config.RoundRobinConfig")
-	proto.RegisterType((*PriorityLoadBalancingPolicyConfig)(nil), "grpc.service_config.PriorityLoadBalancingPolicyConfig")
-	proto.RegisterMapType((map[string]*PriorityLoadBalancingPolicyConfig_Child)(nil), "grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry")
-	proto.RegisterType((*PriorityLoadBalancingPolicyConfig_Child)(nil), "grpc.service_config.PriorityLoadBalancingPolicyConfig.Child")
-	proto.RegisterType((*WeightedTargetLoadBalancingPolicyConfig)(nil), "grpc.service_config.WeightedTargetLoadBalancingPolicyConfig")
-	proto.RegisterMapType((map[string]*WeightedTargetLoadBalancingPolicyConfig_Target)(nil), "grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry")
-	proto.RegisterType((*WeightedTargetLoadBalancingPolicyConfig_Target)(nil), "grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target")
-	proto.RegisterType((*GrpcLbConfig)(nil), "grpc.service_config.GrpcLbConfig")
-	proto.RegisterType((*CdsConfig)(nil), "grpc.service_config.CdsConfig")
-	proto.RegisterType((*XdsConfig)(nil), "grpc.service_config.XdsConfig")
-	proto.RegisterType((*EdsLoadBalancingPolicyConfig)(nil), "grpc.service_config.EdsLoadBalancingPolicyConfig")
-	proto.RegisterType((*LrsLoadBalancingPolicyConfig)(nil), "grpc.service_config.LrsLoadBalancingPolicyConfig")
-	proto.RegisterType((*LrsLoadBalancingPolicyConfig_Locality)(nil), "grpc.service_config.LrsLoadBalancingPolicyConfig.Locality")
-	proto.RegisterType((*LoadBalancingConfig)(nil), "grpc.service_config.LoadBalancingConfig")
-	proto.RegisterType((*ServiceConfig)(nil), "grpc.service_config.ServiceConfig")
-	proto.RegisterType((*ServiceConfig_RetryThrottlingPolicy)(nil), "grpc.service_config.ServiceConfig.RetryThrottlingPolicy")
-	proto.RegisterType((*ServiceConfig_HealthCheckConfig)(nil), "grpc.service_config.ServiceConfig.HealthCheckConfig")
+var File_grpc_service_config_service_config_proto protoreflect.FileDescriptor
+
+var file_grpc_service_config_service_config_proto_rawDesc = []byte{
+	0x0a, 0x28, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a,
+	0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+	0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+	0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x64, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xde, 0x08, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x68, 0x6f,
+	0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68,
+	0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f,
+	0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f,
+	0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72,
+	0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x19, 0x6d, 0x61,
+	0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x16, 0x6d, 0x61, 0x78,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79,
+	0x74, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32,
+	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x52,
+	0x0a, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76,
+	0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f,
+	0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x12, 0x58, 0x0a, 0x0e, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f,
+	0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65,
+	0x64, 0x67, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x0d, 0x68,
+	0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x38, 0x0a, 0x04,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x16,
+	0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+	0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0xa7, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79,
+	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74,
+	0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61,
+	0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x69, 0x6e, 0x69,
+	0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x69,
+	0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x3a, 0x0a,
+	0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d,
+	0x61, 0x78, 0x42, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x12, 0x2d, 0x0a, 0x12, 0x62, 0x61, 0x63,
+	0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4d, 0x75,
+	0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x72,
+	0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64,
+	0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72,
+	0x79, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73,
+	0x1a, 0xb9, 0x01, 0x0a, 0x0d, 0x48, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70,
+	0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x74, 0x74,
+	0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67,
+	0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
+	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67,
+	0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x45, 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x74,
+	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18,
+	0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72,
+	0x70, 0x63, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x13, 0x6e, 0x6f, 0x6e, 0x46, 0x61, 0x74, 0x61,
+	0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x19, 0x0a, 0x17,
+	0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x72, 0x5f, 0x68, 0x65, 0x64, 0x67, 0x69, 0x6e, 0x67,
+	0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x11, 0x0a, 0x0f, 0x50, 0x69, 0x63, 0x6b, 0x46,
+	0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x6f,
+	0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xeb,
+	0x02, 0x0a, 0x21, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x69,
+	0x6f, 0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69,
+	0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43,
+	0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x68,
+	0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69,
+	0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6f,
+	0x72, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x05, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x12,
+	0x40, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x1a, 0x79, 0x0a, 0x0d, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69,
+	0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x68, 0x69, 0x6c,
+	0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfe, 0x02, 0x0a,
+	0x27, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c,
+	0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+	0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+	0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x1a, 0x6d, 0x0a,
+	0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68,
+	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
+	0x4b, 0x0a, 0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64,
+	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
+	0x0b, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x7f, 0x0a, 0x0c,
+	0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x59,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50,
+	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7e, 0x0a,
+	0x0c, 0x47, 0x72, 0x70, 0x63, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a,
+	0x0c, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63,
+	0x68, 0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x25, 0x0a,
+	0x09, 0x43, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c,
+	0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75,
+	0x73, 0x74, 0x65, 0x72, 0x22, 0xe0, 0x02, 0x0a, 0x09, 0x58, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x62,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x63,
+	0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
+	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68, 0x69,
+	0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x61, 0x6c, 0x6c,
+	0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
+	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x66, 0x61, 0x6c,
+	0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x65,
+	0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61,
+	0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x6c, 0x72, 0x73,
+	0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x03, 0x0a, 0x1c, 0x45, 0x64, 0x73, 0x4c,
+	0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73,
+	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74,
+	0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x64,
+	0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x1e,
+	0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69,
+	0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x52, 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x72,
+	0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x60,
+	0x0a, 0x17, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x69,
+	0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
+	0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+	0x69, 0x74, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+	0x12, 0x60, 0x0a, 0x17, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x69, 0x63,
+	0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61,
+	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x65, 0x6e, 0x64,
+	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69,
+	0x63, 0x79, 0x22, 0xa6, 0x03, 0x0a, 0x1c, 0x4c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61,
+	0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74,
+	0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x64, 0x73, 0x5f, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0e, 0x65, 0x64, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x42, 0x0a, 0x1e, 0x6c, 0x72, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x65, 0x70,
+	0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x6c, 0x72, 0x73, 0x4c, 0x6f, 0x61,
+	0x64, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x72, 0x73,
+	0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69,
+	0x74, 0x79, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x0c,
+	0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x63, 0x68,
+	0x69, 0x6c, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0x50, 0x0a, 0x08, 0x4c, 0x6f, 0x63,
+	0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+	0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e,
+	0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0xfa, 0x05, 0x0a, 0x13,
+	0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0a, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x72, 0x73,
+	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x69,
+	0x63, 0x6b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
+	0x0a, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x72,
+	0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x25, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
+	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x62, 0x69,
+	0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+	0x5f, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x72, 0x70,
+	0x63, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x67, 0x72, 0x70,
+	0x63, 0x6c, 0x62, 0x12, 0x54, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
+	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f,
+	0x72, 0x69, 0x74, 0x79, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e,
+	0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
+	0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x0f, 0x77, 0x65, 0x69,
+	0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65,
+	0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x48, 0x00, 0x52, 0x0e, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67,
+	0x65, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x63, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48,
+	0x00, 0x52, 0x03, 0x63, 0x64, 0x73, 0x12, 0x45, 0x0a, 0x03, 0x65, 0x64, 0x73, 0x18, 0x07, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x64, 0x73, 0x4c, 0x6f, 0x61,
+	0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x03, 0x65, 0x64, 0x73, 0x12, 0x45, 0x0a,
+	0x03, 0x6c, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x2e, 0x4c, 0x72, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e,
+	0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52,
+	0x03, 0x6c, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x03, 0x78, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x03, 0x78, 0x64, 0x73, 0x12, 0x50, 0x0a, 0x10,
+	0x78, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x58, 0x64, 0x73,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x10, 0x78, 0x64,
+	0x73, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x42, 0x08,
+	0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xd8, 0x05, 0x0a, 0x0d, 0x53, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6e, 0x0a, 0x15, 0x6c, 0x6f,
+	0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c,
+	0x69, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+	0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e,
+	0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x5c, 0x0a, 0x15, 0x6c, 0x6f,
+	0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
+	0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e,
+	0x66, 0x69, 0x67, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69,
+	0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x68,
+	0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+	0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66,
+	0x69, 0x67, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x12, 0x63, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74,
+	0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52,
+	0x65, 0x74, 0x72, 0x79, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f,
+	0x6c, 0x69, 0x63, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x54, 0x68, 0x72, 0x6f, 0x74,
+	0x74, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x64, 0x0a, 0x13, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f,
+	0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65,
+	0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68,
+	0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x57, 0x0a, 0x15, 0x52,
+	0x65, 0x74, 0x72, 0x79, 0x54, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f,
+	0x6c, 0x69, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
+	0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x54, 0x6f, 0x6b,
+	0x65, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x72, 0x61, 0x74,
+	0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
+	0x61, 0x74, 0x69, 0x6f, 0x1a, 0x54, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68,
+	0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x13, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+	0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+	0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49,
+	0x4e, 0x10, 0x01, 0x42, 0x2d, 0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x73,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x12, 0x53, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+	0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("grpc/service_config/service_config.proto", fileDescriptor_e32d3cb2c41c77ce)
+var (
+	file_grpc_service_config_service_config_proto_rawDescOnce sync.Once
+	file_grpc_service_config_service_config_proto_rawDescData = file_grpc_service_config_service_config_proto_rawDesc
+)
+
+func file_grpc_service_config_service_config_proto_rawDescGZIP() []byte {
+	file_grpc_service_config_service_config_proto_rawDescOnce.Do(func() {
+		file_grpc_service_config_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_grpc_service_config_service_config_proto_rawDescData)
+	})
+	return file_grpc_service_config_service_config_proto_rawDescData
 }
 
-var fileDescriptor_e32d3cb2c41c77ce = []byte{
-	// 1589 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0x1a, 0x47,
-	0x16, 0x16, 0xa0, 0x1b, 0x07, 0x84, 0x50, 0x6b, 0x25, 0x61, 0xca, 0xab, 0x95, 0xa8, 0xf5, 0x9a,
-	0x17, 0xa3, 0x5a, 0x79, 0xcb, 0xeb, 0xd2, 0x6e, 0xed, 0x3a, 0xe8, 0x12, 0x54, 0x91, 0x65, 0xd2,
-	0x92, 0x6f, 0x55, 0xa9, 0x1a, 0x0d, 0x33, 0x0d, 0x4c, 0x69, 0x66, 0x9a, 0xf4, 0x34, 0x16, 0xe4,
-	0x21, 0x79, 0xcd, 0x2f, 0x49, 0x7e, 0x43, 0xfe, 0x49, 0x9e, 0x52, 0x79, 0xcf, 0x3f, 0xc8, 0x43,
-	0x2a, 0xd5, 0x97, 0x41, 0x0c, 0x8c, 0x10, 0xb2, 0xfc, 0xc6, 0x9c, 0xee, 0xef, 0x3b, 0xd7, 0x3e,
-	0x7d, 0x1a, 0x28, 0xb7, 0x58, 0xc7, 0xda, 0x09, 0x08, 0xfb, 0xe0, 0x58, 0xc4, 0xb0, 0xa8, 0xdf,
-	0x74, 0x5a, 0x23, 0x9f, 0x95, 0x0e, 0xa3, 0x9c, 0xa2, 0x55, 0xb1, 0xb3, 0x12, 0x5d, 0x2a, 0x6e,
-	0xb6, 0x28, 0x6d, 0xb9, 0x64, 0x47, 0x6e, 0x69, 0x74, 0x9b, 0x3b, 0x76, 0x97, 0x99, 0xdc, 0xa1,
-	0xbe, 0x02, 0x8d, 0xaf, 0x5f, 0x31, 0xb3, 0xd3, 0x21, 0x2c, 0xd0, 0xeb, 0x6b, 0x7a, 0x5d, 0x18,
-	0x61, 0x51, 0x9b, 0x28, 0x71, 0xe9, 0x97, 0x45, 0xc8, 0xbe, 0x24, 0xbc, 0x4d, 0xed, 0x7d, 0xa9,
-	0x07, 0xed, 0xc1, 0xac, 0x6f, 0x7a, 0xa4, 0x90, 0xd8, 0x4a, 0x95, 0x33, 0xbb, 0xff, 0xa8, 0xc4,
-	0xd8, 0x52, 0x19, 0x06, 0x54, 0x4e, 0x4d, 0x8f, 0x60, 0x89, 0x41, 0x2f, 0x20, 0x77, 0x65, 0x3a,
-	0xdc, 0x68, 0x52, 0x66, 0x30, 0x62, 0xda, 0xfd, 0x42, 0x72, 0x2b, 0x51, 0xce, 0xec, 0x16, 0x2b,
-	0x4a, 0x79, 0x25, 0x34, 0xae, 0x52, 0xa5, 0xd4, 0x7d, 0x63, 0xba, 0x5d, 0x82, 0xb3, 0x02, 0x71,
-	0x44, 0x19, 0x16, 0xfb, 0xd1, 0x53, 0x58, 0xe0, 0x8e, 0x47, 0x68, 0x97, 0x17, 0x52, 0x12, 0xfa,
-	0x60, 0x0c, 0x7a, 0xa0, 0xfd, 0xc6, 0xe1, 0x4e, 0xf4, 0x16, 0x1e, 0x78, 0x66, 0xcf, 0x60, 0xe4,
-	0xeb, 0x2e, 0x09, 0xb8, 0xe1, 0x91, 0x20, 0x30, 0x5b, 0xc4, 0x68, 0xf4, 0x39, 0x09, 0x0a, 0xb3,
-	0x92, 0xe6, 0xe1, 0x18, 0xcd, 0xeb, 0x63, 0x9f, 0x3f, 0xdd, 0x55, 0x36, 0xac, 0x7b, 0x66, 0x0f,
-	0x2b, 0xf4, 0x4b, 0x05, 0xae, 0x0a, 0x2c, 0x7a, 0x0f, 0x45, 0x45, 0x1c, 0x74, 0xa8, 0x1f, 0x90,
-	0x11, 0xe6, 0xb9, 0x29, 0x98, 0x37, 0x24, 0xb3, 0x82, 0x47, 0xa8, 0x31, 0x64, 0x19, 0xe1, 0xac,
-	0x6f, 0x74, 0xa8, 0xeb, 0x58, 0xfd, 0xc2, 0xbc, 0x24, 0x7b, 0x72, 0x7b, 0xb8, 0xb1, 0x40, 0xd5,
-	0x25, 0xa8, 0x36, 0x83, 0x33, 0xec, 0xfa, 0x13, 0xbd, 0x83, 0x5c, 0x9b, 0xd8, 0x2d, 0xc7, 0x6f,
-	0x85, 0xac, 0x0b, 0x92, 0x75, 0xe7, 0x76, 0xd6, 0x9a, 0xc2, 0x0d, 0x78, 0x97, 0xda, 0xc3, 0x82,
-	0xe2, 0x73, 0x98, 0x15, 0x69, 0x46, 0x05, 0x58, 0xd0, 0x2c, 0x85, 0xc4, 0x56, 0xa2, 0x9c, 0xc6,
-	0xe1, 0x27, 0x5a, 0x87, 0x79, 0x4f, 0x12, 0xca, 0x94, 0xa7, 0xb1, 0xfe, 0x2a, 0xfe, 0x98, 0x84,
-	0xcc, 0x90, 0xc9, 0x68, 0x1b, 0xb2, 0x22, 0xa4, 0x26, 0xe7, 0xc4, 0xeb, 0xf0, 0x40, 0xd2, 0x2c,
-	0xe1, 0x8c, 0x67, 0xf6, 0x3e, 0xd3, 0x22, 0x54, 0x85, 0x65, 0xc7, 0x77, 0xb8, 0x63, 0xba, 0x46,
-	0xc3, 0xb4, 0x2e, 0x69, 0xb3, 0xa9, 0xcb, 0x68, 0x42, 0x2d, 0xe4, 0x34, 0xa2, 0xaa, 0x00, 0x68,
-	0x0f, 0x04, 0xe5, 0x00, 0x7f, 0x6b, 0x2d, 0x81, 0x67, 0xf6, 0x42, 0xec, 0x13, 0x40, 0x1a, 0x67,
-	0x78, 0x5d, 0x97, 0x3b, 0x1d, 0xd7, 0x21, 0x4c, 0xd6, 0x51, 0x12, 0xaf, 0xe8, 0x95, 0x97, 0x83,
-	0x05, 0x74, 0x04, 0xeb, 0x32, 0x09, 0x66, 0xc3, 0x25, 0x46, 0xc0, 0x4d, 0xde, 0x0d, 0x0c, 0x71,
-	0xc0, 0x44, 0x81, 0xa4, 0xca, 0xb9, 0xdd, 0x7c, 0xa8, 0x55, 0xe4, 0x60, 0x9f, 0xda, 0x04, 0xff,
-	0x65, 0xb0, 0xff, 0x4c, 0x6e, 0x17, 0xc2, 0xa0, 0xf8, 0x53, 0x02, 0x96, 0x22, 0x69, 0x98, 0x26,
-	0x56, 0xff, 0x83, 0x30, 0x53, 0x86, 0x4d, 0x5c, 0xb3, 0x7f, 0x7b, 0xa4, 0xb2, 0x7a, 0xff, 0x81,
-	0xd8, 0x8e, 0x0e, 0x61, 0xdd, 0xa7, 0xbe, 0xd1, 0x34, 0xb9, 0xe9, 0x46, 0x8d, 0x4f, 0xdd, 0x60,
-	0xfc, 0xaa, 0x4f, 0xfd, 0x23, 0xb1, 0x7d, 0xc8, 0xf6, 0xea, 0x03, 0xd8, 0x50, 0xd5, 0x4c, 0x99,
-	0x11, 0x2d, 0xc1, 0xd2, 0x0a, 0x2c, 0xd7, 0x1d, 0xeb, 0xf2, 0xc8, 0x61, 0x01, 0x57, 0xc5, 0x56,
-	0x42, 0x90, 0xc7, 0xb4, 0xeb, 0xdb, 0x98, 0x36, 0x1c, 0x5f, 0xcb, 0x7e, 0x4b, 0xc2, 0x76, 0x9d,
-	0x39, 0x94, 0x39, 0xbc, 0x7f, 0x42, 0x4d, 0xbb, 0x6a, 0xba, 0xa6, 0x6f, 0x0d, 0x62, 0xa1, 0x9b,
-	0xd3, 0x05, 0x2c, 0x5a, 0x6d, 0xc7, 0xb5, 0x19, 0xf1, 0x75, 0x83, 0x3a, 0x88, 0xad, 0xed, 0x5b,
-	0x99, 0x2a, 0xfb, 0x9a, 0xe6, 0xd0, 0xe7, 0xac, 0x8f, 0x07, 0xac, 0x68, 0x13, 0xa0, 0xa3, 0xc0,
-	0x0e, 0x09, 0x0a, 0xc9, 0xad, 0x54, 0x39, 0x8d, 0x87, 0x24, 0xc5, 0x63, 0x98, 0x93, 0x50, 0xf4,
-	0x02, 0xe6, 0x95, 0x32, 0x6d, 0x48, 0x39, 0xd6, 0x90, 0x88, 0x01, 0x4a, 0x35, 0xd6, 0xb8, 0x62,
-	0x1f, 0x96, 0x22, 0x56, 0xa0, 0x3c, 0xa4, 0x2e, 0x49, 0x5f, 0x9f, 0x2c, 0xf1, 0x13, 0x61, 0x98,
-	0xfb, 0x20, 0xfa, 0x88, 0x4e, 0xeb, 0x7f, 0xef, 0xe3, 0x2c, 0x56, 0x54, 0x7b, 0xc9, 0xe7, 0x89,
-	0xd2, 0x1f, 0x49, 0x78, 0xfc, 0x96, 0x38, 0xad, 0x36, 0x27, 0xf6, 0xb9, 0xc9, 0x5a, 0x84, 0xdf,
-	0x1c, 0x73, 0x0b, 0x16, 0xb8, 0xdc, 0x12, 0x68, 0x4f, 0x8f, 0x63, 0xad, 0x98, 0x92, 0xae, 0xa2,
-	0xd6, 0x03, 0x15, 0xf7, 0x90, 0xb9, 0xe8, 0xc1, 0xbc, 0x5a, 0x10, 0x8d, 0xe4, 0x4a, 0x52, 0xe9,
-	0x72, 0xd7, 0x5f, 0xe8, 0x0b, 0xc8, 0xca, 0x24, 0x85, 0xad, 0x2d, 0x79, 0xc7, 0xa8, 0x67, 0x24,
-	0x5a, 0xf7, 0xb3, 0xef, 0x20, 0x3b, 0x6c, 0x47, 0x4c, 0xe4, 0xdf, 0x47, 0x23, 0xbf, 0xff, 0x09,
-	0x7c, 0x1e, 0x4e, 0xc0, 0xb7, 0x90, 0xfd, 0x9c, 0x75, 0xac, 0x93, 0x86, 0x0e, 0xf2, 0xa8, 0x77,
-	0x89, 0x7b, 0x78, 0x27, 0xfa, 0x46, 0x08, 0x91, 0x57, 0xb9, 0xea, 0xc8, 0x19, 0x2d, 0x13, 0x8d,
-	0xbc, 0xf4, 0x08, 0xd2, 0xfb, 0x76, 0xa0, 0x95, 0x17, 0x60, 0xc1, 0x72, 0xbb, 0x01, 0x27, 0x2c,
-	0xec, 0xea, 0xfa, 0xb3, 0xf4, 0x6b, 0x12, 0xd2, 0xef, 0x06, 0xfb, 0x1e, 0xc3, 0x52, 0x43, 0xea,
-	0x25, 0xcc, 0xd0, 0x33, 0x42, 0xa2, 0x9c, 0xae, 0x26, 0x0b, 0x09, 0x9c, 0x0d, 0x17, 0xe4, 0x35,
-	0xf1, 0x29, 0x73, 0x85, 0xbe, 0x84, 0xe5, 0xa6, 0xe9, 0xba, 0xa2, 0xf1, 0x86, 0x7c, 0xa9, 0x3b,
-	0xf2, 0xe5, 0x42, 0x02, 0x4d, 0x59, 0x86, 0x3c, 0xb1, 0x03, 0x23, 0x12, 0xa4, 0x59, 0xe9, 0x79,
-	0x8e, 0xd8, 0xc1, 0xd9, 0x75, 0x9c, 0xd0, 0x05, 0x6c, 0xba, 0x2c, 0x30, 0x5c, 0x6a, 0xda, 0x06,
-	0x23, 0x1d, 0xca, 0xb8, 0x68, 0x6d, 0x02, 0x18, 0xc6, 0xe0, 0xa6, 0x29, 0xe0, 0x8c, 0x33, 0xc7,
-	0x6f, 0xa9, 0x29, 0xa0, 0xe8, 0xb2, 0x40, 0xd8, 0x85, 0x43, 0x86, 0x33, 0x49, 0x20, 0x33, 0xf1,
-	0x7d, 0x0a, 0x1e, 0x1e, 0xda, 0xc1, 0xcd, 0xe7, 0xef, 0xc6, 0xec, 0xc4, 0xba, 0x91, 0xfc, 0x48,
-	0x37, 0x52, 0xf7, 0x73, 0x03, 0x5d, 0xc0, 0x86, 0x4b, 0x2d, 0xd3, 0x75, 0x78, 0xdf, 0xe8, 0x38,
-	0xd6, 0xe5, 0xd0, 0x10, 0x32, 0x7b, 0xc7, 0x6c, 0xad, 0x85, 0x44, 0x75, 0xc5, 0xa3, 0x93, 0x76,
-	0x01, 0x1b, 0xc4, 0xb7, 0x3b, 0xd4, 0xf1, 0xf9, 0xa8, 0x86, 0xb9, 0xbb, 0x6a, 0x08, 0x89, 0x22,
-	0x1a, 0x4a, 0x3f, 0xa4, 0xe0, 0xe1, 0x09, 0x9b, 0x90, 0x8a, 0x6d, 0xc8, 0xea, 0xd8, 0x0f, 0xd5,
-	0x3f, 0xce, 0x68, 0x99, 0x8c, 0xc3, 0xf4, 0x39, 0xa9, 0x4e, 0x95, 0x93, 0xf4, 0xc4, 0xa8, 0xbf,
-	0x81, 0xc5, 0x30, 0x58, 0x7a, 0xd0, 0xdd, 0x8b, 0x0f, 0xc2, 0x04, 0xaf, 0x2a, 0x27, 0x9a, 0x01,
-	0x0f, 0xb8, 0xc6, 0x0e, 0xf0, 0xdc, 0x7d, 0x9a, 0x6d, 0x1d, 0x16, 0x43, 0x15, 0xa2, 0xbb, 0x33,
-	0xd2, 0x72, 0xa8, 0xaf, 0x63, 0xa7, 0xbf, 0x10, 0x82, 0xd9, 0x6f, 0xa8, 0x1f, 0x86, 0x4a, 0xfe,
-	0x96, 0xc3, 0x66, 0xb7, 0x21, 0xc5, 0x29, 0x3d, 0x6c, 0xaa, 0xcf, 0xd2, 0xef, 0x73, 0xb0, 0x1a,
-	0xa3, 0x16, 0x1d, 0x01, 0x88, 0xca, 0x30, 0x9a, 0x62, 0xd8, 0xd0, 0x01, 0xf9, 0x7b, 0xfc, 0x9d,
-	0x19, 0x1d, 0x49, 0x6a, 0x33, 0x78, 0x08, 0x89, 0x8e, 0x21, 0xc3, 0xc4, 0x80, 0x62, 0x30, 0x31,
-	0xa1, 0x48, 0x53, 0x33, 0xbb, 0x8f, 0x62, 0x89, 0x46, 0x07, 0x19, 0x39, 0x93, 0x5f, 0x63, 0xd1,
-	0x7f, 0x60, 0x5e, 0xc0, 0xdc, 0x86, 0x3e, 0x61, 0xdb, 0xb1, 0x2c, 0xc3, 0x77, 0x41, 0x6d, 0x06,
-	0x6b, 0x08, 0x3a, 0x87, 0x45, 0x3d, 0x7a, 0xf4, 0x0b, 0x69, 0x09, 0x7f, 0xf6, 0x71, 0x13, 0x40,
-	0x6d, 0x06, 0x0f, 0x98, 0x50, 0x0b, 0x96, 0xaf, 0xf4, 0xc5, 0x65, 0xa8, 0xfb, 0xb7, 0x00, 0x13,
-	0xc6, 0x8b, 0x29, 0x2f, 0xb9, 0xda, 0x0c, 0xce, 0x5d, 0x45, 0xb6, 0xa2, 0x5d, 0x48, 0x59, 0x76,
-	0xa0, 0x9f, 0x36, 0x9b, 0xb1, 0xe4, 0x83, 0x4b, 0xa8, 0x36, 0x83, 0xc5, 0x66, 0x74, 0x08, 0x29,
-	0x62, 0x07, 0xfa, 0xe1, 0xf2, 0xcf, 0x58, 0xcc, 0xa4, 0x6e, 0x29, 0x68, 0x88, 0xa2, 0x71, 0x59,
-	0x50, 0x58, 0x9c, 0x40, 0x33, 0xe9, 0x4c, 0x08, 0x1a, 0x97, 0x05, 0xe8, 0x19, 0xa4, 0x7a, 0x76,
-	0xa0, 0x67, 0x80, 0x78, 0x0f, 0x06, 0xd7, 0xa3, 0xb8, 0x07, 0x05, 0xae, 0x67, 0x07, 0xa8, 0x0e,
-	0xf9, 0x9e, 0x1d, 0x18, 0xa4, 0xd7, 0x21, 0xcc, 0xf1, 0x88, 0xcf, 0x4d, 0x57, 0x5f, 0x14, 0xd3,
-	0x91, 0x8c, 0xa1, 0xab, 0x8b, 0x30, 0xaf, 0x07, 0xea, 0x9f, 0xe7, 0x60, 0x49, 0xf7, 0x11, 0x5d,
-	0xf6, 0x3e, 0xac, 0xc9, 0x2e, 0xd2, 0x08, 0x5d, 0xb9, 0x9e, 0x22, 0x12, 0xe5, 0xdc, 0x0d, 0x35,
-	0x13, 0xa1, 0xa8, 0xc4, 0x44, 0x42, 0xde, 0xeb, 0xab, 0xee, 0xf8, 0x02, 0xfa, 0x6a, 0x4c, 0x9f,
-	0x9e, 0x84, 0xef, 0xda, 0xe9, 0xa3, 0xec, 0x83, 0x43, 0xbc, 0xa4, 0xde, 0x8e, 0x21, 0xab, 0x9a,
-	0x1e, 0xb6, 0x6f, 0x7d, 0xc4, 0xe2, 0xac, 0x37, 0xfc, 0x47, 0x86, 0x05, 0x79, 0xf5, 0x26, 0xe1,
-	0x6d, 0x46, 0x39, 0x77, 0x1d, 0xbf, 0xa5, 0xcf, 0xe0, 0xf3, 0x29, 0x02, 0x22, 0xdf, 0xac, 0xe7,
-	0x03, 0xa4, 0xf2, 0x1c, 0x2f, 0xb3, 0xa8, 0x18, 0xd9, 0xb0, 0xda, 0x26, 0xa6, 0xcb, 0xdb, 0x86,
-	0xd5, 0x26, 0xd6, 0x65, 0x68, 0xb2, 0xca, 0xf5, 0xbf, 0xa6, 0xd0, 0x53, 0x93, 0xe8, 0x7d, 0x01,
-	0xd6, 0x5e, 0xac, 0xb4, 0x47, 0x45, 0xc5, 0xb7, 0xb0, 0x16, 0x6b, 0x0f, 0xfa, 0x2b, 0x88, 0x87,
-	0xab, 0xc1, 0xe9, 0x25, 0xf1, 0xc3, 0xf7, 0x61, 0xda, 0x33, 0x7b, 0xe7, 0x52, 0x80, 0xfe, 0x06,
-	0x19, 0xb9, 0x64, 0xc8, 0xb7, 0x9f, 0x2c, 0xe3, 0x24, 0x06, 0x29, 0xc2, 0x42, 0x52, 0x3c, 0x87,
-	0x95, 0x31, 0x03, 0xd0, 0xff, 0x47, 0xc6, 0xc7, 0xc4, 0x14, 0xa3, 0x41, 0x64, 0xb8, 0xfc, 0xf7,
-	0x48, 0x77, 0xd6, 0xc6, 0x2e, 0x43, 0xe6, 0xf5, 0xe9, 0x59, 0xfd, 0x70, 0xff, 0xf8, 0xe8, 0xf8,
-	0xf0, 0x20, 0x3f, 0x23, 0x04, 0xf8, 0xd5, 0xeb, 0xd3, 0x03, 0x03, 0xbf, 0xaa, 0x1e, 0x9f, 0xe6,
-	0x13, 0xd5, 0x27, 0xb0, 0xe6, 0xd0, 0x48, 0xd0, 0x54, 0xcc, 0xaa, 0x28, 0x12, 0xb4, 0xba, 0xb0,
-	0xa0, 0x9e, 0x68, 0xcc, 0x4b, 0x53, 0x9e, 0xfe, 0x19, 0x00, 0x00, 0xff, 0xff, 0xae, 0xd3, 0x19,
-	0x42, 0x5a, 0x13, 0x00, 0x00,
+var file_grpc_service_config_service_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_grpc_service_config_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
+var file_grpc_service_config_service_config_proto_goTypes = []interface{}{
+	(ServiceConfig_LoadBalancingPolicy)(0),          // 0: grpc.service_config.ServiceConfig.LoadBalancingPolicy
+	(*MethodConfig)(nil),                            // 1: grpc.service_config.MethodConfig
+	(*PickFirstConfig)(nil),                         // 2: grpc.service_config.PickFirstConfig
+	(*RoundRobinConfig)(nil),                        // 3: grpc.service_config.RoundRobinConfig
+	(*PriorityLoadBalancingPolicyConfig)(nil),       // 4: grpc.service_config.PriorityLoadBalancingPolicyConfig
+	(*WeightedTargetLoadBalancingPolicyConfig)(nil), // 5: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig
+	(*GrpcLbConfig)(nil),                            // 6: grpc.service_config.GrpcLbConfig
+	(*CdsConfig)(nil),                               // 7: grpc.service_config.CdsConfig
+	(*XdsConfig)(nil),                               // 8: grpc.service_config.XdsConfig
+	(*EdsLoadBalancingPolicyConfig)(nil),            // 9: grpc.service_config.EdsLoadBalancingPolicyConfig
+	(*LrsLoadBalancingPolicyConfig)(nil),            // 10: grpc.service_config.LrsLoadBalancingPolicyConfig
+	(*LoadBalancingConfig)(nil),                     // 11: grpc.service_config.LoadBalancingConfig
+	(*ServiceConfig)(nil),                           // 12: grpc.service_config.ServiceConfig
+	(*MethodConfig_Name)(nil),                       // 13: grpc.service_config.MethodConfig.Name
+	(*MethodConfig_RetryPolicy)(nil),                // 14: grpc.service_config.MethodConfig.RetryPolicy
+	(*MethodConfig_HedgingPolicy)(nil),              // 15: grpc.service_config.MethodConfig.HedgingPolicy
+	(*PriorityLoadBalancingPolicyConfig_Child)(nil), // 16: grpc.service_config.PriorityLoadBalancingPolicyConfig.Child
+	nil, // 17: grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry
+	(*WeightedTargetLoadBalancingPolicyConfig_Target)(nil), // 18: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target
+	nil, // 19: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry
+	(*LrsLoadBalancingPolicyConfig_Locality)(nil), // 20: grpc.service_config.LrsLoadBalancingPolicyConfig.Locality
+	(*ServiceConfig_RetryThrottlingPolicy)(nil),   // 21: grpc.service_config.ServiceConfig.RetryThrottlingPolicy
+	(*ServiceConfig_HealthCheckConfig)(nil),       // 22: grpc.service_config.ServiceConfig.HealthCheckConfig
+	(*wrappers.BoolValue)(nil),                    // 23: google.protobuf.BoolValue
+	(*duration.Duration)(nil),                     // 24: google.protobuf.Duration
+	(*wrappers.UInt32Value)(nil),                  // 25: google.protobuf.UInt32Value
+	(*wrappers.StringValue)(nil),                  // 26: google.protobuf.StringValue
+	(code.Code)(0),                                // 27: google.rpc.Code
+}
+var file_grpc_service_config_service_config_proto_depIdxs = []int32{
+	13, // 0: grpc.service_config.MethodConfig.name:type_name -> grpc.service_config.MethodConfig.Name
+	23, // 1: grpc.service_config.MethodConfig.wait_for_ready:type_name -> google.protobuf.BoolValue
+	24, // 2: grpc.service_config.MethodConfig.timeout:type_name -> google.protobuf.Duration
+	25, // 3: grpc.service_config.MethodConfig.max_request_message_bytes:type_name -> google.protobuf.UInt32Value
+	25, // 4: grpc.service_config.MethodConfig.max_response_message_bytes:type_name -> google.protobuf.UInt32Value
+	14, // 5: grpc.service_config.MethodConfig.retry_policy:type_name -> grpc.service_config.MethodConfig.RetryPolicy
+	15, // 6: grpc.service_config.MethodConfig.hedging_policy:type_name -> grpc.service_config.MethodConfig.HedgingPolicy
+	17, // 7: grpc.service_config.PriorityLoadBalancingPolicyConfig.children:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry
+	19, // 8: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.targets:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry
+	11, // 9: grpc.service_config.GrpcLbConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	11, // 10: grpc.service_config.XdsConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	11, // 11: grpc.service_config.XdsConfig.fallback_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	26, // 12: grpc.service_config.XdsConfig.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
+	26, // 13: grpc.service_config.EdsLoadBalancingPolicyConfig.lrs_load_reporting_server_name:type_name -> google.protobuf.StringValue
+	11, // 14: grpc.service_config.EdsLoadBalancingPolicyConfig.locality_picking_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	11, // 15: grpc.service_config.EdsLoadBalancingPolicyConfig.endpoint_picking_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	20, // 16: grpc.service_config.LrsLoadBalancingPolicyConfig.locality:type_name -> grpc.service_config.LrsLoadBalancingPolicyConfig.Locality
+	11, // 17: grpc.service_config.LrsLoadBalancingPolicyConfig.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	2,  // 18: grpc.service_config.LoadBalancingConfig.pick_first:type_name -> grpc.service_config.PickFirstConfig
+	3,  // 19: grpc.service_config.LoadBalancingConfig.round_robin:type_name -> grpc.service_config.RoundRobinConfig
+	6,  // 20: grpc.service_config.LoadBalancingConfig.grpclb:type_name -> grpc.service_config.GrpcLbConfig
+	4,  // 21: grpc.service_config.LoadBalancingConfig.priority:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig
+	5,  // 22: grpc.service_config.LoadBalancingConfig.weighted_target:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig
+	7,  // 23: grpc.service_config.LoadBalancingConfig.cds:type_name -> grpc.service_config.CdsConfig
+	9,  // 24: grpc.service_config.LoadBalancingConfig.eds:type_name -> grpc.service_config.EdsLoadBalancingPolicyConfig
+	10, // 25: grpc.service_config.LoadBalancingConfig.lrs:type_name -> grpc.service_config.LrsLoadBalancingPolicyConfig
+	8,  // 26: grpc.service_config.LoadBalancingConfig.xds:type_name -> grpc.service_config.XdsConfig
+	8,  // 27: grpc.service_config.LoadBalancingConfig.xds_experimental:type_name -> grpc.service_config.XdsConfig
+	0,  // 28: grpc.service_config.ServiceConfig.load_balancing_policy:type_name -> grpc.service_config.ServiceConfig.LoadBalancingPolicy
+	11, // 29: grpc.service_config.ServiceConfig.load_balancing_config:type_name -> grpc.service_config.LoadBalancingConfig
+	1,  // 30: grpc.service_config.ServiceConfig.method_config:type_name -> grpc.service_config.MethodConfig
+	21, // 31: grpc.service_config.ServiceConfig.retry_throttling:type_name -> grpc.service_config.ServiceConfig.RetryThrottlingPolicy
+	22, // 32: grpc.service_config.ServiceConfig.health_check_config:type_name -> grpc.service_config.ServiceConfig.HealthCheckConfig
+	24, // 33: grpc.service_config.MethodConfig.RetryPolicy.initial_backoff:type_name -> google.protobuf.Duration
+	24, // 34: grpc.service_config.MethodConfig.RetryPolicy.max_backoff:type_name -> google.protobuf.Duration
+	27, // 35: grpc.service_config.MethodConfig.RetryPolicy.retryable_status_codes:type_name -> google.rpc.Code
+	24, // 36: grpc.service_config.MethodConfig.HedgingPolicy.hedging_delay:type_name -> google.protobuf.Duration
+	27, // 37: grpc.service_config.MethodConfig.HedgingPolicy.non_fatal_status_codes:type_name -> google.rpc.Code
+	11, // 38: grpc.service_config.PriorityLoadBalancingPolicyConfig.Child.config:type_name -> grpc.service_config.LoadBalancingConfig
+	16, // 39: grpc.service_config.PriorityLoadBalancingPolicyConfig.ChildrenEntry.value:type_name -> grpc.service_config.PriorityLoadBalancingPolicyConfig.Child
+	11, // 40: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target.child_policy:type_name -> grpc.service_config.LoadBalancingConfig
+	18, // 41: grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.TargetsEntry.value:type_name -> grpc.service_config.WeightedTargetLoadBalancingPolicyConfig.Target
+	26, // 42: grpc.service_config.ServiceConfig.HealthCheckConfig.service_name:type_name -> google.protobuf.StringValue
+	43, // [43:43] is the sub-list for method output_type
+	43, // [43:43] is the sub-list for method input_type
+	43, // [43:43] is the sub-list for extension type_name
+	43, // [43:43] is the sub-list for extension extendee
+	0,  // [0:43] is the sub-list for field type_name
+}
+
+func init() { file_grpc_service_config_service_config_proto_init() }
+func file_grpc_service_config_service_config_proto_init() {
+	if File_grpc_service_config_service_config_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_grpc_service_config_service_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MethodConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PickFirstConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*RoundRobinConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PriorityLoadBalancingPolicyConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*WeightedTargetLoadBalancingPolicyConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GrpcLbConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*CdsConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*XdsConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EdsLoadBalancingPolicyConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LrsLoadBalancingPolicyConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalancingConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServiceConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MethodConfig_Name); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MethodConfig_RetryPolicy); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*MethodConfig_HedgingPolicy); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*PriorityLoadBalancingPolicyConfig_Child); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*WeightedTargetLoadBalancingPolicyConfig_Target); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LrsLoadBalancingPolicyConfig_Locality); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServiceConfig_RetryThrottlingPolicy); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_grpc_service_config_service_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServiceConfig_HealthCheckConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_grpc_service_config_service_config_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*MethodConfig_RetryPolicy_)(nil),
+		(*MethodConfig_HedgingPolicy_)(nil),
+	}
+	file_grpc_service_config_service_config_proto_msgTypes[10].OneofWrappers = []interface{}{
+		(*LoadBalancingConfig_PickFirst)(nil),
+		(*LoadBalancingConfig_RoundRobin)(nil),
+		(*LoadBalancingConfig_Grpclb)(nil),
+		(*LoadBalancingConfig_Priority)(nil),
+		(*LoadBalancingConfig_WeightedTarget)(nil),
+		(*LoadBalancingConfig_Cds)(nil),
+		(*LoadBalancingConfig_Eds)(nil),
+		(*LoadBalancingConfig_Lrs)(nil),
+		(*LoadBalancingConfig_Xds)(nil),
+		(*LoadBalancingConfig_XdsExperimental)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_grpc_service_config_service_config_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   22,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_grpc_service_config_service_config_proto_goTypes,
+		DependencyIndexes: file_grpc_service_config_service_config_proto_depIdxs,
+		EnumInfos:         file_grpc_service_config_service_config_proto_enumTypes,
+		MessageInfos:      file_grpc_service_config_service_config_proto_msgTypes,
+	}.Build()
+	File_grpc_service_config_service_config_proto = out.File
+	file_grpc_service_config_service_config_proto_rawDesc = nil
+	file_grpc_service_config_service_config_proto_goTypes = nil
+	file_grpc_service_config_service_config_proto_depIdxs = nil
 }
diff --git a/interop/grpc_testing/test.pb.go b/interop/grpc_testing/test.pb.go
index 9b44623..1f3bb0b 100644
--- a/interop/grpc_testing/test.pb.go
+++ b/interop/grpc_testing/test.pb.go
@@ -1,24 +1,46 @@
+// Copyright 2017 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.
+
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: interop/grpc_testing/test.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The type of payload that should be returned.
 type PayloadType int32
@@ -32,24 +54,45 @@
 	PayloadType_RANDOM PayloadType = 2
 )
 
-var PayloadType_name = map[int32]string{
-	0: "COMPRESSABLE",
-	1: "UNCOMPRESSABLE",
-	2: "RANDOM",
-}
+// Enum value maps for PayloadType.
+var (
+	PayloadType_name = map[int32]string{
+		0: "COMPRESSABLE",
+		1: "UNCOMPRESSABLE",
+		2: "RANDOM",
+	}
+	PayloadType_value = map[string]int32{
+		"COMPRESSABLE":   0,
+		"UNCOMPRESSABLE": 1,
+		"RANDOM":         2,
+	}
+)
 
-var PayloadType_value = map[string]int32{
-	"COMPRESSABLE":   0,
-	"UNCOMPRESSABLE": 1,
-	"RANDOM":         2,
+func (x PayloadType) Enum() *PayloadType {
+	p := new(PayloadType)
+	*p = x
+	return p
 }
 
 func (x PayloadType) String() string {
-	return proto.EnumName(PayloadType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PayloadType) Descriptor() protoreflect.EnumDescriptor {
+	return file_interop_grpc_testing_test_proto_enumTypes[0].Descriptor()
+}
+
+func (PayloadType) Type() protoreflect.EnumType {
+	return &file_interop_grpc_testing_test_proto_enumTypes[0]
+}
+
+func (x PayloadType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PayloadType.Descriptor instead.
 func (PayloadType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{0}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
 // The type of route that a client took to reach a server w.r.t. gRPCLB.
@@ -69,103 +112,139 @@
 	GrpclbRouteType_GRPCLB_ROUTE_TYPE_BACKEND GrpclbRouteType = 2
 )
 
-var GrpclbRouteType_name = map[int32]string{
-	0: "GRPCLB_ROUTE_TYPE_UNKNOWN",
-	1: "GRPCLB_ROUTE_TYPE_FALLBACK",
-	2: "GRPCLB_ROUTE_TYPE_BACKEND",
-}
+// Enum value maps for GrpclbRouteType.
+var (
+	GrpclbRouteType_name = map[int32]string{
+		0: "GRPCLB_ROUTE_TYPE_UNKNOWN",
+		1: "GRPCLB_ROUTE_TYPE_FALLBACK",
+		2: "GRPCLB_ROUTE_TYPE_BACKEND",
+	}
+	GrpclbRouteType_value = map[string]int32{
+		"GRPCLB_ROUTE_TYPE_UNKNOWN":  0,
+		"GRPCLB_ROUTE_TYPE_FALLBACK": 1,
+		"GRPCLB_ROUTE_TYPE_BACKEND":  2,
+	}
+)
 
-var GrpclbRouteType_value = map[string]int32{
-	"GRPCLB_ROUTE_TYPE_UNKNOWN":  0,
-	"GRPCLB_ROUTE_TYPE_FALLBACK": 1,
-	"GRPCLB_ROUTE_TYPE_BACKEND":  2,
+func (x GrpclbRouteType) Enum() *GrpclbRouteType {
+	p := new(GrpclbRouteType)
+	*p = x
+	return p
 }
 
 func (x GrpclbRouteType) String() string {
-	return proto.EnumName(GrpclbRouteType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (GrpclbRouteType) Descriptor() protoreflect.EnumDescriptor {
+	return file_interop_grpc_testing_test_proto_enumTypes[1].Descriptor()
+}
+
+func (GrpclbRouteType) Type() protoreflect.EnumType {
+	return &file_interop_grpc_testing_test_proto_enumTypes[1]
+}
+
+func (x GrpclbRouteType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use GrpclbRouteType.Descriptor instead.
 func (GrpclbRouteType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{1}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{1}
 }
 
 type Empty struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *Empty) Reset()         { *m = Empty{} }
-func (m *Empty) String() string { return proto.CompactTextString(m) }
-func (*Empty) ProtoMessage()    {}
+func (x *Empty) Reset() {
+	*x = Empty{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[0]
+		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_interop_grpc_testing_test_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && 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 fileDescriptor_534063719f48d90d, []int{0}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
-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
-
 // A block of data, to simply increase gRPC message size.
 type Payload struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The type of data in body.
 	Type PayloadType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.PayloadType" json:"type,omitempty"`
 	// Primary contents of payload.
-	Body                 []byte   `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
 }
 
-func (m *Payload) Reset()         { *m = Payload{} }
-func (m *Payload) String() string { return proto.CompactTextString(m) }
-func (*Payload) ProtoMessage()    {}
+func (x *Payload) Reset() {
+	*x = Payload{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Payload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Payload) ProtoMessage() {}
+
+func (x *Payload) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Payload.ProtoReflect.Descriptor instead.
 func (*Payload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{1}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Payload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Payload.Unmarshal(m, b)
-}
-func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Payload.Marshal(b, m, deterministic)
-}
-func (m *Payload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Payload.Merge(m, src)
-}
-func (m *Payload) XXX_Size() int {
-	return xxx_messageInfo_Payload.Size(m)
-}
-func (m *Payload) XXX_DiscardUnknown() {
-	xxx_messageInfo_Payload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Payload proto.InternalMessageInfo
-
-func (m *Payload) GetType() PayloadType {
-	if m != nil {
-		return m.Type
+func (x *Payload) GetType() PayloadType {
+	if x != nil {
+		return x.Type
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *Payload) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *Payload) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
@@ -173,54 +252,66 @@
 // A protobuf representation for grpc status. This is used by test
 // clients to specify a status that the server should attempt to return.
 type EchoStatus struct {
-	Code                 int32    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
-	Message              string   `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Code    int32  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
+	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
 }
 
-func (m *EchoStatus) Reset()         { *m = EchoStatus{} }
-func (m *EchoStatus) String() string { return proto.CompactTextString(m) }
-func (*EchoStatus) ProtoMessage()    {}
+func (x *EchoStatus) Reset() {
+	*x = EchoStatus{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EchoStatus) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EchoStatus) ProtoMessage() {}
+
+func (x *EchoStatus) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EchoStatus.ProtoReflect.Descriptor instead.
 func (*EchoStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{2}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *EchoStatus) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EchoStatus.Unmarshal(m, b)
-}
-func (m *EchoStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EchoStatus.Marshal(b, m, deterministic)
-}
-func (m *EchoStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EchoStatus.Merge(m, src)
-}
-func (m *EchoStatus) XXX_Size() int {
-	return xxx_messageInfo_EchoStatus.Size(m)
-}
-func (m *EchoStatus) XXX_DiscardUnknown() {
-	xxx_messageInfo_EchoStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EchoStatus proto.InternalMessageInfo
-
-func (m *EchoStatus) GetCode() int32 {
-	if m != nil {
-		return m.Code
+func (x *EchoStatus) GetCode() int32 {
+	if x != nil {
+		return x.Code
 	}
 	return 0
 }
 
-func (m *EchoStatus) GetMessage() string {
-	if m != nil {
-		return m.Message
+func (x *EchoStatus) GetMessage() string {
+	if x != nil {
+		return x.Message
 	}
 	return ""
 }
 
 // Unary request.
 type SimpleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, server randomly chooses one from other formats.
 	ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
@@ -238,95 +329,103 @@
 	// Whether SimpleResponse should include server_id.
 	FillServerId bool `protobuf:"varint,9,opt,name=fill_server_id,json=fillServerId,proto3" json:"fill_server_id,omitempty"`
 	// Whether SimpleResponse should include grpclb_route_type.
-	FillGrpclbRouteType  bool     `protobuf:"varint,10,opt,name=fill_grpclb_route_type,json=fillGrpclbRouteType,proto3" json:"fill_grpclb_route_type,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FillGrpclbRouteType bool `protobuf:"varint,10,opt,name=fill_grpclb_route_type,json=fillGrpclbRouteType,proto3" json:"fill_grpclb_route_type,omitempty"`
 }
 
-func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
-func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
-func (*SimpleRequest) ProtoMessage()    {}
+func (x *SimpleRequest) Reset() {
+	*x = SimpleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleRequest) ProtoMessage() {}
+
+func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
 func (*SimpleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{3}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
-}
-func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
-}
-func (m *SimpleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleRequest.Merge(m, src)
-}
-func (m *SimpleRequest) XXX_Size() int {
-	return xxx_messageInfo_SimpleRequest.Size(m)
-}
-func (m *SimpleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
-
-func (m *SimpleRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *SimpleRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *SimpleRequest) GetResponseSize() int32 {
-	if m != nil {
-		return m.ResponseSize
+func (x *SimpleRequest) GetResponseSize() int32 {
+	if x != nil {
+		return x.ResponseSize
 	}
 	return 0
 }
 
-func (m *SimpleRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleRequest) GetFillUsername() bool {
-	if m != nil {
-		return m.FillUsername
+func (x *SimpleRequest) GetFillUsername() bool {
+	if x != nil {
+		return x.FillUsername
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetFillOauthScope() bool {
-	if m != nil {
-		return m.FillOauthScope
+func (x *SimpleRequest) GetFillOauthScope() bool {
+	if x != nil {
+		return x.FillOauthScope
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *SimpleRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
-func (m *SimpleRequest) GetFillServerId() bool {
-	if m != nil {
-		return m.FillServerId
+func (x *SimpleRequest) GetFillServerId() bool {
+	if x != nil {
+		return x.FillServerId
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetFillGrpclbRouteType() bool {
-	if m != nil {
-		return m.FillGrpclbRouteType
+func (x *SimpleRequest) GetFillGrpclbRouteType() bool {
+	if x != nil {
+		return x.FillGrpclbRouteType
 	}
 	return false
 }
 
 // Unary response, as configured by the request.
 type SimpleResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase message size.
 	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 	// The user the request came from, for verifying authentication was
@@ -340,215 +439,247 @@
 	// gRPCLB Path.
 	GrpclbRouteType GrpclbRouteType `protobuf:"varint,5,opt,name=grpclb_route_type,json=grpclbRouteType,proto3,enum=grpc.testing.GrpclbRouteType" json:"grpclb_route_type,omitempty"`
 	// Server hostname.
-	Hostname             string   `protobuf:"bytes,6,opt,name=hostname,proto3" json:"hostname,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Hostname string `protobuf:"bytes,6,opt,name=hostname,proto3" json:"hostname,omitempty"`
 }
 
-func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
-func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
-func (*SimpleResponse) ProtoMessage()    {}
+func (x *SimpleResponse) Reset() {
+	*x = SimpleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleResponse) ProtoMessage() {}
+
+func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
 func (*SimpleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{4}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
-}
-func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
-}
-func (m *SimpleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleResponse.Merge(m, src)
-}
-func (m *SimpleResponse) XXX_Size() int {
-	return xxx_messageInfo_SimpleResponse.Size(m)
-}
-func (m *SimpleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
-
-func (m *SimpleResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleResponse) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *SimpleResponse) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetOauthScope() string {
-	if m != nil {
-		return m.OauthScope
+func (x *SimpleResponse) GetOauthScope() string {
+	if x != nil {
+		return x.OauthScope
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetServerId() string {
-	if m != nil {
-		return m.ServerId
+func (x *SimpleResponse) GetServerId() string {
+	if x != nil {
+		return x.ServerId
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetGrpclbRouteType() GrpclbRouteType {
-	if m != nil {
-		return m.GrpclbRouteType
+func (x *SimpleResponse) GetGrpclbRouteType() GrpclbRouteType {
+	if x != nil {
+		return x.GrpclbRouteType
 	}
 	return GrpclbRouteType_GRPCLB_ROUTE_TYPE_UNKNOWN
 }
 
-func (m *SimpleResponse) GetHostname() string {
-	if m != nil {
-		return m.Hostname
+func (x *SimpleResponse) GetHostname() string {
+	if x != nil {
+		return x.Hostname
 	}
 	return ""
 }
 
 // Client-streaming request.
 type StreamingInputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Optional input payload sent along with the request.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingInputCallRequest) Reset()         { *m = StreamingInputCallRequest{} }
-func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallRequest) ProtoMessage()    {}
+func (x *StreamingInputCallRequest) Reset() {
+	*x = StreamingInputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallRequest) ProtoMessage() {}
+
+func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{5}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *StreamingInputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingInputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallRequest.Merge(m, src)
-}
-func (m *StreamingInputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallRequest.Size(m)
-}
-func (m *StreamingInputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingInputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingInputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 // Client-streaming response.
 type StreamingInputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Aggregated size of payloads received from the client.
-	AggregatedPayloadSize int32    `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
 }
 
-func (m *StreamingInputCallResponse) Reset()         { *m = StreamingInputCallResponse{} }
-func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallResponse) ProtoMessage()    {}
+func (x *StreamingInputCallResponse) Reset() {
+	*x = StreamingInputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallResponse) ProtoMessage() {}
+
+func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{6}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *StreamingInputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingInputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallResponse.Merge(m, src)
-}
-func (m *StreamingInputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallResponse.Size(m)
-}
-func (m *StreamingInputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
-	if m != nil {
-		return m.AggregatedPayloadSize
+func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
+	if x != nil {
+		return x.AggregatedPayloadSize
 	}
 	return 0
 }
 
 // Configuration for a particular response.
 type ResponseParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload sizes in responses from the server.
 	// If response_type is COMPRESSABLE, this denotes the size before compression.
 	Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
 	// Desired interval between consecutive responses in the response stream in
 	// microseconds.
-	IntervalUs           int32    `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
 }
 
-func (m *ResponseParameters) Reset()         { *m = ResponseParameters{} }
-func (m *ResponseParameters) String() string { return proto.CompactTextString(m) }
-func (*ResponseParameters) ProtoMessage()    {}
+func (x *ResponseParameters) Reset() {
+	*x = ResponseParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ResponseParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResponseParameters) ProtoMessage() {}
+
+func (x *ResponseParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead.
 func (*ResponseParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{7}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ResponseParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResponseParameters.Unmarshal(m, b)
-}
-func (m *ResponseParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResponseParameters.Marshal(b, m, deterministic)
-}
-func (m *ResponseParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResponseParameters.Merge(m, src)
-}
-func (m *ResponseParameters) XXX_Size() int {
-	return xxx_messageInfo_ResponseParameters.Size(m)
-}
-func (m *ResponseParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResponseParameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResponseParameters proto.InternalMessageInfo
-
-func (m *ResponseParameters) GetSize() int32 {
-	if m != nil {
-		return m.Size
+func (x *ResponseParameters) GetSize() int32 {
+	if x != nil {
+		return x.Size
 	}
 	return 0
 }
 
-func (m *ResponseParameters) GetIntervalUs() int32 {
-	if m != nil {
-		return m.IntervalUs
+func (x *ResponseParameters) GetIntervalUs() int32 {
+	if x != nil {
+		return x.IntervalUs
 	}
 	return 0
 }
 
 // Server-streaming request.
 type StreamingOutputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, the payload from each response in the stream
 	// might be of different types. This is to simulate a mixed type of payload
@@ -559,344 +690,748 @@
 	// Optional input payload sent along with the request.
 	Payload *Payload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
 	// Whether server should return a given status
-	ResponseStatus       *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	ResponseStatus *EchoStatus `protobuf:"bytes,7,opt,name=response_status,json=responseStatus,proto3" json:"response_status,omitempty"`
 }
 
-func (m *StreamingOutputCallRequest) Reset()         { *m = StreamingOutputCallRequest{} }
-func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallRequest) ProtoMessage()    {}
+func (x *StreamingOutputCallRequest) Reset() {
+	*x = StreamingOutputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallRequest) ProtoMessage() {}
+
+func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{8}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *StreamingOutputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallRequest.Merge(m, src)
-}
-func (m *StreamingOutputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallRequest.Size(m)
-}
-func (m *StreamingOutputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingOutputCallRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *StreamingOutputCallRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
-	if m != nil {
-		return m.ResponseParameters
+func (x *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
+	if x != nil {
+		return x.ResponseParameters
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
-	if m != nil {
-		return m.ResponseStatus
+func (x *StreamingOutputCallRequest) GetResponseStatus() *EchoStatus {
+	if x != nil {
+		return x.ResponseStatus
 	}
 	return nil
 }
 
 // Server-streaming response, as configured by the request and parameters.
 type StreamingOutputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase response size.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingOutputCallResponse) Reset()         { *m = StreamingOutputCallResponse{} }
-func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallResponse) ProtoMessage()    {}
+func (x *StreamingOutputCallResponse) Reset() {
+	*x = StreamingOutputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[9]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallResponse) ProtoMessage() {}
+
+func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[9]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{9}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{9}
 }
 
-func (m *StreamingOutputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallResponse.Merge(m, src)
-}
-func (m *StreamingOutputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallResponse.Size(m)
-}
-func (m *StreamingOutputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingOutputCallResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 type LoadBalancerStatsRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Request stats for the next num_rpcs sent by client.
 	NumRpcs int32 `protobuf:"varint,1,opt,name=num_rpcs,json=numRpcs,proto3" json:"num_rpcs,omitempty"`
 	// If num_rpcs have not completed within timeout_sec, return partial results.
-	TimeoutSec           int32    `protobuf:"varint,2,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	TimeoutSec int32 `protobuf:"varint,2,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
 }
 
-func (m *LoadBalancerStatsRequest) Reset()         { *m = LoadBalancerStatsRequest{} }
-func (m *LoadBalancerStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*LoadBalancerStatsRequest) ProtoMessage()    {}
+func (x *LoadBalancerStatsRequest) Reset() {
+	*x = LoadBalancerStatsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[10]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalancerStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancerStatsRequest) ProtoMessage() {}
+
+func (x *LoadBalancerStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[10]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancerStatsRequest.ProtoReflect.Descriptor instead.
 func (*LoadBalancerStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{10}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{10}
 }
 
-func (m *LoadBalancerStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalancerStatsRequest.Unmarshal(m, b)
-}
-func (m *LoadBalancerStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalancerStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *LoadBalancerStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalancerStatsRequest.Merge(m, src)
-}
-func (m *LoadBalancerStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_LoadBalancerStatsRequest.Size(m)
-}
-func (m *LoadBalancerStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalancerStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalancerStatsRequest proto.InternalMessageInfo
-
-func (m *LoadBalancerStatsRequest) GetNumRpcs() int32 {
-	if m != nil {
-		return m.NumRpcs
+func (x *LoadBalancerStatsRequest) GetNumRpcs() int32 {
+	if x != nil {
+		return x.NumRpcs
 	}
 	return 0
 }
 
-func (m *LoadBalancerStatsRequest) GetTimeoutSec() int32 {
-	if m != nil {
-		return m.TimeoutSec
+func (x *LoadBalancerStatsRequest) GetTimeoutSec() int32 {
+	if x != nil {
+		return x.TimeoutSec
 	}
 	return 0
 }
 
 type LoadBalancerStatsResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of completed RPCs for each peer.
 	RpcsByPeer map[string]int32 `protobuf:"bytes,1,rep,name=rpcs_by_peer,json=rpcsByPeer,proto3" json:"rpcs_by_peer,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
 	// The number of RPCs that failed to record a remote peer.
 	NumFailures int32 `protobuf:"varint,2,opt,name=num_failures,json=numFailures,proto3" json:"num_failures,omitempty"`
 	// The number of completed RPCs for each method (UnaryCall or EmptyCall).
-	RpcsByMethod         map[string]*LoadBalancerStatsResponse_RpcsByPeer `protobuf:"bytes,3,rep,name=rpcs_by_method,json=rpcsByMethod,proto3" json:"rpcs_by_method,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:"-"`
+	RpcsByMethod map[string]*LoadBalancerStatsResponse_RpcsByPeer `protobuf:"bytes,3,rep,name=rpcs_by_method,json=rpcsByMethod,proto3" json:"rpcs_by_method,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (m *LoadBalancerStatsResponse) Reset()         { *m = LoadBalancerStatsResponse{} }
-func (m *LoadBalancerStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*LoadBalancerStatsResponse) ProtoMessage()    {}
+func (x *LoadBalancerStatsResponse) Reset() {
+	*x = LoadBalancerStatsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[11]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalancerStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancerStatsResponse) ProtoMessage() {}
+
+func (x *LoadBalancerStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[11]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancerStatsResponse.ProtoReflect.Descriptor instead.
 func (*LoadBalancerStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{11}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{11}
 }
 
-func (m *LoadBalancerStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalancerStatsResponse.Unmarshal(m, b)
-}
-func (m *LoadBalancerStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalancerStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *LoadBalancerStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalancerStatsResponse.Merge(m, src)
-}
-func (m *LoadBalancerStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_LoadBalancerStatsResponse.Size(m)
-}
-func (m *LoadBalancerStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalancerStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalancerStatsResponse proto.InternalMessageInfo
-
-func (m *LoadBalancerStatsResponse) GetRpcsByPeer() map[string]int32 {
-	if m != nil {
-		return m.RpcsByPeer
+func (x *LoadBalancerStatsResponse) GetRpcsByPeer() map[string]int32 {
+	if x != nil {
+		return x.RpcsByPeer
 	}
 	return nil
 }
 
-func (m *LoadBalancerStatsResponse) GetNumFailures() int32 {
-	if m != nil {
-		return m.NumFailures
+func (x *LoadBalancerStatsResponse) GetNumFailures() int32 {
+	if x != nil {
+		return x.NumFailures
 	}
 	return 0
 }
 
-func (m *LoadBalancerStatsResponse) GetRpcsByMethod() map[string]*LoadBalancerStatsResponse_RpcsByPeer {
-	if m != nil {
-		return m.RpcsByMethod
+func (x *LoadBalancerStatsResponse) GetRpcsByMethod() map[string]*LoadBalancerStatsResponse_RpcsByPeer {
+	if x != nil {
+		return x.RpcsByMethod
 	}
 	return nil
 }
 
 type LoadBalancerStatsResponse_RpcsByPeer struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The number of completed RPCs for each peer.
-	RpcsByPeer           map[string]int32 `protobuf:"bytes,1,rep,name=rpcs_by_peer,json=rpcsByPeer,proto3" json:"rpcs_by_peer,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:"-"`
+	RpcsByPeer map[string]int32 `protobuf:"bytes,1,rep,name=rpcs_by_peer,json=rpcsByPeer,proto3" json:"rpcs_by_peer,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
 }
 
-func (m *LoadBalancerStatsResponse_RpcsByPeer) Reset()         { *m = LoadBalancerStatsResponse_RpcsByPeer{} }
-func (m *LoadBalancerStatsResponse_RpcsByPeer) String() string { return proto.CompactTextString(m) }
-func (*LoadBalancerStatsResponse_RpcsByPeer) ProtoMessage()    {}
+func (x *LoadBalancerStatsResponse_RpcsByPeer) Reset() {
+	*x = LoadBalancerStatsResponse_RpcsByPeer{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_interop_grpc_testing_test_proto_msgTypes[12]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *LoadBalancerStatsResponse_RpcsByPeer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LoadBalancerStatsResponse_RpcsByPeer) ProtoMessage() {}
+
+func (x *LoadBalancerStatsResponse_RpcsByPeer) ProtoReflect() protoreflect.Message {
+	mi := &file_interop_grpc_testing_test_proto_msgTypes[12]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use LoadBalancerStatsResponse_RpcsByPeer.ProtoReflect.Descriptor instead.
 func (*LoadBalancerStatsResponse_RpcsByPeer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_534063719f48d90d, []int{11, 0}
+	return file_interop_grpc_testing_test_proto_rawDescGZIP(), []int{11, 0}
 }
 
-func (m *LoadBalancerStatsResponse_RpcsByPeer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer.Unmarshal(m, b)
-}
-func (m *LoadBalancerStatsResponse_RpcsByPeer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer.Marshal(b, m, deterministic)
-}
-func (m *LoadBalancerStatsResponse_RpcsByPeer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer.Merge(m, src)
-}
-func (m *LoadBalancerStatsResponse_RpcsByPeer) XXX_Size() int {
-	return xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer.Size(m)
-}
-func (m *LoadBalancerStatsResponse_RpcsByPeer) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoadBalancerStatsResponse_RpcsByPeer proto.InternalMessageInfo
-
-func (m *LoadBalancerStatsResponse_RpcsByPeer) GetRpcsByPeer() map[string]int32 {
-	if m != nil {
-		return m.RpcsByPeer
+func (x *LoadBalancerStatsResponse_RpcsByPeer) GetRpcsByPeer() map[string]int32 {
+	if x != nil {
+		return x.RpcsByPeer
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value)
-	proto.RegisterEnum("grpc.testing.GrpclbRouteType", GrpclbRouteType_name, GrpclbRouteType_value)
-	proto.RegisterType((*Empty)(nil), "grpc.testing.Empty")
-	proto.RegisterType((*Payload)(nil), "grpc.testing.Payload")
-	proto.RegisterType((*EchoStatus)(nil), "grpc.testing.EchoStatus")
-	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
-	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
-	proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest")
-	proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse")
-	proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters")
-	proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest")
-	proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse")
-	proto.RegisterType((*LoadBalancerStatsRequest)(nil), "grpc.testing.LoadBalancerStatsRequest")
-	proto.RegisterType((*LoadBalancerStatsResponse)(nil), "grpc.testing.LoadBalancerStatsResponse")
-	proto.RegisterMapType((map[string]*LoadBalancerStatsResponse_RpcsByPeer)(nil), "grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry")
-	proto.RegisterMapType((map[string]int32)(nil), "grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry")
-	proto.RegisterType((*LoadBalancerStatsResponse_RpcsByPeer)(nil), "grpc.testing.LoadBalancerStatsResponse.RpcsByPeer")
-	proto.RegisterMapType((map[string]int32)(nil), "grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry")
+var File_interop_grpc_testing_test_proto protoreflect.FileDescriptor
+
+var file_interop_grpc_testing_test_proto_rawDesc = []byte{
+	0x0a, 0x1f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6f, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22,
+	0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
+	0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x3a, 0x0a, 0x0a, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x22, 0x92, 0x03, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69,
+	0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+	0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73, 0x63,
+	0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c, 0x4f,
+	0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e,
+	0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
+	0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x6c,
+	0x62, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01,
+	0x28, 0x08, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f,
+	0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x0e, 0x53, 0x69, 0x6d, 0x70,
+	0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75,
+	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75,
+	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x61, 0x75, 0x74, 0x68,
+	0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x61,
+	0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72,
+	0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x5f,
+	0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52,
+	0x0f, 0x67, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65,
+	0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x19,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61,
+	0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72,
+	0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73,
+	0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65,
+	0x67, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65,
+	0x22, 0x49, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61,
+	0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x1a,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43,
+	0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
+	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a,
+	0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x41,
+	0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75,
+	0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61,
+	0x64, 0x22, 0x56, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65,
+	0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a,
+	0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x70, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x07, 0x6e, 0x75, 0x6d, 0x52, 0x70, 0x63, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65,
+	0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74,
+	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x22, 0xe2, 0x04, 0x0a, 0x19, 0x4c, 0x6f,
+	0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f,
+	0x62, 0x79, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61,
+	0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65,
+	0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65,
+	0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
+	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69,
+	0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x0e, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79,
+	0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61,
+	0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x74,
+	0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79,
+	0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x1a, 0xb1, 0x01, 0x0a, 0x0a, 0x52, 0x70, 0x63, 0x73, 0x42,
+	0x79, 0x50, 0x65, 0x65, 0x72, 0x12, 0x64, 0x0a, 0x0c, 0x72, 0x70, 0x63, 0x73, 0x5f, 0x62, 0x79,
+	0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x2e,
+	0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x0a, 0x72, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, 0x52,
+	0x70, 0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x52, 0x70,
+	0x63, 0x73, 0x42, 0x79, 0x50, 0x65, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x11, 0x52, 0x70, 0x63,
+	0x73, 0x42, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
+	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
+	0x12, 0x48, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x32, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c,
+	0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x73, 0x42, 0x79, 0x50,
+	0x65, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x3f,
+	0x0a, 0x0b, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
+	0x0c, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12,
+	0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c,
+	0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x2a,
+	0x6f, 0x0a, 0x0f, 0x47, 0x72, 0x70, 0x63, 0x6c, 0x62, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79,
+	0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55,
+	0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
+	0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54,
+	0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10,
+	0x01, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x52, 0x50, 0x43, 0x4c, 0x42, 0x5f, 0x52, 0x4f, 0x55, 0x54,
+	0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x45, 0x4e, 0x44, 0x10, 0x02,
+	0x32, 0xbb, 0x04, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x12, 0x35, 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70,
+	0x74, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79,
+	0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x6c, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70,
+	0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f,
+	0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43,
+	0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x69, 0x0a,
+	0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43,
+	0x61, 0x6c, 0x6c, 0x12, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75,
+	0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c,
+	0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
+	0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74,
+	0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28,
+	0x01, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65,
+	0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75,
+	0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53,
+	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61,
+	0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x55,
+	0x0a, 0x14, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x53,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x11, 0x55, 0x6e, 0x69, 0x6d, 0x70, 0x6c,
+	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
+	0x1a, 0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x45, 0x6d, 0x70, 0x74, 0x79, 0x32, 0x7f, 0x0a, 0x18, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c,
+	0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x63, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74,
+	0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53,
+	0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42,
+	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6f, 0x70, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("interop/grpc_testing/test.proto", fileDescriptor_534063719f48d90d) }
+var (
+	file_interop_grpc_testing_test_proto_rawDescOnce sync.Once
+	file_interop_grpc_testing_test_proto_rawDescData = file_interop_grpc_testing_test_proto_rawDesc
+)
 
-var fileDescriptor_534063719f48d90d = []byte{
-	// 1083 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x72, 0xdb, 0xc4,
-	0x17, 0x8f, 0x1c, 0x3b, 0x8e, 0x8f, 0x5d, 0xc7, 0xd9, 0xb4, 0xff, 0xbf, 0xe2, 0x50, 0x6a, 0x04,
-	0x43, 0x4d, 0x99, 0x3a, 0x8c, 0x3b, 0x7c, 0x75, 0xa6, 0x30, 0x71, 0xe2, 0xa4, 0x99, 0x3a, 0xb6,
-	0x91, 0x63, 0x98, 0x72, 0xa3, 0xd9, 0xc8, 0x1b, 0x45, 0x83, 0xa4, 0x15, 0xab, 0x55, 0x06, 0xf7,
-	0x86, 0x19, 0x1e, 0x81, 0x57, 0xe0, 0x09, 0xb8, 0xe6, 0x6d, 0x78, 0x12, 0x66, 0x57, 0x92, 0x3f,
-	0x15, 0x1a, 0x93, 0x81, 0x2b, 0xef, 0x9e, 0xcf, 0xdf, 0xf9, 0x9d, 0x3d, 0xbb, 0x16, 0x3c, 0xb2,
-	0x3d, 0x4e, 0x18, 0xf5, 0xf7, 0x2d, 0xe6, 0x9b, 0x06, 0x27, 0x01, 0xb7, 0x3d, 0x6b, 0x5f, 0xfc,
-	0x36, 0x7c, 0x46, 0x39, 0x45, 0x25, 0xa1, 0x68, 0xc4, 0x0a, 0x2d, 0x0f, 0xb9, 0xb6, 0xeb, 0xf3,
-	0xb1, 0xd6, 0x81, 0x7c, 0x1f, 0x8f, 0x1d, 0x8a, 0x47, 0xe8, 0x29, 0x64, 0xf9, 0xd8, 0x27, 0xaa,
-	0x52, 0x53, 0xea, 0xe5, 0xe6, 0x6e, 0x63, 0xd6, 0xa1, 0x11, 0x1b, 0x9d, 0x8f, 0x7d, 0xa2, 0x4b,
-	0x33, 0x84, 0x20, 0x7b, 0x41, 0x47, 0x63, 0x35, 0x53, 0x53, 0xea, 0x25, 0x5d, 0xae, 0xb5, 0xe7,
-	0x00, 0x6d, 0xf3, 0x8a, 0x0e, 0x38, 0xe6, 0x61, 0x20, 0x2c, 0x4c, 0x3a, 0x8a, 0x02, 0xe6, 0x74,
-	0xb9, 0x46, 0x2a, 0xe4, 0x5d, 0x12, 0x04, 0xd8, 0x22, 0xd2, 0xb1, 0xa0, 0x27, 0x5b, 0xed, 0xd7,
-	0x75, 0xb8, 0x37, 0xb0, 0x5d, 0xdf, 0x21, 0x3a, 0xf9, 0x31, 0x24, 0x01, 0x47, 0x5f, 0xc1, 0x3d,
-	0x46, 0x02, 0x9f, 0x7a, 0x01, 0x31, 0x6e, 0x87, 0xac, 0x94, 0xd8, 0x8b, 0x1d, 0x7a, 0x7f, 0xc6,
-	0x3f, 0xb0, 0xdf, 0x44, 0x19, 0x73, 0x53, 0xa3, 0x81, 0xfd, 0x86, 0xa0, 0x7d, 0xc8, 0xfb, 0x51,
-	0x04, 0x75, 0xbd, 0xa6, 0xd4, 0x8b, 0xcd, 0x07, 0xa9, 0xe1, 0xf5, 0xc4, 0x4a, 0x44, 0xbd, 0xb4,
-	0x1d, 0xc7, 0x08, 0x03, 0xc2, 0x3c, 0xec, 0x12, 0x35, 0x5b, 0x53, 0xea, 0x9b, 0x7a, 0x49, 0x08,
-	0x87, 0xb1, 0x0c, 0xd5, 0xa1, 0x22, 0x8d, 0x28, 0x0e, 0xf9, 0x95, 0x11, 0x98, 0xd4, 0x27, 0x6a,
-	0x4e, 0xda, 0x95, 0x85, 0xbc, 0x27, 0xc4, 0x03, 0x21, 0x45, 0x07, 0xb0, 0x35, 0x05, 0x29, 0x79,
-	0x53, 0xf3, 0x12, 0x87, 0x3a, 0x8f, 0x63, 0xca, 0xab, 0x5e, 0x9e, 0x14, 0x10, 0xf1, 0xfc, 0x01,
-	0xc8, 0xa0, 0x46, 0x40, 0xd8, 0x35, 0x61, 0x86, 0x3d, 0x52, 0x0b, 0x53, 0x48, 0x03, 0x29, 0x3c,
-	0x1d, 0xa1, 0x67, 0xf0, 0x3f, 0x69, 0x25, 0xa2, 0x3a, 0x17, 0x06, 0xa3, 0x21, 0x8f, 0x69, 0x05,
-	0x69, 0xbd, 0x23, 0xb4, 0x27, 0x52, 0xa9, 0x0b, 0x9d, 0xa0, 0x50, 0xfb, 0x25, 0x03, 0xe5, 0xa4,
-	0x29, 0x51, 0xce, 0x59, 0xc2, 0x94, 0x5b, 0x11, 0x56, 0x85, 0xcd, 0x09, 0x57, 0x51, 0xcf, 0x27,
-	0x7b, 0xf4, 0x08, 0x8a, 0xb3, 0x14, 0xad, 0x4b, 0x35, 0xd0, 0x29, 0x3d, 0x7b, 0x50, 0x98, 0x96,
-	0x95, 0x8d, 0xbc, 0x83, 0xa4, 0xa4, 0x53, 0xd8, 0x5e, 0xae, 0x26, 0x27, 0x0f, 0xc9, 0xc3, 0x79,
-	0x50, 0x0b, 0x75, 0xe9, 0x5b, 0xd6, 0xbc, 0x40, 0x80, 0xbc, 0xa2, 0x01, 0x97, 0x20, 0x37, 0xa2,
-	0x34, 0xc9, 0x5e, 0xeb, 0xc0, 0xee, 0x80, 0x33, 0x82, 0x5d, 0xdb, 0xb3, 0x4e, 0x3d, 0x3f, 0xe4,
-	0x87, 0xd8, 0x71, 0x92, 0x43, 0xba, 0x2a, 0x1d, 0xda, 0x39, 0x54, 0xd3, 0xa2, 0xc5, 0xec, 0x7e,
-	0x06, 0xff, 0xc7, 0x96, 0xc5, 0x88, 0x85, 0x39, 0x19, 0x19, 0xb1, 0x4f, 0x74, 0x7a, 0xa3, 0x31,
-	0x7a, 0x30, 0x55, 0xc7, 0xa1, 0xc5, 0x31, 0xd6, 0x4e, 0x01, 0x25, 0x31, 0xfa, 0x98, 0x61, 0x97,
-	0x70, 0xc2, 0xe4, 0x04, 0xce, 0xb8, 0xca, 0xb5, 0xa0, 0x5c, 0xde, 0x15, 0xd7, 0x58, 0x9c, 0xe1,
-	0x78, 0x26, 0x20, 0x11, 0x0d, 0x03, 0xed, 0xb7, 0xcc, 0x0c, 0xc2, 0x5e, 0xc8, 0x17, 0x0a, 0xbe,
-	0xeb, 0x54, 0x7e, 0x03, 0x3b, 0x13, 0x7f, 0x7f, 0x02, 0x55, 0xcd, 0xd4, 0xd6, 0xeb, 0xc5, 0x66,
-	0x6d, 0x3e, 0xca, 0x72, 0x49, 0x3a, 0x62, 0xcb, 0x65, 0xae, 0x3c, 0xc3, 0x77, 0x1f, 0x3a, 0xad,
-	0x0b, 0x7b, 0xa9, 0x24, 0xfd, 0xc3, 0x29, 0xd1, 0xbe, 0x05, 0xb5, 0x43, 0xf1, 0xa8, 0x85, 0x1d,
-	0xec, 0x99, 0x84, 0x89, 0x2c, 0x41, 0x42, 0xf9, 0x2e, 0x6c, 0x7a, 0xa1, 0x6b, 0x30, 0xdf, 0x0c,
-	0xe2, 0x56, 0xe6, 0xbd, 0xd0, 0xd5, 0x7d, 0x33, 0x10, 0xdd, 0xe4, 0xb6, 0x4b, 0x68, 0xc8, 0x8d,
-	0x80, 0x98, 0x49, 0x37, 0x63, 0xd1, 0x80, 0x98, 0xda, 0x9f, 0x59, 0xd8, 0x4d, 0x09, 0x1c, 0xc3,
-	0x7c, 0x0d, 0x25, 0x11, 0xd5, 0xb8, 0x18, 0x1b, 0x3e, 0x21, 0x4c, 0x55, 0x64, 0x17, 0x3e, 0x9f,
-	0xc7, 0x7a, 0xa3, 0x7b, 0x43, 0x40, 0x68, 0x8d, 0xfb, 0x84, 0xb0, 0xb6, 0xc7, 0xd9, 0x58, 0x07,
-	0x36, 0x11, 0xa0, 0xf7, 0xa0, 0x24, 0x40, 0x5f, 0x62, 0xdb, 0x09, 0x19, 0x49, 0x0e, 0x5a, 0xd1,
-	0x0b, 0xdd, 0xe3, 0x58, 0x84, 0x0c, 0x28, 0x27, 0xd9, 0x5d, 0xc2, 0xaf, 0xa8, 0x68, 0x9f, 0xc8,
-	0xff, 0xe5, 0x6a, 0xf9, 0xcf, 0xa4, 0x6f, 0x84, 0xa0, 0xc4, 0x66, 0x44, 0xd5, 0xdf, 0x15, 0x80,
-	0x29, 0x46, 0x34, 0x4a, 0xad, 0xb6, 0xb5, 0x7a, 0xb5, 0x7f, 0x57, 0x78, 0xf5, 0x05, 0x6c, 0x2d,
-	0xa8, 0x51, 0x05, 0xd6, 0x7f, 0x20, 0x63, 0xd9, 0xbb, 0x82, 0x2e, 0x96, 0xe8, 0x3e, 0xe4, 0xae,
-	0xb1, 0x13, 0x26, 0x6f, 0x52, 0xb4, 0x79, 0x9e, 0xf9, 0x42, 0xb9, 0xab, 0x7b, 0x00, 0xdb, 0x4b,
-	0xac, 0xa4, 0x04, 0x78, 0x39, 0x1b, 0xa0, 0xd8, 0x6c, 0xae, 0xce, 0xc1, 0x4c, 0xd2, 0x27, 0x5f,
-	0x43, 0x71, 0x66, 0xe0, 0x51, 0x05, 0x4a, 0x87, 0xbd, 0xb3, 0xbe, 0xde, 0x1e, 0x0c, 0x0e, 0x5a,
-	0x9d, 0x76, 0x65, 0x0d, 0x21, 0x28, 0x0f, 0xbb, 0x73, 0x32, 0x05, 0x01, 0x6c, 0xe8, 0x07, 0xdd,
-	0xa3, 0xde, 0x59, 0x25, 0xf3, 0x84, 0xc2, 0xd6, 0xc2, 0x15, 0x8d, 0x1e, 0xc2, 0xee, 0x89, 0xde,
-	0x3f, 0xec, 0xb4, 0x0c, 0xbd, 0x37, 0x3c, 0x6f, 0x1b, 0xe7, 0xaf, 0xfb, 0x6d, 0x63, 0xd8, 0x7d,
-	0xd5, 0xed, 0x7d, 0xd7, 0xad, 0xac, 0xa1, 0x77, 0xa1, 0xba, 0xac, 0x3e, 0x3e, 0xe8, 0x74, 0x5a,
-	0x07, 0x87, 0xaf, 0x2a, 0x4a, 0xba, 0xbb, 0xd0, 0xb5, 0xbb, 0x47, 0x95, 0x4c, 0xf3, 0x8f, 0x2c,
-	0x14, 0xcf, 0x49, 0xc0, 0xc5, 0xf3, 0x68, 0x9b, 0x04, 0x7d, 0x0a, 0x05, 0xf9, 0x87, 0x48, 0x0c,
-	0x31, 0xda, 0x59, 0xb8, 0x05, 0x84, 0xa2, 0x9a, 0x26, 0x44, 0xc7, 0x50, 0x18, 0x7a, 0x98, 0x45,
-	0x6e, 0x7b, 0xf3, 0x16, 0x73, 0x7f, 0x66, 0xaa, 0xef, 0xa4, 0x2b, 0xe3, 0x39, 0x74, 0x60, 0x27,
-	0xe5, 0x36, 0x41, 0xf5, 0x05, 0xa7, 0x1b, 0x6f, 0xe5, 0xea, 0x47, 0xb7, 0xb0, 0x8c, 0x72, 0x7d,
-	0xa2, 0x20, 0x1b, 0xd0, 0xf2, 0x13, 0x84, 0x1e, 0xdf, 0x10, 0x62, 0xf1, 0xc9, 0xab, 0xd6, 0xdf,
-	0x6e, 0x18, 0xa5, 0xaa, 0x8b, 0x54, 0xe5, 0xe3, 0xd0, 0x71, 0x8e, 0x42, 0xdf, 0x21, 0x3f, 0xfd,
-	0x6b, 0x35, 0xd5, 0x15, 0x59, 0x55, 0xf9, 0x25, 0x76, 0x2e, 0xff, 0x83, 0x54, 0xcd, 0x21, 0xdc,
-	0x1f, 0x7a, 0xb2, 0x83, 0x2e, 0xf1, 0x38, 0x19, 0x25, 0xa7, 0xe8, 0x05, 0x6c, 0xcf, 0xc9, 0x57,
-	0x3b, 0x4d, 0xcd, 0x9f, 0x53, 0xde, 0x80, 0x24, 0xb4, 0x09, 0xe5, 0x13, 0xc2, 0x0f, 0x1d, 0x9b,
-	0x78, 0x5c, 0x2a, 0xd0, 0x87, 0x6f, 0x9d, 0xd9, 0xa8, 0xb6, 0xc7, 0xb7, 0x9c, 0x6d, 0x6d, 0xad,
-	0xf5, 0xf4, 0xfb, 0x8f, 0x2d, 0x4a, 0x2d, 0x87, 0x34, 0x2c, 0xea, 0x60, 0xcf, 0x6a, 0x50, 0x66,
-	0xc9, 0x2f, 0x8a, 0xfd, 0xb4, 0xcf, 0x8b, 0x8b, 0x0d, 0xf9, 0x69, 0xf1, 0xec, 0xaf, 0x00, 0x00,
-	0x00, 0xff, 0xff, 0x8c, 0x0b, 0x8c, 0x16, 0x7d, 0x0c, 0x00, 0x00,
+func file_interop_grpc_testing_test_proto_rawDescGZIP() []byte {
+	file_interop_grpc_testing_test_proto_rawDescOnce.Do(func() {
+		file_interop_grpc_testing_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_interop_grpc_testing_test_proto_rawDescData)
+	})
+	return file_interop_grpc_testing_test_proto_rawDescData
+}
+
+var file_interop_grpc_testing_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
+var file_interop_grpc_testing_test_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
+var file_interop_grpc_testing_test_proto_goTypes = []interface{}{
+	(PayloadType)(0),                             // 0: grpc.testing.PayloadType
+	(GrpclbRouteType)(0),                         // 1: grpc.testing.GrpclbRouteType
+	(*Empty)(nil),                                // 2: grpc.testing.Empty
+	(*Payload)(nil),                              // 3: grpc.testing.Payload
+	(*EchoStatus)(nil),                           // 4: grpc.testing.EchoStatus
+	(*SimpleRequest)(nil),                        // 5: grpc.testing.SimpleRequest
+	(*SimpleResponse)(nil),                       // 6: grpc.testing.SimpleResponse
+	(*StreamingInputCallRequest)(nil),            // 7: grpc.testing.StreamingInputCallRequest
+	(*StreamingInputCallResponse)(nil),           // 8: grpc.testing.StreamingInputCallResponse
+	(*ResponseParameters)(nil),                   // 9: grpc.testing.ResponseParameters
+	(*StreamingOutputCallRequest)(nil),           // 10: grpc.testing.StreamingOutputCallRequest
+	(*StreamingOutputCallResponse)(nil),          // 11: grpc.testing.StreamingOutputCallResponse
+	(*LoadBalancerStatsRequest)(nil),             // 12: grpc.testing.LoadBalancerStatsRequest
+	(*LoadBalancerStatsResponse)(nil),            // 13: grpc.testing.LoadBalancerStatsResponse
+	(*LoadBalancerStatsResponse_RpcsByPeer)(nil), // 14: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer
+	nil, // 15: grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry
+	nil, // 16: grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry
+	nil, // 17: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry
+}
+var file_interop_grpc_testing_test_proto_depIdxs = []int32{
+	0,  // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType
+	0,  // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType
+	3,  // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload
+	4,  // 3: grpc.testing.SimpleRequest.response_status:type_name -> grpc.testing.EchoStatus
+	3,  // 4: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload
+	1,  // 5: grpc.testing.SimpleResponse.grpclb_route_type:type_name -> grpc.testing.GrpclbRouteType
+	3,  // 6: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload
+	0,  // 7: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType
+	9,  // 8: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters
+	3,  // 9: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload
+	4,  // 10: grpc.testing.StreamingOutputCallRequest.response_status:type_name -> grpc.testing.EchoStatus
+	3,  // 11: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload
+	15, // 12: grpc.testing.LoadBalancerStatsResponse.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeerEntry
+	16, // 13: grpc.testing.LoadBalancerStatsResponse.rpcs_by_method:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry
+	17, // 14: grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.rpcs_by_peer:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeer.RpcsByPeerEntry
+	14, // 15: grpc.testing.LoadBalancerStatsResponse.RpcsByMethodEntry.value:type_name -> grpc.testing.LoadBalancerStatsResponse.RpcsByPeer
+	2,  // 16: grpc.testing.TestService.EmptyCall:input_type -> grpc.testing.Empty
+	5,  // 17: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest
+	10, // 18: grpc.testing.TestService.StreamingOutputCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	7,  // 19: grpc.testing.TestService.StreamingInputCall:input_type -> grpc.testing.StreamingInputCallRequest
+	10, // 20: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	10, // 21: grpc.testing.TestService.HalfDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	2,  // 22: grpc.testing.UnimplementedService.UnimplementedCall:input_type -> grpc.testing.Empty
+	12, // 23: grpc.testing.LoadBalancerStatsService.GetClientStats:input_type -> grpc.testing.LoadBalancerStatsRequest
+	2,  // 24: grpc.testing.TestService.EmptyCall:output_type -> grpc.testing.Empty
+	6,  // 25: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse
+	11, // 26: grpc.testing.TestService.StreamingOutputCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	8,  // 27: grpc.testing.TestService.StreamingInputCall:output_type -> grpc.testing.StreamingInputCallResponse
+	11, // 28: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	11, // 29: grpc.testing.TestService.HalfDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	2,  // 30: grpc.testing.UnimplementedService.UnimplementedCall:output_type -> grpc.testing.Empty
+	13, // 31: grpc.testing.LoadBalancerStatsService.GetClientStats:output_type -> grpc.testing.LoadBalancerStatsResponse
+	24, // [24:32] is the sub-list for method output_type
+	16, // [16:24] is the sub-list for method input_type
+	16, // [16:16] is the sub-list for extension type_name
+	16, // [16:16] is the sub-list for extension extendee
+	0,  // [0:16] is the sub-list for field type_name
+}
+
+func init() { file_interop_grpc_testing_test_proto_init() }
+func file_interop_grpc_testing_test_proto_init() {
+	if File_interop_grpc_testing_test_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_interop_grpc_testing_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Empty); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Payload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EchoStatus); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResponseParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalancerStatsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalancerStatsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_interop_grpc_testing_test_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*LoadBalancerStatsResponse_RpcsByPeer); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_interop_grpc_testing_test_proto_rawDesc,
+			NumEnums:      2,
+			NumMessages:   16,
+			NumExtensions: 0,
+			NumServices:   3,
+		},
+		GoTypes:           file_interop_grpc_testing_test_proto_goTypes,
+		DependencyIndexes: file_interop_grpc_testing_test_proto_depIdxs,
+		EnumInfos:         file_interop_grpc_testing_test_proto_enumTypes,
+		MessageInfos:      file_interop_grpc_testing_test_proto_msgTypes,
+	}.Build()
+	File_interop_grpc_testing_test_proto = out.File
+	file_interop_grpc_testing_test_proto_rawDesc = nil
+	file_interop_grpc_testing_test_proto_goTypes = nil
+	file_interop_grpc_testing_test_proto_depIdxs = nil
 }
diff --git a/profiling/proto/service.pb.go b/profiling/proto/service.pb.go
index 831a627..889c14e 100644
--- a/profiling/proto/service.pb.go
+++ b/profiling/proto/service.pb.go
@@ -1,170 +1,219 @@
+// Copyright 2019 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: profiling/proto/service.proto
 
 package proto
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // EnableRequest defines the fields in a /Profiling/Enable method request to
 // toggle profiling on and off within a gRPC program.
 type EnableRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Setting this to true will enable profiling. Setting this to false will
 	// disable profiling.
-	Enabled              bool     `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
 }
 
-func (m *EnableRequest) Reset()         { *m = EnableRequest{} }
-func (m *EnableRequest) String() string { return proto.CompactTextString(m) }
-func (*EnableRequest) ProtoMessage()    {}
+func (x *EnableRequest) Reset() {
+	*x = EnableRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EnableRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnableRequest) ProtoMessage() {}
+
+func (x *EnableRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EnableRequest.ProtoReflect.Descriptor instead.
 func (*EnableRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{0}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *EnableRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EnableRequest.Unmarshal(m, b)
-}
-func (m *EnableRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EnableRequest.Marshal(b, m, deterministic)
-}
-func (m *EnableRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EnableRequest.Merge(m, src)
-}
-func (m *EnableRequest) XXX_Size() int {
-	return xxx_messageInfo_EnableRequest.Size(m)
-}
-func (m *EnableRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_EnableRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EnableRequest proto.InternalMessageInfo
-
-func (m *EnableRequest) GetEnabled() bool {
-	if m != nil {
-		return m.Enabled
+func (x *EnableRequest) GetEnabled() bool {
+	if x != nil {
+		return x.Enabled
 	}
 	return false
 }
 
 // EnableResponse defines the fields in a /Profiling/Enable method response.
 type EnableResponse struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *EnableResponse) Reset()         { *m = EnableResponse{} }
-func (m *EnableResponse) String() string { return proto.CompactTextString(m) }
-func (*EnableResponse) ProtoMessage()    {}
+func (x *EnableResponse) Reset() {
+	*x = EnableResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EnableResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnableResponse) ProtoMessage() {}
+
+func (x *EnableResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EnableResponse.ProtoReflect.Descriptor instead.
 func (*EnableResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{1}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *EnableResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EnableResponse.Unmarshal(m, b)
-}
-func (m *EnableResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EnableResponse.Marshal(b, m, deterministic)
-}
-func (m *EnableResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EnableResponse.Merge(m, src)
-}
-func (m *EnableResponse) XXX_Size() int {
-	return xxx_messageInfo_EnableResponse.Size(m)
-}
-func (m *EnableResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_EnableResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_EnableResponse proto.InternalMessageInfo
-
 // GetStreamStatsRequest defines the fields in a /Profiling/GetStreamStats
 // method request to retrieve stream-level stats in a gRPC client/server.
 type GetStreamStatsRequest struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *GetStreamStatsRequest) Reset()         { *m = GetStreamStatsRequest{} }
-func (m *GetStreamStatsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetStreamStatsRequest) ProtoMessage()    {}
+func (x *GetStreamStatsRequest) Reset() {
+	*x = GetStreamStatsRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetStreamStatsRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetStreamStatsRequest) ProtoMessage() {}
+
+func (x *GetStreamStatsRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetStreamStatsRequest.ProtoReflect.Descriptor instead.
 func (*GetStreamStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{2}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *GetStreamStatsRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetStreamStatsRequest.Unmarshal(m, b)
-}
-func (m *GetStreamStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetStreamStatsRequest.Marshal(b, m, deterministic)
-}
-func (m *GetStreamStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetStreamStatsRequest.Merge(m, src)
-}
-func (m *GetStreamStatsRequest) XXX_Size() int {
-	return xxx_messageInfo_GetStreamStatsRequest.Size(m)
-}
-func (m *GetStreamStatsRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetStreamStatsRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetStreamStatsRequest proto.InternalMessageInfo
-
 // GetStreamStatsResponse defines the fields in a /Profiling/GetStreamStats
 // method response.
 type GetStreamStatsResponse struct {
-	StreamStats          []*Stat  `protobuf:"bytes,1,rep,name=stream_stats,json=streamStats,proto3" json:"stream_stats,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	StreamStats []*Stat `protobuf:"bytes,1,rep,name=stream_stats,json=streamStats,proto3" json:"stream_stats,omitempty"`
 }
 
-func (m *GetStreamStatsResponse) Reset()         { *m = GetStreamStatsResponse{} }
-func (m *GetStreamStatsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetStreamStatsResponse) ProtoMessage()    {}
+func (x *GetStreamStatsResponse) Reset() {
+	*x = GetStreamStatsResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GetStreamStatsResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetStreamStatsResponse) ProtoMessage() {}
+
+func (x *GetStreamStatsResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetStreamStatsResponse.ProtoReflect.Descriptor instead.
 func (*GetStreamStatsResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{3}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *GetStreamStatsResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GetStreamStatsResponse.Unmarshal(m, b)
-}
-func (m *GetStreamStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GetStreamStatsResponse.Marshal(b, m, deterministic)
-}
-func (m *GetStreamStatsResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GetStreamStatsResponse.Merge(m, src)
-}
-func (m *GetStreamStatsResponse) XXX_Size() int {
-	return xxx_messageInfo_GetStreamStatsResponse.Size(m)
-}
-func (m *GetStreamStatsResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GetStreamStatsResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GetStreamStatsResponse proto.InternalMessageInfo
-
-func (m *GetStreamStatsResponse) GetStreamStats() []*Stat {
-	if m != nil {
-		return m.StreamStats
+func (x *GetStreamStatsResponse) GetStreamStats() []*Stat {
+	if x != nil {
+		return x.StreamStats
 	}
 	return nil
 }
@@ -173,6 +222,10 @@
 // gRPC that's being profiled. It includes a tag and some additional metadata
 // to identify itself.
 type Timer struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// tags is a comma-separated list of strings used to tag a timer.
 	Tags string `protobuf:"bytes,1,opt,name=tags,proto3" json:"tags,omitempty"`
 	// begin_sec and begin_nsec are the start epoch second and nanosecond,
@@ -186,75 +239,79 @@
 	EndSec  int64 `protobuf:"varint,4,opt,name=end_sec,json=endSec,proto3" json:"end_sec,omitempty"`
 	EndNsec int32 `protobuf:"varint,5,opt,name=end_nsec,json=endNsec,proto3" json:"end_nsec,omitempty"`
 	// go_id is the goroutine ID of the component being profiled.
-	GoId                 int64    `protobuf:"varint,6,opt,name=go_id,json=goId,proto3" json:"go_id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	GoId int64 `protobuf:"varint,6,opt,name=go_id,json=goId,proto3" json:"go_id,omitempty"`
 }
 
-func (m *Timer) Reset()         { *m = Timer{} }
-func (m *Timer) String() string { return proto.CompactTextString(m) }
-func (*Timer) ProtoMessage()    {}
+func (x *Timer) Reset() {
+	*x = Timer{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Timer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Timer) ProtoMessage() {}
+
+func (x *Timer) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Timer.ProtoReflect.Descriptor instead.
 func (*Timer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{4}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *Timer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Timer.Unmarshal(m, b)
-}
-func (m *Timer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Timer.Marshal(b, m, deterministic)
-}
-func (m *Timer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Timer.Merge(m, src)
-}
-func (m *Timer) XXX_Size() int {
-	return xxx_messageInfo_Timer.Size(m)
-}
-func (m *Timer) XXX_DiscardUnknown() {
-	xxx_messageInfo_Timer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Timer proto.InternalMessageInfo
-
-func (m *Timer) GetTags() string {
-	if m != nil {
-		return m.Tags
+func (x *Timer) GetTags() string {
+	if x != nil {
+		return x.Tags
 	}
 	return ""
 }
 
-func (m *Timer) GetBeginSec() int64 {
-	if m != nil {
-		return m.BeginSec
+func (x *Timer) GetBeginSec() int64 {
+	if x != nil {
+		return x.BeginSec
 	}
 	return 0
 }
 
-func (m *Timer) GetBeginNsec() int32 {
-	if m != nil {
-		return m.BeginNsec
+func (x *Timer) GetBeginNsec() int32 {
+	if x != nil {
+		return x.BeginNsec
 	}
 	return 0
 }
 
-func (m *Timer) GetEndSec() int64 {
-	if m != nil {
-		return m.EndSec
+func (x *Timer) GetEndSec() int64 {
+	if x != nil {
+		return x.EndSec
 	}
 	return 0
 }
 
-func (m *Timer) GetEndNsec() int32 {
-	if m != nil {
-		return m.EndNsec
+func (x *Timer) GetEndNsec() int32 {
+	if x != nil {
+		return x.EndNsec
 	}
 	return 0
 }
 
-func (m *Timer) GetGoId() int64 {
-	if m != nil {
-		return m.GoId
+func (x *Timer) GetGoId() int64 {
+	if x != nil {
+		return x.GoId
 	}
 	return 0
 }
@@ -262,6 +319,10 @@
 // A Stat is a collection of Timers along with some additional
 // metadata to tag and identify itself.
 type Stat struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// tags is a comma-separated list of strings used to categorize a stat.
 	Tags string `protobuf:"bytes,1,opt,name=tags,proto3" json:"tags,omitempty"`
 	// timers is an array of Timers, each representing a different
@@ -271,94 +332,247 @@
 	// undefined encoding format. For example, the Stats returned by the
 	// /Profiling/GetStreamStats service use the metadata field to encode the
 	// connection ID and the stream ID of each query.
-	Metadata             []byte   `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Metadata []byte `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
 }
 
-func (m *Stat) Reset()         { *m = Stat{} }
-func (m *Stat) String() string { return proto.CompactTextString(m) }
-func (*Stat) ProtoMessage()    {}
+func (x *Stat) Reset() {
+	*x = Stat{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_profiling_proto_service_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Stat) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Stat) ProtoMessage() {}
+
+func (x *Stat) ProtoReflect() protoreflect.Message {
+	mi := &file_profiling_proto_service_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Stat.ProtoReflect.Descriptor instead.
 func (*Stat) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e1ab2aa17b47c6fb, []int{5}
+	return file_profiling_proto_service_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *Stat) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Stat.Unmarshal(m, b)
-}
-func (m *Stat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Stat.Marshal(b, m, deterministic)
-}
-func (m *Stat) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Stat.Merge(m, src)
-}
-func (m *Stat) XXX_Size() int {
-	return xxx_messageInfo_Stat.Size(m)
-}
-func (m *Stat) XXX_DiscardUnknown() {
-	xxx_messageInfo_Stat.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Stat proto.InternalMessageInfo
-
-func (m *Stat) GetTags() string {
-	if m != nil {
-		return m.Tags
+func (x *Stat) GetTags() string {
+	if x != nil {
+		return x.Tags
 	}
 	return ""
 }
 
-func (m *Stat) GetTimers() []*Timer {
-	if m != nil {
-		return m.Timers
+func (x *Stat) GetTimers() []*Timer {
+	if x != nil {
+		return x.Timers
 	}
 	return nil
 }
 
-func (m *Stat) GetMetadata() []byte {
-	if m != nil {
-		return m.Metadata
+func (x *Stat) GetMetadata() []byte {
+	if x != nil {
+		return x.Metadata
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*EnableRequest)(nil), "grpc.go.profiling.v1alpha.EnableRequest")
-	proto.RegisterType((*EnableResponse)(nil), "grpc.go.profiling.v1alpha.EnableResponse")
-	proto.RegisterType((*GetStreamStatsRequest)(nil), "grpc.go.profiling.v1alpha.GetStreamStatsRequest")
-	proto.RegisterType((*GetStreamStatsResponse)(nil), "grpc.go.profiling.v1alpha.GetStreamStatsResponse")
-	proto.RegisterType((*Timer)(nil), "grpc.go.profiling.v1alpha.Timer")
-	proto.RegisterType((*Stat)(nil), "grpc.go.profiling.v1alpha.Stat")
+var File_profiling_proto_service_proto protoreflect.FileDescriptor
+
+var file_profiling_proto_service_proto_rawDesc = []byte{
+	0x0a, 0x1d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x19, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69,
+	0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x22, 0x29, 0x0a, 0x0d, 0x45, 0x6e,
+	0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65,
+	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e,
+	0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x10, 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61,
+	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x73, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69,
+	0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61,
+	0x74, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xa0,
+	0x01, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09,
+	0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
+	0x08, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x53, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x67,
+	0x69, 0x6e, 0x5f, 0x6e, 0x73, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x62,
+	0x65, 0x67, 0x69, 0x6e, 0x4e, 0x73, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x5f,
+	0x73, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x65,
+	0x63, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x6e, 0x73, 0x65, 0x63, 0x18, 0x05, 0x20,
+	0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x4e, 0x73, 0x65, 0x63, 0x12, 0x13, 0x0a, 0x05,
+	0x67, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x67, 0x6f, 0x49,
+	0x64, 0x22, 0x70, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67,
+	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x38, 0x0a,
+	0x06, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x52,
+	0x06, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x32, 0xe1, 0x01, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e,
+	0x67, 0x12, 0x5d, 0x0a, 0x06, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e,
+	0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x75, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61,
+	0x74, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
+	0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47,
+	0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x6f, 0x2e, 0x70,
+	0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+	0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("profiling/proto/service.proto", fileDescriptor_e1ab2aa17b47c6fb) }
+var (
+	file_profiling_proto_service_proto_rawDescOnce sync.Once
+	file_profiling_proto_service_proto_rawDescData = file_profiling_proto_service_proto_rawDesc
+)
 
-var fileDescriptor_e1ab2aa17b47c6fb = []byte{
-	// 392 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x41, 0xab, 0xd3, 0x40,
-	0x10, 0xc7, 0xc9, 0x6b, 0x12, 0xd3, 0x79, 0xcf, 0x87, 0xac, 0xe8, 0xcb, 0xab, 0x14, 0x43, 0x0e,
-	0x92, 0x5e, 0x36, 0xb6, 0x5e, 0x3c, 0x17, 0x44, 0xbc, 0x88, 0x6c, 0x3d, 0x89, 0x52, 0xb6, 0xc9,
-	0xb8, 0x06, 0xd2, 0x6c, 0xcc, 0x6e, 0xfb, 0x79, 0xfc, 0x6a, 0x7e, 0x13, 0xd9, 0x49, 0x5b, 0x69,
-	0xa9, 0xc5, 0x77, 0x4a, 0x66, 0xe6, 0xff, 0x9b, 0xfd, 0x0f, 0x33, 0x30, 0x6e, 0x3b, 0xfd, 0xbd,
-	0xaa, 0xab, 0x46, 0xe5, 0x6d, 0xa7, 0xad, 0xce, 0x0d, 0x76, 0xdb, 0xaa, 0x40, 0x4e, 0x11, 0xbb,
-	0x57, 0x5d, 0x5b, 0x70, 0xa5, 0xf9, 0x41, 0xc6, 0xb7, 0x53, 0x59, 0xb7, 0x3f, 0x64, 0x3a, 0x81,
-	0xc7, 0xef, 0x1a, 0xb9, 0xaa, 0x51, 0xe0, 0xcf, 0x0d, 0x1a, 0xcb, 0x62, 0x78, 0x84, 0x94, 0x28,
-	0x63, 0x2f, 0xf1, 0xb2, 0x48, 0xec, 0xc3, 0xf4, 0x09, 0xdc, 0xee, 0xa5, 0xa6, 0xd5, 0x8d, 0xc1,
-	0xf4, 0x0e, 0x9e, 0xbd, 0x47, 0xbb, 0xb0, 0x1d, 0xca, 0xf5, 0xc2, 0x4a, 0x6b, 0x76, 0x4d, 0xd2,
-	0xaf, 0xf0, 0xfc, 0xb4, 0xd0, 0x23, 0x6c, 0x0e, 0x37, 0x86, 0xd2, 0x4b, 0xe3, 0xf2, 0xb1, 0x97,
-	0x0c, 0xb2, 0xeb, 0xd9, 0x4b, 0xfe, 0x4f, 0x87, 0xdc, 0xf1, 0xe2, 0xda, 0xfc, 0xed, 0x95, 0xfe,
-	0xf2, 0x20, 0xf8, 0x5c, 0xad, 0xb1, 0x63, 0x0c, 0x7c, 0x2b, 0x95, 0x21, 0xa7, 0x43, 0x41, 0xff,
-	0xec, 0x05, 0x0c, 0x57, 0xa8, 0xaa, 0x66, 0x69, 0xb0, 0x88, 0xaf, 0x12, 0x2f, 0x1b, 0x88, 0x88,
-	0x12, 0x0b, 0x2c, 0xd8, 0x18, 0xa0, 0x2f, 0x36, 0xae, 0x3a, 0x48, 0xbc, 0x2c, 0x10, 0xbd, 0xfc,
-	0xa3, 0xc1, 0x82, 0xdd, 0xb9, 0xe1, 0x4b, 0x22, 0x7d, 0x22, 0x43, 0x6c, 0x4a, 0xc7, 0xdd, 0x43,
-	0xe4, 0x0a, 0x44, 0x05, 0x44, 0x39, 0x21, 0x31, 0x4f, 0x21, 0x50, 0x7a, 0x59, 0x95, 0x71, 0x48,
-	0x84, 0xaf, 0xf4, 0x87, 0x32, 0x6d, 0xc1, 0x77, 0x5e, 0xcf, 0x1a, 0x7c, 0x0b, 0xa1, 0x75, 0xee,
-	0x4d, 0x7c, 0x45, 0xc3, 0x27, 0x17, 0x86, 0xa7, 0x31, 0xc5, 0x4e, 0xcf, 0x46, 0x10, 0xad, 0xd1,
-	0xca, 0x52, 0x5a, 0x49, 0xde, 0x6f, 0xc4, 0x21, 0x9e, 0xfd, 0xf6, 0x60, 0xf8, 0x69, 0xcf, 0xb3,
-	0x6f, 0x10, 0xf6, 0xbb, 0x62, 0xd9, 0x85, 0xee, 0x47, 0x9b, 0x1f, 0x4d, 0xfe, 0x43, 0xb9, 0xdb,
-	0xe2, 0x06, 0x6e, 0x8f, 0xf7, 0xcb, 0x5e, 0x5f, 0x80, 0xcf, 0xde, 0xc8, 0x68, 0xfa, 0x00, 0xa2,
-	0x7f, 0x76, 0x9e, 0x7d, 0x79, 0xa5, 0xb4, 0x56, 0x35, 0x72, 0xa5, 0x6b, 0xd9, 0x28, 0xae, 0x3b,
-	0x95, 0xbb, 0x2e, 0xf9, 0xc9, 0xfd, 0xaf, 0x42, 0xfa, 0xbc, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff,
-	0x5d, 0x47, 0x09, 0xa9, 0x19, 0x03, 0x00, 0x00,
+func file_profiling_proto_service_proto_rawDescGZIP() []byte {
+	file_profiling_proto_service_proto_rawDescOnce.Do(func() {
+		file_profiling_proto_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_profiling_proto_service_proto_rawDescData)
+	})
+	return file_profiling_proto_service_proto_rawDescData
+}
+
+var file_profiling_proto_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
+var file_profiling_proto_service_proto_goTypes = []interface{}{
+	(*EnableRequest)(nil),          // 0: grpc.go.profiling.v1alpha.EnableRequest
+	(*EnableResponse)(nil),         // 1: grpc.go.profiling.v1alpha.EnableResponse
+	(*GetStreamStatsRequest)(nil),  // 2: grpc.go.profiling.v1alpha.GetStreamStatsRequest
+	(*GetStreamStatsResponse)(nil), // 3: grpc.go.profiling.v1alpha.GetStreamStatsResponse
+	(*Timer)(nil),                  // 4: grpc.go.profiling.v1alpha.Timer
+	(*Stat)(nil),                   // 5: grpc.go.profiling.v1alpha.Stat
+}
+var file_profiling_proto_service_proto_depIdxs = []int32{
+	5, // 0: grpc.go.profiling.v1alpha.GetStreamStatsResponse.stream_stats:type_name -> grpc.go.profiling.v1alpha.Stat
+	4, // 1: grpc.go.profiling.v1alpha.Stat.timers:type_name -> grpc.go.profiling.v1alpha.Timer
+	0, // 2: grpc.go.profiling.v1alpha.Profiling.Enable:input_type -> grpc.go.profiling.v1alpha.EnableRequest
+	2, // 3: grpc.go.profiling.v1alpha.Profiling.GetStreamStats:input_type -> grpc.go.profiling.v1alpha.GetStreamStatsRequest
+	1, // 4: grpc.go.profiling.v1alpha.Profiling.Enable:output_type -> grpc.go.profiling.v1alpha.EnableResponse
+	3, // 5: grpc.go.profiling.v1alpha.Profiling.GetStreamStats:output_type -> grpc.go.profiling.v1alpha.GetStreamStatsResponse
+	4, // [4:6] is the sub-list for method output_type
+	2, // [2:4] 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
+}
+
+func init() { file_profiling_proto_service_proto_init() }
+func file_profiling_proto_service_proto_init() {
+	if File_profiling_proto_service_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_profiling_proto_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EnableRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_profiling_proto_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EnableResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_profiling_proto_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetStreamStatsRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_profiling_proto_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GetStreamStatsResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_profiling_proto_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Timer); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_profiling_proto_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Stat); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_profiling_proto_service_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   6,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_profiling_proto_service_proto_goTypes,
+		DependencyIndexes: file_profiling_proto_service_proto_depIdxs,
+		MessageInfos:      file_profiling_proto_service_proto_msgTypes,
+	}.Build()
+	File_profiling_proto_service_proto = out.File
+	file_profiling_proto_service_proto_rawDesc = nil
+	file_profiling_proto_service_proto_goTypes = nil
+	file_profiling_proto_service_proto_depIdxs = nil
 }
diff --git a/reflection/grpc_reflection_v1alpha/reflection.pb.go b/reflection/grpc_reflection_v1alpha/reflection.pb.go
index 382612d..6b8e0b7 100644
--- a/reflection/grpc_reflection_v1alpha/reflection.pb.go
+++ b/reflection/grpc_reflection_v1alpha/reflection.pb.go
@@ -1,72 +1,143 @@
+// Copyright 2016 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.
+
+// Service exported by server reflection
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: reflection/grpc_reflection_v1alpha/reflection.proto
 
 package grpc_reflection_v1alpha
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The message sent by the client when calling ServerReflectionInfo method.
 type ServerReflectionRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
 	// To use reflection service, the client should set one of the following
 	// fields in message_request. The server distinguishes requests by their
 	// defined field and then handles them using corresponding methods.
 	//
-	// Types that are valid to be assigned to MessageRequest:
+	// Types that are assignable to MessageRequest:
 	//	*ServerReflectionRequest_FileByFilename
 	//	*ServerReflectionRequest_FileContainingSymbol
 	//	*ServerReflectionRequest_FileContainingExtension
 	//	*ServerReflectionRequest_AllExtensionNumbersOfType
 	//	*ServerReflectionRequest_ListServices
-	MessageRequest       isServerReflectionRequest_MessageRequest `protobuf_oneof:"message_request"`
-	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
-	XXX_unrecognized     []byte                                   `json:"-"`
-	XXX_sizecache        int32                                    `json:"-"`
+	MessageRequest isServerReflectionRequest_MessageRequest `protobuf_oneof:"message_request"`
 }
 
-func (m *ServerReflectionRequest) Reset()         { *m = ServerReflectionRequest{} }
-func (m *ServerReflectionRequest) String() string { return proto.CompactTextString(m) }
-func (*ServerReflectionRequest) ProtoMessage()    {}
+func (x *ServerReflectionRequest) Reset() {
+	*x = ServerReflectionRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerReflectionRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerReflectionRequest) ProtoMessage() {}
+
+func (x *ServerReflectionRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerReflectionRequest.ProtoReflect.Descriptor instead.
 func (*ServerReflectionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{0}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *ServerReflectionRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerReflectionRequest.Unmarshal(m, b)
-}
-func (m *ServerReflectionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerReflectionRequest.Marshal(b, m, deterministic)
-}
-func (m *ServerReflectionRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerReflectionRequest.Merge(m, src)
-}
-func (m *ServerReflectionRequest) XXX_Size() int {
-	return xxx_messageInfo_ServerReflectionRequest.Size(m)
-}
-func (m *ServerReflectionRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerReflectionRequest.DiscardUnknown(m)
+func (x *ServerReflectionRequest) GetHost() string {
+	if x != nil {
+		return x.Host
+	}
+	return ""
 }
 
-var xxx_messageInfo_ServerReflectionRequest proto.InternalMessageInfo
-
-func (m *ServerReflectionRequest) GetHost() string {
+func (m *ServerReflectionRequest) GetMessageRequest() isServerReflectionRequest_MessageRequest {
 	if m != nil {
-		return m.Host
+		return m.MessageRequest
+	}
+	return nil
+}
+
+func (x *ServerReflectionRequest) GetFileByFilename() string {
+	if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileByFilename); ok {
+		return x.FileByFilename
+	}
+	return ""
+}
+
+func (x *ServerReflectionRequest) GetFileContainingSymbol() string {
+	if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileContainingSymbol); ok {
+		return x.FileContainingSymbol
+	}
+	return ""
+}
+
+func (x *ServerReflectionRequest) GetFileContainingExtension() *ExtensionRequest {
+	if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_FileContainingExtension); ok {
+		return x.FileContainingExtension
+	}
+	return nil
+}
+
+func (x *ServerReflectionRequest) GetAllExtensionNumbersOfType() string {
+	if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_AllExtensionNumbersOfType); ok {
+		return x.AllExtensionNumbersOfType
+	}
+	return ""
+}
+
+func (x *ServerReflectionRequest) GetListServices() string {
+	if x, ok := x.GetMessageRequest().(*ServerReflectionRequest_ListServices); ok {
+		return x.ListServices
 	}
 	return ""
 }
@@ -76,22 +147,38 @@
 }
 
 type ServerReflectionRequest_FileByFilename struct {
+	// Find a proto file by the file name.
 	FileByFilename string `protobuf:"bytes,3,opt,name=file_by_filename,json=fileByFilename,proto3,oneof"`
 }
 
 type ServerReflectionRequest_FileContainingSymbol struct {
+	// Find the proto file that declares the given fully-qualified symbol name.
+	// This field should be a fully-qualified symbol name
+	// (e.g. <package>.<service>[.<method>] or <package>.<type>).
 	FileContainingSymbol string `protobuf:"bytes,4,opt,name=file_containing_symbol,json=fileContainingSymbol,proto3,oneof"`
 }
 
 type ServerReflectionRequest_FileContainingExtension struct {
+	// Find the proto file which defines an extension extending the given
+	// message type with the given field number.
 	FileContainingExtension *ExtensionRequest `protobuf:"bytes,5,opt,name=file_containing_extension,json=fileContainingExtension,proto3,oneof"`
 }
 
 type ServerReflectionRequest_AllExtensionNumbersOfType struct {
+	// Finds the tag numbers used by all known extensions of extendee_type, and
+	// appends them to ExtensionNumberResponse in an undefined order.
+	// Its corresponding method is best-effort: it's not guaranteed that the
+	// reflection service will implement this method, and it's not guaranteed
+	// that this method will provide all extensions. Returns
+	// StatusCode::UNIMPLEMENTED if it's not implemented.
+	// This field should be a fully-qualified type name. The format is
+	// <package>.<type>
 	AllExtensionNumbersOfType string `protobuf:"bytes,6,opt,name=all_extension_numbers_of_type,json=allExtensionNumbersOfType,proto3,oneof"`
 }
 
 type ServerReflectionRequest_ListServices struct {
+	// List the full names of registered services. The content will not be
+	// checked.
 	ListServices string `protobuf:"bytes,7,opt,name=list_services,json=listServices,proto3,oneof"`
 }
 
@@ -106,162 +193,160 @@
 
 func (*ServerReflectionRequest_ListServices) isServerReflectionRequest_MessageRequest() {}
 
-func (m *ServerReflectionRequest) GetMessageRequest() isServerReflectionRequest_MessageRequest {
-	if m != nil {
-		return m.MessageRequest
-	}
-	return nil
-}
-
-func (m *ServerReflectionRequest) GetFileByFilename() string {
-	if x, ok := m.GetMessageRequest().(*ServerReflectionRequest_FileByFilename); ok {
-		return x.FileByFilename
-	}
-	return ""
-}
-
-func (m *ServerReflectionRequest) GetFileContainingSymbol() string {
-	if x, ok := m.GetMessageRequest().(*ServerReflectionRequest_FileContainingSymbol); ok {
-		return x.FileContainingSymbol
-	}
-	return ""
-}
-
-func (m *ServerReflectionRequest) GetFileContainingExtension() *ExtensionRequest {
-	if x, ok := m.GetMessageRequest().(*ServerReflectionRequest_FileContainingExtension); ok {
-		return x.FileContainingExtension
-	}
-	return nil
-}
-
-func (m *ServerReflectionRequest) GetAllExtensionNumbersOfType() string {
-	if x, ok := m.GetMessageRequest().(*ServerReflectionRequest_AllExtensionNumbersOfType); ok {
-		return x.AllExtensionNumbersOfType
-	}
-	return ""
-}
-
-func (m *ServerReflectionRequest) GetListServices() string {
-	if x, ok := m.GetMessageRequest().(*ServerReflectionRequest_ListServices); ok {
-		return x.ListServices
-	}
-	return ""
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ServerReflectionRequest) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ServerReflectionRequest_FileByFilename)(nil),
-		(*ServerReflectionRequest_FileContainingSymbol)(nil),
-		(*ServerReflectionRequest_FileContainingExtension)(nil),
-		(*ServerReflectionRequest_AllExtensionNumbersOfType)(nil),
-		(*ServerReflectionRequest_ListServices)(nil),
-	}
-}
-
 // The type name and extension number sent by the client when requesting
 // file_containing_extension.
 type ExtensionRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Fully-qualified type name. The format should be <package>.<type>
-	ContainingType       string   `protobuf:"bytes,1,opt,name=containing_type,json=containingType,proto3" json:"containing_type,omitempty"`
-	ExtensionNumber      int32    `protobuf:"varint,2,opt,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ContainingType  string `protobuf:"bytes,1,opt,name=containing_type,json=containingType,proto3" json:"containing_type,omitempty"`
+	ExtensionNumber int32  `protobuf:"varint,2,opt,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
 }
 
-func (m *ExtensionRequest) Reset()         { *m = ExtensionRequest{} }
-func (m *ExtensionRequest) String() string { return proto.CompactTextString(m) }
-func (*ExtensionRequest) ProtoMessage()    {}
+func (x *ExtensionRequest) Reset() {
+	*x = ExtensionRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ExtensionRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtensionRequest) ProtoMessage() {}
+
+func (x *ExtensionRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExtensionRequest.ProtoReflect.Descriptor instead.
 func (*ExtensionRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{1}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *ExtensionRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtensionRequest.Unmarshal(m, b)
-}
-func (m *ExtensionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtensionRequest.Marshal(b, m, deterministic)
-}
-func (m *ExtensionRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtensionRequest.Merge(m, src)
-}
-func (m *ExtensionRequest) XXX_Size() int {
-	return xxx_messageInfo_ExtensionRequest.Size(m)
-}
-func (m *ExtensionRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtensionRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtensionRequest proto.InternalMessageInfo
-
-func (m *ExtensionRequest) GetContainingType() string {
-	if m != nil {
-		return m.ContainingType
+func (x *ExtensionRequest) GetContainingType() string {
+	if x != nil {
+		return x.ContainingType
 	}
 	return ""
 }
 
-func (m *ExtensionRequest) GetExtensionNumber() int32 {
-	if m != nil {
-		return m.ExtensionNumber
+func (x *ExtensionRequest) GetExtensionNumber() int32 {
+	if x != nil {
+		return x.ExtensionNumber
 	}
 	return 0
 }
 
 // The message sent by the server to answer ServerReflectionInfo method.
 type ServerReflectionResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	ValidHost       string                   `protobuf:"bytes,1,opt,name=valid_host,json=validHost,proto3" json:"valid_host,omitempty"`
 	OriginalRequest *ServerReflectionRequest `protobuf:"bytes,2,opt,name=original_request,json=originalRequest,proto3" json:"original_request,omitempty"`
 	// The server sets one of the following fields according to the
 	// message_request in the request.
 	//
-	// Types that are valid to be assigned to MessageResponse:
+	// Types that are assignable to MessageResponse:
 	//	*ServerReflectionResponse_FileDescriptorResponse
 	//	*ServerReflectionResponse_AllExtensionNumbersResponse
 	//	*ServerReflectionResponse_ListServicesResponse
 	//	*ServerReflectionResponse_ErrorResponse
-	MessageResponse      isServerReflectionResponse_MessageResponse `protobuf_oneof:"message_response"`
-	XXX_NoUnkeyedLiteral struct{}                                   `json:"-"`
-	XXX_unrecognized     []byte                                     `json:"-"`
-	XXX_sizecache        int32                                      `json:"-"`
+	MessageResponse isServerReflectionResponse_MessageResponse `protobuf_oneof:"message_response"`
 }
 
-func (m *ServerReflectionResponse) Reset()         { *m = ServerReflectionResponse{} }
-func (m *ServerReflectionResponse) String() string { return proto.CompactTextString(m) }
-func (*ServerReflectionResponse) ProtoMessage()    {}
+func (x *ServerReflectionResponse) Reset() {
+	*x = ServerReflectionResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServerReflectionResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServerReflectionResponse) ProtoMessage() {}
+
+func (x *ServerReflectionResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServerReflectionResponse.ProtoReflect.Descriptor instead.
 func (*ServerReflectionResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{2}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *ServerReflectionResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServerReflectionResponse.Unmarshal(m, b)
-}
-func (m *ServerReflectionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServerReflectionResponse.Marshal(b, m, deterministic)
-}
-func (m *ServerReflectionResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServerReflectionResponse.Merge(m, src)
-}
-func (m *ServerReflectionResponse) XXX_Size() int {
-	return xxx_messageInfo_ServerReflectionResponse.Size(m)
-}
-func (m *ServerReflectionResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServerReflectionResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServerReflectionResponse proto.InternalMessageInfo
-
-func (m *ServerReflectionResponse) GetValidHost() string {
-	if m != nil {
-		return m.ValidHost
+func (x *ServerReflectionResponse) GetValidHost() string {
+	if x != nil {
+		return x.ValidHost
 	}
 	return ""
 }
 
-func (m *ServerReflectionResponse) GetOriginalRequest() *ServerReflectionRequest {
+func (x *ServerReflectionResponse) GetOriginalRequest() *ServerReflectionRequest {
+	if x != nil {
+		return x.OriginalRequest
+	}
+	return nil
+}
+
+func (m *ServerReflectionResponse) GetMessageResponse() isServerReflectionResponse_MessageResponse {
 	if m != nil {
-		return m.OriginalRequest
+		return m.MessageResponse
+	}
+	return nil
+}
+
+func (x *ServerReflectionResponse) GetFileDescriptorResponse() *FileDescriptorResponse {
+	if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_FileDescriptorResponse); ok {
+		return x.FileDescriptorResponse
+	}
+	return nil
+}
+
+func (x *ServerReflectionResponse) GetAllExtensionNumbersResponse() *ExtensionNumberResponse {
+	if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_AllExtensionNumbersResponse); ok {
+		return x.AllExtensionNumbersResponse
+	}
+	return nil
+}
+
+func (x *ServerReflectionResponse) GetListServicesResponse() *ListServiceResponse {
+	if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_ListServicesResponse); ok {
+		return x.ListServicesResponse
+	}
+	return nil
+}
+
+func (x *ServerReflectionResponse) GetErrorResponse() *ErrorResponse {
+	if x, ok := x.GetMessageResponse().(*ServerReflectionResponse_ErrorResponse); ok {
+		return x.ErrorResponse
 	}
 	return nil
 }
@@ -271,18 +356,27 @@
 }
 
 type ServerReflectionResponse_FileDescriptorResponse struct {
+	// This message is used to answer file_by_filename, file_containing_symbol,
+	// file_containing_extension requests with transitive dependencies.
+	// As the repeated label is not allowed in oneof fields, we use a
+	// FileDescriptorResponse message to encapsulate the repeated fields.
+	// The reflection service is allowed to avoid sending FileDescriptorProtos
+	// that were previously sent in response to earlier requests in the stream.
 	FileDescriptorResponse *FileDescriptorResponse `protobuf:"bytes,4,opt,name=file_descriptor_response,json=fileDescriptorResponse,proto3,oneof"`
 }
 
 type ServerReflectionResponse_AllExtensionNumbersResponse struct {
+	// This message is used to answer all_extension_numbers_of_type requests.
 	AllExtensionNumbersResponse *ExtensionNumberResponse `protobuf:"bytes,5,opt,name=all_extension_numbers_response,json=allExtensionNumbersResponse,proto3,oneof"`
 }
 
 type ServerReflectionResponse_ListServicesResponse struct {
+	// This message is used to answer list_services requests.
 	ListServicesResponse *ListServiceResponse `protobuf:"bytes,6,opt,name=list_services_response,json=listServicesResponse,proto3,oneof"`
 }
 
 type ServerReflectionResponse_ErrorResponse struct {
+	// This message is used when an error occurs.
 	ErrorResponse *ErrorResponse `protobuf:"bytes,7,opt,name=error_response,json=errorResponse,proto3,oneof"`
 }
 
@@ -296,92 +390,55 @@
 
 func (*ServerReflectionResponse_ErrorResponse) isServerReflectionResponse_MessageResponse() {}
 
-func (m *ServerReflectionResponse) GetMessageResponse() isServerReflectionResponse_MessageResponse {
-	if m != nil {
-		return m.MessageResponse
-	}
-	return nil
-}
-
-func (m *ServerReflectionResponse) GetFileDescriptorResponse() *FileDescriptorResponse {
-	if x, ok := m.GetMessageResponse().(*ServerReflectionResponse_FileDescriptorResponse); ok {
-		return x.FileDescriptorResponse
-	}
-	return nil
-}
-
-func (m *ServerReflectionResponse) GetAllExtensionNumbersResponse() *ExtensionNumberResponse {
-	if x, ok := m.GetMessageResponse().(*ServerReflectionResponse_AllExtensionNumbersResponse); ok {
-		return x.AllExtensionNumbersResponse
-	}
-	return nil
-}
-
-func (m *ServerReflectionResponse) GetListServicesResponse() *ListServiceResponse {
-	if x, ok := m.GetMessageResponse().(*ServerReflectionResponse_ListServicesResponse); ok {
-		return x.ListServicesResponse
-	}
-	return nil
-}
-
-func (m *ServerReflectionResponse) GetErrorResponse() *ErrorResponse {
-	if x, ok := m.GetMessageResponse().(*ServerReflectionResponse_ErrorResponse); ok {
-		return x.ErrorResponse
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*ServerReflectionResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*ServerReflectionResponse_FileDescriptorResponse)(nil),
-		(*ServerReflectionResponse_AllExtensionNumbersResponse)(nil),
-		(*ServerReflectionResponse_ListServicesResponse)(nil),
-		(*ServerReflectionResponse_ErrorResponse)(nil),
-	}
-}
-
 // Serialized FileDescriptorProto messages sent by the server answering
 // a file_by_filename, file_containing_symbol, or file_containing_extension
 // request.
 type FileDescriptorResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Serialized FileDescriptorProto messages. We avoid taking a dependency on
 	// descriptor.proto, which uses proto2 only features, by making them opaque
 	// bytes instead.
-	FileDescriptorProto  [][]byte `protobuf:"bytes,1,rep,name=file_descriptor_proto,json=fileDescriptorProto,proto3" json:"file_descriptor_proto,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FileDescriptorProto [][]byte `protobuf:"bytes,1,rep,name=file_descriptor_proto,json=fileDescriptorProto,proto3" json:"file_descriptor_proto,omitempty"`
 }
 
-func (m *FileDescriptorResponse) Reset()         { *m = FileDescriptorResponse{} }
-func (m *FileDescriptorResponse) String() string { return proto.CompactTextString(m) }
-func (*FileDescriptorResponse) ProtoMessage()    {}
+func (x *FileDescriptorResponse) Reset() {
+	*x = FileDescriptorResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *FileDescriptorResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*FileDescriptorResponse) ProtoMessage() {}
+
+func (x *FileDescriptorResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use FileDescriptorResponse.ProtoReflect.Descriptor instead.
 func (*FileDescriptorResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{3}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *FileDescriptorResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FileDescriptorResponse.Unmarshal(m, b)
-}
-func (m *FileDescriptorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FileDescriptorResponse.Marshal(b, m, deterministic)
-}
-func (m *FileDescriptorResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDescriptorResponse.Merge(m, src)
-}
-func (m *FileDescriptorResponse) XXX_Size() int {
-	return xxx_messageInfo_FileDescriptorResponse.Size(m)
-}
-func (m *FileDescriptorResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_FileDescriptorResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FileDescriptorResponse proto.InternalMessageInfo
-
-func (m *FileDescriptorResponse) GetFileDescriptorProto() [][]byte {
-	if m != nil {
-		return m.FileDescriptorProto
+func (x *FileDescriptorResponse) GetFileDescriptorProto() [][]byte {
+	if x != nil {
+		return x.FileDescriptorProto
 	}
 	return nil
 }
@@ -389,92 +446,108 @@
 // A list of extension numbers sent by the server answering
 // all_extension_numbers_of_type request.
 type ExtensionNumberResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Full name of the base type, including the package name. The format
 	// is <package>.<type>
-	BaseTypeName         string   `protobuf:"bytes,1,opt,name=base_type_name,json=baseTypeName,proto3" json:"base_type_name,omitempty"`
-	ExtensionNumber      []int32  `protobuf:"varint,2,rep,packed,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	BaseTypeName    string  `protobuf:"bytes,1,opt,name=base_type_name,json=baseTypeName,proto3" json:"base_type_name,omitempty"`
+	ExtensionNumber []int32 `protobuf:"varint,2,rep,packed,name=extension_number,json=extensionNumber,proto3" json:"extension_number,omitempty"`
 }
 
-func (m *ExtensionNumberResponse) Reset()         { *m = ExtensionNumberResponse{} }
-func (m *ExtensionNumberResponse) String() string { return proto.CompactTextString(m) }
-func (*ExtensionNumberResponse) ProtoMessage()    {}
+func (x *ExtensionNumberResponse) Reset() {
+	*x = ExtensionNumberResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ExtensionNumberResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ExtensionNumberResponse) ProtoMessage() {}
+
+func (x *ExtensionNumberResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ExtensionNumberResponse.ProtoReflect.Descriptor instead.
 func (*ExtensionNumberResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{4}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *ExtensionNumberResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtensionNumberResponse.Unmarshal(m, b)
-}
-func (m *ExtensionNumberResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtensionNumberResponse.Marshal(b, m, deterministic)
-}
-func (m *ExtensionNumberResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtensionNumberResponse.Merge(m, src)
-}
-func (m *ExtensionNumberResponse) XXX_Size() int {
-	return xxx_messageInfo_ExtensionNumberResponse.Size(m)
-}
-func (m *ExtensionNumberResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtensionNumberResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtensionNumberResponse proto.InternalMessageInfo
-
-func (m *ExtensionNumberResponse) GetBaseTypeName() string {
-	if m != nil {
-		return m.BaseTypeName
+func (x *ExtensionNumberResponse) GetBaseTypeName() string {
+	if x != nil {
+		return x.BaseTypeName
 	}
 	return ""
 }
 
-func (m *ExtensionNumberResponse) GetExtensionNumber() []int32 {
-	if m != nil {
-		return m.ExtensionNumber
+func (x *ExtensionNumberResponse) GetExtensionNumber() []int32 {
+	if x != nil {
+		return x.ExtensionNumber
 	}
 	return nil
 }
 
 // A list of ServiceResponse sent by the server answering list_services request.
 type ListServiceResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The information of each service may be expanded in the future, so we use
 	// ServiceResponse message to encapsulate it.
-	Service              []*ServiceResponse `protobuf:"bytes,1,rep,name=service,proto3" json:"service,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
+	Service []*ServiceResponse `protobuf:"bytes,1,rep,name=service,proto3" json:"service,omitempty"`
 }
 
-func (m *ListServiceResponse) Reset()         { *m = ListServiceResponse{} }
-func (m *ListServiceResponse) String() string { return proto.CompactTextString(m) }
-func (*ListServiceResponse) ProtoMessage()    {}
+func (x *ListServiceResponse) Reset() {
+	*x = ListServiceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ListServiceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListServiceResponse) ProtoMessage() {}
+
+func (x *ListServiceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ListServiceResponse.ProtoReflect.Descriptor instead.
 func (*ListServiceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{5}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *ListServiceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ListServiceResponse.Unmarshal(m, b)
-}
-func (m *ListServiceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ListServiceResponse.Marshal(b, m, deterministic)
-}
-func (m *ListServiceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ListServiceResponse.Merge(m, src)
-}
-func (m *ListServiceResponse) XXX_Size() int {
-	return xxx_messageInfo_ListServiceResponse.Size(m)
-}
-func (m *ListServiceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ListServiceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ListServiceResponse proto.InternalMessageInfo
-
-func (m *ListServiceResponse) GetService() []*ServiceResponse {
-	if m != nil {
-		return m.Service
+func (x *ListServiceResponse) GetService() []*ServiceResponse {
+	if x != nil {
+		return x.Service
 	}
 	return nil
 }
@@ -482,153 +555,399 @@
 // The information of a single service used by ListServiceResponse to answer
 // list_services request.
 type ServiceResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Full name of a registered service, including its package name. The format
 	// is <package>.<service>
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *ServiceResponse) Reset()         { *m = ServiceResponse{} }
-func (m *ServiceResponse) String() string { return proto.CompactTextString(m) }
-func (*ServiceResponse) ProtoMessage()    {}
+func (x *ServiceResponse) Reset() {
+	*x = ServiceResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ServiceResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ServiceResponse) ProtoMessage() {}
+
+func (x *ServiceResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ServiceResponse.ProtoReflect.Descriptor instead.
 func (*ServiceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{6}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ServiceResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ServiceResponse.Unmarshal(m, b)
-}
-func (m *ServiceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ServiceResponse.Marshal(b, m, deterministic)
-}
-func (m *ServiceResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ServiceResponse.Merge(m, src)
-}
-func (m *ServiceResponse) XXX_Size() int {
-	return xxx_messageInfo_ServiceResponse.Size(m)
-}
-func (m *ServiceResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ServiceResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ServiceResponse proto.InternalMessageInfo
-
-func (m *ServiceResponse) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *ServiceResponse) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 // The error code and error message sent by the server when an error occurs.
 type ErrorResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// This field uses the error codes defined in grpc::StatusCode.
-	ErrorCode            int32    `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"`
-	ErrorMessage         string   `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	ErrorCode    int32  `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"`
+	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
 }
 
-func (m *ErrorResponse) Reset()         { *m = ErrorResponse{} }
-func (m *ErrorResponse) String() string { return proto.CompactTextString(m) }
-func (*ErrorResponse) ProtoMessage()    {}
+func (x *ErrorResponse) Reset() {
+	*x = ErrorResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ErrorResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ErrorResponse) ProtoMessage() {}
+
+func (x *ErrorResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ErrorResponse.ProtoReflect.Descriptor instead.
 func (*ErrorResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e8cf9f2921ad6c95, []int{7}
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *ErrorResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ErrorResponse.Unmarshal(m, b)
-}
-func (m *ErrorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ErrorResponse.Marshal(b, m, deterministic)
-}
-func (m *ErrorResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ErrorResponse.Merge(m, src)
-}
-func (m *ErrorResponse) XXX_Size() int {
-	return xxx_messageInfo_ErrorResponse.Size(m)
-}
-func (m *ErrorResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_ErrorResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ErrorResponse proto.InternalMessageInfo
-
-func (m *ErrorResponse) GetErrorCode() int32 {
-	if m != nil {
-		return m.ErrorCode
+func (x *ErrorResponse) GetErrorCode() int32 {
+	if x != nil {
+		return x.ErrorCode
 	}
 	return 0
 }
 
-func (m *ErrorResponse) GetErrorMessage() string {
-	if m != nil {
-		return m.ErrorMessage
+func (x *ErrorResponse) GetErrorMessage() string {
+	if x != nil {
+		return x.ErrorMessage
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*ServerReflectionRequest)(nil), "grpc.reflection.v1alpha.ServerReflectionRequest")
-	proto.RegisterType((*ExtensionRequest)(nil), "grpc.reflection.v1alpha.ExtensionRequest")
-	proto.RegisterType((*ServerReflectionResponse)(nil), "grpc.reflection.v1alpha.ServerReflectionResponse")
-	proto.RegisterType((*FileDescriptorResponse)(nil), "grpc.reflection.v1alpha.FileDescriptorResponse")
-	proto.RegisterType((*ExtensionNumberResponse)(nil), "grpc.reflection.v1alpha.ExtensionNumberResponse")
-	proto.RegisterType((*ListServiceResponse)(nil), "grpc.reflection.v1alpha.ListServiceResponse")
-	proto.RegisterType((*ServiceResponse)(nil), "grpc.reflection.v1alpha.ServiceResponse")
-	proto.RegisterType((*ErrorResponse)(nil), "grpc.reflection.v1alpha.ErrorResponse")
+var File_reflection_grpc_reflection_v1alpha_reflection_proto protoreflect.FileDescriptor
+
+var file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDesc = []byte{
+	0x0a, 0x33, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x5f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x31, 0x61,
+	0x6c, 0x70, 0x68, 0x61, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x22, 0xf8,
+	0x02, 0x0a, 0x17, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f,
+	0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x2a,
+	0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x65,
+	0x42, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x66, 0x69,
+	0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x79,
+	0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x14, 0x66, 0x69,
+	0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6d, 0x62,
+	0x6f, 0x6c, 0x12, 0x67, 0x0a, 0x19, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61,
+	0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66,
+	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x48, 0x00, 0x52, 0x17, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69,
+	0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1d, 0x61,
+	0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d,
+	0x62, 0x65, 0x72, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x09, 0x48, 0x00, 0x52, 0x19, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x4f, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x25, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
+	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65,
+	0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+	0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, 0x0a, 0x10, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a,
+	0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69,
+	0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65,
+	0x72, 0x22, 0xc7, 0x04, 0x0a, 0x18, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d,
+	0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x5b, 0x0a,
+	0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72,
+	0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0f, 0x6f, 0x72, 0x69, 0x67, 0x69,
+	0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x18, 0x66, 0x69,
+	0x6c, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
+	0x16, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x1e, 0x61, 0x6c, 0x6c, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73,
+	0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x30, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x48, 0x00, 0x52, 0x1b, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x64, 0x0a, 0x16, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x2c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53,
+	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00,
+	0x52, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f,
+	0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x16, 0x46,
+	0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x64, 0x65,
+	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0c, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a, 0x0a, 0x17, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70,
+	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61,
+	0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e,
+	0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72,
+	0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07,
+	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x22, 0x25, 0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x0d, 0x45, 0x72, 0x72, 0x6f, 0x72,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f,
+	0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x72,
+	0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72,
+	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+	0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x93, 0x01, 0x0a,
+	0x10, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x12, 0x7f, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
+	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x66, 0x6c,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01,
+	0x30, 0x01, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66,
+	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x72, 0x65, 0x66,
+	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62,
+	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() {
-	proto.RegisterFile("reflection/grpc_reflection_v1alpha/reflection.proto", fileDescriptor_e8cf9f2921ad6c95)
+var (
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescOnce sync.Once
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescData = file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDesc
+)
+
+func file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP() []byte {
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescOnce.Do(func() {
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescData)
+	})
+	return file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDescData
 }
 
-var fileDescriptor_e8cf9f2921ad6c95 = []byte{
-	// 686 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0x41, 0x6f, 0xd3, 0x4c,
-	0x10, 0xad, 0xdb, 0xa4, 0x55, 0x26, 0x69, 0x92, 0x6f, 0xdb, 0xaf, 0x71, 0x41, 0x45, 0x91, 0xa1,
-	0x90, 0x22, 0x94, 0xb4, 0xa9, 0x84, 0x84, 0xb8, 0xa5, 0x80, 0x82, 0x54, 0x5a, 0xe4, 0x70, 0x01,
-	0x0e, 0x2b, 0x27, 0x99, 0xb8, 0x06, 0xc7, 0x6b, 0x76, 0xdd, 0x40, 0x4e, 0xfc, 0x08, 0x7e, 0x14,
-	0x7f, 0x89, 0x23, 0xda, 0xb5, 0x63, 0x3b, 0x6e, 0x4c, 0xd5, 0x53, 0x9c, 0x37, 0x33, 0xfb, 0x66,
-	0xf6, 0xbd, 0xb1, 0xe1, 0x94, 0xe3, 0xc4, 0xc5, 0x51, 0xe0, 0x30, 0xaf, 0x63, 0x73, 0x7f, 0x44,
-	0x93, 0xff, 0x74, 0x76, 0x62, 0xb9, 0xfe, 0x95, 0xd5, 0x49, 0xa0, 0xb6, 0xcf, 0x59, 0xc0, 0x48,
-	0x43, 0x66, 0xb6, 0x53, 0x70, 0x94, 0x69, 0xfc, 0x59, 0x87, 0xc6, 0x00, 0xf9, 0x0c, 0xb9, 0x19,
-	0x07, 0x4d, 0xfc, 0x76, 0x8d, 0x22, 0x20, 0x04, 0x0a, 0x57, 0x4c, 0x04, 0xba, 0xd6, 0xd4, 0x5a,
-	0x25, 0x53, 0x3d, 0x93, 0xa7, 0x50, 0x9f, 0x38, 0x2e, 0xd2, 0xe1, 0x9c, 0xca, 0x5f, 0xcf, 0x9a,
-	0xa2, 0xbe, 0x21, 0xe3, 0xfd, 0x35, 0xb3, 0x2a, 0x91, 0xde, 0xfc, 0x4d, 0x84, 0x93, 0xe7, 0xb0,
-	0xa7, 0x72, 0x47, 0xcc, 0x0b, 0x2c, 0xc7, 0x73, 0x3c, 0x9b, 0x8a, 0xf9, 0x74, 0xc8, 0x5c, 0xbd,
-	0x10, 0x55, 0xec, 0xca, 0xf8, 0x59, 0x1c, 0x1e, 0xa8, 0x28, 0xb1, 0x61, 0x3f, 0x5b, 0x87, 0x3f,
-	0x02, 0xf4, 0x84, 0xc3, 0x3c, 0xbd, 0xd8, 0xd4, 0x5a, 0xe5, 0xee, 0x51, 0x3b, 0x67, 0xa0, 0xf6,
-	0xeb, 0x45, 0x66, 0x34, 0x45, 0x7f, 0xcd, 0x6c, 0x2c, 0xb3, 0xc4, 0x19, 0xa4, 0x07, 0x07, 0x96,
-	0xeb, 0x26, 0x87, 0x53, 0xef, 0x7a, 0x3a, 0x44, 0x2e, 0x28, 0x9b, 0xd0, 0x60, 0xee, 0xa3, 0xbe,
-	0x19, 0xf5, 0xb9, 0x6f, 0xb9, 0x6e, 0x5c, 0x76, 0x11, 0x26, 0x5d, 0x4e, 0x3e, 0xcc, 0x7d, 0x24,
-	0x87, 0xb0, 0xed, 0x3a, 0x22, 0xa0, 0x02, 0xf9, 0xcc, 0x19, 0xa1, 0xd0, 0xb7, 0xa2, 0x9a, 0x8a,
-	0x84, 0x07, 0x11, 0xda, 0xfb, 0x0f, 0x6a, 0x53, 0x14, 0xc2, 0xb2, 0x91, 0xf2, 0xb0, 0x31, 0x63,
-	0x02, 0xf5, 0x6c, 0xb3, 0xe4, 0x09, 0xd4, 0x52, 0x53, 0xab, 0x1e, 0xc2, 0xdb, 0xaf, 0x26, 0xb0,
-	0xa2, 0x3d, 0x82, 0x7a, 0xb6, 0x6d, 0x7d, 0xbd, 0xa9, 0xb5, 0x8a, 0x66, 0x0d, 0x97, 0x1b, 0x35,
-	0x7e, 0x17, 0x40, 0xbf, 0x29, 0xb1, 0xf0, 0x99, 0x27, 0x90, 0x1c, 0x00, 0xcc, 0x2c, 0xd7, 0x19,
-	0xd3, 0x94, 0xd2, 0x25, 0x85, 0xf4, 0xa5, 0xdc, 0x9f, 0xa1, 0xce, 0xb8, 0x63, 0x3b, 0x9e, 0xe5,
-	0x2e, 0xfa, 0x56, 0x34, 0xe5, 0xee, 0x71, 0xae, 0x02, 0x39, 0x76, 0x32, 0x6b, 0x8b, 0x93, 0x16,
-	0xc3, 0x7e, 0x05, 0x5d, 0xe9, 0x3c, 0x46, 0x31, 0xe2, 0x8e, 0x1f, 0x30, 0x4e, 0x79, 0xd4, 0x97,
-	0x72, 0x48, 0xb9, 0xdb, 0xc9, 0x25, 0x91, 0x26, 0x7b, 0x15, 0xd7, 0x2d, 0xc6, 0xe9, 0xaf, 0x99,
-	0xca, 0x72, 0x37, 0x23, 0xe4, 0x3b, 0x3c, 0x58, 0xad, 0x75, 0x4c, 0x59, 0xbc, 0x65, 0xae, 0x8c,
-	0x01, 0x52, 0x9c, 0xf7, 0x57, 0xd8, 0x23, 0x26, 0x1e, 0xc3, 0xde, 0x92, 0x41, 0x12, 0xc2, 0x4d,
-	0x45, 0xf8, 0x2c, 0x97, 0xf0, 0x3c, 0x31, 0x50, 0x8a, 0x6c, 0x37, 0xed, 0xab, 0x98, 0xe5, 0x12,
-	0xaa, 0xc8, 0x79, 0xfa, 0x06, 0xb7, 0xd4, 0xe9, 0x8f, 0xf3, 0xc7, 0x91, 0xe9, 0xa9, 0x73, 0xb7,
-	0x31, 0x0d, 0xf4, 0x08, 0xd4, 0x13, 0xc3, 0x86, 0x98, 0x71, 0x0e, 0x7b, 0xab, 0xef, 0x9d, 0x74,
-	0xe1, 0xff, 0xac, 0x94, 0xea, 0xc5, 0xa3, 0x6b, 0xcd, 0x8d, 0x56, 0xc5, 0xdc, 0x59, 0x16, 0xe5,
-	0xbd, 0x0c, 0x19, 0x5f, 0xa0, 0x91, 0x73, 0xa5, 0xe4, 0x11, 0x54, 0x87, 0x96, 0x40, 0xb5, 0x00,
-	0x54, 0xbd, 0x63, 0x42, 0x67, 0x56, 0x24, 0x2a, 0xfd, 0x7f, 0x21, 0xdf, 0x2f, 0xab, 0x77, 0x60,
-	0x63, 0xd5, 0x0e, 0x7c, 0x84, 0x9d, 0x15, 0xb7, 0x49, 0x7a, 0xb0, 0x15, 0xc9, 0xa2, 0x1a, 0x2d,
-	0x77, 0x5b, 0xff, 0x74, 0x75, 0xaa, 0xd4, 0x5c, 0x14, 0x1a, 0x87, 0x50, 0xcb, 0x1e, 0x4b, 0xa0,
-	0x90, 0x6a, 0x5a, 0x3d, 0x1b, 0x03, 0xd8, 0x5e, 0xba, 0x71, 0xb9, 0x79, 0xa1, 0x62, 0x23, 0x36,
-	0x0e, 0x53, 0x8b, 0x66, 0x49, 0x21, 0x67, 0x6c, 0x8c, 0xe4, 0x21, 0x84, 0x82, 0xd0, 0x48, 0x05,
-	0xb5, 0x76, 0x25, 0xb3, 0xa2, 0xc0, 0x77, 0x21, 0xd6, 0xfd, 0xa5, 0x41, 0x3d, 0xbb, 0x6e, 0xe4,
-	0x27, 0xec, 0x66, 0xb1, 0xb7, 0xde, 0x84, 0x91, 0x3b, 0x6f, 0xec, 0xbd, 0x93, 0x3b, 0x54, 0x84,
-	0x53, 0xb5, 0xb4, 0x63, 0xad, 0xf7, 0xf2, 0xd3, 0x0b, 0x9b, 0x31, 0xdb, 0xc5, 0xb6, 0xcd, 0x5c,
-	0xcb, 0xb3, 0xdb, 0x8c, 0xdb, 0xea, 0x53, 0xd5, 0xb9, 0xfd, 0xd3, 0x35, 0xdc, 0x54, 0xbe, 0x39,
-	0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x6c, 0x74, 0x3a, 0x67, 0xe7, 0x06, 0x00, 0x00,
+var file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_reflection_grpc_reflection_v1alpha_reflection_proto_goTypes = []interface{}{
+	(*ServerReflectionRequest)(nil),  // 0: grpc.reflection.v1alpha.ServerReflectionRequest
+	(*ExtensionRequest)(nil),         // 1: grpc.reflection.v1alpha.ExtensionRequest
+	(*ServerReflectionResponse)(nil), // 2: grpc.reflection.v1alpha.ServerReflectionResponse
+	(*FileDescriptorResponse)(nil),   // 3: grpc.reflection.v1alpha.FileDescriptorResponse
+	(*ExtensionNumberResponse)(nil),  // 4: grpc.reflection.v1alpha.ExtensionNumberResponse
+	(*ListServiceResponse)(nil),      // 5: grpc.reflection.v1alpha.ListServiceResponse
+	(*ServiceResponse)(nil),          // 6: grpc.reflection.v1alpha.ServiceResponse
+	(*ErrorResponse)(nil),            // 7: grpc.reflection.v1alpha.ErrorResponse
+}
+var file_reflection_grpc_reflection_v1alpha_reflection_proto_depIdxs = []int32{
+	1, // 0: grpc.reflection.v1alpha.ServerReflectionRequest.file_containing_extension:type_name -> grpc.reflection.v1alpha.ExtensionRequest
+	0, // 1: grpc.reflection.v1alpha.ServerReflectionResponse.original_request:type_name -> grpc.reflection.v1alpha.ServerReflectionRequest
+	3, // 2: grpc.reflection.v1alpha.ServerReflectionResponse.file_descriptor_response:type_name -> grpc.reflection.v1alpha.FileDescriptorResponse
+	4, // 3: grpc.reflection.v1alpha.ServerReflectionResponse.all_extension_numbers_response:type_name -> grpc.reflection.v1alpha.ExtensionNumberResponse
+	5, // 4: grpc.reflection.v1alpha.ServerReflectionResponse.list_services_response:type_name -> grpc.reflection.v1alpha.ListServiceResponse
+	7, // 5: grpc.reflection.v1alpha.ServerReflectionResponse.error_response:type_name -> grpc.reflection.v1alpha.ErrorResponse
+	6, // 6: grpc.reflection.v1alpha.ListServiceResponse.service:type_name -> grpc.reflection.v1alpha.ServiceResponse
+	0, // 7: grpc.reflection.v1alpha.ServerReflection.ServerReflectionInfo:input_type -> grpc.reflection.v1alpha.ServerReflectionRequest
+	2, // 8: grpc.reflection.v1alpha.ServerReflection.ServerReflectionInfo:output_type -> grpc.reflection.v1alpha.ServerReflectionResponse
+	8, // [8:9] is the sub-list for method output_type
+	7, // [7:8] 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
+}
+
+func init() { file_reflection_grpc_reflection_v1alpha_reflection_proto_init() }
+func file_reflection_grpc_reflection_v1alpha_reflection_proto_init() {
+	if File_reflection_grpc_reflection_v1alpha_reflection_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerReflectionRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ExtensionRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServerReflectionResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*FileDescriptorResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ExtensionNumberResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ListServiceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ServiceResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ErrorResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*ServerReflectionRequest_FileByFilename)(nil),
+		(*ServerReflectionRequest_FileContainingSymbol)(nil),
+		(*ServerReflectionRequest_FileContainingExtension)(nil),
+		(*ServerReflectionRequest_AllExtensionNumbersOfType)(nil),
+		(*ServerReflectionRequest_ListServices)(nil),
+	}
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].OneofWrappers = []interface{}{
+		(*ServerReflectionResponse_FileDescriptorResponse)(nil),
+		(*ServerReflectionResponse_AllExtensionNumbersResponse)(nil),
+		(*ServerReflectionResponse_ListServicesResponse)(nil),
+		(*ServerReflectionResponse_ErrorResponse)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   8,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_reflection_grpc_reflection_v1alpha_reflection_proto_goTypes,
+		DependencyIndexes: file_reflection_grpc_reflection_v1alpha_reflection_proto_depIdxs,
+		MessageInfos:      file_reflection_grpc_reflection_v1alpha_reflection_proto_msgTypes,
+	}.Build()
+	File_reflection_grpc_reflection_v1alpha_reflection_proto = out.File
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_rawDesc = nil
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_goTypes = nil
+	file_reflection_grpc_reflection_v1alpha_reflection_proto_depIdxs = nil
 }
diff --git a/reflection/grpc_testing/proto2.pb.go b/reflection/grpc_testing/proto2.pb.go
index d34adb8..aa5d35f 100644
--- a/reflection/grpc_testing/proto2.pb.go
+++ b/reflection/grpc_testing/proto2.pb.go
@@ -1,90 +1,177 @@
+// Copyright 2017 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: reflection/grpc_testing/proto2.proto
 
 package grpc_testing
 
 import (
-	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	math "math"
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoiface "google.golang.org/protobuf/runtime/protoiface"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type ToBeExtended struct {
-	Foo                          *int32   `protobuf:"varint,1,req,name=foo" json:"foo,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
+	state           protoimpl.MessageState
+	sizeCache       protoimpl.SizeCache
+	unknownFields   protoimpl.UnknownFields
+	extensionFields protoimpl.ExtensionFields
+
+	Foo *int32 `protobuf:"varint,1,req,name=foo" json:"foo,omitempty"`
 }
 
-func (m *ToBeExtended) Reset()         { *m = ToBeExtended{} }
-func (m *ToBeExtended) String() string { return proto.CompactTextString(m) }
-func (*ToBeExtended) ProtoMessage()    {}
+func (x *ToBeExtended) Reset() {
+	*x = ToBeExtended{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_proto2_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ToBeExtended) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ToBeExtended) ProtoMessage() {}
+
+func (x *ToBeExtended) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_proto2_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ToBeExtended.ProtoReflect.Descriptor instead.
 func (*ToBeExtended) Descriptor() ([]byte, []int) {
-	return fileDescriptor_dddbb2c1ebdcf2b8, []int{0}
+	return file_reflection_grpc_testing_proto2_proto_rawDescGZIP(), []int{0}
 }
 
-var extRange_ToBeExtended = []proto.ExtensionRange{
+var extRange_ToBeExtended = []protoiface.ExtensionRangeV1{
 	{Start: 10, End: 30},
 }
 
-func (*ToBeExtended) ExtensionRangeArray() []proto.ExtensionRange {
+// Deprecated: Use ToBeExtended.ProtoReflect.Descriptor.ExtensionRanges instead.
+func (*ToBeExtended) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
 	return extRange_ToBeExtended
 }
 
-func (m *ToBeExtended) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ToBeExtended.Unmarshal(m, b)
-}
-func (m *ToBeExtended) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ToBeExtended.Marshal(b, m, deterministic)
-}
-func (m *ToBeExtended) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ToBeExtended.Merge(m, src)
-}
-func (m *ToBeExtended) XXX_Size() int {
-	return xxx_messageInfo_ToBeExtended.Size(m)
-}
-func (m *ToBeExtended) XXX_DiscardUnknown() {
-	xxx_messageInfo_ToBeExtended.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ToBeExtended proto.InternalMessageInfo
-
-func (m *ToBeExtended) GetFoo() int32 {
-	if m != nil && m.Foo != nil {
-		return *m.Foo
+func (x *ToBeExtended) GetFoo() int32 {
+	if x != nil && x.Foo != nil {
+		return *x.Foo
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*ToBeExtended)(nil), "grpc.testing.ToBeExtended")
+var File_reflection_grpc_testing_proto2_proto protoreflect.FileDescriptor
+
+var file_reflection_grpc_testing_proto2_proto_rawDesc = []byte{
+	0x0a, 0x24, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x22, 0x26, 0x0a, 0x0c, 0x54, 0x6f, 0x42, 0x65, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x64, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x6f, 0x6f, 0x18, 0x01, 0x20, 0x02, 0x28,
+	0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x2a, 0x04, 0x08, 0x0a, 0x10, 0x1f, 0x42, 0x30, 0x5a, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
+	0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
+	0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
 }
 
-func init() {
-	proto.RegisterFile("reflection/grpc_testing/proto2.proto", fileDescriptor_dddbb2c1ebdcf2b8)
+var (
+	file_reflection_grpc_testing_proto2_proto_rawDescOnce sync.Once
+	file_reflection_grpc_testing_proto2_proto_rawDescData = file_reflection_grpc_testing_proto2_proto_rawDesc
+)
+
+func file_reflection_grpc_testing_proto2_proto_rawDescGZIP() []byte {
+	file_reflection_grpc_testing_proto2_proto_rawDescOnce.Do(func() {
+		file_reflection_grpc_testing_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflection_grpc_testing_proto2_proto_rawDescData)
+	})
+	return file_reflection_grpc_testing_proto2_proto_rawDescData
 }
 
-var fileDescriptor_dddbb2c1ebdcf2b8 = []byte{
-	// 130 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x29, 0x4a, 0x4d, 0xcb,
-	0x49, 0x4d, 0x2e, 0xc9, 0xcc, 0xcf, 0xd3, 0x4f, 0x2f, 0x2a, 0x48, 0x8e, 0x2f, 0x49, 0x2d, 0x2e,
-	0xc9, 0xcc, 0x4b, 0xd7, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x37, 0xd2, 0x03, 0x53, 0x42, 0x3c, 0x20,
-	0x29, 0x3d, 0xa8, 0x94, 0x92, 0x1a, 0x17, 0x4f, 0x48, 0xbe, 0x53, 0xaa, 0x6b, 0x45, 0x49, 0x6a,
-	0x5e, 0x4a, 0x6a, 0x8a, 0x90, 0x00, 0x17, 0x73, 0x5a, 0x7e, 0xbe, 0x04, 0xa3, 0x02, 0x93, 0x06,
-	0x6b, 0x10, 0x88, 0xa9, 0xc5, 0xc2, 0xc1, 0x25, 0x20, 0xef, 0x64, 0x10, 0xa5, 0x97, 0x9e, 0x9f,
-	0x9f, 0x9e, 0x93, 0xaa, 0x97, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0x0e, 0xb6,
-	0x44, 0x1f, 0x87, 0xa5, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x05, 0x50, 0x64, 0x8e, 0x00,
-	0x00, 0x00,
+var file_reflection_grpc_testing_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_reflection_grpc_testing_proto2_proto_goTypes = []interface{}{
+	(*ToBeExtended)(nil), // 0: grpc.testing.ToBeExtended
+}
+var file_reflection_grpc_testing_proto2_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_reflection_grpc_testing_proto2_proto_init() }
+func file_reflection_grpc_testing_proto2_proto_init() {
+	if File_reflection_grpc_testing_proto2_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_reflection_grpc_testing_proto2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ToBeExtended); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			case 3:
+				return &v.extensionFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_reflection_grpc_testing_proto2_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_reflection_grpc_testing_proto2_proto_goTypes,
+		DependencyIndexes: file_reflection_grpc_testing_proto2_proto_depIdxs,
+		MessageInfos:      file_reflection_grpc_testing_proto2_proto_msgTypes,
+	}.Build()
+	File_reflection_grpc_testing_proto2_proto = out.File
+	file_reflection_grpc_testing_proto2_proto_rawDesc = nil
+	file_reflection_grpc_testing_proto2_proto_goTypes = nil
+	file_reflection_grpc_testing_proto2_proto_depIdxs = nil
 }
diff --git a/reflection/grpc_testing/proto2_ext.pb.go b/reflection/grpc_testing/proto2_ext.pb.go
index 631b514..4d96fa3 100644
--- a/reflection/grpc_testing/proto2_ext.pb.go
+++ b/reflection/grpc_testing/proto2_ext.pb.go
@@ -1,116 +1,228 @@
+// Copyright 2017 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: reflection/grpc_testing/proto2_ext.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type Extension struct {
-	Whatzit              *int32   `protobuf:"varint,1,opt,name=whatzit" json:"whatzit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Whatzit *int32 `protobuf:"varint,1,opt,name=whatzit" json:"whatzit,omitempty"`
 }
 
-func (m *Extension) Reset()         { *m = Extension{} }
-func (m *Extension) String() string { return proto.CompactTextString(m) }
-func (*Extension) ProtoMessage()    {}
+func (x *Extension) Reset() {
+	*x = Extension{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_proto2_ext_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Extension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Extension) ProtoMessage() {}
+
+func (x *Extension) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_proto2_ext_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Extension.ProtoReflect.Descriptor instead.
 func (*Extension) Descriptor() ([]byte, []int) {
-	return fileDescriptor_071dc827b8673a0c, []int{0}
+	return file_reflection_grpc_testing_proto2_ext_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Extension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Extension.Unmarshal(m, b)
-}
-func (m *Extension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Extension.Marshal(b, m, deterministic)
-}
-func (m *Extension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Extension.Merge(m, src)
-}
-func (m *Extension) XXX_Size() int {
-	return xxx_messageInfo_Extension.Size(m)
-}
-func (m *Extension) XXX_DiscardUnknown() {
-	xxx_messageInfo_Extension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Extension proto.InternalMessageInfo
-
-func (m *Extension) GetWhatzit() int32 {
-	if m != nil && m.Whatzit != nil {
-		return *m.Whatzit
+func (x *Extension) GetWhatzit() int32 {
+	if x != nil && x.Whatzit != nil {
+		return *x.Whatzit
 	}
 	return 0
 }
 
-var E_Foo = &proto.ExtensionDesc{
-	ExtendedType:  (*ToBeExtended)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         13,
-	Name:          "grpc.testing.foo",
-	Tag:           "varint,13,opt,name=foo",
-	Filename:      "reflection/grpc_testing/proto2_ext.proto",
+var file_reflection_grpc_testing_proto2_ext_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*ToBeExtended)(nil),
+		ExtensionType: (*int32)(nil),
+		Field:         13,
+		Name:          "grpc.testing.foo",
+		Tag:           "varint,13,opt,name=foo",
+		Filename:      "reflection/grpc_testing/proto2_ext.proto",
+	},
+	{
+		ExtendedType:  (*ToBeExtended)(nil),
+		ExtensionType: (*Extension)(nil),
+		Field:         17,
+		Name:          "grpc.testing.bar",
+		Tag:           "bytes,17,opt,name=bar",
+		Filename:      "reflection/grpc_testing/proto2_ext.proto",
+	},
+	{
+		ExtendedType:  (*ToBeExtended)(nil),
+		ExtensionType: (*SearchRequest)(nil),
+		Field:         19,
+		Name:          "grpc.testing.baz",
+		Tag:           "bytes,19,opt,name=baz",
+		Filename:      "reflection/grpc_testing/proto2_ext.proto",
+	},
 }
 
-var E_Bar = &proto.ExtensionDesc{
-	ExtendedType:  (*ToBeExtended)(nil),
-	ExtensionType: (*Extension)(nil),
-	Field:         17,
-	Name:          "grpc.testing.bar",
-	Tag:           "bytes,17,opt,name=bar",
-	Filename:      "reflection/grpc_testing/proto2_ext.proto",
+// Extension fields to ToBeExtended.
+var (
+	// optional int32 foo = 13;
+	E_Foo = &file_reflection_grpc_testing_proto2_ext_proto_extTypes[0]
+	// optional grpc.testing.Extension bar = 17;
+	E_Bar = &file_reflection_grpc_testing_proto2_ext_proto_extTypes[1]
+	// optional grpc.testing.SearchRequest baz = 19;
+	E_Baz = &file_reflection_grpc_testing_proto2_ext_proto_extTypes[2]
+)
+
+var File_reflection_grpc_testing_proto2_ext_proto protoreflect.FileDescriptor
+
+var file_reflection_grpc_testing_proto2_ext_proto_rawDesc = []byte{
+	0x0a, 0x28, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x5f, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63,
+	0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22,
+	0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x22, 0x25, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+	0x18, 0x0a, 0x07, 0x77, 0x68, 0x61, 0x74, 0x7a, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+	0x52, 0x07, 0x77, 0x68, 0x61, 0x74, 0x7a, 0x69, 0x74, 0x3a, 0x2c, 0x0a, 0x03, 0x66, 0x6f, 0x6f,
+	0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x54, 0x6f, 0x42, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x03, 0x66, 0x6f, 0x6f, 0x3a, 0x45, 0x0a, 0x03, 0x62, 0x61, 0x72, 0x12, 0x1a,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x6f,
+	0x42, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x62, 0x61, 0x72, 0x3a, 0x49,
+	0x0a, 0x03, 0x62, 0x61, 0x7a, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65,
+	0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x52, 0x03, 0x62, 0x61, 0x7a, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67,
+	0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67,
+	0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
 }
 
-var E_Baz = &proto.ExtensionDesc{
-	ExtendedType:  (*ToBeExtended)(nil),
-	ExtensionType: (*SearchRequest)(nil),
-	Field:         19,
-	Name:          "grpc.testing.baz",
-	Tag:           "bytes,19,opt,name=baz",
-	Filename:      "reflection/grpc_testing/proto2_ext.proto",
+var (
+	file_reflection_grpc_testing_proto2_ext_proto_rawDescOnce sync.Once
+	file_reflection_grpc_testing_proto2_ext_proto_rawDescData = file_reflection_grpc_testing_proto2_ext_proto_rawDesc
+)
+
+func file_reflection_grpc_testing_proto2_ext_proto_rawDescGZIP() []byte {
+	file_reflection_grpc_testing_proto2_ext_proto_rawDescOnce.Do(func() {
+		file_reflection_grpc_testing_proto2_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflection_grpc_testing_proto2_ext_proto_rawDescData)
+	})
+	return file_reflection_grpc_testing_proto2_ext_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterType((*Extension)(nil), "grpc.testing.Extension")
-	proto.RegisterExtension(E_Foo)
-	proto.RegisterExtension(E_Bar)
-	proto.RegisterExtension(E_Baz)
+var file_reflection_grpc_testing_proto2_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_reflection_grpc_testing_proto2_ext_proto_goTypes = []interface{}{
+	(*Extension)(nil),     // 0: grpc.testing.Extension
+	(*ToBeExtended)(nil),  // 1: grpc.testing.ToBeExtended
+	(*SearchRequest)(nil), // 2: grpc.testing.SearchRequest
+}
+var file_reflection_grpc_testing_proto2_ext_proto_depIdxs = []int32{
+	1, // 0: grpc.testing.foo:extendee -> grpc.testing.ToBeExtended
+	1, // 1: grpc.testing.bar:extendee -> grpc.testing.ToBeExtended
+	1, // 2: grpc.testing.baz:extendee -> grpc.testing.ToBeExtended
+	0, // 3: grpc.testing.bar:type_name -> grpc.testing.Extension
+	2, // 4: grpc.testing.baz:type_name -> grpc.testing.SearchRequest
+	5, // [5:5] is the sub-list for method output_type
+	5, // [5:5] is the sub-list for method input_type
+	3, // [3:5] is the sub-list for extension type_name
+	0, // [0:3] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
 }
 
-func init() {
-	proto.RegisterFile("reflection/grpc_testing/proto2_ext.proto", fileDescriptor_071dc827b8673a0c)
-}
-
-var fileDescriptor_071dc827b8673a0c = []byte{
-	// 224 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xc1, 0x4b, 0x85, 0x40,
-	0x10, 0xc6, 0x91, 0x47, 0x44, 0x5b, 0x1d, 0xb2, 0x43, 0x62, 0x97, 0x87, 0x14, 0x78, 0x88, 0x35,
-	0x3c, 0x7a, 0x14, 0x3c, 0x74, 0xb5, 0x4e, 0x5d, 0x64, 0xd3, 0x71, 0x5d, 0x90, 0x1d, 0x5b, 0x27,
-	0x12, 0xff, 0xfa, 0xd8, 0xb5, 0xe2, 0x79, 0xd0, 0xd3, 0xee, 0x30, 0xbf, 0xdf, 0xc7, 0xf0, 0xb1,
-	0xd8, 0x40, 0xdb, 0x43, 0x4d, 0x0a, 0x75, 0x22, 0xcd, 0x50, 0x57, 0x04, 0x23, 0x29, 0x2d, 0x93,
-	0xc1, 0x20, 0x61, 0x5a, 0xc1, 0x44, 0xdc, 0x7d, 0xfd, 0x2b, 0xbb, 0xe6, 0xbf, 0xeb, 0xf0, 0x61,
-	0xdf, 0x5b, 0x9c, 0x30, 0xda, 0xa2, 0xec, 0xbb, 0x30, 0xd1, 0x23, 0xbb, 0x28, 0x26, 0x02, 0x3d,
-	0x2a, 0xd4, 0x7e, 0xc0, 0xce, 0xbf, 0x3b, 0x41, 0xb3, 0xa2, 0xc0, 0x3b, 0x7a, 0xf1, 0x59, 0xf9,
-	0x37, 0x66, 0x4f, 0xec, 0xd0, 0x22, 0xfa, 0x21, 0x3f, 0x3d, 0x83, 0xbf, 0x61, 0x0e, 0xce, 0x6e,
-	0xa0, 0x09, 0xae, 0x9d, 0x61, 0xb1, 0xac, 0x60, 0x87, 0x0f, 0x61, 0x76, 0xe9, 0x9b, 0xa3, 0x17,
-	0x5f, 0xa6, 0x77, 0x6b, 0xe2, 0xff, 0x92, 0xd2, 0xfa, 0xd9, 0x8b, 0x8d, 0x99, 0x77, 0x63, 0x6e,
-	0x5d, 0xcc, 0xfd, 0x9a, 0x78, 0x05, 0x61, 0xea, 0xae, 0x84, 0xcf, 0x2f, 0x18, 0xc9, 0x46, 0xcd,
-	0xf9, 0xf3, 0x3b, 0x97, 0x88, 0xb2, 0x07, 0x2e, 0xb1, 0x17, 0x5a, 0x72, 0x34, 0xd2, 0x75, 0x92,
-	0x6c, 0x74, 0xf4, 0x13, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x14, 0xcf, 0xc9, 0x9b, 0x01, 0x00, 0x00,
+func init() { file_reflection_grpc_testing_proto2_ext_proto_init() }
+func file_reflection_grpc_testing_proto2_ext_proto_init() {
+	if File_reflection_grpc_testing_proto2_ext_proto != nil {
+		return
+	}
+	file_reflection_grpc_testing_proto2_proto_init()
+	file_reflection_grpc_testing_test_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_reflection_grpc_testing_proto2_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Extension); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_reflection_grpc_testing_proto2_ext_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 3,
+			NumServices:   0,
+		},
+		GoTypes:           file_reflection_grpc_testing_proto2_ext_proto_goTypes,
+		DependencyIndexes: file_reflection_grpc_testing_proto2_ext_proto_depIdxs,
+		MessageInfos:      file_reflection_grpc_testing_proto2_ext_proto_msgTypes,
+		ExtensionInfos:    file_reflection_grpc_testing_proto2_ext_proto_extTypes,
+	}.Build()
+	File_reflection_grpc_testing_proto2_ext_proto = out.File
+	file_reflection_grpc_testing_proto2_ext_proto_rawDesc = nil
+	file_reflection_grpc_testing_proto2_ext_proto_goTypes = nil
+	file_reflection_grpc_testing_proto2_ext_proto_depIdxs = nil
 }
diff --git a/reflection/grpc_testing/proto2_ext2.pb.go b/reflection/grpc_testing/proto2_ext2.pb.go
index ad2fef3..88b9656 100644
--- a/reflection/grpc_testing/proto2_ext2.pb.go
+++ b/reflection/grpc_testing/proto2_ext2.pb.go
@@ -1,105 +1,209 @@
+// Copyright 2017 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: reflection/grpc_testing/proto2_ext2.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type AnotherExtension struct {
-	Whatchamacallit      *int32   `protobuf:"varint,1,opt,name=whatchamacallit" json:"whatchamacallit,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Whatchamacallit *int32 `protobuf:"varint,1,opt,name=whatchamacallit" json:"whatchamacallit,omitempty"`
 }
 
-func (m *AnotherExtension) Reset()         { *m = AnotherExtension{} }
-func (m *AnotherExtension) String() string { return proto.CompactTextString(m) }
-func (*AnotherExtension) ProtoMessage()    {}
+func (x *AnotherExtension) Reset() {
+	*x = AnotherExtension{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_proto2_ext2_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *AnotherExtension) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AnotherExtension) ProtoMessage() {}
+
+func (x *AnotherExtension) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_proto2_ext2_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use AnotherExtension.ProtoReflect.Descriptor instead.
 func (*AnotherExtension) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ead6f7bd8a66fb18, []int{0}
+	return file_reflection_grpc_testing_proto2_ext2_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *AnotherExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_AnotherExtension.Unmarshal(m, b)
-}
-func (m *AnotherExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_AnotherExtension.Marshal(b, m, deterministic)
-}
-func (m *AnotherExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnotherExtension.Merge(m, src)
-}
-func (m *AnotherExtension) XXX_Size() int {
-	return xxx_messageInfo_AnotherExtension.Size(m)
-}
-func (m *AnotherExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_AnotherExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_AnotherExtension proto.InternalMessageInfo
-
-func (m *AnotherExtension) GetWhatchamacallit() int32 {
-	if m != nil && m.Whatchamacallit != nil {
-		return *m.Whatchamacallit
+func (x *AnotherExtension) GetWhatchamacallit() int32 {
+	if x != nil && x.Whatchamacallit != nil {
+		return *x.Whatchamacallit
 	}
 	return 0
 }
 
-var E_Frob = &proto.ExtensionDesc{
-	ExtendedType:  (*ToBeExtended)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         23,
-	Name:          "grpc.testing.frob",
-	Tag:           "bytes,23,opt,name=frob",
-	Filename:      "reflection/grpc_testing/proto2_ext2.proto",
+var file_reflection_grpc_testing_proto2_ext2_proto_extTypes = []protoimpl.ExtensionInfo{
+	{
+		ExtendedType:  (*ToBeExtended)(nil),
+		ExtensionType: (*string)(nil),
+		Field:         23,
+		Name:          "grpc.testing.frob",
+		Tag:           "bytes,23,opt,name=frob",
+		Filename:      "reflection/grpc_testing/proto2_ext2.proto",
+	},
+	{
+		ExtendedType:  (*ToBeExtended)(nil),
+		ExtensionType: (*AnotherExtension)(nil),
+		Field:         29,
+		Name:          "grpc.testing.nitz",
+		Tag:           "bytes,29,opt,name=nitz",
+		Filename:      "reflection/grpc_testing/proto2_ext2.proto",
+	},
 }
 
-var E_Nitz = &proto.ExtensionDesc{
-	ExtendedType:  (*ToBeExtended)(nil),
-	ExtensionType: (*AnotherExtension)(nil),
-	Field:         29,
-	Name:          "grpc.testing.nitz",
-	Tag:           "bytes,29,opt,name=nitz",
-	Filename:      "reflection/grpc_testing/proto2_ext2.proto",
+// Extension fields to ToBeExtended.
+var (
+	// optional string frob = 23;
+	E_Frob = &file_reflection_grpc_testing_proto2_ext2_proto_extTypes[0]
+	// optional grpc.testing.AnotherExtension nitz = 29;
+	E_Nitz = &file_reflection_grpc_testing_proto2_ext2_proto_extTypes[1]
+)
+
+var File_reflection_grpc_testing_proto2_ext2_proto protoreflect.FileDescriptor
+
+var file_reflection_grpc_testing_proto2_ext2_proto_rawDesc = []byte{
+	0x0a, 0x29, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
+	0x5f, 0x65, 0x78, 0x74, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x1a, 0x24, 0x72, 0x65, 0x66, 0x6c, 0x65,
+	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
+	0x3c, 0x0a, 0x10, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x68, 0x61, 0x74, 0x63, 0x68, 0x61, 0x6d, 0x61,
+	0x63, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x77, 0x68,
+	0x61, 0x74, 0x63, 0x68, 0x61, 0x6d, 0x61, 0x63, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x3a, 0x2e, 0x0a,
+	0x04, 0x66, 0x72, 0x6f, 0x62, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65,
+	0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x62, 0x3a, 0x4e, 0x0a,
+	0x04, 0x6e, 0x69, 0x74, 0x7a, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x6f, 0x42, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65,
+	0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x69, 0x74, 0x7a, 0x42, 0x30, 0x5a,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
+	0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
 }
 
-func init() {
-	proto.RegisterType((*AnotherExtension)(nil), "grpc.testing.AnotherExtension")
-	proto.RegisterExtension(E_Frob)
-	proto.RegisterExtension(E_Nitz)
+var (
+	file_reflection_grpc_testing_proto2_ext2_proto_rawDescOnce sync.Once
+	file_reflection_grpc_testing_proto2_ext2_proto_rawDescData = file_reflection_grpc_testing_proto2_ext2_proto_rawDesc
+)
+
+func file_reflection_grpc_testing_proto2_ext2_proto_rawDescGZIP() []byte {
+	file_reflection_grpc_testing_proto2_ext2_proto_rawDescOnce.Do(func() {
+		file_reflection_grpc_testing_proto2_ext2_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflection_grpc_testing_proto2_ext2_proto_rawDescData)
+	})
+	return file_reflection_grpc_testing_proto2_ext2_proto_rawDescData
 }
 
-func init() {
-	proto.RegisterFile("reflection/grpc_testing/proto2_ext2.proto", fileDescriptor_ead6f7bd8a66fb18)
+var file_reflection_grpc_testing_proto2_ext2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_reflection_grpc_testing_proto2_ext2_proto_goTypes = []interface{}{
+	(*AnotherExtension)(nil), // 0: grpc.testing.AnotherExtension
+	(*ToBeExtended)(nil),     // 1: grpc.testing.ToBeExtended
+}
+var file_reflection_grpc_testing_proto2_ext2_proto_depIdxs = []int32{
+	1, // 0: grpc.testing.frob:extendee -> grpc.testing.ToBeExtended
+	1, // 1: grpc.testing.nitz:extendee -> grpc.testing.ToBeExtended
+	0, // 2: grpc.testing.nitz:type_name -> grpc.testing.AnotherExtension
+	3, // [3:3] is the sub-list for method output_type
+	3, // [3:3] is the sub-list for method input_type
+	2, // [2:3] is the sub-list for extension type_name
+	0, // [0:2] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
 }
 
-var fileDescriptor_ead6f7bd8a66fb18 = []byte{
-	// 208 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x8f, 0x31, 0x4b, 0xc7, 0x30,
-	0x10, 0xc5, 0x09, 0xfc, 0x1d, 0x8c, 0x82, 0xd2, 0xc5, 0x52, 0x50, 0x8a, 0x38, 0xc4, 0xe5, 0x2a,
-	0x1d, 0x8b, 0x8b, 0x05, 0x57, 0x87, 0xe2, 0xe4, 0x52, 0x62, 0x7a, 0x4d, 0x03, 0x31, 0x57, 0xd2,
-	0x03, 0x8b, 0x9f, 0x5e, 0x8c, 0x0e, 0x5a, 0xb0, 0xdb, 0x71, 0xef, 0xf7, 0xde, 0xdd, 0x93, 0xb7,
-	0x11, 0x47, 0x8f, 0x86, 0x1d, 0x85, 0xca, 0xc6, 0xd9, 0xf4, 0x8c, 0x0b, 0xbb, 0x60, 0xab, 0x39,
-	0x12, 0x53, 0xdd, 0xe3, 0xca, 0x35, 0xa4, 0x39, 0x3b, 0xfd, 0xd2, 0xe1, 0x47, 0x2f, 0x6e, 0xf6,
-	0x8d, 0xdf, 0x9e, 0xeb, 0x7b, 0x79, 0xfe, 0x10, 0x88, 0x27, 0x8c, 0x8f, 0x2b, 0x63, 0x58, 0x1c,
-	0x85, 0x4c, 0xc9, 0xb3, 0xf7, 0x49, 0xb3, 0x99, 0xf4, 0x9b, 0x36, 0xda, 0x7b, 0xc7, 0xb9, 0x28,
-	0x85, 0x3a, 0xea, 0xb6, 0xeb, 0x06, 0xe4, 0x61, 0x8c, 0xf4, 0x9a, 0x15, 0xf0, 0xfb, 0x34, 0x3c,
-	0x53, 0x8b, 0x29, 0x6e, 0xc0, 0x21, 0xbf, 0x28, 0x85, 0x3a, 0xee, 0x12, 0xd7, 0x3c, 0xc9, 0x43,
-	0x70, 0xfc, 0xb1, 0xcb, 0x5f, 0x96, 0x42, 0x9d, 0xd4, 0x57, 0x7f, 0x89, 0xed, 0x8f, 0x5d, 0xca,
-	0x69, 0xef, 0x5e, 0xc0, 0x12, 0x59, 0x8f, 0x60, 0xc9, 0xeb, 0x60, 0x81, 0xa2, 0x4d, 0x65, 0xab,
-	0x7f, 0xca, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x18, 0x74, 0xc1, 0x53, 0x4f, 0x01, 0x00, 0x00,
+func init() { file_reflection_grpc_testing_proto2_ext2_proto_init() }
+func file_reflection_grpc_testing_proto2_ext2_proto_init() {
+	if File_reflection_grpc_testing_proto2_ext2_proto != nil {
+		return
+	}
+	file_reflection_grpc_testing_proto2_proto_init()
+	if !protoimpl.UnsafeEnabled {
+		file_reflection_grpc_testing_proto2_ext2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AnotherExtension); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_reflection_grpc_testing_proto2_ext2_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 2,
+			NumServices:   0,
+		},
+		GoTypes:           file_reflection_grpc_testing_proto2_ext2_proto_goTypes,
+		DependencyIndexes: file_reflection_grpc_testing_proto2_ext2_proto_depIdxs,
+		MessageInfos:      file_reflection_grpc_testing_proto2_ext2_proto_msgTypes,
+		ExtensionInfos:    file_reflection_grpc_testing_proto2_ext2_proto_extTypes,
+	}.Build()
+	File_reflection_grpc_testing_proto2_ext2_proto = out.File
+	file_reflection_grpc_testing_proto2_ext2_proto_rawDesc = nil
+	file_reflection_grpc_testing_proto2_ext2_proto_goTypes = nil
+	file_reflection_grpc_testing_proto2_ext2_proto_depIdxs = nil
 }
diff --git a/reflection/grpc_testing/test.pb.go b/reflection/grpc_testing/test.pb.go
index 464bf39..b5e589e 100644
--- a/reflection/grpc_testing/test.pb.go
+++ b/reflection/grpc_testing/test.pb.go
@@ -1,185 +1,326 @@
+// Copyright 2017 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: reflection/grpc_testing/test.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type SearchResponse struct {
-	Results              []*SearchResponse_Result `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
-	XXX_unrecognized     []byte                   `json:"-"`
-	XXX_sizecache        int32                    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Results []*SearchResponse_Result `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
 }
 
-func (m *SearchResponse) Reset()         { *m = SearchResponse{} }
-func (m *SearchResponse) String() string { return proto.CompactTextString(m) }
-func (*SearchResponse) ProtoMessage()    {}
+func (x *SearchResponse) Reset() {
+	*x = SearchResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_test_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SearchResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SearchResponse) ProtoMessage() {}
+
+func (x *SearchResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_test_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead.
 func (*SearchResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b179ea967ba71047, []int{0}
+	return file_reflection_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *SearchResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchResponse.Unmarshal(m, b)
-}
-func (m *SearchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchResponse.Marshal(b, m, deterministic)
-}
-func (m *SearchResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchResponse.Merge(m, src)
-}
-func (m *SearchResponse) XXX_Size() int {
-	return xxx_messageInfo_SearchResponse.Size(m)
-}
-func (m *SearchResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SearchResponse proto.InternalMessageInfo
-
-func (m *SearchResponse) GetResults() []*SearchResponse_Result {
-	if m != nil {
-		return m.Results
-	}
-	return nil
-}
-
-type SearchResponse_Result struct {
-	Url                  string   `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
-	Title                string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
-	Snippets             []string `protobuf:"bytes,3,rep,name=snippets,proto3" json:"snippets,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SearchResponse_Result) Reset()         { *m = SearchResponse_Result{} }
-func (m *SearchResponse_Result) String() string { return proto.CompactTextString(m) }
-func (*SearchResponse_Result) ProtoMessage()    {}
-func (*SearchResponse_Result) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b179ea967ba71047, []int{0, 0}
-}
-
-func (m *SearchResponse_Result) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchResponse_Result.Unmarshal(m, b)
-}
-func (m *SearchResponse_Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchResponse_Result.Marshal(b, m, deterministic)
-}
-func (m *SearchResponse_Result) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchResponse_Result.Merge(m, src)
-}
-func (m *SearchResponse_Result) XXX_Size() int {
-	return xxx_messageInfo_SearchResponse_Result.Size(m)
-}
-func (m *SearchResponse_Result) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchResponse_Result.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SearchResponse_Result proto.InternalMessageInfo
-
-func (m *SearchResponse_Result) GetUrl() string {
-	if m != nil {
-		return m.Url
-	}
-	return ""
-}
-
-func (m *SearchResponse_Result) GetTitle() string {
-	if m != nil {
-		return m.Title
-	}
-	return ""
-}
-
-func (m *SearchResponse_Result) GetSnippets() []string {
-	if m != nil {
-		return m.Snippets
+func (x *SearchResponse) GetResults() []*SearchResponse_Result {
+	if x != nil {
+		return x.Results
 	}
 	return nil
 }
 
 type SearchRequest struct {
-	Query                string   `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
 }
 
-func (m *SearchRequest) Reset()         { *m = SearchRequest{} }
-func (m *SearchRequest) String() string { return proto.CompactTextString(m) }
-func (*SearchRequest) ProtoMessage()    {}
+func (x *SearchRequest) Reset() {
+	*x = SearchRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_test_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SearchRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SearchRequest) ProtoMessage() {}
+
+func (x *SearchRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_test_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead.
 func (*SearchRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_b179ea967ba71047, []int{1}
+	return file_reflection_grpc_testing_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *SearchRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SearchRequest.Unmarshal(m, b)
-}
-func (m *SearchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SearchRequest.Marshal(b, m, deterministic)
-}
-func (m *SearchRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SearchRequest.Merge(m, src)
-}
-func (m *SearchRequest) XXX_Size() int {
-	return xxx_messageInfo_SearchRequest.Size(m)
-}
-func (m *SearchRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SearchRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SearchRequest proto.InternalMessageInfo
-
-func (m *SearchRequest) GetQuery() string {
-	if m != nil {
-		return m.Query
+func (x *SearchRequest) GetQuery() string {
+	if x != nil {
+		return x.Query
 	}
 	return ""
 }
 
-func init() {
-	proto.RegisterType((*SearchResponse)(nil), "grpc.testing.SearchResponse")
-	proto.RegisterType((*SearchResponse_Result)(nil), "grpc.testing.SearchResponse.Result")
-	proto.RegisterType((*SearchRequest)(nil), "grpc.testing.SearchRequest")
+type SearchResponse_Result struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Url      string   `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
+	Title    string   `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
+	Snippets []string `protobuf:"bytes,3,rep,name=snippets,proto3" json:"snippets,omitempty"`
 }
 
-func init() {
-	proto.RegisterFile("reflection/grpc_testing/test.proto", fileDescriptor_b179ea967ba71047)
+func (x *SearchResponse_Result) Reset() {
+	*x = SearchResponse_Result{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_reflection_grpc_testing_test_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
 }
 
-var fileDescriptor_b179ea967ba71047 = []byte{
-	// 267 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x51, 0x3f, 0x4b, 0xfd, 0x30,
-	0x14, 0x25, 0xbf, 0xf2, 0xab, 0xbe, 0xeb, 0x5f, 0x82, 0x43, 0xa9, 0x0e, 0xa5, 0x22, 0x74, 0x4a,
-	0x1f, 0xcf, 0xd9, 0x45, 0x57, 0x07, 0x69, 0x37, 0x17, 0xa9, 0xe5, 0x1a, 0x03, 0x31, 0xe9, 0xbb,
-	0xb9, 0x15, 0xfc, 0x30, 0xae, 0x7e, 0x4e, 0x69, 0xfb, 0x2a, 0x0a, 0xea, 0xe2, 0x94, 0x9c, 0x73,
-	0xcf, 0x39, 0xc9, 0xe5, 0x40, 0x4e, 0xf8, 0x60, 0xb1, 0x65, 0xe3, 0x5d, 0xa9, 0xa9, 0x6b, 0xef,
-	0x18, 0x03, 0x1b, 0xa7, 0xcb, 0xe1, 0x54, 0x1d, 0x79, 0xf6, 0x72, 0x77, 0x18, 0xa8, 0xcd, 0x20,
-	0x7f, 0x15, 0xb0, 0x5f, 0x63, 0x43, 0xed, 0x63, 0x85, 0xa1, 0xf3, 0x2e, 0xa0, 0xbc, 0x80, 0x2d,
-	0xc2, 0xd0, 0x5b, 0x0e, 0x89, 0xc8, 0xa2, 0x62, 0x67, 0x75, 0xaa, 0x3e, 0x5b, 0xd4, 0x57, 0xb9,
-	0xaa, 0x46, 0x6d, 0x35, 0x7b, 0xd2, 0x6b, 0x88, 0x27, 0x4a, 0x1e, 0x42, 0xd4, 0x93, 0x4d, 0x44,
-	0x26, 0x8a, 0x45, 0x35, 0x5c, 0xe5, 0x11, 0xfc, 0x67, 0xc3, 0x16, 0x93, 0x7f, 0x23, 0x37, 0x01,
-	0x99, 0xc2, 0x76, 0x70, 0xa6, 0xeb, 0x90, 0x43, 0x12, 0x65, 0x51, 0xb1, 0xa8, 0x3e, 0x70, 0x7e,
-	0x06, 0x7b, 0xf3, 0x7b, 0xeb, 0x1e, 0x03, 0x0f, 0x11, 0xeb, 0x1e, 0xe9, 0x65, 0x13, 0x3b, 0x81,
-	0xd5, 0x9b, 0x98, 0x75, 0x35, 0xd2, 0xb3, 0x69, 0x51, 0x5e, 0x41, 0x3c, 0x11, 0xf2, 0xf8, 0xfb,
-	0xef, 0x8f, 0x71, 0xe9, 0xc9, 0x6f, 0xbb, 0xc9, 0x1b, 0x38, 0xa8, 0x99, 0xb0, 0x79, 0x32, 0x4e,
-	0xff, 0x39, 0xad, 0x10, 0x4b, 0x71, 0xb9, 0xbc, 0x55, 0xda, 0x7b, 0x6d, 0x51, 0x69, 0x6f, 0x1b,
-	0xa7, 0x95, 0x27, 0x3d, 0x56, 0x55, 0xfe, 0x50, 0xdd, 0x7d, 0x3c, 0xd6, 0x76, 0xfe, 0x1e, 0x00,
-	0x00, 0xff, 0xff, 0x38, 0x42, 0x3b, 0xd2, 0xdc, 0x01, 0x00, 0x00,
+func (x *SearchResponse_Result) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SearchResponse_Result) ProtoMessage() {}
+
+func (x *SearchResponse_Result) ProtoReflect() protoreflect.Message {
+	mi := &file_reflection_grpc_testing_test_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SearchResponse_Result.ProtoReflect.Descriptor instead.
+func (*SearchResponse_Result) Descriptor() ([]byte, []int) {
+	return file_reflection_grpc_testing_test_proto_rawDescGZIP(), []int{0, 0}
+}
+
+func (x *SearchResponse_Result) GetUrl() string {
+	if x != nil {
+		return x.Url
+	}
+	return ""
+}
+
+func (x *SearchResponse_Result) GetTitle() string {
+	if x != nil {
+		return x.Title
+	}
+	return ""
+}
+
+func (x *SearchResponse_Result) GetSnippets() []string {
+	if x != nil {
+		return x.Snippets
+	}
+	return nil
+}
+
+var File_reflection_grpc_testing_test_proto protoreflect.FileDescriptor
+
+var file_reflection_grpc_testing_test_proto_rawDesc = []byte{
+	0x0a, 0x22, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70,
+	0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x22, 0x9d, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
+	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73,
+	0x75, 0x6c, 0x74, 0x73, 0x1a, 0x4c, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x10,
+	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
+	0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65,
+	0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65,
+	0x74, 0x73, 0x22, 0x25, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x32, 0xa6, 0x01, 0x0a, 0x0d, 0x53, 0x65,
+	0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x53,
+	0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
+	0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x50, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x61,
+	0x72, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01,
+	0x30, 0x01, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x65, 0x66,
+	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_reflection_grpc_testing_test_proto_rawDescOnce sync.Once
+	file_reflection_grpc_testing_test_proto_rawDescData = file_reflection_grpc_testing_test_proto_rawDesc
+)
+
+func file_reflection_grpc_testing_test_proto_rawDescGZIP() []byte {
+	file_reflection_grpc_testing_test_proto_rawDescOnce.Do(func() {
+		file_reflection_grpc_testing_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflection_grpc_testing_test_proto_rawDescData)
+	})
+	return file_reflection_grpc_testing_test_proto_rawDescData
+}
+
+var file_reflection_grpc_testing_test_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_reflection_grpc_testing_test_proto_goTypes = []interface{}{
+	(*SearchResponse)(nil),        // 0: grpc.testing.SearchResponse
+	(*SearchRequest)(nil),         // 1: grpc.testing.SearchRequest
+	(*SearchResponse_Result)(nil), // 2: grpc.testing.SearchResponse.Result
+}
+var file_reflection_grpc_testing_test_proto_depIdxs = []int32{
+	2, // 0: grpc.testing.SearchResponse.results:type_name -> grpc.testing.SearchResponse.Result
+	1, // 1: grpc.testing.SearchService.Search:input_type -> grpc.testing.SearchRequest
+	1, // 2: grpc.testing.SearchService.StreamingSearch:input_type -> grpc.testing.SearchRequest
+	0, // 3: grpc.testing.SearchService.Search:output_type -> grpc.testing.SearchResponse
+	0, // 4: grpc.testing.SearchService.StreamingSearch:output_type -> grpc.testing.SearchResponse
+	3, // [3:5] is the sub-list for method output_type
+	1, // [1:3] 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
+}
+
+func init() { file_reflection_grpc_testing_test_proto_init() }
+func file_reflection_grpc_testing_test_proto_init() {
+	if File_reflection_grpc_testing_test_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_reflection_grpc_testing_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_testing_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_reflection_grpc_testing_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SearchResponse_Result); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_reflection_grpc_testing_test_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_reflection_grpc_testing_test_proto_goTypes,
+		DependencyIndexes: file_reflection_grpc_testing_test_proto_depIdxs,
+		MessageInfos:      file_reflection_grpc_testing_test_proto_msgTypes,
+	}.Build()
+	File_reflection_grpc_testing_test_proto = out.File
+	file_reflection_grpc_testing_test_proto_rawDesc = nil
+	file_reflection_grpc_testing_test_proto_goTypes = nil
+	file_reflection_grpc_testing_test_proto_depIdxs = nil
 }
diff --git a/regenerate.sh b/regenerate.sh
index 647a55a..3443ad9 100755
--- a/regenerate.sh
+++ b/regenerate.sh
@@ -31,8 +31,8 @@
 # intentionally generated by an older version of protoc-gen-go.
 rm -f $(find . -name '*.pb.go' | grep -v 'grpc_testingv3/testv3.pb.go')
 
-echo "go install github.com/golang/protobuf/protoc-gen-go"
-(cd test/tools && go install github.com/golang/protobuf/protoc-gen-go)
+echo "go install google.golang.org/protobuf/cmd/protoc-gen-go"
+(cd test/tools && go install google.golang.org/protobuf/cmd/protoc-gen-go)
 
 echo "go install cmd/protoc-gen-go-grpc"
 (cd cmd/protoc-gen-go-grpc && go install .)
diff --git a/stats/grpc_testing/test.pb.go b/stats/grpc_testing/test.pb.go
index df3796e..59866b7 100644
--- a/stats/grpc_testing/test.pb.go
+++ b/stats/grpc_testing/test.pb.go
@@ -1,125 +1,254 @@
+// Copyright 2017 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.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: stats/grpc_testing/test.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 type SimpleRequest struct {
-	Id                   int32    `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id int32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"`
 }
 
-func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
-func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
-func (*SimpleRequest) ProtoMessage()    {}
+func (x *SimpleRequest) Reset() {
+	*x = SimpleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_stats_grpc_testing_test_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleRequest) ProtoMessage() {}
+
+func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_stats_grpc_testing_test_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
 func (*SimpleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7a50f7a8e9e8e09, []int{0}
+	return file_stats_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
-}
-func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
-}
-func (m *SimpleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleRequest.Merge(m, src)
-}
-func (m *SimpleRequest) XXX_Size() int {
-	return xxx_messageInfo_SimpleRequest.Size(m)
-}
-func (m *SimpleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
-
-func (m *SimpleRequest) GetId() int32 {
-	if m != nil {
-		return m.Id
+func (x *SimpleRequest) GetId() int32 {
+	if x != nil {
+		return x.Id
 	}
 	return 0
 }
 
 type SimpleResponse struct {
-	Id                   int32    `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Id int32 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"`
 }
 
-func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
-func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
-func (*SimpleResponse) ProtoMessage()    {}
+func (x *SimpleResponse) Reset() {
+	*x = SimpleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_stats_grpc_testing_test_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleResponse) ProtoMessage() {}
+
+func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_stats_grpc_testing_test_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
 func (*SimpleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7a50f7a8e9e8e09, []int{1}
+	return file_stats_grpc_testing_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
-}
-func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
-}
-func (m *SimpleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleResponse.Merge(m, src)
-}
-func (m *SimpleResponse) XXX_Size() int {
-	return xxx_messageInfo_SimpleResponse.Size(m)
-}
-func (m *SimpleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
-
-func (m *SimpleResponse) GetId() int32 {
-	if m != nil {
-		return m.Id
+func (x *SimpleResponse) GetId() int32 {
+	if x != nil {
+		return x.Id
 	}
 	return 0
 }
 
-func init() {
-	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
-	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
+var File_stats_grpc_testing_test_proto protoreflect.FileDescriptor
+
+var file_stats_grpc_testing_test_proto_rawDesc = []byte{
+	0x0a, 0x1d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
+	0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x1f, 0x0a,
+	0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e,
+	0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x20,
+	0x0a, 0x0e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
+	0x32, 0xc8, 0x02, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c,
+	0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73,
+	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x10, 0x43, 0x6c, 0x69,
+	0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d,
+	0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x4f, 0x0a, 0x10, 0x53, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x1b,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69,
+	0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c,
+	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0x2b, 0x5a, 0x29, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("stats/grpc_testing/test.proto", fileDescriptor_d7a50f7a8e9e8e09) }
+var (
+	file_stats_grpc_testing_test_proto_rawDescOnce sync.Once
+	file_stats_grpc_testing_test_proto_rawDescData = file_stats_grpc_testing_test_proto_rawDesc
+)
 
-var fileDescriptor_d7a50f7a8e9e8e09 = []byte{
-	// 233 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x91, 0xcf, 0x4a, 0x03, 0x31,
-	0x10, 0xc6, 0x49, 0x44, 0xc1, 0x51, 0x17, 0xc9, 0x49, 0xfc, 0x83, 0xa5, 0xa7, 0x8a, 0x90, 0x2d,
-	0xfa, 0x06, 0x56, 0x7a, 0x2d, 0x74, 0xf5, 0xe2, 0x45, 0x62, 0x3b, 0x84, 0xc0, 0x34, 0x89, 0xc9,
-	0xac, 0xe8, 0x1b, 0xfa, 0x58, 0x92, 0xb2, 0x0b, 0x8a, 0xde, 0xd6, 0xd3, 0x1c, 0xbe, 0x8f, 0xdf,
-	0xc7, 0xf0, 0x83, 0x8b, 0xcc, 0x86, 0x73, 0x6d, 0x53, 0x5c, 0x3d, 0x33, 0x66, 0x76, 0xde, 0xd6,
-	0xe5, 0xea, 0x98, 0x02, 0x07, 0x75, 0x58, 0x02, 0xdd, 0x05, 0xe3, 0x4b, 0x38, 0x6a, 0xdc, 0x26,
-	0x12, 0x2e, 0xf1, 0xb5, 0xc5, 0xcc, 0xaa, 0x02, 0xe9, 0xd6, 0x27, 0x72, 0x24, 0x26, 0xbb, 0x4b,
-	0xe9, 0xd6, 0xe3, 0x11, 0x54, 0x7d, 0x21, 0xc7, 0xe0, 0x33, 0x76, 0x8d, 0x9d, 0xbe, 0x71, 0xf3,
-	0x29, 0xe1, 0xe0, 0x01, 0x33, 0x37, 0x98, 0xde, 0xdc, 0x0a, 0xd5, 0x1c, 0xf6, 0x1f, 0xbd, 0x49,
-	0x1f, 0x33, 0x43, 0xa4, 0xce, 0xf4, 0xf7, 0x39, 0xfd, 0x63, 0xeb, 0xf4, 0xfc, 0xef, 0xb0, 0xdb,
-	0x59, 0x40, 0x35, 0x6f, 0x89, 0xee, 0xdb, 0x48, 0xf8, 0x3e, 0x10, 0x36, 0x11, 0x53, 0xa1, 0x16,
-	0x70, 0x3c, 0x23, 0x87, 0x9e, 0x1b, 0x4e, 0x68, 0x36, 0x83, 0x91, 0x05, 0x58, 0x9e, 0xc6, 0xf4,
-	0x2f, 0xc0, 0xa9, 0xb8, 0xbb, 0x7e, 0xba, 0xb2, 0x21, 0x58, 0x42, 0x6d, 0x03, 0x19, 0x6f, 0x75,
-	0x48, 0x76, 0x2b, 0xb2, 0xfe, 0xed, 0xf4, 0x65, 0x6f, 0xeb, 0xf3, 0xf6, 0x2b, 0x00, 0x00, 0xff,
-	0xff, 0x7c, 0x26, 0xce, 0x3c, 0xf0, 0x01, 0x00, 0x00,
+func file_stats_grpc_testing_test_proto_rawDescGZIP() []byte {
+	file_stats_grpc_testing_test_proto_rawDescOnce.Do(func() {
+		file_stats_grpc_testing_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_stats_grpc_testing_test_proto_rawDescData)
+	})
+	return file_stats_grpc_testing_test_proto_rawDescData
+}
+
+var file_stats_grpc_testing_test_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_stats_grpc_testing_test_proto_goTypes = []interface{}{
+	(*SimpleRequest)(nil),  // 0: grpc.testing.SimpleRequest
+	(*SimpleResponse)(nil), // 1: grpc.testing.SimpleResponse
+}
+var file_stats_grpc_testing_test_proto_depIdxs = []int32{
+	0, // 0: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest
+	0, // 1: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.SimpleRequest
+	0, // 2: grpc.testing.TestService.ClientStreamCall:input_type -> grpc.testing.SimpleRequest
+	0, // 3: grpc.testing.TestService.ServerStreamCall:input_type -> grpc.testing.SimpleRequest
+	1, // 4: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse
+	1, // 5: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.SimpleResponse
+	1, // 6: grpc.testing.TestService.ClientStreamCall:output_type -> grpc.testing.SimpleResponse
+	1, // 7: grpc.testing.TestService.ServerStreamCall:output_type -> grpc.testing.SimpleResponse
+	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
+}
+
+func init() { file_stats_grpc_testing_test_proto_init() }
+func file_stats_grpc_testing_test_proto_init() {
+	if File_stats_grpc_testing_test_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_stats_grpc_testing_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_stats_grpc_testing_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_stats_grpc_testing_test_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_stats_grpc_testing_test_proto_goTypes,
+		DependencyIndexes: file_stats_grpc_testing_test_proto_depIdxs,
+		MessageInfos:      file_stats_grpc_testing_test_proto_msgTypes,
+	}.Build()
+	File_stats_grpc_testing_test_proto = out.File
+	file_stats_grpc_testing_test_proto_rawDesc = nil
+	file_stats_grpc_testing_test_proto_goTypes = nil
+	file_stats_grpc_testing_test_proto_depIdxs = nil
 }
diff --git a/stress/grpc_testing/metrics.pb.go b/stress/grpc_testing/metrics.pb.go
index 40a0123..45d34c6 100644
--- a/stress/grpc_testing/metrics.pb.go
+++ b/stress/grpc_testing/metrics.pb.go
@@ -1,66 +1,128 @@
+// Copyright 2015-2016 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.
+
+// Contains the definitions for a metrics service and the type of metrics
+// exposed by the service.
+//
+// Currently, 'Gauge' (i.e a metric that represents the measured value of
+// something at an instant of time) is the only metric type supported by the
+// service.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: stress/grpc_testing/metrics.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Response message containing the gauge name and value
 type GaugeResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Types that are valid to be assigned to Value:
+	// Types that are assignable to Value:
 	//	*GaugeResponse_LongValue
 	//	*GaugeResponse_DoubleValue
 	//	*GaugeResponse_StringValue
-	Value                isGaugeResponse_Value `protobuf_oneof:"value"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
+	Value isGaugeResponse_Value `protobuf_oneof:"value"`
 }
 
-func (m *GaugeResponse) Reset()         { *m = GaugeResponse{} }
-func (m *GaugeResponse) String() string { return proto.CompactTextString(m) }
-func (*GaugeResponse) ProtoMessage()    {}
+func (x *GaugeResponse) Reset() {
+	*x = GaugeResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_stress_grpc_testing_metrics_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GaugeResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GaugeResponse) ProtoMessage() {}
+
+func (x *GaugeResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_stress_grpc_testing_metrics_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GaugeResponse.ProtoReflect.Descriptor instead.
 func (*GaugeResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_028251bc41da09ab, []int{0}
+	return file_stress_grpc_testing_metrics_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *GaugeResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GaugeResponse.Unmarshal(m, b)
-}
-func (m *GaugeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GaugeResponse.Marshal(b, m, deterministic)
-}
-func (m *GaugeResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GaugeResponse.Merge(m, src)
-}
-func (m *GaugeResponse) XXX_Size() int {
-	return xxx_messageInfo_GaugeResponse.Size(m)
-}
-func (m *GaugeResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_GaugeResponse.DiscardUnknown(m)
+func (x *GaugeResponse) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
 }
 
-var xxx_messageInfo_GaugeResponse proto.InternalMessageInfo
-
-func (m *GaugeResponse) GetName() string {
+func (m *GaugeResponse) GetValue() isGaugeResponse_Value {
 	if m != nil {
-		return m.Name
+		return m.Value
+	}
+	return nil
+}
+
+func (x *GaugeResponse) GetLongValue() int64 {
+	if x, ok := x.GetValue().(*GaugeResponse_LongValue); ok {
+		return x.LongValue
+	}
+	return 0
+}
+
+func (x *GaugeResponse) GetDoubleValue() float64 {
+	if x, ok := x.GetValue().(*GaugeResponse_DoubleValue); ok {
+		return x.DoubleValue
+	}
+	return 0
+}
+
+func (x *GaugeResponse) GetStringValue() string {
+	if x, ok := x.GetValue().(*GaugeResponse_StringValue); ok {
+		return x.StringValue
 	}
 	return ""
 }
@@ -87,140 +149,221 @@
 
 func (*GaugeResponse_StringValue) isGaugeResponse_Value() {}
 
-func (m *GaugeResponse) GetValue() isGaugeResponse_Value {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *GaugeResponse) GetLongValue() int64 {
-	if x, ok := m.GetValue().(*GaugeResponse_LongValue); ok {
-		return x.LongValue
-	}
-	return 0
-}
-
-func (m *GaugeResponse) GetDoubleValue() float64 {
-	if x, ok := m.GetValue().(*GaugeResponse_DoubleValue); ok {
-		return x.DoubleValue
-	}
-	return 0
-}
-
-func (m *GaugeResponse) GetStringValue() string {
-	if x, ok := m.GetValue().(*GaugeResponse_StringValue); ok {
-		return x.StringValue
-	}
-	return ""
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*GaugeResponse) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*GaugeResponse_LongValue)(nil),
-		(*GaugeResponse_DoubleValue)(nil),
-		(*GaugeResponse_StringValue)(nil),
-	}
-}
-
 // Request message containing the gauge name
 type GaugeRequest struct {
-	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 }
 
-func (m *GaugeRequest) Reset()         { *m = GaugeRequest{} }
-func (m *GaugeRequest) String() string { return proto.CompactTextString(m) }
-func (*GaugeRequest) ProtoMessage()    {}
+func (x *GaugeRequest) Reset() {
+	*x = GaugeRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_stress_grpc_testing_metrics_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *GaugeRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GaugeRequest) ProtoMessage() {}
+
+func (x *GaugeRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_stress_grpc_testing_metrics_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use GaugeRequest.ProtoReflect.Descriptor instead.
 func (*GaugeRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_028251bc41da09ab, []int{1}
+	return file_stress_grpc_testing_metrics_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *GaugeRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_GaugeRequest.Unmarshal(m, b)
-}
-func (m *GaugeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_GaugeRequest.Marshal(b, m, deterministic)
-}
-func (m *GaugeRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GaugeRequest.Merge(m, src)
-}
-func (m *GaugeRequest) XXX_Size() int {
-	return xxx_messageInfo_GaugeRequest.Size(m)
-}
-func (m *GaugeRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_GaugeRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_GaugeRequest proto.InternalMessageInfo
-
-func (m *GaugeRequest) GetName() string {
-	if m != nil {
-		return m.Name
+func (x *GaugeRequest) GetName() string {
+	if x != nil {
+		return x.Name
 	}
 	return ""
 }
 
 type EmptyMessage struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *EmptyMessage) Reset()         { *m = EmptyMessage{} }
-func (m *EmptyMessage) String() string { return proto.CompactTextString(m) }
-func (*EmptyMessage) ProtoMessage()    {}
+func (x *EmptyMessage) Reset() {
+	*x = EmptyMessage{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_stress_grpc_testing_metrics_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *EmptyMessage) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EmptyMessage) ProtoMessage() {}
+
+func (x *EmptyMessage) ProtoReflect() protoreflect.Message {
+	mi := &file_stress_grpc_testing_metrics_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use EmptyMessage.ProtoReflect.Descriptor instead.
 func (*EmptyMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_028251bc41da09ab, []int{2}
+	return file_stress_grpc_testing_metrics_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *EmptyMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_EmptyMessage.Unmarshal(m, b)
-}
-func (m *EmptyMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_EmptyMessage.Marshal(b, m, deterministic)
-}
-func (m *EmptyMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EmptyMessage.Merge(m, src)
-}
-func (m *EmptyMessage) XXX_Size() int {
-	return xxx_messageInfo_EmptyMessage.Size(m)
-}
-func (m *EmptyMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_EmptyMessage.DiscardUnknown(m)
+var File_stress_grpc_testing_metrics_proto protoreflect.FileDescriptor
+
+var file_stress_grpc_testing_metrics_proto_rawDesc = []byte{
+	0x0a, 0x21, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x22, 0x97, 0x01, 0x0a, 0x0d, 0x47, 0x61, 0x75, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x5f,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x6c,
+	0x6f, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62,
+	0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00,
+	0x52, 0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a,
+	0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20,
+	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x47,
+	0x61, 0x75, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
+	0x0e, 0x0a, 0x0c, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
+	0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69,
+	0x63, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x47, 0x61, 0x75, 0x67,
+	0x65, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1b,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x61,
+	0x75, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x43, 0x0a,
+	0x08, 0x47, 0x65, 0x74, 0x47, 0x61, 0x75, 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x61, 0x75, 0x67, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x61, 0x75, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
+	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x72,
+	0x65, 0x73, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-var xxx_messageInfo_EmptyMessage proto.InternalMessageInfo
+var (
+	file_stress_grpc_testing_metrics_proto_rawDescOnce sync.Once
+	file_stress_grpc_testing_metrics_proto_rawDescData = file_stress_grpc_testing_metrics_proto_rawDesc
+)
 
-func init() {
-	proto.RegisterType((*GaugeResponse)(nil), "grpc.testing.GaugeResponse")
-	proto.RegisterType((*GaugeRequest)(nil), "grpc.testing.GaugeRequest")
-	proto.RegisterType((*EmptyMessage)(nil), "grpc.testing.EmptyMessage")
+func file_stress_grpc_testing_metrics_proto_rawDescGZIP() []byte {
+	file_stress_grpc_testing_metrics_proto_rawDescOnce.Do(func() {
+		file_stress_grpc_testing_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_stress_grpc_testing_metrics_proto_rawDescData)
+	})
+	return file_stress_grpc_testing_metrics_proto_rawDescData
 }
 
-func init() { proto.RegisterFile("stress/grpc_testing/metrics.proto", fileDescriptor_028251bc41da09ab) }
+var file_stress_grpc_testing_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_stress_grpc_testing_metrics_proto_goTypes = []interface{}{
+	(*GaugeResponse)(nil), // 0: grpc.testing.GaugeResponse
+	(*GaugeRequest)(nil),  // 1: grpc.testing.GaugeRequest
+	(*EmptyMessage)(nil),  // 2: grpc.testing.EmptyMessage
+}
+var file_stress_grpc_testing_metrics_proto_depIdxs = []int32{
+	2, // 0: grpc.testing.MetricsService.GetAllGauges:input_type -> grpc.testing.EmptyMessage
+	1, // 1: grpc.testing.MetricsService.GetGauge:input_type -> grpc.testing.GaugeRequest
+	0, // 2: grpc.testing.MetricsService.GetAllGauges:output_type -> grpc.testing.GaugeResponse
+	0, // 3: grpc.testing.MetricsService.GetGauge:output_type -> grpc.testing.GaugeResponse
+	2, // [2:4] is the sub-list for method output_type
+	0, // [0:2] 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_028251bc41da09ab = []byte{
-	// 288 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x3f, 0x4f, 0xc3, 0x30,
-	0x10, 0xc5, 0x6b, 0x5a, 0xfe, 0xf4, 0x08, 0x1d, 0x3c, 0x55, 0x65, 0x20, 0x84, 0x25, 0x42, 0xc8,
-	0x41, 0xf0, 0x09, 0x28, 0x42, 0x29, 0x43, 0x97, 0x20, 0x31, 0xb0, 0x54, 0x69, 0x38, 0x59, 0x91,
-	0x9c, 0x38, 0xf8, 0x9c, 0x4a, 0x7c, 0x12, 0x56, 0x3e, 0x2a, 0x8a, 0x13, 0x55, 0x29, 0xaa, 0xba,
-	0x59, 0xbf, 0xf7, 0xfc, 0x7c, 0xe7, 0x07, 0xd7, 0x64, 0x0d, 0x12, 0x45, 0xd2, 0x54, 0xd9, 0xca,
-	0x22, 0xd9, 0xbc, 0x94, 0x51, 0x81, 0xd6, 0xe4, 0x19, 0x89, 0xca, 0x68, 0xab, 0xb9, 0xd7, 0x68,
-	0xa2, 0xd3, 0x82, 0x1f, 0x06, 0x17, 0x71, 0x5a, 0x4b, 0x4c, 0x90, 0x2a, 0x5d, 0x12, 0x72, 0x0e,
-	0xa3, 0x32, 0x2d, 0x70, 0xca, 0x7c, 0x16, 0x8e, 0x13, 0x77, 0xe6, 0x57, 0x00, 0x4a, 0x97, 0x72,
-	0xb5, 0x49, 0x55, 0x8d, 0xd3, 0x23, 0x9f, 0x85, 0xc3, 0xc5, 0x20, 0x19, 0x37, 0xec, 0xbd, 0x41,
-	0xfc, 0x06, 0xbc, 0x4f, 0x5d, 0xaf, 0x15, 0x76, 0x96, 0xa1, 0xcf, 0x42, 0xb6, 0x18, 0x24, 0xe7,
-	0x2d, 0xdd, 0x9a, 0xc8, 0x9a, 0x7c, 0x9b, 0x33, 0x6a, 0x5e, 0x68, 0x4c, 0x2d, 0x75, 0xa6, 0xf9,
-	0x29, 0x1c, 0x3b, 0x35, 0x08, 0xc0, 0xeb, 0x06, 0xfb, 0xaa, 0x91, 0xec, 0xbe, 0xb9, 0x82, 0x09,
-	0x78, 0x2f, 0x45, 0x65, 0xbf, 0x97, 0x48, 0x94, 0x4a, 0x7c, 0xf8, 0x65, 0x30, 0x59, 0xb6, 0xdb,
-	0xbe, 0xa1, 0xd9, 0xe4, 0x19, 0xf2, 0x57, 0xf0, 0x62, 0xb4, 0x4f, 0x4a, 0xb9, 0x30, 0xe2, 0x33,
-	0xd1, 0xdf, 0x5f, 0xf4, 0xaf, 0xcf, 0x2e, 0x77, 0xb5, 0x9d, 0x7f, 0xb9, 0x67, 0xfc, 0x19, 0xce,
-	0x62, 0xb4, 0x8e, 0xfe, 0x8f, 0xe9, 0x4f, 0x7a, 0x30, 0x66, 0x7e, 0xf7, 0x71, 0x2b, 0xb5, 0x96,
-	0x0a, 0x85, 0xd4, 0x2a, 0x2d, 0xa5, 0xd0, 0x46, 0xba, 0xba, 0xa2, 0x3d, 0xd5, 0xad, 0x4f, 0x5c,
-	0x67, 0x8f, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x8c, 0x62, 0x73, 0xd8, 0x01, 0x00, 0x00,
+func init() { file_stress_grpc_testing_metrics_proto_init() }
+func file_stress_grpc_testing_metrics_proto_init() {
+	if File_stress_grpc_testing_metrics_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_stress_grpc_testing_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GaugeResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_stress_grpc_testing_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*GaugeRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_stress_grpc_testing_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*EmptyMessage); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	file_stress_grpc_testing_metrics_proto_msgTypes[0].OneofWrappers = []interface{}{
+		(*GaugeResponse_LongValue)(nil),
+		(*GaugeResponse_DoubleValue)(nil),
+		(*GaugeResponse_StringValue)(nil),
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_stress_grpc_testing_metrics_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   3,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_stress_grpc_testing_metrics_proto_goTypes,
+		DependencyIndexes: file_stress_grpc_testing_metrics_proto_depIdxs,
+		MessageInfos:      file_stress_grpc_testing_metrics_proto_msgTypes,
+	}.Build()
+	File_stress_grpc_testing_metrics_proto = out.File
+	file_stress_grpc_testing_metrics_proto_rawDesc = nil
+	file_stress_grpc_testing_metrics_proto_goTypes = nil
+	file_stress_grpc_testing_metrics_proto_depIdxs = nil
 }
diff --git a/test/codec_perf/perf.pb.go b/test/codec_perf/perf.pb.go
index b98764a..d9c81ee 100644
--- a/test/codec_perf/perf.pb.go
+++ b/test/codec_perf/perf.pb.go
@@ -1,80 +1,168 @@
+// Copyright 2017 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.
+
+// Messages used for performance tests that may not reference grpc directly for
+// reasons of import cycles.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: test/codec_perf/perf.proto
 
 package codec_perf
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // Buffer is a message that contains a body of bytes that is used to exercise
 // encoding and decoding overheads.
 type Buffer struct {
-	Body                 []byte   `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Body []byte `protobuf:"bytes,1,opt,name=body,proto3" json:"body,omitempty"`
 }
 
-func (m *Buffer) Reset()         { *m = Buffer{} }
-func (m *Buffer) String() string { return proto.CompactTextString(m) }
-func (*Buffer) ProtoMessage()    {}
+func (x *Buffer) Reset() {
+	*x = Buffer{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_codec_perf_perf_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Buffer) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Buffer) ProtoMessage() {}
+
+func (x *Buffer) ProtoReflect() protoreflect.Message {
+	mi := &file_test_codec_perf_perf_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Buffer.ProtoReflect.Descriptor instead.
 func (*Buffer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_a913550de912e506, []int{0}
+	return file_test_codec_perf_perf_proto_rawDescGZIP(), []int{0}
 }
 
-func (m *Buffer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Buffer.Unmarshal(m, b)
-}
-func (m *Buffer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Buffer.Marshal(b, m, deterministic)
-}
-func (m *Buffer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Buffer.Merge(m, src)
-}
-func (m *Buffer) XXX_Size() int {
-	return xxx_messageInfo_Buffer.Size(m)
-}
-func (m *Buffer) XXX_DiscardUnknown() {
-	xxx_messageInfo_Buffer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Buffer proto.InternalMessageInfo
-
-func (m *Buffer) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *Buffer) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterType((*Buffer)(nil), "codec.perf.Buffer")
+var File_test_codec_perf_perf_proto protoreflect.FileDescriptor
+
+var file_test_codec_perf_perf_proto_rawDesc = []byte{
+	0x0a, 0x1a, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x70, 0x65, 0x72,
+	0x66, 0x2f, 0x70, 0x65, 0x72, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x63, 0x6f,
+	0x64, 0x65, 0x63, 0x2e, 0x70, 0x65, 0x72, 0x66, 0x22, 0x1c, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66,
+	0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63,
+	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x70, 0x65, 0x72, 0x66,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("test/codec_perf/perf.proto", fileDescriptor_a913550de912e506) }
+var (
+	file_test_codec_perf_perf_proto_rawDescOnce sync.Once
+	file_test_codec_perf_perf_proto_rawDescData = file_test_codec_perf_perf_proto_rawDesc
+)
 
-var fileDescriptor_a913550de912e506 = []byte{
-	// 118 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2a, 0x49, 0x2d, 0x2e,
-	0xd1, 0x4f, 0xce, 0x4f, 0x49, 0x4d, 0x8e, 0x2f, 0x48, 0x2d, 0x4a, 0xd3, 0x07, 0x11, 0x7a, 0x05,
-	0x45, 0xf9, 0x25, 0xf9, 0x42, 0x5c, 0x60, 0x61, 0x3d, 0x90, 0x88, 0x92, 0x0c, 0x17, 0x9b, 0x53,
-	0x69, 0x5a, 0x5a, 0x6a, 0x91, 0x90, 0x10, 0x17, 0x4b, 0x52, 0x7e, 0x4a, 0xa5, 0x04, 0xa3, 0x02,
-	0xa3, 0x06, 0x4f, 0x10, 0x98, 0xed, 0xa4, 0x11, 0xa5, 0x96, 0x9e, 0x9f, 0x9f, 0x9e, 0x93, 0xaa,
-	0x97, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, 0x9f, 0x5e, 0x54, 0x90, 0xac,
-	0x8f, 0x66, 0x7c, 0x12, 0x1b, 0xd8, 0x68, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xdb,
-	0x49, 0x8b, 0x78, 0x00, 0x00, 0x00,
+func file_test_codec_perf_perf_proto_rawDescGZIP() []byte {
+	file_test_codec_perf_perf_proto_rawDescOnce.Do(func() {
+		file_test_codec_perf_perf_proto_rawDescData = protoimpl.X.CompressGZIP(file_test_codec_perf_perf_proto_rawDescData)
+	})
+	return file_test_codec_perf_perf_proto_rawDescData
+}
+
+var file_test_codec_perf_perf_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_test_codec_perf_perf_proto_goTypes = []interface{}{
+	(*Buffer)(nil), // 0: codec.perf.Buffer
+}
+var file_test_codec_perf_perf_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_test_codec_perf_perf_proto_init() }
+func file_test_codec_perf_perf_proto_init() {
+	if File_test_codec_perf_perf_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_test_codec_perf_perf_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Buffer); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_test_codec_perf_perf_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   1,
+			NumExtensions: 0,
+			NumServices:   0,
+		},
+		GoTypes:           file_test_codec_perf_perf_proto_goTypes,
+		DependencyIndexes: file_test_codec_perf_perf_proto_depIdxs,
+		MessageInfos:      file_test_codec_perf_perf_proto_msgTypes,
+	}.Build()
+	File_test_codec_perf_perf_proto = out.File
+	file_test_codec_perf_perf_proto_rawDesc = nil
+	file_test_codec_perf_perf_proto_goTypes = nil
+	file_test_codec_perf_perf_proto_depIdxs = nil
 }
diff --git a/test/grpc_testing/test.pb.go b/test/grpc_testing/test.pb.go
index 70e3b89..a632338 100644
--- a/test/grpc_testing/test.pb.go
+++ b/test/grpc_testing/test.pb.go
@@ -1,24 +1,46 @@
+// Copyright 2017 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.
+
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+
 // Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.25.0
+// 	protoc        v3.3.0
 // source: test/grpc_testing/test.proto
 
 package grpc_testing
 
 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"
 )
 
-// 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
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
 
 // The type of payload that should be returned.
 type PayloadType int32
@@ -32,109 +54,149 @@
 	PayloadType_RANDOM PayloadType = 2
 )
 
-var PayloadType_name = map[int32]string{
-	0: "COMPRESSABLE",
-	1: "UNCOMPRESSABLE",
-	2: "RANDOM",
-}
+// Enum value maps for PayloadType.
+var (
+	PayloadType_name = map[int32]string{
+		0: "COMPRESSABLE",
+		1: "UNCOMPRESSABLE",
+		2: "RANDOM",
+	}
+	PayloadType_value = map[string]int32{
+		"COMPRESSABLE":   0,
+		"UNCOMPRESSABLE": 1,
+		"RANDOM":         2,
+	}
+)
 
-var PayloadType_value = map[string]int32{
-	"COMPRESSABLE":   0,
-	"UNCOMPRESSABLE": 1,
-	"RANDOM":         2,
+func (x PayloadType) Enum() *PayloadType {
+	p := new(PayloadType)
+	*p = x
+	return p
 }
 
 func (x PayloadType) String() string {
-	return proto.EnumName(PayloadType_name, int32(x))
+	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
 }
 
+func (PayloadType) Descriptor() protoreflect.EnumDescriptor {
+	return file_test_grpc_testing_test_proto_enumTypes[0].Descriptor()
+}
+
+func (PayloadType) Type() protoreflect.EnumType {
+	return &file_test_grpc_testing_test_proto_enumTypes[0]
+}
+
+func (x PayloadType) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use PayloadType.Descriptor instead.
 func (PayloadType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{0}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
 type Empty struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
 }
 
-func (m *Empty) Reset()         { *m = Empty{} }
-func (m *Empty) String() string { return proto.CompactTextString(m) }
-func (*Empty) ProtoMessage()    {}
+func (x *Empty) Reset() {
+	*x = Empty{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[0]
+		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_test_grpc_testing_test_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && 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 fileDescriptor_139516ae706ad4b7, []int{0}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{0}
 }
 
-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
-
 // A block of data, to simply increase gRPC message size.
 type Payload struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// The type of data in body.
 	Type PayloadType `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.testing.PayloadType" json:"type,omitempty"`
 	// Primary contents of payload.
-	Body                 []byte   `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
 }
 
-func (m *Payload) Reset()         { *m = Payload{} }
-func (m *Payload) String() string { return proto.CompactTextString(m) }
-func (*Payload) ProtoMessage()    {}
+func (x *Payload) Reset() {
+	*x = Payload{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *Payload) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Payload) ProtoMessage() {}
+
+func (x *Payload) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Payload.ProtoReflect.Descriptor instead.
 func (*Payload) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{1}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{1}
 }
 
-func (m *Payload) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Payload.Unmarshal(m, b)
-}
-func (m *Payload) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Payload.Marshal(b, m, deterministic)
-}
-func (m *Payload) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Payload.Merge(m, src)
-}
-func (m *Payload) XXX_Size() int {
-	return xxx_messageInfo_Payload.Size(m)
-}
-func (m *Payload) XXX_DiscardUnknown() {
-	xxx_messageInfo_Payload.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Payload proto.InternalMessageInfo
-
-func (m *Payload) GetType() PayloadType {
-	if m != nil {
-		return m.Type
+func (x *Payload) GetType() PayloadType {
+	if x != nil {
+		return x.Type
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *Payload) GetBody() []byte {
-	if m != nil {
-		return m.Body
+func (x *Payload) GetBody() []byte {
+	if x != nil {
+		return x.Body
 	}
 	return nil
 }
 
 // Unary request.
 type SimpleRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, server randomly chooses one from other formats.
 	ResponseType PayloadType `protobuf:"varint,1,opt,name=response_type,json=responseType,proto3,enum=grpc.testing.PayloadType" json:"response_type,omitempty"`
@@ -146,268 +208,308 @@
 	// Whether SimpleResponse should include username.
 	FillUsername bool `protobuf:"varint,4,opt,name=fill_username,json=fillUsername,proto3" json:"fill_username,omitempty"`
 	// Whether SimpleResponse should include OAuth scope.
-	FillOauthScope       bool     `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope,proto3" json:"fill_oauth_scope,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	FillOauthScope bool `protobuf:"varint,5,opt,name=fill_oauth_scope,json=fillOauthScope,proto3" json:"fill_oauth_scope,omitempty"`
 }
 
-func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
-func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
-func (*SimpleRequest) ProtoMessage()    {}
+func (x *SimpleRequest) Reset() {
+	*x = SimpleRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[2]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleRequest) ProtoMessage() {}
+
+func (x *SimpleRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[2]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleRequest.ProtoReflect.Descriptor instead.
 func (*SimpleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{2}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{2}
 }
 
-func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
-}
-func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
-}
-func (m *SimpleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleRequest.Merge(m, src)
-}
-func (m *SimpleRequest) XXX_Size() int {
-	return xxx_messageInfo_SimpleRequest.Size(m)
-}
-func (m *SimpleRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
-
-func (m *SimpleRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *SimpleRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *SimpleRequest) GetResponseSize() int32 {
-	if m != nil {
-		return m.ResponseSize
+func (x *SimpleRequest) GetResponseSize() int32 {
+	if x != nil {
+		return x.ResponseSize
 	}
 	return 0
 }
 
-func (m *SimpleRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleRequest) GetFillUsername() bool {
-	if m != nil {
-		return m.FillUsername
+func (x *SimpleRequest) GetFillUsername() bool {
+	if x != nil {
+		return x.FillUsername
 	}
 	return false
 }
 
-func (m *SimpleRequest) GetFillOauthScope() bool {
-	if m != nil {
-		return m.FillOauthScope
+func (x *SimpleRequest) GetFillOauthScope() bool {
+	if x != nil {
+		return x.FillOauthScope
 	}
 	return false
 }
 
 // Unary response, as configured by the request.
 type SimpleResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase message size.
 	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 	// The user the request came from, for verifying authentication was
 	// successful when the client expected it.
 	Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
 	// OAuth scope.
-	OauthScope           string   `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	OauthScope string `protobuf:"bytes,3,opt,name=oauth_scope,json=oauthScope,proto3" json:"oauth_scope,omitempty"`
 }
 
-func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
-func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
-func (*SimpleResponse) ProtoMessage()    {}
+func (x *SimpleResponse) Reset() {
+	*x = SimpleResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *SimpleResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SimpleResponse) ProtoMessage() {}
+
+func (x *SimpleResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use SimpleResponse.ProtoReflect.Descriptor instead.
 func (*SimpleResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{3}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{3}
 }
 
-func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
-}
-func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
-}
-func (m *SimpleResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SimpleResponse.Merge(m, src)
-}
-func (m *SimpleResponse) XXX_Size() int {
-	return xxx_messageInfo_SimpleResponse.Size(m)
-}
-func (m *SimpleResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
-
-func (m *SimpleResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *SimpleResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func (m *SimpleResponse) GetUsername() string {
-	if m != nil {
-		return m.Username
+func (x *SimpleResponse) GetUsername() string {
+	if x != nil {
+		return x.Username
 	}
 	return ""
 }
 
-func (m *SimpleResponse) GetOauthScope() string {
-	if m != nil {
-		return m.OauthScope
+func (x *SimpleResponse) GetOauthScope() string {
+	if x != nil {
+		return x.OauthScope
 	}
 	return ""
 }
 
 // Client-streaming request.
 type StreamingInputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Optional input payload sent along with the request.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingInputCallRequest) Reset()         { *m = StreamingInputCallRequest{} }
-func (m *StreamingInputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallRequest) ProtoMessage()    {}
+func (x *StreamingInputCallRequest) Reset() {
+	*x = StreamingInputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallRequest) ProtoMessage() {}
+
+func (x *StreamingInputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{4}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{4}
 }
 
-func (m *StreamingInputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingInputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallRequest.Merge(m, src)
-}
-func (m *StreamingInputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallRequest.Size(m)
-}
-func (m *StreamingInputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingInputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingInputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 // Client-streaming response.
 type StreamingInputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Aggregated size of payloads received from the client.
-	AggregatedPayloadSize int32    `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
-	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
-	XXX_unrecognized      []byte   `json:"-"`
-	XXX_sizecache         int32    `json:"-"`
+	AggregatedPayloadSize int32 `protobuf:"varint,1,opt,name=aggregated_payload_size,json=aggregatedPayloadSize,proto3" json:"aggregated_payload_size,omitempty"`
 }
 
-func (m *StreamingInputCallResponse) Reset()         { *m = StreamingInputCallResponse{} }
-func (m *StreamingInputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingInputCallResponse) ProtoMessage()    {}
+func (x *StreamingInputCallResponse) Reset() {
+	*x = StreamingInputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[5]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingInputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingInputCallResponse) ProtoMessage() {}
+
+func (x *StreamingInputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[5]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingInputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingInputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{5}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{5}
 }
 
-func (m *StreamingInputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingInputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingInputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingInputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingInputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingInputCallResponse.Merge(m, src)
-}
-func (m *StreamingInputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingInputCallResponse.Size(m)
-}
-func (m *StreamingInputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingInputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingInputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
-	if m != nil {
-		return m.AggregatedPayloadSize
+func (x *StreamingInputCallResponse) GetAggregatedPayloadSize() int32 {
+	if x != nil {
+		return x.AggregatedPayloadSize
 	}
 	return 0
 }
 
 // Configuration for a particular response.
 type ResponseParameters struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload sizes in responses from the server.
 	// If response_type is COMPRESSABLE, this denotes the size before compression.
 	Size int32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"`
 	// Desired interval between consecutive responses in the response stream in
 	// microseconds.
-	IntervalUs           int32    `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	IntervalUs int32 `protobuf:"varint,2,opt,name=interval_us,json=intervalUs,proto3" json:"interval_us,omitempty"`
 }
 
-func (m *ResponseParameters) Reset()         { *m = ResponseParameters{} }
-func (m *ResponseParameters) String() string { return proto.CompactTextString(m) }
-func (*ResponseParameters) ProtoMessage()    {}
+func (x *ResponseParameters) Reset() {
+	*x = ResponseParameters{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[6]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ResponseParameters) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ResponseParameters) ProtoMessage() {}
+
+func (x *ResponseParameters) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[6]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ResponseParameters.ProtoReflect.Descriptor instead.
 func (*ResponseParameters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{6}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{6}
 }
 
-func (m *ResponseParameters) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ResponseParameters.Unmarshal(m, b)
-}
-func (m *ResponseParameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ResponseParameters.Marshal(b, m, deterministic)
-}
-func (m *ResponseParameters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResponseParameters.Merge(m, src)
-}
-func (m *ResponseParameters) XXX_Size() int {
-	return xxx_messageInfo_ResponseParameters.Size(m)
-}
-func (m *ResponseParameters) XXX_DiscardUnknown() {
-	xxx_messageInfo_ResponseParameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ResponseParameters proto.InternalMessageInfo
-
-func (m *ResponseParameters) GetSize() int32 {
-	if m != nil {
-		return m.Size
+func (x *ResponseParameters) GetSize() int32 {
+	if x != nil {
+		return x.Size
 	}
 	return 0
 }
 
-func (m *ResponseParameters) GetIntervalUs() int32 {
-	if m != nil {
-		return m.IntervalUs
+func (x *ResponseParameters) GetIntervalUs() int32 {
+	if x != nil {
+		return x.IntervalUs
 	}
 	return 0
 }
 
 // Server-streaming request.
 type StreamingOutputCallRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Desired payload type in the response from the server.
 	// If response_type is RANDOM, the payload from each response in the stream
 	// might be of different types. This is to simulate a mixed type of payload
@@ -416,153 +518,412 @@
 	// Configuration for each expected response message.
 	ResponseParameters []*ResponseParameters `protobuf:"bytes,2,rep,name=response_parameters,json=responseParameters,proto3" json:"response_parameters,omitempty"`
 	// Optional input payload sent along with the request.
-	Payload              *Payload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingOutputCallRequest) Reset()         { *m = StreamingOutputCallRequest{} }
-func (m *StreamingOutputCallRequest) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallRequest) ProtoMessage()    {}
+func (x *StreamingOutputCallRequest) Reset() {
+	*x = StreamingOutputCallRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[7]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallRequest) ProtoMessage() {}
+
+func (x *StreamingOutputCallRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[7]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallRequest.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{7}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{7}
 }
 
-func (m *StreamingOutputCallRequest) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallRequest.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallRequest.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallRequest.Merge(m, src)
-}
-func (m *StreamingOutputCallRequest) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallRequest.Size(m)
-}
-func (m *StreamingOutputCallRequest) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallRequest.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallRequest proto.InternalMessageInfo
-
-func (m *StreamingOutputCallRequest) GetResponseType() PayloadType {
-	if m != nil {
-		return m.ResponseType
+func (x *StreamingOutputCallRequest) GetResponseType() PayloadType {
+	if x != nil {
+		return x.ResponseType
 	}
 	return PayloadType_COMPRESSABLE
 }
 
-func (m *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
-	if m != nil {
-		return m.ResponseParameters
+func (x *StreamingOutputCallRequest) GetResponseParameters() []*ResponseParameters {
+	if x != nil {
+		return x.ResponseParameters
 	}
 	return nil
 }
 
-func (m *StreamingOutputCallRequest) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallRequest) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
 // Server-streaming response, as configured by the request and parameters.
 type StreamingOutputCallResponse struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
 	// Payload to increase response size.
-	Payload              *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	Payload *Payload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
 }
 
-func (m *StreamingOutputCallResponse) Reset()         { *m = StreamingOutputCallResponse{} }
-func (m *StreamingOutputCallResponse) String() string { return proto.CompactTextString(m) }
-func (*StreamingOutputCallResponse) ProtoMessage()    {}
+func (x *StreamingOutputCallResponse) Reset() {
+	*x = StreamingOutputCallResponse{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_test_grpc_testing_test_proto_msgTypes[8]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *StreamingOutputCallResponse) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamingOutputCallResponse) ProtoMessage() {}
+
+func (x *StreamingOutputCallResponse) ProtoReflect() protoreflect.Message {
+	mi := &file_test_grpc_testing_test_proto_msgTypes[8]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamingOutputCallResponse.ProtoReflect.Descriptor instead.
 func (*StreamingOutputCallResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_139516ae706ad4b7, []int{8}
+	return file_test_grpc_testing_test_proto_rawDescGZIP(), []int{8}
 }
 
-func (m *StreamingOutputCallResponse) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_StreamingOutputCallResponse.Unmarshal(m, b)
-}
-func (m *StreamingOutputCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_StreamingOutputCallResponse.Marshal(b, m, deterministic)
-}
-func (m *StreamingOutputCallResponse) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StreamingOutputCallResponse.Merge(m, src)
-}
-func (m *StreamingOutputCallResponse) XXX_Size() int {
-	return xxx_messageInfo_StreamingOutputCallResponse.Size(m)
-}
-func (m *StreamingOutputCallResponse) XXX_DiscardUnknown() {
-	xxx_messageInfo_StreamingOutputCallResponse.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StreamingOutputCallResponse proto.InternalMessageInfo
-
-func (m *StreamingOutputCallResponse) GetPayload() *Payload {
-	if m != nil {
-		return m.Payload
+func (x *StreamingOutputCallResponse) GetPayload() *Payload {
+	if x != nil {
+		return x.Payload
 	}
 	return nil
 }
 
-func init() {
-	proto.RegisterEnum("grpc.testing.PayloadType", PayloadType_name, PayloadType_value)
-	proto.RegisterType((*Empty)(nil), "grpc.testing.Empty")
-	proto.RegisterType((*Payload)(nil), "grpc.testing.Payload")
-	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
-	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
-	proto.RegisterType((*StreamingInputCallRequest)(nil), "grpc.testing.StreamingInputCallRequest")
-	proto.RegisterType((*StreamingInputCallResponse)(nil), "grpc.testing.StreamingInputCallResponse")
-	proto.RegisterType((*ResponseParameters)(nil), "grpc.testing.ResponseParameters")
-	proto.RegisterType((*StreamingOutputCallRequest)(nil), "grpc.testing.StreamingOutputCallRequest")
-	proto.RegisterType((*StreamingOutputCallResponse)(nil), "grpc.testing.StreamingOutputCallResponse")
+var File_test_grpc_testing_test_proto protoreflect.FileDescriptor
+
+var file_test_grpc_testing_test_proto_rawDesc = []byte{
+	0x0a, 0x1c, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x65, 0x73, 0x74,
+	0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x07, 0x0a, 0x05,
+	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4c, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
+	0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
+	0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62,
+	0x6f, 0x64, 0x79, 0x22, 0xf4, 0x01, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x72, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61,
+	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72,
+	0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x66,
+	0x69, 0x6c, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x08, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65,
+	0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x73,
+	0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x6c,
+	0x4f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x7e, 0x0a, 0x0e, 0x53, 0x69,
+	0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07,
+	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79,
+	0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a,
+	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x61, 0x75,
+	0x74, 0x68, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+	0x6f, 0x61, 0x75, 0x74, 0x68, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x4c, 0x0a, 0x19, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f,
+	0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52,
+	0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67,
+	0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, 0x7a,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
+	0x74, 0x65, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x49,
+	0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65,
+	0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65,
+	0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x1a, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c,
+	0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x19, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50,
+	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70,
+	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73,
+	0x74, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x72,
+	0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x70,
+	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4e, 0x0a, 0x1b,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43,
+	0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x70,
+	0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x6c,
+	0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2a, 0x3f, 0x0a, 0x0b,
+	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43,
+	0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a,
+	0x0e, 0x55, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10,
+	0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x02, 0x32, 0xbb, 0x04,
+	0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a,
+	0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x70,
+	0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
+	0x13, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x45,
+	0x6d, 0x70, 0x74, 0x79, 0x12, 0x46, 0x0a, 0x09, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x61, 0x6c,
+	0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
+	0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x69,
+	0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x13,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43,
+	0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69,
+	0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70,
+	0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
+	0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72,
+	0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c,
+	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x12, 0x53, 0x74,
+	0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c,
+	0x12, 0x27, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e,
+	0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61,
+	0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63,
+	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69,
+	0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x69, 0x0a, 0x0e, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70,
+	0x6c, 0x65, 0x78, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74,
+	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
+	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x29, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
+	0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
+	0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01,
+	0x12, 0x69, 0x0a, 0x0e, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x43, 0x61,
+	0x6c, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
+	0x67, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75,
+	0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67,
+	0x72, 0x70, 0x63, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x72, 0x65,
+	0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x2a, 0x5a, 0x28, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
+	0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f,
+	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
-func init() { proto.RegisterFile("test/grpc_testing/test.proto", fileDescriptor_139516ae706ad4b7) }
+var (
+	file_test_grpc_testing_test_proto_rawDescOnce sync.Once
+	file_test_grpc_testing_test_proto_rawDescData = file_test_grpc_testing_test_proto_rawDesc
+)
 
-var fileDescriptor_139516ae706ad4b7 = []byte{
-	// 615 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x6e, 0xd3, 0x4c,
-	0x10, 0xfd, 0xb6, 0x4d, 0xff, 0x26, 0x69, 0x14, 0x6d, 0x55, 0x7d, 0x69, 0x5a, 0x89, 0xc8, 0x5c,
-	0x60, 0x2a, 0x91, 0xa0, 0x20, 0xb8, 0x04, 0xf5, 0x57, 0x54, 0x6a, 0x9b, 0x62, 0x37, 0x37, 0xdc,
-	0x44, 0xdb, 0x76, 0x6a, 0x2c, 0x6d, 0xbc, 0xcb, 0x7a, 0x5d, 0x91, 0x5e, 0xf0, 0x62, 0xbc, 0x0c,
-	0x0f, 0xc1, 0x03, 0xa0, 0xdd, 0xd8, 0xa9, 0xd3, 0xb8, 0x22, 0x05, 0xc1, 0x55, 0x36, 0x33, 0x67,
-	0xce, 0x9c, 0xe3, 0x19, 0x7b, 0x61, 0x4b, 0x63, 0xac, 0xdb, 0x81, 0x92, 0x97, 0x7d, 0x73, 0x0a,
-	0xa3, 0xa0, 0x6d, 0x7e, 0x5b, 0x52, 0x09, 0x2d, 0x68, 0xc5, 0x24, 0x5a, 0x69, 0xc2, 0x59, 0x82,
-	0x85, 0x83, 0x81, 0xd4, 0x43, 0xe7, 0x18, 0x96, 0xce, 0xd8, 0x90, 0x0b, 0x76, 0x45, 0x5f, 0x40,
-	0x49, 0x0f, 0x25, 0xd6, 0x49, 0x93, 0xb8, 0xd5, 0xce, 0x46, 0x2b, 0x5f, 0xd0, 0x4a, 0x41, 0xe7,
-	0x43, 0x89, 0x9e, 0x85, 0x51, 0x0a, 0xa5, 0x0b, 0x71, 0x35, 0xac, 0xcf, 0x35, 0x89, 0x5b, 0xf1,
-	0xec, 0xd9, 0xf9, 0x41, 0x60, 0xd5, 0x0f, 0x07, 0x92, 0xa3, 0x87, 0x9f, 0x13, 0x8c, 0x35, 0x7d,
-	0x0b, 0xab, 0x0a, 0x63, 0x29, 0xa2, 0x18, 0xfb, 0xb3, 0xb1, 0x57, 0x32, 0xbc, 0xf9, 0x47, 0x9f,
-	0xe6, 0xea, 0xe3, 0xf0, 0x16, 0x6d, 0xbb, 0x85, 0x3b, 0x90, 0x1f, 0xde, 0x22, 0x6d, 0xc3, 0x92,
-	0x1c, 0x31, 0xd4, 0xe7, 0x9b, 0xc4, 0x2d, 0x77, 0xd6, 0x0b, 0xe9, 0xbd, 0x0c, 0x65, 0x58, 0xaf,
-	0x43, 0xce, 0xfb, 0x49, 0x8c, 0x2a, 0x62, 0x03, 0xac, 0x97, 0x9a, 0xc4, 0x5d, 0xf6, 0x2a, 0x26,
-	0xd8, 0x4b, 0x63, 0xd4, 0x85, 0x9a, 0x05, 0x09, 0x96, 0xe8, 0x4f, 0xfd, 0xf8, 0x52, 0x48, 0xac,
-	0x2f, 0x58, 0x5c, 0xd5, 0xc4, 0xbb, 0x26, 0xec, 0x9b, 0xa8, 0xf3, 0x15, 0xaa, 0x99, 0xeb, 0x91,
-	0xaa, 0xbc, 0x22, 0x32, 0x93, 0xa2, 0x06, 0x2c, 0x8f, 0xc5, 0x18, 0x8b, 0x2b, 0xde, 0xf8, 0x3f,
-	0x7d, 0x02, 0xe5, 0xbc, 0x86, 0x79, 0x9b, 0x06, 0x71, 0xd7, 0xff, 0x18, 0x36, 0x7c, 0xad, 0x90,
-	0x0d, 0xc2, 0x28, 0x38, 0x8a, 0x64, 0xa2, 0xf7, 0x18, 0xe7, 0xd9, 0x04, 0x1e, 0x2b, 0xc5, 0x39,
-	0x87, 0x46, 0x11, 0x5b, 0xea, 0xec, 0x0d, 0xfc, 0xcf, 0x82, 0x40, 0x61, 0xc0, 0x34, 0x5e, 0xf5,
-	0xd3, 0x9a, 0xd1, 0x68, 0x88, 0x1d, 0xcd, 0xfa, 0x5d, 0x3a, 0xa5, 0x36, 0x33, 0x72, 0x8e, 0x80,
-	0x66, 0x1c, 0x67, 0x4c, 0xb1, 0x01, 0x6a, 0x54, 0xb1, 0x59, 0xa2, 0x5c, 0xa9, 0x3d, 0x1b, 0xbb,
-	0x61, 0xa4, 0x51, 0xdd, 0x30, 0x33, 0xa0, 0x74, 0xe0, 0x90, 0x85, 0x7a, 0xb1, 0xf3, 0x9d, 0xe4,
-	0x14, 0x76, 0x13, 0x7d, 0xcf, 0xf0, 0x9f, 0xae, 0xdc, 0x07, 0x58, 0x1b, 0xd7, 0xcb, 0xb1, 0xd4,
-	0xfa, 0x5c, 0x73, 0xde, 0x2d, 0x77, 0x9a, 0x93, 0x2c, 0xd3, 0x96, 0x3c, 0xaa, 0xa6, 0x6d, 0x3e,
-	0x76, 0x41, 0x9d, 0x53, 0xd8, 0x2c, 0x74, 0xf8, 0x9b, 0xeb, 0xb5, 0xfd, 0x0e, 0xca, 0x39, 0xc3,
-	0xb4, 0x06, 0x95, 0xbd, 0xee, 0xc9, 0x99, 0x77, 0xe0, 0xfb, 0x3b, 0xbb, 0xc7, 0x07, 0xb5, 0xff,
-	0x28, 0x85, 0x6a, 0xef, 0x74, 0x22, 0x46, 0x28, 0xc0, 0xa2, 0xb7, 0x73, 0xba, 0xdf, 0x3d, 0xa9,
-	0xcd, 0x75, 0xbe, 0x95, 0xa0, 0x7c, 0x8e, 0xb1, 0xf6, 0x51, 0xdd, 0x84, 0x97, 0x48, 0x5f, 0xc3,
-	0x8a, 0xfd, 0x80, 0x18, 0x59, 0x74, 0x6d, 0xb2, 0xbb, 0x4d, 0x34, 0x8a, 0x82, 0xf4, 0x10, 0x56,
-	0x7a, 0x11, 0x53, 0xa3, 0xb2, 0xcd, 0x49, 0xc4, 0xc4, 0x87, 0xa3, 0xb1, 0x55, 0x9c, 0x4c, 0x1f,
-	0x00, 0x87, 0xb5, 0x82, 0xe7, 0x43, 0xdd, 0x7b, 0x45, 0x0f, 0x2e, 0x49, 0xe3, 0xf9, 0x0c, 0xc8,
-	0x51, 0xaf, 0x97, 0x84, 0x86, 0x40, 0xa7, 0xdf, 0x08, 0xfa, 0xec, 0x01, 0x8a, 0xfb, 0x6f, 0x60,
-	0xc3, 0xfd, 0x35, 0x70, 0xd4, 0xca, 0x35, 0xad, 0xaa, 0x87, 0x09, 0xe7, 0xfb, 0x89, 0xe4, 0xf8,
-	0xe5, 0xaf, 0x79, 0x72, 0x89, 0x75, 0x55, 0x7d, 0xcf, 0xf8, 0xf5, 0x3f, 0x68, 0xb5, 0xbb, 0xfd,
-	0xd1, 0x0d, 0x84, 0x08, 0x38, 0xb6, 0x02, 0xc1, 0x59, 0x14, 0xb4, 0x84, 0x0a, 0xec, 0x4d, 0xd5,
-	0x9e, 0xba, 0xb3, 0x2e, 0x16, 0xed, 0x7d, 0xf5, 0xea, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e,
-	0x50, 0x51, 0x5b, 0xcf, 0x06, 0x00, 0x00,
+func file_test_grpc_testing_test_proto_rawDescGZIP() []byte {
+	file_test_grpc_testing_test_proto_rawDescOnce.Do(func() {
+		file_test_grpc_testing_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_test_grpc_testing_test_proto_rawDescData)
+	})
+	return file_test_grpc_testing_test_proto_rawDescData
+}
+
+var file_test_grpc_testing_test_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_test_grpc_testing_test_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
+var file_test_grpc_testing_test_proto_goTypes = []interface{}{
+	(PayloadType)(0),                    // 0: grpc.testing.PayloadType
+	(*Empty)(nil),                       // 1: grpc.testing.Empty
+	(*Payload)(nil),                     // 2: grpc.testing.Payload
+	(*SimpleRequest)(nil),               // 3: grpc.testing.SimpleRequest
+	(*SimpleResponse)(nil),              // 4: grpc.testing.SimpleResponse
+	(*StreamingInputCallRequest)(nil),   // 5: grpc.testing.StreamingInputCallRequest
+	(*StreamingInputCallResponse)(nil),  // 6: grpc.testing.StreamingInputCallResponse
+	(*ResponseParameters)(nil),          // 7: grpc.testing.ResponseParameters
+	(*StreamingOutputCallRequest)(nil),  // 8: grpc.testing.StreamingOutputCallRequest
+	(*StreamingOutputCallResponse)(nil), // 9: grpc.testing.StreamingOutputCallResponse
+}
+var file_test_grpc_testing_test_proto_depIdxs = []int32{
+	0,  // 0: grpc.testing.Payload.type:type_name -> grpc.testing.PayloadType
+	0,  // 1: grpc.testing.SimpleRequest.response_type:type_name -> grpc.testing.PayloadType
+	2,  // 2: grpc.testing.SimpleRequest.payload:type_name -> grpc.testing.Payload
+	2,  // 3: grpc.testing.SimpleResponse.payload:type_name -> grpc.testing.Payload
+	2,  // 4: grpc.testing.StreamingInputCallRequest.payload:type_name -> grpc.testing.Payload
+	0,  // 5: grpc.testing.StreamingOutputCallRequest.response_type:type_name -> grpc.testing.PayloadType
+	7,  // 6: grpc.testing.StreamingOutputCallRequest.response_parameters:type_name -> grpc.testing.ResponseParameters
+	2,  // 7: grpc.testing.StreamingOutputCallRequest.payload:type_name -> grpc.testing.Payload
+	2,  // 8: grpc.testing.StreamingOutputCallResponse.payload:type_name -> grpc.testing.Payload
+	1,  // 9: grpc.testing.TestService.EmptyCall:input_type -> grpc.testing.Empty
+	3,  // 10: grpc.testing.TestService.UnaryCall:input_type -> grpc.testing.SimpleRequest
+	8,  // 11: grpc.testing.TestService.StreamingOutputCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	5,  // 12: grpc.testing.TestService.StreamingInputCall:input_type -> grpc.testing.StreamingInputCallRequest
+	8,  // 13: grpc.testing.TestService.FullDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	8,  // 14: grpc.testing.TestService.HalfDuplexCall:input_type -> grpc.testing.StreamingOutputCallRequest
+	1,  // 15: grpc.testing.TestService.EmptyCall:output_type -> grpc.testing.Empty
+	4,  // 16: grpc.testing.TestService.UnaryCall:output_type -> grpc.testing.SimpleResponse
+	9,  // 17: grpc.testing.TestService.StreamingOutputCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	6,  // 18: grpc.testing.TestService.StreamingInputCall:output_type -> grpc.testing.StreamingInputCallResponse
+	9,  // 19: grpc.testing.TestService.FullDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	9,  // 20: grpc.testing.TestService.HalfDuplexCall:output_type -> grpc.testing.StreamingOutputCallResponse
+	15, // [15:21] is the sub-list for method output_type
+	9,  // [9:15] 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 init() { file_test_grpc_testing_test_proto_init() }
+func file_test_grpc_testing_test_proto_init() {
+	if File_test_grpc_testing_test_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_test_grpc_testing_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Empty); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*Payload); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*SimpleResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingInputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ResponseParameters); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_test_grpc_testing_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*StreamingOutputCallResponse); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_test_grpc_testing_test_proto_rawDesc,
+			NumEnums:      1,
+			NumMessages:   9,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_test_grpc_testing_test_proto_goTypes,
+		DependencyIndexes: file_test_grpc_testing_test_proto_depIdxs,
+		EnumInfos:         file_test_grpc_testing_test_proto_enumTypes,
+		MessageInfos:      file_test_grpc_testing_test_proto_msgTypes,
+	}.Build()
+	File_test_grpc_testing_test_proto = out.File
+	file_test_grpc_testing_test_proto_rawDesc = nil
+	file_test_grpc_testing_test_proto_goTypes = nil
+	file_test_grpc_testing_test_proto_depIdxs = nil
 }
diff --git a/test/tools/go.mod b/test/tools/go.mod
index e683f01..874268d 100644
--- a/test/tools/go.mod
+++ b/test/tools/go.mod
@@ -3,10 +3,10 @@
 go 1.11
 
 require (
-	github.com/BurntSushi/toml v0.3.1 // indirect
 	github.com/client9/misspell v0.3.4
-	github.com/golang/protobuf v1.3.3
+	github.com/golang/protobuf v1.4.1
 	golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3
 	golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135
+	google.golang.org/protobuf v1.25.0 // indirect
 	honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc
 )
diff --git a/test/tools/go.sum b/test/tools/go.sum
index 8dd58fb..09acda1 100644
--- a/test/tools/go.sum
+++ b/test/tools/go.sum
@@ -1,18 +1,71 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
-github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+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 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+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.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+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-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+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/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/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-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A=
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+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.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=