// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.5
// 	protoc        (unknown)
// source: backend.proto

package pluginv2

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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)
)

// Specify the response bytes format
type DataFrameFormat int32

const (
	// Full arrow schema+data
	DataFrameFormat_ARROW DataFrameFormat = 0
	// JSON Encoded schema+data
	DataFrameFormat_JSON DataFrameFormat = 1
)

// Enum value maps for DataFrameFormat.
var (
	DataFrameFormat_name = map[int32]string{
		0: "ARROW",
		1: "JSON",
	}
	DataFrameFormat_value = map[string]int32{
		"ARROW": 0,
		"JSON":  1,
	}
)

func (x DataFrameFormat) Enum() *DataFrameFormat {
	p := new(DataFrameFormat)
	*p = x
	return p
}

func (x DataFrameFormat) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DataFrameFormat) Descriptor() protoreflect.EnumDescriptor {
	return file_backend_proto_enumTypes[0].Descriptor()
}

func (DataFrameFormat) Type() protoreflect.EnumType {
	return &file_backend_proto_enumTypes[0]
}

func (x DataFrameFormat) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DataFrameFormat.Descriptor instead.
func (DataFrameFormat) EnumDescriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{0}
}

type CheckHealthResponse_HealthStatus int32

const (
	CheckHealthResponse_UNKNOWN CheckHealthResponse_HealthStatus = 0
	CheckHealthResponse_OK      CheckHealthResponse_HealthStatus = 1
	CheckHealthResponse_ERROR   CheckHealthResponse_HealthStatus = 2
)

// Enum value maps for CheckHealthResponse_HealthStatus.
var (
	CheckHealthResponse_HealthStatus_name = map[int32]string{
		0: "UNKNOWN",
		1: "OK",
		2: "ERROR",
	}
	CheckHealthResponse_HealthStatus_value = map[string]int32{
		"UNKNOWN": 0,
		"OK":      1,
		"ERROR":   2,
	}
)

func (x CheckHealthResponse_HealthStatus) Enum() *CheckHealthResponse_HealthStatus {
	p := new(CheckHealthResponse_HealthStatus)
	*p = x
	return p
}

func (x CheckHealthResponse_HealthStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CheckHealthResponse_HealthStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_backend_proto_enumTypes[1].Descriptor()
}

func (CheckHealthResponse_HealthStatus) Type() protoreflect.EnumType {
	return &file_backend_proto_enumTypes[1]
}

func (x CheckHealthResponse_HealthStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CheckHealthResponse_HealthStatus.Descriptor instead.
func (CheckHealthResponse_HealthStatus) EnumDescriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{17, 0}
}

type SubscribeStreamResponse_Status int32

const (
	SubscribeStreamResponse_OK                SubscribeStreamResponse_Status = 0
	SubscribeStreamResponse_NOT_FOUND         SubscribeStreamResponse_Status = 1
	SubscribeStreamResponse_PERMISSION_DENIED SubscribeStreamResponse_Status = 2
)

// Enum value maps for SubscribeStreamResponse_Status.
var (
	SubscribeStreamResponse_Status_name = map[int32]string{
		0: "OK",
		1: "NOT_FOUND",
		2: "PERMISSION_DENIED",
	}
	SubscribeStreamResponse_Status_value = map[string]int32{
		"OK":                0,
		"NOT_FOUND":         1,
		"PERMISSION_DENIED": 2,
	}
)

func (x SubscribeStreamResponse_Status) Enum() *SubscribeStreamResponse_Status {
	p := new(SubscribeStreamResponse_Status)
	*p = x
	return p
}

func (x SubscribeStreamResponse_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SubscribeStreamResponse_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_backend_proto_enumTypes[2].Descriptor()
}

func (SubscribeStreamResponse_Status) Type() protoreflect.EnumType {
	return &file_backend_proto_enumTypes[2]
}

func (x SubscribeStreamResponse_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SubscribeStreamResponse_Status.Descriptor instead.
func (SubscribeStreamResponse_Status) EnumDescriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{19, 0}
}

type PublishStreamResponse_Status int32

const (
	PublishStreamResponse_OK                PublishStreamResponse_Status = 0
	PublishStreamResponse_NOT_FOUND         PublishStreamResponse_Status = 1
	PublishStreamResponse_PERMISSION_DENIED PublishStreamResponse_Status = 2
)

// Enum value maps for PublishStreamResponse_Status.
var (
	PublishStreamResponse_Status_name = map[int32]string{
		0: "OK",
		1: "NOT_FOUND",
		2: "PERMISSION_DENIED",
	}
	PublishStreamResponse_Status_value = map[string]int32{
		"OK":                0,
		"NOT_FOUND":         1,
		"PERMISSION_DENIED": 2,
	}
)

func (x PublishStreamResponse_Status) Enum() *PublishStreamResponse_Status {
	p := new(PublishStreamResponse_Status)
	*p = x
	return p
}

func (x PublishStreamResponse_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PublishStreamResponse_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_backend_proto_enumTypes[3].Descriptor()
}

func (PublishStreamResponse_Status) Type() protoreflect.EnumType {
	return &file_backend_proto_enumTypes[3]
}

func (x PublishStreamResponse_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PublishStreamResponse_Status.Descriptor instead.
func (PublishStreamResponse_Status) EnumDescriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{21, 0}
}

// Operation is the type of resource operation being checked for admission control
// https://github.com/kubernetes/kubernetes/blob/v1.30.0/pkg/apis/admission/types.go#L158
type AdmissionRequest_Operation int32

const (
	AdmissionRequest_CREATE AdmissionRequest_Operation = 0
	AdmissionRequest_UPDATE AdmissionRequest_Operation = 1
	AdmissionRequest_DELETE AdmissionRequest_Operation = 2
)

// Enum value maps for AdmissionRequest_Operation.
var (
	AdmissionRequest_Operation_name = map[int32]string{
		0: "CREATE",
		1: "UPDATE",
		2: "DELETE",
	}
	AdmissionRequest_Operation_value = map[string]int32{
		"CREATE": 0,
		"UPDATE": 1,
		"DELETE": 2,
	}
)

func (x AdmissionRequest_Operation) Enum() *AdmissionRequest_Operation {
	p := new(AdmissionRequest_Operation)
	*p = x
	return p
}

func (x AdmissionRequest_Operation) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (AdmissionRequest_Operation) Descriptor() protoreflect.EnumDescriptor {
	return file_backend_proto_enumTypes[4].Descriptor()
}

func (AdmissionRequest_Operation) Type() protoreflect.EnumType {
	return &file_backend_proto_enumTypes[4]
}

func (x AdmissionRequest_Operation) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use AdmissionRequest_Operation.Descriptor instead.
func (AdmissionRequest_Operation) EnumDescriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{25, 0}
}

type AppInstanceSettings struct {
	state                   protoimpl.MessageState `protogen:"open.v1"`
	JsonData                []byte                 `protobuf:"bytes,3,opt,name=jsonData,proto3" json:"jsonData,omitempty"`
	DecryptedSecureJsonData map[string]string      `protobuf:"bytes,4,rep,name=decryptedSecureJsonData,proto3" json:"decryptedSecureJsonData,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	LastUpdatedMS           int64                  `protobuf:"varint,5,opt,name=lastUpdatedMS,proto3" json:"lastUpdatedMS,omitempty"`
	// The API version when the settings were saved
	// NOTE: this may be an older version than the current apiVersion
	ApiVersion    string `protobuf:"bytes,6,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AppInstanceSettings) Reset() {
	*x = AppInstanceSettings{}
	mi := &file_backend_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AppInstanceSettings) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppInstanceSettings) ProtoMessage() {}

func (x *AppInstanceSettings) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppInstanceSettings.ProtoReflect.Descriptor instead.
func (*AppInstanceSettings) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{0}
}

func (x *AppInstanceSettings) GetJsonData() []byte {
	if x != nil {
		return x.JsonData
	}
	return nil
}

func (x *AppInstanceSettings) GetDecryptedSecureJsonData() map[string]string {
	if x != nil {
		return x.DecryptedSecureJsonData
	}
	return nil
}

func (x *AppInstanceSettings) GetLastUpdatedMS() int64 {
	if x != nil {
		return x.LastUpdatedMS
	}
	return 0
}

