// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.24.0
// 	protoc        v3.11.0
// source: controller.proto

package api

import (
	context "context"
	proto "github.com/golang/protobuf/proto"
	duration "github.com/golang/protobuf/ptypes/duration"
	empty "github.com/golang/protobuf/ptypes/empty"
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	field_mask "google.golang.org/genproto/protobuf/field_mask"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

type ReleaseType int32

const (
	ReleaseType_ANY    ReleaseType = 0
	ReleaseType_CODE   ReleaseType = 1
	ReleaseType_CONFIG ReleaseType = 2
)

// Enum value maps for ReleaseType.
var (
	ReleaseType_name = map[int32]string{
		0: "ANY",
		1: "CODE",
		2: "CONFIG",
	}
	ReleaseType_value = map[string]int32{
		"ANY":    0,
		"CODE":   1,
		"CONFIG": 2,
	}
)

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

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

func (ReleaseType) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[0].Descriptor()
}

func (ReleaseType) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[0]
}

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

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

type ScaleRequestState int32

const (
	ScaleRequestState_SCALE_PENDING   ScaleRequestState = 0
	ScaleRequestState_SCALE_CANCELLED ScaleRequestState = 1
	ScaleRequestState_SCALE_COMPLETE  ScaleRequestState = 2
)

// Enum value maps for ScaleRequestState.
var (
	ScaleRequestState_name = map[int32]string{
		0: "SCALE_PENDING",
		1: "SCALE_CANCELLED",
		2: "SCALE_COMPLETE",
	}
	ScaleRequestState_value = map[string]int32{
		"SCALE_PENDING":   0,
		"SCALE_CANCELLED": 1,
		"SCALE_COMPLETE":  2,
	}
)

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

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

func (ScaleRequestState) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[1].Descriptor()
}

func (ScaleRequestState) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[1]
}

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

// Deprecated: Use ScaleRequestState.Descriptor instead.
func (ScaleRequestState) EnumDescriptor() ([]byte, []int) {
	return file_controller_proto_rawDescGZIP(), []int{1}
}

type DeploymentStatus int32

const (
	DeploymentStatus_PENDING  DeploymentStatus = 0
	DeploymentStatus_FAILED   DeploymentStatus = 1
	DeploymentStatus_RUNNING  DeploymentStatus = 2
	DeploymentStatus_COMPLETE DeploymentStatus = 3
)

// Enum value maps for DeploymentStatus.
var (
	DeploymentStatus_name = map[int32]string{
		0: "PENDING",
		1: "FAILED",
		2: "RUNNING",
		3: "COMPLETE",
	}
	DeploymentStatus_value = map[string]int32{
		"PENDING":  0,
		"FAILED":   1,
		"RUNNING":  2,
		"COMPLETE": 3,
	}
)

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

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

func (DeploymentStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[2].Descriptor()
}

func (DeploymentStatus) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[2]
}

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

// Deprecated: Use DeploymentStatus.Descriptor instead.
func (DeploymentStatus) EnumDescriptor() ([]byte, []int) {
	return file_controller_proto_rawDescGZIP(), []int{2}
}

type StatusResponse_Code int32

const (
	StatusResponse_HEALTHY   StatusResponse_Code = 0
	StatusResponse_UNHEALTHY StatusResponse_Code = 1
)

// Enum value maps for StatusResponse_Code.
var (
	StatusResponse_Code_name = map[int32]string{
		0: "HEALTHY",
		1: "UNHEALTHY",
	}
	StatusResponse_Code_value = map[string]int32{
		"HEALTHY":   0,
		"UNHEALTHY": 1,
	}
)

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

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

func (StatusResponse_Code) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[3].Descriptor()
}

func (StatusResponse_Code) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[3]
}

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

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

type LabelFilter_Expression_Operator int32

const (
	// OP_IN matches if there is a label entry where the value is in the given
	// values for the given key
	LabelFilter_Expression_OP_IN LabelFilter_Expression_Operator = 0
	// OP_NOT_IN matches if there are no label entries where the value is in
	// the given values for the given key
	LabelFilter_Expression_OP_NOT_IN LabelFilter_Expression_Operator = 1
	// OP_EXISTS matches if there is a label entry with the given key (it is
	// an error to provide a value)
	LabelFilter_Expression_OP_EXISTS LabelFilter_Expression_Operator = 2
	// OP_NOT_EXISTS matches if there are no label entries for the given key
	// (it is an error to provide a value)
	LabelFilter_Expression_OP_NOT_EXISTS LabelFilter_Expression_Operator = 3
)

// Enum value maps for LabelFilter_Expression_Operator.
var (
	LabelFilter_Expression_Operator_name = map[int32]string{
		0: "OP_IN",
		1: "OP_NOT_IN",
		2: "OP_EXISTS",
		3: "OP_NOT_EXISTS",
	}
	LabelFilter_Expression_Operator_value = map[string]int32{
		"OP_IN":         0,
		"OP_NOT_IN":     1,
		"OP_EXISTS":     2,
		"OP_NOT_EXISTS": 3,
	}
)

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

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

func (LabelFilter_Expression_Operator) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[4].Descriptor()
}

func (LabelFilter_Expression_Operator) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[4]
}

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

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

type DeploymentEvent_JobState int32

const (
	DeploymentEvent_PENDING  DeploymentEvent_JobState = 0
	DeploymentEvent_BLOCKED  DeploymentEvent_JobState = 1
	DeploymentEvent_STARTING DeploymentEvent_JobState = 2
	DeploymentEvent_UP       DeploymentEvent_JobState = 3
	DeploymentEvent_STOPPING DeploymentEvent_JobState = 5
	DeploymentEvent_DOWN     DeploymentEvent_JobState = 6
	// CRASHED and FAILURE are no longer valid job states,
	// but we still need to handle them in case they are set by old
	// schedulers still using the legacy code.
	DeploymentEvent_CRASHED DeploymentEvent_JobState = 7
	DeploymentEvent_FAILED  DeploymentEvent_JobState = 8
)

// Enum value maps for DeploymentEvent_JobState.
var (
	DeploymentEvent_JobState_name = map[int32]string{
		0: "PENDING",
		1: "BLOCKED",
		2: "STARTING",
		3: "UP",
		5: "STOPPING",
		6: "DOWN",
		7: "CRASHED",
		8: "FAILED",
	}
	DeploymentEvent_JobState_value = map[string]int32{
		"PENDING":  0,
		"BLOCKED":  1,
		"STARTING": 2,
		"UP":       3,
		"STOPPING": 5,
		"DOWN":     6,
		"CRASHED":  7,
		"FAILED":   8,
	}
)

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

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

func (DeploymentEvent_JobState) Descriptor() protoreflect.EnumDescriptor {
	return file_controller_proto_enumTypes[5].Descriptor()
}

func (DeploymentEvent_JobState) Type() protoreflect.EnumType {
	return &file_controller_proto_enumTypes[5]
}

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

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

type StatusResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status  StatusResponse_Code `protobuf:"varint,1,opt,name=status,proto3,enum=flynn.api.v1.StatusResponse_Code" json:"status,omitempty"`
	Detail  []byte              `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"`
	Version string              `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
}

func (x *StatusResponse) Reset() {
	*x = StatusResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatusResponse) ProtoMessage() {}

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

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

func (x *StatusResponse) GetStatus() StatusResponse_Code {
	if x != nil {
		return x.Status
	}
	return StatusResponse_HEALTHY
}

func (x *StatusResponse) GetDetail() []byte {
	if x != nil {
		return x.Detail
	}
	return nil
}

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

type LabelFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// expressions are ANDed together.
	Expressions []*LabelFilter_Expression `protobuf:"bytes,1,rep,name=expressions,proto3" json:"expressions,omitempty"`
}

func (x *LabelFilter) Reset() {
	*x = LabelFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LabelFilter) ProtoMessage() {}

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

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

func (x *LabelFilter) GetExpressions() []*LabelFilter_Expression {
	if x != nil {
		return x.Expressions
	}
	return nil
}

type StreamAppsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of resources to return in the initial page.
	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Used for pagination. Must be a next_page_token returned from a previous response.
	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Specifies an optional list of resource names that should be looked up. The
	// list length must be smaller than page_size. This can be used to request a
	// known set of one or more resources and optionally receive updates about
	// them, and can also be used to retrieve a single resource.
	NameFilters []string `protobuf:"bytes,3,rep,name=name_filters,json=nameFilters,proto3" json:"name_filters,omitempty"`
	// filters are ORed
	LabelFilters []*LabelFilter `protobuf:"bytes,4,rep,name=label_filters,json=labelFilters,proto3" json:"label_filters,omitempty"`
	// When true, leaves the stream open and sends any updates to each resource
	// returned in the initial page until the stream is closed.
	StreamUpdates bool `protobuf:"varint,5,opt,name=stream_updates,json=streamUpdates,proto3" json:"stream_updates,omitempty"`
	// When true, leaves the stream open and sends newly created resources
	// matching the filters until the stream is closed. page_token must not be
	// set.
	StreamCreates bool `protobuf:"varint,6,opt,name=stream_creates,json=streamCreates,proto3" json:"stream_creates,omitempty"`
}

func (x *StreamAppsRequest) Reset() {
	*x = StreamAppsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamAppsRequest) ProtoMessage() {}

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

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

func (x *StreamAppsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *StreamAppsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *StreamAppsRequest) GetNameFilters() []string {
	if x != nil {
		return x.NameFilters
	}
	return nil
}

func (x *StreamAppsRequest) GetLabelFilters() []*LabelFilter {
	if x != nil {
		return x.LabelFilters
	}
	return nil
}

func (x *StreamAppsRequest) GetStreamUpdates() bool {
	if x != nil {
		return x.StreamUpdates
	}
	return false
}

func (x *StreamAppsRequest) GetStreamCreates() bool {
	if x != nil {
		return x.StreamCreates
	}
	return false
}

type StreamAppsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Apps []*App `protobuf:"bytes,1,rep,name=apps,proto3" json:"apps,omitempty"`
	// Set to true on the last response for the initial page.
	PageComplete  bool   `protobuf:"varint,2,opt,name=page_complete,json=pageComplete,proto3" json:"page_complete,omitempty"`
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *StreamAppsResponse) Reset() {
	*x = StreamAppsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamAppsResponse) ProtoMessage() {}

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

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

func (x *StreamAppsResponse) GetApps() []*App {
	if x != nil {
		return x.Apps
	}
	return nil
}

func (x *StreamAppsResponse) GetPageComplete() bool {
	if x != nil {
		return x.PageComplete
	}
	return false
}

func (x *StreamAppsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type StreamReleasesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of resources to return in the initial page.
	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Used for pagination. Must be a next_page_token returned from a previous response.
	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Specifies an optional list of resource names that should be looked up. The
	// list length must be smaller than page_size. This can be used to request a
	// known set of one or more resources and optionally receive updates about
	// them, and can also be used to retrieve a single resource. Parent resource
	// names may also be used to filter resources.
	NameFilters []string `protobuf:"bytes,3,rep,name=name_filters,json=nameFilters,proto3" json:"name_filters,omitempty"`
	// filters are ORed
	LabelFilters []*LabelFilter `protobuf:"bytes,4,rep,name=label_filters,json=labelFilters,proto3" json:"label_filters,omitempty"`
	// When true, leaves the stream open and sends any updates (i.e. resource
	// deletions) to each resource returned in the initial page until the stream
	// is closed.
	StreamUpdates bool `protobuf:"varint,5,opt,name=stream_updates,json=streamUpdates,proto3" json:"stream_updates,omitempty"`
	// When true, leaves the stream open and sends newly created resources
	// matching the filters until the stream is closed. page_token must not be
	// set.
	StreamCreates bool `protobuf:"varint,6,opt,name=stream_creates,json=streamCreates,proto3" json:"stream_creates,omitempty"`
}

func (x *StreamReleasesRequest) Reset() {
	*x = StreamReleasesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamReleasesRequest) ProtoMessage() {}

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

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

func (x *StreamReleasesRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *StreamReleasesRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *StreamReleasesRequest) GetNameFilters() []string {
	if x != nil {
		return x.NameFilters
	}
	return nil
}

func (x *StreamReleasesRequest) GetLabelFilters() []*LabelFilter {
	if x != nil {
		return x.LabelFilters
	}
	return nil
}

func (x *StreamReleasesRequest) GetStreamUpdates() bool {
	if x != nil {
		return x.StreamUpdates
	}
	return false
}

func (x *StreamReleasesRequest) GetStreamCreates() bool {
	if x != nil {
		return x.StreamCreates
	}
	return false
}

type StreamReleasesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Releases []*Release `protobuf:"bytes,1,rep,name=releases,proto3" json:"releases,omitempty"`
	// Set to true on the last response for the initial page.
	PageComplete  bool   `protobuf:"varint,2,opt,name=page_complete,json=pageComplete,proto3" json:"page_complete,omitempty"`
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *StreamReleasesResponse) Reset() {
	*x = StreamReleasesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamReleasesResponse) ProtoMessage() {}

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

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

func (x *StreamReleasesResponse) GetReleases() []*Release {
	if x != nil {
		return x.Releases
	}
	return nil
}

func (x *StreamReleasesResponse) GetPageComplete() bool {
	if x != nil {
		return x.PageComplete
	}
	return false
}

func (x *StreamReleasesResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type StreamScalesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of resources to return in the initial page.
	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Used for pagination. Must be a next_page_token returned from a previous response.
	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Specifies an optional list of resource names that should be looked up. The
	// list length must be smaller than page_size. This can be used to request a
	// known set of one or more resources and optionally receive updates about
	// them, and can also be used to retrieve a single resource. Parent resource
	// names may also be used to filter resources.
	NameFilters []string `protobuf:"bytes,3,rep,name=name_filters,json=nameFilters,proto3" json:"name_filters,omitempty"`
	// When set, only includes resources having one of the specified states
	StateFilters []ScaleRequestState `protobuf:"varint,4,rep,packed,name=state_filters,json=stateFilters,proto3,enum=flynn.api.v1.ScaleRequestState" json:"state_filters,omitempty"`
	// When true, leaves the stream open and sends any updates to each resource
	// returned in the initial page until the stream is closed.
	StreamUpdates bool `protobuf:"varint,5,opt,name=stream_updates,json=streamUpdates,proto3" json:"stream_updates,omitempty"`
	// When true, leaves the stream open and sends newly created resources
	// matching the filters until the stream is closed. page_token must not be
	// set.
	StreamCreates bool `protobuf:"varint,6,opt,name=stream_creates,json=streamCreates,proto3" json:"stream_creates,omitempty"`
}

func (x *StreamScalesRequest) Reset() {
	*x = StreamScalesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamScalesRequest) ProtoMessage() {}

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

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

func (x *StreamScalesRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *StreamScalesRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *StreamScalesRequest) GetNameFilters() []string {
	if x != nil {
		return x.NameFilters
	}
	return nil
}

func (x *StreamScalesRequest) GetStateFilters() []ScaleRequestState {
	if x != nil {
		return x.StateFilters
	}
	return nil
}

func (x *StreamScalesRequest) GetStreamUpdates() bool {
	if x != nil {
		return x.StreamUpdates
	}
	return false
}

func (x *StreamScalesRequest) GetStreamCreates() bool {
	if x != nil {
		return x.StreamCreates
	}
	return false
}

type StreamScalesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ScaleRequests []*ScaleRequest `protobuf:"bytes,1,rep,name=scale_requests,json=scaleRequests,proto3" json:"scale_requests,omitempty"`
	// Set to true on the last response for the initial page.
	PageComplete  bool   `protobuf:"varint,2,opt,name=page_complete,json=pageComplete,proto3" json:"page_complete,omitempty"`
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *StreamScalesResponse) Reset() {
	*x = StreamScalesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamScalesResponse) ProtoMessage() {}

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

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

func (x *StreamScalesResponse) GetScaleRequests() []*ScaleRequest {
	if x != nil {
		return x.ScaleRequests
	}
	return nil
}

func (x *StreamScalesResponse) GetPageComplete() bool {
	if x != nil {
		return x.PageComplete
	}
	return false
}

func (x *StreamScalesResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type StreamDeploymentsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of resources to return in the initial page.
	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// Used for pagination. Must be a next_page_token returned from a previous response.
	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// Specifies an optional list of resource names that should be looked up. The
	// list length must be smaller than page_size. This can be used to request a
	// known set of one or more resources and optionally receive updates about
	// them, and can also be used to retrieve a single resource. Parent resource
	// names may also be used to filter resources.
	NameFilters []string `protobuf:"bytes,3,rep,name=name_filters,json=nameFilters,proto3" json:"name_filters,omitempty"`
	// Specified an optional list of release types. If provided, only resources
	// with these release types will be returned.
	TypeFilters []ReleaseType `protobuf:"varint,4,rep,packed,name=type_filters,json=typeFilters,proto3,enum=flynn.api.v1.ReleaseType" json:"type_filters,omitempty"`
	// Specifies an optional list of statuses. If provided, only deployments
	// matching one of the given statuses will be returned.
	StatusFilters []DeploymentStatus `protobuf:"varint,6,rep,packed,name=status_filters,json=statusFilters,proto3,enum=flynn.api.v1.DeploymentStatus" json:"status_filters,omitempty"`
	// When true, leaves the stream open and sends any updates to each resource
	// returned in the initial page until the stream is closed.
	StreamUpdates bool `protobuf:"varint,7,opt,name=stream_updates,json=streamUpdates,proto3" json:"stream_updates,omitempty"`
	// When true, leaves the stream open and sends newly created resources
	// matching the filters until the stream is closed. page_token must not be
	// set.
	StreamCreates bool `protobuf:"varint,8,opt,name=stream_creates,json=streamCreates,proto3" json:"stream_creates,omitempty"`
}

func (x *StreamDeploymentsRequest) Reset() {
	*x = StreamDeploymentsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamDeploymentsRequest) ProtoMessage() {}

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

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

func (x *StreamDeploymentsRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *StreamDeploymentsRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *StreamDeploymentsRequest) GetNameFilters() []string {
	if x != nil {
		return x.NameFilters
	}
	return nil
}

func (x *StreamDeploymentsRequest) GetTypeFilters() []ReleaseType {
	if x != nil {
		return x.TypeFilters
	}
	return nil
}

func (x *StreamDeploymentsRequest) GetStatusFilters() []DeploymentStatus {
	if x != nil {
		return x.StatusFilters
	}
	return nil
}

func (x *StreamDeploymentsRequest) GetStreamUpdates() bool {
	if x != nil {
		return x.StreamUpdates
	}
	return false
}

func (x *StreamDeploymentsRequest) GetStreamCreates() bool {
	if x != nil {
		return x.StreamCreates
	}
	return false
}

type StreamDeploymentsResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Deployments []*ExpandedDeployment `protobuf:"bytes,1,rep,name=deployments,proto3" json:"deployments,omitempty"`
	// Set to true on the last response for the initial page.
	PageComplete  bool   `protobuf:"varint,2,opt,name=page_complete,json=pageComplete,proto3" json:"page_complete,omitempty"`
	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}

func (x *StreamDeploymentsResponse) Reset() {
	*x = StreamDeploymentsResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StreamDeploymentsResponse) ProtoMessage() {}

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

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

func (x *StreamDeploymentsResponse) GetDeployments() []*ExpandedDeployment {
	if x != nil {
		return x.Deployments
	}
	return nil
}

func (x *StreamDeploymentsResponse) GetPageComplete() bool {
	if x != nil {
		return x.PageComplete
	}
	return false
}

func (x *StreamDeploymentsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type UpdateAppRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	App        *App                  `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"`
	UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
}

func (x *UpdateAppRequest) Reset() {
	*x = UpdateAppRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UpdateAppRequest) ProtoMessage() {}

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

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

func (x *UpdateAppRequest) GetApp() *App {
	if x != nil {
		return x.App
	}
	return nil
}

func (x *UpdateAppRequest) GetUpdateMask() *field_mask.FieldMask {
	if x != nil {
		return x.UpdateMask
	}
	return nil
}

type CreateScaleRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// parent = "apps/APP_ID/releases/RELEASE_ID"
	Parent    string                            `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	Processes map[string]int32                  `protobuf:"bytes,2,rep,name=processes,proto3" json:"processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	Tags      map[string]*DeploymentProcessTags `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *CreateScaleRequest) Reset() {
	*x = CreateScaleRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CreateScaleRequest) ProtoMessage() {}

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

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

func (x *CreateScaleRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateScaleRequest) GetProcesses() map[string]int32 {
	if x != nil {
		return x.Processes
	}
	return nil
}

