// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License-AGPL.txt in the project root for license information.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.15.5
// source: core.proto

package api

import (
	api "github.com/gitpod-io/gitpod/content-service/api"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
)

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

type StopWorkspacePolicy int32

const (
	StopWorkspacePolicy_NORMALLY    StopWorkspacePolicy = 0
	StopWorkspacePolicy_IMMEDIATELY StopWorkspacePolicy = 1
)

// Enum value maps for StopWorkspacePolicy.
var (
	StopWorkspacePolicy_name = map[int32]string{
		0: "NORMALLY",
		1: "IMMEDIATELY",
	}
	StopWorkspacePolicy_value = map[string]int32{
		"NORMALLY":    0,
		"IMMEDIATELY": 1,
	}
)

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

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

func (StopWorkspacePolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[0].Descriptor()
}

func (StopWorkspacePolicy) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[0]
}

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

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

type AdmissionLevel int32

const (
	// WORKSPACE_ADMIT_OWNER_ONLY means the workspace can only be accessed using the owner token
	AdmissionLevel_ADMIT_OWNER_ONLY AdmissionLevel = 0
	// WORKSPACE_ADMIT_EVERYONE means the workspace (including ports) can be accessed by everyone.
	AdmissionLevel_ADMIT_EVERYONE AdmissionLevel = 1
)

// Enum value maps for AdmissionLevel.
var (
	AdmissionLevel_name = map[int32]string{
		0: "ADMIT_OWNER_ONLY",
		1: "ADMIT_EVERYONE",
	}
	AdmissionLevel_value = map[string]int32{
		"ADMIT_OWNER_ONLY": 0,
		"ADMIT_EVERYONE":   1,
	}
)

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

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

func (AdmissionLevel) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[1].Descriptor()
}

func (AdmissionLevel) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[1]
}

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

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

// PortVisibility defines who may access a workspace port which is guarded by an authentication in the proxy
type PortVisibility int32

const (
	// private (default) means the port is accessible by the workspace owner only, unless the workspace's admission is
	// set to everyone.
	PortVisibility_PORT_VISIBILITY_PRIVATE PortVisibility = 0
	// public means the port is accessible by everybody using the workspace port URL
	PortVisibility_PORT_VISIBILITY_PUBLIC PortVisibility = 1
)

// Enum value maps for PortVisibility.
var (
	PortVisibility_name = map[int32]string{
		0: "PORT_VISIBILITY_PRIVATE",
		1: "PORT_VISIBILITY_PUBLIC",
	}
	PortVisibility_value = map[string]int32{
		"PORT_VISIBILITY_PRIVATE": 0,
		"PORT_VISIBILITY_PUBLIC":  1,
	}
)

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

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

func (PortVisibility) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[2].Descriptor()
}

func (PortVisibility) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[2]
}

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

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

// WorkspaceConditionBool is a trinary bool: true/false/empty
type WorkspaceConditionBool int32

const (
	WorkspaceConditionBool_FALSE WorkspaceConditionBool = 0
	WorkspaceConditionBool_TRUE  WorkspaceConditionBool = 1
	WorkspaceConditionBool_EMPTY WorkspaceConditionBool = 2
)

// Enum value maps for WorkspaceConditionBool.
var (
	WorkspaceConditionBool_name = map[int32]string{
		0: "FALSE",
		1: "TRUE",
		2: "EMPTY",
	}
	WorkspaceConditionBool_value = map[string]int32{
		"FALSE": 0,
		"TRUE":  1,
		"EMPTY": 2,
	}
)

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

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

func (WorkspaceConditionBool) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[3].Descriptor()
}

func (WorkspaceConditionBool) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[3]
}

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

// Deprecated: Use WorkspaceConditionBool.Descriptor instead.
func (WorkspaceConditionBool) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{3}
}

// WorkspacePhase is a simple, high-level summary of where the workspace is in its lifecycle.
// The phase is not intended to be a comprehensive rollup of observations of the workspace state,
// nor is it intended to be a comprehensive state machine.
// (based on  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)
type WorkspacePhase int32

const (
	// Unknown indicates an issue within the workspace manager in that it cannot determine the actual phase of
	// a workspace. This phase is usually accompanied by an error.
	WorkspacePhase_UNKNOWN WorkspacePhase = 0
	// Pending means the workspace does not yet consume resources in the cluster, but rather is looking for
	// some space within the cluster. If for example the cluster needs to scale up to accomodate the
	// workspace, the workspace will be in Pending state until that happened.
	WorkspacePhase_PENDING WorkspacePhase = 1
	// Creating means the workspace is currently being created. That includes downloading the images required
	// to run the workspace over the network. The time spent in this phase varies widely and depends on the current
	// network speed, image size and cache states.
	WorkspacePhase_CREATING WorkspacePhase = 2
	// Initializing is the phase in which the workspace is executing the appropriate workspace initializer (e.g. Git
	// clone or backup download). After this phase one can expect the workspace to either be Running or Failed.
	WorkspacePhase_INITIALIZING WorkspacePhase = 3
	// Running means the workspace is able to actively perform work, either by serving a user through Theia,
	// or as a headless workspace.
	WorkspacePhase_RUNNING WorkspacePhase = 4
	// Interrupted is an exceptional state where the container should be running but is temporarily unavailable.
	// When in this state, we expect it to become running or stopping anytime soon.
	WorkspacePhase_INTERRUPTED WorkspacePhase = 7
	// Stopping means that the workspace is currently shutting down. It could go to stopped every moment.
	WorkspacePhase_STOPPING WorkspacePhase = 5
	// Stopped means the workspace ended regularly because it was shut down.
	WorkspacePhase_STOPPED WorkspacePhase = 6
)

// Enum value maps for WorkspacePhase.
var (
	WorkspacePhase_name = map[int32]string{
		0: "UNKNOWN",
		1: "PENDING",
		2: "CREATING",
		3: "INITIALIZING",
		4: "RUNNING",
		7: "INTERRUPTED",
		5: "STOPPING",
		6: "STOPPED",
	}
	WorkspacePhase_value = map[string]int32{
		"UNKNOWN":      0,
		"PENDING":      1,
		"CREATING":     2,
		"INITIALIZING": 3,
		"RUNNING":      4,
		"INTERRUPTED":  7,
		"STOPPING":     5,
		"STOPPED":      6,
	}
)

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

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

func (WorkspacePhase) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[4].Descriptor()
}

func (WorkspacePhase) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[4]
}

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

// Deprecated: Use WorkspacePhase.Descriptor instead.
func (WorkspacePhase) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{4}
}

// WorkspaceFeatureFlag enable non-standard behaviour in workspaces
type WorkspaceFeatureFlag int32

const (
	// NOOP feature flag is just here because I don't want privileged to be 0
	WorkspaceFeatureFlag_NOOP WorkspaceFeatureFlag = 0
	// FullWorkspaceBackup does away with the /workspace host mount. All workspace content lives
	// in the ephemeral container storage. We initlialize workspaces using content layer served by
	// the registry facade and back them up using regular "hardlink backups".
	WorkspaceFeatureFlag_FULL_WORKSPACE_BACKUP WorkspaceFeatureFlag = 4
	// FixedResources ensures this workspace is not subject to ws-daemon's dynamic resource limits.
	// In this sence it's akin to "guaranteed" (as compared to burstable) resources for workspaces.
	WorkspaceFeatureFlag_FIXED_RESOURCES WorkspaceFeatureFlag = 5
)