func (x *AppInstanceSettings) GetApiVersion() string {
	if x != nil {
		return x.ApiVersion
	}
	return ""
}

type DataSourceInstanceSettings struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Deprecated: Internal ID, do not use this for anythign important
	Id                      int64             `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name                    string            `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Url                     string            `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
	User                    string            `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
	Database                string            `protobuf:"bytes,5,opt,name=database,proto3" json:"database,omitempty"`
	BasicAuthEnabled        bool              `protobuf:"varint,6,opt,name=basicAuthEnabled,proto3" json:"basicAuthEnabled,omitempty"`
	BasicAuthUser           string            `protobuf:"bytes,7,opt,name=basicAuthUser,proto3" json:"basicAuthUser,omitempty"`
	JsonData                []byte            `protobuf:"bytes,8,opt,name=jsonData,proto3" json:"jsonData,omitempty"`
	DecryptedSecureJsonData map[string]string `protobuf:"bytes,9,rep,name=decryptedSecureJsonData,proto3" json:"decryptedSecureJsonData,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// timestamp when the settings where last changed
	LastUpdatedMS int64 `protobuf:"varint,10,opt,name=lastUpdatedMS,proto3" json:"lastUpdatedMS,omitempty"`
	// Datasoruce unique ID (within an org/stack namespace)
	Uid string `protobuf:"bytes,11,opt,name=uid,proto3" json:"uid,omitempty"`
	// The API version when the settings were saved.
	// NOTE: this may be an older version than the current apiVersion
	ApiVersion    string `protobuf:"bytes,12,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataSourceInstanceSettings) Reset() {
	*x = DataSourceInstanceSettings{}
	mi := &file_backend_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataSourceInstanceSettings) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataSourceInstanceSettings) ProtoMessage() {}

func (x *DataSourceInstanceSettings) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataSourceInstanceSettings.ProtoReflect.Descriptor instead.
func (*DataSourceInstanceSettings) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{1}
}

func (x *DataSourceInstanceSettings) GetId() int64 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *DataSourceInstanceSettings) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetDatabase() string {
	if x != nil {
		return x.Database
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetBasicAuthEnabled() bool {
	if x != nil {
		return x.BasicAuthEnabled
	}
	return false
}

func (x *DataSourceInstanceSettings) GetBasicAuthUser() string {
	if x != nil {
		return x.BasicAuthUser
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetJsonData() []byte {
	if x != nil {
		return x.JsonData
	}
	return nil
}

func (x *DataSourceInstanceSettings) GetDecryptedSecureJsonData() map[string]string {
	if x != nil {
		return x.DecryptedSecureJsonData
	}
	return nil
}

func (x *DataSourceInstanceSettings) GetLastUpdatedMS() int64 {
	if x != nil {
		return x.LastUpdatedMS
	}
	return 0
}

func (x *DataSourceInstanceSettings) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *DataSourceInstanceSettings) GetApiVersion() string {
	if x != nil {
		return x.ApiVersion
	}
	return ""
}

type User struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Login         string                 `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Email         string                 `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"`
	Role          string                 `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *User) Reset() {
	*x = User{}
	mi := &file_backend_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *User) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*User) ProtoMessage() {}

func (x *User) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use User.ProtoReflect.Descriptor instead.
func (*User) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{2}
}

func (x *User) GetLogin() string {
	if x != nil {
		return x.Login
	}
	return ""
}

func (x *User) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *User) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

func (x *User) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

type PluginContext struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The Grafana organization id the request originates from.
	// Deprecated: this value should NOT be used for multi-tenancy isolation in plugins.
	OrgId int64 `protobuf:"varint,1,opt,name=orgId,proto3" json:"orgId,omitempty"`
	// The unique identifier of the plugin the request is targeted for.
	PluginId string `protobuf:"bytes,2,opt,name=pluginId,proto3" json:"pluginId,omitempty"`
	// The Grafana user the request originates from.
	//
	// Will not be provided if Grafana backend initiated the request.
	User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"`
	// App plugin instance settings is the configured app instance settings.
	// In Grafana an app instance is an enabled app plugin in a
	// Grafana organization.
	//
	// Will only be set if request targeting an app instance.
	AppInstanceSettings *AppInstanceSettings `protobuf:"bytes,4,opt,name=appInstanceSettings,proto3" json:"appInstanceSettings,omitempty"`
	// Data source instance settings is the configured data source instance
	// settings. In Grafana a data source instance is a created data source
	// in a Grafana organization.
	//
	// Will only be set if request targeting a data source instance.
	DataSourceInstanceSettings *DataSourceInstanceSettings `protobuf:"bytes,5,opt,name=dataSourceInstanceSettings,proto3" json:"dataSourceInstanceSettings,omitempty"`
	// The grafana configuration as a map of key/value pairs.
	GrafanaConfig map[string]string `protobuf:"bytes,6,rep,name=grafanaConfig,proto3" json:"grafanaConfig,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// The version of the plugin the request is targeted for.
	PluginVersion string `protobuf:"bytes,7,opt,name=pluginVersion,proto3" json:"pluginVersion,omitempty"`
	// The user agent of the Grafana server that initiated the gRPC request.
	UserAgent string `protobuf:"bytes,8,opt,name=userAgent,proto3" json:"userAgent,omitempty"`
	// The API version that initiated a request
	ApiVersion string `protobuf:"bytes,9,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
	// The Grafana namespace.
	Namespace     string `protobuf:"bytes,10,opt,name=namespace,proto3" json:"namespace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PluginContext) Reset() {
	*x = PluginContext{}
	mi := &file_backend_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PluginContext) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PluginContext) ProtoMessage() {}

func (x *PluginContext) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PluginContext.ProtoReflect.Descriptor instead.
func (*PluginContext) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{3}
}

func (x *PluginContext) GetOrgId() int64 {
	if x != nil {
		return x.OrgId
	}
	return 0
}

func (x *PluginContext) GetPluginId() string {
	if x != nil {
		return x.PluginId
	}
	return ""
}

func (x *PluginContext) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *PluginContext) GetAppInstanceSettings() *AppInstanceSettings {
	if x != nil {
		return x.AppInstanceSettings
	}
	return nil
}

func (x *PluginContext) GetDataSourceInstanceSettings() *DataSourceInstanceSettings {
	if x != nil {
		return x.DataSourceInstanceSettings
	}
	return nil
}

func (x *PluginContext) GetGrafanaConfig() map[string]string {
	if x != nil {
		return x.GrafanaConfig
	}
	return nil
}

func (x *PluginContext) GetPluginVersion() string {
	if x != nil {
		return x.PluginVersion
	}
	return ""
}

func (x *PluginContext) GetUserAgent() string {
	if x != nil {
		return x.UserAgent
	}
	return ""
}

func (x *PluginContext) GetApiVersion() string {
	if x != nil {
		return x.ApiVersion
	}
	return ""
}

func (x *PluginContext) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

type StringList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Values        []string               `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StringList) Reset() {
	*x = StringList{}
	mi := &file_backend_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StringList) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StringList) ProtoMessage() {}

func (x *StringList) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StringList.ProtoReflect.Descriptor instead.
func (*StringList) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{4}
}

func (x *StringList) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

type CallResourceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	Path          string                 `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	Method        string                 `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"`
	Url           string                 `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	Headers       map[string]*StringList `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Body          []byte                 `protobuf:"bytes,6,opt,name=body,proto3" json:"body,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CallResourceRequest) Reset() {
	*x = CallResourceRequest{}
	mi := &file_backend_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CallResourceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CallResourceRequest) ProtoMessage() {}

func (x *CallResourceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CallResourceRequest.ProtoReflect.Descriptor instead.
func (*CallResourceRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{5}
}

func (x *CallResourceRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *CallResourceRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *CallResourceRequest) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *CallResourceRequest) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *CallResourceRequest) GetHeaders() map[string]*StringList {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *CallResourceRequest) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

type CallResourceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Maps to raw HTTP status codes when passed over HTTP
	Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	// Raw HTTP headers sent to the client
	Headers map[string]*StringList `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Raw HTTP body bytes sent to the client
	Body          []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CallResourceResponse) Reset() {
	*x = CallResourceResponse{}
	mi := &file_backend_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CallResourceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CallResourceResponse) ProtoMessage() {}