func (x *CreateScaleRequest) GetTags() map[string]*DeploymentProcessTags {
	if x != nil {
		return x.Tags
	}
	return nil
}

type CreateReleaseRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// parent = "apps/APP_ID"
	Parent    string   `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	Release   *Release `protobuf:"bytes,2,opt,name=release,proto3" json:"release,omitempty"`
	RequestId string   `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
}

func (x *CreateReleaseRequest) Reset() {
	*x = CreateReleaseRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CreateReleaseRequest) ProtoMessage() {}

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

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

func (x *CreateReleaseRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateReleaseRequest) GetRelease() *Release {
	if x != nil {
		return x.Release
	}
	return nil
}

func (x *CreateReleaseRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

type CreateDeploymentRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// parent = "apps/APP_ID/releases/RELEASE_ID"
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// optional scale request
	ScaleRequest *CreateScaleRequest `protobuf:"bytes,2,opt,name=scale_request,json=scaleRequest,proto3" json:"scale_request,omitempty"`
}

func (x *CreateDeploymentRequest) Reset() {
	*x = CreateDeploymentRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CreateDeploymentRequest) ProtoMessage() {}

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

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

func (x *CreateDeploymentRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *CreateDeploymentRequest) GetScaleRequest() *CreateScaleRequest {
	if x != nil {
		return x.ScaleRequest
	}
	return nil
}

type App struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// name = "apps/APP_ID"
	Name          string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	DisplayName   string            `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	Labels        map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	DeployTimeout int32             `protobuf:"varint,4,opt,name=deploy_timeout,json=deployTimeout,proto3" json:"deploy_timeout,omitempty"`
	Strategy      string            `protobuf:"bytes,5,opt,name=strategy,proto3" json:"strategy,omitempty"`
	// release = Release.name
	Release    string               `protobuf:"bytes,6,opt,name=release,proto3" json:"release,omitempty"`
	CreateTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	UpdateTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	DeleteTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
}

func (x *App) Reset() {
	*x = App{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*App) ProtoMessage() {}

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

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

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

func (x *App) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *App) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *App) GetDeployTimeout() int32 {
	if x != nil {
		return x.DeployTimeout
	}
	return 0
}

func (x *App) GetStrategy() string {
	if x != nil {
		return x.Strategy
	}
	return ""
}

func (x *App) GetRelease() string {
	if x != nil {
		return x.Release
	}
	return ""
}

func (x *App) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *App) GetUpdateTime() *timestamp.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *App) GetDeleteTime() *timestamp.Timestamp {
	if x != nil {
		return x.DeleteTime
	}
	return nil
}

// See github.com/flynn/flynn/host/types Mount
type HostHealthCheck struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Type is one of tcp, http, https
	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	// Interval is the time to wait between checks after the service has been
	// marked as up. It defaults to two seconds.
	Interval *duration.Duration `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"`
	// Threshold is the number of consecutive checks of the same status before
	// a service will be marked as up or down after coming up for the first
	// time. It defaults to 2.
	Threshold int32 `protobuf:"varint,4,opt,name=threshold,proto3" json:"threshold,omitempty"`
	// If KillDown is true, the job will be killed if the service goes down (or
	// does not come up)
	KillDown bool `protobuf:"varint,5,opt,name=kill_down,json=killDown,proto3" json:"kill_down,omitempty"`
	// StartTimeout is the maximum duration that a service can take to come up
	// for the first time if KillDown is true. It defaults to ten seconds.
	StartTimeout *duration.Duration `protobuf:"bytes,6,opt,name=start_timeout,json=startTimeout,proto3" json:"start_timeout,omitempty"`
	// Extra optional config fields for http/https checks
	Path   string `protobuf:"bytes,7,opt,name=path,proto3" json:"path,omitempty"`
	Host   string `protobuf:"bytes,8,opt,name=host,proto3" json:"host,omitempty"`
	Match  string `protobuf:"bytes,9,opt,name=match,proto3" json:"match,omitempty"`
	Status int32  `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"`
}

func (x *HostHealthCheck) Reset() {
	*x = HostHealthCheck{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HostHealthCheck) ProtoMessage() {}

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

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

func (x *HostHealthCheck) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *HostHealthCheck) GetInterval() *duration.Duration {
	if x != nil {
		return x.Interval
	}
	return nil
}

func (x *HostHealthCheck) GetThreshold() int32 {
	if x != nil {
		return x.Threshold
	}
	return 0
}

func (x *HostHealthCheck) GetKillDown() bool {
	if x != nil {
		return x.KillDown
	}
	return false
}

func (x *HostHealthCheck) GetStartTimeout() *duration.Duration {
	if x != nil {
		return x.StartTimeout
	}
	return nil
}

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

func (x *HostHealthCheck) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *HostHealthCheck) GetMatch() string {
	if x != nil {
		return x.Match
	}
	return ""
}

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

// See github.com/flynn/flynn/host/types Mount
type HostService struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Create the service in service discovery
	Create bool             `protobuf:"varint,2,opt,name=create,proto3" json:"create,omitempty"`
	Check  *HostHealthCheck `protobuf:"bytes,3,opt,name=check,proto3" json:"check,omitempty"`
}

func (x *HostService) Reset() {
	*x = HostService{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HostService) ProtoMessage() {}

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

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

func (x *HostService) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *HostService) GetCreate() bool {
	if x != nil {
		return x.Create
	}
	return false
}

func (x *HostService) GetCheck() *HostHealthCheck {
	if x != nil {
		return x.Check
	}
	return nil
}

type Port struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Port    int32        `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	Proto   string       `protobuf:"bytes,2,opt,name=proto,proto3" json:"proto,omitempty"`
	Service *HostService `protobuf:"bytes,3,opt,name=service,proto3" json:"service,omitempty"`
}

func (x *Port) Reset() {
	*x = Port{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Port) ProtoMessage() {}

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

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

func (x *Port) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Port) GetProto() string {
	if x != nil {
		return x.Proto
	}
	return ""
}

func (x *Port) GetService() *HostService {
	if x != nil {
		return x.Service
	}
	return nil
}

type VolumeReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path         string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	DeleteOnStop bool   `protobuf:"varint,2,opt,name=delete_on_stop,json=deleteOnStop,proto3" json:"delete_on_stop,omitempty"`
}

func (x *VolumeReq) Reset() {
	*x = VolumeReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*VolumeReq) ProtoMessage() {}

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

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

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

func (x *VolumeReq) GetDeleteOnStop() bool {
	if x != nil {
		return x.DeleteOnStop
	}
	return false
}

// See github.com/flynn/flynn/host/resource Spec
type HostResourceSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Request, if set, is the amount of resource a job expects to consume,
	// so the job should only be placed on a host with at least this amount
	// of resource available, and once scheduled this amount of resource
	// should then be unavailable on the given host.
	Request int64 `protobuf:"varint,1,opt,name=request,proto3" json:"request,omitempty"`
	// Limit, if set, is an upper limit on the amount of resource a job can
	// consume, the outcome of hitting this limit being implementation
	// defined (e.g. a system error, throttling, catchable / uncatchable
	// signals etc.)
	Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
}

func (x *HostResourceSpec) Reset() {
	*x = HostResourceSpec{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HostResourceSpec) ProtoMessage() {}

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

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

func (x *HostResourceSpec) GetRequest() int64 {
	if x != nil {
		return x.Request
	}
	return 0
}

func (x *HostResourceSpec) GetLimit() int64 {
	if x != nil {
		return x.Limit
	}
	return 0
}

// See github.com/flynn/flynn/host/types Mount
type HostMount struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Location  string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
	Target    string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
	Writeable bool   `protobuf:"varint,3,opt,name=writeable,proto3" json:"writeable,omitempty"`
	Device    string `protobuf:"bytes,4,opt,name=device,proto3" json:"device,omitempty"`
	Data      string `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"`
	Flags     int32  `protobuf:"varint,6,opt,name=flags,proto3" json:"flags,omitempty"`
}

func (x *HostMount) Reset() {
	*x = HostMount{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HostMount) ProtoMessage() {}

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

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

func (x *HostMount) GetLocation() string {
	if x != nil {
		return x.Location
	}
	return ""
}

func (x *HostMount) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *HostMount) GetWriteable() bool {
	if x != nil {
		return x.Writeable
	}
	return false
}

func (x *HostMount) GetDevice() string {
	if x != nil {
		return x.Device
	}
	return ""
}

func (x *HostMount) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

func (x *HostMount) GetFlags() int32 {
	if x != nil {
		return x.Flags
	}
	return 0
}

// See github.com/opencontainers/runc/libcontainer/configs Device
type LibContainerDevice struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Device type, block, char, etc.
	Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	// Path to the device.
	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
	// Major is the device's major number.
	Major int64 `protobuf:"varint,3,opt,name=major,proto3" json:"major,omitempty"`
	// Minor is the device's minor number.
	Minor int64 `protobuf:"varint,4,opt,name=minor,proto3" json:"minor,omitempty"`
	// Cgroup permissions format, rwm.
	Permissions string `protobuf:"bytes,5,opt,name=permissions,proto3" json:"permissions,omitempty"`
	// FileMode permission bits for the device.
	FileMode uint32 `protobuf:"varint,6,opt,name=file_mode,json=fileMode,proto3" json:"file_mode,omitempty"`
	// Uid of the device.
	Uid uint32 `protobuf:"varint,7,opt,name=uid,proto3" json:"uid,omitempty"`
	// Gid of the device.
	Gid uint32 `protobuf:"varint,8,opt,name=gid,proto3" json:"gid,omitempty"`
	// Write the file to the allowed list
	Allow bool `protobuf:"varint,9,opt,name=allow,proto3" json:"allow,omitempty"`
}