// Enum value maps for WorkspaceFeatureFlag.
var (
	WorkspaceFeatureFlag_name = map[int32]string{
		0: "NOOP",
		4: "FULL_WORKSPACE_BACKUP",
		5: "FIXED_RESOURCES",
	}
	WorkspaceFeatureFlag_value = map[string]int32{
		"NOOP":                  0,
		"FULL_WORKSPACE_BACKUP": 4,
		"FIXED_RESOURCES":       5,
	}
)

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

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

func (WorkspaceFeatureFlag) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[5].Descriptor()
}

func (WorkspaceFeatureFlag) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[5]
}

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

// Deprecated: Use WorkspaceFeatureFlag.Descriptor instead.
func (WorkspaceFeatureFlag) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{5}
}

// WorkspaceType specifies the purpose/use of a workspace. Different workspace types are handled differently by all parts of the system.
type WorkspaceType int32

const (
	// Regular workspaces are your off-the-mill workspaces intended for users. They are directly user-facing and hence are most important.
	WorkspaceType_REGULAR WorkspaceType = 0
	// Prebuild workspaces are workspaces used to pre-build the content of other workspaces. They run headless and have no direct user-interaction.
	WorkspaceType_PREBUILD WorkspaceType = 1
	// Probe workspaces are used to perform end-to-end health checks on the system. They require little to no resources, run headless and never
	// interact with users directly.
	WorkspaceType_PROBE WorkspaceType = 2
	// Ghost workspaces are placeholders that pre-scale a cluster for faster workspace startup. They request the same amount of resources
	// as a regular workspace, but run no actual load. They're removed at will to make space for an actual workspace.
	WorkspaceType_GHOST WorkspaceType = 3
)

// Enum value maps for WorkspaceType.
var (
	WorkspaceType_name = map[int32]string{
		0: "REGULAR",
		1: "PREBUILD",
		2: "PROBE",
		3: "GHOST",
	}
	WorkspaceType_value = map[string]int32{
		"REGULAR":  0,
		"PREBUILD": 1,
		"PROBE":    2,
		"GHOST":    3,
	}
)

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

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

func (WorkspaceType) Descriptor() protoreflect.EnumDescriptor {
	return file_core_proto_enumTypes[6].Descriptor()
}

func (WorkspaceType) Type() protoreflect.EnumType {
	return &file_core_proto_enumTypes[6]
}

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

// Deprecated: Use WorkspaceType.Descriptor instead.
func (WorkspaceType) EnumDescriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{6}
}

// GetWorkspacesRequest requests a list of running workspaces
type GetWorkspacesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetWorkspacesRequest) ProtoMessage() {}

func (x *GetWorkspacesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 GetWorkspacesRequest.ProtoReflect.Descriptor instead.
func (*GetWorkspacesRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{0}
}

// GetWorkspacesResponse is the response to a get w
type GetWorkspacesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// status are the status of all running workspaces
	Status []*WorkspaceStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*GetWorkspacesResponse) ProtoMessage() {}

func (x *GetWorkspacesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 GetWorkspacesResponse.ProtoReflect.Descriptor instead.
func (*GetWorkspacesResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{1}
}

func (x *GetWorkspacesResponse) GetStatus() []*WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

// StartWorkspaceRequest requests that the workspace manager starts a workspace in its cluster
type StartWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is a unique identifier of this workspace. No other workspace with the same name must be managed by this workspace manager
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// service_prefix is the unique ID/name that's prepended before the services associated with a workspace.
	// For example if the service_prefix is foobar there will be the services foobar-theia and foobar-ports.
	// If this field is empty the workspace ID becomes the service prefix.
	ServicePrefix string `protobuf:"bytes,2,opt,name=service_prefix,json=servicePrefix,proto3" json:"service_prefix,omitempty"`
	// Metadata is data associated with this workspace that's required for other parts of Gitpod to function
	Metadata *WorkspaceMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Spec is the configuration of the workspace that's required for the ws-manager to start the workspace
	Spec *StartWorkspaceSpec `protobuf:"bytes,4,opt,name=spec,proto3" json:"spec,omitempty"`
	// Type denots the kind of workspace we ought to start
	Type WorkspaceType `protobuf:"varint,6,opt,name=type,proto3,enum=wsman.WorkspaceType" json:"type,omitempty"`
}

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

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

func (*StartWorkspaceRequest) ProtoMessage() {}

func (x *StartWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 StartWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*StartWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{2}
}

func (x *StartWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *StartWorkspaceRequest) GetServicePrefix() string {
	if x != nil {
		return x.ServicePrefix
	}
	return ""
}

func (x *StartWorkspaceRequest) GetMetadata() *WorkspaceMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *StartWorkspaceRequest) GetSpec() *StartWorkspaceSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

func (x *StartWorkspaceRequest) GetType() WorkspaceType {
	if x != nil {
		return x.Type
	}
	return WorkspaceType_REGULAR
}

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

	// URL is the external URL of the workspace
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
}

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

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

func (*StartWorkspaceResponse) ProtoMessage() {}

func (x *StartWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 StartWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*StartWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{3}
}

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

// StopWorkspaceRequest requests that the workspace manager stops a workspace
type StopWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace to stop
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Policy determines how quickly a workspace will be stopped
	Policy StopWorkspacePolicy `protobuf:"varint,2,opt,name=policy,proto3,enum=wsman.StopWorkspacePolicy" json:"policy,omitempty"`
}

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

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

func (*StopWorkspaceRequest) ProtoMessage() {}

func (x *StopWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 StopWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*StopWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{4}
}

func (x *StopWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *StopWorkspaceRequest) GetPolicy() StopWorkspacePolicy {
	if x != nil {
		return x.Policy
	}
	return StopWorkspacePolicy_NORMALLY
}

// StopWorkspaceResponse is the answer to a stop workspace request
type StopWorkspaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*StopWorkspaceResponse) ProtoMessage() {}

func (x *StopWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 StopWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*StopWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{5}
}

// DescribeWorkspaceRequest requests the status of a workspace
type DescribeWorkspaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace to describe
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*DescribeWorkspaceRequest) ProtoMessage() {}

func (x *DescribeWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 DescribeWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*DescribeWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{6}
}

func (x *DescribeWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// DescribeWorkspaceResponse is the answer to a workspace description request
type DescribeWorkspaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Status *WorkspaceStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// LastActivity is the time when the workspace was last marked active - ISO8601 formated
	LastActivity string `protobuf:"bytes,2,opt,name=lastActivity,proto3" json:"lastActivity,omitempty"`
}

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

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

func (*DescribeWorkspaceResponse) ProtoMessage() {}

func (x *DescribeWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 DescribeWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*DescribeWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{7}
}

func (x *DescribeWorkspaceResponse) GetStatus() *WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *DescribeWorkspaceResponse) GetLastActivity() string {
	if x != nil {
		return x.LastActivity
	}
	return ""
}