func (x *CallResourceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CallResourceResponse.ProtoReflect.Descriptor instead.
func (*CallResourceResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{6}
}

func (x *CallResourceResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *CallResourceResponse) GetHeaders() map[string]*StringList {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *CallResourceResponse) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

type TimeRange struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	FromEpochMS   int64                  `protobuf:"varint,1,opt,name=fromEpochMS,proto3" json:"fromEpochMS,omitempty"`
	ToEpochMS     int64                  `protobuf:"varint,2,opt,name=toEpochMS,proto3" json:"toEpochMS,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TimeRange) Reset() {
	*x = TimeRange{}
	mi := &file_backend_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TimeRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TimeRange) ProtoMessage() {}

func (x *TimeRange) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TimeRange.ProtoReflect.Descriptor instead.
func (*TimeRange) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{7}
}

func (x *TimeRange) GetFromEpochMS() int64 {
	if x != nil {
		return x.FromEpochMS
	}
	return 0
}

func (x *TimeRange) GetToEpochMS() int64 {
	if x != nil {
		return x.ToEpochMS
	}
	return 0
}

type DataQuery struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RefId         string                 `protobuf:"bytes,1,opt,name=refId,proto3" json:"refId,omitempty"`
	MaxDataPoints int64                  `protobuf:"varint,2,opt,name=maxDataPoints,proto3" json:"maxDataPoints,omitempty"`
	IntervalMS    int64                  `protobuf:"varint,3,opt,name=intervalMS,proto3" json:"intervalMS,omitempty"`
	TimeRange     *TimeRange             `protobuf:"bytes,4,opt,name=timeRange,proto3" json:"timeRange,omitempty"`
	Json          []byte                 `protobuf:"bytes,5,opt,name=json,proto3" json:"json,omitempty"`
	QueryType     string                 `protobuf:"bytes,6,opt,name=queryType,proto3" json:"queryType,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataQuery) Reset() {
	*x = DataQuery{}
	mi := &file_backend_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataQuery) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataQuery) ProtoMessage() {}

func (x *DataQuery) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataQuery.ProtoReflect.Descriptor instead.
func (*DataQuery) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{8}
}

func (x *DataQuery) GetRefId() string {
	if x != nil {
		return x.RefId
	}
	return ""
}

func (x *DataQuery) GetMaxDataPoints() int64 {
	if x != nil {
		return x.MaxDataPoints
	}
	return 0
}

func (x *DataQuery) GetIntervalMS() int64 {
	if x != nil {
		return x.IntervalMS
	}
	return 0
}

func (x *DataQuery) GetTimeRange() *TimeRange {
	if x != nil {
		return x.TimeRange
	}
	return nil
}

func (x *DataQuery) GetJson() []byte {
	if x != nil {
		return x.Json
	}
	return nil
}

func (x *DataQuery) GetQueryType() string {
	if x != nil {
		return x.QueryType
	}
	return ""
}

// QueryDataRequest
type QueryDataRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// Environment info
	Headers map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// List of data queries
	Queries []*DataQuery `protobuf:"bytes,3,rep,name=queries,proto3" json:"queries,omitempty"`
	// The requested response format
	Format        DataFrameFormat `protobuf:"varint,4,opt,name=format,proto3,enum=pluginv2.DataFrameFormat" json:"format,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryDataRequest) Reset() {
	*x = QueryDataRequest{}
	mi := &file_backend_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QueryDataRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryDataRequest) ProtoMessage() {}

func (x *QueryDataRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryDataRequest.ProtoReflect.Descriptor instead.
func (*QueryDataRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{9}
}

func (x *QueryDataRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *QueryDataRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *QueryDataRequest) GetQueries() []*DataQuery {
	if x != nil {
		return x.Queries
	}
	return nil
}

func (x *QueryDataRequest) GetFormat() DataFrameFormat {
	if x != nil {
		return x.Format
	}
	return DataFrameFormat_ARROW
}

type QueryDataResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Map of refId to response
	Responses     map[string]*DataResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryDataResponse) Reset() {
	*x = QueryDataResponse{}
	mi := &file_backend_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QueryDataResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryDataResponse) ProtoMessage() {}

func (x *QueryDataResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryDataResponse.ProtoReflect.Descriptor instead.
func (*QueryDataResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{10}
}

func (x *QueryDataResponse) GetResponses() map[string]*DataResponse {
	if x != nil {
		return x.Responses
	}
	return nil
}

type DataResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Arrow encoded DataFrames
	// Frame has its own meta, warnings, and repeats refId
	Frames [][]byte `protobuf:"bytes,1,rep,name=frames,proto3" json:"frames,omitempty"`
	// Error message
	Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	// Currently not used and not exposed in the frontend
	JsonMeta []byte `protobuf:"bytes,3,opt,name=jsonMeta,proto3" json:"jsonMeta,omitempty"`
	// When errors exist or a non 2XX status, clients will be passed a 207 HTTP error code in /ds/query
	// The status codes should match values from standard HTTP status codes
	// If not set explicitly, it will be marshaled to 200 if no error exists, or 500 if one does
	Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	// Error source
	ErrorSource string `protobuf:"bytes,5,opt,name=errorSource,proto3" json:"errorSource,omitempty"`
	// The frame format (default to arrow)
	Format        DataFrameFormat `protobuf:"varint,6,opt,name=format,proto3,enum=pluginv2.DataFrameFormat" json:"format,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataResponse) Reset() {
	*x = DataResponse{}
	mi := &file_backend_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataResponse) ProtoMessage() {}

func (x *DataResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataResponse.ProtoReflect.Descriptor instead.
func (*DataResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{11}
}

func (x *DataResponse) GetFrames() [][]byte {
	if x != nil {
		return x.Frames
	}
	return nil
}

func (x *DataResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *DataResponse) GetJsonMeta() []byte {
	if x != nil {
		return x.JsonMeta
	}
	return nil
}

func (x *DataResponse) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *DataResponse) GetErrorSource() string {
	if x != nil {
		return x.ErrorSource
	}
	return ""
}

func (x *DataResponse) GetFormat() DataFrameFormat {
	if x != nil {
		return x.Format
	}
	return DataFrameFormat_ARROW
}

type QueryChunkedDataRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// Environment info
	Headers map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// List of data queries
	Queries []*DataQuery `protobuf:"bytes,3,rep,name=queries,proto3" json:"queries,omitempty"`
	// The requested response format
	Format        DataFrameFormat `protobuf:"varint,4,opt,name=format,proto3,enum=pluginv2.DataFrameFormat" json:"format,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryChunkedDataRequest) Reset() {
	*x = QueryChunkedDataRequest{}
	mi := &file_backend_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QueryChunkedDataRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryChunkedDataRequest) ProtoMessage() {}

func (x *QueryChunkedDataRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryChunkedDataRequest.ProtoReflect.Descriptor instead.
func (*QueryChunkedDataRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{12}
}

func (x *QueryChunkedDataRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *QueryChunkedDataRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *QueryChunkedDataRequest) GetQueries() []*DataQuery {
	if x != nil {
		return x.Queries
	}
	return nil
}

func (x *QueryChunkedDataRequest) GetFormat() DataFrameFormat {
	if x != nil {
		return x.Format
	}
	return DataFrameFormat_ARROW
}

type QueryChunkedDataResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	RefId string                 `protobuf:"bytes,1,opt,name=refId,proto3" json:"refId,omitempty"`
	// Frame identifier that links multiple responses together. When an identifier appears the first time,
	// the frame must include both metadata and rows. Subsequent responses with the same identifier
	// will only include rows and must match the original frame structure.
	FrameId string `protobuf:"bytes,2,opt,name=frameId,proto3" json:"frameId,omitempty"`
	// Encoded frame -- the format is determined by the format parameter
	Frame []byte `protobuf:"bytes,3,opt,name=frame,proto3" json:"frame,omitempty"`
	// Error message
	Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
	// When errors exist or a non 2XX status, clients will be passed a 207 HTTP error code in /ds/query
	// The status codes should match values from standard HTTP status codes
	// If not set explicitly, it will be marshaled to 200 if no error exists, or 500 if one does
	Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
	// Error source
	ErrorSource string `protobuf:"bytes,6,opt,name=errorSource,proto3" json:"errorSource,omitempty"`
	// The frame format (default to arrow)
	Format        DataFrameFormat `protobuf:"varint,7,opt,name=format,proto3,enum=pluginv2.DataFrameFormat" json:"format,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryChunkedDataResponse) Reset() {
	*x = QueryChunkedDataResponse{}
	mi := &file_backend_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QueryChunkedDataResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QueryChunkedDataResponse) ProtoMessage() {}