func (x *LibContainerDevice) Reset() {
	*x = LibContainerDevice{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LibContainerDevice) ProtoMessage() {}

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

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

func (x *LibContainerDevice) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

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

func (x *LibContainerDevice) GetMajor() int64 {
	if x != nil {
		return x.Major
	}
	return 0
}

func (x *LibContainerDevice) GetMinor() int64 {
	if x != nil {
		return x.Minor
	}
	return 0
}

func (x *LibContainerDevice) GetPermissions() string {
	if x != nil {
		return x.Permissions
	}
	return ""
}

func (x *LibContainerDevice) GetFileMode() uint32 {
	if x != nil {
		return x.FileMode
	}
	return 0
}

func (x *LibContainerDevice) GetUid() uint32 {
	if x != nil {
		return x.Uid
	}
	return 0
}

func (x *LibContainerDevice) GetGid() uint32 {
	if x != nil {
		return x.Gid
	}
	return 0
}

func (x *LibContainerDevice) GetAllow() bool {
	if x != nil {
		return x.Allow
	}
	return false
}

type ProcessType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Args              []string                     `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
	Env               map[string]string            `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Ports             []*Port                      `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"`
	Volumes           []*VolumeReq                 `protobuf:"bytes,4,rep,name=volumes,proto3" json:"volumes,omitempty"`
	Omni              bool                         `protobuf:"varint,5,opt,name=omni,proto3" json:"omni,omitempty"`
	HostNetwork       bool                         `protobuf:"varint,6,opt,name=host_network,json=hostNetwork,proto3" json:"host_network,omitempty"`
	HostPidNamespace  bool                         `protobuf:"varint,7,opt,name=host_pid_namespace,json=hostPidNamespace,proto3" json:"host_pid_namespace,omitempty"`
	Service           string                       `protobuf:"bytes,8,opt,name=service,proto3" json:"service,omitempty"`
	Resurrect         bool                         `protobuf:"varint,9,opt,name=resurrect,proto3" json:"resurrect,omitempty"`
	Resources         map[string]*HostResourceSpec `protobuf:"bytes,10,rep,name=resources,proto3" json:"resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Mounts            []*HostMount                 `protobuf:"bytes,11,rep,name=mounts,proto3" json:"mounts,omitempty"`
	LinuxCapabilities []string                     `protobuf:"bytes,12,rep,name=linux_capabilities,json=linuxCapabilities,proto3" json:"linux_capabilities,omitempty"`
	AllowedDevices    []*LibContainerDevice        `protobuf:"bytes,13,rep,name=allowed_devices,json=allowedDevices,proto3" json:"allowed_devices,omitempty"`
	WriteableCgroups  bool                         `protobuf:"varint,14,opt,name=writeable_cgroups,json=writeableCgroups,proto3" json:"writeable_cgroups,omitempty"`
}

func (x *ProcessType) Reset() {
	*x = ProcessType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ProcessType) ProtoMessage() {}

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

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

func (x *ProcessType) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

func (x *ProcessType) GetEnv() map[string]string {
	if x != nil {
		return x.Env
	}
	return nil
}

func (x *ProcessType) GetPorts() []*Port {
	if x != nil {
		return x.Ports
	}
	return nil
}

func (x *ProcessType) GetVolumes() []*VolumeReq {
	if x != nil {
		return x.Volumes
	}
	return nil
}

func (x *ProcessType) GetOmni() bool {
	if x != nil {
		return x.Omni
	}
	return false
}

func (x *ProcessType) GetHostNetwork() bool {
	if x != nil {
		return x.HostNetwork
	}
	return false
}

func (x *ProcessType) GetHostPidNamespace() bool {
	if x != nil {
		return x.HostPidNamespace
	}
	return false
}

func (x *ProcessType) GetService() string {
	if x != nil {
		return x.Service
	}
	return ""
}

func (x *ProcessType) GetResurrect() bool {
	if x != nil {
		return x.Resurrect
	}
	return false
}

func (x *ProcessType) GetResources() map[string]*HostResourceSpec {
	if x != nil {
		return x.Resources
	}
	return nil
}

func (x *ProcessType) GetMounts() []*HostMount {
	if x != nil {
		return x.Mounts
	}
	return nil
}

func (x *ProcessType) GetLinuxCapabilities() []string {
	if x != nil {
		return x.LinuxCapabilities
	}
	return nil
}

func (x *ProcessType) GetAllowedDevices() []*LibContainerDevice {
	if x != nil {
		return x.AllowedDevices
	}
	return nil
}

func (x *ProcessType) GetWriteableCgroups() bool {
	if x != nil {
		return x.WriteableCgroups
	}
	return false
}

type Release struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// name = "apps/APP_ID/releases/RELEASE_ID"
	Name       string                  `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Artifacts  []string                `protobuf:"bytes,3,rep,name=artifacts,proto3" json:"artifacts,omitempty"`
	Env        map[string]string       `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Labels     map[string]string       `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Processes  map[string]*ProcessType `protobuf:"bytes,6,rep,name=processes,proto3" json:"processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Type       ReleaseType             `protobuf:"varint,7,opt,name=type,proto3,enum=flynn.api.v1.ReleaseType" json:"type,omitempty"`
	CreateTime *timestamp.Timestamp    `protobuf:"bytes,8,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	DeleteTime *timestamp.Timestamp    `protobuf:"bytes,9,opt,name=delete_time,json=deleteTime,proto3" json:"delete_time,omitempty"`
}

func (x *Release) Reset() {
	*x = Release{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Release) ProtoMessage() {}

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

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

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

func (x *Release) GetArtifacts() []string {
	if x != nil {
		return x.Artifacts
	}
	return nil
}

func (x *Release) GetEnv() map[string]string {
	if x != nil {
		return x.Env
	}
	return nil
}

func (x *Release) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Release) GetProcesses() map[string]*ProcessType {
	if x != nil {
		return x.Processes
	}
	return nil
}

func (x *Release) GetType() ReleaseType {
	if x != nil {
		return x.Type
	}
	return ReleaseType_ANY
}

func (x *Release) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Release) GetDeleteTime() *timestamp.Timestamp {
	if x != nil {
		return x.DeleteTime
	}
	return nil
}

type ScaleRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// parent = "apps/APP_ID/releases/RELEASE_ID"
	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	// name = "apps/APP_ID/releases/RELEASE_ID/scales/SCALE_REQUEST_ID"
	Name         string                            `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	State        ScaleRequestState                 `protobuf:"varint,3,opt,name=state,proto3,enum=flynn.api.v1.ScaleRequestState" json:"state,omitempty"`
	OldProcesses map[string]int32                  `protobuf:"bytes,4,rep,name=old_processes,json=oldProcesses,proto3" json:"old_processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	NewProcesses map[string]int32                  `protobuf:"bytes,5,rep,name=new_processes,json=newProcesses,proto3" json:"new_processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	OldTags      map[string]*DeploymentProcessTags `protobuf:"bytes,6,rep,name=old_tags,json=oldTags,proto3" json:"old_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	NewTags      map[string]*DeploymentProcessTags `protobuf:"bytes,7,rep,name=new_tags,json=newTags,proto3" json:"new_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	CreateTime   *timestamp.Timestamp              `protobuf:"bytes,8,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	UpdateTime   *timestamp.Timestamp              `protobuf:"bytes,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
}

func (x *ScaleRequest) Reset() {
	*x = ScaleRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ScaleRequest) ProtoMessage() {}

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

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

func (x *ScaleRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

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

func (x *ScaleRequest) GetState() ScaleRequestState {
	if x != nil {
		return x.State
	}
	return ScaleRequestState_SCALE_PENDING
}

func (x *ScaleRequest) GetOldProcesses() map[string]int32 {
	if x != nil {
		return x.OldProcesses
	}
	return nil
}

func (x *ScaleRequest) GetNewProcesses() map[string]int32 {
	if x != nil {
		return x.NewProcesses
	}
	return nil
}

func (x *ScaleRequest) GetOldTags() map[string]*DeploymentProcessTags {
	if x != nil {
		return x.OldTags
	}
	return nil
}

func (x *ScaleRequest) GetNewTags() map[string]*DeploymentProcessTags {
	if x != nil {
		return x.NewTags
	}
	return nil
}

func (x *ScaleRequest) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *ScaleRequest) GetUpdateTime() *timestamp.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

type DeploymentProcessTags struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *DeploymentProcessTags) Reset() {
	*x = DeploymentProcessTags{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeploymentProcessTags) ProtoMessage() {}

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

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

func (x *DeploymentProcessTags) GetTags() map[string]string {
	if x != nil {
		return x.Tags
	}
	return nil
}

type ExpandedDeployment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// name = "apps/APP_ID/deployments/DEPLOYMENT_ID"
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// old_release = Release.name
	OldRelease *Release `protobuf:"bytes,3,opt,name=old_release,json=oldRelease,proto3" json:"old_release,omitempty"`
	// new_release = Release.name
	NewRelease    *Release                          `protobuf:"bytes,4,opt,name=new_release,json=newRelease,proto3" json:"new_release,omitempty"`
	Type          ReleaseType                       `protobuf:"varint,5,opt,name=type,proto3,enum=flynn.api.v1.ReleaseType" json:"type,omitempty"`
	Strategy      string                            `protobuf:"bytes,6,opt,name=strategy,proto3" json:"strategy,omitempty"`
	Status        DeploymentStatus                  `protobuf:"varint,7,opt,name=status,proto3,enum=flynn.api.v1.DeploymentStatus" json:"status,omitempty"`
	Processes     map[string]int32                  `protobuf:"bytes,8,rep,name=processes,proto3" json:"processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	Tags          map[string]*DeploymentProcessTags `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	DeployTimeout int32                             `protobuf:"varint,10,opt,name=deploy_timeout,json=deployTimeout,proto3" json:"deploy_timeout,omitempty"`
	CreateTime    *timestamp.Timestamp              `protobuf:"bytes,11,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	ExpireTime    *timestamp.Timestamp              `protobuf:"bytes,12,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
	EndTime       *timestamp.Timestamp              `protobuf:"bytes,13,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

func (x *ExpandedDeployment) Reset() {
	*x = ExpandedDeployment{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ExpandedDeployment) ProtoMessage() {}

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

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

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

func (x *ExpandedDeployment) GetOldRelease() *Release {
	if x != nil {
		return x.OldRelease
	}
	return nil
}

func (x *ExpandedDeployment) GetNewRelease() *Release {
	if x != nil {
		return x.NewRelease
	}
	return nil
}

func (x *ExpandedDeployment) GetType() ReleaseType {
	if x != nil {
		return x.Type
	}
	return ReleaseType_ANY
}

func (x *ExpandedDeployment) GetStrategy() string {
	if x != nil {
		return x.Strategy
	}
	return ""
}

func (x *ExpandedDeployment) GetStatus() DeploymentStatus {
	if x != nil {
		return x.Status
	}
	return DeploymentStatus_PENDING
}

func (x *ExpandedDeployment) GetProcesses() map[string]int32 {
	if x != nil {
		return x.Processes
	}
	return nil
}

func (x *ExpandedDeployment) GetTags() map[string]*DeploymentProcessTags {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *ExpandedDeployment) GetDeployTimeout() int32 {
	if x != nil {
		return x.DeployTimeout
	}
	return 0
}

func (x *ExpandedDeployment) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *ExpandedDeployment) GetExpireTime() *timestamp.Timestamp {
	if x != nil {
		return x.ExpireTime
	}
	return nil
}

func (x *ExpandedDeployment) GetEndTime() *timestamp.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

type DeploymentEvent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// parent = "apps/APP_ID/deployments/DEPLOYMENT_ID"
	Parent     string                   `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	JobType    string                   `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"`
	JobState   DeploymentEvent_JobState `protobuf:"varint,3,opt,name=job_state,json=jobState,proto3,enum=flynn.api.v1.DeploymentEvent_JobState" json:"job_state,omitempty"`
	Error      string                   `protobuf:"bytes,4,opt,name=Error,proto3" json:"Error,omitempty"`
	CreateTime *timestamp.Timestamp     `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
}

func (x *DeploymentEvent) Reset() {
	*x = DeploymentEvent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeploymentEvent) ProtoMessage() {}

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

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

func (x *DeploymentEvent) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *DeploymentEvent) GetJobType() string {
	if x != nil {
		return x.JobType
	}
	return ""
}

func (x *DeploymentEvent) GetJobState() DeploymentEvent_JobState {
	if x != nil {
		return x.JobState
	}
	return DeploymentEvent_PENDING
}

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

func (x *DeploymentEvent) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

type SignedData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data      []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
}

func (x *SignedData) Reset() {
	*x = SignedData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SignedData) ProtoMessage() {}

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

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

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

func (x *SignedData) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

type AccessToken struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClientId   string               `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	UserId     string               `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	UserEmail  string               `protobuf:"bytes,3,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
	IssueTime  *timestamp.Timestamp `protobuf:"bytes,4,opt,name=issue_time,json=issueTime,proto3" json:"issue_time,omitempty"`
	ExpireTime *timestamp.Timestamp `protobuf:"bytes,5,opt,name=expire_time,json=expireTime,proto3" json:"expire_time,omitempty"`
}

