cloud.google.com/go/aiplatform@v1.106.0/apiv1beta1/aiplatformpb/custom_job.pb.go (about)

     1  // Copyright 2025 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.35.2
    18  // 	protoc        v4.25.7
    19  // source: google/cloud/aiplatform/v1beta1/custom_job.proto
    20  
    21  package aiplatformpb
    22  
    23  import (
    24  	_ "google.golang.org/genproto/googleapis/api/annotations"
    25  	status "google.golang.org/genproto/googleapis/rpc/status"
    26  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    27  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    28  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    29  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    30  	reflect "reflect"
    31  	sync "sync"
    32  )
    33  
    34  const (
    35  	// Verify that this generated code is sufficiently up-to-date.
    36  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    37  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    38  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    39  )
    40  
    41  // Optional. This determines which type of scheduling strategy to use. Right
    42  // now users have two options such as STANDARD which will use regular on
    43  // demand resources to schedule the job, the other is SPOT which would
    44  // leverage spot resources alongwith regular resources to schedule
    45  // the job.
    46  type Scheduling_Strategy int32
    47  
    48  const (
    49  	// Strategy will default to STANDARD.
    50  	Scheduling_STRATEGY_UNSPECIFIED Scheduling_Strategy = 0
    51  	// Deprecated. Regular on-demand provisioning strategy.
    52  	//
    53  	// Deprecated: Marked as deprecated in google/cloud/aiplatform/v1beta1/custom_job.proto.
    54  	Scheduling_ON_DEMAND Scheduling_Strategy = 1
    55  	// Deprecated. Low cost by making potential use of spot resources.
    56  	//
    57  	// Deprecated: Marked as deprecated in google/cloud/aiplatform/v1beta1/custom_job.proto.
    58  	Scheduling_LOW_COST Scheduling_Strategy = 2
    59  	// Standard provisioning strategy uses regular on-demand resources.
    60  	Scheduling_STANDARD Scheduling_Strategy = 3
    61  	// Spot provisioning strategy uses spot resources.
    62  	Scheduling_SPOT Scheduling_Strategy = 4
    63  	// Flex Start strategy uses DWS to queue for resources.
    64  	Scheduling_FLEX_START Scheduling_Strategy = 6
    65  )
    66  
    67  // Enum value maps for Scheduling_Strategy.
    68  var (
    69  	Scheduling_Strategy_name = map[int32]string{
    70  		0: "STRATEGY_UNSPECIFIED",
    71  		1: "ON_DEMAND",
    72  		2: "LOW_COST",
    73  		3: "STANDARD",
    74  		4: "SPOT",
    75  		6: "FLEX_START",
    76  	}
    77  	Scheduling_Strategy_value = map[string]int32{
    78  		"STRATEGY_UNSPECIFIED": 0,
    79  		"ON_DEMAND":            1,
    80  		"LOW_COST":             2,
    81  		"STANDARD":             3,
    82  		"SPOT":                 4,
    83  		"FLEX_START":           6,
    84  	}
    85  )
    86  
    87  func (x Scheduling_Strategy) Enum() *Scheduling_Strategy {
    88  	p := new(Scheduling_Strategy)
    89  	*p = x
    90  	return p
    91  }
    92  
    93  func (x Scheduling_Strategy) String() string {
    94  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    95  }
    96  
    97  func (Scheduling_Strategy) Descriptor() protoreflect.EnumDescriptor {
    98  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes[0].Descriptor()
    99  }
   100  
   101  func (Scheduling_Strategy) Type() protoreflect.EnumType {
   102  	return &file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes[0]
   103  }
   104  
   105  func (x Scheduling_Strategy) Number() protoreflect.EnumNumber {
   106  	return protoreflect.EnumNumber(x)
   107  }
   108  
   109  // Deprecated: Use Scheduling_Strategy.Descriptor instead.
   110  func (Scheduling_Strategy) EnumDescriptor() ([]byte, []int) {
   111  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{5, 0}
   112  }
   113  
   114  // Represents a job that runs custom workloads such as a Docker container or a
   115  // Python package. A CustomJob can have multiple worker pools and each worker
   116  // pool can have its own machine and input spec. A CustomJob will be cleaned up
   117  // once the job enters terminal state (failed or succeeded).
   118  type CustomJob struct {
   119  	state         protoimpl.MessageState
   120  	sizeCache     protoimpl.SizeCache
   121  	unknownFields protoimpl.UnknownFields
   122  
   123  	// Output only. Resource name of a CustomJob.
   124  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   125  	// Required. The display name of the CustomJob.
   126  	// The name can be up to 128 characters long and can consist of any UTF-8
   127  	// characters.
   128  	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
   129  	// Required. Job spec.
   130  	JobSpec *CustomJobSpec `protobuf:"bytes,4,opt,name=job_spec,json=jobSpec,proto3" json:"job_spec,omitempty"`
   131  	// Output only. The detailed state of the job.
   132  	State JobState `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.aiplatform.v1beta1.JobState" json:"state,omitempty"`
   133  	// Output only. Time when the CustomJob was created.
   134  	CreateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
   135  	// Output only. Time when the CustomJob for the first time entered the
   136  	// `JOB_STATE_RUNNING` state.
   137  	StartTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
   138  	// Output only. Time when the CustomJob entered any of the following states:
   139  	// `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
   140  	EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
   141  	// Output only. Time when the CustomJob was most recently updated.
   142  	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
   143  	// Output only. Only populated when job's state is `JOB_STATE_FAILED` or
   144  	// `JOB_STATE_CANCELLED`.
   145  	Error *status.Status `protobuf:"bytes,10,opt,name=error,proto3" json:"error,omitempty"`
   146  	// The labels with user-defined metadata to organize CustomJobs.
   147  	//
   148  	// Label keys and values can be no longer than 64 characters
   149  	// (Unicode codepoints), can only contain lowercase letters, numeric
   150  	// characters, underscores and dashes. International characters are allowed.
   151  	//
   152  	// See https://goo.gl/xmQnxf for more information and examples of labels.
   153  	Labels map[string]string `protobuf:"bytes,11,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   154  	// Customer-managed encryption key options for a CustomJob. If this is set,
   155  	// then all resources created by the CustomJob will be encrypted with the
   156  	// provided encryption key.
   157  	EncryptionSpec *EncryptionSpec `protobuf:"bytes,12,opt,name=encryption_spec,json=encryptionSpec,proto3" json:"encryption_spec,omitempty"`
   158  	// Output only. URIs for accessing [interactive
   159  	// shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell)
   160  	// (one URI for each training node). Only available if
   161  	// [job_spec.enable_web_access][google.cloud.aiplatform.v1beta1.CustomJobSpec.enable_web_access]
   162  	// is `true`.
   163  	//
   164  	// The keys are names of each node in the training job; for example,
   165  	// `workerpool0-0` for the primary node, `workerpool1-0` for the first node in
   166  	// the second worker pool, and `workerpool1-1` for the second node in the
   167  	// second worker pool.
   168  	//
   169  	// The values are the URIs for each node's interactive shell.
   170  	WebAccessUris map[string]string `protobuf:"bytes,16,rep,name=web_access_uris,json=webAccessUris,proto3" json:"web_access_uris,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
   171  	// Output only. Reserved for future use.
   172  	SatisfiesPzs bool `protobuf:"varint,18,opt,name=satisfies_pzs,json=satisfiesPzs,proto3" json:"satisfies_pzs,omitempty"`
   173  	// Output only. Reserved for future use.
   174  	SatisfiesPzi bool `protobuf:"varint,19,opt,name=satisfies_pzi,json=satisfiesPzi,proto3" json:"satisfies_pzi,omitempty"`
   175  }
   176  
   177  func (x *CustomJob) Reset() {
   178  	*x = CustomJob{}
   179  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[0]
   180  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   181  	ms.StoreMessageInfo(mi)
   182  }
   183  
   184  func (x *CustomJob) String() string {
   185  	return protoimpl.X.MessageStringOf(x)
   186  }
   187  
   188  func (*CustomJob) ProtoMessage() {}
   189  
   190  func (x *CustomJob) ProtoReflect() protoreflect.Message {
   191  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[0]
   192  	if x != nil {
   193  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   194  		if ms.LoadMessageInfo() == nil {
   195  			ms.StoreMessageInfo(mi)
   196  		}
   197  		return ms
   198  	}
   199  	return mi.MessageOf(x)
   200  }
   201  
   202  // Deprecated: Use CustomJob.ProtoReflect.Descriptor instead.
   203  func (*CustomJob) Descriptor() ([]byte, []int) {
   204  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{0}
   205  }
   206  
   207  func (x *CustomJob) GetName() string {
   208  	if x != nil {
   209  		return x.Name
   210  	}
   211  	return ""
   212  }
   213  
   214  func (x *CustomJob) GetDisplayName() string {
   215  	if x != nil {
   216  		return x.DisplayName
   217  	}
   218  	return ""
   219  }
   220  
   221  func (x *CustomJob) GetJobSpec() *CustomJobSpec {
   222  	if x != nil {
   223  		return x.JobSpec
   224  	}
   225  	return nil
   226  }
   227  
   228  func (x *CustomJob) GetState() JobState {
   229  	if x != nil {
   230  		return x.State
   231  	}
   232  	return JobState_JOB_STATE_UNSPECIFIED
   233  }
   234  
   235  func (x *CustomJob) GetCreateTime() *timestamppb.Timestamp {
   236  	if x != nil {
   237  		return x.CreateTime
   238  	}
   239  	return nil
   240  }
   241  
   242  func (x *CustomJob) GetStartTime() *timestamppb.Timestamp {
   243  	if x != nil {
   244  		return x.StartTime
   245  	}
   246  	return nil
   247  }
   248  
   249  func (x *CustomJob) GetEndTime() *timestamppb.Timestamp {
   250  	if x != nil {
   251  		return x.EndTime
   252  	}
   253  	return nil
   254  }
   255  
   256  func (x *CustomJob) GetUpdateTime() *timestamppb.Timestamp {
   257  	if x != nil {
   258  		return x.UpdateTime
   259  	}
   260  	return nil
   261  }
   262  
   263  func (x *CustomJob) GetError() *status.Status {
   264  	if x != nil {
   265  		return x.Error
   266  	}
   267  	return nil
   268  }
   269  
   270  func (x *CustomJob) GetLabels() map[string]string {
   271  	if x != nil {
   272  		return x.Labels
   273  	}
   274  	return nil
   275  }
   276  
   277  func (x *CustomJob) GetEncryptionSpec() *EncryptionSpec {
   278  	if x != nil {
   279  		return x.EncryptionSpec
   280  	}
   281  	return nil
   282  }
   283  
   284  func (x *CustomJob) GetWebAccessUris() map[string]string {
   285  	if x != nil {
   286  		return x.WebAccessUris
   287  	}
   288  	return nil
   289  }
   290  
   291  func (x *CustomJob) GetSatisfiesPzs() bool {
   292  	if x != nil {
   293  		return x.SatisfiesPzs
   294  	}
   295  	return false
   296  }
   297  
   298  func (x *CustomJob) GetSatisfiesPzi() bool {
   299  	if x != nil {
   300  		return x.SatisfiesPzi
   301  	}
   302  	return false
   303  }
   304  
   305  // Represents the spec of a CustomJob.
   306  type CustomJobSpec struct {
   307  	state         protoimpl.MessageState
   308  	sizeCache     protoimpl.SizeCache
   309  	unknownFields protoimpl.UnknownFields
   310  
   311  	// Optional. The ID of the PersistentResource in the same Project and Location
   312  	// which to run
   313  	//
   314  	// If this is specified, the job will be run on existing machines held by the
   315  	// PersistentResource instead of on-demand short-live machines.
   316  	// The network and CMEK configs on the job should be consistent with those on
   317  	// the PersistentResource, otherwise, the job will be rejected.
   318  	PersistentResourceId string `protobuf:"bytes,14,opt,name=persistent_resource_id,json=persistentResourceId,proto3" json:"persistent_resource_id,omitempty"`
   319  	// Required. The spec of the worker pools including machine type and Docker
   320  	// image. All worker pools except the first one are optional and can be
   321  	// skipped by providing an empty value.
   322  	WorkerPoolSpecs []*WorkerPoolSpec `protobuf:"bytes,1,rep,name=worker_pool_specs,json=workerPoolSpecs,proto3" json:"worker_pool_specs,omitempty"`
   323  	// Scheduling options for a CustomJob.
   324  	Scheduling *Scheduling `protobuf:"bytes,3,opt,name=scheduling,proto3" json:"scheduling,omitempty"`
   325  	// Specifies the service account for workload run-as account.
   326  	// Users submitting jobs must have act-as permission on this run-as account.
   327  	// If unspecified, the [Vertex AI Custom Code Service
   328  	// Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents)
   329  	// for the CustomJob's project is used.
   330  	ServiceAccount string `protobuf:"bytes,4,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
   331  	// Optional. The full name of the Compute Engine
   332  	// [network](/compute/docs/networks-and-firewalls#networks) to which the Job
   333  	// should be peered. For example, `projects/12345/global/networks/myVPC`.
   334  	// [Format](/compute/docs/reference/rest/v1/networks/insert)
   335  	// is of the form `projects/{project}/global/networks/{network}`.
   336  	// Where {project} is a project number, as in `12345`, and {network} is a
   337  	// network name.
   338  	//
   339  	// To specify this field, you must have already [configured VPC Network
   340  	// Peering for Vertex
   341  	// AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering).
   342  	//
   343  	// If this field is left unspecified, the job is not peered with any network.
   344  	Network string `protobuf:"bytes,5,opt,name=network,proto3" json:"network,omitempty"`
   345  	// Optional. A list of names for the reserved ip ranges under the VPC network
   346  	// that can be used for this job.
   347  	//
   348  	// If set, we will deploy the job within the provided ip ranges. Otherwise,
   349  	// the job will be deployed to any ip ranges under the provided VPC
   350  	// network.
   351  	//
   352  	// Example: ['vertex-ai-ip-range'].
   353  	ReservedIpRanges []string `protobuf:"bytes,13,rep,name=reserved_ip_ranges,json=reservedIpRanges,proto3" json:"reserved_ip_ranges,omitempty"`
   354  	// Optional. Configuration for PSC-I for CustomJob.
   355  	PscInterfaceConfig *PscInterfaceConfig `protobuf:"bytes,21,opt,name=psc_interface_config,json=pscInterfaceConfig,proto3" json:"psc_interface_config,omitempty"`
   356  	// The Cloud Storage location to store the output of this CustomJob or
   357  	// HyperparameterTuningJob. For HyperparameterTuningJob,
   358  	// the baseOutputDirectory of
   359  	// each child CustomJob backing a Trial is set to a subdirectory of name
   360  	// [id][google.cloud.aiplatform.v1beta1.Trial.id] under its parent
   361  	// HyperparameterTuningJob's baseOutputDirectory.
   362  	//
   363  	// The following Vertex AI environment variables will be passed to
   364  	// containers or python modules when this field is set:
   365  	//
   366  	//	For CustomJob:
   367  	//
   368  	//	* AIP_MODEL_DIR = `<base_output_directory>/model/`
   369  	//	* AIP_CHECKPOINT_DIR = `<base_output_directory>/checkpoints/`
   370  	//	* AIP_TENSORBOARD_LOG_DIR = `<base_output_directory>/logs/`
   371  	//
   372  	//	For CustomJob backing a Trial of HyperparameterTuningJob:
   373  	//
   374  	//	* AIP_MODEL_DIR = `<base_output_directory>/<trial_id>/model/`
   375  	//	* AIP_CHECKPOINT_DIR = `<base_output_directory>/<trial_id>/checkpoints/`
   376  	//	* AIP_TENSORBOARD_LOG_DIR = `<base_output_directory>/<trial_id>/logs/`
   377  	BaseOutputDirectory *GcsDestination `protobuf:"bytes,6,opt,name=base_output_directory,json=baseOutputDirectory,proto3" json:"base_output_directory,omitempty"`
   378  	// The ID of the location to store protected artifacts. e.g. us-central1.
   379  	// Populate only when the location is different than CustomJob location.
   380  	// List of supported locations:
   381  	// https://cloud.google.com/vertex-ai/docs/general/locations
   382  	ProtectedArtifactLocationId string `protobuf:"bytes,19,opt,name=protected_artifact_location_id,json=protectedArtifactLocationId,proto3" json:"protected_artifact_location_id,omitempty"`
   383  	// Optional. The name of a Vertex AI
   384  	// [Tensorboard][google.cloud.aiplatform.v1beta1.Tensorboard] resource to
   385  	// which this CustomJob will upload Tensorboard logs. Format:
   386  	// `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
   387  	Tensorboard string `protobuf:"bytes,7,opt,name=tensorboard,proto3" json:"tensorboard,omitempty"`
   388  	// Optional. Whether you want Vertex AI to enable [interactive shell
   389  	// access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell)
   390  	// to training containers.
   391  	//
   392  	// If set to `true`, you can access interactive shells at the URIs given
   393  	// by
   394  	// [CustomJob.web_access_uris][google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris]
   395  	// or
   396  	// [Trial.web_access_uris][google.cloud.aiplatform.v1beta1.Trial.web_access_uris]
   397  	// (within
   398  	// [HyperparameterTuningJob.trials][google.cloud.aiplatform.v1beta1.HyperparameterTuningJob.trials]).
   399  	EnableWebAccess bool `protobuf:"varint,10,opt,name=enable_web_access,json=enableWebAccess,proto3" json:"enable_web_access,omitempty"`
   400  	// Optional. Whether you want Vertex AI to enable access to the customized
   401  	// dashboard in training chief container.
   402  	//
   403  	// If set to `true`, you can access the dashboard at the URIs given
   404  	// by
   405  	// [CustomJob.web_access_uris][google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris]
   406  	// or
   407  	// [Trial.web_access_uris][google.cloud.aiplatform.v1beta1.Trial.web_access_uris]
   408  	// (within
   409  	// [HyperparameterTuningJob.trials][google.cloud.aiplatform.v1beta1.HyperparameterTuningJob.trials]).
   410  	EnableDashboardAccess bool `protobuf:"varint,16,opt,name=enable_dashboard_access,json=enableDashboardAccess,proto3" json:"enable_dashboard_access,omitempty"`
   411  	// Optional. The Experiment associated with this job.
   412  	// Format:
   413  	// `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
   414  	Experiment string `protobuf:"bytes,17,opt,name=experiment,proto3" json:"experiment,omitempty"`
   415  	// Optional. The Experiment Run associated with this job.
   416  	// Format:
   417  	// `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
   418  	ExperimentRun string `protobuf:"bytes,18,opt,name=experiment_run,json=experimentRun,proto3" json:"experiment_run,omitempty"`
   419  	// Optional. The name of the Model resources for which to generate a mapping
   420  	// to artifact URIs. Applicable only to some of the Google-provided custom
   421  	// jobs. Format: `projects/{project}/locations/{location}/models/{model}`
   422  	//
   423  	// In order to retrieve a specific version of the model, also provide
   424  	// the version ID or version alias.
   425  	//
   426  	//	Example: `projects/{project}/locations/{location}/models/{model}@2`
   427  	//	           or
   428  	//	         `projects/{project}/locations/{location}/models/{model}@golden`
   429  	//
   430  	// If no version ID or alias is specified, the "default" version will be
   431  	// returned. The "default" version alias is created for the first version of
   432  	// the model, and can be moved to other versions later on. There will be
   433  	// exactly one default version.
   434  	Models []string `protobuf:"bytes,20,rep,name=models,proto3" json:"models,omitempty"`
   435  }
   436  
   437  func (x *CustomJobSpec) Reset() {
   438  	*x = CustomJobSpec{}
   439  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[1]
   440  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   441  	ms.StoreMessageInfo(mi)
   442  }
   443  
   444  func (x *CustomJobSpec) String() string {
   445  	return protoimpl.X.MessageStringOf(x)
   446  }
   447  
   448  func (*CustomJobSpec) ProtoMessage() {}
   449  
   450  func (x *CustomJobSpec) ProtoReflect() protoreflect.Message {
   451  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[1]
   452  	if x != nil {
   453  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   454  		if ms.LoadMessageInfo() == nil {
   455  			ms.StoreMessageInfo(mi)
   456  		}
   457  		return ms
   458  	}
   459  	return mi.MessageOf(x)
   460  }
   461  
   462  // Deprecated: Use CustomJobSpec.ProtoReflect.Descriptor instead.
   463  func (*CustomJobSpec) Descriptor() ([]byte, []int) {
   464  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{1}
   465  }
   466  
   467  func (x *CustomJobSpec) GetPersistentResourceId() string {
   468  	if x != nil {
   469  		return x.PersistentResourceId
   470  	}
   471  	return ""
   472  }
   473  
   474  func (x *CustomJobSpec) GetWorkerPoolSpecs() []*WorkerPoolSpec {
   475  	if x != nil {
   476  		return x.WorkerPoolSpecs
   477  	}
   478  	return nil
   479  }
   480  
   481  func (x *CustomJobSpec) GetScheduling() *Scheduling {
   482  	if x != nil {
   483  		return x.Scheduling
   484  	}
   485  	return nil
   486  }
   487  
   488  func (x *CustomJobSpec) GetServiceAccount() string {
   489  	if x != nil {
   490  		return x.ServiceAccount
   491  	}
   492  	return ""
   493  }
   494  
   495  func (x *CustomJobSpec) GetNetwork() string {
   496  	if x != nil {
   497  		return x.Network
   498  	}
   499  	return ""
   500  }
   501  
   502  func (x *CustomJobSpec) GetReservedIpRanges() []string {
   503  	if x != nil {
   504  		return x.ReservedIpRanges
   505  	}
   506  	return nil
   507  }
   508  
   509  func (x *CustomJobSpec) GetPscInterfaceConfig() *PscInterfaceConfig {
   510  	if x != nil {
   511  		return x.PscInterfaceConfig
   512  	}
   513  	return nil
   514  }
   515  
   516  func (x *CustomJobSpec) GetBaseOutputDirectory() *GcsDestination {
   517  	if x != nil {
   518  		return x.BaseOutputDirectory
   519  	}
   520  	return nil
   521  }
   522  
   523  func (x *CustomJobSpec) GetProtectedArtifactLocationId() string {
   524  	if x != nil {
   525  		return x.ProtectedArtifactLocationId
   526  	}
   527  	return ""
   528  }
   529  
   530  func (x *CustomJobSpec) GetTensorboard() string {
   531  	if x != nil {
   532  		return x.Tensorboard
   533  	}
   534  	return ""
   535  }
   536  
   537  func (x *CustomJobSpec) GetEnableWebAccess() bool {
   538  	if x != nil {
   539  		return x.EnableWebAccess
   540  	}
   541  	return false
   542  }
   543  
   544  func (x *CustomJobSpec) GetEnableDashboardAccess() bool {
   545  	if x != nil {
   546  		return x.EnableDashboardAccess
   547  	}
   548  	return false
   549  }
   550  
   551  func (x *CustomJobSpec) GetExperiment() string {
   552  	if x != nil {
   553  		return x.Experiment
   554  	}
   555  	return ""
   556  }
   557  
   558  func (x *CustomJobSpec) GetExperimentRun() string {
   559  	if x != nil {
   560  		return x.ExperimentRun
   561  	}
   562  	return ""
   563  }
   564  
   565  func (x *CustomJobSpec) GetModels() []string {
   566  	if x != nil {
   567  		return x.Models
   568  	}
   569  	return nil
   570  }
   571  
   572  // Represents the spec of a worker pool in a job.
   573  type WorkerPoolSpec struct {
   574  	state         protoimpl.MessageState
   575  	sizeCache     protoimpl.SizeCache
   576  	unknownFields protoimpl.UnknownFields
   577  
   578  	// The custom task to be executed in this worker pool.
   579  	//
   580  	// Types that are assignable to Task:
   581  	//
   582  	//	*WorkerPoolSpec_ContainerSpec
   583  	//	*WorkerPoolSpec_PythonPackageSpec
   584  	Task isWorkerPoolSpec_Task `protobuf_oneof:"task"`
   585  	// Optional. Immutable. The specification of a single machine.
   586  	MachineSpec *MachineSpec `protobuf:"bytes,1,opt,name=machine_spec,json=machineSpec,proto3" json:"machine_spec,omitempty"`
   587  	// Optional. The number of worker replicas to use for this worker pool.
   588  	ReplicaCount int64 `protobuf:"varint,2,opt,name=replica_count,json=replicaCount,proto3" json:"replica_count,omitempty"`
   589  	// Optional. List of NFS mount spec.
   590  	NfsMounts []*NfsMount `protobuf:"bytes,4,rep,name=nfs_mounts,json=nfsMounts,proto3" json:"nfs_mounts,omitempty"`
   591  	// Disk spec.
   592  	DiskSpec *DiskSpec `protobuf:"bytes,5,opt,name=disk_spec,json=diskSpec,proto3" json:"disk_spec,omitempty"`
   593  }
   594  
   595  func (x *WorkerPoolSpec) Reset() {
   596  	*x = WorkerPoolSpec{}
   597  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2]
   598  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   599  	ms.StoreMessageInfo(mi)
   600  }
   601  
   602  func (x *WorkerPoolSpec) String() string {
   603  	return protoimpl.X.MessageStringOf(x)
   604  }
   605  
   606  func (*WorkerPoolSpec) ProtoMessage() {}
   607  
   608  func (x *WorkerPoolSpec) ProtoReflect() protoreflect.Message {
   609  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2]
   610  	if x != nil {
   611  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   612  		if ms.LoadMessageInfo() == nil {
   613  			ms.StoreMessageInfo(mi)
   614  		}
   615  		return ms
   616  	}
   617  	return mi.MessageOf(x)
   618  }
   619  
   620  // Deprecated: Use WorkerPoolSpec.ProtoReflect.Descriptor instead.
   621  func (*WorkerPoolSpec) Descriptor() ([]byte, []int) {
   622  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{2}
   623  }
   624  
   625  func (m *WorkerPoolSpec) GetTask() isWorkerPoolSpec_Task {
   626  	if m != nil {
   627  		return m.Task
   628  	}
   629  	return nil
   630  }
   631  
   632  func (x *WorkerPoolSpec) GetContainerSpec() *ContainerSpec {
   633  	if x, ok := x.GetTask().(*WorkerPoolSpec_ContainerSpec); ok {
   634  		return x.ContainerSpec
   635  	}
   636  	return nil
   637  }
   638  
   639  func (x *WorkerPoolSpec) GetPythonPackageSpec() *PythonPackageSpec {
   640  	if x, ok := x.GetTask().(*WorkerPoolSpec_PythonPackageSpec); ok {
   641  		return x.PythonPackageSpec
   642  	}
   643  	return nil
   644  }
   645  
   646  func (x *WorkerPoolSpec) GetMachineSpec() *MachineSpec {
   647  	if x != nil {
   648  		return x.MachineSpec
   649  	}
   650  	return nil
   651  }
   652  
   653  func (x *WorkerPoolSpec) GetReplicaCount() int64 {
   654  	if x != nil {
   655  		return x.ReplicaCount
   656  	}
   657  	return 0
   658  }
   659  
   660  func (x *WorkerPoolSpec) GetNfsMounts() []*NfsMount {
   661  	if x != nil {
   662  		return x.NfsMounts
   663  	}
   664  	return nil
   665  }
   666  
   667  func (x *WorkerPoolSpec) GetDiskSpec() *DiskSpec {
   668  	if x != nil {
   669  		return x.DiskSpec
   670  	}
   671  	return nil
   672  }
   673  
   674  type isWorkerPoolSpec_Task interface {
   675  	isWorkerPoolSpec_Task()
   676  }
   677  
   678  type WorkerPoolSpec_ContainerSpec struct {
   679  	// The custom container task.
   680  	ContainerSpec *ContainerSpec `protobuf:"bytes,6,opt,name=container_spec,json=containerSpec,proto3,oneof"`
   681  }
   682  
   683  type WorkerPoolSpec_PythonPackageSpec struct {
   684  	// The Python packaged task.
   685  	PythonPackageSpec *PythonPackageSpec `protobuf:"bytes,7,opt,name=python_package_spec,json=pythonPackageSpec,proto3,oneof"`
   686  }
   687  
   688  func (*WorkerPoolSpec_ContainerSpec) isWorkerPoolSpec_Task() {}
   689  
   690  func (*WorkerPoolSpec_PythonPackageSpec) isWorkerPoolSpec_Task() {}
   691  
   692  // The spec of a Container.
   693  type ContainerSpec struct {
   694  	state         protoimpl.MessageState
   695  	sizeCache     protoimpl.SizeCache
   696  	unknownFields protoimpl.UnknownFields
   697  
   698  	// Required. The URI of a container image in the Container Registry that is to
   699  	// be run on each worker replica.
   700  	ImageUri string `protobuf:"bytes,1,opt,name=image_uri,json=imageUri,proto3" json:"image_uri,omitempty"`
   701  	// The command to be invoked when the container is started.
   702  	// It overrides the entrypoint instruction in Dockerfile when provided.
   703  	Command []string `protobuf:"bytes,2,rep,name=command,proto3" json:"command,omitempty"`
   704  	// The arguments to be passed when starting the container.
   705  	Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
   706  	// Environment variables to be passed to the container.
   707  	// Maximum limit is 100.
   708  	Env []*EnvVar `protobuf:"bytes,4,rep,name=env,proto3" json:"env,omitempty"`
   709  }
   710  
   711  func (x *ContainerSpec) Reset() {
   712  	*x = ContainerSpec{}
   713  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[3]
   714  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   715  	ms.StoreMessageInfo(mi)
   716  }
   717  
   718  func (x *ContainerSpec) String() string {
   719  	return protoimpl.X.MessageStringOf(x)
   720  }
   721  
   722  func (*ContainerSpec) ProtoMessage() {}
   723  
   724  func (x *ContainerSpec) ProtoReflect() protoreflect.Message {
   725  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[3]
   726  	if x != nil {
   727  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   728  		if ms.LoadMessageInfo() == nil {
   729  			ms.StoreMessageInfo(mi)
   730  		}
   731  		return ms
   732  	}
   733  	return mi.MessageOf(x)
   734  }
   735  
   736  // Deprecated: Use ContainerSpec.ProtoReflect.Descriptor instead.
   737  func (*ContainerSpec) Descriptor() ([]byte, []int) {
   738  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{3}
   739  }
   740  
   741  func (x *ContainerSpec) GetImageUri() string {
   742  	if x != nil {
   743  		return x.ImageUri
   744  	}
   745  	return ""
   746  }
   747  
   748  func (x *ContainerSpec) GetCommand() []string {
   749  	if x != nil {
   750  		return x.Command
   751  	}
   752  	return nil
   753  }
   754  
   755  func (x *ContainerSpec) GetArgs() []string {
   756  	if x != nil {
   757  		return x.Args
   758  	}
   759  	return nil
   760  }
   761  
   762  func (x *ContainerSpec) GetEnv() []*EnvVar {
   763  	if x != nil {
   764  		return x.Env
   765  	}
   766  	return nil
   767  }
   768  
   769  // The spec of a Python packaged code.
   770  type PythonPackageSpec struct {
   771  	state         protoimpl.MessageState
   772  	sizeCache     protoimpl.SizeCache
   773  	unknownFields protoimpl.UnknownFields
   774  
   775  	// Required. The URI of a container image in Artifact Registry that will run
   776  	// the provided Python package. Vertex AI provides a wide range of executor
   777  	// images with pre-installed packages to meet users' various use cases. See
   778  	// the list of [pre-built containers for
   779  	// training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers).
   780  	// You must use an image from this list.
   781  	ExecutorImageUri string `protobuf:"bytes,1,opt,name=executor_image_uri,json=executorImageUri,proto3" json:"executor_image_uri,omitempty"`
   782  	// Required. The Google Cloud Storage location of the Python package files
   783  	// which are the training program and its dependent packages. The maximum
   784  	// number of package URIs is 100.
   785  	PackageUris []string `protobuf:"bytes,2,rep,name=package_uris,json=packageUris,proto3" json:"package_uris,omitempty"`
   786  	// Required. The Python module name to run after installing the packages.
   787  	PythonModule string `protobuf:"bytes,3,opt,name=python_module,json=pythonModule,proto3" json:"python_module,omitempty"`
   788  	// Command line arguments to be passed to the Python task.
   789  	Args []string `protobuf:"bytes,4,rep,name=args,proto3" json:"args,omitempty"`
   790  	// Environment variables to be passed to the python module.
   791  	// Maximum limit is 100.
   792  	Env []*EnvVar `protobuf:"bytes,5,rep,name=env,proto3" json:"env,omitempty"`
   793  }
   794  
   795  func (x *PythonPackageSpec) Reset() {
   796  	*x = PythonPackageSpec{}
   797  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[4]
   798  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   799  	ms.StoreMessageInfo(mi)
   800  }
   801  
   802  func (x *PythonPackageSpec) String() string {
   803  	return protoimpl.X.MessageStringOf(x)
   804  }
   805  
   806  func (*PythonPackageSpec) ProtoMessage() {}
   807  
   808  func (x *PythonPackageSpec) ProtoReflect() protoreflect.Message {
   809  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[4]
   810  	if x != nil {
   811  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   812  		if ms.LoadMessageInfo() == nil {
   813  			ms.StoreMessageInfo(mi)
   814  		}
   815  		return ms
   816  	}
   817  	return mi.MessageOf(x)
   818  }
   819  
   820  // Deprecated: Use PythonPackageSpec.ProtoReflect.Descriptor instead.
   821  func (*PythonPackageSpec) Descriptor() ([]byte, []int) {
   822  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{4}
   823  }
   824  
   825  func (x *PythonPackageSpec) GetExecutorImageUri() string {
   826  	if x != nil {
   827  		return x.ExecutorImageUri
   828  	}
   829  	return ""
   830  }
   831  
   832  func (x *PythonPackageSpec) GetPackageUris() []string {
   833  	if x != nil {
   834  		return x.PackageUris
   835  	}
   836  	return nil
   837  }
   838  
   839  func (x *PythonPackageSpec) GetPythonModule() string {
   840  	if x != nil {
   841  		return x.PythonModule
   842  	}
   843  	return ""
   844  }
   845  
   846  func (x *PythonPackageSpec) GetArgs() []string {
   847  	if x != nil {
   848  		return x.Args
   849  	}
   850  	return nil
   851  }
   852  
   853  func (x *PythonPackageSpec) GetEnv() []*EnvVar {
   854  	if x != nil {
   855  		return x.Env
   856  	}
   857  	return nil
   858  }
   859  
   860  // All parameters related to queuing and scheduling of custom jobs.
   861  type Scheduling struct {
   862  	state         protoimpl.MessageState
   863  	sizeCache     protoimpl.SizeCache
   864  	unknownFields protoimpl.UnknownFields
   865  
   866  	// The maximum job running time. The default is 7 days.
   867  	Timeout *durationpb.Duration `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"`
   868  	// Restarts the entire CustomJob if a worker gets restarted.
   869  	// This feature can be used by distributed training jobs that are not
   870  	// resilient to workers leaving and joining a job.
   871  	RestartJobOnWorkerRestart bool `protobuf:"varint,3,opt,name=restart_job_on_worker_restart,json=restartJobOnWorkerRestart,proto3" json:"restart_job_on_worker_restart,omitempty"`
   872  	// Optional. This determines which type of scheduling strategy to use.
   873  	Strategy Scheduling_Strategy `protobuf:"varint,4,opt,name=strategy,proto3,enum=google.cloud.aiplatform.v1beta1.Scheduling_Strategy" json:"strategy,omitempty"`
   874  	// Optional. Indicates if the job should retry for internal errors after the
   875  	// job starts running. If true, overrides
   876  	// `Scheduling.restart_job_on_worker_restart` to false.
   877  	DisableRetries bool `protobuf:"varint,5,opt,name=disable_retries,json=disableRetries,proto3" json:"disable_retries,omitempty"`
   878  	// Optional. This is the maximum duration that a job will wait for the
   879  	// requested resources to be provisioned if the scheduling strategy is set to
   880  	// [Strategy.DWS_FLEX_START].
   881  	// If set to 0, the job will wait indefinitely. The default is 24 hours.
   882  	MaxWaitDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=max_wait_duration,json=maxWaitDuration,proto3" json:"max_wait_duration,omitempty"`
   883  }
   884  
   885  func (x *Scheduling) Reset() {
   886  	*x = Scheduling{}
   887  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[5]
   888  	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   889  	ms.StoreMessageInfo(mi)
   890  }
   891  
   892  func (x *Scheduling) String() string {
   893  	return protoimpl.X.MessageStringOf(x)
   894  }
   895  
   896  func (*Scheduling) ProtoMessage() {}
   897  
   898  func (x *Scheduling) ProtoReflect() protoreflect.Message {
   899  	mi := &file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[5]
   900  	if x != nil {
   901  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   902  		if ms.LoadMessageInfo() == nil {
   903  			ms.StoreMessageInfo(mi)
   904  		}
   905  		return ms
   906  	}
   907  	return mi.MessageOf(x)
   908  }
   909  
   910  // Deprecated: Use Scheduling.ProtoReflect.Descriptor instead.
   911  func (*Scheduling) Descriptor() ([]byte, []int) {
   912  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP(), []int{5}
   913  }
   914  
   915  func (x *Scheduling) GetTimeout() *durationpb.Duration {
   916  	if x != nil {
   917  		return x.Timeout
   918  	}
   919  	return nil
   920  }
   921  
   922  func (x *Scheduling) GetRestartJobOnWorkerRestart() bool {
   923  	if x != nil {
   924  		return x.RestartJobOnWorkerRestart
   925  	}
   926  	return false
   927  }
   928  
   929  func (x *Scheduling) GetStrategy() Scheduling_Strategy {
   930  	if x != nil {
   931  		return x.Strategy
   932  	}
   933  	return Scheduling_STRATEGY_UNSPECIFIED
   934  }
   935  
   936  func (x *Scheduling) GetDisableRetries() bool {
   937  	if x != nil {
   938  		return x.DisableRetries
   939  	}
   940  	return false
   941  }
   942  
   943  func (x *Scheduling) GetMaxWaitDuration() *durationpb.Duration {
   944  	if x != nil {
   945  		return x.MaxWaitDuration
   946  	}
   947  	return nil
   948  }
   949  
   950  var File_google_cloud_aiplatform_v1beta1_custom_job_proto protoreflect.FileDescriptor
   951  
   952  var file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc = []byte{
   953  	0x0a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
   954  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
   955  	0x31, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f,
   956  	0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
   957  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65,
   958  	0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
   959  	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70,
   960  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
   961  	0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
   962  	0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69,
   963  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
   964  	0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63,
   965  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63,
   966  	0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
   967  	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x2e,
   968  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c,
   969  	0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76,
   970  	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
   971  	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69,
   972  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
   973  	0x2f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   974  	0x1a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61,
   975  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
   976  	0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
   977  	0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
   978  	0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
   979  	0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
   980  	0x63, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72,
   981  	0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
   982  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
   983  	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
   984  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
   985  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63,
   986  	0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe3, 0x08,
   987  	0x0a, 0x09, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x12, 0x17, 0x0a, 0x04, 0x6e,
   988  	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04,
   989  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f,
   990  	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
   991  	0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x08,
   992  	0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
   993  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
   994  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
   995  	0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03,
   996  	0xe0, 0x41, 0x02, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x44, 0x0a, 0x05,
   997  	0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f,
   998  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61,
   999  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4a, 0x6f,
  1000  	0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61,
  1001  	0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
  1002  	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1003  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
  1004  	0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
  1005  	0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
  1006  	0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1007  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  1008  	0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
  1009  	0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
  1010  	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  1011  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
  1012  	0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
  1013  	0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
  1014  	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  1015  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  1016  	0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
  1017  	0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28,
  1018  	0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53,
  1019  	0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
  1020  	0x72, 0x12, 0x4e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28,
  1021  	0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
  1022  	0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65,
  1023  	0x74, 0x61, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61,
  1024  	0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c,
  1025  	0x73, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
  1026  	0x73, 0x70, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f,
  1027  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  1028  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x63,
  1029  	0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63,
  1030  	0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x0f, 0x77,
  1031  	0x65, 0x62, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x10,
  1032  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  1033  	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
  1034  	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62,
  1035  	0x2e, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x45, 0x6e,
  1036  	0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x77, 0x65, 0x62, 0x41, 0x63, 0x63,
  1037  	0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73,
  1038  	0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03,
  1039  	0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a,
  1040  	0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70,
  1041  	0x7a, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73,
  1042  	0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x1a, 0x39, 0x0a, 0x0b, 0x4c,
  1043  	0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
  1044  	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
  1045  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
  1046  	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x57, 0x65, 0x62, 0x41, 0x63, 0x63,
  1047  	0x65, 0x73, 0x73, 0x55, 0x72, 0x69, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
  1048  	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
  1049  	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
  1050  	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x69, 0xea, 0x41, 0x66, 0x0a, 0x23, 0x61,
  1051  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1052  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a,
  1053  	0x6f, 0x62, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72,
  1054  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  1055  	0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x75, 0x73, 0x74,
  1056  	0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6a,
  1057  	0x6f, 0x62, 0x7d, 0x22, 0xfb, 0x08, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f,
  1058  	0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
  1059  	0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
  1060  	0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x61,
  1061  	0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1062  	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
  1063  	0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x14, 0x70, 0x65, 0x72,
  1064  	0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49,
  1065  	0x64, 0x12, 0x60, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c,
  1066  	0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,
  1067  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
  1068  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57,
  1069  	0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0,
  1070  	0x41, 0x02, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x70,
  1071  	0x65, 0x63, 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e,
  1072  	0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1073  	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  1074  	0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
  1075  	0x6c, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67,
  1076  	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f,
  1077  	0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69,
  1078  	0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x6e, 0x65, 0x74,
  1079  	0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x01, 0xfa,
  1080  	0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  1081  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f,
  1082  	0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x31, 0x0a, 0x12, 0x72,
  1083  	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
  1084  	0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x72, 0x65,
  1085  	0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x49, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x6a,
  1086  	0x0a, 0x14, 0x70, 0x73, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f,
  1087  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67,
  1088  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
  1089  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
  1090  	0x73, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  1091  	0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x70, 0x73, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72,
  1092  	0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x15, 0x62, 0x61,
  1093  	0x73, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
  1094  	0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  1095  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
  1096  	0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x63, 0x73, 0x44,
  1097  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x62, 0x61, 0x73, 0x65,
  1098  	0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12,
  1099  	0x43, 0x0a, 0x1e, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x72, 0x74,
  1100  	0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
  1101  	0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74,
  1102  	0x65, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
  1103  	0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x62, 0x6f,
  1104  	0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xfa, 0x41,
  1105  	0x27, 0x0a, 0x25, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f,
  1106  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x65, 0x6e,
  1107  	0x73, 0x6f, 0x72, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x74, 0x65, 0x6e, 0x73, 0x6f, 0x72,
  1108  	0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x2f, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f,
  1109  	0x77, 0x65, 0x62, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
  1110  	0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x57, 0x65, 0x62,
  1111  	0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
  1112  	0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73,
  1113  	0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x65, 0x6e,
  1114  	0x61, 0x62, 0x6c, 0x65, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x41, 0x63, 0x63,
  1115  	0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e,
  1116  	0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a,
  1117  	0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  1118  	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65,
  1119  	0x78, 0x74, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50,
  1120  	0x0a, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e,
  1121  	0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21,
  1122  	0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1123  	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
  1124  	0x74, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e,
  1125  	0x12, 0x3f, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09,
  1126  	0x42, 0x27, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  1127  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
  1128  	0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
  1129  	0x73, 0x22, 0xf1, 0x03, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c,
  1130  	0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
  1131  	0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67,
  1132  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
  1133  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43,
  1134  	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0d,
  1135  	0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x64, 0x0a,
  1136  	0x13, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f,
  1137  	0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f,
  1138  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  1139  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x79, 0x74,
  1140  	0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00,
  1141  	0x52, 0x11, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53,
  1142  	0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x73,
  1143  	0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  1144  	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
  1145  	0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68,
  1146  	0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52,
  1147  	0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d,
  1148  	0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
  1149  	0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63,
  1150  	0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0a, 0x6e, 0x66, 0x73, 0x5f, 0x6d, 0x6f,
  1151  	0x75, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f,
  1152  	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74,
  1153  	0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x66, 0x73,
  1154  	0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x6e, 0x66, 0x73, 0x4d,
  1155  	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x70,
  1156  	0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  1157  	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
  1158  	0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x53,
  1159  	0x70, 0x65, 0x63, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x42, 0x06, 0x0a,
  1160  	0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
  1161  	0x6e, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65,
  1162  	0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
  1163  	0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
  1164  	0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
  1165  	0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
  1166  	0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04,
  1167  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  1168  	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
  1169  	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65,
  1170  	0x6e, 0x76, 0x22, 0xe7, 0x01, 0x0a, 0x11, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x50, 0x61, 0x63,
  1171  	0x6b, 0x61, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63,
  1172  	0x75, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01,
  1173  	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75,
  1174  	0x74, 0x6f, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x26, 0x0a, 0x0c, 0x70,
  1175  	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
  1176  	0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55,
  1177  	0x72, 0x69, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f,
  1178  	0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
  1179  	0x0c, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a,
  1180  	0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67,
  1181  	0x73, 0x12, 0x39, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
  1182  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69,
  1183  	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
  1184  	0x2e, 0x45, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x22, 0xc7, 0x03, 0x0a,
  1185  	0x0a, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x33, 0x0a, 0x07, 0x74,
  1186  	0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
  1187  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
  1188  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
  1189  	0x12, 0x40, 0x0a, 0x1d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f,
  1190  	0x6f, 0x6e, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72,
  1191  	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74,
  1192  	0x4a, 0x6f, 0x62, 0x4f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x74, 0x61,
  1193  	0x72, 0x74, 0x12, 0x55, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04,
  1194  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
  1195  	0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76,
  1196  	0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e,
  1197  	0x67, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
  1198  	0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x69, 0x73,
  1199  	0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
  1200  	0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
  1201  	0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x77,
  1202  	0x61, 0x69, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01,
  1203  	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  1204  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0,
  1205  	0x41, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x57, 0x61, 0x69, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74,
  1206  	0x69, 0x6f, 0x6e, 0x22, 0x71, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12,
  1207  	0x18, 0x0a, 0x14, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50,
  1208  	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x09, 0x4f, 0x4e, 0x5f,
  1209  	0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08,
  1210  	0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c,
  1211  	0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04,
  1212  	0x53, 0x50, 0x4f, 0x54, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4c, 0x45, 0x58, 0x5f, 0x53,
  1213  	0x54, 0x41, 0x52, 0x54, 0x10, 0x06, 0x42, 0xe5, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
  1214  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c,
  1215  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0e,
  1216  	0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
  1217  	0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
  1218  	0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
  1219  	0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c,
  1220  	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66,
  1221  	0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43,
  1222  	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
  1223  	0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  1224  	0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  1225  	0x6d, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67,
  1226  	0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61,
  1227  	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06,
  1228  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1229  }
  1230  
  1231  var (
  1232  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescOnce sync.Once
  1233  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData = file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc
  1234  )
  1235  
  1236  func file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescGZIP() []byte {
  1237  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescOnce.Do(func() {
  1238  		file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData)
  1239  	})
  1240  	return file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDescData
  1241  }
  1242  
  1243  var file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
  1244  var file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
  1245  var file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes = []any{
  1246  	(Scheduling_Strategy)(0),      // 0: google.cloud.aiplatform.v1beta1.Scheduling.Strategy
  1247  	(*CustomJob)(nil),             // 1: google.cloud.aiplatform.v1beta1.CustomJob
  1248  	(*CustomJobSpec)(nil),         // 2: google.cloud.aiplatform.v1beta1.CustomJobSpec
  1249  	(*WorkerPoolSpec)(nil),        // 3: google.cloud.aiplatform.v1beta1.WorkerPoolSpec
  1250  	(*ContainerSpec)(nil),         // 4: google.cloud.aiplatform.v1beta1.ContainerSpec
  1251  	(*PythonPackageSpec)(nil),     // 5: google.cloud.aiplatform.v1beta1.PythonPackageSpec
  1252  	(*Scheduling)(nil),            // 6: google.cloud.aiplatform.v1beta1.Scheduling
  1253  	nil,                           // 7: google.cloud.aiplatform.v1beta1.CustomJob.LabelsEntry
  1254  	nil,                           // 8: google.cloud.aiplatform.v1beta1.CustomJob.WebAccessUrisEntry
  1255  	(JobState)(0),                 // 9: google.cloud.aiplatform.v1beta1.JobState
  1256  	(*timestamppb.Timestamp)(nil), // 10: google.protobuf.Timestamp
  1257  	(*status.Status)(nil),         // 11: google.rpc.Status
  1258  	(*EncryptionSpec)(nil),        // 12: google.cloud.aiplatform.v1beta1.EncryptionSpec
  1259  	(*PscInterfaceConfig)(nil),    // 13: google.cloud.aiplatform.v1beta1.PscInterfaceConfig
  1260  	(*GcsDestination)(nil),        // 14: google.cloud.aiplatform.v1beta1.GcsDestination
  1261  	(*MachineSpec)(nil),           // 15: google.cloud.aiplatform.v1beta1.MachineSpec
  1262  	(*NfsMount)(nil),              // 16: google.cloud.aiplatform.v1beta1.NfsMount
  1263  	(*DiskSpec)(nil),              // 17: google.cloud.aiplatform.v1beta1.DiskSpec
  1264  	(*EnvVar)(nil),                // 18: google.cloud.aiplatform.v1beta1.EnvVar
  1265  	(*durationpb.Duration)(nil),   // 19: google.protobuf.Duration
  1266  }
  1267  var file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs = []int32{
  1268  	2,  // 0: google.cloud.aiplatform.v1beta1.CustomJob.job_spec:type_name -> google.cloud.aiplatform.v1beta1.CustomJobSpec
  1269  	9,  // 1: google.cloud.aiplatform.v1beta1.CustomJob.state:type_name -> google.cloud.aiplatform.v1beta1.JobState
  1270  	10, // 2: google.cloud.aiplatform.v1beta1.CustomJob.create_time:type_name -> google.protobuf.Timestamp
  1271  	10, // 3: google.cloud.aiplatform.v1beta1.CustomJob.start_time:type_name -> google.protobuf.Timestamp
  1272  	10, // 4: google.cloud.aiplatform.v1beta1.CustomJob.end_time:type_name -> google.protobuf.Timestamp
  1273  	10, // 5: google.cloud.aiplatform.v1beta1.CustomJob.update_time:type_name -> google.protobuf.Timestamp
  1274  	11, // 6: google.cloud.aiplatform.v1beta1.CustomJob.error:type_name -> google.rpc.Status
  1275  	7,  // 7: google.cloud.aiplatform.v1beta1.CustomJob.labels:type_name -> google.cloud.aiplatform.v1beta1.CustomJob.LabelsEntry
  1276  	12, // 8: google.cloud.aiplatform.v1beta1.CustomJob.encryption_spec:type_name -> google.cloud.aiplatform.v1beta1.EncryptionSpec
  1277  	8,  // 9: google.cloud.aiplatform.v1beta1.CustomJob.web_access_uris:type_name -> google.cloud.aiplatform.v1beta1.CustomJob.WebAccessUrisEntry
  1278  	3,  // 10: google.cloud.aiplatform.v1beta1.CustomJobSpec.worker_pool_specs:type_name -> google.cloud.aiplatform.v1beta1.WorkerPoolSpec
  1279  	6,  // 11: google.cloud.aiplatform.v1beta1.CustomJobSpec.scheduling:type_name -> google.cloud.aiplatform.v1beta1.Scheduling
  1280  	13, // 12: google.cloud.aiplatform.v1beta1.CustomJobSpec.psc_interface_config:type_name -> google.cloud.aiplatform.v1beta1.PscInterfaceConfig
  1281  	14, // 13: google.cloud.aiplatform.v1beta1.CustomJobSpec.base_output_directory:type_name -> google.cloud.aiplatform.v1beta1.GcsDestination
  1282  	4,  // 14: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.container_spec:type_name -> google.cloud.aiplatform.v1beta1.ContainerSpec
  1283  	5,  // 15: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.python_package_spec:type_name -> google.cloud.aiplatform.v1beta1.PythonPackageSpec
  1284  	15, // 16: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.machine_spec:type_name -> google.cloud.aiplatform.v1beta1.MachineSpec
  1285  	16, // 17: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.nfs_mounts:type_name -> google.cloud.aiplatform.v1beta1.NfsMount
  1286  	17, // 18: google.cloud.aiplatform.v1beta1.WorkerPoolSpec.disk_spec:type_name -> google.cloud.aiplatform.v1beta1.DiskSpec
  1287  	18, // 19: google.cloud.aiplatform.v1beta1.ContainerSpec.env:type_name -> google.cloud.aiplatform.v1beta1.EnvVar
  1288  	18, // 20: google.cloud.aiplatform.v1beta1.PythonPackageSpec.env:type_name -> google.cloud.aiplatform.v1beta1.EnvVar
  1289  	19, // 21: google.cloud.aiplatform.v1beta1.Scheduling.timeout:type_name -> google.protobuf.Duration
  1290  	0,  // 22: google.cloud.aiplatform.v1beta1.Scheduling.strategy:type_name -> google.cloud.aiplatform.v1beta1.Scheduling.Strategy
  1291  	19, // 23: google.cloud.aiplatform.v1beta1.Scheduling.max_wait_duration:type_name -> google.protobuf.Duration
  1292  	24, // [24:24] is the sub-list for method output_type
  1293  	24, // [24:24] is the sub-list for method input_type
  1294  	24, // [24:24] is the sub-list for extension type_name
  1295  	24, // [24:24] is the sub-list for extension extendee
  1296  	0,  // [0:24] is the sub-list for field type_name
  1297  }
  1298  
  1299  func init() { file_google_cloud_aiplatform_v1beta1_custom_job_proto_init() }
  1300  func file_google_cloud_aiplatform_v1beta1_custom_job_proto_init() {
  1301  	if File_google_cloud_aiplatform_v1beta1_custom_job_proto != nil {
  1302  		return
  1303  	}
  1304  	file_google_cloud_aiplatform_v1beta1_encryption_spec_proto_init()
  1305  	file_google_cloud_aiplatform_v1beta1_env_var_proto_init()
  1306  	file_google_cloud_aiplatform_v1beta1_io_proto_init()
  1307  	file_google_cloud_aiplatform_v1beta1_job_state_proto_init()
  1308  	file_google_cloud_aiplatform_v1beta1_machine_resources_proto_init()
  1309  	file_google_cloud_aiplatform_v1beta1_service_networking_proto_init()
  1310  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes[2].OneofWrappers = []any{
  1311  		(*WorkerPoolSpec_ContainerSpec)(nil),
  1312  		(*WorkerPoolSpec_PythonPackageSpec)(nil),
  1313  	}
  1314  	type x struct{}
  1315  	out := protoimpl.TypeBuilder{
  1316  		File: protoimpl.DescBuilder{
  1317  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1318  			RawDescriptor: file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc,
  1319  			NumEnums:      1,
  1320  			NumMessages:   8,
  1321  			NumExtensions: 0,
  1322  			NumServices:   0,
  1323  		},
  1324  		GoTypes:           file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes,
  1325  		DependencyIndexes: file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs,
  1326  		EnumInfos:         file_google_cloud_aiplatform_v1beta1_custom_job_proto_enumTypes,
  1327  		MessageInfos:      file_google_cloud_aiplatform_v1beta1_custom_job_proto_msgTypes,
  1328  	}.Build()
  1329  	File_google_cloud_aiplatform_v1beta1_custom_job_proto = out.File
  1330  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_rawDesc = nil
  1331  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_goTypes = nil
  1332  	file_google_cloud_aiplatform_v1beta1_custom_job_proto_depIdxs = nil
  1333  }