func (x *QueryChunkedDataResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QueryChunkedDataResponse.ProtoReflect.Descriptor instead.
func (*QueryChunkedDataResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{13}
}

func (x *QueryChunkedDataResponse) GetRefId() string {
	if x != nil {
		return x.RefId
	}
	return ""
}

func (x *QueryChunkedDataResponse) GetFrameId() string {
	if x != nil {
		return x.FrameId
	}
	return ""
}

func (x *QueryChunkedDataResponse) GetFrame() []byte {
	if x != nil {
		return x.Frame
	}
	return nil
}

func (x *QueryChunkedDataResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *QueryChunkedDataResponse) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *QueryChunkedDataResponse) GetErrorSource() string {
	if x != nil {
		return x.ErrorSource
	}
	return ""
}

func (x *QueryChunkedDataResponse) GetFormat() DataFrameFormat {
	if x != nil {
		return x.Format
	}
	return DataFrameFormat_ARROW
}

type CollectMetricsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CollectMetricsRequest) Reset() {
	*x = CollectMetricsRequest{}
	mi := &file_backend_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CollectMetricsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CollectMetricsRequest) ProtoMessage() {}

func (x *CollectMetricsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CollectMetricsRequest.ProtoReflect.Descriptor instead.
func (*CollectMetricsRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{14}
}

func (x *CollectMetricsRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

type CollectMetricsResponse struct {
	state         protoimpl.MessageState          `protogen:"open.v1"`
	Metrics       *CollectMetricsResponse_Payload `protobuf:"bytes,1,opt,name=metrics,proto3" json:"metrics,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CollectMetricsResponse) Reset() {
	*x = CollectMetricsResponse{}
	mi := &file_backend_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CollectMetricsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CollectMetricsResponse) ProtoMessage() {}

func (x *CollectMetricsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CollectMetricsResponse.ProtoReflect.Descriptor instead.
func (*CollectMetricsResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{15}
}

func (x *CollectMetricsResponse) GetMetrics() *CollectMetricsResponse_Payload {
	if x != nil {
		return x.Metrics
	}
	return nil
}

type CheckHealthRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// Environment info
	Headers       map[string]string `protobuf:"bytes,2,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckHealthRequest) Reset() {
	*x = CheckHealthRequest{}
	mi := &file_backend_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckHealthRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckHealthRequest) ProtoMessage() {}

func (x *CheckHealthRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckHealthRequest.ProtoReflect.Descriptor instead.
func (*CheckHealthRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{16}
}

func (x *CheckHealthRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *CheckHealthRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

type CheckHealthResponse struct {
	state         protoimpl.MessageState           `protogen:"open.v1"`
	Status        CheckHealthResponse_HealthStatus `protobuf:"varint,1,opt,name=status,proto3,enum=pluginv2.CheckHealthResponse_HealthStatus" json:"status,omitempty"`
	Message       string                           `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	JsonDetails   []byte                           `protobuf:"bytes,3,opt,name=jsonDetails,proto3" json:"jsonDetails,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CheckHealthResponse) Reset() {
	*x = CheckHealthResponse{}
	mi := &file_backend_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CheckHealthResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CheckHealthResponse) ProtoMessage() {}

func (x *CheckHealthResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CheckHealthResponse.ProtoReflect.Descriptor instead.
func (*CheckHealthResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{17}
}

func (x *CheckHealthResponse) GetStatus() CheckHealthResponse_HealthStatus {
	if x != nil {
		return x.Status
	}
	return CheckHealthResponse_UNKNOWN
}

func (x *CheckHealthResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *CheckHealthResponse) GetJsonDetails() []byte {
	if x != nil {
		return x.JsonDetails
	}
	return nil
}

type SubscribeStreamRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// path part of channel.
	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	// optional raw data. May be used as an extra payload supplied upon subscription.
	// For example, can contain JSON query object.
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	// Environment info
	Headers       map[string]string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SubscribeStreamRequest) Reset() {
	*x = SubscribeStreamRequest{}
	mi := &file_backend_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubscribeStreamRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubscribeStreamRequest) ProtoMessage() {}

func (x *SubscribeStreamRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubscribeStreamRequest.ProtoReflect.Descriptor instead.
func (*SubscribeStreamRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{18}
}

func (x *SubscribeStreamRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *SubscribeStreamRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *SubscribeStreamRequest) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *SubscribeStreamRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

type SubscribeStreamResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// status of subscribe response.
	Status SubscribeStreamResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pluginv2.SubscribeStreamResponse_Status" json:"status,omitempty"`
	// JSON-encoded data to return to a client in a successful
	// subscription result.
	// For data frame streams this can be a JSON-encoded frame schema.
	Data          []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SubscribeStreamResponse) Reset() {
	*x = SubscribeStreamResponse{}
	mi := &file_backend_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SubscribeStreamResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubscribeStreamResponse) ProtoMessage() {}

func (x *SubscribeStreamResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubscribeStreamResponse.ProtoReflect.Descriptor instead.
func (*SubscribeStreamResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{19}
}

func (x *SubscribeStreamResponse) GetStatus() SubscribeStreamResponse_Status {
	if x != nil {
		return x.Status
	}
	return SubscribeStreamResponse_OK
}

func (x *SubscribeStreamResponse) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

type PublishStreamRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// path part of a channel.
	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	// data that user wants to publish into a stream
	// (only JSON-encoded at the moment).
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	// Environment info
	Headers       map[string]string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PublishStreamRequest) Reset() {
	*x = PublishStreamRequest{}
	mi := &file_backend_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PublishStreamRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublishStreamRequest) ProtoMessage() {}

func (x *PublishStreamRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PublishStreamRequest.ProtoReflect.Descriptor instead.
func (*PublishStreamRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{20}
}

func (x *PublishStreamRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *PublishStreamRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *PublishStreamRequest) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *PublishStreamRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

type PublishStreamResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// status of publish response.
	Status PublishStreamResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pluginv2.PublishStreamResponse_Status" json:"status,omitempty"`
	// JSON-encoded data to publish into a channel. This can be
	// unmodified data from a PublishRequest or any modified data.
	// If empty data returned here then Grafana won't publish data
	// to a channel itself but will return a successful result to a
	// client (supposing plugin published data to a channel itself).
	Data          []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PublishStreamResponse) Reset() {
	*x = PublishStreamResponse{}
	mi := &file_backend_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PublishStreamResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublishStreamResponse) ProtoMessage() {}

func (x *PublishStreamResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PublishStreamResponse.ProtoReflect.Descriptor instead.
func (*PublishStreamResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{21}
}

func (x *PublishStreamResponse) GetStatus() PublishStreamResponse_Status {
	if x != nil {
		return x.Status
	}
	return PublishStreamResponse_OK
}

func (x *PublishStreamResponse) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

type RunStreamRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PluginContext *PluginContext         `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// path part of a channel.
	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	// optional raw data. May be used as an extra payload supplied upon subscription.
	// For example, can contain JSON query object.
	Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	// Environment info
	Headers       map[string]string `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RunStreamRequest) Reset() {
	*x = RunStreamRequest{}
	mi := &file_backend_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunStreamRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunStreamRequest) ProtoMessage() {}

func (x *RunStreamRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RunStreamRequest.ProtoReflect.Descriptor instead.
func (*RunStreamRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{22}
}

func (x *RunStreamRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *RunStreamRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *RunStreamRequest) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *RunStreamRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

type StreamPacket struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// JSON-encoded data to publish into a channel.
	Data          []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StreamPacket) Reset() {
	*x = StreamPacket{}
	mi := &file_backend_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StreamPacket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StreamPacket) ProtoMessage() {}

func (x *StreamPacket) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StreamPacket.ProtoReflect.Descriptor instead.
func (*StreamPacket) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{23}
}

func (x *StreamPacket) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

// Identify the Object properties
type GroupVersionKind struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Group         string                 `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
	Version       string                 `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	Kind          string                 `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GroupVersionKind) Reset() {
	*x = GroupVersionKind{}
	mi := &file_backend_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GroupVersionKind) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GroupVersionKind) ProtoMessage() {}

func (x *GroupVersionKind) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GroupVersionKind.ProtoReflect.Descriptor instead.
func (*GroupVersionKind) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{24}
}

func (x *GroupVersionKind) GetGroup() string {
	if x != nil {
		return x.Group
	}
	return ""
}

func (x *GroupVersionKind) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

func (x *GroupVersionKind) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

// AdmissionRequest contains information from a kubernetes Admission request and decoded object(s).
type AdmissionRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// NOTE: this may not include app or datasource instance settings depending on the request
	PluginContext *PluginContext `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// The requested operation
	Operation AdmissionRequest_Operation `protobuf:"varint,2,opt,name=operation,proto3,enum=pluginv2.AdmissionRequest_Operation" json:"operation,omitempty"`
	// The object kind
	Kind *GroupVersionKind `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
	// Object is the object in the request.  This includes the full metadata envelope.
	ObjectBytes []byte `protobuf:"bytes,4,opt,name=object_bytes,json=objectBytes,proto3" json:"object_bytes,omitempty"`
	// OldObject is the object as it currently exists in storage. This includes the full metadata envelope.
	OldObjectBytes []byte `protobuf:"bytes,5,opt,name=old_object_bytes,json=oldObjectBytes,proto3" json:"old_object_bytes,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *AdmissionRequest) Reset() {
	*x = AdmissionRequest{}
	mi := &file_backend_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AdmissionRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdmissionRequest) ProtoMessage() {}

func (x *AdmissionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AdmissionRequest.ProtoReflect.Descriptor instead.
func (*AdmissionRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{25}
}

func (x *AdmissionRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *AdmissionRequest) GetOperation() AdmissionRequest_Operation {
	if x != nil {
		return x.Operation
	}
	return AdmissionRequest_CREATE
}

func (x *AdmissionRequest) GetKind() *GroupVersionKind {
	if x != nil {
		return x.Kind
	}
	return nil
}

func (x *AdmissionRequest) GetObjectBytes() []byte {
	if x != nil {
		return x.ObjectBytes
	}
	return nil
}

func (x *AdmissionRequest) GetOldObjectBytes() []byte {
	if x != nil {
		return x.OldObjectBytes
	}
	return nil
}

// Check if an object can be admitted
type ValidationResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Allowed indicates whether or not the admission request was permitted.
	Allowed bool `protobuf:"varint,1,opt,name=allowed,proto3" json:"allowed,omitempty"`
	// Result contains extra details into why an admission request was denied.
	// This field IS NOT consulted in any way if "Allowed" is "true".
	// +optional
	Result *StatusResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	// warnings is a list of warning messages to return to the requesting API client.
	// Warning messages describe a problem the client making the API request should correct or be aware of.
	// Limit warnings to 120 characters if possible.
	// Warnings over 256 characters and large numbers of warnings may be truncated.
	// +optional
	Warnings      []string `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ValidationResponse) Reset() {
	*x = ValidationResponse{}
	mi := &file_backend_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ValidationResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ValidationResponse) ProtoMessage() {}

func (x *ValidationResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ValidationResponse.ProtoReflect.Descriptor instead.
func (*ValidationResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{26}
}

func (x *ValidationResponse) GetAllowed() bool {
	if x != nil {
		return x.Allowed
	}
	return false
}

func (x *ValidationResponse) GetResult() *StatusResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *ValidationResponse) GetWarnings() []string {
	if x != nil {
		return x.Warnings
	}
	return nil
}

// Return a mutated copy of the object in a form that can be admitted
type MutationResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Allowed indicates whether or not the admission request was permitted.
	Allowed bool `protobuf:"varint,1,opt,name=allowed,proto3" json:"allowed,omitempty"`
	// Result contains extra details into why an admission request was denied.
	// This field IS NOT consulted in any way if "Allowed" is "true".
	// +optional
	Result *StatusResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	// warnings is a list of warning messages to return to the requesting API client.
	// Warning messages describe a problem the client making the API request should correct or be aware of.
	// Limit warnings to 120 characters if possible.
	// Warnings over 256 characters and large numbers of warnings may be truncated.
	// +optional
	Warnings []string `protobuf:"bytes,3,rep,name=warnings,proto3" json:"warnings,omitempty"`
	// Mutated object bytes
	ObjectBytes   []byte `protobuf:"bytes,4,opt,name=object_bytes,json=objectBytes,proto3" json:"object_bytes,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MutationResponse) Reset() {
	*x = MutationResponse{}
	mi := &file_backend_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MutationResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MutationResponse) ProtoMessage() {}

func (x *MutationResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MutationResponse.ProtoReflect.Descriptor instead.
func (*MutationResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{27}
}

func (x *MutationResponse) GetAllowed() bool {
	if x != nil {
		return x.Allowed
	}
	return false
}

func (x *MutationResponse) GetResult() *StatusResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *MutationResponse) GetWarnings() []string {
	if x != nil {
		return x.Warnings
	}
	return nil
}

func (x *MutationResponse) GetObjectBytes() []byte {
	if x != nil {
		return x.ObjectBytes
	}
	return nil
}

// GroupVersion represents the API group and version of a resource.
type GroupVersion struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Group         string                 `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"`
	Version       string                 `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GroupVersion) Reset() {
	*x = GroupVersion{}
	mi := &file_backend_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GroupVersion) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GroupVersion) ProtoMessage() {}

func (x *GroupVersion) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GroupVersion.ProtoReflect.Descriptor instead.
func (*GroupVersion) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{28}
}

func (x *GroupVersion) GetGroup() string {
	if x != nil {
		return x.Group
	}
	return ""
}

func (x *GroupVersion) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

// RawObject contains a resource serialized into a byte array with a content type
type RawObject struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Raw is the serialized object
	Raw []byte `protobuf:"bytes,1,opt,name=raw,proto3" json:"raw,omitempty"`
	// ContentType is the media type of the raw object
	ContentType   string `protobuf:"bytes,2,opt,name=content_type,json=contentType,proto3" json:"content_type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RawObject) Reset() {
	*x = RawObject{}
	mi := &file_backend_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RawObject) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RawObject) ProtoMessage() {}