func (x *AccessToken) Reset() {
	*x = AccessToken{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AccessToken) ProtoMessage() {}

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

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

func (x *AccessToken) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *AccessToken) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AccessToken) GetUserEmail() string {
	if x != nil {
		return x.UserEmail
	}
	return ""
}

func (x *AccessToken) GetIssueTime() *timestamp.Timestamp {
	if x != nil {
		return x.IssueTime
	}
	return nil
}

func (x *AccessToken) GetExpireTime() *timestamp.Timestamp {
	if x != nil {
		return x.ExpireTime
	}
	return nil
}

type LabelFilter_Expression struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key    string                          `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Op     LabelFilter_Expression_Operator `protobuf:"varint,2,opt,name=op,proto3,enum=flynn.api.v1.LabelFilter_Expression_Operator" json:"op,omitempty"`
	Values []string                        `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
}

func (x *LabelFilter_Expression) Reset() {
	*x = LabelFilter_Expression{}
	if protoimpl.UnsafeEnabled {
		mi := &file_controller_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LabelFilter_Expression) ProtoMessage() {}

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

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

func (x *LabelFilter_Expression) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *LabelFilter_Expression) GetOp() LabelFilter_Expression_Operator {
	if x != nil {
		return x.Op
	}
	return LabelFilter_Expression_OP_IN
}

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

var File_controller_proto protoreflect.FileDescriptor

var file_controller_proto_rawDesc = []byte{
	0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x0c, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0xa1, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16,
	0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
	0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x22, 0x22, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c,
	0x54, 0x48, 0x59, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54,
	0x48, 0x59, 0x10, 0x01, 0x22, 0x95, 0x02, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
	0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xbd, 0x01, 0x0a,
	0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3d, 0x0a,
	0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
	0x12, 0x09, 0x0a, 0x05, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4f,
	0x50, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50,
	0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x5f,
	0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x22, 0x80, 0x02, 0x0a,
	0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
	0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21,
	0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x52, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x22,
	0x88, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x70, 0x70, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x61, 0x70, 0x70, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x52, 0x04, 0x61, 0x70, 0x70, 0x73, 0x12, 0x23, 0x0a,
	0x0d, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
	0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x02, 0x0a, 0x15, 0x53,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79,
	0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x73, 0x22, 0x98, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6c, 0x65,
	0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x08,
	0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12,
	0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x70,
	0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67,
	0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e,
	0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x88, 0x02, 0x0a,
	0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x66, 0x6c, 0x79,
	0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x61,
	0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73,
	0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x41, 0x0a, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70,
	0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65,
	0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
	0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x22, 0xcc, 0x02, 0x0a, 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x70, 0x6c, 0x6f,
	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a,
	0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
	0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,
	0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0c,
	0x74, 0x79, 0x70, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x74,
	0x79, 0x70, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x22,
	0xac, 0x01, 0x0a, 0x19, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a,
	0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
	0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
	0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x67, 0x65, 0x43, 0x6f,
	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70,
	0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x74,
	0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x23, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
	0x70, 0x70, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x4d, 0x61, 0x73, 0x6b, 0x22, 0xd7, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
	0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6c,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x65, 0x73, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61,
	0x67, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x5c, 0x0a, 0x09, 0x54, 0x61, 0x67, 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,
	0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54,
	0x61, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7e,
	0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2f,
	0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
	0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12,
	0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x78,
	0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
	0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x12, 0x45, 0x0a, 0x0d, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63,
	0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x73, 0x63, 0x61, 0x6c,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc2, 0x03, 0x0a, 0x03, 0x41, 0x70, 0x70,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c,
	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x25,
	0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x69,
	0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
	0x79, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0xad, 0x02,
	0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63,
	0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
	0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x69,
	0x6c, 0x6c, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6b,
	0x69, 0x6c, 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68,
	0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x7d, 0x0a,
	0x0b, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c,
	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x65, 0x0a, 0x04,
	0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x33,
	0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48,
	0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71,
	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x70, 0x61, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f,
	0x6e, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x4f, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x22, 0x42, 0x0a, 0x10, 0x48, 0x6f,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18,
	0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x9f,
	0x01, 0x0a, 0x09, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
	0x12, 0x1c, 0x0a, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x09, 0x77, 0x72, 0x69, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16,
	0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c,
	0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
	0x22, 0xe1, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x62, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70,
	0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12,
	0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x70,
	0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a,
	0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69,
	0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
	0x67, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61,
	0x6c, 0x6c, 0x6f, 0x77, 0x22, 0x87, 0x06, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x34, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65,
	0x2e, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x28,
	0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x72,
	0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75,
	0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52,
	0x65, 0x71, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6f,
	0x6d, 0x6e, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x6f, 0x6d, 0x6e, 0x69, 0x12,
	0x21, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10,
	0x68, 0x6f, 0x73, 0x74, 0x50, 0x69, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65,
	0x73, 0x75, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72,
	0x65, 0x73, 0x75, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x66, 0x6c,
	0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65,
	0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73,
	0x12, 0x2f, 0x0a, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x17, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x48, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x73, 0x12, 0x2d, 0x0a, 0x12, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62,
	0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x6c,
	0x69, 0x6e, 0x75, 0x78, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73,
	0x12, 0x49, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x62, 0x43, 0x6f, 0x6e, 0x74,
	0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0e, 0x61, 0x6c, 0x6c,
	0x6f, 0x77, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x77,
	0x72, 0x69, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x77, 0x72, 0x69, 0x74, 0x65, 0x61, 0x62, 0x6c,
	0x65, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x36, 0x0a, 0x08, 0x45, 0x6e, 0x76, 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,
	0x1a, 0x5c, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53,
	0x70, 0x65, 0x63, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe1,
	0x04, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c,
	0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x03,
	0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65,
	0x2e, 0x45, 0x6e, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x39,
	0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x6c, 0x65, 0x61, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x70, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x66,
	0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65,
	0x61, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x2d, 0x0a,
	0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x66, 0x6c,
	0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61,
	0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0b,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x36, 0x0a, 0x08, 0x45, 0x6e, 0x76, 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, 0x1a, 0x39,
	0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x1a, 0x57, 0x0a, 0x0e, 0x50, 0x72, 0x6f,
	0x63, 0x65, 0x73, 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, 0x2f, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x66,
	0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0xdd, 0x06, 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
	0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
	0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61,
	0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x6c, 0x64, 0x50, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6f, 0x6c, 0x64,
	0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x6e, 0x65, 0x77,
	0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2c, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x65, 0x77,
	0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
	0x6e, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x08,
	0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63,
	0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x6c, 0x64, 0x54, 0x61,
	0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x6c, 0x64, 0x54, 0x61, 0x67, 0x73,
	0x12, 0x42, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4e,
	0x65, 0x77, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6e, 0x65, 0x77,
	0x54, 0x61, 0x67, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x3f,
	0x0a, 0x11, 0x4f, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x3f, 0x0a, 0x11, 0x4e, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x1a, 0x5f, 0x0a, 0x0c, 0x4f, 0x6c, 0x64, 0x54, 0x61, 0x67, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65,
	0x73, 0x73, 0x54, 0x61, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x1a, 0x5f, 0x0a, 0x0c, 0x4e, 0x65, 0x77, 0x54, 0x61, 0x67, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0x93, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
	0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x73, 0x12, 0x41, 0x0a, 0x04,
	0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x66, 0x6c, 0x79,
	0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
	0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x73, 0x2e,
	0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a,
	0x37, 0x0a, 0x09, 0x54, 0x61, 0x67, 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, 0x9e, 0x06, 0x0a, 0x12, 0x45, 0x78, 0x70,
	0x61, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61,
	0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52,
	0x0a, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6e,
	0x65, 0x77, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x52, 0x65, 0x6c, 0x65,
	0x61, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x19, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x36,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65,
	0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f,
	0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x64,
	0x65, 0x70, 0x6c, 0x6f, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3b, 0x0a, 0x0b,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70,
	0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69,
	0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x3c, 0x0a,
	0x0e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x09, 0x54,
	0x61, 0x67, 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, 0x39, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d,
	0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x73, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc9, 0x02, 0x0a, 0x0f, 0x44, 0x65,
	0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x43, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6a, 0x6f, 0x62,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x0b, 0x63,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10,
	0x00, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c,
	0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02,
	0x55, 0x50, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47,
	0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07,
	0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49,
	0x4c, 0x45, 0x44, 0x10, 0x08, 0x22, 0x3e, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x44,
	0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x75,
	0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x69, 0x73,
	0x73, 0x75, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x69, 0x73, 0x73, 0x75,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x2a, 0x2c, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f,
	0x44, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x02,
	0x2a, 0x4f, 0x0a, 0x11, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x50,
	0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x43, 0x41, 0x4c,
	0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a,
	0x0e, 0x53, 0x43, 0x41, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10,
	0x02, 0x2a, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
	0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b,
	0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x43,
	0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x03, 0x32, 0x84, 0x06, 0x0a, 0x0a, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x66, 0x6c, 0x79,
	0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x41, 0x70, 0x70, 0x73, 0x12, 0x1f, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x70, 0x70, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x70, 0x70,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5f, 0x0a,
	0x0e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x12,
	0x23, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73,
	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x59,
	0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x12, 0x21,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x11, 0x53, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26,
	0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
	0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x70, 0x6c,
	0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70,
	0x12, 0x1e, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x11, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x41, 0x70, 0x70, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
	0x63, 0x61, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65,
	0x6c, 0x65, 0x61, 0x73, 0x65, 0x12, 0x22, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61,
	0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x66, 0x6c, 0x79, 0x6e,
	0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65,
	0x22, 0x00, 0x12, 0x5c, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c,
	0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x2e, 0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c,
	0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
	0x66, 0x6c, 0x79, 0x6e, 0x6e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70,
	0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x00, 0x30, 0x01,
	0x42, 0x05, 0x5a, 0x03, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_controller_proto_rawDescOnce sync.Once
	file_controller_proto_rawDescData = file_controller_proto_rawDesc
)

