go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/common/proto/config/service_config.pb.go (about)

     1  // Copyright 2015 The LUCI Authors. All rights reserved.
     2  // Use of this source code is governed under the Apache License, Version 2.0
     3  // that can be found in the LICENSE file.
     4  
     5  // Schemas for config files in services/luci-config config set.
     6  //
     7  // In this file, "string pattern" is an exact string (can't have a colon) or a
     8  // string that starts with "regex:", followed by a regular expression. In case
     9  // of regex, the pattern must match an entire string, as if it was surrounded by
    10  // ^ and $.
    11  
    12  // Code generated by protoc-gen-go. DO NOT EDIT.
    13  // versions:
    14  // 	protoc-gen-go v1.31.0
    15  // 	protoc        v3.21.7
    16  // source: go.chromium.org/luci/common/proto/config/service_config.proto
    17  
    18  package config
    19  
    20  import (
    21  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    22  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    23  	emptypb "google.golang.org/protobuf/types/known/emptypb"
    24  	reflect "reflect"
    25  	sync "sync"
    26  )
    27  
    28  const (
    29  	// Verify that this generated code is sufficiently up-to-date.
    30  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    31  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    32  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    33  )
    34  
    35  // Severity of a validation response message. In JSON encoded as a string.
    36  type ValidationResponseMessage_Severity int32
    37  
    38  const (
    39  	ValidationResponseMessage_UNKNOWN  ValidationResponseMessage_Severity = 0
    40  	ValidationResponseMessage_DEBUG    ValidationResponseMessage_Severity = 10
    41  	ValidationResponseMessage_INFO     ValidationResponseMessage_Severity = 20
    42  	ValidationResponseMessage_WARNING  ValidationResponseMessage_Severity = 30
    43  	ValidationResponseMessage_ERROR    ValidationResponseMessage_Severity = 40
    44  	ValidationResponseMessage_CRITICAL ValidationResponseMessage_Severity = 50
    45  )
    46  
    47  // Enum value maps for ValidationResponseMessage_Severity.
    48  var (
    49  	ValidationResponseMessage_Severity_name = map[int32]string{
    50  		0:  "UNKNOWN",
    51  		10: "DEBUG",
    52  		20: "INFO",
    53  		30: "WARNING",
    54  		40: "ERROR",
    55  		50: "CRITICAL",
    56  	}
    57  	ValidationResponseMessage_Severity_value = map[string]int32{
    58  		"UNKNOWN":  0,
    59  		"DEBUG":    10,
    60  		"INFO":     20,
    61  		"WARNING":  30,
    62  		"ERROR":    40,
    63  		"CRITICAL": 50,
    64  	}
    65  )
    66  
    67  func (x ValidationResponseMessage_Severity) Enum() *ValidationResponseMessage_Severity {
    68  	p := new(ValidationResponseMessage_Severity)
    69  	*p = x
    70  	return p
    71  }
    72  
    73  func (x ValidationResponseMessage_Severity) String() string {
    74  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    75  }
    76  
    77  func (ValidationResponseMessage_Severity) Descriptor() protoreflect.EnumDescriptor {
    78  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[0].Descriptor()
    79  }
    80  
    81  func (ValidationResponseMessage_Severity) Type() protoreflect.EnumType {
    82  	return &file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[0]
    83  }
    84  
    85  func (x ValidationResponseMessage_Severity) Number() protoreflect.EnumNumber {
    86  	return protoreflect.EnumNumber(x)
    87  }
    88  
    89  // Deprecated: Use ValidationResponseMessage_Severity.Descriptor instead.
    90  func (ValidationResponseMessage_Severity) EnumDescriptor() ([]byte, []int) {
    91  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{15, 0}
    92  }
    93  
    94  // Severity of a validation response message.
    95  type ValidationResult_Severity int32
    96  
    97  const (
    98  	ValidationResult_UNKNOWN  ValidationResult_Severity = 0
    99  	ValidationResult_DEBUG    ValidationResult_Severity = 10
   100  	ValidationResult_INFO     ValidationResult_Severity = 20
   101  	ValidationResult_WARNING  ValidationResult_Severity = 30
   102  	ValidationResult_ERROR    ValidationResult_Severity = 40
   103  	ValidationResult_CRITICAL ValidationResult_Severity = 50
   104  )
   105  
   106  // Enum value maps for ValidationResult_Severity.
   107  var (
   108  	ValidationResult_Severity_name = map[int32]string{
   109  		0:  "UNKNOWN",
   110  		10: "DEBUG",
   111  		20: "INFO",
   112  		30: "WARNING",
   113  		40: "ERROR",
   114  		50: "CRITICAL",
   115  	}
   116  	ValidationResult_Severity_value = map[string]int32{
   117  		"UNKNOWN":  0,
   118  		"DEBUG":    10,
   119  		"INFO":     20,
   120  		"WARNING":  30,
   121  		"ERROR":    40,
   122  		"CRITICAL": 50,
   123  	}
   124  )
   125  
   126  func (x ValidationResult_Severity) Enum() *ValidationResult_Severity {
   127  	p := new(ValidationResult_Severity)
   128  	*p = x
   129  	return p
   130  }
   131  
   132  func (x ValidationResult_Severity) String() string {
   133  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   134  }
   135  
   136  func (ValidationResult_Severity) Descriptor() protoreflect.EnumDescriptor {
   137  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[1].Descriptor()
   138  }
   139  
   140  func (ValidationResult_Severity) Type() protoreflect.EnumType {
   141  	return &file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes[1]
   142  }
   143  
   144  func (x ValidationResult_Severity) Number() protoreflect.EnumNumber {
   145  	return protoreflect.EnumNumber(x)
   146  }
   147  
   148  // Deprecated: Use ValidationResult_Severity.Descriptor instead.
   149  func (ValidationResult_Severity) EnumDescriptor() ([]byte, []int) {
   150  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{18, 0}
   151  }
   152  
   153  // Use to specify configuration stored in Git repository importable via Gitiles
   154  // API.
   155  type GitilesLocation struct {
   156  	state         protoimpl.MessageState
   157  	sizeCache     protoimpl.SizeCache
   158  	unknownFields protoimpl.UnknownFields
   159  
   160  	// URL of the Git repository.
   161  	// Must not end with "/".
   162  	// Must not end with ".git".
   163  	// Must not have "/a/" prefix of a path component.
   164  	//
   165  	// Example:
   166  	//
   167  	//	OK:
   168  	//	  https://chromium.googlesource.com/infra/infra
   169  	//	Not OK:
   170  	//	  https://chromium.googlesource.com/a/infra/infra
   171  	//	  https://chromium.googlesource.com/infra/infra/
   172  	//	  https://chromium.googlesource.com/infra/infra.git
   173  	Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
   174  	// Ref or commit hash of the Git repository.
   175  	//
   176  	// Must be a fully qualified ref starting with "refs/" or a commit hash.
   177  	//
   178  	// Example:
   179  	//
   180  	//	OK:
   181  	//	  refs/heads/branch
   182  	//	  refs/heads/infra/config
   183  	//	  refs/branch-heads/beta
   184  	//	  $a_valid_git_sha
   185  	//	Not OK:
   186  	//	  main
   187  	//	  HEAD
   188  	//	  origin/main
   189  	//	  tags/123
   190  	//
   191  	// TODO: crbug/1446839 - Replace this field with a new `committish` field
   192  	// to better reflect the fact that field value can be either refs or
   193  	// revision hash.
   194  	Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
   195  	// Path to the directory inside Git repository where configurations are stored.
   196  	// Optional. If not specified, defaults to top-level folder of the git repo.
   197  	// Must not start or end with "/".
   198  	//
   199  	// Example:
   200  	//
   201  	//	OK:
   202  	//	  infra/config/generated
   203  	//	    (empty string)
   204  	//	NOT OK:
   205  	//	  /
   206  	//	  /config
   207  	//	  infra/config/
   208  	Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
   209  }
   210  
   211  func (x *GitilesLocation) Reset() {
   212  	*x = GitilesLocation{}
   213  	if protoimpl.UnsafeEnabled {
   214  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0]
   215  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   216  		ms.StoreMessageInfo(mi)
   217  	}
   218  }
   219  
   220  func (x *GitilesLocation) String() string {
   221  	return protoimpl.X.MessageStringOf(x)
   222  }
   223  
   224  func (*GitilesLocation) ProtoMessage() {}
   225  
   226  func (x *GitilesLocation) ProtoReflect() protoreflect.Message {
   227  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0]
   228  	if protoimpl.UnsafeEnabled && x != nil {
   229  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   230  		if ms.LoadMessageInfo() == nil {
   231  			ms.StoreMessageInfo(mi)
   232  		}
   233  		return ms
   234  	}
   235  	return mi.MessageOf(x)
   236  }
   237  
   238  // Deprecated: Use GitilesLocation.ProtoReflect.Descriptor instead.
   239  func (*GitilesLocation) Descriptor() ([]byte, []int) {
   240  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{0}
   241  }
   242  
   243  func (x *GitilesLocation) GetRepo() string {
   244  	if x != nil {
   245  		return x.Repo
   246  	}
   247  	return ""
   248  }
   249  
   250  func (x *GitilesLocation) GetRef() string {
   251  	if x != nil {
   252  		return x.Ref
   253  	}
   254  	return ""
   255  }
   256  
   257  func (x *GitilesLocation) GetPath() string {
   258  	if x != nil {
   259  		return x.Path
   260  	}
   261  	return ""
   262  }
   263  
   264  // Used to define project specific identities for LUCI to act on behalf when
   265  // interacting with external systems. This allows projects to use exclusive
   266  // and isolated identities to not be accidentally affected by other projects.
   267  type IdentityConfig struct {
   268  	state         protoimpl.MessageState
   269  	sizeCache     protoimpl.SizeCache
   270  	unknownFields protoimpl.UnknownFields
   271  
   272  	// ServiceAccountEmail is the full service account email to use when
   273  	// LUCI acts on behalf of the project.
   274  	//
   275  	// Note: Due to token caching, it takes ~15 minutes for a config change
   276  	// to become effective. Keep this in mind when migrating projects to a
   277  	// new identity.
   278  	ServiceAccountEmail string `protobuf:"bytes,1,opt,name=service_account_email,json=serviceAccountEmail,proto3" json:"service_account_email,omitempty"`
   279  }
   280  
   281  func (x *IdentityConfig) Reset() {
   282  	*x = IdentityConfig{}
   283  	if protoimpl.UnsafeEnabled {
   284  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1]
   285  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   286  		ms.StoreMessageInfo(mi)
   287  	}
   288  }
   289  
   290  func (x *IdentityConfig) String() string {
   291  	return protoimpl.X.MessageStringOf(x)
   292  }
   293  
   294  func (*IdentityConfig) ProtoMessage() {}
   295  
   296  func (x *IdentityConfig) ProtoReflect() protoreflect.Message {
   297  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1]
   298  	if protoimpl.UnsafeEnabled && x != nil {
   299  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   300  		if ms.LoadMessageInfo() == nil {
   301  			ms.StoreMessageInfo(mi)
   302  		}
   303  		return ms
   304  	}
   305  	return mi.MessageOf(x)
   306  }
   307  
   308  // Deprecated: Use IdentityConfig.ProtoReflect.Descriptor instead.
   309  func (*IdentityConfig) Descriptor() ([]byte, []int) {
   310  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{1}
   311  }
   312  
   313  func (x *IdentityConfig) GetServiceAccountEmail() string {
   314  	if x != nil {
   315  		return x.ServiceAccountEmail
   316  	}
   317  	return ""
   318  }
   319  
   320  // Location is the source repo location where the configuration stores.
   321  // Currently, it only supports Gitiles repos.
   322  // TODO(crbug.com/1446839): replace Project.gitiles_location field later.
   323  type Location struct {
   324  	state         protoimpl.MessageState
   325  	sizeCache     protoimpl.SizeCache
   326  	unknownFields protoimpl.UnknownFields
   327  
   328  	// Types that are assignable to Location:
   329  	//
   330  	//	*Location_GitilesLocation
   331  	Location isLocation_Location `protobuf_oneof:"location"`
   332  }
   333  
   334  func (x *Location) Reset() {
   335  	*x = Location{}
   336  	if protoimpl.UnsafeEnabled {
   337  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2]
   338  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   339  		ms.StoreMessageInfo(mi)
   340  	}
   341  }
   342  
   343  func (x *Location) String() string {
   344  	return protoimpl.X.MessageStringOf(x)
   345  }
   346  
   347  func (*Location) ProtoMessage() {}
   348  
   349  func (x *Location) ProtoReflect() protoreflect.Message {
   350  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2]
   351  	if protoimpl.UnsafeEnabled && x != nil {
   352  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   353  		if ms.LoadMessageInfo() == nil {
   354  			ms.StoreMessageInfo(mi)
   355  		}
   356  		return ms
   357  	}
   358  	return mi.MessageOf(x)
   359  }
   360  
   361  // Deprecated: Use Location.ProtoReflect.Descriptor instead.
   362  func (*Location) Descriptor() ([]byte, []int) {
   363  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{2}
   364  }
   365  
   366  func (m *Location) GetLocation() isLocation_Location {
   367  	if m != nil {
   368  		return m.Location
   369  	}
   370  	return nil
   371  }
   372  
   373  func (x *Location) GetGitilesLocation() *GitilesLocation {
   374  	if x, ok := x.GetLocation().(*Location_GitilesLocation); ok {
   375  		return x.GitilesLocation
   376  	}
   377  	return nil
   378  }
   379  
   380  type isLocation_Location interface {
   381  	isLocation_Location()
   382  }
   383  
   384  type Location_GitilesLocation struct {
   385  	GitilesLocation *GitilesLocation `protobuf:"bytes,1,opt,name=gitiles_location,json=gitilesLocation,proto3,oneof"`
   386  }
   387  
   388  func (*Location_GitilesLocation) isLocation_Location() {}
   389  
   390  // A tenant of a service. Defined in projects.cfg.
   391  type Project struct {
   392  	state         protoimpl.MessageState
   393  	sizeCache     protoimpl.SizeCache
   394  	unknownFields protoimpl.UnknownFields
   395  
   396  	// Globally unique id of the project.
   397  	//
   398  	// The id MUST contain only lowercase alphanumeric characters and hyphens.
   399  	// The id MUST NOT be empty or exceed 30 characters.
   400  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   401  	// Where to import "projects/<id>" config set from.
   402  	//
   403  	// Types that are assignable to Location:
   404  	//
   405  	//	*Project_GitilesLocation
   406  	Location isProject_Location `protobuf_oneof:"location"`
   407  	// IdentityConfig determines what identities are used when LUCI acts on
   408  	// behalf of the project towards external services.
   409  	IdentityConfig *IdentityConfig `protobuf:"bytes,3,opt,name=identity_config,json=identityConfig,proto3" json:"identity_config,omitempty"`
   410  	// The Team `name` of the Team which owns this Project.
   411  	//
   412  	// Note that the same Team may be indicated for multiple different Projects.
   413  	OwnedBy string `protobuf:"bytes,5,opt,name=owned_by,json=ownedBy,proto3" json:"owned_by,omitempty"`
   414  }
   415  
   416  func (x *Project) Reset() {
   417  	*x = Project{}
   418  	if protoimpl.UnsafeEnabled {
   419  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3]
   420  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   421  		ms.StoreMessageInfo(mi)
   422  	}
   423  }
   424  
   425  func (x *Project) String() string {
   426  	return protoimpl.X.MessageStringOf(x)
   427  }
   428  
   429  func (*Project) ProtoMessage() {}
   430  
   431  func (x *Project) ProtoReflect() protoreflect.Message {
   432  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3]
   433  	if protoimpl.UnsafeEnabled && x != nil {
   434  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   435  		if ms.LoadMessageInfo() == nil {
   436  			ms.StoreMessageInfo(mi)
   437  		}
   438  		return ms
   439  	}
   440  	return mi.MessageOf(x)
   441  }
   442  
   443  // Deprecated: Use Project.ProtoReflect.Descriptor instead.
   444  func (*Project) Descriptor() ([]byte, []int) {
   445  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{3}
   446  }
   447  
   448  func (x *Project) GetId() string {
   449  	if x != nil {
   450  		return x.Id
   451  	}
   452  	return ""
   453  }
   454  
   455  func (m *Project) GetLocation() isProject_Location {
   456  	if m != nil {
   457  		return m.Location
   458  	}
   459  	return nil
   460  }
   461  
   462  func (x *Project) GetGitilesLocation() *GitilesLocation {
   463  	if x, ok := x.GetLocation().(*Project_GitilesLocation); ok {
   464  		return x.GitilesLocation
   465  	}
   466  	return nil
   467  }
   468  
   469  func (x *Project) GetIdentityConfig() *IdentityConfig {
   470  	if x != nil {
   471  		return x.IdentityConfig
   472  	}
   473  	return nil
   474  }
   475  
   476  func (x *Project) GetOwnedBy() string {
   477  	if x != nil {
   478  		return x.OwnedBy
   479  	}
   480  	return ""
   481  }
   482  
   483  type isProject_Location interface {
   484  	isProject_Location()
   485  }
   486  
   487  type Project_GitilesLocation struct {
   488  	GitilesLocation *GitilesLocation `protobuf:"bytes,4,opt,name=gitiles_location,json=gitilesLocation,proto3,oneof"`
   489  }
   490  
   491  func (*Project_GitilesLocation) isProject_Location() {}
   492  
   493  // Represents a group of humans who are responsible for one or more LUCI
   494  // projects.
   495  //
   496  // LUCI system maintainers will use the contact addresses associated with
   497  // this Team in order to contact that group of humans about maintenance actions
   498  // which this Team needs to perform in order to keep current with LUCI.
   499  //
   500  // We recommend subscribing to the following mailing lists as well:
   501  //   - luci-announce@ - Announcements of new LUCI functionality.
   502  //   - luci-outages@ - Announcements of LUCI system outages/downtime.
   503  //   - luci-releases@ - (noisy) Announcements of new LUCI service deployments.
   504  //
   505  // We also recommend directing LUCI questions/discussion to:
   506  //   - go/luci-users-chat - Chatroom open to all users of LUCI. Good place to
   507  //     ask/answer questions about the use of LUCI services.
   508  //   - go/luci-dev-chat - Chatroom for developing LUCI services, or
   509  //     systems which tightly interact with LUCI services.
   510  //   - luci-eng@ - Email list for LUCI related questions.
   511  //
   512  // Bugs should be filed to:
   513  //   - go/bug-a-trooper - General bug reports related to the operation of
   514  //     specific builders/machines which happen to run in LUCI. This is a general
   515  //     Chrome-area bug and will be triaged (usually within 24h).
   516  //   - go/luci-bug - Bug reports/feature requests for LUCI services.
   517  //   - go/luci-trooper-bug - Bug reports against LUCI services which
   518  //     need quick attention from a trooper.
   519  //   - oncall/chrome-ops-foundation - Oncall rotation for ChOps Foundation
   520  //     (primary responders for LUCI service outages). It's a good idea to check
   521  //     go/luci-users-chat and luci-outages@ too.
   522  //
   523  // For some migrations, LUCI system maintainers may need to send CLs against
   524  // your project's configuration. The best way to enable this is to maintain an
   525  // OWNERS file in your project configuration repo, otherwise we'll have to start
   526  // guessing at reviewers :).
   527  //
   528  // To allow LUCI system maintainers to send CLs, please ensure that eng@ has the
   529  // ability to read+send CLs to your configuration repo. If we're unable to send
   530  // a CL (e.g. the repo is super-secret), we'll instead send an email for you to
   531  // apply the change yourself.
   532  type Team struct {
   533  	state         protoimpl.MessageState
   534  	sizeCache     protoimpl.SizeCache
   535  	unknownFields protoimpl.UnknownFields
   536  
   537  	// The name of this team; Used for the Project.team field, but also may
   538  	// be used in e.g. email as the addressee for maintenance messages, like:
   539  	//
   540  	//	Hello ${Team.name} LUCI maintainers,
   541  	//
   542  	// Examples:
   543  	//
   544  	//	GOOD: "ChOps Foundation"
   545  	//	BAD:  "cft"
   546  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   547  	// One or more contact emails for this team.
   548  	//
   549  	// ALL of these email addresses will be used by the LUCI system owners to
   550  	// contact the team with maintenance requests/deprecation notices. For
   551  	// example, if some LUCI functionality is deprecated and needs to be migrated,
   552  	// then an email would be sent to all contacts listed in this field.
   553  	//
   554  	// We recommend setting this to your team's dev-group email.
   555  	MaintenanceContact []string `protobuf:"bytes,2,rep,name=maintenance_contact,json=maintenanceContact,proto3" json:"maintenance_contact,omitempty"`
   556  	// One or more fallback emails for this team.
   557  	//
   558  	// If the LUCI system owners attempt to contact the team via
   559  	// `maintenance_contact` and there's no response, these emails will be
   560  	// CC'd in increasing order until we get in contact with someone.
   561  	//
   562  	// If the LUCI system owners cannot contact anyone in `maintenance_contact` or
   563  	// in `escalation_contact`, we may need to disable the associated LUCI
   564  	// project(s).
   565  	//
   566  	// We recommend setting this to one or two individual people who are
   567  	// responsible for your team's LUCI integration, and finally a
   568  	// wider email group (or groups) than those in maintenance_contact.
   569  	EscalationContact []string `protobuf:"bytes,3,rep,name=escalation_contact,json=escalationContact,proto3" json:"escalation_contact,omitempty"`
   570  }
   571  
   572  func (x *Team) Reset() {
   573  	*x = Team{}
   574  	if protoimpl.UnsafeEnabled {
   575  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4]
   576  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   577  		ms.StoreMessageInfo(mi)
   578  	}
   579  }
   580  
   581  func (x *Team) String() string {
   582  	return protoimpl.X.MessageStringOf(x)
   583  }
   584  
   585  func (*Team) ProtoMessage() {}
   586  
   587  func (x *Team) ProtoReflect() protoreflect.Message {
   588  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4]
   589  	if protoimpl.UnsafeEnabled && x != nil {
   590  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   591  		if ms.LoadMessageInfo() == nil {
   592  			ms.StoreMessageInfo(mi)
   593  		}
   594  		return ms
   595  	}
   596  	return mi.MessageOf(x)
   597  }
   598  
   599  // Deprecated: Use Team.ProtoReflect.Descriptor instead.
   600  func (*Team) Descriptor() ([]byte, []int) {
   601  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{4}
   602  }
   603  
   604  func (x *Team) GetName() string {
   605  	if x != nil {
   606  		return x.Name
   607  	}
   608  	return ""
   609  }
   610  
   611  func (x *Team) GetMaintenanceContact() []string {
   612  	if x != nil {
   613  		return x.MaintenanceContact
   614  	}
   615  	return nil
   616  }
   617  
   618  func (x *Team) GetEscalationContact() []string {
   619  	if x != nil {
   620  		return x.EscalationContact
   621  	}
   622  	return nil
   623  }
   624  
   625  // Schema of projects.cfg file. Represents LUCI tenants registry.
   626  type ProjectsCfg struct {
   627  	state         protoimpl.MessageState
   628  	sizeCache     protoimpl.SizeCache
   629  	unknownFields protoimpl.UnknownFields
   630  
   631  	// All projects served by this instance of LUCI.
   632  	Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
   633  	// All teams which own projects.
   634  	Teams []*Team `protobuf:"bytes,2,rep,name=teams,proto3" json:"teams,omitempty"`
   635  }
   636  
   637  func (x *ProjectsCfg) Reset() {
   638  	*x = ProjectsCfg{}
   639  	if protoimpl.UnsafeEnabled {
   640  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5]
   641  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   642  		ms.StoreMessageInfo(mi)
   643  	}
   644  }
   645  
   646  func (x *ProjectsCfg) String() string {
   647  	return protoimpl.X.MessageStringOf(x)
   648  }
   649  
   650  func (*ProjectsCfg) ProtoMessage() {}
   651  
   652  func (x *ProjectsCfg) ProtoReflect() protoreflect.Message {
   653  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5]
   654  	if protoimpl.UnsafeEnabled && x != nil {
   655  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   656  		if ms.LoadMessageInfo() == nil {
   657  			ms.StoreMessageInfo(mi)
   658  		}
   659  		return ms
   660  	}
   661  	return mi.MessageOf(x)
   662  }
   663  
   664  // Deprecated: Use ProjectsCfg.ProtoReflect.Descriptor instead.
   665  func (*ProjectsCfg) Descriptor() ([]byte, []int) {
   666  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{5}
   667  }
   668  
   669  func (x *ProjectsCfg) GetProjects() []*Project {
   670  	if x != nil {
   671  		return x.Projects
   672  	}
   673  	return nil
   674  }
   675  
   676  func (x *ProjectsCfg) GetTeams() []*Team {
   677  	if x != nil {
   678  		return x.Teams
   679  	}
   680  	return nil
   681  }
   682  
   683  // Describes one LUCI service.
   684  type Service struct {
   685  	state         protoimpl.MessageState
   686  	sizeCache     protoimpl.SizeCache
   687  	unknownFields protoimpl.UnknownFields
   688  
   689  	// Globally unique id of the service. Required.
   690  	// Used in "services/<service_id>" config set name.
   691  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   692  	// Email addresses of responsible and point-of-contacts for the service.
   693  	Owners []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
   694  	// An HTTPS endpoint that returns JSON-encoded ServiceDynamicMetadata in body.
   695  	//
   696  	// TODO: crbug/1232565 - Deprecate this field in favor of `hostname`
   697  	// after the new LUCI Config service has launched.
   698  	MetadataUrl string `protobuf:"bytes,4,opt,name=metadata_url,json=metadataUrl,proto3" json:"metadata_url,omitempty"`
   699  	// The hostname of the service.
   700  	//
   701  	// LUCI Config will call this host to interact with `config.Consumer`
   702  	// prpc Service.
   703  	Hostname string `protobuf:"bytes,7,opt,name=hostname,proto3" json:"hostname,omitempty"`
   704  	// A list of identities that have access to this service's configs.
   705  	// of:
   706  	// * "group:<group>", where group is defined on auth server.
   707  	// * "<email>"
   708  	// * "<kind>:<value>" (for non-email identities)
   709  	//
   710  	// If not specified, only admins and trusted services have access.
   711  	Access []string `protobuf:"bytes,5,rep,name=access,proto3" json:"access,omitempty"`
   712  	// If set, use JWT auth in requests to services. This is usually used for
   713  	// Cloud Endpoints v2 support.
   714  	JwtAuth *Service_JWTAuth `protobuf:"bytes,6,opt,name=jwt_auth,json=jwtAuth,proto3" json:"jwt_auth,omitempty"`
   715  }
   716  
   717  func (x *Service) Reset() {
   718  	*x = Service{}
   719  	if protoimpl.UnsafeEnabled {
   720  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6]
   721  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   722  		ms.StoreMessageInfo(mi)
   723  	}
   724  }
   725  
   726  func (x *Service) String() string {
   727  	return protoimpl.X.MessageStringOf(x)
   728  }
   729  
   730  func (*Service) ProtoMessage() {}
   731  
   732  func (x *Service) ProtoReflect() protoreflect.Message {
   733  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6]
   734  	if protoimpl.UnsafeEnabled && x != nil {
   735  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   736  		if ms.LoadMessageInfo() == nil {
   737  			ms.StoreMessageInfo(mi)
   738  		}
   739  		return ms
   740  	}
   741  	return mi.MessageOf(x)
   742  }
   743  
   744  // Deprecated: Use Service.ProtoReflect.Descriptor instead.
   745  func (*Service) Descriptor() ([]byte, []int) {
   746  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{6}
   747  }
   748  
   749  func (x *Service) GetId() string {
   750  	if x != nil {
   751  		return x.Id
   752  	}
   753  	return ""
   754  }
   755  
   756  func (x *Service) GetOwners() []string {
   757  	if x != nil {
   758  		return x.Owners
   759  	}
   760  	return nil
   761  }
   762  
   763  func (x *Service) GetMetadataUrl() string {
   764  	if x != nil {
   765  		return x.MetadataUrl
   766  	}
   767  	return ""
   768  }
   769  
   770  func (x *Service) GetHostname() string {
   771  	if x != nil {
   772  		return x.Hostname
   773  	}
   774  	return ""
   775  }
   776  
   777  func (x *Service) GetAccess() []string {
   778  	if x != nil {
   779  		return x.Access
   780  	}
   781  	return nil
   782  }
   783  
   784  func (x *Service) GetJwtAuth() *Service_JWTAuth {
   785  	if x != nil {
   786  		return x.JwtAuth
   787  	}
   788  	return nil
   789  }
   790  
   791  // Machine-generated service metadata, exposed by a service endpoint.
   792  // Typically implemented by config component, embedded in an app:
   793  // see appengine/components/components/config/endpoint.py
   794  //
   795  // If you add a field here, also add it to ServiceDynamicMetadata in endpoint.py
   796  type ServiceDynamicMetadata struct {
   797  	state         protoimpl.MessageState
   798  	sizeCache     protoimpl.SizeCache
   799  	unknownFields protoimpl.UnknownFields
   800  
   801  	// Format version. Supported versions: 1.0.
   802  	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
   803  	// What configs this service can validate and how to validate them.
   804  	Validation *Validator `protobuf:"bytes,2,opt,name=validation,proto3" json:"validation,omitempty"`
   805  	// True if the server recognizes "Content-Encoding: gzip" in requests.
   806  	SupportsGzipCompression bool `protobuf:"varint,3,opt,name=supports_gzip_compression,json=supportsGzipCompression,proto3" json:"supports_gzip_compression,omitempty"`
   807  }
   808  
   809  func (x *ServiceDynamicMetadata) Reset() {
   810  	*x = ServiceDynamicMetadata{}
   811  	if protoimpl.UnsafeEnabled {
   812  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7]
   813  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   814  		ms.StoreMessageInfo(mi)
   815  	}
   816  }
   817  
   818  func (x *ServiceDynamicMetadata) String() string {
   819  	return protoimpl.X.MessageStringOf(x)
   820  }
   821  
   822  func (*ServiceDynamicMetadata) ProtoMessage() {}
   823  
   824  func (x *ServiceDynamicMetadata) ProtoReflect() protoreflect.Message {
   825  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7]
   826  	if protoimpl.UnsafeEnabled && x != nil {
   827  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   828  		if ms.LoadMessageInfo() == nil {
   829  			ms.StoreMessageInfo(mi)
   830  		}
   831  		return ms
   832  	}
   833  	return mi.MessageOf(x)
   834  }
   835  
   836  // Deprecated: Use ServiceDynamicMetadata.ProtoReflect.Descriptor instead.
   837  func (*ServiceDynamicMetadata) Descriptor() ([]byte, []int) {
   838  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{7}
   839  }
   840  
   841  func (x *ServiceDynamicMetadata) GetVersion() string {
   842  	if x != nil {
   843  		return x.Version
   844  	}
   845  	return ""
   846  }
   847  
   848  func (x *ServiceDynamicMetadata) GetValidation() *Validator {
   849  	if x != nil {
   850  		return x.Validation
   851  	}
   852  	return nil
   853  }
   854  
   855  func (x *ServiceDynamicMetadata) GetSupportsGzipCompression() bool {
   856  	if x != nil {
   857  		return x.SupportsGzipCompression
   858  	}
   859  	return false
   860  }
   861  
   862  // Schema of services.cfg
   863  type ServicesCfg struct {
   864  	state         protoimpl.MessageState
   865  	sizeCache     protoimpl.SizeCache
   866  	unknownFields protoimpl.UnknownFields
   867  
   868  	// A list of all LUCI services. Should be sorted by id.
   869  	Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"`
   870  }
   871  
   872  func (x *ServicesCfg) Reset() {
   873  	*x = ServicesCfg{}
   874  	if protoimpl.UnsafeEnabled {
   875  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8]
   876  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   877  		ms.StoreMessageInfo(mi)
   878  	}
   879  }
   880  
   881  func (x *ServicesCfg) String() string {
   882  	return protoimpl.X.MessageStringOf(x)
   883  }
   884  
   885  func (*ServicesCfg) ProtoMessage() {}
   886  
   887  func (x *ServicesCfg) ProtoReflect() protoreflect.Message {
   888  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8]
   889  	if protoimpl.UnsafeEnabled && x != nil {
   890  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   891  		if ms.LoadMessageInfo() == nil {
   892  			ms.StoreMessageInfo(mi)
   893  		}
   894  		return ms
   895  	}
   896  	return mi.MessageOf(x)
   897  }
   898  
   899  // Deprecated: Use ServicesCfg.ProtoReflect.Descriptor instead.
   900  func (*ServicesCfg) Descriptor() ([]byte, []int) {
   901  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{8}
   902  }
   903  
   904  func (x *ServicesCfg) GetServices() []*Service {
   905  	if x != nil {
   906  		return x.Services
   907  	}
   908  	return nil
   909  }
   910  
   911  // Schema of acl.cfg file.
   912  // Next tag: 13.
   913  type AclCfg struct {
   914  	state         protoimpl.MessageState
   915  	sizeCache     protoimpl.SizeCache
   916  	unknownFields protoimpl.UnknownFields
   917  
   918  	// Name of the group that has global access to all "projects/*" config sets.
   919  	//
   920  	// Should contain only members that really need read access to multiple
   921  	// projects. Access to an individual project can be granted through
   922  	// "role/configs.reader" role in the "@root" realm of the project.
   923  	ProjectAccessGroup string `protobuf:"bytes,2,opt,name=project_access_group,json=projectAccessGroup,proto3" json:"project_access_group,omitempty"`
   924  	// Name of the group that can call validation API for any accessible project.
   925  	//
   926  	// Should contain only members that really need to use validation API in
   927  	// multiple projects. Permission to validate an individual project can be
   928  	// granted through "role/configs.developer" role in the "@root" realm of
   929  	// the project.
   930  	ProjectValidationGroup string `protobuf:"bytes,8,opt,name=project_validation_group,json=projectValidationGroup,proto3" json:"project_validation_group,omitempty"`
   931  	// Name of the group that can call reimport API for any accessible project.
   932  	//
   933  	// Should contain only members that really need to use reimport API in
   934  	// multiple projects. Permission to reimport an individual project can be
   935  	// granted through "role/configs.developer" role in the "@root" realm of
   936  	// the project.
   937  	ProjectReimportGroup string `protobuf:"bytes,9,opt,name=project_reimport_group,json=projectReimportGroup,proto3" json:"project_reimport_group,omitempty"`
   938  	// Name of the group that has global access to all "services/*" config sets.
   939  	//
   940  	// Should contain only members that really need read access to multiple
   941  	// services. Access to an individual service can be granted via "access" field
   942  	// in its entry in services.cfg config.
   943  	ServiceAccessGroup string `protobuf:"bytes,7,opt,name=service_access_group,json=serviceAccessGroup,proto3" json:"service_access_group,omitempty"`
   944  	// Name of the group that can call validation API for any accessible service.
   945  	ServiceValidationGroup string `protobuf:"bytes,10,opt,name=service_validation_group,json=serviceValidationGroup,proto3" json:"service_validation_group,omitempty"`
   946  	// Name of the group that can call reimport API for any accessible service.
   947  	ServiceReimportGroup string `protobuf:"bytes,11,opt,name=service_reimport_group,json=serviceReimportGroup,proto3" json:"service_reimport_group,omitempty"`
   948  }
   949  
   950  func (x *AclCfg) Reset() {
   951  	*x = AclCfg{}
   952  	if protoimpl.UnsafeEnabled {
   953  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9]
   954  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   955  		ms.StoreMessageInfo(mi)
   956  	}
   957  }
   958  
   959  func (x *AclCfg) String() string {
   960  	return protoimpl.X.MessageStringOf(x)
   961  }
   962  
   963  func (*AclCfg) ProtoMessage() {}
   964  
   965  func (x *AclCfg) ProtoReflect() protoreflect.Message {
   966  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9]
   967  	if protoimpl.UnsafeEnabled && x != nil {
   968  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   969  		if ms.LoadMessageInfo() == nil {
   970  			ms.StoreMessageInfo(mi)
   971  		}
   972  		return ms
   973  	}
   974  	return mi.MessageOf(x)
   975  }
   976  
   977  // Deprecated: Use AclCfg.ProtoReflect.Descriptor instead.
   978  func (*AclCfg) Descriptor() ([]byte, []int) {
   979  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{9}
   980  }
   981  
   982  func (x *AclCfg) GetProjectAccessGroup() string {
   983  	if x != nil {
   984  		return x.ProjectAccessGroup
   985  	}
   986  	return ""
   987  }
   988  
   989  func (x *AclCfg) GetProjectValidationGroup() string {
   990  	if x != nil {
   991  		return x.ProjectValidationGroup
   992  	}
   993  	return ""
   994  }
   995  
   996  func (x *AclCfg) GetProjectReimportGroup() string {
   997  	if x != nil {
   998  		return x.ProjectReimportGroup
   999  	}
  1000  	return ""
  1001  }
  1002  
  1003  func (x *AclCfg) GetServiceAccessGroup() string {
  1004  	if x != nil {
  1005  		return x.ServiceAccessGroup
  1006  	}
  1007  	return ""
  1008  }
  1009  
  1010  func (x *AclCfg) GetServiceValidationGroup() string {
  1011  	if x != nil {
  1012  		return x.ServiceValidationGroup
  1013  	}
  1014  	return ""
  1015  }
  1016  
  1017  func (x *AclCfg) GetServiceReimportGroup() string {
  1018  	if x != nil {
  1019  		return x.ServiceReimportGroup
  1020  	}
  1021  	return ""
  1022  }
  1023  
  1024  // Schema for import.cfg. It specified how to import configuration files from
  1025  // external sources.
  1026  type ImportCfg struct {
  1027  	state         protoimpl.MessageState
  1028  	sizeCache     protoimpl.SizeCache
  1029  	unknownFields protoimpl.UnknownFields
  1030  
  1031  	// Configuration of import from Gitiles repositories.
  1032  	Gitiles *ImportCfg_Gitiles `protobuf:"bytes,1,opt,name=gitiles,proto3" json:"gitiles,omitempty"`
  1033  }
  1034  
  1035  func (x *ImportCfg) Reset() {
  1036  	*x = ImportCfg{}
  1037  	if protoimpl.UnsafeEnabled {
  1038  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10]
  1039  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1040  		ms.StoreMessageInfo(mi)
  1041  	}
  1042  }
  1043  
  1044  func (x *ImportCfg) String() string {
  1045  	return protoimpl.X.MessageStringOf(x)
  1046  }
  1047  
  1048  func (*ImportCfg) ProtoMessage() {}
  1049  
  1050  func (x *ImportCfg) ProtoReflect() protoreflect.Message {
  1051  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10]
  1052  	if protoimpl.UnsafeEnabled && x != nil {
  1053  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1054  		if ms.LoadMessageInfo() == nil {
  1055  			ms.StoreMessageInfo(mi)
  1056  		}
  1057  		return ms
  1058  	}
  1059  	return mi.MessageOf(x)
  1060  }
  1061  
  1062  // Deprecated: Use ImportCfg.ProtoReflect.Descriptor instead.
  1063  func (*ImportCfg) Descriptor() ([]byte, []int) {
  1064  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{10}
  1065  }
  1066  
  1067  func (x *ImportCfg) GetGitiles() *ImportCfg_Gitiles {
  1068  	if x != nil {
  1069  		return x.Gitiles
  1070  	}
  1071  	return nil
  1072  }
  1073  
  1074  // Schema of schemas.cfg
  1075  type SchemasCfg struct {
  1076  	state         protoimpl.MessageState
  1077  	sizeCache     protoimpl.SizeCache
  1078  	unknownFields protoimpl.UnknownFields
  1079  
  1080  	// List of known schemas. They are available at /schemas/<name> as a short
  1081  	// mutable link.
  1082  	Schemas []*SchemasCfg_Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"`
  1083  }
  1084  
  1085  func (x *SchemasCfg) Reset() {
  1086  	*x = SchemasCfg{}
  1087  	if protoimpl.UnsafeEnabled {
  1088  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11]
  1089  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1090  		ms.StoreMessageInfo(mi)
  1091  	}
  1092  }
  1093  
  1094  func (x *SchemasCfg) String() string {
  1095  	return protoimpl.X.MessageStringOf(x)
  1096  }
  1097  
  1098  func (*SchemasCfg) ProtoMessage() {}
  1099  
  1100  func (x *SchemasCfg) ProtoReflect() protoreflect.Message {
  1101  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11]
  1102  	if protoimpl.UnsafeEnabled && x != nil {
  1103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1104  		if ms.LoadMessageInfo() == nil {
  1105  			ms.StoreMessageInfo(mi)
  1106  		}
  1107  		return ms
  1108  	}
  1109  	return mi.MessageOf(x)
  1110  }
  1111  
  1112  // Deprecated: Use SchemasCfg.ProtoReflect.Descriptor instead.
  1113  func (*SchemasCfg) Descriptor() ([]byte, []int) {
  1114  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{11}
  1115  }
  1116  
  1117  func (x *SchemasCfg) GetSchemas() []*SchemasCfg_Schema {
  1118  	if x != nil {
  1119  		return x.Schemas
  1120  	}
  1121  	return nil
  1122  }
  1123  
  1124  // Defines a pattern of a config identity. Both config_set and path must
  1125  // match.
  1126  type ConfigPattern struct {
  1127  	state         protoimpl.MessageState
  1128  	sizeCache     protoimpl.SizeCache
  1129  	unknownFields protoimpl.UnknownFields
  1130  
  1131  	// A string pattern for config_set.
  1132  	//
  1133  	// If the pattern string starts with "regex:", everything after the prefix
  1134  	// will be treated as regular expression to match the config set. The
  1135  	// regular expression will be auto-anchored with "^" at the beginning and "$"
  1136  	// at the end if not already.
  1137  	//
  1138  	// If the pattern string starts with "exact:" or "text:", everything after the
  1139  	// prefix should be exactly the same as the config set to match the pattern.
  1140  	//
  1141  	// If the pattern string doesn't start with any of the above prefixes, it will
  1142  	// be used as exact match just like "exact:" and "text:" prefixes.
  1143  	//
  1144  	// Note that LUCI Config will only send the service configs that belongs to
  1145  	// / the service defined in `Service` or validation, even though the
  1146  	// config_set pattern here can declare a much broader range (e.g.
  1147  	// `regex:services/.+` that matches all services).
  1148  	ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
  1149  	// A string pattern for config file path.
  1150  	//
  1151  	// The pattern syntax is the same as `config_set`
  1152  	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
  1153  }
  1154  
  1155  func (x *ConfigPattern) Reset() {
  1156  	*x = ConfigPattern{}
  1157  	if protoimpl.UnsafeEnabled {
  1158  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12]
  1159  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1160  		ms.StoreMessageInfo(mi)
  1161  	}
  1162  }
  1163  
  1164  func (x *ConfigPattern) String() string {
  1165  	return protoimpl.X.MessageStringOf(x)
  1166  }
  1167  
  1168  func (*ConfigPattern) ProtoMessage() {}
  1169  
  1170  func (x *ConfigPattern) ProtoReflect() protoreflect.Message {
  1171  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12]
  1172  	if protoimpl.UnsafeEnabled && x != nil {
  1173  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1174  		if ms.LoadMessageInfo() == nil {
  1175  			ms.StoreMessageInfo(mi)
  1176  		}
  1177  		return ms
  1178  	}
  1179  	return mi.MessageOf(x)
  1180  }
  1181  
  1182  // Deprecated: Use ConfigPattern.ProtoReflect.Descriptor instead.
  1183  func (*ConfigPattern) Descriptor() ([]byte, []int) {
  1184  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{12}
  1185  }
  1186  
  1187  func (x *ConfigPattern) GetConfigSet() string {
  1188  	if x != nil {
  1189  		return x.ConfigSet
  1190  	}
  1191  	return ""
  1192  }
  1193  
  1194  func (x *ConfigPattern) GetPath() string {
  1195  	if x != nil {
  1196  		return x.Path
  1197  	}
  1198  	return ""
  1199  }
  1200  
  1201  // Describes what configuration can be validated and how to validate them.
  1202  type Validator struct {
  1203  	state         protoimpl.MessageState
  1204  	sizeCache     protoimpl.SizeCache
  1205  	unknownFields protoimpl.UnknownFields
  1206  
  1207  	// A list of configuration patterns that this validator can validate.
  1208  	Patterns []*ConfigPattern `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"`
  1209  	// URL of a validation endpoint. The config service will send an HTTP POST
  1210  	// request to the endpoint, where body is JSON-encoded
  1211  	// ValidationRequestMessage. The endpoint is expected to respond with
  1212  	// HTTP status 200 and JSON-encoded ValidationResponseMessage.
  1213  	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
  1214  }
  1215  
  1216  func (x *Validator) Reset() {
  1217  	*x = Validator{}
  1218  	if protoimpl.UnsafeEnabled {
  1219  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13]
  1220  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1221  		ms.StoreMessageInfo(mi)
  1222  	}
  1223  }
  1224  
  1225  func (x *Validator) String() string {
  1226  	return protoimpl.X.MessageStringOf(x)
  1227  }
  1228  
  1229  func (*Validator) ProtoMessage() {}
  1230  
  1231  func (x *Validator) ProtoReflect() protoreflect.Message {
  1232  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13]
  1233  	if protoimpl.UnsafeEnabled && x != nil {
  1234  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1235  		if ms.LoadMessageInfo() == nil {
  1236  			ms.StoreMessageInfo(mi)
  1237  		}
  1238  		return ms
  1239  	}
  1240  	return mi.MessageOf(x)
  1241  }
  1242  
  1243  // Deprecated: Use Validator.ProtoReflect.Descriptor instead.
  1244  func (*Validator) Descriptor() ([]byte, []int) {
  1245  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{13}
  1246  }
  1247  
  1248  func (x *Validator) GetPatterns() []*ConfigPattern {
  1249  	if x != nil {
  1250  		return x.Patterns
  1251  	}
  1252  	return nil
  1253  }
  1254  
  1255  func (x *Validator) GetUrl() string {
  1256  	if x != nil {
  1257  		return x.Url
  1258  	}
  1259  	return ""
  1260  }
  1261  
  1262  // This message is used only in JSON form. It is sent as request body to an
  1263  // external validation endpoint in order to validate a config.
  1264  type ValidationRequestMessage struct {
  1265  	state         protoimpl.MessageState
  1266  	sizeCache     protoimpl.SizeCache
  1267  	unknownFields protoimpl.UnknownFields
  1268  
  1269  	// Config set of the config file to validate.
  1270  	ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
  1271  	// Path of the config file to validate.
  1272  	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
  1273  	// Contents of the file.
  1274  	Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
  1275  }
  1276  
  1277  func (x *ValidationRequestMessage) Reset() {
  1278  	*x = ValidationRequestMessage{}
  1279  	if protoimpl.UnsafeEnabled {
  1280  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14]
  1281  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1282  		ms.StoreMessageInfo(mi)
  1283  	}
  1284  }
  1285  
  1286  func (x *ValidationRequestMessage) String() string {
  1287  	return protoimpl.X.MessageStringOf(x)
  1288  }
  1289  
  1290  func (*ValidationRequestMessage) ProtoMessage() {}
  1291  
  1292  func (x *ValidationRequestMessage) ProtoReflect() protoreflect.Message {
  1293  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14]
  1294  	if protoimpl.UnsafeEnabled && x != nil {
  1295  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1296  		if ms.LoadMessageInfo() == nil {
  1297  			ms.StoreMessageInfo(mi)
  1298  		}
  1299  		return ms
  1300  	}
  1301  	return mi.MessageOf(x)
  1302  }
  1303  
  1304  // Deprecated: Use ValidationRequestMessage.ProtoReflect.Descriptor instead.
  1305  func (*ValidationRequestMessage) Descriptor() ([]byte, []int) {
  1306  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{14}
  1307  }
  1308  
  1309  func (x *ValidationRequestMessage) GetConfigSet() string {
  1310  	if x != nil {
  1311  		return x.ConfigSet
  1312  	}
  1313  	return ""
  1314  }
  1315  
  1316  func (x *ValidationRequestMessage) GetPath() string {
  1317  	if x != nil {
  1318  		return x.Path
  1319  	}
  1320  	return ""
  1321  }
  1322  
  1323  func (x *ValidationRequestMessage) GetContent() []byte {
  1324  	if x != nil {
  1325  		return x.Content
  1326  	}
  1327  	return nil
  1328  }
  1329  
  1330  // This message is used only in JSON form. It is expected from an external
  1331  // validation endpoint that validates a config.
  1332  type ValidationResponseMessage struct {
  1333  	state         protoimpl.MessageState
  1334  	sizeCache     protoimpl.SizeCache
  1335  	unknownFields protoimpl.UnknownFields
  1336  
  1337  	// Errors, warnings and other information found during validation.
  1338  	// If at least one error is found, the config is considered invalid.
  1339  	Messages []*ValidationResponseMessage_Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
  1340  }
  1341  
  1342  func (x *ValidationResponseMessage) Reset() {
  1343  	*x = ValidationResponseMessage{}
  1344  	if protoimpl.UnsafeEnabled {
  1345  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15]
  1346  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1347  		ms.StoreMessageInfo(mi)
  1348  	}
  1349  }
  1350  
  1351  func (x *ValidationResponseMessage) String() string {
  1352  	return protoimpl.X.MessageStringOf(x)
  1353  }
  1354  
  1355  func (*ValidationResponseMessage) ProtoMessage() {}
  1356  
  1357  func (x *ValidationResponseMessage) ProtoReflect() protoreflect.Message {
  1358  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15]
  1359  	if protoimpl.UnsafeEnabled && x != nil {
  1360  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1361  		if ms.LoadMessageInfo() == nil {
  1362  			ms.StoreMessageInfo(mi)
  1363  		}
  1364  		return ms
  1365  	}
  1366  	return mi.MessageOf(x)
  1367  }
  1368  
  1369  // Deprecated: Use ValidationResponseMessage.ProtoReflect.Descriptor instead.
  1370  func (*ValidationResponseMessage) Descriptor() ([]byte, []int) {
  1371  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{15}
  1372  }
  1373  
  1374  func (x *ValidationResponseMessage) GetMessages() []*ValidationResponseMessage_Message {
  1375  	if x != nil {
  1376  		return x.Messages
  1377  	}
  1378  	return nil
  1379  }
  1380  
  1381  // ServiceMetadata describes the metadata of a service.
  1382  type ServiceMetadata struct {
  1383  	state         protoimpl.MessageState
  1384  	sizeCache     protoimpl.SizeCache
  1385  	unknownFields protoimpl.UnknownFields
  1386  
  1387  	// Patterns of config files that the service is "interested in".
  1388  	//
  1389  	// Interested means the service can validate config files on config files
  1390  	// changes.
  1391  	ConfigPatterns []*ConfigPattern `protobuf:"bytes,1,rep,name=config_patterns,json=configPatterns,proto3" json:"config_patterns,omitempty"`
  1392  }
  1393  
  1394  func (x *ServiceMetadata) Reset() {
  1395  	*x = ServiceMetadata{}
  1396  	if protoimpl.UnsafeEnabled {
  1397  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16]
  1398  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1399  		ms.StoreMessageInfo(mi)
  1400  	}
  1401  }
  1402  
  1403  func (x *ServiceMetadata) String() string {
  1404  	return protoimpl.X.MessageStringOf(x)
  1405  }
  1406  
  1407  func (*ServiceMetadata) ProtoMessage() {}
  1408  
  1409  func (x *ServiceMetadata) ProtoReflect() protoreflect.Message {
  1410  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16]
  1411  	if protoimpl.UnsafeEnabled && x != nil {
  1412  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1413  		if ms.LoadMessageInfo() == nil {
  1414  			ms.StoreMessageInfo(mi)
  1415  		}
  1416  		return ms
  1417  	}
  1418  	return mi.MessageOf(x)
  1419  }
  1420  
  1421  // Deprecated: Use ServiceMetadata.ProtoReflect.Descriptor instead.
  1422  func (*ServiceMetadata) Descriptor() ([]byte, []int) {
  1423  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{16}
  1424  }
  1425  
  1426  func (x *ServiceMetadata) GetConfigPatterns() []*ConfigPattern {
  1427  	if x != nil {
  1428  		return x.ConfigPatterns
  1429  	}
  1430  	return nil
  1431  }
  1432  
  1433  // ValidateConfigsRequest is the request to ValidateConfigs rpc.
  1434  type ValidateConfigsRequest struct {
  1435  	state         protoimpl.MessageState
  1436  	sizeCache     protoimpl.SizeCache
  1437  	unknownFields protoimpl.UnknownFields
  1438  
  1439  	// Config set of the config files to validate.
  1440  	ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
  1441  	// Config files to validate.
  1442  	Files *ValidateConfigsRequest_Files `protobuf:"bytes,2,opt,name=files,proto3" json:"files,omitempty"`
  1443  }
  1444  
  1445  func (x *ValidateConfigsRequest) Reset() {
  1446  	*x = ValidateConfigsRequest{}
  1447  	if protoimpl.UnsafeEnabled {
  1448  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17]
  1449  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1450  		ms.StoreMessageInfo(mi)
  1451  	}
  1452  }
  1453  
  1454  func (x *ValidateConfigsRequest) String() string {
  1455  	return protoimpl.X.MessageStringOf(x)
  1456  }
  1457  
  1458  func (*ValidateConfigsRequest) ProtoMessage() {}
  1459  
  1460  func (x *ValidateConfigsRequest) ProtoReflect() protoreflect.Message {
  1461  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17]
  1462  	if protoimpl.UnsafeEnabled && x != nil {
  1463  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1464  		if ms.LoadMessageInfo() == nil {
  1465  			ms.StoreMessageInfo(mi)
  1466  		}
  1467  		return ms
  1468  	}
  1469  	return mi.MessageOf(x)
  1470  }
  1471  
  1472  // Deprecated: Use ValidateConfigsRequest.ProtoReflect.Descriptor instead.
  1473  func (*ValidateConfigsRequest) Descriptor() ([]byte, []int) {
  1474  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{17}
  1475  }
  1476  
  1477  func (x *ValidateConfigsRequest) GetConfigSet() string {
  1478  	if x != nil {
  1479  		return x.ConfigSet
  1480  	}
  1481  	return ""
  1482  }
  1483  
  1484  func (x *ValidateConfigsRequest) GetFiles() *ValidateConfigsRequest_Files {
  1485  	if x != nil {
  1486  		return x.Files
  1487  	}
  1488  	return nil
  1489  }
  1490  
  1491  // ValidationResult is the result of validating configs.
  1492  type ValidationResult struct {
  1493  	state         protoimpl.MessageState
  1494  	sizeCache     protoimpl.SizeCache
  1495  	unknownFields protoimpl.UnknownFields
  1496  
  1497  	// Errors, warnings and other information found during validation.
  1498  	// If at least one error is found, the config is considered invalid.
  1499  	Messages []*ValidationResult_Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
  1500  }
  1501  
  1502  func (x *ValidationResult) Reset() {
  1503  	*x = ValidationResult{}
  1504  	if protoimpl.UnsafeEnabled {
  1505  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18]
  1506  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1507  		ms.StoreMessageInfo(mi)
  1508  	}
  1509  }
  1510  
  1511  func (x *ValidationResult) String() string {
  1512  	return protoimpl.X.MessageStringOf(x)
  1513  }
  1514  
  1515  func (*ValidationResult) ProtoMessage() {}
  1516  
  1517  func (x *ValidationResult) ProtoReflect() protoreflect.Message {
  1518  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18]
  1519  	if protoimpl.UnsafeEnabled && x != nil {
  1520  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1521  		if ms.LoadMessageInfo() == nil {
  1522  			ms.StoreMessageInfo(mi)
  1523  		}
  1524  		return ms
  1525  	}
  1526  	return mi.MessageOf(x)
  1527  }
  1528  
  1529  // Deprecated: Use ValidationResult.ProtoReflect.Descriptor instead.
  1530  func (*ValidationResult) Descriptor() ([]byte, []int) {
  1531  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{18}
  1532  }
  1533  
  1534  func (x *ValidationResult) GetMessages() []*ValidationResult_Message {
  1535  	if x != nil {
  1536  		return x.Messages
  1537  	}
  1538  	return nil
  1539  }
  1540  
  1541  type Service_JWTAuth struct {
  1542  	state         protoimpl.MessageState
  1543  	sizeCache     protoimpl.SizeCache
  1544  	unknownFields protoimpl.UnknownFields
  1545  
  1546  	// Value for the 'aud' field in the JSON Web Token claim.
  1547  	Audience string `protobuf:"bytes,1,opt,name=audience,proto3" json:"audience,omitempty"`
  1548  }
  1549  
  1550  func (x *Service_JWTAuth) Reset() {
  1551  	*x = Service_JWTAuth{}
  1552  	if protoimpl.UnsafeEnabled {
  1553  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[19]
  1554  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1555  		ms.StoreMessageInfo(mi)
  1556  	}
  1557  }
  1558  
  1559  func (x *Service_JWTAuth) String() string {
  1560  	return protoimpl.X.MessageStringOf(x)
  1561  }
  1562  
  1563  func (*Service_JWTAuth) ProtoMessage() {}
  1564  
  1565  func (x *Service_JWTAuth) ProtoReflect() protoreflect.Message {
  1566  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[19]
  1567  	if protoimpl.UnsafeEnabled && x != nil {
  1568  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1569  		if ms.LoadMessageInfo() == nil {
  1570  			ms.StoreMessageInfo(mi)
  1571  		}
  1572  		return ms
  1573  	}
  1574  	return mi.MessageOf(x)
  1575  }
  1576  
  1577  // Deprecated: Use Service_JWTAuth.ProtoReflect.Descriptor instead.
  1578  func (*Service_JWTAuth) Descriptor() ([]byte, []int) {
  1579  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{6, 0}
  1580  }
  1581  
  1582  func (x *Service_JWTAuth) GetAudience() string {
  1583  	if x != nil {
  1584  		return x.Audience
  1585  	}
  1586  	return ""
  1587  }
  1588  
  1589  type ImportCfg_Gitiles struct {
  1590  	state         protoimpl.MessageState
  1591  	sizeCache     protoimpl.SizeCache
  1592  	unknownFields protoimpl.UnknownFields
  1593  
  1594  	// Request timeout in seconds when requesting commit log.
  1595  	FetchLogDeadline int32 `protobuf:"varint,1,opt,name=fetch_log_deadline,json=fetchLogDeadline,proto3" json:"fetch_log_deadline,omitempty"`
  1596  	// Request timeout in seconds when requesting directory archive.
  1597  	FetchArchiveDeadline int32 `protobuf:"varint,2,opt,name=fetch_archive_deadline,json=fetchArchiveDeadline,proto3" json:"fetch_archive_deadline,omitempty"`
  1598  	// DEPRECATED, ignored. TODO(nodir): remove.
  1599  	// Default ref for project configs.
  1600  	ProjectConfigDefaultRef string `protobuf:"bytes,3,opt,name=project_config_default_ref,json=projectConfigDefaultRef,proto3" json:"project_config_default_ref,omitempty"`
  1601  	// DEPRECATED, ignored. TODO(nodir): remove.
  1602  	// Default directory for project configs.
  1603  	ProjectConfigDefaultPath string `protobuf:"bytes,4,opt,name=project_config_default_path,json=projectConfigDefaultPath,proto3" json:"project_config_default_path,omitempty"`
  1604  	// Default directory for ref configs.
  1605  	RefConfigDefaultPath string `protobuf:"bytes,5,opt,name=ref_config_default_path,json=refConfigDefaultPath,proto3" json:"ref_config_default_path,omitempty"`
  1606  }
  1607  
  1608  func (x *ImportCfg_Gitiles) Reset() {
  1609  	*x = ImportCfg_Gitiles{}
  1610  	if protoimpl.UnsafeEnabled {
  1611  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[20]
  1612  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1613  		ms.StoreMessageInfo(mi)
  1614  	}
  1615  }
  1616  
  1617  func (x *ImportCfg_Gitiles) String() string {
  1618  	return protoimpl.X.MessageStringOf(x)
  1619  }
  1620  
  1621  func (*ImportCfg_Gitiles) ProtoMessage() {}
  1622  
  1623  func (x *ImportCfg_Gitiles) ProtoReflect() protoreflect.Message {
  1624  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[20]
  1625  	if protoimpl.UnsafeEnabled && x != nil {
  1626  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1627  		if ms.LoadMessageInfo() == nil {
  1628  			ms.StoreMessageInfo(mi)
  1629  		}
  1630  		return ms
  1631  	}
  1632  	return mi.MessageOf(x)
  1633  }
  1634  
  1635  // Deprecated: Use ImportCfg_Gitiles.ProtoReflect.Descriptor instead.
  1636  func (*ImportCfg_Gitiles) Descriptor() ([]byte, []int) {
  1637  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{10, 0}
  1638  }
  1639  
  1640  func (x *ImportCfg_Gitiles) GetFetchLogDeadline() int32 {
  1641  	if x != nil {
  1642  		return x.FetchLogDeadline
  1643  	}
  1644  	return 0
  1645  }
  1646  
  1647  func (x *ImportCfg_Gitiles) GetFetchArchiveDeadline() int32 {
  1648  	if x != nil {
  1649  		return x.FetchArchiveDeadline
  1650  	}
  1651  	return 0
  1652  }
  1653  
  1654  func (x *ImportCfg_Gitiles) GetProjectConfigDefaultRef() string {
  1655  	if x != nil {
  1656  		return x.ProjectConfigDefaultRef
  1657  	}
  1658  	return ""
  1659  }
  1660  
  1661  func (x *ImportCfg_Gitiles) GetProjectConfigDefaultPath() string {
  1662  	if x != nil {
  1663  		return x.ProjectConfigDefaultPath
  1664  	}
  1665  	return ""
  1666  }
  1667  
  1668  func (x *ImportCfg_Gitiles) GetRefConfigDefaultPath() string {
  1669  	if x != nil {
  1670  		return x.RefConfigDefaultPath
  1671  	}
  1672  	return ""
  1673  }
  1674  
  1675  type SchemasCfg_Schema struct {
  1676  	state         protoimpl.MessageState
  1677  	sizeCache     protoimpl.SizeCache
  1678  	unknownFields protoimpl.UnknownFields
  1679  
  1680  	// Name of schema.
  1681  	// For service configs, "<config_set>:<path>"
  1682  	// For project configs, "projects:<path>"
  1683  	// For ref configs, "projects/refs:<path>"
  1684  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1685  	// URL to the schema definition, e.g. to a .proto file in a repository.
  1686  	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
  1687  }
  1688  
  1689  func (x *SchemasCfg_Schema) Reset() {
  1690  	*x = SchemasCfg_Schema{}
  1691  	if protoimpl.UnsafeEnabled {
  1692  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[21]
  1693  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1694  		ms.StoreMessageInfo(mi)
  1695  	}
  1696  }
  1697  
  1698  func (x *SchemasCfg_Schema) String() string {
  1699  	return protoimpl.X.MessageStringOf(x)
  1700  }
  1701  
  1702  func (*SchemasCfg_Schema) ProtoMessage() {}
  1703  
  1704  func (x *SchemasCfg_Schema) ProtoReflect() protoreflect.Message {
  1705  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[21]
  1706  	if protoimpl.UnsafeEnabled && x != nil {
  1707  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1708  		if ms.LoadMessageInfo() == nil {
  1709  			ms.StoreMessageInfo(mi)
  1710  		}
  1711  		return ms
  1712  	}
  1713  	return mi.MessageOf(x)
  1714  }
  1715  
  1716  // Deprecated: Use SchemasCfg_Schema.ProtoReflect.Descriptor instead.
  1717  func (*SchemasCfg_Schema) Descriptor() ([]byte, []int) {
  1718  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{11, 0}
  1719  }
  1720  
  1721  func (x *SchemasCfg_Schema) GetName() string {
  1722  	if x != nil {
  1723  		return x.Name
  1724  	}
  1725  	return ""
  1726  }
  1727  
  1728  func (x *SchemasCfg_Schema) GetUrl() string {
  1729  	if x != nil {
  1730  		return x.Url
  1731  	}
  1732  	return ""
  1733  }
  1734  
  1735  // A message that explains why a config is valid or not.
  1736  type ValidationResponseMessage_Message struct {
  1737  	state         protoimpl.MessageState
  1738  	sizeCache     protoimpl.SizeCache
  1739  	unknownFields protoimpl.UnknownFields
  1740  
  1741  	// Path of the config file that has an error.
  1742  	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
  1743  	// If an error, a config is considered invalid. Defaults to INFO.
  1744  	Severity ValidationResponseMessage_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=config.ValidationResponseMessage_Severity" json:"severity,omitempty"`
  1745  	// Textual representation of the message.
  1746  	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
  1747  }
  1748  
  1749  func (x *ValidationResponseMessage_Message) Reset() {
  1750  	*x = ValidationResponseMessage_Message{}
  1751  	if protoimpl.UnsafeEnabled {
  1752  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[22]
  1753  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1754  		ms.StoreMessageInfo(mi)
  1755  	}
  1756  }
  1757  
  1758  func (x *ValidationResponseMessage_Message) String() string {
  1759  	return protoimpl.X.MessageStringOf(x)
  1760  }
  1761  
  1762  func (*ValidationResponseMessage_Message) ProtoMessage() {}
  1763  
  1764  func (x *ValidationResponseMessage_Message) ProtoReflect() protoreflect.Message {
  1765  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[22]
  1766  	if protoimpl.UnsafeEnabled && x != nil {
  1767  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1768  		if ms.LoadMessageInfo() == nil {
  1769  			ms.StoreMessageInfo(mi)
  1770  		}
  1771  		return ms
  1772  	}
  1773  	return mi.MessageOf(x)
  1774  }
  1775  
  1776  // Deprecated: Use ValidationResponseMessage_Message.ProtoReflect.Descriptor instead.
  1777  func (*ValidationResponseMessage_Message) Descriptor() ([]byte, []int) {
  1778  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{15, 0}
  1779  }
  1780  
  1781  func (x *ValidationResponseMessage_Message) GetPath() string {
  1782  	if x != nil {
  1783  		return x.Path
  1784  	}
  1785  	return ""
  1786  }
  1787  
  1788  func (x *ValidationResponseMessage_Message) GetSeverity() ValidationResponseMessage_Severity {
  1789  	if x != nil {
  1790  		return x.Severity
  1791  	}
  1792  	return ValidationResponseMessage_UNKNOWN
  1793  }
  1794  
  1795  func (x *ValidationResponseMessage_Message) GetText() string {
  1796  	if x != nil {
  1797  		return x.Text
  1798  	}
  1799  	return ""
  1800  }
  1801  
  1802  type ValidateConfigsRequest_Files struct {
  1803  	state         protoimpl.MessageState
  1804  	sizeCache     protoimpl.SizeCache
  1805  	unknownFields protoimpl.UnknownFields
  1806  
  1807  	Files []*ValidateConfigsRequest_File `protobuf:"bytes,1,rep,name=files,proto3" json:"files,omitempty"`
  1808  }
  1809  
  1810  func (x *ValidateConfigsRequest_Files) Reset() {
  1811  	*x = ValidateConfigsRequest_Files{}
  1812  	if protoimpl.UnsafeEnabled {
  1813  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[23]
  1814  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1815  		ms.StoreMessageInfo(mi)
  1816  	}
  1817  }
  1818  
  1819  func (x *ValidateConfigsRequest_Files) String() string {
  1820  	return protoimpl.X.MessageStringOf(x)
  1821  }
  1822  
  1823  func (*ValidateConfigsRequest_Files) ProtoMessage() {}
  1824  
  1825  func (x *ValidateConfigsRequest_Files) ProtoReflect() protoreflect.Message {
  1826  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[23]
  1827  	if protoimpl.UnsafeEnabled && x != nil {
  1828  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1829  		if ms.LoadMessageInfo() == nil {
  1830  			ms.StoreMessageInfo(mi)
  1831  		}
  1832  		return ms
  1833  	}
  1834  	return mi.MessageOf(x)
  1835  }
  1836  
  1837  // Deprecated: Use ValidateConfigsRequest_Files.ProtoReflect.Descriptor instead.
  1838  func (*ValidateConfigsRequest_Files) Descriptor() ([]byte, []int) {
  1839  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{17, 0}
  1840  }
  1841  
  1842  func (x *ValidateConfigsRequest_Files) GetFiles() []*ValidateConfigsRequest_File {
  1843  	if x != nil {
  1844  		return x.Files
  1845  	}
  1846  	return nil
  1847  }
  1848  
  1849  // File represents a config file to validate.
  1850  type ValidateConfigsRequest_File struct {
  1851  	state         protoimpl.MessageState
  1852  	sizeCache     protoimpl.SizeCache
  1853  	unknownFields protoimpl.UnknownFields
  1854  
  1855  	// path of the config file relative to root config directory.
  1856  	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
  1857  	// Types that are assignable to Content:
  1858  	//
  1859  	//	*ValidateConfigsRequest_File_RawContent
  1860  	//	*ValidateConfigsRequest_File_SignedUrl
  1861  	Content isValidateConfigsRequest_File_Content `protobuf_oneof:"content"`
  1862  }
  1863  
  1864  func (x *ValidateConfigsRequest_File) Reset() {
  1865  	*x = ValidateConfigsRequest_File{}
  1866  	if protoimpl.UnsafeEnabled {
  1867  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[24]
  1868  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1869  		ms.StoreMessageInfo(mi)
  1870  	}
  1871  }
  1872  
  1873  func (x *ValidateConfigsRequest_File) String() string {
  1874  	return protoimpl.X.MessageStringOf(x)
  1875  }
  1876  
  1877  func (*ValidateConfigsRequest_File) ProtoMessage() {}
  1878  
  1879  func (x *ValidateConfigsRequest_File) ProtoReflect() protoreflect.Message {
  1880  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[24]
  1881  	if protoimpl.UnsafeEnabled && x != nil {
  1882  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1883  		if ms.LoadMessageInfo() == nil {
  1884  			ms.StoreMessageInfo(mi)
  1885  		}
  1886  		return ms
  1887  	}
  1888  	return mi.MessageOf(x)
  1889  }
  1890  
  1891  // Deprecated: Use ValidateConfigsRequest_File.ProtoReflect.Descriptor instead.
  1892  func (*ValidateConfigsRequest_File) Descriptor() ([]byte, []int) {
  1893  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{17, 1}
  1894  }
  1895  
  1896  func (x *ValidateConfigsRequest_File) GetPath() string {
  1897  	if x != nil {
  1898  		return x.Path
  1899  	}
  1900  	return ""
  1901  }
  1902  
  1903  func (m *ValidateConfigsRequest_File) GetContent() isValidateConfigsRequest_File_Content {
  1904  	if m != nil {
  1905  		return m.Content
  1906  	}
  1907  	return nil
  1908  }
  1909  
  1910  func (x *ValidateConfigsRequest_File) GetRawContent() []byte {
  1911  	if x, ok := x.GetContent().(*ValidateConfigsRequest_File_RawContent); ok {
  1912  		return x.RawContent
  1913  	}
  1914  	return nil
  1915  }
  1916  
  1917  func (x *ValidateConfigsRequest_File) GetSignedUrl() string {
  1918  	if x, ok := x.GetContent().(*ValidateConfigsRequest_File_SignedUrl); ok {
  1919  		return x.SignedUrl
  1920  	}
  1921  	return ""
  1922  }
  1923  
  1924  type isValidateConfigsRequest_File_Content interface {
  1925  	isValidateConfigsRequest_File_Content()
  1926  }
  1927  
  1928  type ValidateConfigsRequest_File_RawContent struct {
  1929  	// RawContent is the raw byte content of the config file.
  1930  	RawContent []byte `protobuf:"bytes,2,opt,name=raw_content,json=rawContent,proto3,oneof"`
  1931  }
  1932  
  1933  type ValidateConfigsRequest_File_SignedUrl struct {
  1934  	// SignedURL is a GCS singed url to download full config content.
  1935  	//
  1936  	// The service SHOULD provide "Accept-Encoding: gzip" header to minimize
  1937  	// the data on the wire and the service should also be able to
  1938  	// handle the uncompressed data based on the presence of
  1939  	// "Content-Encoding" header.
  1940  	// The signed url will expire shortly. Currently LUCI Config sets the
  1941  	// expiration time to 10 min.
  1942  	SignedUrl string `protobuf:"bytes,3,opt,name=signed_url,json=signedUrl,proto3,oneof"`
  1943  }
  1944  
  1945  func (*ValidateConfigsRequest_File_RawContent) isValidateConfigsRequest_File_Content() {}
  1946  
  1947  func (*ValidateConfigsRequest_File_SignedUrl) isValidateConfigsRequest_File_Content() {}
  1948  
  1949  // A message that explains why a config is valid or not.
  1950  type ValidationResult_Message struct {
  1951  	state         protoimpl.MessageState
  1952  	sizeCache     protoimpl.SizeCache
  1953  	unknownFields protoimpl.UnknownFields
  1954  
  1955  	// Path of the config file that has an error.
  1956  	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
  1957  	// If an error, a config is considered invalid. Defaults to INFO.
  1958  	Severity ValidationResult_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=config.ValidationResult_Severity" json:"severity,omitempty"`
  1959  	// Textual representation of the message.
  1960  	Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
  1961  }
  1962  
  1963  func (x *ValidationResult_Message) Reset() {
  1964  	*x = ValidationResult_Message{}
  1965  	if protoimpl.UnsafeEnabled {
  1966  		mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[25]
  1967  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1968  		ms.StoreMessageInfo(mi)
  1969  	}
  1970  }
  1971  
  1972  func (x *ValidationResult_Message) String() string {
  1973  	return protoimpl.X.MessageStringOf(x)
  1974  }
  1975  
  1976  func (*ValidationResult_Message) ProtoMessage() {}
  1977  
  1978  func (x *ValidationResult_Message) ProtoReflect() protoreflect.Message {
  1979  	mi := &file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[25]
  1980  	if protoimpl.UnsafeEnabled && x != nil {
  1981  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1982  		if ms.LoadMessageInfo() == nil {
  1983  			ms.StoreMessageInfo(mi)
  1984  		}
  1985  		return ms
  1986  	}
  1987  	return mi.MessageOf(x)
  1988  }
  1989  
  1990  // Deprecated: Use ValidationResult_Message.ProtoReflect.Descriptor instead.
  1991  func (*ValidationResult_Message) Descriptor() ([]byte, []int) {
  1992  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP(), []int{18, 0}
  1993  }
  1994  
  1995  func (x *ValidationResult_Message) GetPath() string {
  1996  	if x != nil {
  1997  		return x.Path
  1998  	}
  1999  	return ""
  2000  }
  2001  
  2002  func (x *ValidationResult_Message) GetSeverity() ValidationResult_Severity {
  2003  	if x != nil {
  2004  		return x.Severity
  2005  	}
  2006  	return ValidationResult_UNKNOWN
  2007  }
  2008  
  2009  func (x *ValidationResult_Message) GetText() string {
  2010  	if x != nil {
  2011  		return x.Text
  2012  	}
  2013  	return ""
  2014  }
  2015  
  2016  var File_go_chromium_org_luci_common_proto_config_service_config_proto protoreflect.FileDescriptor
  2017  
  2018  var file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc = []byte{
  2019  	0x0a, 0x3d, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  2020  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72,
  2021  	0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
  2022  	0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
  2023  	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
  2024  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70,
  2025  	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4b, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x4c,
  2026  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18,
  2027  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x72,
  2028  	0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x12, 0x12, 0x0a,
  2029  	0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
  2030  	0x68, 0x22, 0x44, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e,
  2031  	0x66, 0x69, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61,
  2032  	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01,
  2033  	0x28, 0x09, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75,
  2034  	0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x5c, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74,
  2035  	0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c,
  2036  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
  2037  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x6f,
  2038  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65,
  2039  	0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63,
  2040  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xde, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2041  	0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
  2042  	0x64, 0x12, 0x44, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x6c, 0x6f, 0x63,
  2043  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f,
  2044  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x4c, 0x6f, 0x63, 0x61,
  2045  	0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x4c,
  2046  	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0f, 0x69, 0x64, 0x65, 0x6e, 0x74,
  2047  	0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
  2048  	0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
  2049  	0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
  2050  	0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65,
  2051  	0x64, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65,
  2052  	0x64, 0x42, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a,
  2053  	0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f,
  2054  	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7a, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x12,
  2055  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
  2056  	0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63,
  2057  	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
  2058  	0x12, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74,
  2059  	0x61, 0x63, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f,
  2060  	0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
  2061  	0x11, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61,
  2062  	0x63, 0x74, 0x22, 0x5e, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x66,
  2063  	0x67, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20,
  2064  	0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f,
  2065  	0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22,
  2066  	0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e,
  2067  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61,
  2068  	0x6d, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e,
  2069  	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16,
  2070  	0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
  2071  	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
  2072  	0x74, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65,
  2073  	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73,
  2074  	0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73,
  2075  	0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
  2076  	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x32, 0x0a,
  2077  	0x08, 0x6a, 0x77, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2078  	0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
  2079  	0x2e, 0x4a, 0x57, 0x54, 0x41, 0x75, 0x74, 0x68, 0x52, 0x07, 0x6a, 0x77, 0x74, 0x41, 0x75, 0x74,
  2080  	0x68, 0x1a, 0x25, 0x0a, 0x07, 0x4a, 0x57, 0x54, 0x41, 0x75, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08,
  2081  	0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
  2082  	0x61, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0f,
  2083  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
  2084  	0xa1, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x79, 0x6e, 0x61, 0x6d,
  2085  	0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65,
  2086  	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72,
  2087  	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
  2088  	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  2089  	0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x76, 0x61, 0x6c,
  2090  	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f,
  2091  	0x72, 0x74, 0x73, 0x5f, 0x67, 0x7a, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73,
  2092  	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x75, 0x70, 0x70,
  2093  	0x6f, 0x72, 0x74, 0x73, 0x47, 0x7a, 0x69, 0x70, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73,
  2094  	0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x43,
  2095  	0x66, 0x67, 0x12, 0x2b, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01,
  2096  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65,
  2097  	0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22,
  2098  	0xd0, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x72,
  2099  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x6f,
  2100  	0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2101  	0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, 0x0a, 0x18,
  2102  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69,
  2103  	0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16,
  2104  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
  2105  	0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  2106  	0x74, 0x5f, 0x72, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
  2107  	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52,
  2108  	0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x14,
  2109  	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67,
  2110  	0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x72, 0x76,
  2111  	0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38,
  2112  	0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
  2113  	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
  2114  	0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
  2115  	0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76,
  2116  	0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x67, 0x72, 0x6f,
  2117  	0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
  2118  	0x65, 0x52, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4a, 0x04,
  2119  	0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06,
  2120  	0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x52, 0x18, 0x63, 0x6f,
  2121  	0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x5f, 0x68, 0x61, 0x73, 0x68,
  2122  	0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x67, 0x72,
  2123  	0x6f, 0x75, 0x70, 0x52, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
  2124  	0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x72, 0x65, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
  2125  	0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x1b, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x70, 0x72,
  2126  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x67, 0x72, 0x6f,
  2127  	0x75, 0x70, 0x22, 0xe3, 0x02, 0x0a, 0x09, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x66, 0x67,
  2128  	0x12, 0x33, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
  2129  	0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72,
  2130  	0x74, 0x43, 0x66, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x07, 0x67, 0x69,
  2131  	0x74, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xa0, 0x02, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65,
  2132  	0x73, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x64,
  2133  	0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x66,
  2134  	0x65, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12,
  2135  	0x34, 0x0a, 0x16, 0x66, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65,
  2136  	0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
  2137  	0x14, 0x66, 0x65, 0x74, 0x63, 0x68, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x44, 0x65, 0x61,
  2138  	0x64, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
  2139  	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
  2140  	0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x6a, 0x65,
  2141  	0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52,
  2142  	0x65, 0x66, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f,
  2143  	0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74,
  2144  	0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
  2145  	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74,
  2146  	0x68, 0x12, 0x35, 0x0a, 0x17, 0x72, 0x65, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f,
  2147  	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01,
  2148  	0x28, 0x09, 0x52, 0x14, 0x72, 0x65, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66,
  2149  	0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x71, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x65,
  2150  	0x6d, 0x61, 0x73, 0x43, 0x66, 0x67, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
  2151  	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2152  	0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x43, 0x66, 0x67, 0x2e, 0x53, 0x63, 0x68, 0x65,
  2153  	0x6d, 0x61, 0x52, 0x07, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x1a, 0x2e, 0x0a, 0x06, 0x53,
  2154  	0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
  2155  	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c,
  2156  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x42, 0x0a, 0x0d, 0x43,
  2157  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
  2158  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2159  	0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70,
  2160  	0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22,
  2161  	0x50, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x08,
  2162  	0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
  2163  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61,
  2164  	0x74, 0x74, 0x65, 0x72, 0x6e, 0x52, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12,
  2165  	0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
  2166  	0x6c, 0x22, 0x67, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
  2167  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a,
  2168  	0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2169  	0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04,
  2170  	0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
  2171  	0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
  2172  	0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xb1, 0x02, 0x0a, 0x19, 0x56,
  2173  	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2174  	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73,
  2175  	0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e,
  2176  	0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
  2177  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65,
  2178  	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a,
  2179  	0x79, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
  2180  	0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x46,
  2181  	0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
  2182  	0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
  2183  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
  2184  	0x61, 0x67, 0x65, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65,
  2185  	0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03,
  2186  	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x52, 0x0a, 0x08, 0x53, 0x65,
  2187  	0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
  2188  	0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x0a, 0x12, 0x08,
  2189  	0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52, 0x4e,
  2190  	0x49, 0x4e, 0x47, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x28,
  2191  	0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x32, 0x22, 0x51,
  2192  	0x0a, 0x0f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
  2193  	0x61, 0x12, 0x3e, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x74,
  2194  	0x65, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e,
  2195  	0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72,
  2196  	0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
  2197  	0x73, 0x22, 0xa2, 0x02, 0x0a, 0x16, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f,
  2198  	0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
  2199  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2200  	0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x66,
  2201  	0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x6e,
  2202  	0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66,
  2203  	0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73,
  2204  	0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x73,
  2205  	0x12, 0x39, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
  2206  	0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
  2207  	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
  2208  	0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x69, 0x0a, 0x04, 0x46,
  2209  	0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
  2210  	0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0b, 0x72, 0x61, 0x77, 0x5f, 0x63,
  2211  	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a,
  2212  	0x72, 0x61, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x73, 0x69,
  2213  	0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
  2214  	0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x63,
  2215  	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x96, 0x02, 0x0a, 0x10, 0x56, 0x61, 0x6c, 0x69, 0x64,
  2216  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x6d,
  2217  	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e,
  2218  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
  2219  	0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
  2220  	0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x70, 0x0a, 0x07, 0x4d, 0x65, 0x73,
  2221  	0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01,
  2222  	0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65,
  2223  	0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e,
  2224  	0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
  2225  	0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73,
  2226  	0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18,
  2227  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x52, 0x0a, 0x08, 0x53,
  2228  	0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
  2229  	0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x0a, 0x12,
  2230  	0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x41, 0x52,
  2231  	0x4e, 0x49, 0x4e, 0x47, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
  2232  	0x28, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x32, 0x32,
  2233  	0x9b, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0b,
  2234  	0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x16, 0x2e, 0x67, 0x6f,
  2235  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
  2236  	0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x72,
  2237  	0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x00, 0x12, 0x4d,
  2238  	0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2239  	0x73, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
  2240  	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2241  	0x74, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64,
  2242  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x00, 0x42, 0x2a, 0x5a,
  2243  	0x28, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67,
  2244  	0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f,
  2245  	0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2246  	0x33,
  2247  }
  2248  
  2249  var (
  2250  	file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescOnce sync.Once
  2251  	file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData = file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc
  2252  )
  2253  
  2254  func file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescGZIP() []byte {
  2255  	file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescOnce.Do(func() {
  2256  		file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData)
  2257  	})
  2258  	return file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDescData
  2259  }
  2260  
  2261  var file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
  2262  var file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
  2263  var file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes = []interface{}{
  2264  	(ValidationResponseMessage_Severity)(0),   // 0: config.ValidationResponseMessage.Severity
  2265  	(ValidationResult_Severity)(0),            // 1: config.ValidationResult.Severity
  2266  	(*GitilesLocation)(nil),                   // 2: config.GitilesLocation
  2267  	(*IdentityConfig)(nil),                    // 3: config.IdentityConfig
  2268  	(*Location)(nil),                          // 4: config.Location
  2269  	(*Project)(nil),                           // 5: config.Project
  2270  	(*Team)(nil),                              // 6: config.Team
  2271  	(*ProjectsCfg)(nil),                       // 7: config.ProjectsCfg
  2272  	(*Service)(nil),                           // 8: config.Service
  2273  	(*ServiceDynamicMetadata)(nil),            // 9: config.ServiceDynamicMetadata
  2274  	(*ServicesCfg)(nil),                       // 10: config.ServicesCfg
  2275  	(*AclCfg)(nil),                            // 11: config.AclCfg
  2276  	(*ImportCfg)(nil),                         // 12: config.ImportCfg
  2277  	(*SchemasCfg)(nil),                        // 13: config.SchemasCfg
  2278  	(*ConfigPattern)(nil),                     // 14: config.ConfigPattern
  2279  	(*Validator)(nil),                         // 15: config.Validator
  2280  	(*ValidationRequestMessage)(nil),          // 16: config.ValidationRequestMessage
  2281  	(*ValidationResponseMessage)(nil),         // 17: config.ValidationResponseMessage
  2282  	(*ServiceMetadata)(nil),                   // 18: config.ServiceMetadata
  2283  	(*ValidateConfigsRequest)(nil),            // 19: config.ValidateConfigsRequest
  2284  	(*ValidationResult)(nil),                  // 20: config.ValidationResult
  2285  	(*Service_JWTAuth)(nil),                   // 21: config.Service.JWTAuth
  2286  	(*ImportCfg_Gitiles)(nil),                 // 22: config.ImportCfg.Gitiles
  2287  	(*SchemasCfg_Schema)(nil),                 // 23: config.SchemasCfg.Schema
  2288  	(*ValidationResponseMessage_Message)(nil), // 24: config.ValidationResponseMessage.Message
  2289  	(*ValidateConfigsRequest_Files)(nil),      // 25: config.ValidateConfigsRequest.Files
  2290  	(*ValidateConfigsRequest_File)(nil),       // 26: config.ValidateConfigsRequest.File
  2291  	(*ValidationResult_Message)(nil),          // 27: config.ValidationResult.Message
  2292  	(*emptypb.Empty)(nil),                     // 28: google.protobuf.Empty
  2293  }
  2294  var file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs = []int32{
  2295  	2,  // 0: config.Location.gitiles_location:type_name -> config.GitilesLocation
  2296  	2,  // 1: config.Project.gitiles_location:type_name -> config.GitilesLocation
  2297  	3,  // 2: config.Project.identity_config:type_name -> config.IdentityConfig
  2298  	5,  // 3: config.ProjectsCfg.projects:type_name -> config.Project
  2299  	6,  // 4: config.ProjectsCfg.teams:type_name -> config.Team
  2300  	21, // 5: config.Service.jwt_auth:type_name -> config.Service.JWTAuth
  2301  	15, // 6: config.ServiceDynamicMetadata.validation:type_name -> config.Validator
  2302  	8,  // 7: config.ServicesCfg.services:type_name -> config.Service
  2303  	22, // 8: config.ImportCfg.gitiles:type_name -> config.ImportCfg.Gitiles
  2304  	23, // 9: config.SchemasCfg.schemas:type_name -> config.SchemasCfg.Schema
  2305  	14, // 10: config.Validator.patterns:type_name -> config.ConfigPattern
  2306  	24, // 11: config.ValidationResponseMessage.messages:type_name -> config.ValidationResponseMessage.Message
  2307  	14, // 12: config.ServiceMetadata.config_patterns:type_name -> config.ConfigPattern
  2308  	25, // 13: config.ValidateConfigsRequest.files:type_name -> config.ValidateConfigsRequest.Files
  2309  	27, // 14: config.ValidationResult.messages:type_name -> config.ValidationResult.Message
  2310  	0,  // 15: config.ValidationResponseMessage.Message.severity:type_name -> config.ValidationResponseMessage.Severity
  2311  	26, // 16: config.ValidateConfigsRequest.Files.files:type_name -> config.ValidateConfigsRequest.File
  2312  	1,  // 17: config.ValidationResult.Message.severity:type_name -> config.ValidationResult.Severity
  2313  	28, // 18: config.Consumer.GetMetadata:input_type -> google.protobuf.Empty
  2314  	19, // 19: config.Consumer.ValidateConfigs:input_type -> config.ValidateConfigsRequest
  2315  	18, // 20: config.Consumer.GetMetadata:output_type -> config.ServiceMetadata
  2316  	20, // 21: config.Consumer.ValidateConfigs:output_type -> config.ValidationResult
  2317  	20, // [20:22] is the sub-list for method output_type
  2318  	18, // [18:20] is the sub-list for method input_type
  2319  	18, // [18:18] is the sub-list for extension type_name
  2320  	18, // [18:18] is the sub-list for extension extendee
  2321  	0,  // [0:18] is the sub-list for field type_name
  2322  }
  2323  
  2324  func init() { file_go_chromium_org_luci_common_proto_config_service_config_proto_init() }
  2325  func file_go_chromium_org_luci_common_proto_config_service_config_proto_init() {
  2326  	if File_go_chromium_org_luci_common_proto_config_service_config_proto != nil {
  2327  		return
  2328  	}
  2329  	if !protoimpl.UnsafeEnabled {
  2330  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2331  			switch v := v.(*GitilesLocation); i {
  2332  			case 0:
  2333  				return &v.state
  2334  			case 1:
  2335  				return &v.sizeCache
  2336  			case 2:
  2337  				return &v.unknownFields
  2338  			default:
  2339  				return nil
  2340  			}
  2341  		}
  2342  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2343  			switch v := v.(*IdentityConfig); i {
  2344  			case 0:
  2345  				return &v.state
  2346  			case 1:
  2347  				return &v.sizeCache
  2348  			case 2:
  2349  				return &v.unknownFields
  2350  			default:
  2351  				return nil
  2352  			}
  2353  		}
  2354  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2355  			switch v := v.(*Location); i {
  2356  			case 0:
  2357  				return &v.state
  2358  			case 1:
  2359  				return &v.sizeCache
  2360  			case 2:
  2361  				return &v.unknownFields
  2362  			default:
  2363  				return nil
  2364  			}
  2365  		}
  2366  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2367  			switch v := v.(*Project); i {
  2368  			case 0:
  2369  				return &v.state
  2370  			case 1:
  2371  				return &v.sizeCache
  2372  			case 2:
  2373  				return &v.unknownFields
  2374  			default:
  2375  				return nil
  2376  			}
  2377  		}
  2378  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2379  			switch v := v.(*Team); i {
  2380  			case 0:
  2381  				return &v.state
  2382  			case 1:
  2383  				return &v.sizeCache
  2384  			case 2:
  2385  				return &v.unknownFields
  2386  			default:
  2387  				return nil
  2388  			}
  2389  		}
  2390  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2391  			switch v := v.(*ProjectsCfg); i {
  2392  			case 0:
  2393  				return &v.state
  2394  			case 1:
  2395  				return &v.sizeCache
  2396  			case 2:
  2397  				return &v.unknownFields
  2398  			default:
  2399  				return nil
  2400  			}
  2401  		}
  2402  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2403  			switch v := v.(*Service); i {
  2404  			case 0:
  2405  				return &v.state
  2406  			case 1:
  2407  				return &v.sizeCache
  2408  			case 2:
  2409  				return &v.unknownFields
  2410  			default:
  2411  				return nil
  2412  			}
  2413  		}
  2414  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2415  			switch v := v.(*ServiceDynamicMetadata); i {
  2416  			case 0:
  2417  				return &v.state
  2418  			case 1:
  2419  				return &v.sizeCache
  2420  			case 2:
  2421  				return &v.unknownFields
  2422  			default:
  2423  				return nil
  2424  			}
  2425  		}
  2426  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2427  			switch v := v.(*ServicesCfg); i {
  2428  			case 0:
  2429  				return &v.state
  2430  			case 1:
  2431  				return &v.sizeCache
  2432  			case 2:
  2433  				return &v.unknownFields
  2434  			default:
  2435  				return nil
  2436  			}
  2437  		}
  2438  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2439  			switch v := v.(*AclCfg); i {
  2440  			case 0:
  2441  				return &v.state
  2442  			case 1:
  2443  				return &v.sizeCache
  2444  			case 2:
  2445  				return &v.unknownFields
  2446  			default:
  2447  				return nil
  2448  			}
  2449  		}
  2450  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2451  			switch v := v.(*ImportCfg); i {
  2452  			case 0:
  2453  				return &v.state
  2454  			case 1:
  2455  				return &v.sizeCache
  2456  			case 2:
  2457  				return &v.unknownFields
  2458  			default:
  2459  				return nil
  2460  			}
  2461  		}
  2462  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2463  			switch v := v.(*SchemasCfg); i {
  2464  			case 0:
  2465  				return &v.state
  2466  			case 1:
  2467  				return &v.sizeCache
  2468  			case 2:
  2469  				return &v.unknownFields
  2470  			default:
  2471  				return nil
  2472  			}
  2473  		}
  2474  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2475  			switch v := v.(*ConfigPattern); i {
  2476  			case 0:
  2477  				return &v.state
  2478  			case 1:
  2479  				return &v.sizeCache
  2480  			case 2:
  2481  				return &v.unknownFields
  2482  			default:
  2483  				return nil
  2484  			}
  2485  		}
  2486  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2487  			switch v := v.(*Validator); i {
  2488  			case 0:
  2489  				return &v.state
  2490  			case 1:
  2491  				return &v.sizeCache
  2492  			case 2:
  2493  				return &v.unknownFields
  2494  			default:
  2495  				return nil
  2496  			}
  2497  		}
  2498  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2499  			switch v := v.(*ValidationRequestMessage); i {
  2500  			case 0:
  2501  				return &v.state
  2502  			case 1:
  2503  				return &v.sizeCache
  2504  			case 2:
  2505  				return &v.unknownFields
  2506  			default:
  2507  				return nil
  2508  			}
  2509  		}
  2510  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2511  			switch v := v.(*ValidationResponseMessage); i {
  2512  			case 0:
  2513  				return &v.state
  2514  			case 1:
  2515  				return &v.sizeCache
  2516  			case 2:
  2517  				return &v.unknownFields
  2518  			default:
  2519  				return nil
  2520  			}
  2521  		}
  2522  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2523  			switch v := v.(*ServiceMetadata); i {
  2524  			case 0:
  2525  				return &v.state
  2526  			case 1:
  2527  				return &v.sizeCache
  2528  			case 2:
  2529  				return &v.unknownFields
  2530  			default:
  2531  				return nil
  2532  			}
  2533  		}
  2534  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2535  			switch v := v.(*ValidateConfigsRequest); i {
  2536  			case 0:
  2537  				return &v.state
  2538  			case 1:
  2539  				return &v.sizeCache
  2540  			case 2:
  2541  				return &v.unknownFields
  2542  			default:
  2543  				return nil
  2544  			}
  2545  		}
  2546  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2547  			switch v := v.(*ValidationResult); i {
  2548  			case 0:
  2549  				return &v.state
  2550  			case 1:
  2551  				return &v.sizeCache
  2552  			case 2:
  2553  				return &v.unknownFields
  2554  			default:
  2555  				return nil
  2556  			}
  2557  		}
  2558  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2559  			switch v := v.(*Service_JWTAuth); i {
  2560  			case 0:
  2561  				return &v.state
  2562  			case 1:
  2563  				return &v.sizeCache
  2564  			case 2:
  2565  				return &v.unknownFields
  2566  			default:
  2567  				return nil
  2568  			}
  2569  		}
  2570  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2571  			switch v := v.(*ImportCfg_Gitiles); i {
  2572  			case 0:
  2573  				return &v.state
  2574  			case 1:
  2575  				return &v.sizeCache
  2576  			case 2:
  2577  				return &v.unknownFields
  2578  			default:
  2579  				return nil
  2580  			}
  2581  		}
  2582  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2583  			switch v := v.(*SchemasCfg_Schema); i {
  2584  			case 0:
  2585  				return &v.state
  2586  			case 1:
  2587  				return &v.sizeCache
  2588  			case 2:
  2589  				return &v.unknownFields
  2590  			default:
  2591  				return nil
  2592  			}
  2593  		}
  2594  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  2595  			switch v := v.(*ValidationResponseMessage_Message); i {
  2596  			case 0:
  2597  				return &v.state
  2598  			case 1:
  2599  				return &v.sizeCache
  2600  			case 2:
  2601  				return &v.unknownFields
  2602  			default:
  2603  				return nil
  2604  			}
  2605  		}
  2606  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  2607  			switch v := v.(*ValidateConfigsRequest_Files); i {
  2608  			case 0:
  2609  				return &v.state
  2610  			case 1:
  2611  				return &v.sizeCache
  2612  			case 2:
  2613  				return &v.unknownFields
  2614  			default:
  2615  				return nil
  2616  			}
  2617  		}
  2618  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  2619  			switch v := v.(*ValidateConfigsRequest_File); i {
  2620  			case 0:
  2621  				return &v.state
  2622  			case 1:
  2623  				return &v.sizeCache
  2624  			case 2:
  2625  				return &v.unknownFields
  2626  			default:
  2627  				return nil
  2628  			}
  2629  		}
  2630  		file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  2631  			switch v := v.(*ValidationResult_Message); i {
  2632  			case 0:
  2633  				return &v.state
  2634  			case 1:
  2635  				return &v.sizeCache
  2636  			case 2:
  2637  				return &v.unknownFields
  2638  			default:
  2639  				return nil
  2640  			}
  2641  		}
  2642  	}
  2643  	file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[2].OneofWrappers = []interface{}{
  2644  		(*Location_GitilesLocation)(nil),
  2645  	}
  2646  	file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[3].OneofWrappers = []interface{}{
  2647  		(*Project_GitilesLocation)(nil),
  2648  	}
  2649  	file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes[24].OneofWrappers = []interface{}{
  2650  		(*ValidateConfigsRequest_File_RawContent)(nil),
  2651  		(*ValidateConfigsRequest_File_SignedUrl)(nil),
  2652  	}
  2653  	type x struct{}
  2654  	out := protoimpl.TypeBuilder{
  2655  		File: protoimpl.DescBuilder{
  2656  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2657  			RawDescriptor: file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc,
  2658  			NumEnums:      2,
  2659  			NumMessages:   26,
  2660  			NumExtensions: 0,
  2661  			NumServices:   1,
  2662  		},
  2663  		GoTypes:           file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes,
  2664  		DependencyIndexes: file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs,
  2665  		EnumInfos:         file_go_chromium_org_luci_common_proto_config_service_config_proto_enumTypes,
  2666  		MessageInfos:      file_go_chromium_org_luci_common_proto_config_service_config_proto_msgTypes,
  2667  	}.Build()
  2668  	File_go_chromium_org_luci_common_proto_config_service_config_proto = out.File
  2669  	file_go_chromium_org_luci_common_proto_config_service_config_proto_rawDesc = nil
  2670  	file_go_chromium_org_luci_common_proto_config_service_config_proto_goTypes = nil
  2671  	file_go_chromium_org_luci_common_proto_config_service_config_proto_depIdxs = nil
  2672  }