// SubscribeRequest requests to be notified whenever the workspace status changes
type SubscribeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*SubscribeRequest) ProtoMessage() {}

func (x *SubscribeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 SubscribeRequest.ProtoReflect.Descriptor instead.
func (*SubscribeRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{8}
}

// SubscribeResponse notifies a client when a workspace's status changes
type SubscribeResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Payload:
	//	*SubscribeResponse_Status
	//	*SubscribeResponse_Log
	Payload isSubscribeResponse_Payload `protobuf_oneof:"payload"`
	Header  map[string]string           `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*SubscribeResponse) ProtoMessage() {}

func (x *SubscribeResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 SubscribeResponse.ProtoReflect.Descriptor instead.
func (*SubscribeResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{9}
}

func (m *SubscribeResponse) GetPayload() isSubscribeResponse_Payload {
	if m != nil {
		return m.Payload
	}
	return nil
}

func (x *SubscribeResponse) GetStatus() *WorkspaceStatus {
	if x, ok := x.GetPayload().(*SubscribeResponse_Status); ok {
		return x.Status
	}
	return nil
}

func (x *SubscribeResponse) GetLog() *WorkspaceLogMessage {
	if x, ok := x.GetPayload().(*SubscribeResponse_Log); ok {
		return x.Log
	}
	return nil
}

func (x *SubscribeResponse) GetHeader() map[string]string {
	if x != nil {
		return x.Header
	}
	return nil
}

type isSubscribeResponse_Payload interface {
	isSubscribeResponse_Payload()
}

type SubscribeResponse_Status struct {
	Status *WorkspaceStatus `protobuf:"bytes,1,opt,name=status,proto3,oneof"`
}

type SubscribeResponse_Log struct {
	Log *WorkspaceLogMessage `protobuf:"bytes,2,opt,name=log,proto3,oneof"`
}

func (*SubscribeResponse_Status) isSubscribeResponse_Payload() {}

func (*SubscribeResponse_Log) isSubscribeResponse_Payload() {}

// MarkActiveRequest marks a workspace as still in use
type MarkActiveRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id is the ID of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// closed marks a workspace as closed which will shorten its timeout
	Closed bool `protobuf:"varint,2,opt,name=closed,proto3" json:"closed,omitempty"`
}

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

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

func (*MarkActiveRequest) ProtoMessage() {}

func (x *MarkActiveRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 MarkActiveRequest.ProtoReflect.Descriptor instead.
func (*MarkActiveRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{10}
}

func (x *MarkActiveRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *MarkActiveRequest) GetClosed() bool {
	if x != nil {
		return x.Closed
	}
	return false
}

// MarkActiveResponse is the answer to a mark workspace active request
type MarkActiveResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*MarkActiveResponse) ProtoMessage() {}

func (x *MarkActiveResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 MarkActiveResponse.ProtoReflect.Descriptor instead.
func (*MarkActiveResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{11}
}

// SetTimeoutRequest configures the timeout of a workspace
type SetTimeoutRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// id is the ID of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// duration is the new timeout duration. Must be a valid Go duration (see https://golang.org/pkg/time/#ParseDuration)
	Duration string `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
}

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

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

func (*SetTimeoutRequest) ProtoMessage() {}

func (x *SetTimeoutRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 SetTimeoutRequest.ProtoReflect.Descriptor instead.
func (*SetTimeoutRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{12}
}

func (x *SetTimeoutRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SetTimeoutRequest) GetDuration() string {
	if x != nil {
		return x.Duration
	}
	return ""
}

// SetTimeoutResponse is the answer to a set timeout request
type SetTimeoutResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*SetTimeoutResponse) ProtoMessage() {}

func (x *SetTimeoutResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 SetTimeoutResponse.ProtoReflect.Descriptor instead.
func (*SetTimeoutResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{13}
}

// ControlPortRequest exposes or un-exposes networking ports of a workspace
type ControlPortRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace whose port to control
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// expose controls whether to make the port publicly available or bar if from being accessible outside of the worksapce.
	// If true, the port will become publicly available, if false it will become inaccessible from outside the workspace.
	Expose bool `protobuf:"varint,2,opt,name=expose,proto3" json:"expose,omitempty"`
	// spec defines the port under control
	Spec *PortSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
}

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

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

func (*ControlPortRequest) ProtoMessage() {}

func (x *ControlPortRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 ControlPortRequest.ProtoReflect.Descriptor instead.
func (*ControlPortRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{14}
}

func (x *ControlPortRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ControlPortRequest) GetExpose() bool {
	if x != nil {
		return x.Expose
	}
	return false
}

func (x *ControlPortRequest) GetSpec() *PortSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

// ControlPortResponse is the answer to a workspace port control request
type ControlPortResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ControlPortResponse) ProtoMessage() {}

func (x *ControlPortResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 ControlPortResponse.ProtoReflect.Descriptor instead.
func (*ControlPortResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{15}
}

// TakeSnapshotRequest creates a copy of the workspace content. This copy can be used to initialize a new workspace.
type TakeSnapshotRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace of which to take a snapshot
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*TakeSnapshotRequest) ProtoMessage() {}

func (x *TakeSnapshotRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 TakeSnapshotRequest.ProtoReflect.Descriptor instead.
func (*TakeSnapshotRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{16}
}

func (x *TakeSnapshotRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

// TakeSnapshotResponse is the answer to a take snapshot request
type TakeSnapshotResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// URL is the location of the snapshot encoded such that it can be passed back to a snapshot initializer.
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
}

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

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

func (*TakeSnapshotResponse) ProtoMessage() {}

func (x *TakeSnapshotResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 TakeSnapshotResponse.ProtoReflect.Descriptor instead.
func (*TakeSnapshotResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{17}
}

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

// ControlAdmissionRequest controls the admission of users to a workspace
type ControlAdmissionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace whoose admission to control
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// level is the new workspace admission level
	Level AdmissionLevel `protobuf:"varint,2,opt,name=level,proto3,enum=wsman.AdmissionLevel" json:"level,omitempty"`
}

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

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

func (*ControlAdmissionRequest) ProtoMessage() {}

func (x *ControlAdmissionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 ControlAdmissionRequest.ProtoReflect.Descriptor instead.
func (*ControlAdmissionRequest) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{18}
}

func (x *ControlAdmissionRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ControlAdmissionRequest) GetLevel() AdmissionLevel {
	if x != nil {
		return x.Level
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

type ControlAdmissionResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*ControlAdmissionResponse) ProtoMessage() {}

func (x *ControlAdmissionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 ControlAdmissionResponse.ProtoReflect.Descriptor instead.
func (*ControlAdmissionResponse) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{19}
}

// WorkspaceStatus describes a workspace status
type WorkspaceStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the unique identifier of the workspace
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Metadata is data associated with this workspace that's required for other parts of Gitpod to function
	Metadata *WorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Spec is the workspace spec during runtime
	Spec *WorkspaceSpec `protobuf:"bytes,3,opt,name=spec,proto3" json:"spec,omitempty"`
	// the phase of a workspace is a simple, high-level summary of where the workspace is in its lifecycle
	Phase WorkspacePhase `protobuf:"varint,4,opt,name=phase,proto3,enum=wsman.WorkspacePhase" json:"phase,omitempty"`
	// conditions detail the current state of the workspace
	Conditions *WorkspaceConditions `protobuf:"bytes,5,opt,name=conditions,proto3" json:"conditions,omitempty"`
	// message is an optional human-readable message detailing the current phase
	Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"`
	// repo details the Git working copy status of the workspace.
	// Note: this is a best-effort field and more often than not will not be present. Its absence does not
	// indicate the absence of a working copy.
	Repo *api.GitStatus `protobuf:"bytes,7,opt,name=repo,proto3" json:"repo,omitempty"`
	// runtime contains information about the workspace's runtime environment
	Runtime *WorkspaceRuntimeInfo `protobuf:"bytes,8,opt,name=runtime,proto3" json:"runtime,omitempty"`
	// auth provides authentication information about the workspace. This info is primarily used by ws-proxy.
	Auth *WorkspaceAuthentication `protobuf:"bytes,9,opt,name=auth,proto3" json:"auth,omitempty"`
}

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

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

func (*WorkspaceStatus) ProtoMessage() {}

func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceStatus.ProtoReflect.Descriptor instead.
func (*WorkspaceStatus) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{20}
}