func (x *RawObject) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RawObject.ProtoReflect.Descriptor instead.
func (*RawObject) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{29}
}

func (x *RawObject) GetRaw() []byte {
	if x != nil {
		return x.Raw
	}
	return nil
}

func (x *RawObject) GetContentType() string {
	if x != nil {
		return x.ContentType
	}
	return ""
}

// ConversionRequest supports converting objects from one version to another
type ConversionRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// NOTE: this may not include app or datasource instance settings depending on the request
	PluginContext *PluginContext `protobuf:"bytes,1,opt,name=pluginContext,proto3" json:"pluginContext,omitempty"`
	// uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
	// otherwise identical (parallel requests, etc).
	// The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
	// It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
	Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	// Objects to convert
	// +listType=atomic
	Objects []*RawObject `protobuf:"bytes,3,rep,name=objects,proto3" json:"objects,omitempty"`
	// Target converted version
	TargetVersion *GroupVersion `protobuf:"bytes,4,opt,name=target_version,json=targetVersion,proto3" json:"target_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ConversionRequest) Reset() {
	*x = ConversionRequest{}
	mi := &file_backend_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ConversionRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConversionRequest) ProtoMessage() {}

func (x *ConversionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConversionRequest.ProtoReflect.Descriptor instead.
func (*ConversionRequest) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{30}
}

func (x *ConversionRequest) GetPluginContext() *PluginContext {
	if x != nil {
		return x.PluginContext
	}
	return nil
}

func (x *ConversionRequest) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *ConversionRequest) GetObjects() []*RawObject {
	if x != nil {
		return x.Objects
	}
	return nil
}

func (x *ConversionRequest) GetTargetVersion() *GroupVersion {
	if x != nil {
		return x.TargetVersion
	}
	return nil
}

// ConversionResponse contains the converted objects
type ConversionResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// uid is an identifier for the individual request/response.
	// This should be copied over from the corresponding `request.uid`.
	Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
	// result contains extra details into why an admission request was denied.
	Result *StatusResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	// objects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
	// +listType=atomic
	Objects       []*RawObject `protobuf:"bytes,3,rep,name=objects,proto3" json:"objects,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ConversionResponse) Reset() {
	*x = ConversionResponse{}
	mi := &file_backend_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ConversionResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConversionResponse) ProtoMessage() {}