func file_controller_proto_rawDescGZIP() []byte {
	file_controller_proto_rawDescOnce.Do(func() {
		file_controller_proto_rawDescData = protoimpl.X.CompressGZIP(file_controller_proto_rawDescData)
	})
	return file_controller_proto_rawDescData
}

var file_controller_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_controller_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_controller_proto_goTypes = []interface{}{
	(ReleaseType)(0),                     // 0: flynn.api.v1.ReleaseType
	(ScaleRequestState)(0),               // 1: flynn.api.v1.ScaleRequestState
	(DeploymentStatus)(0),                // 2: flynn.api.v1.DeploymentStatus
	(StatusResponse_Code)(0),             // 3: flynn.api.v1.StatusResponse.Code
	(LabelFilter_Expression_Operator)(0), // 4: flynn.api.v1.LabelFilter.Expression.Operator
	(DeploymentEvent_JobState)(0),        // 5: flynn.api.v1.DeploymentEvent.JobState
	(*StatusResponse)(nil),               // 6: flynn.api.v1.StatusResponse
	(*LabelFilter)(nil),                  // 7: flynn.api.v1.LabelFilter
	(*StreamAppsRequest)(nil),            // 8: flynn.api.v1.StreamAppsRequest
	(*StreamAppsResponse)(nil),           // 9: flynn.api.v1.StreamAppsResponse
	(*StreamReleasesRequest)(nil),        // 10: flynn.api.v1.StreamReleasesRequest
	(*StreamReleasesResponse)(nil),       // 11: flynn.api.v1.StreamReleasesResponse
	(*StreamScalesRequest)(nil),          // 12: flynn.api.v1.StreamScalesRequest
	(*StreamScalesResponse)(nil),         // 13: flynn.api.v1.StreamScalesResponse
	(*StreamDeploymentsRequest)(nil),     // 14: flynn.api.v1.StreamDeploymentsRequest
	(*StreamDeploymentsResponse)(nil),    // 15: flynn.api.v1.StreamDeploymentsResponse
	(*UpdateAppRequest)(nil),             // 16: flynn.api.v1.UpdateAppRequest
	(*CreateScaleRequest)(nil),           // 17: flynn.api.v1.CreateScaleRequest
	(*CreateReleaseRequest)(nil),         // 18: flynn.api.v1.CreateReleaseRequest
	(*CreateDeploymentRequest)(nil),      // 19: flynn.api.v1.CreateDeploymentRequest
	(*App)(nil),                          // 20: flynn.api.v1.App
	(*HostHealthCheck)(nil),              // 21: flynn.api.v1.HostHealthCheck
	(*HostService)(nil),                  // 22: flynn.api.v1.HostService
	(*Port)(nil),                         // 23: flynn.api.v1.Port
	(*VolumeReq)(nil),                    // 24: flynn.api.v1.VolumeReq
	(*HostResourceSpec)(nil),             // 25: flynn.api.v1.HostResourceSpec
	(*HostMount)(nil),                    // 26: flynn.api.v1.HostMount
	(*LibContainerDevice)(nil),           // 27: flynn.api.v1.LibContainerDevice
	(*ProcessType)(nil),                  // 28: flynn.api.v1.ProcessType
	(*Release)(nil),                      // 29: flynn.api.v1.Release
	(*ScaleRequest)(nil),                 // 30: flynn.api.v1.ScaleRequest
	(*DeploymentProcessTags)(nil),        // 31: flynn.api.v1.DeploymentProcessTags
	(*ExpandedDeployment)(nil),           // 32: flynn.api.v1.ExpandedDeployment
	(*DeploymentEvent)(nil),              // 33: flynn.api.v1.DeploymentEvent
	(*SignedData)(nil),                   // 34: flynn.api.v1.SignedData
	(*AccessToken)(nil),                  // 35: flynn.api.v1.AccessToken
	(*LabelFilter_Expression)(nil),       // 36: flynn.api.v1.LabelFilter.Expression
	nil,                                  // 37: flynn.api.v1.CreateScaleRequest.ProcessesEntry
	nil,                                  // 38: flynn.api.v1.CreateScaleRequest.TagsEntry
	nil,                                  // 39: flynn.api.v1.App.LabelsEntry
	nil,                                  // 40: flynn.api.v1.ProcessType.EnvEntry
	nil,                                  // 41: flynn.api.v1.ProcessType.ResourcesEntry
	nil,                                  // 42: flynn.api.v1.Release.EnvEntry
	nil,                                  // 43: flynn.api.v1.Release.LabelsEntry
	nil,                                  // 44: flynn.api.v1.Release.ProcessesEntry
	nil,                                  // 45: flynn.api.v1.ScaleRequest.OldProcessesEntry
	nil,                                  // 46: flynn.api.v1.ScaleRequest.NewProcessesEntry
	nil,                                  // 47: flynn.api.v1.ScaleRequest.OldTagsEntry
	nil,                                  // 48: flynn.api.v1.ScaleRequest.NewTagsEntry
	nil,                                  // 49: flynn.api.v1.DeploymentProcessTags.TagsEntry
	nil,                                  // 50: flynn.api.v1.ExpandedDeployment.ProcessesEntry
	nil,                                  // 51: flynn.api.v1.ExpandedDeployment.TagsEntry
	(*field_mask.FieldMask)(nil),         // 52: google.protobuf.FieldMask
	(*timestamp.Timestamp)(nil),          // 53: google.protobuf.Timestamp
	(*duration.Duration)(nil),            // 54: google.protobuf.Duration
	(*empty.Empty)(nil),                  // 55: google.protobuf.Empty
}
var file_controller_proto_depIdxs = []int32{
	3,  // 0: flynn.api.v1.StatusResponse.status:type_name -> flynn.api.v1.StatusResponse.Code
	36, // 1: flynn.api.v1.LabelFilter.expressions:type_name -> flynn.api.v1.LabelFilter.Expression
	7,  // 2: flynn.api.v1.StreamAppsRequest.label_filters:type_name -> flynn.api.v1.LabelFilter
	20, // 3: flynn.api.v1.StreamAppsResponse.apps:type_name -> flynn.api.v1.App
	7,  // 4: flynn.api.v1.StreamReleasesRequest.label_filters:type_name -> flynn.api.v1.LabelFilter
	29, // 5: flynn.api.v1.StreamReleasesResponse.releases:type_name -> flynn.api.v1.Release
	1,  // 6: flynn.api.v1.StreamScalesRequest.state_filters:type_name -> flynn.api.v1.ScaleRequestState
	30, // 7: flynn.api.v1.StreamScalesResponse.scale_requests:type_name -> flynn.api.v1.ScaleRequest
	0,  // 8: flynn.api.v1.StreamDeploymentsRequest.type_filters:type_name -> flynn.api.v1.ReleaseType
	2,  // 9: flynn.api.v1.StreamDeploymentsRequest.status_filters:type_name -> flynn.api.v1.DeploymentStatus
	32, // 10: flynn.api.v1.StreamDeploymentsResponse.deployments:type_name -> flynn.api.v1.ExpandedDeployment
	20, // 11: flynn.api.v1.UpdateAppRequest.app:type_name -> flynn.api.v1.App
	52, // 12: flynn.api.v1.UpdateAppRequest.update_mask:type_name -> google.protobuf.FieldMask
	37, // 13: flynn.api.v1.CreateScaleRequest.processes:type_name -> flynn.api.v1.CreateScaleRequest.ProcessesEntry
	38, // 14: flynn.api.v1.CreateScaleRequest.tags:type_name -> flynn.api.v1.CreateScaleRequest.TagsEntry
	29, // 15: flynn.api.v1.CreateReleaseRequest.release:type_name -> flynn.api.v1.Release
	17, // 16: flynn.api.v1.CreateDeploymentRequest.scale_request:type_name -> flynn.api.v1.CreateScaleRequest
	39, // 17: flynn.api.v1.App.labels:type_name -> flynn.api.v1.App.LabelsEntry
	53, // 18: flynn.api.v1.App.create_time:type_name -> google.protobuf.Timestamp
	53, // 19: flynn.api.v1.App.update_time:type_name -> google.protobuf.Timestamp
	53, // 20: flynn.api.v1.App.delete_time:type_name -> google.protobuf.Timestamp
	54, // 21: flynn.api.v1.HostHealthCheck.interval:type_name -> google.protobuf.Duration
	54, // 22: flynn.api.v1.HostHealthCheck.start_timeout:type_name -> google.protobuf.Duration
	21, // 23: flynn.api.v1.HostService.check:type_name -> flynn.api.v1.HostHealthCheck
	22, // 24: flynn.api.v1.Port.service:type_name -> flynn.api.v1.HostService
	40, // 25: flynn.api.v1.ProcessType.env:type_name -> flynn.api.v1.ProcessType.EnvEntry
	23, // 26: flynn.api.v1.ProcessType.ports:type_name -> flynn.api.v1.Port
	24, // 27: flynn.api.v1.ProcessType.volumes:type_name -> flynn.api.v1.VolumeReq
	41, // 28: flynn.api.v1.ProcessType.resources:type_name -> flynn.api.v1.ProcessType.ResourcesEntry
	26, // 29: flynn.api.v1.ProcessType.mounts:type_name -> flynn.api.v1.HostMount
	27, // 30: flynn.api.v1.ProcessType.allowed_devices:type_name -> flynn.api.v1.LibContainerDevice
	42, // 31: flynn.api.v1.Release.env:type_name -> flynn.api.v1.Release.EnvEntry
	43, // 32: flynn.api.v1.Release.labels:type_name -> flynn.api.v1.Release.LabelsEntry
	44, // 33: flynn.api.v1.Release.processes:type_name -> flynn.api.v1.Release.ProcessesEntry
	0,  // 34: flynn.api.v1.Release.type:type_name -> flynn.api.v1.ReleaseType
	53, // 35: flynn.api.v1.Release.create_time:type_name -> google.protobuf.Timestamp
	53, // 36: flynn.api.v1.Release.delete_time:type_name -> google.protobuf.Timestamp
	1,  // 37: flynn.api.v1.ScaleRequest.state:type_name -> flynn.api.v1.ScaleRequestState
	45, // 38: flynn.api.v1.ScaleRequest.old_processes:type_name -> flynn.api.v1.ScaleRequest.OldProcessesEntry
	46, // 39: flynn.api.v1.ScaleRequest.new_processes:type_name -> flynn.api.v1.ScaleRequest.NewProcessesEntry
	47, // 40: flynn.api.v1.ScaleRequest.old_tags:type_name -> flynn.api.v1.ScaleRequest.OldTagsEntry
	48, // 41: flynn.api.v1.ScaleRequest.new_tags:type_name -> flynn.api.v1.ScaleRequest.NewTagsEntry
	53, // 42: flynn.api.v1.ScaleRequest.create_time:type_name -> google.protobuf.Timestamp
	53, // 43: flynn.api.v1.ScaleRequest.update_time:type_name -> google.protobuf.Timestamp
	49, // 44: flynn.api.v1.DeploymentProcessTags.tags:type_name -> flynn.api.v1.DeploymentProcessTags.TagsEntry
	29, // 45: flynn.api.v1.ExpandedDeployment.old_release:type_name -> flynn.api.v1.Release
	29, // 46: flynn.api.v1.ExpandedDeployment.new_release:type_name -> flynn.api.v1.Release
	0,  // 47: flynn.api.v1.ExpandedDeployment.type:type_name -> flynn.api.v1.ReleaseType
	2,  // 48: flynn.api.v1.ExpandedDeployment.status:type_name -> flynn.api.v1.DeploymentStatus
	50, // 49: flynn.api.v1.ExpandedDeployment.processes:type_name -> flynn.api.v1.ExpandedDeployment.ProcessesEntry
	51, // 50: flynn.api.v1.ExpandedDeployment.tags:type_name -> flynn.api.v1.ExpandedDeployment.TagsEntry
	53, // 51: flynn.api.v1.ExpandedDeployment.create_time:type_name -> google.protobuf.Timestamp
	53, // 52: flynn.api.v1.ExpandedDeployment.expire_time:type_name -> google.protobuf.Timestamp
	53, // 53: flynn.api.v1.ExpandedDeployment.end_time:type_name -> google.protobuf.Timestamp
	5,  // 54: flynn.api.v1.DeploymentEvent.job_state:type_name -> flynn.api.v1.DeploymentEvent.JobState
	53, // 55: flynn.api.v1.DeploymentEvent.create_time:type_name -> google.protobuf.Timestamp
	53, // 56: flynn.api.v1.AccessToken.issue_time:type_name -> google.protobuf.Timestamp
	53, // 57: flynn.api.v1.AccessToken.expire_time:type_name -> google.protobuf.Timestamp
	4,  // 58: flynn.api.v1.LabelFilter.Expression.op:type_name -> flynn.api.v1.LabelFilter.Expression.Operator
	31, // 59: flynn.api.v1.CreateScaleRequest.TagsEntry.value:type_name -> flynn.api.v1.DeploymentProcessTags
	25, // 60: flynn.api.v1.ProcessType.ResourcesEntry.value:type_name -> flynn.api.v1.HostResourceSpec
	28, // 61: flynn.api.v1.Release.ProcessesEntry.value:type_name -> flynn.api.v1.ProcessType
	31, // 62: flynn.api.v1.ScaleRequest.OldTagsEntry.value:type_name -> flynn.api.v1.DeploymentProcessTags
	31, // 63: flynn.api.v1.ScaleRequest.NewTagsEntry.value:type_name -> flynn.api.v1.DeploymentProcessTags
	31, // 64: flynn.api.v1.ExpandedDeployment.TagsEntry.value:type_name -> flynn.api.v1.DeploymentProcessTags
	55, // 65: flynn.api.v1.Controller.Status:input_type -> google.protobuf.Empty
	8,  // 66: flynn.api.v1.Controller.StreamApps:input_type -> flynn.api.v1.StreamAppsRequest
	10, // 67: flynn.api.v1.Controller.StreamReleases:input_type -> flynn.api.v1.StreamReleasesRequest
	12, // 68: flynn.api.v1.Controller.StreamScales:input_type -> flynn.api.v1.StreamScalesRequest
	14, // 69: flynn.api.v1.Controller.StreamDeployments:input_type -> flynn.api.v1.StreamDeploymentsRequest
	16, // 70: flynn.api.v1.Controller.UpdateApp:input_type -> flynn.api.v1.UpdateAppRequest
	17, // 71: flynn.api.v1.Controller.CreateScale:input_type -> flynn.api.v1.CreateScaleRequest
	18, // 72: flynn.api.v1.Controller.CreateRelease:input_type -> flynn.api.v1.CreateReleaseRequest
	19, // 73: flynn.api.v1.Controller.CreateDeployment:input_type -> flynn.api.v1.CreateDeploymentRequest
	6,  // 74: flynn.api.v1.Controller.Status:output_type -> flynn.api.v1.StatusResponse
	9,  // 75: flynn.api.v1.Controller.StreamApps:output_type -> flynn.api.v1.StreamAppsResponse
	11, // 76: flynn.api.v1.Controller.StreamReleases:output_type -> flynn.api.v1.StreamReleasesResponse
	13, // 77: flynn.api.v1.Controller.StreamScales:output_type -> flynn.api.v1.StreamScalesResponse
	15, // 78: flynn.api.v1.Controller.StreamDeployments:output_type -> flynn.api.v1.StreamDeploymentsResponse
	20, // 79: flynn.api.v1.Controller.UpdateApp:output_type -> flynn.api.v1.App
	30, // 80: flynn.api.v1.Controller.CreateScale:output_type -> flynn.api.v1.ScaleRequest
	29, // 81: flynn.api.v1.Controller.CreateRelease:output_type -> flynn.api.v1.Release
	33, // 82: flynn.api.v1.Controller.CreateDeployment:output_type -> flynn.api.v1.DeploymentEvent
	74, // [74:83] is the sub-list for method output_type
	65, // [65:74] is the sub-list for method input_type
	65, // [65:65] is the sub-list for extension type_name
	65, // [65:65] is the sub-list for extension extendee
	0,  // [0:65] is the sub-list for field type_name
}