func (x *WorkspaceStatus) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WorkspaceStatus) GetMetadata() *WorkspaceMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *WorkspaceStatus) GetSpec() *WorkspaceSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

func (x *WorkspaceStatus) GetPhase() WorkspacePhase {
	if x != nil {
		return x.Phase
	}
	return WorkspacePhase_UNKNOWN
}

func (x *WorkspaceStatus) GetConditions() *WorkspaceConditions {
	if x != nil {
		return x.Conditions
	}
	return nil
}

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

func (x *WorkspaceStatus) GetRepo() *api.GitStatus {
	if x != nil {
		return x.Repo
	}
	return nil
}

func (x *WorkspaceStatus) GetRuntime() *WorkspaceRuntimeInfo {
	if x != nil {
		return x.Runtime
	}
	return nil
}

func (x *WorkspaceStatus) GetAuth() *WorkspaceAuthentication {
	if x != nil {
		return x.Auth
	}
	return nil
}

// WorkspaceSpec is the specification of a workspace at runtime
type WorkspaceSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// workspace_image is the name of the Docker image this workspace runs
	WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"`
	// ide_image is the name of the Docker image used as IDE
	IdeImage string `protobuf:"bytes,2,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"`
	// headless marks this workspace a headless one - headless workspaces are not intended for users but for automation
	Headless bool `protobuf:"varint,3,opt,name=headless,proto3" json:"headless,omitempty"`
	// URL is the external URL of the workspace
	Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	// exposed_ports lists all ports which this workspace has exposed to the outside world
	ExposedPorts []*PortSpec `protobuf:"bytes,5,rep,name=exposed_ports,json=exposedPorts,proto3" json:"exposed_ports,omitempty"`
	// workspace type denotes what kind of workspace this is, e.g. if it's user-facing, prebuilding content or probing the service
	Type WorkspaceType `protobuf:"varint,6,opt,name=type,proto3,enum=wsman.WorkspaceType" json:"type,omitempty"`
	// The intervals in which a heartbeat must be received for the workspace not to time out
	Timeout string `protobuf:"bytes,7,opt,name=timeout,proto3" json:"timeout,omitempty"`
}

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

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

func (*WorkspaceSpec) ProtoMessage() {}

func (x *WorkspaceSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceSpec.ProtoReflect.Descriptor instead.
func (*WorkspaceSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{21}
}

func (x *WorkspaceSpec) GetWorkspaceImage() string {
	if x != nil {
		return x.WorkspaceImage
	}
	return ""
}

func (x *WorkspaceSpec) GetIdeImage() string {
	if x != nil {
		return x.IdeImage
	}
	return ""
}

func (x *WorkspaceSpec) GetHeadless() bool {
	if x != nil {
		return x.Headless
	}
	return false
}

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

func (x *WorkspaceSpec) GetExposedPorts() []*PortSpec {
	if x != nil {
		return x.ExposedPorts
	}
	return nil
}

func (x *WorkspaceSpec) GetType() WorkspaceType {
	if x != nil {
		return x.Type
	}
	return WorkspaceType_REGULAR
}

func (x *WorkspaceSpec) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

// PortSpec describes a networking port exposed on a workspace
type PortSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// port is the outward-facing port
	Port uint32 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
	// target is the inward-facing target port
	Target uint32 `protobuf:"varint,2,opt,name=target,proto3" json:"target,omitempty"`
	// visibility defines the visibility of the port
	Visibility PortVisibility `protobuf:"varint,3,opt,name=visibility,proto3,enum=wsman.PortVisibility" json:"visibility,omitempty"`
	// url is the public-facing URL this port is available at
	Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
}

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

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

func (*PortSpec) ProtoMessage() {}

func (x *PortSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 PortSpec.ProtoReflect.Descriptor instead.
func (*PortSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{22}
}

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

func (x *PortSpec) GetTarget() uint32 {
	if x != nil {
		return x.Target
	}
	return 0
}

func (x *PortSpec) GetVisibility() PortVisibility {
	if x != nil {
		return x.Visibility
	}
	return PortVisibility_PORT_VISIBILITY_PRIVATE
}

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

// WorkspaceCondition gives more detailed information as to the state of the workspace. Which condition actually
// has a value depends on the phase the workspace is in.
type WorkspaceConditions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// failed contains the reason the workspace failed to operate. If this field is empty, the workspace has not failed.
	Failed string `protobuf:"bytes,1,opt,name=failed,proto3" json:"failed,omitempty"`
	// timeout contains the reason the workspace has timed out. If this field is empty, the workspace has not timed out.
	Timeout string `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// pulling_images marks if the workspace is currently pulling its images. This condition can only be set during PhaseCreating
	PullingImages WorkspaceConditionBool `protobuf:"varint,3,opt,name=pulling_images,json=pullingImages,proto3,enum=wsman.WorkspaceConditionBool" json:"pulling_images,omitempty"`
	// service_exists denotes if the workspace theia-/ports- services exist. This condition will be true if either of the two services exist.
	ServiceExists WorkspaceConditionBool `protobuf:"varint,4,opt,name=service_exists,json=serviceExists,proto3,enum=wsman.WorkspaceConditionBool" json:"service_exists,omitempty"`
	// snapshot contains a snapshot URL if a snapshot was produced prior to shutting the workspace down. This condition is only used for headless workspaces.
	Snapshot string `protobuf:"bytes,5,opt,name=snapshot,proto3" json:"snapshot,omitempty"`
	// final_backup_complete determines if the last state of the workspace has been backed up to remote storage.
	// Once this is true, a new workspace with the same ID will be able to use this backup.
	FinalBackupComplete WorkspaceConditionBool `protobuf:"varint,6,opt,name=final_backup_complete,json=finalBackupComplete,proto3,enum=wsman.WorkspaceConditionBool" json:"final_backup_complete,omitempty"`
	// deployed indicates if a workspace container is currently deployed. If this condition is false, there is no means for the user to alter the workspace content.
	Deployed WorkspaceConditionBool `protobuf:"varint,7,opt,name=deployed,proto3,enum=wsman.WorkspaceConditionBool" json:"deployed,omitempty"`
	// network_not_ready indicates if a workspace container is currently experiencing a network problem.
	NetworkNotReady WorkspaceConditionBool `protobuf:"varint,8,opt,name=network_not_ready,json=networkNotReady,proto3,enum=wsman.WorkspaceConditionBool" json:"network_not_ready,omitempty"`
	// first_user_activity is the time when MarkActive was first called on the workspace
	FirstUserActivity *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=first_user_activity,json=firstUserActivity,proto3" json:"first_user_activity,omitempty"`
}

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

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