func (x *ConversionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConversionResponse.ProtoReflect.Descriptor instead.
func (*ConversionResponse) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{31}
}

func (x *ConversionResponse) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *ConversionResponse) GetResult() *StatusResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *ConversionResponse) GetObjects() []*RawObject {
	if x != nil {
		return x.Objects
	}
	return nil
}

// Status structure is copied from:
// https://github.com/kubernetes/apimachinery/blob/v0.30.1/pkg/apis/meta/v1/generated.proto#L979
type StatusResult struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Status of the operation.
	// One of: "Success" or "Failure".
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
	// +optional
	Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// A human-readable description of the status of this operation.
	// +optional
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	// A machine-readable description of why this operation is in the
	// "Failure" status. If this value is empty there
	// is no information available. A Reason clarifies an HTTP status
	// code but does not override it.
	// +optional
	Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"`
	// Suggested HTTP return code for this status, 0 if not set.
	// +optional
	Code          int32 `protobuf:"varint,4,opt,name=code,proto3" json:"code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StatusResult) Reset() {
	*x = StatusResult{}
	mi := &file_backend_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *StatusResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StatusResult) ProtoMessage() {}

func (x *StatusResult) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StatusResult.ProtoReflect.Descriptor instead.
func (*StatusResult) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{32}
}

func (x *StatusResult) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *StatusResult) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *StatusResult) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *StatusResult) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

type CollectMetricsResponse_Payload struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Prometheus    []byte                 `protobuf:"bytes,1,opt,name=prometheus,proto3" json:"prometheus,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CollectMetricsResponse_Payload) Reset() {
	*x = CollectMetricsResponse_Payload{}
	mi := &file_backend_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CollectMetricsResponse_Payload) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CollectMetricsResponse_Payload) ProtoMessage() {}

func (x *CollectMetricsResponse_Payload) ProtoReflect() protoreflect.Message {
	mi := &file_backend_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CollectMetricsResponse_Payload.ProtoReflect.Descriptor instead.
func (*CollectMetricsResponse_Payload) Descriptor() ([]byte, []int) {
	return file_backend_proto_rawDescGZIP(), []int{15, 0}
}

func (x *CollectMetricsResponse_Payload) GetPrometheus() []byte {
	if x != nil {
		return x.Prometheus
	}
	return nil
}

var File_backend_proto protoreflect.FileDescriptor

var file_backend_proto_rawDesc = string([]byte{
	0x0a, 0x0d, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x22, 0xb9, 0x02, 0x0a, 0x13, 0x41, 0x70,
	0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
	0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x74, 0x0a,
	0x17, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65,
	0x4a, 0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a,
	0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73,
	0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x73, 0x6f,
	0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x64, 0x65, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x44,
	0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x64, 0x4d, 0x53, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x53, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x69,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61,
	0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4a, 0x0a, 0x1c, 0x44, 0x65, 0x63,
	0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x73, 0x6f, 0x6e,
	0x44, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x91, 0x04, 0x0a, 0x1a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74,
	0x69, 0x6e, 0x67, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x61,
	0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x45,
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x69, 0x63, 0x41,
	0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62,
	0x61, 0x73, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08,
	0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08,
	0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x7b, 0x0a, 0x17, 0x64, 0x65, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x44,
	0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x70, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49,
	0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e,
	0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a,
	0x73, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x64, 0x65,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x73, 0x6f,
	0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64,
	0x61, 0x74, 0x65, 0x64, 0x4d, 0x53, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61,
	0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x53, 0x12, 0x10, 0x0a, 0x03, 0x75,
	0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a,
	0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x4a, 0x0a,
	0x1c, 0x44, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65,
	0x4a, 0x73, 0x6f, 0x6e, 0x44, 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, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x04, 0x55, 0x73, 0x65,
	0x72, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65,
	0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69,
	0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xb2, 0x04, 0x0a, 0x0d, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x04, 0x75, 0x73, 0x65,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x76, 0x32, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x4f, 0x0a,
	0x13, 0x61, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74,
	0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
	0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x13, 0x61, 0x70, 0x70, 0x49, 0x6e,
	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x64,
	0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74,
	0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74,
	0x69, 0x6e, 0x67, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x78, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x67, 0x72, 0x61, 0x66, 0x61, 0x6e, 0x61,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
	0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70,
	0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e,
	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x66,
	0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x24, 0x0a, 0x0a, 0x53, 0x74,
	0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
	0x22, 0xbe, 0x02, 0x0a, 0x13, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69,
	0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6d,
	0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74,
	0x68, 0x6f, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x44, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62,
	0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a,
	0x50, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0xd7, 0x01, 0x0a, 0x14, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x45,
	0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x2b, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x1a, 0x50, 0x0a, 0x0c, 0x48, 0x65, 0x61,
	0x64, 0x65, 0x72, 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, 0x2a, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4b, 0x0a, 0x09, 0x54,
	0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d,
	0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x53, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x66,
	0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x53, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f,
	0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
	0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x4d, 0x53, 0x22, 0xcc, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x74,
	0x61, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d,
	0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x53,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
	0x4d, 0x53, 0x12, 0x31, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
	0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75,
	0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb2, 0x02, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x41, 0x0a, 0x07, 0x68,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74,
	0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2d,
	0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a,
	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x61,
	0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xb3, 0x01, 0x0a,
	0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x1a, 0x54, 0x0a, 0x0e,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 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, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0xc5, 0x01, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65,
	0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0xc0, 0x02, 0x0a, 0x17, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x48, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61,
	0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12,
	0x2d, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31,
	0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
	0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72,
	0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61,
	0x74, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xe3, 0x01,
	0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61,
	0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65,
	0x66, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x66, 0x49, 0x64,
	0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72,
	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x66, 0x72, 0x61, 0x6d, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20,
	0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x12, 0x31, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x19, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x61,
	0x46, 0x72, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x22, 0x56, 0x0a, 0x15, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x16,
	0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61,
	0x64, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x29, 0x0a, 0x07, 0x50, 0x61,
	0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68,
	0x65, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x65,
	0x74, 0x68, 0x65, 0x75, 0x73, 0x22, 0xd4, 0x01, 0x0a, 0x12, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48,
	0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x43, 0x0a, 0x07, 0x68,
	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61,
	0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65,
	0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xc5, 0x01, 0x0a,
	0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x12, 0x20, 0x0a, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x44, 0x65, 0x74,
	0x61, 0x69, 0x6c, 0x73, 0x22, 0x2e, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52,
	0x4f, 0x52, 0x10, 0x02, 0x22, 0x84, 0x02, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x3d, 0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52,
	0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61,
	0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x47, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x76, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a,
	0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xa7, 0x01, 0x0a, 0x17,
	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e,
	0x76, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x36, 0x0a,
	0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12,
	0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x15,
	0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e,
	0x49, 0x45, 0x44, 0x10, 0x02, 0x22, 0x80, 0x02, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73,
	0x68, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d,
	0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a,
	0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
	0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
	0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c,
	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0xa3, 0x01, 0x0a, 0x15, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x36, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f,
	0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49,
	0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x02, 0x22, 0xf8,
	0x01, 0x0a, 0x10, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x07, 0x68, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a,
	0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x22, 0x22, 0x0a, 0x0c, 0x53, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x56, 0x0a,
	0x10, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xc3, 0x02, 0x0a, 0x10, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x0d, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x6f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a,
	0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a,
	0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x12, 0x28, 0x0a, 0x10, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x62,
	0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6f, 0x6c, 0x64, 0x4f,
	0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x2f, 0x0a, 0x09, 0x4f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54,
	0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12,
	0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x22, 0x7a, 0x0a, 0x12, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x77,
	0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77,
	0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x4d, 0x75, 0x74, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61,
	0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e,
	0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e,
	0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x4f, 0x62, 0x6a, 0x65,
	0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x03, 0x72, 0x61, 0x77, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a,
	0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e,
	0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x10, 0x0a, 0x03,
	0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2d,
	0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x52, 0x61, 0x77, 0x4f, 0x62,
	0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x3d, 0x0a,
	0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74,
	0x61, 0x72, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a,
	0x12, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x52, 0x61, 0x77, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, 0x6a,
	0x65, 0x63, 0x74, 0x73, 0x22, 0x6c, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 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, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x12,
	0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f,
	0x64, 0x65, 0x2a, 0x26, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x46,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x4f, 0x57, 0x10, 0x00,
	0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x32, 0x5b, 0x0a, 0x08, 0x52, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32,
	0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x32, 0xa9, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
	0x12, 0x44, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x2e,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61,
	0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x6c, 0x75, 0x67,
	0x69, 0x6e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43,
	0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x70, 0x6c, 0x75,
	0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68, 0x75, 0x6e, 0x6b,
	0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
	0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x68,
	0x75, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x30, 0x01, 0x32, 0xae, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74,
	0x69, 0x63, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c,
	0x74, 0x68, 0x12, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x68,
	0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x1d, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63,
	0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x53, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x12, 0x1f, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6c,
	0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x6f,
	0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf5, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12,
	0x56, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x12, 0x20, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x53, 0x75,
	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e,
	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x53, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x12, 0x1a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e,
	0x52, 0x75, 0x6e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x16, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0d, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c,
	0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x53, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xac, 0x01, 0x0a,
	0x10, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x12, 0x4d, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76,
	0x32, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x49, 0x0a, 0x0f, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x41,
	0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x1a, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x61, 0x0a, 0x12, 0x52,
	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x12, 0x4b, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4f, 0x62, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6e, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0d,
	0x5a, 0x0b, 0x2e, 0x2f, 0x3b, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x76, 0x32, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
})

var (
	file_backend_proto_rawDescOnce sync.Once
	file_backend_proto_rawDescData []byte
)

func file_backend_proto_rawDescGZIP() []byte {
	file_backend_proto_rawDescOnce.Do(func() {
		file_backend_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_backend_proto_rawDesc), len(file_backend_proto_rawDesc)))
	})
	return file_backend_proto_rawDescData
}