func init() { file_controller_proto_init() }
func file_controller_proto_init() {
	if File_controller_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_controller_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatusResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LabelFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamAppsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamAppsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamReleasesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamReleasesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamScalesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamScalesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamDeploymentsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StreamDeploymentsResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateAppRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateScaleRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateReleaseRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateDeploymentRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*App); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HostHealthCheck); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HostService); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Port); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VolumeReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HostResourceSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HostMount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LibContainerDevice); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProcessType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Release); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ScaleRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeploymentProcessTags); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExpandedDeployment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeploymentEvent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SignedData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccessToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_controller_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LabelFilter_Expression); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_controller_proto_rawDesc,
			NumEnums:      6,
			NumMessages:   46,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_controller_proto_goTypes,
		DependencyIndexes: file_controller_proto_depIdxs,
		EnumInfos:         file_controller_proto_enumTypes,
		MessageInfos:      file_controller_proto_msgTypes,
	}.Build()
	File_controller_proto = out.File
	file_controller_proto_rawDesc = nil
	file_controller_proto_goTypes = nil
	file_controller_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// ControllerClient is the client API for Controller service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ControllerClient interface {
	Status(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*StatusResponse, error)
	StreamApps(ctx context.Context, in *StreamAppsRequest, opts ...grpc.CallOption) (Controller_StreamAppsClient, error)
	StreamReleases(ctx context.Context, in *StreamReleasesRequest, opts ...grpc.CallOption) (Controller_StreamReleasesClient, error)
	StreamScales(ctx context.Context, in *StreamScalesRequest, opts ...grpc.CallOption) (Controller_StreamScalesClient, error)
	StreamDeployments(ctx context.Context, in *StreamDeploymentsRequest, opts ...grpc.CallOption) (Controller_StreamDeploymentsClient, error)
	UpdateApp(ctx context.Context, in *UpdateAppRequest, opts ...grpc.CallOption) (*App, error)
	CreateScale(ctx context.Context, in *CreateScaleRequest, opts ...grpc.CallOption) (*ScaleRequest, error)
	CreateRelease(ctx context.Context, in *CreateReleaseRequest, opts ...grpc.CallOption) (*Release, error)
	CreateDeployment(ctx context.Context, in *CreateDeploymentRequest, opts ...grpc.CallOption) (Controller_CreateDeploymentClient, error)
}

type controllerClient struct {
	cc grpc.ClientConnInterface
}

func NewControllerClient(cc grpc.ClientConnInterface) ControllerClient {
	return &controllerClient{cc}
}