func (*WorkspaceConditions) ProtoMessage() {}

func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceConditions.ProtoReflect.Descriptor instead.
func (*WorkspaceConditions) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{23}
}

func (x *WorkspaceConditions) GetFailed() string {
	if x != nil {
		return x.Failed
	}
	return ""
}

func (x *WorkspaceConditions) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *WorkspaceConditions) GetPullingImages() WorkspaceConditionBool {
	if x != nil {
		return x.PullingImages
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetServiceExists() WorkspaceConditionBool {
	if x != nil {
		return x.ServiceExists
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetSnapshot() string {
	if x != nil {
		return x.Snapshot
	}
	return ""
}

func (x *WorkspaceConditions) GetFinalBackupComplete() WorkspaceConditionBool {
	if x != nil {
		return x.FinalBackupComplete
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetDeployed() WorkspaceConditionBool {
	if x != nil {
		return x.Deployed
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetNetworkNotReady() WorkspaceConditionBool {
	if x != nil {
		return x.NetworkNotReady
	}
	return WorkspaceConditionBool_FALSE
}

func (x *WorkspaceConditions) GetFirstUserActivity() *timestamppb.Timestamp {
	if x != nil {
		return x.FirstUserActivity
	}
	return nil
}

// WorkspaceMetadata is data associated with a workspace that's required for other parts of the system to function
type WorkspaceMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// owner is the ID of the Gitpod user to whom we'll bill this workspace and who we consider responsible for its content
	Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty"`
	// meta_id is the workspace ID of this currently running workspace instance on the "meta pool" side
	MetaId string `protobuf:"bytes,2,opt,name=meta_id,json=metaId,proto3" json:"meta_id,omitempty"`
	// started_at is the time when this workspace was started. Consider this field read-only, i.e. setting in a request will have no effect.
	StartedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"`
}

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

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

func (*WorkspaceMetadata) ProtoMessage() {}

func (x *WorkspaceMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceMetadata.ProtoReflect.Descriptor instead.
func (*WorkspaceMetadata) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{24}
}

func (x *WorkspaceMetadata) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *WorkspaceMetadata) GetMetaId() string {
	if x != nil {
		return x.MetaId
	}
	return ""
}

func (x *WorkspaceMetadata) GetStartedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.StartedAt
	}
	return nil
}

// WorkspaceRuntimeInfo details the workspace's runtime, e.g. executing system, node other information
// about the environment the workspace runs in. This information serves a diangostic purpose only and
// should not be directly acted upon.
type WorkspaceRuntimeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// node_name is the name of the node the workspace runs on
	NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"`
	// pod_name is the name of the pod the workspace runs in
	PodName string `protobuf:"bytes,2,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"`
	// node_ip is the IP of the node the workspace runs on
	NodeIp string `protobuf:"bytes,3,opt,name=node_ip,json=nodeIp,proto3" json:"node_ip,omitempty"`
}

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

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

func (*WorkspaceRuntimeInfo) ProtoMessage() {}

func (x *WorkspaceRuntimeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceRuntimeInfo.ProtoReflect.Descriptor instead.
func (*WorkspaceRuntimeInfo) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{25}
}

func (x *WorkspaceRuntimeInfo) GetNodeName() string {
	if x != nil {
		return x.NodeName
	}
	return ""
}

func (x *WorkspaceRuntimeInfo) GetPodName() string {
	if x != nil {
		return x.PodName
	}
	return ""
}

func (x *WorkspaceRuntimeInfo) GetNodeIp() string {
	if x != nil {
		return x.NodeIp
	}
	return ""
}

// WorkspaceAuthentication contains authentication information used by ws-proxy to allow/deny access to
// workspaces and their ports.
type WorkspaceAuthentication struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Admission describes who can access the workspace and its ports.
	Admission AdmissionLevel `protobuf:"varint,1,opt,name=admission,proto3,enum=wsman.AdmissionLevel" json:"admission,omitempty"`
	// Owner token is the token one needs to access the workspace. Its presence is checked by ws-proxy.
	OwnerToken string `protobuf:"bytes,2,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"`
}

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

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

func (*WorkspaceAuthentication) ProtoMessage() {}

func (x *WorkspaceAuthentication) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceAuthentication.ProtoReflect.Descriptor instead.
func (*WorkspaceAuthentication) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{26}
}

func (x *WorkspaceAuthentication) GetAdmission() AdmissionLevel {
	if x != nil {
		return x.Admission
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

func (x *WorkspaceAuthentication) GetOwnerToken() string {
	if x != nil {
		return x.OwnerToken
	}
	return ""
}

// StartWorkspaceSpec specifies the configuration of a workspace for a workspace start
type StartWorkspaceSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// workspace_image is the Docker image name of the workspace container
	WorkspaceImage string `protobuf:"bytes,1,opt,name=workspace_image,json=workspaceImage,proto3" json:"workspace_image,omitempty"`
	// ide_image is the Docker image name of the IDE image
	IdeImage string `protobuf:"bytes,2,opt,name=ide_image,json=ideImage,proto3" json:"ide_image,omitempty"`
	// feature_flags provide a means for starting variants of workspaces (e.g. a privileged one)
	FeatureFlags []WorkspaceFeatureFlag `protobuf:"varint,3,rep,packed,name=feature_flags,json=featureFlags,proto3,enum=wsman.WorkspaceFeatureFlag" json:"feature_flags,omitempty"`
	// initializer configures how the workspace is to be initialized
	Initializer *api.WorkspaceInitializer `protobuf:"bytes,4,opt,name=initializer,proto3" json:"initializer,omitempty"`
	// ports is the set of ports which ought to be exposed to the internet
	Ports []*PortSpec `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"`
	// envvars are user-defined environment variables which ought to be available in the workspace
	Envvars []*EnvironmentVariable `protobuf:"bytes,6,rep,name=envvars,proto3" json:"envvars,omitempty"`
	// checkout_location describes where the code has been checked out to
	CheckoutLocation string `protobuf:"bytes,7,opt,name=checkout_location,json=checkoutLocation,proto3" json:"checkout_location,omitempty"`
	// workspace_location describes where the workspace root of Theia will be
	WorkspaceLocation string `protobuf:"bytes,8,opt,name=workspace_location,json=workspaceLocation,proto3" json:"workspace_location,omitempty"`
	// Git configures the Git user in the workspace
	Git *GitSpec `protobuf:"bytes,9,opt,name=git,proto3" json:"git,omitempty"`
	// timeout optionally sets a custom workspace timeout
	Timeout string `protobuf:"bytes,10,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// admission controlls who can access the workspace and its ports.
	Admission AdmissionLevel `protobuf:"varint,11,opt,name=admission,proto3,enum=wsman.AdmissionLevel" json:"admission,omitempty"`
}

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

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

func (*StartWorkspaceSpec) ProtoMessage() {}

func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 StartWorkspaceSpec.ProtoReflect.Descriptor instead.
func (*StartWorkspaceSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{27}
}

func (x *StartWorkspaceSpec) GetWorkspaceImage() string {
	if x != nil {
		return x.WorkspaceImage
	}
	return ""
}

func (x *StartWorkspaceSpec) GetIdeImage() string {
	if x != nil {
		return x.IdeImage
	}
	return ""
}

func (x *StartWorkspaceSpec) GetFeatureFlags() []WorkspaceFeatureFlag {
	if x != nil {
		return x.FeatureFlags
	}
	return nil
}

func (x *StartWorkspaceSpec) GetInitializer() *api.WorkspaceInitializer {
	if x != nil {
		return x.Initializer
	}
	return nil
}

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

func (x *StartWorkspaceSpec) GetEnvvars() []*EnvironmentVariable {
	if x != nil {
		return x.Envvars
	}
	return nil
}

func (x *StartWorkspaceSpec) GetCheckoutLocation() string {
	if x != nil {
		return x.CheckoutLocation
	}
	return ""
}

func (x *StartWorkspaceSpec) GetWorkspaceLocation() string {
	if x != nil {
		return x.WorkspaceLocation
	}
	return ""
}

func (x *StartWorkspaceSpec) GetGit() *GitSpec {
	if x != nil {
		return x.Git
	}
	return nil
}

func (x *StartWorkspaceSpec) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *StartWorkspaceSpec) GetAdmission() AdmissionLevel {
	if x != nil {
		return x.Admission
	}
	return AdmissionLevel_ADMIT_OWNER_ONLY
}

// GitSpec configures the Git available within the workspace
type GitSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The Git username
	Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"`
	// The Git email address
	Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
}

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

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

func (*GitSpec) ProtoMessage() {}

func (x *GitSpec) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 GitSpec.ProtoReflect.Descriptor instead.
func (*GitSpec) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{28}
}

func (x *GitSpec) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

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

// EnvironmentVariable describes an env var as key/value pair
type EnvironmentVariable struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

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

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

func (*EnvironmentVariable) ProtoMessage() {}

func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 EnvironmentVariable.ProtoReflect.Descriptor instead.
func (*EnvironmentVariable) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{29}
}

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