var file_backend_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_backend_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_backend_proto_goTypes = []any{
	(DataFrameFormat)(0),                   // 0: pluginv2.DataFrameFormat
	(CheckHealthResponse_HealthStatus)(0),  // 1: pluginv2.CheckHealthResponse.HealthStatus
	(SubscribeStreamResponse_Status)(0),    // 2: pluginv2.SubscribeStreamResponse.Status
	(PublishStreamResponse_Status)(0),      // 3: pluginv2.PublishStreamResponse.Status
	(AdmissionRequest_Operation)(0),        // 4: pluginv2.AdmissionRequest.Operation
	(*AppInstanceSettings)(nil),            // 5: pluginv2.AppInstanceSettings
	(*DataSourceInstanceSettings)(nil),     // 6: pluginv2.DataSourceInstanceSettings
	(*User)(nil),                           // 7: pluginv2.User
	(*PluginContext)(nil),                  // 8: pluginv2.PluginContext
	(*StringList)(nil),                     // 9: pluginv2.StringList
	(*CallResourceRequest)(nil),            // 10: pluginv2.CallResourceRequest
	(*CallResourceResponse)(nil),           // 11: pluginv2.CallResourceResponse
	(*TimeRange)(nil),                      // 12: pluginv2.TimeRange
	(*DataQuery)(nil),                      // 13: pluginv2.DataQuery
	(*QueryDataRequest)(nil),               // 14: pluginv2.QueryDataRequest
	(*QueryDataResponse)(nil),              // 15: pluginv2.QueryDataResponse
	(*DataResponse)(nil),                   // 16: pluginv2.DataResponse
	(*QueryChunkedDataRequest)(nil),        // 17: pluginv2.QueryChunkedDataRequest
	(*QueryChunkedDataResponse)(nil),       // 18: pluginv2.QueryChunkedDataResponse
	(*CollectMetricsRequest)(nil),          // 19: pluginv2.CollectMetricsRequest
	(*CollectMetricsResponse)(nil),         // 20: pluginv2.CollectMetricsResponse
	(*CheckHealthRequest)(nil),             // 21: pluginv2.CheckHealthRequest
	(*CheckHealthResponse)(nil),            // 22: pluginv2.CheckHealthResponse
	(*SubscribeStreamRequest)(nil),         // 23: pluginv2.SubscribeStreamRequest
	(*SubscribeStreamResponse)(nil),        // 24: pluginv2.SubscribeStreamResponse
	(*PublishStreamRequest)(nil),           // 25: pluginv2.PublishStreamRequest
	(*PublishStreamResponse)(nil),          // 26: pluginv2.PublishStreamResponse
	(*RunStreamRequest)(nil),               // 27: pluginv2.RunStreamRequest
	(*StreamPacket)(nil),                   // 28: pluginv2.StreamPacket
	(*GroupVersionKind)(nil),               // 29: pluginv2.GroupVersionKind
	(*AdmissionRequest)(nil),               // 30: pluginv2.AdmissionRequest
	(*ValidationResponse)(nil),             // 31: pluginv2.ValidationResponse
	(*MutationResponse)(nil),               // 32: pluginv2.MutationResponse
	(*GroupVersion)(nil),                   // 33: pluginv2.GroupVersion
	(*RawObject)(nil),                      // 34: pluginv2.RawObject
	(*ConversionRequest)(nil),              // 35: pluginv2.ConversionRequest
	(*ConversionResponse)(nil),             // 36: pluginv2.ConversionResponse
	(*StatusResult)(nil),                   // 37: pluginv2.StatusResult
	nil,                                    // 38: pluginv2.AppInstanceSettings.DecryptedSecureJsonDataEntry
	nil,                                    // 39: pluginv2.DataSourceInstanceSettings.DecryptedSecureJsonDataEntry
	nil,                                    // 40: pluginv2.PluginContext.GrafanaConfigEntry
	nil,                                    // 41: pluginv2.CallResourceRequest.HeadersEntry
	nil,                                    // 42: pluginv2.CallResourceResponse.HeadersEntry
	nil,                                    // 43: pluginv2.QueryDataRequest.HeadersEntry
	nil,                                    // 44: pluginv2.QueryDataResponse.ResponsesEntry
	nil,                                    // 45: pluginv2.QueryChunkedDataRequest.HeadersEntry
	(*CollectMetricsResponse_Payload)(nil), // 46: pluginv2.CollectMetricsResponse.Payload
	nil,                                    // 47: pluginv2.CheckHealthRequest.HeadersEntry
	nil,                                    // 48: pluginv2.SubscribeStreamRequest.HeadersEntry
	nil,                                    // 49: pluginv2.PublishStreamRequest.HeadersEntry
	nil,                                    // 50: pluginv2.RunStreamRequest.HeadersEntry
}
var file_backend_proto_depIdxs = []int32{
	38, // 0: pluginv2.AppInstanceSettings.decryptedSecureJsonData:type_name -> pluginv2.AppInstanceSettings.DecryptedSecureJsonDataEntry
	39, // 1: pluginv2.DataSourceInstanceSettings.decryptedSecureJsonData:type_name -> pluginv2.DataSourceInstanceSettings.DecryptedSecureJsonDataEntry
	7,  // 2: pluginv2.PluginContext.user:type_name -> pluginv2.User
	5,  // 3: pluginv2.PluginContext.appInstanceSettings:type_name -> pluginv2.AppInstanceSettings
	6,  // 4: pluginv2.PluginContext.dataSourceInstanceSettings:type_name -> pluginv2.DataSourceInstanceSettings
	40, // 5: pluginv2.PluginContext.grafanaConfig:type_name -> pluginv2.PluginContext.GrafanaConfigEntry
	8,  // 6: pluginv2.CallResourceRequest.pluginContext:type_name -> pluginv2.PluginContext
	41, // 7: pluginv2.CallResourceRequest.headers:type_name -> pluginv2.CallResourceRequest.HeadersEntry
	42, // 8: pluginv2.CallResourceResponse.headers:type_name -> pluginv2.CallResourceResponse.HeadersEntry
	12, // 9: pluginv2.DataQuery.timeRange:type_name -> pluginv2.TimeRange
	8,  // 10: pluginv2.QueryDataRequest.pluginContext:type_name -> pluginv2.PluginContext
	43, // 11: pluginv2.QueryDataRequest.headers:type_name -> pluginv2.QueryDataRequest.HeadersEntry
	13, // 12: pluginv2.QueryDataRequest.queries:type_name -> pluginv2.DataQuery
	0,  // 13: pluginv2.QueryDataRequest.format:type_name -> pluginv2.DataFrameFormat
	44, // 14: pluginv2.QueryDataResponse.responses:type_name -> pluginv2.QueryDataResponse.ResponsesEntry
	0,  // 15: pluginv2.DataResponse.format:type_name -> pluginv2.DataFrameFormat
	8,  // 16: pluginv2.QueryChunkedDataRequest.pluginContext:type_name -> pluginv2.PluginContext
	45, // 17: pluginv2.QueryChunkedDataRequest.headers:type_name -> pluginv2.QueryChunkedDataRequest.HeadersEntry
	13, // 18: pluginv2.QueryChunkedDataRequest.queries:type_name -> pluginv2.DataQuery
	0,  // 19: pluginv2.QueryChunkedDataRequest.format:type_name -> pluginv2.DataFrameFormat
	0,  // 20: pluginv2.QueryChunkedDataResponse.format:type_name -> pluginv2.DataFrameFormat
	8,  // 21: pluginv2.CollectMetricsRequest.pluginContext:type_name -> pluginv2.PluginContext
	46, // 22: pluginv2.CollectMetricsResponse.metrics:type_name -> pluginv2.CollectMetricsResponse.Payload
	8,  // 23: pluginv2.CheckHealthRequest.pluginContext:type_name -> pluginv2.PluginContext
	47, // 24: pluginv2.CheckHealthRequest.headers:type_name -> pluginv2.CheckHealthRequest.HeadersEntry
	1,  // 25: pluginv2.CheckHealthResponse.status:type_name -> pluginv2.CheckHealthResponse.HealthStatus
	8,  // 26: pluginv2.SubscribeStreamRequest.pluginContext:type_name -> pluginv2.PluginContext
	48, // 27: pluginv2.SubscribeStreamRequest.headers:type_name -> pluginv2.SubscribeStreamRequest.HeadersEntry
	2,  // 28: pluginv2.SubscribeStreamResponse.status:type_name -> pluginv2.SubscribeStreamResponse.Status
	8,  // 29: pluginv2.PublishStreamRequest.pluginContext:type_name -> pluginv2.PluginContext
	49, // 30: pluginv2.PublishStreamRequest.headers:type_name -> pluginv2.PublishStreamRequest.HeadersEntry
	3,  // 31: pluginv2.PublishStreamResponse.status:type_name -> pluginv2.PublishStreamResponse.Status
	8,  // 32: pluginv2.RunStreamRequest.pluginContext:type_name -> pluginv2.PluginContext
	50, // 33: pluginv2.RunStreamRequest.headers:type_name -> pluginv2.RunStreamRequest.HeadersEntry
	8,  // 34: pluginv2.AdmissionRequest.pluginContext:type_name -> pluginv2.PluginContext
	4,  // 35: pluginv2.AdmissionRequest.operation:type_name -> pluginv2.AdmissionRequest.Operation
	29, // 36: pluginv2.AdmissionRequest.kind:type_name -> pluginv2.GroupVersionKind
	37, // 37: pluginv2.ValidationResponse.result:type_name -> pluginv2.StatusResult
	37, // 38: pluginv2.MutationResponse.result:type_name -> pluginv2.StatusResult
	8,  // 39: pluginv2.ConversionRequest.pluginContext:type_name -> pluginv2.PluginContext
	34, // 40: pluginv2.ConversionRequest.objects:type_name -> pluginv2.RawObject
	33, // 41: pluginv2.ConversionRequest.target_version:type_name -> pluginv2.GroupVersion
	37, // 42: pluginv2.ConversionResponse.result:type_name -> pluginv2.StatusResult
	34, // 43: pluginv2.ConversionResponse.objects:type_name -> pluginv2.RawObject
	9,  // 44: pluginv2.CallResourceRequest.HeadersEntry.value:type_name -> pluginv2.StringList
	9,  // 45: pluginv2.CallResourceResponse.HeadersEntry.value:type_name -> pluginv2.StringList
	16, // 46: pluginv2.QueryDataResponse.ResponsesEntry.value:type_name -> pluginv2.DataResponse
	10, // 47: pluginv2.Resource.CallResource:input_type -> pluginv2.CallResourceRequest
	14, // 48: pluginv2.Data.QueryData:input_type -> pluginv2.QueryDataRequest
	17, // 49: pluginv2.Data.QueryChunkedData:input_type -> pluginv2.QueryChunkedDataRequest
	21, // 50: pluginv2.Diagnostics.CheckHealth:input_type -> pluginv2.CheckHealthRequest
	19, // 51: pluginv2.Diagnostics.CollectMetrics:input_type -> pluginv2.CollectMetricsRequest
	23, // 52: pluginv2.Stream.SubscribeStream:input_type -> pluginv2.SubscribeStreamRequest
	27, // 53: pluginv2.Stream.RunStream:input_type -> pluginv2.RunStreamRequest
	25, // 54: pluginv2.Stream.PublishStream:input_type -> pluginv2.PublishStreamRequest
	30, // 55: pluginv2.AdmissionControl.ValidateAdmission:input_type -> pluginv2.AdmissionRequest
	30, // 56: pluginv2.AdmissionControl.MutateAdmission:input_type -> pluginv2.AdmissionRequest
	35, // 57: pluginv2.ResourceConversion.ConvertObjects:input_type -> pluginv2.ConversionRequest
	11, // 58: pluginv2.Resource.CallResource:output_type -> pluginv2.CallResourceResponse
	15, // 59: pluginv2.Data.QueryData:output_type -> pluginv2.QueryDataResponse
	18, // 60: pluginv2.Data.QueryChunkedData:output_type -> pluginv2.QueryChunkedDataResponse
	22, // 61: pluginv2.Diagnostics.CheckHealth:output_type -> pluginv2.CheckHealthResponse
	20, // 62: pluginv2.Diagnostics.CollectMetrics:output_type -> pluginv2.CollectMetricsResponse
	24, // 63: pluginv2.Stream.SubscribeStream:output_type -> pluginv2.SubscribeStreamResponse
	28, // 64: pluginv2.Stream.RunStream:output_type -> pluginv2.StreamPacket
	26, // 65: pluginv2.Stream.PublishStream:output_type -> pluginv2.PublishStreamResponse
	31, // 66: pluginv2.AdmissionControl.ValidateAdmission:output_type -> pluginv2.ValidationResponse
	32, // 67: pluginv2.AdmissionControl.MutateAdmission:output_type -> pluginv2.MutationResponse
	36, // 68: pluginv2.ResourceConversion.ConvertObjects:output_type -> pluginv2.ConversionResponse
	58, // [58:69] is the sub-list for method output_type
	47, // [47:58] is the sub-list for method input_type
	47, // [47:47] is the sub-list for extension type_name
	47, // [47:47] is the sub-list for extension extendee
	0,  // [0:47] is the sub-list for field type_name
}

func init() { file_backend_proto_init() }
func file_backend_proto_init() {
	if File_backend_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_backend_proto_rawDesc), len(file_backend_proto_rawDesc)),
			NumEnums:      5,
			NumMessages:   46,
			NumExtensions: 0,
			NumServices:   6,
		},
		GoTypes:           file_backend_proto_goTypes,
		DependencyIndexes: file_backend_proto_depIdxs,
		EnumInfos:         file_backend_proto_enumTypes,
		MessageInfos:      file_backend_proto_msgTypes,
	}.Build()
	File_backend_proto = out.File
	file_backend_proto_goTypes = nil
	file_backend_proto_depIdxs = nil
}