func (c *controllerClient) Status(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*StatusResponse, error) {
	out := new(StatusResponse)
	err := c.cc.Invoke(ctx, "/flynn.api.v1.Controller/Status", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *controllerClient) StreamApps(ctx context.Context, in *StreamAppsRequest, opts ...grpc.CallOption) (Controller_StreamAppsClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Controller_serviceDesc.Streams[0], "/flynn.api.v1.Controller/StreamApps", opts...)
	if err != nil {
		return nil, err
	}
	x := &controllerStreamAppsClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type Controller_StreamAppsClient interface {
	Recv() (*StreamAppsResponse, error)
	grpc.ClientStream
}

type controllerStreamAppsClient struct {
	grpc.ClientStream
}

func (x *controllerStreamAppsClient) Recv() (*StreamAppsResponse, error) {
	m := new(StreamAppsResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *controllerClient) StreamReleases(ctx context.Context, in *StreamReleasesRequest, opts ...grpc.CallOption) (Controller_StreamReleasesClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Controller_serviceDesc.Streams[1], "/flynn.api.v1.Controller/StreamReleases", opts...)
	if err != nil {
		return nil, err
	}
	x := &controllerStreamReleasesClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type Controller_StreamReleasesClient interface {
	Recv() (*StreamReleasesResponse, error)
	grpc.ClientStream
}

type controllerStreamReleasesClient struct {
	grpc.ClientStream
}

func (x *controllerStreamReleasesClient) Recv() (*StreamReleasesResponse, error) {
	m := new(StreamReleasesResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *controllerClient) StreamScales(ctx context.Context, in *StreamScalesRequest, opts ...grpc.CallOption) (Controller_StreamScalesClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Controller_serviceDesc.Streams[2], "/flynn.api.v1.Controller/StreamScales", opts...)
	if err != nil {
		return nil, err
	}
	x := &controllerStreamScalesClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type Controller_StreamScalesClient interface {
	Recv() (*StreamScalesResponse, error)
	grpc.ClientStream
}

type controllerStreamScalesClient struct {
	grpc.ClientStream
}

func (x *controllerStreamScalesClient) Recv() (*StreamScalesResponse, error) {
	m := new(StreamScalesResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *controllerClient) StreamDeployments(ctx context.Context, in *StreamDeploymentsRequest, opts ...grpc.CallOption) (Controller_StreamDeploymentsClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Controller_serviceDesc.Streams[3], "/flynn.api.v1.Controller/StreamDeployments", opts...)
	if err != nil {
		return nil, err
	}
	x := &controllerStreamDeploymentsClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type Controller_StreamDeploymentsClient interface {
	Recv() (*StreamDeploymentsResponse, error)
	grpc.ClientStream
}

type controllerStreamDeploymentsClient struct {
	grpc.ClientStream
}

func (x *controllerStreamDeploymentsClient) Recv() (*StreamDeploymentsResponse, error) {
	m := new(StreamDeploymentsResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *controllerClient) UpdateApp(ctx context.Context, in *UpdateAppRequest, opts ...grpc.CallOption) (*App, error) {
	out := new(App)
	err := c.cc.Invoke(ctx, "/flynn.api.v1.Controller/UpdateApp", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *controllerClient) CreateScale(ctx context.Context, in *CreateScaleRequest, opts ...grpc.CallOption) (*ScaleRequest, error) {
	out := new(ScaleRequest)
	err := c.cc.Invoke(ctx, "/flynn.api.v1.Controller/CreateScale", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *controllerClient) CreateRelease(ctx context.Context, in *CreateReleaseRequest, opts ...grpc.CallOption) (*Release, error) {
	out := new(Release)
	err := c.cc.Invoke(ctx, "/flynn.api.v1.Controller/CreateRelease", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *controllerClient) CreateDeployment(ctx context.Context, in *CreateDeploymentRequest, opts ...grpc.CallOption) (Controller_CreateDeploymentClient, error) {
	stream, err := c.cc.NewStream(ctx, &_Controller_serviceDesc.Streams[4], "/flynn.api.v1.Controller/CreateDeployment", opts...)
	if err != nil {
		return nil, err
	}
	x := &controllerCreateDeploymentClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type Controller_CreateDeploymentClient interface {
	Recv() (*DeploymentEvent, error)
	grpc.ClientStream
}

type controllerCreateDeploymentClient struct {
	grpc.ClientStream
}

func (x *controllerCreateDeploymentClient) Recv() (*DeploymentEvent, error) {
	m := new(DeploymentEvent)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

// ControllerServer is the server API for Controller service.
type ControllerServer interface {
	Status(context.Context, *empty.Empty) (*StatusResponse, error)
	StreamApps(*StreamAppsRequest, Controller_StreamAppsServer) error
	StreamReleases(*StreamReleasesRequest, Controller_StreamReleasesServer) error
	StreamScales(*StreamScalesRequest, Controller_StreamScalesServer) error
	StreamDeployments(*StreamDeploymentsRequest, Controller_StreamDeploymentsServer) error
	UpdateApp(context.Context, *UpdateAppRequest) (*App, error)
	CreateScale(context.Context, *CreateScaleRequest) (*ScaleRequest, error)
	CreateRelease(context.Context, *CreateReleaseRequest) (*Release, error)
	CreateDeployment(*CreateDeploymentRequest, Controller_CreateDeploymentServer) error
}

// UnimplementedControllerServer can be embedded to have forward compatible implementations.
type UnimplementedControllerServer struct {
}

func (*UnimplementedControllerServer) Status(context.Context, *empty.Empty) (*StatusResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Status not implemented")
}
func (*UnimplementedControllerServer) StreamApps(*StreamAppsRequest, Controller_StreamAppsServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamApps not implemented")
}
func (*UnimplementedControllerServer) StreamReleases(*StreamReleasesRequest, Controller_StreamReleasesServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamReleases not implemented")
}
func (*UnimplementedControllerServer) StreamScales(*StreamScalesRequest, Controller_StreamScalesServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamScales not implemented")
}
func (*UnimplementedControllerServer) StreamDeployments(*StreamDeploymentsRequest, Controller_StreamDeploymentsServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamDeployments not implemented")
}
func (*UnimplementedControllerServer) UpdateApp(context.Context, *UpdateAppRequest) (*App, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateApp not implemented")
}
func (*UnimplementedControllerServer) CreateScale(context.Context, *CreateScaleRequest) (*ScaleRequest, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateScale not implemented")
}
func (*UnimplementedControllerServer) CreateRelease(context.Context, *CreateReleaseRequest) (*Release, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRelease not implemented")
}
func (*UnimplementedControllerServer) CreateDeployment(*CreateDeploymentRequest, Controller_CreateDeploymentServer) error {
	return status.Errorf(codes.Unimplemented, "method CreateDeployment not implemented")
}

func RegisterControllerServer(s *grpc.Server, srv ControllerServer) {
	s.RegisterService(&_Controller_serviceDesc, srv)
}

func _Controller_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(empty.Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ControllerServer).Status(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/flynn.api.v1.Controller/Status",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ControllerServer).Status(ctx, req.(*empty.Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Controller_StreamApps_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(StreamAppsRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ControllerServer).StreamApps(m, &controllerStreamAppsServer{stream})
}

type Controller_StreamAppsServer interface {
	Send(*StreamAppsResponse) error
	grpc.ServerStream
}

type controllerStreamAppsServer struct {
	grpc.ServerStream
}

func (x *controllerStreamAppsServer) Send(m *StreamAppsResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _Controller_StreamReleases_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(StreamReleasesRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ControllerServer).StreamReleases(m, &controllerStreamReleasesServer{stream})
}

type Controller_StreamReleasesServer interface {
	Send(*StreamReleasesResponse) error
	grpc.ServerStream
}

type controllerStreamReleasesServer struct {
	grpc.ServerStream
}

func (x *controllerStreamReleasesServer) Send(m *StreamReleasesResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _Controller_StreamScales_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(StreamScalesRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ControllerServer).StreamScales(m, &controllerStreamScalesServer{stream})
}

type Controller_StreamScalesServer interface {
	Send(*StreamScalesResponse) error
	grpc.ServerStream
}

type controllerStreamScalesServer struct {
	grpc.ServerStream
}

func (x *controllerStreamScalesServer) Send(m *StreamScalesResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _Controller_StreamDeployments_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(StreamDeploymentsRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ControllerServer).StreamDeployments(m, &controllerStreamDeploymentsServer{stream})
}

type Controller_StreamDeploymentsServer interface {
	Send(*StreamDeploymentsResponse) error
	grpc.ServerStream
}

type controllerStreamDeploymentsServer struct {
	grpc.ServerStream
}

func (x *controllerStreamDeploymentsServer) Send(m *StreamDeploymentsResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _Controller_UpdateApp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateAppRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ControllerServer).UpdateApp(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/flynn.api.v1.Controller/UpdateApp",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ControllerServer).UpdateApp(ctx, req.(*UpdateAppRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Controller_CreateScale_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateScaleRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ControllerServer).CreateScale(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/flynn.api.v1.Controller/CreateScale",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ControllerServer).CreateScale(ctx, req.(*CreateScaleRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Controller_CreateRelease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateReleaseRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ControllerServer).CreateRelease(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/flynn.api.v1.Controller/CreateRelease",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ControllerServer).CreateRelease(ctx, req.(*CreateReleaseRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Controller_CreateDeployment_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(CreateDeploymentRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ControllerServer).CreateDeployment(m, &controllerCreateDeploymentServer{stream})
}

type Controller_CreateDeploymentServer interface {
	Send(*DeploymentEvent) error
	grpc.ServerStream
}

type controllerCreateDeploymentServer struct {
	grpc.ServerStream
}

func (x *controllerCreateDeploymentServer) Send(m *DeploymentEvent) error {
	return x.ServerStream.SendMsg(m)
}

var _Controller_serviceDesc = grpc.ServiceDesc{
	ServiceName: "flynn.api.v1.Controller",
	HandlerType: (*ControllerServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Status",
			Handler:    _Controller_Status_Handler,
		},
		{
			MethodName: "UpdateApp",
			Handler:    _Controller_UpdateApp_Handler,
		},
		{
			MethodName: "CreateScale",
			Handler:    _Controller_CreateScale_Handler,
		},
		{
			MethodName: "CreateRelease",
			Handler:    _Controller_CreateRelease_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamApps",
			Handler:       _Controller_StreamApps_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "StreamReleases",
			Handler:       _Controller_StreamReleases_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "StreamScales",
			Handler:       _Controller_StreamScales_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "StreamDeployments",
			Handler:       _Controller_StreamDeployments_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "CreateDeployment",
			Handler:       _Controller_CreateDeployment_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "controller.proto",
}