func (x *EnvironmentVariable) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

// HeadlessWorkspaceEvent is a log statement issued by a headless workspace
type WorkspaceLogMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// ID is the ID of the workspace this event eminated from
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// metadata is the workspace metadata
	Metadata *WorkspaceMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// Message is the payload associated with this event
	Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
}

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

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

func (*WorkspaceLogMessage) ProtoMessage() {}

func (x *WorkspaceLogMessage) ProtoReflect() protoreflect.Message {
	mi := &file_core_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 WorkspaceLogMessage.ProtoReflect.Descriptor instead.
func (*WorkspaceLogMessage) Descriptor() ([]byte, []int) {
	return file_core_proto_rawDescGZIP(), []int{30}
}

func (x *WorkspaceLogMessage) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WorkspaceLogMessage) GetMetadata() *WorkspaceMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

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

var File_core_proto protoreflect.FileDescriptor

var file_core_proto_rawDesc = []byte{
	0x0a, 0x0a, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x1a, 0x25, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
	0x69, 0x7a, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x16, 0x0a, 0x14, 0x47,
	0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xe3, 0x01, 0x0a,
	0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
	0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x34, 0x0a,
	0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70,
	0x65, 0x63, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x05,
	0x10, 0x06, 0x22, 0x2a, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03,
	0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x5a,
	0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53,
	0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x74,
	0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x18, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22,
	0x6f, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0c,
	0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
	0x22, 0x12, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x22, 0xf9, 0x01, 0x0a, 0x11, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x03,
	0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d, 0x61,
	0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x03, 0x6c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x06,
	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
	0x22, 0x3b, 0x0a, 0x11, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x22, 0x14, 0x0a,
	0x12, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f,
	0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x12, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50,
	0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x15, 0x0a,
	0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x0a, 0x13, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70,
	0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x54,
	0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x56, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x2b, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x1a, 0x0a,
	0x18, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9e, 0x03, 0x0a, 0x0f, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a,
	0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x2b, 0x0a,
	0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68,
	0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x2d, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
	0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12,
	0x35, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72,
	0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x09,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0xfd, 0x01, 0x0a, 0x0d, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f,
	0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x49, 0x6d, 0x61,
	0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x65, 0x61, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x12, 0x34, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74,
	0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x50, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65,
	0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x7f, 0x0a, 0x08, 0x50, 0x6f,
	0x72, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61,
	0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67,
	0x65, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50,
	0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x76,
	0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x94, 0x04, 0x0a, 0x13,
	0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74,
	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69,
	0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67,
	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0d, 0x70, 0x75,
	0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x73,
	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
	0x6f, 0x6c, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74,
	0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x51, 0x0a,
	0x15, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x63, 0x6f,
	0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x13, 0x66, 0x69, 0x6e,
	0x61, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65,
	0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f,
	0x6c, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x12, 0x49, 0x0a, 0x11, 0x6e,
	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x6f,
	0x74, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x4a, 0x0a, 0x13, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 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,
	0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69,
	0x74, 0x79, 0x22, 0x7d, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x17, 0x0a,
	0x07, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x6d, 0x65, 0x74, 0x61, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65,
	0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41,
	0x74, 0x22, 0x67, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x75,
	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64,
	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f,
	0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x70, 0x22, 0x6f, 0x0a, 0x17, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52,
	0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77,
	0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x04, 0x0a, 0x12,
	0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x70,
	0x65, 0x63, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69,
	0x64, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x69, 0x64, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32,
	0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x0c, 0x66, 0x65,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x0b, 0x69, 0x6e,
	0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
	0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61,
	0x6c, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a,
	0x65, 0x72, 0x12, 0x25, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x70,
	0x65, 0x63, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x76,
	0x76, 0x61, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
	0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x76, 0x76, 0x61, 0x72, 0x73, 0x12,
	0x2b, 0x0a, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x68, 0x65, 0x63,
	0x6b, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12,
	0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70,
	0x61, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x03, 0x67,
	0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x18, 0x0a,
	0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x73, 0x6d,
	0x61, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65,
	0x6c, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x07,
	0x47, 0x69, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x3f, 0x0a, 0x13, 0x45, 0x6e, 0x76,
	0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x75, 0x0a, 0x13, 0x57, 0x6f,
	0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x34, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x2a, 0x34, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x52, 0x4d,
	0x41, 0x4c, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, 0x44, 0x49,
	0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x01, 0x2a, 0x3a, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x4d,
	0x49, 0x54, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x00, 0x12,
	0x12, 0x0a, 0x0e, 0x41, 0x44, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e,
	0x45, 0x10, 0x01, 0x2a, 0x49, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62,
	0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49,
	0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45,
	0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42,
	0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x2a, 0x38,
	0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x41, 0x4c, 0x53,
	0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x52, 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a,
	0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x02, 0x2a, 0x83, 0x01, 0x0a, 0x0e, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44,
	0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e,
	0x47, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a,
	0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47,
	0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45,
	0x44, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10,
	0x05, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x06, 0x2a, 0x68,
	0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00,
	0x12, 0x19, 0x0a, 0x15, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41,
	0x43, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x46,
	0x49, 0x58, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, 0x10, 0x05,
	0x22, 0x04, 0x08, 0x01, 0x10, 0x01, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03,
	0x10, 0x03, 0x22, 0x04, 0x08, 0x06, 0x10, 0x06, 0x2a, 0x40, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x47,
	0x55, 0x4c, 0x41, 0x52, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52, 0x45, 0x42, 0x55, 0x49,
	0x4c, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x10, 0x02, 0x12,
	0x09, 0x0a, 0x05, 0x47, 0x48, 0x4f, 0x53, 0x54, 0x10, 0x03, 0x32, 0x91, 0x06, 0x0a, 0x10, 0x57,
	0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12,
	0x4c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73,
	0x12, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4f, 0x0a,
	0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
	0x1c, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72,
	0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73,
	0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c,
	0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12,
	0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b,
	0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
	0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x11,
	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63,
	0x65, 0x12, 0x1f, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x20, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x62, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
	0x69, 0x62, 0x65, 0x12, 0x17, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73,
	0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x43, 0x0a, 0x0a, 0x4d, 0x61,
	0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x18, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x41,
	0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
	0x43, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x2e,
	0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e,
	0x53, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50,
	0x6f, 0x72, 0x74, 0x12, 0x19, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a,
	0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f,
	0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0c,
	0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1a, 0x2e, 0x77,
	0x73, 0x6d, 0x61, 0x6e, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x77, 0x73, 0x6d, 0x61, 0x6e,
	0x2e, 0x54, 0x61, 0x6b, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x77, 0x73,
	0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c,
	0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74,
	0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x77, 0x73,
	0x2d, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_core_proto_rawDescOnce sync.Once
	file_core_proto_rawDescData = file_core_proto_rawDesc
)

func file_core_proto_rawDescGZIP() []byte {
	file_core_proto_rawDescOnce.Do(func() {
		file_core_proto_rawDescData = protoimpl.X.CompressGZIP(file_core_proto_rawDescData)
	})
	return file_core_proto_rawDescData
}

var file_core_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_core_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_core_proto_goTypes = []interface{}{
	(StopWorkspacePolicy)(0),          // 0: wsman.StopWorkspacePolicy
	(AdmissionLevel)(0),               // 1: wsman.AdmissionLevel
	(PortVisibility)(0),               // 2: wsman.PortVisibility
	(WorkspaceConditionBool)(0),       // 3: wsman.WorkspaceConditionBool
	(WorkspacePhase)(0),               // 4: wsman.WorkspacePhase
	(WorkspaceFeatureFlag)(0),         // 5: wsman.WorkspaceFeatureFlag
	(WorkspaceType)(0),                // 6: wsman.WorkspaceType
	(*GetWorkspacesRequest)(nil),      // 7: wsman.GetWorkspacesRequest
	(*GetWorkspacesResponse)(nil),     // 8: wsman.GetWorkspacesResponse
	(*StartWorkspaceRequest)(nil),     // 9: wsman.StartWorkspaceRequest
	(*StartWorkspaceResponse)(nil),    // 10: wsman.StartWorkspaceResponse
	(*StopWorkspaceRequest)(nil),      // 11: wsman.StopWorkspaceRequest
	(*StopWorkspaceResponse)(nil),     // 12: wsman.StopWorkspaceResponse
	(*DescribeWorkspaceRequest)(nil),  // 13: wsman.DescribeWorkspaceRequest
	(*DescribeWorkspaceResponse)(nil), // 14: wsman.DescribeWorkspaceResponse
	(*SubscribeRequest)(nil),          // 15: wsman.SubscribeRequest
	(*SubscribeResponse)(nil),         // 16: wsman.SubscribeResponse
	(*MarkActiveRequest)(nil),         // 17: wsman.MarkActiveRequest
	(*MarkActiveResponse)(nil),        // 18: wsman.MarkActiveResponse
	(*SetTimeoutRequest)(nil),         // 19: wsman.SetTimeoutRequest
	(*SetTimeoutResponse)(nil),        // 20: wsman.SetTimeoutResponse
	(*ControlPortRequest)(nil),        // 21: wsman.ControlPortRequest
	(*ControlPortResponse)(nil),       // 22: wsman.ControlPortResponse
	(*TakeSnapshotRequest)(nil),       // 23: wsman.TakeSnapshotRequest
	(*TakeSnapshotResponse)(nil),      // 24: wsman.TakeSnapshotResponse
	(*ControlAdmissionRequest)(nil),   // 25: wsman.ControlAdmissionRequest
	(*ControlAdmissionResponse)(nil),  // 26: wsman.ControlAdmissionResponse
	(*WorkspaceStatus)(nil),           // 27: wsman.WorkspaceStatus
	(*WorkspaceSpec)(nil),             // 28: wsman.WorkspaceSpec
	(*PortSpec)(nil),                  // 29: wsman.PortSpec
	(*WorkspaceConditions)(nil),       // 30: wsman.WorkspaceConditions
	(*WorkspaceMetadata)(nil),         // 31: wsman.WorkspaceMetadata
	(*WorkspaceRuntimeInfo)(nil),      // 32: wsman.WorkspaceRuntimeInfo
	(*WorkspaceAuthentication)(nil),   // 33: wsman.WorkspaceAuthentication
	(*StartWorkspaceSpec)(nil),        // 34: wsman.StartWorkspaceSpec
	(*GitSpec)(nil),                   // 35: wsman.GitSpec
	(*EnvironmentVariable)(nil),       // 36: wsman.EnvironmentVariable
	(*WorkspaceLogMessage)(nil),       // 37: wsman.WorkspaceLogMessage
	nil,                               // 38: wsman.SubscribeResponse.HeaderEntry
	(*api.GitStatus)(nil),             // 39: contentservice.GitStatus
	(*timestamppb.Timestamp)(nil),     // 40: google.protobuf.Timestamp
	(*api.WorkspaceInitializer)(nil),  // 41: contentservice.WorkspaceInitializer
}
var file_core_proto_depIdxs = []int32{
	27, // 0: wsman.GetWorkspacesResponse.status:type_name -> wsman.WorkspaceStatus
	31, // 1: wsman.StartWorkspaceRequest.metadata:type_name -> wsman.WorkspaceMetadata
	34, // 2: wsman.StartWorkspaceRequest.spec:type_name -> wsman.StartWorkspaceSpec
	6,  // 3: wsman.StartWorkspaceRequest.type:type_name -> wsman.WorkspaceType
	0,  // 4: wsman.StopWorkspaceRequest.policy:type_name -> wsman.StopWorkspacePolicy
	27, // 5: wsman.DescribeWorkspaceResponse.status:type_name -> wsman.WorkspaceStatus
	27, // 6: wsman.SubscribeResponse.status:type_name -> wsman.WorkspaceStatus
	37, // 7: wsman.SubscribeResponse.log:type_name -> wsman.WorkspaceLogMessage
	38, // 8: wsman.SubscribeResponse.header:type_name -> wsman.SubscribeResponse.HeaderEntry
	29, // 9: wsman.ControlPortRequest.spec:type_name -> wsman.PortSpec
	1,  // 10: wsman.ControlAdmissionRequest.level:type_name -> wsman.AdmissionLevel
	31, // 11: wsman.WorkspaceStatus.metadata:type_name -> wsman.WorkspaceMetadata
	28, // 12: wsman.WorkspaceStatus.spec:type_name -> wsman.WorkspaceSpec
	4,  // 13: wsman.WorkspaceStatus.phase:type_name -> wsman.WorkspacePhase
	30, // 14: wsman.WorkspaceStatus.conditions:type_name -> wsman.WorkspaceConditions
	39, // 15: wsman.WorkspaceStatus.repo:type_name -> contentservice.GitStatus
	32, // 16: wsman.WorkspaceStatus.runtime:type_name -> wsman.WorkspaceRuntimeInfo
	33, // 17: wsman.WorkspaceStatus.auth:type_name -> wsman.WorkspaceAuthentication
	29, // 18: wsman.WorkspaceSpec.exposed_ports:type_name -> wsman.PortSpec
	6,  // 19: wsman.WorkspaceSpec.type:type_name -> wsman.WorkspaceType
	2,  // 20: wsman.PortSpec.visibility:type_name -> wsman.PortVisibility
	3,  // 21: wsman.WorkspaceConditions.pulling_images:type_name -> wsman.WorkspaceConditionBool
	3,  // 22: wsman.WorkspaceConditions.service_exists:type_name -> wsman.WorkspaceConditionBool
	3,  // 23: wsman.WorkspaceConditions.final_backup_complete:type_name -> wsman.WorkspaceConditionBool
	3,  // 24: wsman.WorkspaceConditions.deployed:type_name -> wsman.WorkspaceConditionBool
	3,  // 25: wsman.WorkspaceConditions.network_not_ready:type_name -> wsman.WorkspaceConditionBool
	40, // 26: wsman.WorkspaceConditions.first_user_activity:type_name -> google.protobuf.Timestamp
	40, // 27: wsman.WorkspaceMetadata.started_at:type_name -> google.protobuf.Timestamp
	1,  // 28: wsman.WorkspaceAuthentication.admission:type_name -> wsman.AdmissionLevel
	5,  // 29: wsman.StartWorkspaceSpec.feature_flags:type_name -> wsman.WorkspaceFeatureFlag
	41, // 30: wsman.StartWorkspaceSpec.initializer:type_name -> contentservice.WorkspaceInitializer
	29, // 31: wsman.StartWorkspaceSpec.ports:type_name -> wsman.PortSpec
	36, // 32: wsman.StartWorkspaceSpec.envvars:type_name -> wsman.EnvironmentVariable
	35, // 33: wsman.StartWorkspaceSpec.git:type_name -> wsman.GitSpec
	1,  // 34: wsman.StartWorkspaceSpec.admission:type_name -> wsman.AdmissionLevel
	31, // 35: wsman.WorkspaceLogMessage.metadata:type_name -> wsman.WorkspaceMetadata
	7,  // 36: wsman.WorkspaceManager.GetWorkspaces:input_type -> wsman.GetWorkspacesRequest
	9,  // 37: wsman.WorkspaceManager.StartWorkspace:input_type -> wsman.StartWorkspaceRequest
	11, // 38: wsman.WorkspaceManager.StopWorkspace:input_type -> wsman.StopWorkspaceRequest
	13, // 39: wsman.WorkspaceManager.DescribeWorkspace:input_type -> wsman.DescribeWorkspaceRequest
	15, // 40: wsman.WorkspaceManager.Subscribe:input_type -> wsman.SubscribeRequest
	17, // 41: wsman.WorkspaceManager.MarkActive:input_type -> wsman.MarkActiveRequest
	19, // 42: wsman.WorkspaceManager.SetTimeout:input_type -> wsman.SetTimeoutRequest
	21, // 43: wsman.WorkspaceManager.ControlPort:input_type -> wsman.ControlPortRequest
	23, // 44: wsman.WorkspaceManager.TakeSnapshot:input_type -> wsman.TakeSnapshotRequest
	25, // 45: wsman.WorkspaceManager.ControlAdmission:input_type -> wsman.ControlAdmissionRequest
	8,  // 46: wsman.WorkspaceManager.GetWorkspaces:output_type -> wsman.GetWorkspacesResponse
	10, // 47: wsman.WorkspaceManager.StartWorkspace:output_type -> wsman.StartWorkspaceResponse
	12, // 48: wsman.WorkspaceManager.StopWorkspace:output_type -> wsman.StopWorkspaceResponse
	14, // 49: wsman.WorkspaceManager.DescribeWorkspace:output_type -> wsman.DescribeWorkspaceResponse
	16, // 50: wsman.WorkspaceManager.Subscribe:output_type -> wsman.SubscribeResponse
	18, // 51: wsman.WorkspaceManager.MarkActive:output_type -> wsman.MarkActiveResponse
	20, // 52: wsman.WorkspaceManager.SetTimeout:output_type -> wsman.SetTimeoutResponse
	22, // 53: wsman.WorkspaceManager.ControlPort:output_type -> wsman.ControlPortResponse
	24, // 54: wsman.WorkspaceManager.TakeSnapshot:output_type -> wsman.TakeSnapshotResponse
	26, // 55: wsman.WorkspaceManager.ControlAdmission:output_type -> wsman.ControlAdmissionResponse
	46, // [46:56] is the sub-list for method output_type
	36, // [36:46] is the sub-list for method input_type
	36, // [36:36] is the sub-list for extension type_name
	36, // [36:36] is the sub-list for extension extendee
	0,  // [0:36] is the sub-list for field type_name
}

func init() { file_core_proto_init() }
func file_core_proto_init() {
	if File_core_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_core_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetWorkspacesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetWorkspacesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StopWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StopWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeWorkspaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DescribeWorkspaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubscribeResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MarkActiveRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MarkActiveResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetTimeoutRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetTimeoutResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlPortRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlPortResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TakeSnapshotRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TakeSnapshotResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlAdmissionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ControlAdmissionResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PortSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceConditions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceRuntimeInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceAuthentication); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StartWorkspaceSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GitSpec); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EnvironmentVariable); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_core_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WorkspaceLogMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_core_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*SubscribeResponse_Status)(nil),
		(*SubscribeResponse_Log)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_core_proto_rawDesc,
			NumEnums:      7,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_core_proto_goTypes,
		DependencyIndexes: file_core_proto_depIdxs,
		EnumInfos:         file_core_proto_enumTypes,
		MessageInfos:      file_core_proto_msgTypes,
	}.Build()
	File_core_proto = out.File
	file_core_proto_rawDesc = nil
	file_core_proto_goTypes = nil
	file_core_proto_depIdxs = nil
}
