github.com/GoogleCloudPlatform/testgrid@v0.0.174/pb/config/config.pb.go (about)

     1  /*
     2  Copyright The TestGrid Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // Code generated by protoc-gen-go. DO NOT EDIT.
    18  // versions:
    19  // 	protoc-gen-go v1.28.0
    20  // 	protoc        v3.21.1
    21  // source: config.proto
    22  
    23  package config
    24  
    25  import (
    26  	custom_evaluator "github.com/GoogleCloudPlatform/testgrid/pb/custom_evaluator"
    27  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    28  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    29  	reflect "reflect"
    30  	sync "sync"
    31  )
    32  
    33  const (
    34  	// Verify that this generated code is sufficiently up-to-date.
    35  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    36  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    37  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    38  )
    39  
    40  type TestGroup_TestsName int32
    41  
    42  const (
    43  	TestGroup_TESTS_NAME_UNSPECIFIED TestGroup_TestsName = 0
    44  	TestGroup_TESTS_NAME_IGNORE      TestGroup_TestsName = 1
    45  	TestGroup_TESTS_NAME_REPLACE     TestGroup_TestsName = 2
    46  	TestGroup_TESTS_NAME_APPEND      TestGroup_TestsName = 3
    47  )
    48  
    49  // Enum value maps for TestGroup_TestsName.
    50  var (
    51  	TestGroup_TestsName_name = map[int32]string{
    52  		0: "TESTS_NAME_UNSPECIFIED",
    53  		1: "TESTS_NAME_IGNORE",
    54  		2: "TESTS_NAME_REPLACE",
    55  		3: "TESTS_NAME_APPEND",
    56  	}
    57  	TestGroup_TestsName_value = map[string]int32{
    58  		"TESTS_NAME_UNSPECIFIED": 0,
    59  		"TESTS_NAME_IGNORE":      1,
    60  		"TESTS_NAME_REPLACE":     2,
    61  		"TESTS_NAME_APPEND":      3,
    62  	}
    63  )
    64  
    65  func (x TestGroup_TestsName) Enum() *TestGroup_TestsName {
    66  	p := new(TestGroup_TestsName)
    67  	*p = x
    68  	return p
    69  }
    70  
    71  func (x TestGroup_TestsName) String() string {
    72  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    73  }
    74  
    75  func (TestGroup_TestsName) Descriptor() protoreflect.EnumDescriptor {
    76  	return file_config_proto_enumTypes[0].Descriptor()
    77  }
    78  
    79  func (TestGroup_TestsName) Type() protoreflect.EnumType {
    80  	return &file_config_proto_enumTypes[0]
    81  }
    82  
    83  func (x TestGroup_TestsName) Number() protoreflect.EnumNumber {
    84  	return protoreflect.EnumNumber(x)
    85  }
    86  
    87  // Deprecated: Use TestGroup_TestsName.Descriptor instead.
    88  func (TestGroup_TestsName) EnumDescriptor() ([]byte, []int) {
    89  	return file_config_proto_rawDescGZIP(), []int{2, 0}
    90  }
    91  
    92  type TestGroup_FallbackGrouping int32
    93  
    94  const (
    95  	TestGroup_FALLBACK_GROUPING_NONE   TestGroup_FallbackGrouping = 0
    96  	TestGroup_FALLBACK_GROUPING_DATE   TestGroup_FallbackGrouping = 1
    97  	TestGroup_FALLBACK_GROUPING_LABELS TestGroup_FallbackGrouping = 2
    98  	TestGroup_FALLBACK_GROUPING_ID     TestGroup_FallbackGrouping = 3
    99  	TestGroup_FALLBACK_GROUPING_BUILD  TestGroup_FallbackGrouping = 4
   100  	// When using this, ensure fallback_grouping_configuration_value is
   101  	// also set.
   102  	TestGroup_FALLBACK_GROUPING_CONFIGURATION_VALUE TestGroup_FallbackGrouping = 5
   103  )
   104  
   105  // Enum value maps for TestGroup_FallbackGrouping.
   106  var (
   107  	TestGroup_FallbackGrouping_name = map[int32]string{
   108  		0: "FALLBACK_GROUPING_NONE",
   109  		1: "FALLBACK_GROUPING_DATE",
   110  		2: "FALLBACK_GROUPING_LABELS",
   111  		3: "FALLBACK_GROUPING_ID",
   112  		4: "FALLBACK_GROUPING_BUILD",
   113  		5: "FALLBACK_GROUPING_CONFIGURATION_VALUE",
   114  	}
   115  	TestGroup_FallbackGrouping_value = map[string]int32{
   116  		"FALLBACK_GROUPING_NONE":                0,
   117  		"FALLBACK_GROUPING_DATE":                1,
   118  		"FALLBACK_GROUPING_LABELS":              2,
   119  		"FALLBACK_GROUPING_ID":                  3,
   120  		"FALLBACK_GROUPING_BUILD":               4,
   121  		"FALLBACK_GROUPING_CONFIGURATION_VALUE": 5,
   122  	}
   123  )
   124  
   125  func (x TestGroup_FallbackGrouping) Enum() *TestGroup_FallbackGrouping {
   126  	p := new(TestGroup_FallbackGrouping)
   127  	*p = x
   128  	return p
   129  }
   130  
   131  func (x TestGroup_FallbackGrouping) String() string {
   132  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   133  }
   134  
   135  func (TestGroup_FallbackGrouping) Descriptor() protoreflect.EnumDescriptor {
   136  	return file_config_proto_enumTypes[1].Descriptor()
   137  }
   138  
   139  func (TestGroup_FallbackGrouping) Type() protoreflect.EnumType {
   140  	return &file_config_proto_enumTypes[1]
   141  }
   142  
   143  func (x TestGroup_FallbackGrouping) Number() protoreflect.EnumNumber {
   144  	return protoreflect.EnumNumber(x)
   145  }
   146  
   147  // Deprecated: Use TestGroup_FallbackGrouping.Descriptor instead.
   148  func (TestGroup_FallbackGrouping) EnumDescriptor() ([]byte, []int) {
   149  	return file_config_proto_rawDescGZIP(), []int{2, 1}
   150  }
   151  
   152  type TestGroup_PrimaryGrouping int32
   153  
   154  const (
   155  	TestGroup_PRIMARY_GROUPING_NONE  TestGroup_PrimaryGrouping = 0
   156  	TestGroup_PRIMARY_GROUPING_BUILD TestGroup_PrimaryGrouping = 1
   157  )
   158  
   159  // Enum value maps for TestGroup_PrimaryGrouping.
   160  var (
   161  	TestGroup_PrimaryGrouping_name = map[int32]string{
   162  		0: "PRIMARY_GROUPING_NONE",
   163  		1: "PRIMARY_GROUPING_BUILD",
   164  	}
   165  	TestGroup_PrimaryGrouping_value = map[string]int32{
   166  		"PRIMARY_GROUPING_NONE":  0,
   167  		"PRIMARY_GROUPING_BUILD": 1,
   168  	}
   169  )
   170  
   171  func (x TestGroup_PrimaryGrouping) Enum() *TestGroup_PrimaryGrouping {
   172  	p := new(TestGroup_PrimaryGrouping)
   173  	*p = x
   174  	return p
   175  }
   176  
   177  func (x TestGroup_PrimaryGrouping) String() string {
   178  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   179  }
   180  
   181  func (TestGroup_PrimaryGrouping) Descriptor() protoreflect.EnumDescriptor {
   182  	return file_config_proto_enumTypes[2].Descriptor()
   183  }
   184  
   185  func (TestGroup_PrimaryGrouping) Type() protoreflect.EnumType {
   186  	return &file_config_proto_enumTypes[2]
   187  }
   188  
   189  func (x TestGroup_PrimaryGrouping) Number() protoreflect.EnumNumber {
   190  	return protoreflect.EnumNumber(x)
   191  }
   192  
   193  // Deprecated: Use TestGroup_PrimaryGrouping.Descriptor instead.
   194  func (TestGroup_PrimaryGrouping) EnumDescriptor() ([]byte, []int) {
   195  	return file_config_proto_rawDescGZIP(), []int{2, 2}
   196  }
   197  
   198  // Scale of issue priority, used to indicate importance of issue.
   199  type AutoBugOptions_Priority int32
   200  
   201  const (
   202  	// Unspecified; may not set priority at all
   203  	AutoBugOptions_PRIORITY_UNSPECIFIED AutoBugOptions_Priority = 0
   204  	// See https://developers.google.com/issue-tracker/concepts/issues
   205  	AutoBugOptions_P0 AutoBugOptions_Priority = 1
   206  	AutoBugOptions_P1 AutoBugOptions_Priority = 2
   207  	AutoBugOptions_P2 AutoBugOptions_Priority = 3
   208  	AutoBugOptions_P3 AutoBugOptions_Priority = 4
   209  	AutoBugOptions_P4 AutoBugOptions_Priority = 5
   210  )
   211  
   212  // Enum value maps for AutoBugOptions_Priority.
   213  var (
   214  	AutoBugOptions_Priority_name = map[int32]string{
   215  		0: "PRIORITY_UNSPECIFIED",
   216  		1: "P0",
   217  		2: "P1",
   218  		3: "P2",
   219  		4: "P3",
   220  		5: "P4",
   221  	}
   222  	AutoBugOptions_Priority_value = map[string]int32{
   223  		"PRIORITY_UNSPECIFIED": 0,
   224  		"P0":                   1,
   225  		"P1":                   2,
   226  		"P2":                   3,
   227  		"P3":                   4,
   228  		"P4":                   5,
   229  	}
   230  )
   231  
   232  func (x AutoBugOptions_Priority) Enum() *AutoBugOptions_Priority {
   233  	p := new(AutoBugOptions_Priority)
   234  	*p = x
   235  	return p
   236  }
   237  
   238  func (x AutoBugOptions_Priority) String() string {
   239  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   240  }
   241  
   242  func (AutoBugOptions_Priority) Descriptor() protoreflect.EnumDescriptor {
   243  	return file_config_proto_enumTypes[3].Descriptor()
   244  }
   245  
   246  func (AutoBugOptions_Priority) Type() protoreflect.EnumType {
   247  	return &file_config_proto_enumTypes[3]
   248  }
   249  
   250  func (x AutoBugOptions_Priority) Number() protoreflect.EnumNumber {
   251  	return protoreflect.EnumNumber(x)
   252  }
   253  
   254  // Deprecated: Use AutoBugOptions_Priority.Descriptor instead.
   255  func (AutoBugOptions_Priority) EnumDescriptor() ([]byte, []int) {
   256  	return file_config_proto_rawDescGZIP(), []int{7, 0}
   257  }
   258  
   259  // Columns which contain cells with any status configure below will be
   260  // ignored. Ignored columns affect the computation of flakiness and
   261  // non-ignored number of runs.
   262  type DashboardTabStatusCustomizationOptions_IgnoredTestStatus int32
   263  
   264  const (
   265  	DashboardTabStatusCustomizationOptions_TEST_STATUS_UNSPECIFIED DashboardTabStatusCustomizationOptions_IgnoredTestStatus = 0
   266  	DashboardTabStatusCustomizationOptions_CATEGORIZED_ABORT       DashboardTabStatusCustomizationOptions_IgnoredTestStatus = 1
   267  	DashboardTabStatusCustomizationOptions_UNKNOWN                 DashboardTabStatusCustomizationOptions_IgnoredTestStatus = 2
   268  	DashboardTabStatusCustomizationOptions_CANCEL                  DashboardTabStatusCustomizationOptions_IgnoredTestStatus = 3
   269  	DashboardTabStatusCustomizationOptions_BLOCKED                 DashboardTabStatusCustomizationOptions_IgnoredTestStatus = 4
   270  )
   271  
   272  // Enum value maps for DashboardTabStatusCustomizationOptions_IgnoredTestStatus.
   273  var (
   274  	DashboardTabStatusCustomizationOptions_IgnoredTestStatus_name = map[int32]string{
   275  		0: "TEST_STATUS_UNSPECIFIED",
   276  		1: "CATEGORIZED_ABORT",
   277  		2: "UNKNOWN",
   278  		3: "CANCEL",
   279  		4: "BLOCKED",
   280  	}
   281  	DashboardTabStatusCustomizationOptions_IgnoredTestStatus_value = map[string]int32{
   282  		"TEST_STATUS_UNSPECIFIED": 0,
   283  		"CATEGORIZED_ABORT":       1,
   284  		"UNKNOWN":                 2,
   285  		"CANCEL":                  3,
   286  		"BLOCKED":                 4,
   287  	}
   288  )
   289  
   290  func (x DashboardTabStatusCustomizationOptions_IgnoredTestStatus) Enum() *DashboardTabStatusCustomizationOptions_IgnoredTestStatus {
   291  	p := new(DashboardTabStatusCustomizationOptions_IgnoredTestStatus)
   292  	*p = x
   293  	return p
   294  }
   295  
   296  func (x DashboardTabStatusCustomizationOptions_IgnoredTestStatus) String() string {
   297  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   298  }
   299  
   300  func (DashboardTabStatusCustomizationOptions_IgnoredTestStatus) Descriptor() protoreflect.EnumDescriptor {
   301  	return file_config_proto_enumTypes[4].Descriptor()
   302  }
   303  
   304  func (DashboardTabStatusCustomizationOptions_IgnoredTestStatus) Type() protoreflect.EnumType {
   305  	return &file_config_proto_enumTypes[4]
   306  }
   307  
   308  func (x DashboardTabStatusCustomizationOptions_IgnoredTestStatus) Number() protoreflect.EnumNumber {
   309  	return protoreflect.EnumNumber(x)
   310  }
   311  
   312  // Deprecated: Use DashboardTabStatusCustomizationOptions_IgnoredTestStatus.Descriptor instead.
   313  func (DashboardTabStatusCustomizationOptions_IgnoredTestStatus) EnumDescriptor() ([]byte, []int) {
   314  	return file_config_proto_rawDescGZIP(), []int{15, 0}
   315  }
   316  
   317  // Specifies the test name, and its source
   318  type TestNameConfig struct {
   319  	state         protoimpl.MessageState
   320  	sizeCache     protoimpl.SizeCache
   321  	unknownFields protoimpl.UnknownFields
   322  
   323  	// The name elements specifying the target test name for this tab.
   324  	NameElements []*TestNameConfig_NameElement `protobuf:"bytes,1,rep,name=name_elements,json=nameElements,proto3" json:"name_elements,omitempty"`
   325  	// Specifies a printf-style format string for name elements. The format
   326  	// string should have as many conversions as there are name_elements.
   327  	// For example, two name_elements could be used with name_format="%s: %s".
   328  	NameFormat string `protobuf:"bytes,2,opt,name=name_format,json=nameFormat,proto3" json:"name_format,omitempty"`
   329  }
   330  
   331  func (x *TestNameConfig) Reset() {
   332  	*x = TestNameConfig{}
   333  	if protoimpl.UnsafeEnabled {
   334  		mi := &file_config_proto_msgTypes[0]
   335  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   336  		ms.StoreMessageInfo(mi)
   337  	}
   338  }
   339  
   340  func (x *TestNameConfig) String() string {
   341  	return protoimpl.X.MessageStringOf(x)
   342  }
   343  
   344  func (*TestNameConfig) ProtoMessage() {}
   345  
   346  func (x *TestNameConfig) ProtoReflect() protoreflect.Message {
   347  	mi := &file_config_proto_msgTypes[0]
   348  	if protoimpl.UnsafeEnabled && x != nil {
   349  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   350  		if ms.LoadMessageInfo() == nil {
   351  			ms.StoreMessageInfo(mi)
   352  		}
   353  		return ms
   354  	}
   355  	return mi.MessageOf(x)
   356  }
   357  
   358  // Deprecated: Use TestNameConfig.ProtoReflect.Descriptor instead.
   359  func (*TestNameConfig) Descriptor() ([]byte, []int) {
   360  	return file_config_proto_rawDescGZIP(), []int{0}
   361  }
   362  
   363  func (x *TestNameConfig) GetNameElements() []*TestNameConfig_NameElement {
   364  	if x != nil {
   365  		return x.NameElements
   366  	}
   367  	return nil
   368  }
   369  
   370  func (x *TestNameConfig) GetNameFormat() string {
   371  	if x != nil {
   372  		return x.NameFormat
   373  	}
   374  	return ""
   375  }
   376  
   377  // A single notification.
   378  type Notification struct {
   379  	state         protoimpl.MessageState
   380  	sizeCache     protoimpl.SizeCache
   381  	unknownFields protoimpl.UnknownFields
   382  
   383  	// Required: Text summary of the issue or notice.
   384  	Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"`
   385  	// Optional: Link to further information, such as a bug, email, document, etc.
   386  	ContextLink string `protobuf:"bytes,2,opt,name=context_link,json=contextLink,proto3" json:"context_link,omitempty"`
   387  }
   388  
   389  func (x *Notification) Reset() {
   390  	*x = Notification{}
   391  	if protoimpl.UnsafeEnabled {
   392  		mi := &file_config_proto_msgTypes[1]
   393  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   394  		ms.StoreMessageInfo(mi)
   395  	}
   396  }
   397  
   398  func (x *Notification) String() string {
   399  	return protoimpl.X.MessageStringOf(x)
   400  }
   401  
   402  func (*Notification) ProtoMessage() {}
   403  
   404  func (x *Notification) ProtoReflect() protoreflect.Message {
   405  	mi := &file_config_proto_msgTypes[1]
   406  	if protoimpl.UnsafeEnabled && x != nil {
   407  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   408  		if ms.LoadMessageInfo() == nil {
   409  			ms.StoreMessageInfo(mi)
   410  		}
   411  		return ms
   412  	}
   413  	return mi.MessageOf(x)
   414  }
   415  
   416  // Deprecated: Use Notification.ProtoReflect.Descriptor instead.
   417  func (*Notification) Descriptor() ([]byte, []int) {
   418  	return file_config_proto_rawDescGZIP(), []int{1}
   419  }
   420  
   421  func (x *Notification) GetSummary() string {
   422  	if x != nil {
   423  		return x.Summary
   424  	}
   425  	return ""
   426  }
   427  
   428  func (x *Notification) GetContextLink() string {
   429  	if x != nil {
   430  		return x.ContextLink
   431  	}
   432  	return ""
   433  }
   434  
   435  // Specifies a group of tests to gather.
   436  type TestGroup struct {
   437  	state         protoimpl.MessageState
   438  	sizeCache     protoimpl.SizeCache
   439  	unknownFields protoimpl.UnknownFields
   440  
   441  	// Name of this TestGroup, for mapping dashboard tabs to tests.
   442  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   443  	// Path to the test result stored in gcs (some-bucket/some/optional/path).
   444  	GcsPrefix string `protobuf:"bytes,2,opt,name=gcs_prefix,json=gcsPrefix,proto3" json:"gcs_prefix,omitempty"`
   445  	// Number of days of test results to gather and serve.
   446  	DaysOfResults int32 `protobuf:"varint,3,opt,name=days_of_results,json=daysOfResults,proto3" json:"days_of_results,omitempty"`
   447  	// Whether to ignore pending (currently running) test results.
   448  	IgnorePending bool `protobuf:"varint,4,opt,name=ignore_pending,json=ignorePending,proto3" json:"ignore_pending,omitempty"`
   449  	// Whether to ignore reported build results. It is recommended that tests
   450  	// report BUILD_FAIL instead of relying on this being disabled.
   451  	IgnoreBuilt bool `protobuf:"varint,5,opt,name=ignore_built,json=ignoreBuilt,proto3" json:"ignore_built,omitempty"`
   452  	// What to do with the 'Tests name' configuration value. It can replace the
   453  	// name of the test, be appended to the name of the test, or ignored. If it is
   454  	// ignored, then the name of the tests will be the build target.
   455  	TestsNamePolicy TestGroup_TestsName `protobuf:"varint,6,opt,name=tests_name_policy,json=testsNamePolicy,proto3,enum=testgrid.config.TestGroup_TestsName" json:"tests_name_policy,omitempty"`
   456  	// Tests with names that include these substrings will be removed from the
   457  	// table.
   458  	IgnoreTestSubstring []string                  `protobuf:"bytes,8,rep,name=ignore_test_substring,json=ignoreTestSubstring,proto3" json:"ignore_test_substring,omitempty"`
   459  	ColumnHeader        []*TestGroup_ColumnHeader `protobuf:"bytes,9,rep,name=column_header,json=columnHeader,proto3" json:"column_header,omitempty"`
   460  	// A test grouping option used if not specified by primary_grouping (#29)
   461  	FallbackGrouping TestGroup_FallbackGrouping `protobuf:"varint,10,opt,name=fallback_grouping,json=fallbackGrouping,proto3,enum=testgrid.config.TestGroup_FallbackGrouping" json:"fallback_grouping,omitempty"`
   462  	// DEPRECATED: use DashboardTabAlertOptions > alert_stale_result_hours
   463  	//
   464  	// Deprecated: Do not use.
   465  	AlertStaleResultsHours int32 `protobuf:"varint,11,opt,name=alert_stale_results_hours,json=alertStaleResultsHours,proto3" json:"alert_stale_results_hours,omitempty"`
   466  	// DEPRECATED: use DashboardTabAlertOptions > num_failures_to_alert
   467  	//
   468  	// Deprecated: Do not use.
   469  	NumFailuresToAlert int32 `protobuf:"varint,12,opt,name=num_failures_to_alert,json=numFailuresToAlert,proto3" json:"num_failures_to_alert,omitempty"`
   470  	// DEPRECATED: use dashboard_tab.beta_autobug_options.beta_autobug_component
   471  	// instead.
   472  	//
   473  	// Deprecated: Do not use.
   474  	BugComponent int32 `protobuf:"varint,13,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"`
   475  	// Default code search path for searching regressions. Overridden by
   476  	// code_search_path in DashboardTab.
   477  	CodeSearchPath string `protobuf:"bytes,14,opt,name=code_search_path,json=codeSearchPath,proto3" json:"code_search_path,omitempty"`
   478  	// The number of columns to consider "recent" for a variety of purposes.
   479  	NumColumnsRecent int32 `protobuf:"varint,15,opt,name=num_columns_recent,json=numColumnsRecent,proto3" json:"num_columns_recent,omitempty"`
   480  	// Whether to read test metadata from the test results. Information
   481  	// from the test metadata is used to determine where bugs are filed in
   482  	// specific cases.
   483  	UseTestMetadata bool `protobuf:"varint,16,opt,name=use_test_metadata,json=useTestMetadata,proto3" json:"use_test_metadata,omitempty"`
   484  	// DEPRECATED: use DashboardTabAlertOptions > alert_mail_to_address instead
   485  	//
   486  	// Deprecated: Do not use.
   487  	AlertMailToAddresses string `protobuf:"bytes,17,opt,name=alert_mail_to_addresses,json=alertMailToAddresses,proto3" json:"alert_mail_to_addresses,omitempty"`
   488  	// DEPRECATED: use DashboardTabAlertOptions > subject
   489  	//
   490  	// Deprecated: Do not use.
   491  	AlertMailSubject string `protobuf:"bytes,18,opt,name=alert_mail_subject,json=alertMailSubject,proto3" json:"alert_mail_subject,omitempty"`
   492  	// DEPRECATED: use DashboardTabAlertOptions > alert_mail_failure_message
   493  	//
   494  	// Deprecated: Do not use.
   495  	AlertMailFailureMessage string `protobuf:"bytes,19,opt,name=alert_mail_failure_message,json=alertMailFailureMessage,proto3" json:"alert_mail_failure_message,omitempty"`
   496  	// DEPRECATED: use DashboardTabAlertOptions > debug_url
   497  	//
   498  	// Deprecated: Do not use.
   499  	AlertMailDebugUrl string `protobuf:"bytes,20,opt,name=alert_mail_debug_url,json=alertMailDebugUrl,proto3" json:"alert_mail_debug_url,omitempty"`
   500  	// DEPRECATED: use DashboardTabAlertOptions > wait_minutes_between_emails
   501  	//
   502  	// Deprecated: Do not use.
   503  	MinElapsedMinutesBetweenMails int32 `protobuf:"varint,21,opt,name=min_elapsed_minutes_between_mails,json=minElapsedMinutesBetweenMails,proto3" json:"min_elapsed_minutes_between_mails,omitempty"`
   504  	// Whether to treat a combination of passes and failures within one test as a
   505  	// flaky status.
   506  	EnableFlakyStatus bool `protobuf:"varint,23,opt,name=enable_flaky_status,json=enableFlakyStatus,proto3" json:"enable_flaky_status,omitempty"`
   507  	// disable_merged_status will restores deprecated behavior of
   508  	// splitting multiple foo rows into foo [2], etc rather a single
   509  	// potentially flaky row.
   510  	DisableMergedStatus bool `protobuf:"varint,60,opt,name=disable_merged_status,json=disableMergedStatus,proto3" json:"disable_merged_status,omitempty"`
   511  	// deprecated - always set to true
   512  	//
   513  	// Deprecated: Do not use.
   514  	UseKubernetesClient bool `protobuf:"varint,24,opt,name=use_kubernetes_client,json=useKubernetesClient,proto3" json:"use_kubernetes_client,omitempty"`
   515  	// When use_kubernetes_client is on testgrid expects these results
   516  	// to come from prow, which should include a prowjob.json and podinfo.json
   517  	// to help debugging. If you do not expect these files to exist, you
   518  	// can optionally disable this analysis.
   519  	DisableProwjobAnalysis bool `protobuf:"varint,62,opt,name=disable_prowjob_analysis,json=disableProwjobAnalysis,proto3" json:"disable_prowjob_analysis,omitempty"`
   520  	// deprecated - always set to true
   521  	IsExternal bool `protobuf:"varint,25,opt,name=is_external,json=isExternal,proto3" json:"is_external,omitempty"`
   522  	// Specifies the test name for a test.
   523  	TestNameConfig *TestNameConfig `protobuf:"bytes,26,opt,name=test_name_config,json=testNameConfig,proto3" json:"test_name_config,omitempty"`
   524  	// A list of notifications attached to this test group.
   525  	// This is displayed on any dashboard tab backed by this test group.
   526  	Notifications []*Notification `protobuf:"bytes,27,rep,name=notifications,proto3" json:"notifications,omitempty"`
   527  	// A primary grouping strategy for grouping test results in columns.
   528  	// If a primary grouping is specified, the fallback grouping is ignored.
   529  	PrimaryGrouping TestGroup_PrimaryGrouping `protobuf:"varint,29,opt,name=primary_grouping,json=primaryGrouping,proto3,enum=testgrid.config.TestGroup_PrimaryGrouping" json:"primary_grouping,omitempty"`
   530  	// Whether to collect pass-fail data for test methods. Additional test cases
   531  	// will be added for each test method in a target.
   532  	EnableTestMethods bool `protobuf:"varint,30,opt,name=enable_test_methods,json=enableTestMethods,proto3" json:"enable_test_methods,omitempty"`
   533  	// Test annotations to look for. Adds custom icon to results.
   534  	TestAnnotations []*TestGroup_TestAnnotation `protobuf:"bytes,31,rep,name=test_annotations,json=testAnnotations,proto3" json:"test_annotations,omitempty"`
   535  	// Maximum number of individual test methods to collect for any given test
   536  	// row. If a test has more than this many methods, no methods will be
   537  	// displayed.
   538  	MaxTestMethodsPerTest int32 `protobuf:"varint,32,opt,name=max_test_methods_per_test,json=maxTestMethodsPerTest,proto3" json:"max_test_methods_per_test,omitempty"`
   539  	// Default metadata that should be applied for opening bugs, if a given regex
   540  	// matches against a test's name.
   541  	// Requires 'use_test_metadata = true'.
   542  	TestMetadataOptions []*TestMetadataOptions `protobuf:"bytes,34,rep,name=test_metadata_options,json=testMetadataOptions,proto3" json:"test_metadata_options,omitempty"`
   543  	// A space-delimited string of tags that are used to filter test targets.
   544  	// A leading - before the tag means this tag should not be present
   545  	// in the target.
   546  	// Example:
   547  	//  contains tag1, but not tag2: test_tag_pattern = 'tag1 -tag2'
   548  	TestTagPattern string `protobuf:"bytes,35,opt,name=test_tag_pattern,json=testTagPattern,proto3" json:"test_tag_pattern,omitempty"`
   549  	// DEPRECATED: use dashboard_tab.beta_autobug_options instead.
   550  	//
   551  	// Deprecated: Do not use.
   552  	AutoBugOptions *AutoBugOptions `protobuf:"bytes,36,opt,name=auto_bug_options,json=autoBugOptions,proto3" json:"auto_bug_options,omitempty"`
   553  	// Max number of days any single test can take.
   554  	MaxTestRuntimeHours int32 `protobuf:"varint,37,opt,name=max_test_runtime_hours,json=maxTestRuntimeHours,proto3" json:"max_test_runtime_hours,omitempty"`
   555  	// The number of consecutive test passes to close the alert.
   556  	NumPassesToDisableAlert int32 `protobuf:"varint,38,opt,name=num_passes_to_disable_alert,json=numPassesToDisableAlert,proto3" json:"num_passes_to_disable_alert,omitempty"`
   557  	// If true, also associate bugs with tests if the test result's overview/group
   558  	// ID is in the bug.
   559  	LinkBugsByGroup bool `protobuf:"varint,39,opt,name=link_bugs_by_group,json=linkBugsByGroup,proto3" json:"link_bugs_by_group,omitempty"`
   560  	// Only show test methods with all required properties
   561  	TestMethodProperties []*TestGroup_KeyValue `protobuf:"bytes,41,rep,name=test_method_properties,json=testMethodProperties,proto3" json:"test_method_properties,omitempty"`
   562  	// If true, allows gathering and associating bugs with targets in the
   563  	// dashboard. Required in order to auto-file bugs.
   564  	GatherBugs bool `protobuf:"varint,42,opt,name=gather_bugs,json=gatherBugs,proto3" json:"gather_bugs,omitempty"`
   565  	// Numeric property metric value to be used for short text. If this property
   566  	// is present, it will override all the other short text values.
   567  	ShortTextMetric string `protobuf:"bytes,43,opt,name=short_text_metric,json=shortTextMetric,proto3" json:"short_text_metric,omitempty"`
   568  	// The key of a key-value pair in metadata (a 'configuration value').
   569  	// This overrides the default build with the value from the key-value pair.
   570  	BuildOverrideConfigurationValue string `protobuf:"bytes,44,opt,name=build_override_configuration_value,json=buildOverrideConfigurationValue,proto3" json:"build_override_configuration_value,omitempty"`
   571  	// If true, only associate bugs with test methods if that test method is
   572  	// mentioned in the bug. If false, bugs will be associated with all test
   573  	// methods.
   574  	LinkBugsByTestMethods bool `protobuf:"varint,45,opt,name=link_bugs_by_test_methods,json=linkBugsByTestMethods,proto3" json:"link_bugs_by_test_methods,omitempty"`
   575  	// Regex to match test methods. Only test methods with names that match
   576  	// this regex will be included in the table.
   577  	TestMethodMatchRegex string `protobuf:"bytes,46,opt,name=test_method_match_regex,json=testMethodMatchRegex,proto3" json:"test_method_match_regex,omitempty"`
   578  	// Regex to exclude test methods. Test methods with names that match
   579  	// this regex will be excluded from the table, even if they match
   580  	// test_method_match_regex.
   581  	TestMethodUnmatchRegex string `protobuf:"bytes,61,opt,name=test_method_unmatch_regex,json=testMethodUnmatchRegex,proto3" json:"test_method_unmatch_regex,omitempty"`
   582  	// If true, test method names are printed with the full class names.
   583  	UseFullMethodNames bool `protobuf:"varint,47,opt,name=use_full_method_names,json=useFullMethodNames,proto3" json:"use_full_method_names,omitempty"`
   584  	// A configuration value that is used as a fallback grouping.
   585  	// This is useful for cases where there are builds that shared the same
   586  	// commit but are run at separate times of day.
   587  	FallbackGroupingConfigurationValue string `protobuf:"bytes,49,opt,name=fallback_grouping_configuration_value,json=fallbackGroupingConfigurationValue,proto3" json:"fallback_grouping_configuration_value,omitempty"`
   588  	// Configuration type of the result source.
   589  	ResultSource *TestGroup_ResultSource `protobuf:"bytes,50,opt,name=result_source,json=resultSource,proto3" json:"result_source,omitempty"`
   590  	// Set of rules that are evaluated with each test result. If an evaluation is
   591  	// successful, the status of that test result will be whatever is specified
   592  	// for a given rule. For more information, look at RuleSet documention
   593  	CustomEvaluatorRuleSet *custom_evaluator.RuleSet `protobuf:"bytes,51,opt,name=custom_evaluator_rule_set,json=customEvaluatorRuleSet,proto3" json:"custom_evaluator_rule_set,omitempty"`
   594  	// If true, instead of updating the group, read the state proto from storage
   595  	// and update summary, alerts, etc. from that state.
   596  	// This only applies to test group state, not bug state for a test group.
   597  	// This assumes that the state proto is updated through other means (another
   598  	// updater, manually, etc).
   599  	ReadStateFromStorage bool `protobuf:"varint,52,opt,name=read_state_from_storage,json=readStateFromStorage,proto3" json:"read_state_from_storage,omitempty"`
   600  	// If true, only add the most recent result for a test when multiple results
   601  	// for a test with the same name are encountered.
   602  	IgnoreOldResults bool `protobuf:"varint,53,opt,name=ignore_old_results,json=ignoreOldResults,proto3" json:"ignore_old_results,omitempty"`
   603  	// If True, ignore the 'pass with skips' status (show as a blank cell).
   604  	IgnoreSkip bool `protobuf:"varint,54,opt,name=ignore_skip,json=ignoreSkip,proto3" json:"ignore_skip,omitempty"`
   605  	// A string containing python formatting specifiers that overrides the
   606  	// commit with the date formatted according to this string. This is useful
   607  	// for aggregating multiple columns that don't have a matching commit.
   608  	BuildOverrideStrftime string `protobuf:"bytes,55,opt,name=build_override_strftime,json=buildOverrideStrftime,proto3" json:"build_override_strftime,omitempty"`
   609  	// Specify a property that will be read into state in the user_property field.
   610  	// These can be substituted into LinkTemplates.
   611  	UserProperty string `protobuf:"bytes,56,opt,name=user_property,json=userProperty,proto3" json:"user_property,omitempty"`
   612  	// Where to gather linked issues from. (Currently a no-op).
   613  	IssueGatherOptions *IssueGatherOptions `protobuf:"bytes,63,opt,name=issue_gather_options,json=issueGatherOptions,proto3" json:"issue_gather_options,omitempty"`
   614  }
   615  
   616  func (x *TestGroup) Reset() {
   617  	*x = TestGroup{}
   618  	if protoimpl.UnsafeEnabled {
   619  		mi := &file_config_proto_msgTypes[2]
   620  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   621  		ms.StoreMessageInfo(mi)
   622  	}
   623  }
   624  
   625  func (x *TestGroup) String() string {
   626  	return protoimpl.X.MessageStringOf(x)
   627  }
   628  
   629  func (*TestGroup) ProtoMessage() {}
   630  
   631  func (x *TestGroup) ProtoReflect() protoreflect.Message {
   632  	mi := &file_config_proto_msgTypes[2]
   633  	if protoimpl.UnsafeEnabled && x != nil {
   634  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   635  		if ms.LoadMessageInfo() == nil {
   636  			ms.StoreMessageInfo(mi)
   637  		}
   638  		return ms
   639  	}
   640  	return mi.MessageOf(x)
   641  }
   642  
   643  // Deprecated: Use TestGroup.ProtoReflect.Descriptor instead.
   644  func (*TestGroup) Descriptor() ([]byte, []int) {
   645  	return file_config_proto_rawDescGZIP(), []int{2}
   646  }
   647  
   648  func (x *TestGroup) GetName() string {
   649  	if x != nil {
   650  		return x.Name
   651  	}
   652  	return ""
   653  }
   654  
   655  func (x *TestGroup) GetGcsPrefix() string {
   656  	if x != nil {
   657  		return x.GcsPrefix
   658  	}
   659  	return ""
   660  }
   661  
   662  func (x *TestGroup) GetDaysOfResults() int32 {
   663  	if x != nil {
   664  		return x.DaysOfResults
   665  	}
   666  	return 0
   667  }
   668  
   669  func (x *TestGroup) GetIgnorePending() bool {
   670  	if x != nil {
   671  		return x.IgnorePending
   672  	}
   673  	return false
   674  }
   675  
   676  func (x *TestGroup) GetIgnoreBuilt() bool {
   677  	if x != nil {
   678  		return x.IgnoreBuilt
   679  	}
   680  	return false
   681  }
   682  
   683  func (x *TestGroup) GetTestsNamePolicy() TestGroup_TestsName {
   684  	if x != nil {
   685  		return x.TestsNamePolicy
   686  	}
   687  	return TestGroup_TESTS_NAME_UNSPECIFIED
   688  }
   689  
   690  func (x *TestGroup) GetIgnoreTestSubstring() []string {
   691  	if x != nil {
   692  		return x.IgnoreTestSubstring
   693  	}
   694  	return nil
   695  }
   696  
   697  func (x *TestGroup) GetColumnHeader() []*TestGroup_ColumnHeader {
   698  	if x != nil {
   699  		return x.ColumnHeader
   700  	}
   701  	return nil
   702  }
   703  
   704  func (x *TestGroup) GetFallbackGrouping() TestGroup_FallbackGrouping {
   705  	if x != nil {
   706  		return x.FallbackGrouping
   707  	}
   708  	return TestGroup_FALLBACK_GROUPING_NONE
   709  }
   710  
   711  // Deprecated: Do not use.
   712  func (x *TestGroup) GetAlertStaleResultsHours() int32 {
   713  	if x != nil {
   714  		return x.AlertStaleResultsHours
   715  	}
   716  	return 0
   717  }
   718  
   719  // Deprecated: Do not use.
   720  func (x *TestGroup) GetNumFailuresToAlert() int32 {
   721  	if x != nil {
   722  		return x.NumFailuresToAlert
   723  	}
   724  	return 0
   725  }
   726  
   727  // Deprecated: Do not use.
   728  func (x *TestGroup) GetBugComponent() int32 {
   729  	if x != nil {
   730  		return x.BugComponent
   731  	}
   732  	return 0
   733  }
   734  
   735  func (x *TestGroup) GetCodeSearchPath() string {
   736  	if x != nil {
   737  		return x.CodeSearchPath
   738  	}
   739  	return ""
   740  }
   741  
   742  func (x *TestGroup) GetNumColumnsRecent() int32 {
   743  	if x != nil {
   744  		return x.NumColumnsRecent
   745  	}
   746  	return 0
   747  }
   748  
   749  func (x *TestGroup) GetUseTestMetadata() bool {
   750  	if x != nil {
   751  		return x.UseTestMetadata
   752  	}
   753  	return false
   754  }
   755  
   756  // Deprecated: Do not use.
   757  func (x *TestGroup) GetAlertMailToAddresses() string {
   758  	if x != nil {
   759  		return x.AlertMailToAddresses
   760  	}
   761  	return ""
   762  }
   763  
   764  // Deprecated: Do not use.
   765  func (x *TestGroup) GetAlertMailSubject() string {
   766  	if x != nil {
   767  		return x.AlertMailSubject
   768  	}
   769  	return ""
   770  }
   771  
   772  // Deprecated: Do not use.
   773  func (x *TestGroup) GetAlertMailFailureMessage() string {
   774  	if x != nil {
   775  		return x.AlertMailFailureMessage
   776  	}
   777  	return ""
   778  }
   779  
   780  // Deprecated: Do not use.
   781  func (x *TestGroup) GetAlertMailDebugUrl() string {
   782  	if x != nil {
   783  		return x.AlertMailDebugUrl
   784  	}
   785  	return ""
   786  }
   787  
   788  // Deprecated: Do not use.
   789  func (x *TestGroup) GetMinElapsedMinutesBetweenMails() int32 {
   790  	if x != nil {
   791  		return x.MinElapsedMinutesBetweenMails
   792  	}
   793  	return 0
   794  }
   795  
   796  func (x *TestGroup) GetEnableFlakyStatus() bool {
   797  	if x != nil {
   798  		return x.EnableFlakyStatus
   799  	}
   800  	return false
   801  }
   802  
   803  func (x *TestGroup) GetDisableMergedStatus() bool {
   804  	if x != nil {
   805  		return x.DisableMergedStatus
   806  	}
   807  	return false
   808  }
   809  
   810  // Deprecated: Do not use.
   811  func (x *TestGroup) GetUseKubernetesClient() bool {
   812  	if x != nil {
   813  		return x.UseKubernetesClient
   814  	}
   815  	return false
   816  }
   817  
   818  func (x *TestGroup) GetDisableProwjobAnalysis() bool {
   819  	if x != nil {
   820  		return x.DisableProwjobAnalysis
   821  	}
   822  	return false
   823  }
   824  
   825  func (x *TestGroup) GetIsExternal() bool {
   826  	if x != nil {
   827  		return x.IsExternal
   828  	}
   829  	return false
   830  }
   831  
   832  func (x *TestGroup) GetTestNameConfig() *TestNameConfig {
   833  	if x != nil {
   834  		return x.TestNameConfig
   835  	}
   836  	return nil
   837  }
   838  
   839  func (x *TestGroup) GetNotifications() []*Notification {
   840  	if x != nil {
   841  		return x.Notifications
   842  	}
   843  	return nil
   844  }
   845  
   846  func (x *TestGroup) GetPrimaryGrouping() TestGroup_PrimaryGrouping {
   847  	if x != nil {
   848  		return x.PrimaryGrouping
   849  	}
   850  	return TestGroup_PRIMARY_GROUPING_NONE
   851  }
   852  
   853  func (x *TestGroup) GetEnableTestMethods() bool {
   854  	if x != nil {
   855  		return x.EnableTestMethods
   856  	}
   857  	return false
   858  }
   859  
   860  func (x *TestGroup) GetTestAnnotations() []*TestGroup_TestAnnotation {
   861  	if x != nil {
   862  		return x.TestAnnotations
   863  	}
   864  	return nil
   865  }
   866  
   867  func (x *TestGroup) GetMaxTestMethodsPerTest() int32 {
   868  	if x != nil {
   869  		return x.MaxTestMethodsPerTest
   870  	}
   871  	return 0
   872  }
   873  
   874  func (x *TestGroup) GetTestMetadataOptions() []*TestMetadataOptions {
   875  	if x != nil {
   876  		return x.TestMetadataOptions
   877  	}
   878  	return nil
   879  }
   880  
   881  func (x *TestGroup) GetTestTagPattern() string {
   882  	if x != nil {
   883  		return x.TestTagPattern
   884  	}
   885  	return ""
   886  }
   887  
   888  // Deprecated: Do not use.
   889  func (x *TestGroup) GetAutoBugOptions() *AutoBugOptions {
   890  	if x != nil {
   891  		return x.AutoBugOptions
   892  	}
   893  	return nil
   894  }
   895  
   896  func (x *TestGroup) GetMaxTestRuntimeHours() int32 {
   897  	if x != nil {
   898  		return x.MaxTestRuntimeHours
   899  	}
   900  	return 0
   901  }
   902  
   903  func (x *TestGroup) GetNumPassesToDisableAlert() int32 {
   904  	if x != nil {
   905  		return x.NumPassesToDisableAlert
   906  	}
   907  	return 0
   908  }
   909  
   910  func (x *TestGroup) GetLinkBugsByGroup() bool {
   911  	if x != nil {
   912  		return x.LinkBugsByGroup
   913  	}
   914  	return false
   915  }
   916  
   917  func (x *TestGroup) GetTestMethodProperties() []*TestGroup_KeyValue {
   918  	if x != nil {
   919  		return x.TestMethodProperties
   920  	}
   921  	return nil
   922  }
   923  
   924  func (x *TestGroup) GetGatherBugs() bool {
   925  	if x != nil {
   926  		return x.GatherBugs
   927  	}
   928  	return false
   929  }
   930  
   931  func (x *TestGroup) GetShortTextMetric() string {
   932  	if x != nil {
   933  		return x.ShortTextMetric
   934  	}
   935  	return ""
   936  }
   937  
   938  func (x *TestGroup) GetBuildOverrideConfigurationValue() string {
   939  	if x != nil {
   940  		return x.BuildOverrideConfigurationValue
   941  	}
   942  	return ""
   943  }
   944  
   945  func (x *TestGroup) GetLinkBugsByTestMethods() bool {
   946  	if x != nil {
   947  		return x.LinkBugsByTestMethods
   948  	}
   949  	return false
   950  }
   951  
   952  func (x *TestGroup) GetTestMethodMatchRegex() string {
   953  	if x != nil {
   954  		return x.TestMethodMatchRegex
   955  	}
   956  	return ""
   957  }
   958  
   959  func (x *TestGroup) GetTestMethodUnmatchRegex() string {
   960  	if x != nil {
   961  		return x.TestMethodUnmatchRegex
   962  	}
   963  	return ""
   964  }
   965  
   966  func (x *TestGroup) GetUseFullMethodNames() bool {
   967  	if x != nil {
   968  		return x.UseFullMethodNames
   969  	}
   970  	return false
   971  }
   972  
   973  func (x *TestGroup) GetFallbackGroupingConfigurationValue() string {
   974  	if x != nil {
   975  		return x.FallbackGroupingConfigurationValue
   976  	}
   977  	return ""
   978  }
   979  
   980  func (x *TestGroup) GetResultSource() *TestGroup_ResultSource {
   981  	if x != nil {
   982  		return x.ResultSource
   983  	}
   984  	return nil
   985  }
   986  
   987  func (x *TestGroup) GetCustomEvaluatorRuleSet() *custom_evaluator.RuleSet {
   988  	if x != nil {
   989  		return x.CustomEvaluatorRuleSet
   990  	}
   991  	return nil
   992  }
   993  
   994  func (x *TestGroup) GetReadStateFromStorage() bool {
   995  	if x != nil {
   996  		return x.ReadStateFromStorage
   997  	}
   998  	return false
   999  }
  1000  
  1001  func (x *TestGroup) GetIgnoreOldResults() bool {
  1002  	if x != nil {
  1003  		return x.IgnoreOldResults
  1004  	}
  1005  	return false
  1006  }
  1007  
  1008  func (x *TestGroup) GetIgnoreSkip() bool {
  1009  	if x != nil {
  1010  		return x.IgnoreSkip
  1011  	}
  1012  	return false
  1013  }
  1014  
  1015  func (x *TestGroup) GetBuildOverrideStrftime() string {
  1016  	if x != nil {
  1017  		return x.BuildOverrideStrftime
  1018  	}
  1019  	return ""
  1020  }
  1021  
  1022  func (x *TestGroup) GetUserProperty() string {
  1023  	if x != nil {
  1024  		return x.UserProperty
  1025  	}
  1026  	return ""
  1027  }
  1028  
  1029  func (x *TestGroup) GetIssueGatherOptions() *IssueGatherOptions {
  1030  	if x != nil {
  1031  		return x.IssueGatherOptions
  1032  	}
  1033  	return nil
  1034  }
  1035  
  1036  // GCSConfig specifies results stored in GCS, typically created by prow.
  1037  //
  1038  // Each invocation is stored in a GCS path, containing json metadata files
  1039  // as well as junit and other artifacts specifying the result of the run.
  1040  //
  1041  // More info:
  1042  // https://github.com/GoogleCloudPlatform/testgrid/tree/master/metadata
  1043  type GCSConfig struct {
  1044  	state         protoimpl.MessageState
  1045  	sizeCache     protoimpl.SizeCache
  1046  	unknownFields protoimpl.UnknownFields
  1047  
  1048  	// Path to the test result stored in gcs (some-bucket/some/optional/path).
  1049  	GcsPrefix string `protobuf:"bytes,1,opt,name=gcs_prefix,json=gcsPrefix,proto3" json:"gcs_prefix,omitempty"`
  1050  	// The GCP project where GCS sends notifications for the above prefix.
  1051  	PubsubProject string `protobuf:"bytes,2,opt,name=pubsub_project,json=pubsubProject,proto3" json:"pubsub_project,omitempty"`
  1052  	// The pubsub subscription ID in the above topic
  1053  	PubsubSubscription string `protobuf:"bytes,3,opt,name=pubsub_subscription,json=pubsubSubscription,proto3" json:"pubsub_subscription,omitempty"`
  1054  }
  1055  
  1056  func (x *GCSConfig) Reset() {
  1057  	*x = GCSConfig{}
  1058  	if protoimpl.UnsafeEnabled {
  1059  		mi := &file_config_proto_msgTypes[3]
  1060  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1061  		ms.StoreMessageInfo(mi)
  1062  	}
  1063  }
  1064  
  1065  func (x *GCSConfig) String() string {
  1066  	return protoimpl.X.MessageStringOf(x)
  1067  }
  1068  
  1069  func (*GCSConfig) ProtoMessage() {}
  1070  
  1071  func (x *GCSConfig) ProtoReflect() protoreflect.Message {
  1072  	mi := &file_config_proto_msgTypes[3]
  1073  	if protoimpl.UnsafeEnabled && x != nil {
  1074  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1075  		if ms.LoadMessageInfo() == nil {
  1076  			ms.StoreMessageInfo(mi)
  1077  		}
  1078  		return ms
  1079  	}
  1080  	return mi.MessageOf(x)
  1081  }
  1082  
  1083  // Deprecated: Use GCSConfig.ProtoReflect.Descriptor instead.
  1084  func (*GCSConfig) Descriptor() ([]byte, []int) {
  1085  	return file_config_proto_rawDescGZIP(), []int{3}
  1086  }
  1087  
  1088  func (x *GCSConfig) GetGcsPrefix() string {
  1089  	if x != nil {
  1090  		return x.GcsPrefix
  1091  	}
  1092  	return ""
  1093  }
  1094  
  1095  func (x *GCSConfig) GetPubsubProject() string {
  1096  	if x != nil {
  1097  		return x.PubsubProject
  1098  	}
  1099  	return ""
  1100  }
  1101  
  1102  func (x *GCSConfig) GetPubsubSubscription() string {
  1103  	if x != nil {
  1104  		return x.PubsubSubscription
  1105  	}
  1106  	return ""
  1107  }
  1108  
  1109  // ResultStoreConfig specifies results stored in ResultStore.
  1110  type ResultStoreConfig struct {
  1111  	state         protoimpl.MessageState
  1112  	sizeCache     protoimpl.SizeCache
  1113  	unknownFields protoimpl.UnknownFields
  1114  
  1115  	// Google Cloud Platform project ID where ResultStore results are stored.
  1116  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
  1117  	// A simple query to filter for particular results.
  1118  	// Currently, only allows a query in the form of `target:"<target>"`.
  1119  	Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"`
  1120  }
  1121  
  1122  func (x *ResultStoreConfig) Reset() {
  1123  	*x = ResultStoreConfig{}
  1124  	if protoimpl.UnsafeEnabled {
  1125  		mi := &file_config_proto_msgTypes[4]
  1126  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1127  		ms.StoreMessageInfo(mi)
  1128  	}
  1129  }
  1130  
  1131  func (x *ResultStoreConfig) String() string {
  1132  	return protoimpl.X.MessageStringOf(x)
  1133  }
  1134  
  1135  func (*ResultStoreConfig) ProtoMessage() {}
  1136  
  1137  func (x *ResultStoreConfig) ProtoReflect() protoreflect.Message {
  1138  	mi := &file_config_proto_msgTypes[4]
  1139  	if protoimpl.UnsafeEnabled && x != nil {
  1140  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1141  		if ms.LoadMessageInfo() == nil {
  1142  			ms.StoreMessageInfo(mi)
  1143  		}
  1144  		return ms
  1145  	}
  1146  	return mi.MessageOf(x)
  1147  }
  1148  
  1149  // Deprecated: Use ResultStoreConfig.ProtoReflect.Descriptor instead.
  1150  func (*ResultStoreConfig) Descriptor() ([]byte, []int) {
  1151  	return file_config_proto_rawDescGZIP(), []int{4}
  1152  }
  1153  
  1154  func (x *ResultStoreConfig) GetProject() string {
  1155  	if x != nil {
  1156  		return x.Project
  1157  	}
  1158  	return ""
  1159  }
  1160  
  1161  func (x *ResultStoreConfig) GetQuery() string {
  1162  	if x != nil {
  1163  		return x.Query
  1164  	}
  1165  	return ""
  1166  }
  1167  
  1168  // Options for where to gather linked issues from.
  1169  type IssueGatherOptions struct {
  1170  	state         protoimpl.MessageState
  1171  	sizeCache     protoimpl.SizeCache
  1172  	unknownFields protoimpl.UnknownFields
  1173  }
  1174  
  1175  func (x *IssueGatherOptions) Reset() {
  1176  	*x = IssueGatherOptions{}
  1177  	if protoimpl.UnsafeEnabled {
  1178  		mi := &file_config_proto_msgTypes[5]
  1179  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1180  		ms.StoreMessageInfo(mi)
  1181  	}
  1182  }
  1183  
  1184  func (x *IssueGatherOptions) String() string {
  1185  	return protoimpl.X.MessageStringOf(x)
  1186  }
  1187  
  1188  func (*IssueGatherOptions) ProtoMessage() {}
  1189  
  1190  func (x *IssueGatherOptions) ProtoReflect() protoreflect.Message {
  1191  	mi := &file_config_proto_msgTypes[5]
  1192  	if protoimpl.UnsafeEnabled && x != nil {
  1193  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1194  		if ms.LoadMessageInfo() == nil {
  1195  			ms.StoreMessageInfo(mi)
  1196  		}
  1197  		return ms
  1198  	}
  1199  	return mi.MessageOf(x)
  1200  }
  1201  
  1202  // Deprecated: Use IssueGatherOptions.ProtoReflect.Descriptor instead.
  1203  func (*IssueGatherOptions) Descriptor() ([]byte, []int) {
  1204  	return file_config_proto_rawDescGZIP(), []int{5}
  1205  }
  1206  
  1207  // Default metadata to apply when opening bugs.
  1208  type TestMetadataOptions struct {
  1209  	state         protoimpl.MessageState
  1210  	sizeCache     protoimpl.SizeCache
  1211  	unknownFields protoimpl.UnknownFields
  1212  
  1213  	// Apply the following metadata if this regex matches a test's name.
  1214  	TestNameRegex string `protobuf:"bytes,1,opt,name=test_name_regex,json=testNameRegex,proto3" json:"test_name_regex,omitempty"`
  1215  	// Default bug component to open a bug in.
  1216  	BugComponent int32 `protobuf:"varint,2,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"`
  1217  	// Default owner to assign a bug to.
  1218  	Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"`
  1219  	// List of default users to CC a bug to.
  1220  	Cc []string `protobuf:"bytes,4,rep,name=cc,proto3" json:"cc,omitempty"`
  1221  	// Apply following metadata if this regex matches a test’s failure message.
  1222  	MessageRegex string `protobuf:"bytes,5,opt,name=message_regex,json=messageRegex,proto3" json:"message_regex,omitempty"`
  1223  }
  1224  
  1225  func (x *TestMetadataOptions) Reset() {
  1226  	*x = TestMetadataOptions{}
  1227  	if protoimpl.UnsafeEnabled {
  1228  		mi := &file_config_proto_msgTypes[6]
  1229  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1230  		ms.StoreMessageInfo(mi)
  1231  	}
  1232  }
  1233  
  1234  func (x *TestMetadataOptions) String() string {
  1235  	return protoimpl.X.MessageStringOf(x)
  1236  }
  1237  
  1238  func (*TestMetadataOptions) ProtoMessage() {}
  1239  
  1240  func (x *TestMetadataOptions) ProtoReflect() protoreflect.Message {
  1241  	mi := &file_config_proto_msgTypes[6]
  1242  	if protoimpl.UnsafeEnabled && x != nil {
  1243  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1244  		if ms.LoadMessageInfo() == nil {
  1245  			ms.StoreMessageInfo(mi)
  1246  		}
  1247  		return ms
  1248  	}
  1249  	return mi.MessageOf(x)
  1250  }
  1251  
  1252  // Deprecated: Use TestMetadataOptions.ProtoReflect.Descriptor instead.
  1253  func (*TestMetadataOptions) Descriptor() ([]byte, []int) {
  1254  	return file_config_proto_rawDescGZIP(), []int{6}
  1255  }
  1256  
  1257  func (x *TestMetadataOptions) GetTestNameRegex() string {
  1258  	if x != nil {
  1259  		return x.TestNameRegex
  1260  	}
  1261  	return ""
  1262  }
  1263  
  1264  func (x *TestMetadataOptions) GetBugComponent() int32 {
  1265  	if x != nil {
  1266  		return x.BugComponent
  1267  	}
  1268  	return 0
  1269  }
  1270  
  1271  func (x *TestMetadataOptions) GetOwner() string {
  1272  	if x != nil {
  1273  		return x.Owner
  1274  	}
  1275  	return ""
  1276  }
  1277  
  1278  func (x *TestMetadataOptions) GetCc() []string {
  1279  	if x != nil {
  1280  		return x.Cc
  1281  	}
  1282  	return nil
  1283  }
  1284  
  1285  func (x *TestMetadataOptions) GetMessageRegex() string {
  1286  	if x != nil {
  1287  		return x.MessageRegex
  1288  	}
  1289  	return ""
  1290  }
  1291  
  1292  type AutoBugOptions struct {
  1293  	state         protoimpl.MessageState
  1294  	sizeCache     protoimpl.SizeCache
  1295  	unknownFields protoimpl.UnknownFields
  1296  
  1297  	// [BETA] When specified, file bugs to this component, using the beta AutoBug.
  1298  	// If you do not want to opt into the beta, specify `bug_component` in your
  1299  	// TestGroup instead.
  1300  	// TODO(b/154866134): Rename to autobug_component once we've migrated.
  1301  	BetaAutobugComponent int32 `protobuf:"varint,10,opt,name=beta_autobug_component,json=betaAutobugComponent,proto3" json:"beta_autobug_component,omitempty"`
  1302  	// Whether to auto-close auto-filed bugs.
  1303  	// Alias for "passing_behavior = CLOSE_ON_PASSING";
  1304  	AutoClose bool `protobuf:"varint,1,opt,name=auto_close,json=autoClose,proto3" json:"auto_close,omitempty"`
  1305  	// A list of hotlist ids attached to auto-filed bugs.
  1306  	HotlistIds []int64 `protobuf:"varint,2,rep,packed,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
  1307  	// The priority of the auto-filed bug. If provided, this will overwrite the
  1308  	// priority in the component default template
  1309  	Priority AutoBugOptions_Priority `protobuf:"varint,3,opt,name=priority,proto3,enum=testgrid.config.AutoBugOptions_Priority" json:"priority,omitempty"`
  1310  	// A list of hotlist id sources
  1311  	// Corresponds with the list hotlist_ids (#2)
  1312  	//
  1313  	// Deprecated: Do not use.
  1314  	HotlistIdsFromSource []*HotlistIdFromSource `protobuf:"bytes,4,rep,name=hotlist_ids_from_source,json=hotlistIdsFromSource,proto3" json:"hotlist_ids_from_source,omitempty"`
  1315  	// If True, files separate bugs for each failing target, instead of one bug
  1316  	// for each set of targets failing at the same run.
  1317  	FileIndividual bool `protobuf:"varint,5,opt,name=file_individual,json=fileIndividual,proto3" json:"file_individual,omitempty"`
  1318  	// If True; keep only one automantic bug per target, regardless of the number
  1319  	// of separate failures a target gets. Requires `file_individual` to be True.
  1320  	// Consider setting `num_passes_to_disable_alert` instead if you're tracking
  1321  	// flaky tests.
  1322  	SingletonAutobug bool `protobuf:"varint,6,opt,name=singleton_autobug,json=singletonAutobug,proto3" json:"singleton_autobug,omitempty"`
  1323  	// If provided: only raise one bug if the number of failures for a single
  1324  	// query by testgrid for a single failure group exceeds this value. Requires
  1325  	// 'file_individual' to be True.
  1326  	MaxAllowedIndividualBugs int32 `protobuf:"varint,7,opt,name=max_allowed_individual_bugs,json=maxAllowedIndividualBugs,proto3" json:"max_allowed_individual_bugs,omitempty"`
  1327  	// If True; file issues for the 'Overall' target, even if otherwise invalid.
  1328  	FileOverall bool `protobuf:"varint,8,opt,name=file_overall,json=fileOverall,proto3" json:"file_overall,omitempty"`
  1329  	// If provided: supplements `max_allowed_individual_bugs` field to raise a
  1330  	// single bug if the number of failures for a single query by testgrid exceeds
  1331  	// the max_allowed_individual_bugs` value, regardless of `TEST_METADATA`
  1332  	// configurations. This is useful for filing fewer suspected environmental
  1333  	// failure bugs and routing them to a specific location (i.e. an oncall).
  1334  	// Requires 'file_individual' to be true and `max_allowed_individual_bugs` to
  1335  	// not be empty.
  1336  	DefaultTestMetadata *AutoBugOptions_DefaultTestMetadata `protobuf:"bytes,9,opt,name=default_test_metadata,json=defaultTestMetadata,proto3" json:"default_test_metadata,omitempty"`
  1337  	// [BETA] If True, query the test metadata API to get issue-routing metadata.
  1338  	// Enables routing issues using structured test failures.
  1339  	AdvancedTestMetadata bool `protobuf:"varint,11,opt,name=advanced_test_metadata,json=advancedTestMetadata,proto3" json:"advanced_test_metadata,omitempty"`
  1340  	// If True, file a bug when the tab goes stale.
  1341  	// (Requires `alert_stale_results_hours` to be set.)
  1342  	FileStale bool `protobuf:"varint,12,opt,name=file_stale,json=fileStale,proto3" json:"file_stale,omitempty"`
  1343  	// If True, ignore overall rows when auto-filing.
  1344  	IgnoreOverall bool `protobuf:"varint,13,opt,name=ignore_overall,json=ignoreOverall,proto3" json:"ignore_overall,omitempty"`
  1345  	// [BETA] Extra text displayed in opened bugs. e.g., for including a link to a
  1346  	// playbook.
  1347  	Note string `protobuf:"bytes,14,opt,name=note,proto3" json:"note,omitempty"`
  1348  }
  1349  
  1350  func (x *AutoBugOptions) Reset() {
  1351  	*x = AutoBugOptions{}
  1352  	if protoimpl.UnsafeEnabled {
  1353  		mi := &file_config_proto_msgTypes[7]
  1354  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1355  		ms.StoreMessageInfo(mi)
  1356  	}
  1357  }
  1358  
  1359  func (x *AutoBugOptions) String() string {
  1360  	return protoimpl.X.MessageStringOf(x)
  1361  }
  1362  
  1363  func (*AutoBugOptions) ProtoMessage() {}
  1364  
  1365  func (x *AutoBugOptions) ProtoReflect() protoreflect.Message {
  1366  	mi := &file_config_proto_msgTypes[7]
  1367  	if protoimpl.UnsafeEnabled && x != nil {
  1368  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1369  		if ms.LoadMessageInfo() == nil {
  1370  			ms.StoreMessageInfo(mi)
  1371  		}
  1372  		return ms
  1373  	}
  1374  	return mi.MessageOf(x)
  1375  }
  1376  
  1377  // Deprecated: Use AutoBugOptions.ProtoReflect.Descriptor instead.
  1378  func (*AutoBugOptions) Descriptor() ([]byte, []int) {
  1379  	return file_config_proto_rawDescGZIP(), []int{7}
  1380  }
  1381  
  1382  func (x *AutoBugOptions) GetBetaAutobugComponent() int32 {
  1383  	if x != nil {
  1384  		return x.BetaAutobugComponent
  1385  	}
  1386  	return 0
  1387  }
  1388  
  1389  func (x *AutoBugOptions) GetAutoClose() bool {
  1390  	if x != nil {
  1391  		return x.AutoClose
  1392  	}
  1393  	return false
  1394  }
  1395  
  1396  func (x *AutoBugOptions) GetHotlistIds() []int64 {
  1397  	if x != nil {
  1398  		return x.HotlistIds
  1399  	}
  1400  	return nil
  1401  }
  1402  
  1403  func (x *AutoBugOptions) GetPriority() AutoBugOptions_Priority {
  1404  	if x != nil {
  1405  		return x.Priority
  1406  	}
  1407  	return AutoBugOptions_PRIORITY_UNSPECIFIED
  1408  }
  1409  
  1410  // Deprecated: Do not use.
  1411  func (x *AutoBugOptions) GetHotlistIdsFromSource() []*HotlistIdFromSource {
  1412  	if x != nil {
  1413  		return x.HotlistIdsFromSource
  1414  	}
  1415  	return nil
  1416  }
  1417  
  1418  func (x *AutoBugOptions) GetFileIndividual() bool {
  1419  	if x != nil {
  1420  		return x.FileIndividual
  1421  	}
  1422  	return false
  1423  }
  1424  
  1425  func (x *AutoBugOptions) GetSingletonAutobug() bool {
  1426  	if x != nil {
  1427  		return x.SingletonAutobug
  1428  	}
  1429  	return false
  1430  }
  1431  
  1432  func (x *AutoBugOptions) GetMaxAllowedIndividualBugs() int32 {
  1433  	if x != nil {
  1434  		return x.MaxAllowedIndividualBugs
  1435  	}
  1436  	return 0
  1437  }
  1438  
  1439  func (x *AutoBugOptions) GetFileOverall() bool {
  1440  	if x != nil {
  1441  		return x.FileOverall
  1442  	}
  1443  	return false
  1444  }
  1445  
  1446  func (x *AutoBugOptions) GetDefaultTestMetadata() *AutoBugOptions_DefaultTestMetadata {
  1447  	if x != nil {
  1448  		return x.DefaultTestMetadata
  1449  	}
  1450  	return nil
  1451  }
  1452  
  1453  func (x *AutoBugOptions) GetAdvancedTestMetadata() bool {
  1454  	if x != nil {
  1455  		return x.AdvancedTestMetadata
  1456  	}
  1457  	return false
  1458  }
  1459  
  1460  func (x *AutoBugOptions) GetFileStale() bool {
  1461  	if x != nil {
  1462  		return x.FileStale
  1463  	}
  1464  	return false
  1465  }
  1466  
  1467  func (x *AutoBugOptions) GetIgnoreOverall() bool {
  1468  	if x != nil {
  1469  		return x.IgnoreOverall
  1470  	}
  1471  	return false
  1472  }
  1473  
  1474  func (x *AutoBugOptions) GetNote() string {
  1475  	if x != nil {
  1476  		return x.Note
  1477  	}
  1478  	return ""
  1479  }
  1480  
  1481  type HotlistIdFromSource struct {
  1482  	state         protoimpl.MessageState
  1483  	sizeCache     protoimpl.SizeCache
  1484  	unknownFields protoimpl.UnknownFields
  1485  
  1486  	// Types that are assignable to HotlistIdSource:
  1487  	//	*HotlistIdFromSource_Value
  1488  	//	*HotlistIdFromSource_Label
  1489  	HotlistIdSource isHotlistIdFromSource_HotlistIdSource `protobuf_oneof:"hotlist_id_source"`
  1490  }
  1491  
  1492  func (x *HotlistIdFromSource) Reset() {
  1493  	*x = HotlistIdFromSource{}
  1494  	if protoimpl.UnsafeEnabled {
  1495  		mi := &file_config_proto_msgTypes[8]
  1496  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1497  		ms.StoreMessageInfo(mi)
  1498  	}
  1499  }
  1500  
  1501  func (x *HotlistIdFromSource) String() string {
  1502  	return protoimpl.X.MessageStringOf(x)
  1503  }
  1504  
  1505  func (*HotlistIdFromSource) ProtoMessage() {}
  1506  
  1507  func (x *HotlistIdFromSource) ProtoReflect() protoreflect.Message {
  1508  	mi := &file_config_proto_msgTypes[8]
  1509  	if protoimpl.UnsafeEnabled && x != nil {
  1510  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1511  		if ms.LoadMessageInfo() == nil {
  1512  			ms.StoreMessageInfo(mi)
  1513  		}
  1514  		return ms
  1515  	}
  1516  	return mi.MessageOf(x)
  1517  }
  1518  
  1519  // Deprecated: Use HotlistIdFromSource.ProtoReflect.Descriptor instead.
  1520  func (*HotlistIdFromSource) Descriptor() ([]byte, []int) {
  1521  	return file_config_proto_rawDescGZIP(), []int{8}
  1522  }
  1523  
  1524  func (m *HotlistIdFromSource) GetHotlistIdSource() isHotlistIdFromSource_HotlistIdSource {
  1525  	if m != nil {
  1526  		return m.HotlistIdSource
  1527  	}
  1528  	return nil
  1529  }
  1530  
  1531  func (x *HotlistIdFromSource) GetValue() int64 {
  1532  	if x, ok := x.GetHotlistIdSource().(*HotlistIdFromSource_Value); ok {
  1533  		return x.Value
  1534  	}
  1535  	return 0
  1536  }
  1537  
  1538  func (x *HotlistIdFromSource) GetLabel() string {
  1539  	if x, ok := x.GetHotlistIdSource().(*HotlistIdFromSource_Label); ok {
  1540  		return x.Label
  1541  	}
  1542  	return ""
  1543  }
  1544  
  1545  type isHotlistIdFromSource_HotlistIdSource interface {
  1546  	isHotlistIdFromSource_HotlistIdSource()
  1547  }
  1548  
  1549  type HotlistIdFromSource_Value struct {
  1550  	// ID value of hotlists
  1551  	Value int64 `protobuf:"varint,1,opt,name=value,proto3,oneof"`
  1552  }
  1553  
  1554  type HotlistIdFromSource_Label struct {
  1555  	// A label prefix
  1556  	Label string `protobuf:"bytes,2,opt,name=label,proto3,oneof"`
  1557  }
  1558  
  1559  func (*HotlistIdFromSource_Value) isHotlistIdFromSource_HotlistIdSource() {}
  1560  
  1561  func (*HotlistIdFromSource_Label) isHotlistIdFromSource_HotlistIdSource() {}
  1562  
  1563  // Specifies a dashboard.
  1564  type Dashboard struct {
  1565  	state         protoimpl.MessageState
  1566  	sizeCache     protoimpl.SizeCache
  1567  	unknownFields protoimpl.UnknownFields
  1568  
  1569  	// A list of the tabs on the dashboard.
  1570  	DashboardTab []*DashboardTab `protobuf:"bytes,1,rep,name=dashboard_tab,json=dashboardTab,proto3" json:"dashboard_tab,omitempty"`
  1571  	// A name for the Dashboard.
  1572  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  1573  	// A list of notifications attached to this dashboard.
  1574  	// This is displayed on any dashboard tab in this dashboard.
  1575  	Notifications []*Notification `protobuf:"bytes,3,rep,name=notifications,proto3" json:"notifications,omitempty"`
  1576  	// Control which tab is displayed when first opening a dashboard.
  1577  	// Defaults to Summary
  1578  	DefaultTab string `protobuf:"bytes,5,opt,name=default_tab,json=defaultTab,proto3" json:"default_tab,omitempty"`
  1579  	// Controls whether to suppress highlighting of failing tabs.
  1580  	DownplayFailingTabs bool `protobuf:"varint,8,opt,name=downplay_failing_tabs,json=downplayFailingTabs,proto3" json:"downplay_failing_tabs,omitempty"`
  1581  	// Deprecated: Invert of 'downplay_failing_tabs'
  1582  	//
  1583  	// Deprecated: Do not use.
  1584  	HighlightFailingTabs bool `protobuf:"varint,6,opt,name=highlight_failing_tabs,json=highlightFailingTabs,proto3" json:"highlight_failing_tabs,omitempty"`
  1585  	// Controls whether to apply special highlighting to result header columns for
  1586  	// the current day.
  1587  	HighlightToday bool `protobuf:"varint,7,opt,name=highlight_today,json=highlightToday,proto3" json:"highlight_today,omitempty"`
  1588  	// A description paragraph to be displayed.
  1589  	Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"`
  1590  }
  1591  
  1592  func (x *Dashboard) Reset() {
  1593  	*x = Dashboard{}
  1594  	if protoimpl.UnsafeEnabled {
  1595  		mi := &file_config_proto_msgTypes[9]
  1596  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1597  		ms.StoreMessageInfo(mi)
  1598  	}
  1599  }
  1600  
  1601  func (x *Dashboard) String() string {
  1602  	return protoimpl.X.MessageStringOf(x)
  1603  }
  1604  
  1605  func (*Dashboard) ProtoMessage() {}
  1606  
  1607  func (x *Dashboard) ProtoReflect() protoreflect.Message {
  1608  	mi := &file_config_proto_msgTypes[9]
  1609  	if protoimpl.UnsafeEnabled && x != nil {
  1610  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1611  		if ms.LoadMessageInfo() == nil {
  1612  			ms.StoreMessageInfo(mi)
  1613  		}
  1614  		return ms
  1615  	}
  1616  	return mi.MessageOf(x)
  1617  }
  1618  
  1619  // Deprecated: Use Dashboard.ProtoReflect.Descriptor instead.
  1620  func (*Dashboard) Descriptor() ([]byte, []int) {
  1621  	return file_config_proto_rawDescGZIP(), []int{9}
  1622  }
  1623  
  1624  func (x *Dashboard) GetDashboardTab() []*DashboardTab {
  1625  	if x != nil {
  1626  		return x.DashboardTab
  1627  	}
  1628  	return nil
  1629  }
  1630  
  1631  func (x *Dashboard) GetName() string {
  1632  	if x != nil {
  1633  		return x.Name
  1634  	}
  1635  	return ""
  1636  }
  1637  
  1638  func (x *Dashboard) GetNotifications() []*Notification {
  1639  	if x != nil {
  1640  		return x.Notifications
  1641  	}
  1642  	return nil
  1643  }
  1644  
  1645  func (x *Dashboard) GetDefaultTab() string {
  1646  	if x != nil {
  1647  		return x.DefaultTab
  1648  	}
  1649  	return ""
  1650  }
  1651  
  1652  func (x *Dashboard) GetDownplayFailingTabs() bool {
  1653  	if x != nil {
  1654  		return x.DownplayFailingTabs
  1655  	}
  1656  	return false
  1657  }
  1658  
  1659  // Deprecated: Do not use.
  1660  func (x *Dashboard) GetHighlightFailingTabs() bool {
  1661  	if x != nil {
  1662  		return x.HighlightFailingTabs
  1663  	}
  1664  	return false
  1665  }
  1666  
  1667  func (x *Dashboard) GetHighlightToday() bool {
  1668  	if x != nil {
  1669  		return x.HighlightToday
  1670  	}
  1671  	return false
  1672  }
  1673  
  1674  func (x *Dashboard) GetDescription() string {
  1675  	if x != nil {
  1676  		return x.Description
  1677  	}
  1678  	return ""
  1679  }
  1680  
  1681  type LinkTemplate struct {
  1682  	state         protoimpl.MessageState
  1683  	sizeCache     protoimpl.SizeCache
  1684  	unknownFields protoimpl.UnknownFields
  1685  
  1686  	// The URL template.
  1687  	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
  1688  	// The options templates.
  1689  	Options []*LinkOptionsTemplate `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty"`
  1690  	// An optional name, used for the context menu
  1691  	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
  1692  }
  1693  
  1694  func (x *LinkTemplate) Reset() {
  1695  	*x = LinkTemplate{}
  1696  	if protoimpl.UnsafeEnabled {
  1697  		mi := &file_config_proto_msgTypes[10]
  1698  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1699  		ms.StoreMessageInfo(mi)
  1700  	}
  1701  }
  1702  
  1703  func (x *LinkTemplate) String() string {
  1704  	return protoimpl.X.MessageStringOf(x)
  1705  }
  1706  
  1707  func (*LinkTemplate) ProtoMessage() {}
  1708  
  1709  func (x *LinkTemplate) ProtoReflect() protoreflect.Message {
  1710  	mi := &file_config_proto_msgTypes[10]
  1711  	if protoimpl.UnsafeEnabled && x != nil {
  1712  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1713  		if ms.LoadMessageInfo() == nil {
  1714  			ms.StoreMessageInfo(mi)
  1715  		}
  1716  		return ms
  1717  	}
  1718  	return mi.MessageOf(x)
  1719  }
  1720  
  1721  // Deprecated: Use LinkTemplate.ProtoReflect.Descriptor instead.
  1722  func (*LinkTemplate) Descriptor() ([]byte, []int) {
  1723  	return file_config_proto_rawDescGZIP(), []int{10}
  1724  }
  1725  
  1726  func (x *LinkTemplate) GetUrl() string {
  1727  	if x != nil {
  1728  		return x.Url
  1729  	}
  1730  	return ""
  1731  }
  1732  
  1733  func (x *LinkTemplate) GetOptions() []*LinkOptionsTemplate {
  1734  	if x != nil {
  1735  		return x.Options
  1736  	}
  1737  	return nil
  1738  }
  1739  
  1740  func (x *LinkTemplate) GetName() string {
  1741  	if x != nil {
  1742  		return x.Name
  1743  	}
  1744  	return ""
  1745  }
  1746  
  1747  // A simple key/value pair for link options.
  1748  type LinkOptionsTemplate struct {
  1749  	state         protoimpl.MessageState
  1750  	sizeCache     protoimpl.SizeCache
  1751  	unknownFields protoimpl.UnknownFields
  1752  
  1753  	// The key for the option. This is not expanded.
  1754  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  1755  	// The value for the option. This is expanded the same as the LinkTemplate.
  1756  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  1757  }
  1758  
  1759  func (x *LinkOptionsTemplate) Reset() {
  1760  	*x = LinkOptionsTemplate{}
  1761  	if protoimpl.UnsafeEnabled {
  1762  		mi := &file_config_proto_msgTypes[11]
  1763  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1764  		ms.StoreMessageInfo(mi)
  1765  	}
  1766  }
  1767  
  1768  func (x *LinkOptionsTemplate) String() string {
  1769  	return protoimpl.X.MessageStringOf(x)
  1770  }
  1771  
  1772  func (*LinkOptionsTemplate) ProtoMessage() {}
  1773  
  1774  func (x *LinkOptionsTemplate) ProtoReflect() protoreflect.Message {
  1775  	mi := &file_config_proto_msgTypes[11]
  1776  	if protoimpl.UnsafeEnabled && x != nil {
  1777  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1778  		if ms.LoadMessageInfo() == nil {
  1779  			ms.StoreMessageInfo(mi)
  1780  		}
  1781  		return ms
  1782  	}
  1783  	return mi.MessageOf(x)
  1784  }
  1785  
  1786  // Deprecated: Use LinkOptionsTemplate.ProtoReflect.Descriptor instead.
  1787  func (*LinkOptionsTemplate) Descriptor() ([]byte, []int) {
  1788  	return file_config_proto_rawDescGZIP(), []int{11}
  1789  }
  1790  
  1791  func (x *LinkOptionsTemplate) GetKey() string {
  1792  	if x != nil {
  1793  		return x.Key
  1794  	}
  1795  	return ""
  1796  }
  1797  
  1798  func (x *LinkOptionsTemplate) GetValue() string {
  1799  	if x != nil {
  1800  		return x.Value
  1801  	}
  1802  	return ""
  1803  }
  1804  
  1805  // A single tab on a dashboard.
  1806  type DashboardTab struct {
  1807  	state         protoimpl.MessageState
  1808  	sizeCache     protoimpl.SizeCache
  1809  	unknownFields protoimpl.UnknownFields
  1810  
  1811  	// The name of the dashboard tab to display in the client.
  1812  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1813  	// The name of the TestGroup specifying the test results for this tab.
  1814  	TestGroupName string `protobuf:"bytes,2,opt,name=test_group_name,json=testGroupName,proto3" json:"test_group_name,omitempty"`
  1815  	// Default bug component for manually filing bugs from the dashboard
  1816  	BugComponent int32 `protobuf:"varint,3,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"`
  1817  	// Default code search path for searching regressions. This value overrides
  1818  	// the default in the TestGroup config so that dashboards may be customized
  1819  	// separately.
  1820  	CodeSearchPath string `protobuf:"bytes,4,opt,name=code_search_path,json=codeSearchPath,proto3" json:"code_search_path,omitempty"`
  1821  	// See TestGroup.num_columns_recent. This value overrides the default in the
  1822  	// TestGroup config so that dashboards may be customized separately.
  1823  	NumColumnsRecent int32 `protobuf:"varint,5,opt,name=num_columns_recent,json=numColumnsRecent,proto3" json:"num_columns_recent,omitempty"`
  1824  	// Base options to always include, for example:
  1825  	// width=20&include-filter-by-regex=level_tests
  1826  	// This is taken from the #fragment part of the testgrid url.
  1827  	// Best way to create these is to setup the options on testgrid and then
  1828  	// copy the #fragment part.
  1829  	BaseOptions string `protobuf:"bytes,6,opt,name=base_options,json=baseOptions,proto3" json:"base_options,omitempty"`
  1830  	// The URL template to visit after clicking on a cell.
  1831  	OpenTestTemplate *LinkTemplate `protobuf:"bytes,7,opt,name=open_test_template,json=openTestTemplate,proto3" json:"open_test_template,omitempty"`
  1832  	// The URL template to visit when filing a bug.
  1833  	FileBugTemplate *LinkTemplate `protobuf:"bytes,8,opt,name=file_bug_template,json=fileBugTemplate,proto3" json:"file_bug_template,omitempty"`
  1834  	// The URL template to visit when attaching a bug
  1835  	AttachBugTemplate *LinkTemplate `protobuf:"bytes,9,opt,name=attach_bug_template,json=attachBugTemplate,proto3" json:"attach_bug_template,omitempty"`
  1836  	// Text to show in the about menu as a link to another view of the results.
  1837  	ResultsText string `protobuf:"bytes,10,opt,name=results_text,json=resultsText,proto3" json:"results_text,omitempty"`
  1838  	// The URL template to visit after clicking.
  1839  	ResultsUrlTemplate *LinkTemplate `protobuf:"bytes,11,opt,name=results_url_template,json=resultsUrlTemplate,proto3" json:"results_url_template,omitempty"`
  1840  	// The URL template to visit when searching for code changes, such as pull
  1841  	// requests
  1842  	CodeSearchUrlTemplate *LinkTemplate `protobuf:"bytes,12,opt,name=code_search_url_template,json=codeSearchUrlTemplate,proto3" json:"code_search_url_template,omitempty"`
  1843  	// A description paragraph to be displayed.
  1844  	Description string `protobuf:"bytes,13,opt,name=description,proto3" json:"description,omitempty"`
  1845  	// A regular expression that uses the named group syntax to specify how to
  1846  	// show names in a table.
  1847  	TabularNamesRegex string `protobuf:"bytes,14,opt,name=tabular_names_regex,json=tabularNamesRegex,proto3" json:"tabular_names_regex,omitempty"`
  1848  	// Configuration options for dashboard tab alerts.
  1849  	AlertOptions *DashboardTabAlertOptions `protobuf:"bytes,15,opt,name=alert_options,json=alertOptions,proto3" json:"alert_options,omitempty"`
  1850  	// Configuration options for dashboard tab flakiness alerts.
  1851  	FlakinessAlertOptions *DashboardTabFlakinessAlertOptions `protobuf:"bytes,24,opt,name=flakiness_alert_options,json=flakinessAlertOptions,proto3" json:"flakiness_alert_options,omitempty"`
  1852  	// Configuration options for customizing dashboard tab status calculation.
  1853  	StatusCustomizationOptions *DashboardTabStatusCustomizationOptions `protobuf:"bytes,26,opt,name=status_customization_options,json=statusCustomizationOptions,proto3" json:"status_customization_options,omitempty"`
  1854  	// A URL for the "About this Dashboard" menu option
  1855  	AboutDashboardUrl string `protobuf:"bytes,16,opt,name=about_dashboard_url,json=aboutDashboardUrl,proto3" json:"about_dashboard_url,omitempty"`
  1856  	// The URL template to visit when viewing an associated bug.
  1857  	OpenBugTemplate *LinkTemplate `protobuf:"bytes,17,opt,name=open_bug_template,json=openBugTemplate,proto3" json:"open_bug_template,omitempty"`
  1858  	// If true, auto-file bugs when new alerts occur. This requires that the
  1859  	// backing test group has `bug_component` set and uses the backing test
  1860  	// group's `auto_bug_options`.
  1861  	AutoFileBugs bool `protobuf:"varint,18,opt,name=auto_file_bugs,json=autoFileBugs,proto3" json:"auto_file_bugs,omitempty"`
  1862  	// Display user local time on the dashboard when set to true (by default).
  1863  	// If false, uses Pacific Timezone for this DashboardTab.
  1864  	DisplayLocalTime bool `protobuf:"varint,19,opt,name=display_local_time,json=displayLocalTime,proto3" json:"display_local_time,omitempty"`
  1865  	// A set of optional LinkTemplates that will become right-click context menu
  1866  	// items.
  1867  	// TODO(b/159042168) in the near future this should be re-implemented as a
  1868  	// generic list of repeated LinkTemplates which users may specify in their
  1869  	// reqpective configurations as right-click context menus with names and
  1870  	// actions upon being clicked.
  1871  	ContextMenuTemplate *LinkTemplate `protobuf:"bytes,20,opt,name=context_menu_template,json=contextMenuTemplate,proto3" json:"context_menu_template,omitempty"`
  1872  	// When specified, treat a tab as BROKEN as long as one of the most recent
  1873  	// columns are "broken" (ratio of failed to total tests exceeds <threshold>).
  1874  	BrokenColumnThreshold float32 `protobuf:"fixed32,21,opt,name=broken_column_threshold,json=brokenColumnThreshold,proto3" json:"broken_column_threshold,omitempty"`
  1875  	// Options for auto-filed bugs.
  1876  	// Using this for a dashboard tab requires specifying `beta_autobug_component`
  1877  	// and will opt you into the beta AutoBug.
  1878  	BetaAutobugOptions *AutoBugOptions `protobuf:"bytes,22,opt,name=beta_autobug_options,json=betaAutobugOptions,proto3" json:"beta_autobug_options,omitempty"`
  1879  	// Options for the configuration of the flakiness analysis tool, on a per tab
  1880  	// basis
  1881  	HealthAnalysisOptions *HealthAnalysisOptions `protobuf:"bytes,23,opt,name=health_analysis_options,json=healthAnalysisOptions,proto3" json:"health_analysis_options,omitempty"`
  1882  	// A set of optional Link Templates when search for diffs between columns.
  1883  	ColumnDiffLinkTemplates []*LinkTemplate `protobuf:"bytes,25,rep,name=column_diff_link_templates,json=columnDiffLinkTemplates,proto3" json:"column_diff_link_templates,omitempty"`
  1884  }
  1885  
  1886  func (x *DashboardTab) Reset() {
  1887  	*x = DashboardTab{}
  1888  	if protoimpl.UnsafeEnabled {
  1889  		mi := &file_config_proto_msgTypes[12]
  1890  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1891  		ms.StoreMessageInfo(mi)
  1892  	}
  1893  }
  1894  
  1895  func (x *DashboardTab) String() string {
  1896  	return protoimpl.X.MessageStringOf(x)
  1897  }
  1898  
  1899  func (*DashboardTab) ProtoMessage() {}
  1900  
  1901  func (x *DashboardTab) ProtoReflect() protoreflect.Message {
  1902  	mi := &file_config_proto_msgTypes[12]
  1903  	if protoimpl.UnsafeEnabled && x != nil {
  1904  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1905  		if ms.LoadMessageInfo() == nil {
  1906  			ms.StoreMessageInfo(mi)
  1907  		}
  1908  		return ms
  1909  	}
  1910  	return mi.MessageOf(x)
  1911  }
  1912  
  1913  // Deprecated: Use DashboardTab.ProtoReflect.Descriptor instead.
  1914  func (*DashboardTab) Descriptor() ([]byte, []int) {
  1915  	return file_config_proto_rawDescGZIP(), []int{12}
  1916  }
  1917  
  1918  func (x *DashboardTab) GetName() string {
  1919  	if x != nil {
  1920  		return x.Name
  1921  	}
  1922  	return ""
  1923  }
  1924  
  1925  func (x *DashboardTab) GetTestGroupName() string {
  1926  	if x != nil {
  1927  		return x.TestGroupName
  1928  	}
  1929  	return ""
  1930  }
  1931  
  1932  func (x *DashboardTab) GetBugComponent() int32 {
  1933  	if x != nil {
  1934  		return x.BugComponent
  1935  	}
  1936  	return 0
  1937  }
  1938  
  1939  func (x *DashboardTab) GetCodeSearchPath() string {
  1940  	if x != nil {
  1941  		return x.CodeSearchPath
  1942  	}
  1943  	return ""
  1944  }
  1945  
  1946  func (x *DashboardTab) GetNumColumnsRecent() int32 {
  1947  	if x != nil {
  1948  		return x.NumColumnsRecent
  1949  	}
  1950  	return 0
  1951  }
  1952  
  1953  func (x *DashboardTab) GetBaseOptions() string {
  1954  	if x != nil {
  1955  		return x.BaseOptions
  1956  	}
  1957  	return ""
  1958  }
  1959  
  1960  func (x *DashboardTab) GetOpenTestTemplate() *LinkTemplate {
  1961  	if x != nil {
  1962  		return x.OpenTestTemplate
  1963  	}
  1964  	return nil
  1965  }
  1966  
  1967  func (x *DashboardTab) GetFileBugTemplate() *LinkTemplate {
  1968  	if x != nil {
  1969  		return x.FileBugTemplate
  1970  	}
  1971  	return nil
  1972  }
  1973  
  1974  func (x *DashboardTab) GetAttachBugTemplate() *LinkTemplate {
  1975  	if x != nil {
  1976  		return x.AttachBugTemplate
  1977  	}
  1978  	return nil
  1979  }
  1980  
  1981  func (x *DashboardTab) GetResultsText() string {
  1982  	if x != nil {
  1983  		return x.ResultsText
  1984  	}
  1985  	return ""
  1986  }
  1987  
  1988  func (x *DashboardTab) GetResultsUrlTemplate() *LinkTemplate {
  1989  	if x != nil {
  1990  		return x.ResultsUrlTemplate
  1991  	}
  1992  	return nil
  1993  }
  1994  
  1995  func (x *DashboardTab) GetCodeSearchUrlTemplate() *LinkTemplate {
  1996  	if x != nil {
  1997  		return x.CodeSearchUrlTemplate
  1998  	}
  1999  	return nil
  2000  }
  2001  
  2002  func (x *DashboardTab) GetDescription() string {
  2003  	if x != nil {
  2004  		return x.Description
  2005  	}
  2006  	return ""
  2007  }
  2008  
  2009  func (x *DashboardTab) GetTabularNamesRegex() string {
  2010  	if x != nil {
  2011  		return x.TabularNamesRegex
  2012  	}
  2013  	return ""
  2014  }
  2015  
  2016  func (x *DashboardTab) GetAlertOptions() *DashboardTabAlertOptions {
  2017  	if x != nil {
  2018  		return x.AlertOptions
  2019  	}
  2020  	return nil
  2021  }
  2022  
  2023  func (x *DashboardTab) GetFlakinessAlertOptions() *DashboardTabFlakinessAlertOptions {
  2024  	if x != nil {
  2025  		return x.FlakinessAlertOptions
  2026  	}
  2027  	return nil
  2028  }
  2029  
  2030  func (x *DashboardTab) GetStatusCustomizationOptions() *DashboardTabStatusCustomizationOptions {
  2031  	if x != nil {
  2032  		return x.StatusCustomizationOptions
  2033  	}
  2034  	return nil
  2035  }
  2036  
  2037  func (x *DashboardTab) GetAboutDashboardUrl() string {
  2038  	if x != nil {
  2039  		return x.AboutDashboardUrl
  2040  	}
  2041  	return ""
  2042  }
  2043  
  2044  func (x *DashboardTab) GetOpenBugTemplate() *LinkTemplate {
  2045  	if x != nil {
  2046  		return x.OpenBugTemplate
  2047  	}
  2048  	return nil
  2049  }
  2050  
  2051  func (x *DashboardTab) GetAutoFileBugs() bool {
  2052  	if x != nil {
  2053  		return x.AutoFileBugs
  2054  	}
  2055  	return false
  2056  }
  2057  
  2058  func (x *DashboardTab) GetDisplayLocalTime() bool {
  2059  	if x != nil {
  2060  		return x.DisplayLocalTime
  2061  	}
  2062  	return false
  2063  }
  2064  
  2065  func (x *DashboardTab) GetContextMenuTemplate() *LinkTemplate {
  2066  	if x != nil {
  2067  		return x.ContextMenuTemplate
  2068  	}
  2069  	return nil
  2070  }
  2071  
  2072  func (x *DashboardTab) GetBrokenColumnThreshold() float32 {
  2073  	if x != nil {
  2074  		return x.BrokenColumnThreshold
  2075  	}
  2076  	return 0
  2077  }
  2078  
  2079  func (x *DashboardTab) GetBetaAutobugOptions() *AutoBugOptions {
  2080  	if x != nil {
  2081  		return x.BetaAutobugOptions
  2082  	}
  2083  	return nil
  2084  }
  2085  
  2086  func (x *DashboardTab) GetHealthAnalysisOptions() *HealthAnalysisOptions {
  2087  	if x != nil {
  2088  		return x.HealthAnalysisOptions
  2089  	}
  2090  	return nil
  2091  }
  2092  
  2093  func (x *DashboardTab) GetColumnDiffLinkTemplates() []*LinkTemplate {
  2094  	if x != nil {
  2095  		return x.ColumnDiffLinkTemplates
  2096  	}
  2097  	return nil
  2098  }
  2099  
  2100  // Configuration options for dashboard tab alerts.
  2101  type DashboardTabAlertOptions struct {
  2102  	state         protoimpl.MessageState
  2103  	sizeCache     protoimpl.SizeCache
  2104  	unknownFields protoimpl.UnknownFields
  2105  
  2106  	// Time in hours before an alert will be added to a test results table if the
  2107  	// run date of the latest results are older than this time.  If zero, no
  2108  	// alerts are raised.
  2109  	AlertStaleResultsHours int32 `protobuf:"varint,1,opt,name=alert_stale_results_hours,json=alertStaleResultsHours,proto3" json:"alert_stale_results_hours,omitempty"`
  2110  	// The number of consecutive test result failures to see before alerting of
  2111  	// a consistent failure. If zero, no alerts are raised.
  2112  	NumFailuresToAlert int32 `protobuf:"varint,2,opt,name=num_failures_to_alert,json=numFailuresToAlert,proto3" json:"num_failures_to_alert,omitempty"`
  2113  	// The comma-separated addresses to send mail.
  2114  	AlertMailToAddresses string `protobuf:"bytes,3,opt,name=alert_mail_to_addresses,json=alertMailToAddresses,proto3" json:"alert_mail_to_addresses,omitempty"`
  2115  	// The number of consecutive test passes to close the alert.
  2116  	NumPassesToDisableAlert int32 `protobuf:"varint,4,opt,name=num_passes_to_disable_alert,json=numPassesToDisableAlert,proto3" json:"num_passes_to_disable_alert,omitempty"`
  2117  	// Custom subject for alert mails.
  2118  	Subject string `protobuf:"bytes,5,opt,name=subject,proto3" json:"subject,omitempty"`
  2119  	// Custom link for further help/instructions on debugging this alert.
  2120  	DebugUrl string `protobuf:"bytes,6,opt,name=debug_url,json=debugUrl,proto3" json:"debug_url,omitempty"`
  2121  	// Custom text to show for the debug link.
  2122  	DebugMessage string `protobuf:"bytes,7,opt,name=debug_message,json=debugMessage,proto3" json:"debug_message,omitempty"`
  2123  	// Wait time between emails. If unset or zero, an email will be sent only once
  2124  	// it becomes a consistent failure, and not again until it succeeds.
  2125  	// TestGrid does not pester about staleness
  2126  	WaitMinutesBetweenEmails int32 `protobuf:"varint,8,opt,name=wait_minutes_between_emails,json=waitMinutesBetweenEmails,proto3" json:"wait_minutes_between_emails,omitempty"`
  2127  	// A custom message
  2128  	AlertMailFailureMessage string `protobuf:"bytes,9,opt,name=alert_mail_failure_message,json=alertMailFailureMessage,proto3" json:"alert_mail_failure_message,omitempty"`
  2129  }
  2130  
  2131  func (x *DashboardTabAlertOptions) Reset() {
  2132  	*x = DashboardTabAlertOptions{}
  2133  	if protoimpl.UnsafeEnabled {
  2134  		mi := &file_config_proto_msgTypes[13]
  2135  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2136  		ms.StoreMessageInfo(mi)
  2137  	}
  2138  }
  2139  
  2140  func (x *DashboardTabAlertOptions) String() string {
  2141  	return protoimpl.X.MessageStringOf(x)
  2142  }
  2143  
  2144  func (*DashboardTabAlertOptions) ProtoMessage() {}
  2145  
  2146  func (x *DashboardTabAlertOptions) ProtoReflect() protoreflect.Message {
  2147  	mi := &file_config_proto_msgTypes[13]
  2148  	if protoimpl.UnsafeEnabled && x != nil {
  2149  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2150  		if ms.LoadMessageInfo() == nil {
  2151  			ms.StoreMessageInfo(mi)
  2152  		}
  2153  		return ms
  2154  	}
  2155  	return mi.MessageOf(x)
  2156  }
  2157  
  2158  // Deprecated: Use DashboardTabAlertOptions.ProtoReflect.Descriptor instead.
  2159  func (*DashboardTabAlertOptions) Descriptor() ([]byte, []int) {
  2160  	return file_config_proto_rawDescGZIP(), []int{13}
  2161  }
  2162  
  2163  func (x *DashboardTabAlertOptions) GetAlertStaleResultsHours() int32 {
  2164  	if x != nil {
  2165  		return x.AlertStaleResultsHours
  2166  	}
  2167  	return 0
  2168  }
  2169  
  2170  func (x *DashboardTabAlertOptions) GetNumFailuresToAlert() int32 {
  2171  	if x != nil {
  2172  		return x.NumFailuresToAlert
  2173  	}
  2174  	return 0
  2175  }
  2176  
  2177  func (x *DashboardTabAlertOptions) GetAlertMailToAddresses() string {
  2178  	if x != nil {
  2179  		return x.AlertMailToAddresses
  2180  	}
  2181  	return ""
  2182  }
  2183  
  2184  func (x *DashboardTabAlertOptions) GetNumPassesToDisableAlert() int32 {
  2185  	if x != nil {
  2186  		return x.NumPassesToDisableAlert
  2187  	}
  2188  	return 0
  2189  }
  2190  
  2191  func (x *DashboardTabAlertOptions) GetSubject() string {
  2192  	if x != nil {
  2193  		return x.Subject
  2194  	}
  2195  	return ""
  2196  }
  2197  
  2198  func (x *DashboardTabAlertOptions) GetDebugUrl() string {
  2199  	if x != nil {
  2200  		return x.DebugUrl
  2201  	}
  2202  	return ""
  2203  }
  2204  
  2205  func (x *DashboardTabAlertOptions) GetDebugMessage() string {
  2206  	if x != nil {
  2207  		return x.DebugMessage
  2208  	}
  2209  	return ""
  2210  }
  2211  
  2212  func (x *DashboardTabAlertOptions) GetWaitMinutesBetweenEmails() int32 {
  2213  	if x != nil {
  2214  		return x.WaitMinutesBetweenEmails
  2215  	}
  2216  	return 0
  2217  }
  2218  
  2219  func (x *DashboardTabAlertOptions) GetAlertMailFailureMessage() string {
  2220  	if x != nil {
  2221  		return x.AlertMailFailureMessage
  2222  	}
  2223  	return ""
  2224  }
  2225  
  2226  // Configuration options for dashboard tab flakiness alerts.
  2227  type DashboardTabFlakinessAlertOptions struct {
  2228  	state         protoimpl.MessageState
  2229  	sizeCache     protoimpl.SizeCache
  2230  	unknownFields protoimpl.UnknownFields
  2231  
  2232  	// The minimum amount of flakiness needed to trigger a flakiness alert.
  2233  	// 0=Disable alerts
  2234  	// This is a percentage; expected values go from 0 to 100 (100 = 100% flaky)
  2235  	MinimumFlakinessToAlert float32 `protobuf:"fixed32,1,opt,name=minimum_flakiness_to_alert,json=minimumFlakinessToAlert,proto3" json:"minimum_flakiness_to_alert,omitempty"`
  2236  	// The comma-separated addresses to send mail.
  2237  	AlertMailToAddresses string `protobuf:"bytes,2,opt,name=alert_mail_to_addresses,json=alertMailToAddresses,proto3" json:"alert_mail_to_addresses,omitempty"`
  2238  	// Custom subject for alert mails.
  2239  	Subject string `protobuf:"bytes,3,opt,name=subject,proto3" json:"subject,omitempty"`
  2240  	// Minimum time between sending mails.
  2241  	WaitMinutesBetweenEmails int32 `protobuf:"varint,4,opt,name=wait_minutes_between_emails,json=waitMinutesBetweenEmails,proto3" json:"wait_minutes_between_emails,omitempty"`
  2242  	// A custom message
  2243  	// TODO(RonWeber): This should be a template
  2244  	AlertMailFailureMessage string `protobuf:"bytes,5,opt,name=alert_mail_failure_message,json=alertMailFailureMessage,proto3" json:"alert_mail_failure_message,omitempty"`
  2245  }
  2246  
  2247  func (x *DashboardTabFlakinessAlertOptions) Reset() {
  2248  	*x = DashboardTabFlakinessAlertOptions{}
  2249  	if protoimpl.UnsafeEnabled {
  2250  		mi := &file_config_proto_msgTypes[14]
  2251  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2252  		ms.StoreMessageInfo(mi)
  2253  	}
  2254  }
  2255  
  2256  func (x *DashboardTabFlakinessAlertOptions) String() string {
  2257  	return protoimpl.X.MessageStringOf(x)
  2258  }
  2259  
  2260  func (*DashboardTabFlakinessAlertOptions) ProtoMessage() {}
  2261  
  2262  func (x *DashboardTabFlakinessAlertOptions) ProtoReflect() protoreflect.Message {
  2263  	mi := &file_config_proto_msgTypes[14]
  2264  	if protoimpl.UnsafeEnabled && x != nil {
  2265  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2266  		if ms.LoadMessageInfo() == nil {
  2267  			ms.StoreMessageInfo(mi)
  2268  		}
  2269  		return ms
  2270  	}
  2271  	return mi.MessageOf(x)
  2272  }
  2273  
  2274  // Deprecated: Use DashboardTabFlakinessAlertOptions.ProtoReflect.Descriptor instead.
  2275  func (*DashboardTabFlakinessAlertOptions) Descriptor() ([]byte, []int) {
  2276  	return file_config_proto_rawDescGZIP(), []int{14}
  2277  }
  2278  
  2279  func (x *DashboardTabFlakinessAlertOptions) GetMinimumFlakinessToAlert() float32 {
  2280  	if x != nil {
  2281  		return x.MinimumFlakinessToAlert
  2282  	}
  2283  	return 0
  2284  }
  2285  
  2286  func (x *DashboardTabFlakinessAlertOptions) GetAlertMailToAddresses() string {
  2287  	if x != nil {
  2288  		return x.AlertMailToAddresses
  2289  	}
  2290  	return ""
  2291  }
  2292  
  2293  func (x *DashboardTabFlakinessAlertOptions) GetSubject() string {
  2294  	if x != nil {
  2295  		return x.Subject
  2296  	}
  2297  	return ""
  2298  }
  2299  
  2300  func (x *DashboardTabFlakinessAlertOptions) GetWaitMinutesBetweenEmails() int32 {
  2301  	if x != nil {
  2302  		return x.WaitMinutesBetweenEmails
  2303  	}
  2304  	return 0
  2305  }
  2306  
  2307  func (x *DashboardTabFlakinessAlertOptions) GetAlertMailFailureMessage() string {
  2308  	if x != nil {
  2309  		return x.AlertMailFailureMessage
  2310  	}
  2311  	return ""
  2312  }
  2313  
  2314  // Configuration options for customizing the tab status calculation.
  2315  type DashboardTabStatusCustomizationOptions struct {
  2316  	state         protoimpl.MessageState
  2317  	sizeCache     protoimpl.SizeCache
  2318  	unknownFields protoimpl.UnknownFields
  2319  
  2320  	// Maximum amount of flakiness tolerated to categorize tab as acceptable. Will
  2321  	// supplement dashboard tab status message, and mark the tab as ACCEPTABLE in
  2322  	// the dashboard group view. Set to "0" to disable. This is configured as a
  2323  	// percentage of valid (non-ignored) columns; expected values go from 0.0 to
  2324  	// 100.0 (100% = no passing columns is acceptable)
  2325  	MaxAcceptableFlakiness float32                                                    `protobuf:"fixed32,1,opt,name=max_acceptable_flakiness,json=maxAcceptableFlakiness,proto3" json:"max_acceptable_flakiness,omitempty"`
  2326  	IgnoredTestStatuses    []DashboardTabStatusCustomizationOptions_IgnoredTestStatus `protobuf:"varint,2,rep,packed,name=ignored_test_statuses,json=ignoredTestStatuses,proto3,enum=testgrid.config.DashboardTabStatusCustomizationOptions_IgnoredTestStatus" json:"ignored_test_statuses,omitempty"`
  2327  	// Minimum number of runs required excluding ignored ones.
  2328  	// If the non-ignored columns is less than this, tab status will be PENDING.
  2329  	MinAcceptableRuns int32 `protobuf:"varint,3,opt,name=min_acceptable_runs,json=minAcceptableRuns,proto3" json:"min_acceptable_runs,omitempty"`
  2330  }
  2331  
  2332  func (x *DashboardTabStatusCustomizationOptions) Reset() {
  2333  	*x = DashboardTabStatusCustomizationOptions{}
  2334  	if protoimpl.UnsafeEnabled {
  2335  		mi := &file_config_proto_msgTypes[15]
  2336  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2337  		ms.StoreMessageInfo(mi)
  2338  	}
  2339  }
  2340  
  2341  func (x *DashboardTabStatusCustomizationOptions) String() string {
  2342  	return protoimpl.X.MessageStringOf(x)
  2343  }
  2344  
  2345  func (*DashboardTabStatusCustomizationOptions) ProtoMessage() {}
  2346  
  2347  func (x *DashboardTabStatusCustomizationOptions) ProtoReflect() protoreflect.Message {
  2348  	mi := &file_config_proto_msgTypes[15]
  2349  	if protoimpl.UnsafeEnabled && x != nil {
  2350  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2351  		if ms.LoadMessageInfo() == nil {
  2352  			ms.StoreMessageInfo(mi)
  2353  		}
  2354  		return ms
  2355  	}
  2356  	return mi.MessageOf(x)
  2357  }
  2358  
  2359  // Deprecated: Use DashboardTabStatusCustomizationOptions.ProtoReflect.Descriptor instead.
  2360  func (*DashboardTabStatusCustomizationOptions) Descriptor() ([]byte, []int) {
  2361  	return file_config_proto_rawDescGZIP(), []int{15}
  2362  }
  2363  
  2364  func (x *DashboardTabStatusCustomizationOptions) GetMaxAcceptableFlakiness() float32 {
  2365  	if x != nil {
  2366  		return x.MaxAcceptableFlakiness
  2367  	}
  2368  	return 0
  2369  }
  2370  
  2371  func (x *DashboardTabStatusCustomizationOptions) GetIgnoredTestStatuses() []DashboardTabStatusCustomizationOptions_IgnoredTestStatus {
  2372  	if x != nil {
  2373  		return x.IgnoredTestStatuses
  2374  	}
  2375  	return nil
  2376  }
  2377  
  2378  func (x *DashboardTabStatusCustomizationOptions) GetMinAcceptableRuns() int32 {
  2379  	if x != nil {
  2380  		return x.MinAcceptableRuns
  2381  	}
  2382  	return 0
  2383  }
  2384  
  2385  // Specifies a dashboard group.
  2386  type DashboardGroup struct {
  2387  	state         protoimpl.MessageState
  2388  	sizeCache     protoimpl.SizeCache
  2389  	unknownFields protoimpl.UnknownFields
  2390  
  2391  	// The name for the dashboard group.
  2392  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  2393  	// A list of names specifying dashboards to show links to in a separate tabbed
  2394  	// bar at the top of the page for each of the given dashboards.
  2395  	DashboardNames []string `protobuf:"bytes,2,rep,name=dashboard_names,json=dashboardNames,proto3" json:"dashboard_names,omitempty"`
  2396  	// A description paragraph to be displayed.
  2397  	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
  2398  }
  2399  
  2400  func (x *DashboardGroup) Reset() {
  2401  	*x = DashboardGroup{}
  2402  	if protoimpl.UnsafeEnabled {
  2403  		mi := &file_config_proto_msgTypes[16]
  2404  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2405  		ms.StoreMessageInfo(mi)
  2406  	}
  2407  }
  2408  
  2409  func (x *DashboardGroup) String() string {
  2410  	return protoimpl.X.MessageStringOf(x)
  2411  }
  2412  
  2413  func (*DashboardGroup) ProtoMessage() {}
  2414  
  2415  func (x *DashboardGroup) ProtoReflect() protoreflect.Message {
  2416  	mi := &file_config_proto_msgTypes[16]
  2417  	if protoimpl.UnsafeEnabled && x != nil {
  2418  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2419  		if ms.LoadMessageInfo() == nil {
  2420  			ms.StoreMessageInfo(mi)
  2421  		}
  2422  		return ms
  2423  	}
  2424  	return mi.MessageOf(x)
  2425  }
  2426  
  2427  // Deprecated: Use DashboardGroup.ProtoReflect.Descriptor instead.
  2428  func (*DashboardGroup) Descriptor() ([]byte, []int) {
  2429  	return file_config_proto_rawDescGZIP(), []int{16}
  2430  }
  2431  
  2432  func (x *DashboardGroup) GetName() string {
  2433  	if x != nil {
  2434  		return x.Name
  2435  	}
  2436  	return ""
  2437  }
  2438  
  2439  func (x *DashboardGroup) GetDashboardNames() []string {
  2440  	if x != nil {
  2441  		return x.DashboardNames
  2442  	}
  2443  	return nil
  2444  }
  2445  
  2446  func (x *DashboardGroup) GetDescription() string {
  2447  	if x != nil {
  2448  		return x.Description
  2449  	}
  2450  	return ""
  2451  }
  2452  
  2453  // A service configuration consisting of multiple test groups and dashboards.
  2454  type Configuration struct {
  2455  	state         protoimpl.MessageState
  2456  	sizeCache     protoimpl.SizeCache
  2457  	unknownFields protoimpl.UnknownFields
  2458  
  2459  	// A list of groups of tests to gather.
  2460  	TestGroups []*TestGroup `protobuf:"bytes,1,rep,name=test_groups,json=testGroups,proto3" json:"test_groups,omitempty"`
  2461  	// A list of all of the dashboards for a server.
  2462  	Dashboards []*Dashboard `protobuf:"bytes,2,rep,name=dashboards,proto3" json:"dashboards,omitempty"`
  2463  	// A list of all the dashboard groups for a server.
  2464  	DashboardGroups []*DashboardGroup `protobuf:"bytes,3,rep,name=dashboard_groups,json=dashboardGroups,proto3" json:"dashboard_groups,omitempty"`
  2465  }
  2466  
  2467  func (x *Configuration) Reset() {
  2468  	*x = Configuration{}
  2469  	if protoimpl.UnsafeEnabled {
  2470  		mi := &file_config_proto_msgTypes[17]
  2471  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2472  		ms.StoreMessageInfo(mi)
  2473  	}
  2474  }
  2475  
  2476  func (x *Configuration) String() string {
  2477  	return protoimpl.X.MessageStringOf(x)
  2478  }
  2479  
  2480  func (*Configuration) ProtoMessage() {}
  2481  
  2482  func (x *Configuration) ProtoReflect() protoreflect.Message {
  2483  	mi := &file_config_proto_msgTypes[17]
  2484  	if protoimpl.UnsafeEnabled && x != nil {
  2485  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2486  		if ms.LoadMessageInfo() == nil {
  2487  			ms.StoreMessageInfo(mi)
  2488  		}
  2489  		return ms
  2490  	}
  2491  	return mi.MessageOf(x)
  2492  }
  2493  
  2494  // Deprecated: Use Configuration.ProtoReflect.Descriptor instead.
  2495  func (*Configuration) Descriptor() ([]byte, []int) {
  2496  	return file_config_proto_rawDescGZIP(), []int{17}
  2497  }
  2498  
  2499  func (x *Configuration) GetTestGroups() []*TestGroup {
  2500  	if x != nil {
  2501  		return x.TestGroups
  2502  	}
  2503  	return nil
  2504  }
  2505  
  2506  func (x *Configuration) GetDashboards() []*Dashboard {
  2507  	if x != nil {
  2508  		return x.Dashboards
  2509  	}
  2510  	return nil
  2511  }
  2512  
  2513  func (x *Configuration) GetDashboardGroups() []*DashboardGroup {
  2514  	if x != nil {
  2515  		return x.DashboardGroups
  2516  	}
  2517  	return nil
  2518  }
  2519  
  2520  // A grouping of configuration options for the flakiness analysis tool.
  2521  // Later configuration options could include the ability to choose different
  2522  // kinds of flakiness and choosing if and who to email a copy of the flakiness
  2523  // report.
  2524  type HealthAnalysisOptions struct {
  2525  	state         protoimpl.MessageState
  2526  	sizeCache     protoimpl.SizeCache
  2527  	unknownFields protoimpl.UnknownFields
  2528  
  2529  	// Defaults to false; flakiness analysis is opt-in
  2530  	Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
  2531  	// Defines the number of days for one interval of analysis.
  2532  	// i.e. flakiness will be analyzed for the previous N days starting from Now,
  2533  	// and it will be compared to the calculated N days before that for trend
  2534  	// analysis.
  2535  	DaysOfAnalysis int32 `protobuf:"varint,2,opt,name=days_of_analysis,json=daysOfAnalysis,proto3" json:"days_of_analysis,omitempty"`
  2536  	// When to send healthiness emails out, uses cron string format.
  2537  	EmailSchedule string `protobuf:"bytes,3,opt,name=email_schedule,json=emailSchedule,proto3" json:"email_schedule,omitempty"`
  2538  	// A comma-separated list of healthiness email recipients.
  2539  	EmailRecipients string `protobuf:"bytes,4,opt,name=email_recipients,json=emailRecipients,proto3" json:"email_recipients,omitempty"`
  2540  	// A compilable regex string for grouping tests by name.
  2541  	// Works the same as the group-by-regex-mask option of base_options:
  2542  	// go/testgrid/users/dashboard_guide#grouping-tests
  2543  	// An empty string means no grouping.
  2544  	// e.g. test name: "//path/to/test - env", regex: ` - \w+`
  2545  	// The regex will match " - env" in the above test name and give a group of:
  2546  	// //path/to/test  <- Group Name
  2547  	//     - env       <- Group Member
  2548  	GroupingRegex string `protobuf:"bytes,5,opt,name=grouping_regex,json=groupingRegex,proto3" json:"grouping_regex,omitempty"`
  2549  }
  2550  
  2551  func (x *HealthAnalysisOptions) Reset() {
  2552  	*x = HealthAnalysisOptions{}
  2553  	if protoimpl.UnsafeEnabled {
  2554  		mi := &file_config_proto_msgTypes[18]
  2555  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2556  		ms.StoreMessageInfo(mi)
  2557  	}
  2558  }
  2559  
  2560  func (x *HealthAnalysisOptions) String() string {
  2561  	return protoimpl.X.MessageStringOf(x)
  2562  }
  2563  
  2564  func (*HealthAnalysisOptions) ProtoMessage() {}
  2565  
  2566  func (x *HealthAnalysisOptions) ProtoReflect() protoreflect.Message {
  2567  	mi := &file_config_proto_msgTypes[18]
  2568  	if protoimpl.UnsafeEnabled && x != nil {
  2569  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2570  		if ms.LoadMessageInfo() == nil {
  2571  			ms.StoreMessageInfo(mi)
  2572  		}
  2573  		return ms
  2574  	}
  2575  	return mi.MessageOf(x)
  2576  }
  2577  
  2578  // Deprecated: Use HealthAnalysisOptions.ProtoReflect.Descriptor instead.
  2579  func (*HealthAnalysisOptions) Descriptor() ([]byte, []int) {
  2580  	return file_config_proto_rawDescGZIP(), []int{18}
  2581  }
  2582  
  2583  func (x *HealthAnalysisOptions) GetEnable() bool {
  2584  	if x != nil {
  2585  		return x.Enable
  2586  	}
  2587  	return false
  2588  }
  2589  
  2590  func (x *HealthAnalysisOptions) GetDaysOfAnalysis() int32 {
  2591  	if x != nil {
  2592  		return x.DaysOfAnalysis
  2593  	}
  2594  	return 0
  2595  }
  2596  
  2597  func (x *HealthAnalysisOptions) GetEmailSchedule() string {
  2598  	if x != nil {
  2599  		return x.EmailSchedule
  2600  	}
  2601  	return ""
  2602  }
  2603  
  2604  func (x *HealthAnalysisOptions) GetEmailRecipients() string {
  2605  	if x != nil {
  2606  		return x.EmailRecipients
  2607  	}
  2608  	return ""
  2609  }
  2610  
  2611  func (x *HealthAnalysisOptions) GetGroupingRegex() string {
  2612  	if x != nil {
  2613  		return x.GroupingRegex
  2614  	}
  2615  	return ""
  2616  }
  2617  
  2618  // The DefaultConfiguration Proto is deprecated, and will be deleted after Nov
  2619  // 1, 2019. For defaulting behavior, use the yamlcfg library instead.
  2620  type DefaultConfiguration struct {
  2621  	state         protoimpl.MessageState
  2622  	sizeCache     protoimpl.SizeCache
  2623  	unknownFields protoimpl.UnknownFields
  2624  
  2625  	// A default testgroup with default initialization data
  2626  	//
  2627  	// Deprecated: Do not use.
  2628  	DefaultTestGroup *TestGroup `protobuf:"bytes,1,opt,name=default_test_group,json=defaultTestGroup,proto3" json:"default_test_group,omitempty"`
  2629  	// A default dashboard tab with default initialization data
  2630  	//
  2631  	// Deprecated: Do not use.
  2632  	DefaultDashboardTab *DashboardTab `protobuf:"bytes,2,opt,name=default_dashboard_tab,json=defaultDashboardTab,proto3" json:"default_dashboard_tab,omitempty"`
  2633  }
  2634  
  2635  func (x *DefaultConfiguration) Reset() {
  2636  	*x = DefaultConfiguration{}
  2637  	if protoimpl.UnsafeEnabled {
  2638  		mi := &file_config_proto_msgTypes[19]
  2639  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2640  		ms.StoreMessageInfo(mi)
  2641  	}
  2642  }
  2643  
  2644  func (x *DefaultConfiguration) String() string {
  2645  	return protoimpl.X.MessageStringOf(x)
  2646  }
  2647  
  2648  func (*DefaultConfiguration) ProtoMessage() {}
  2649  
  2650  func (x *DefaultConfiguration) ProtoReflect() protoreflect.Message {
  2651  	mi := &file_config_proto_msgTypes[19]
  2652  	if protoimpl.UnsafeEnabled && x != nil {
  2653  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2654  		if ms.LoadMessageInfo() == nil {
  2655  			ms.StoreMessageInfo(mi)
  2656  		}
  2657  		return ms
  2658  	}
  2659  	return mi.MessageOf(x)
  2660  }
  2661  
  2662  // Deprecated: Use DefaultConfiguration.ProtoReflect.Descriptor instead.
  2663  func (*DefaultConfiguration) Descriptor() ([]byte, []int) {
  2664  	return file_config_proto_rawDescGZIP(), []int{19}
  2665  }
  2666  
  2667  // Deprecated: Do not use.
  2668  func (x *DefaultConfiguration) GetDefaultTestGroup() *TestGroup {
  2669  	if x != nil {
  2670  		return x.DefaultTestGroup
  2671  	}
  2672  	return nil
  2673  }
  2674  
  2675  // Deprecated: Do not use.
  2676  func (x *DefaultConfiguration) GetDefaultDashboardTab() *DashboardTab {
  2677  	if x != nil {
  2678  		return x.DefaultDashboardTab
  2679  	}
  2680  	return nil
  2681  }
  2682  
  2683  // Specifies name elements to be selected from configuration values
  2684  type TestNameConfig_NameElement struct {
  2685  	state         protoimpl.MessageState
  2686  	sizeCache     protoimpl.SizeCache
  2687  	unknownFields protoimpl.UnknownFields
  2688  
  2689  	// A space-delimited string of labels
  2690  	Labels string `protobuf:"bytes,1,opt,name=labels,proto3" json:"labels,omitempty"`
  2691  	// Configuration value to use.
  2692  	// Valid choice are:
  2693  	// 'Tests name': The name of a test case
  2694  	// 'Commit': The commit number of the build
  2695  	// 'Context', 'Thread': The info extracted from each junit files:
  2696  	//    - junit_core-os_01.xml -> Context: core-os, Thread: 01
  2697  	//    - junit_runner.xml -> Context: runner
  2698  	//    - junit_01.xml -> Thread: 01
  2699  	// or any metadata key from finished.json, which is copied from your test
  2700  	// suite.
  2701  	//
  2702  	// A valid sample TestNameConfig looks like:
  2703  	// test_name_config:
  2704  	//   name_elements:
  2705  	//   - target_config: Tests name
  2706  	//   - target_config: Context
  2707  	//   name_format: '%s [%s]'
  2708  	TargetConfig string `protobuf:"bytes,2,opt,name=target_config,json=targetConfig,proto3" json:"target_config,omitempty"`
  2709  	// Whether to use the build-target name
  2710  	BuildTarget bool `protobuf:"varint,3,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
  2711  	// A space-delimited string of Bazel build tags.
  2712  	Tags string `protobuf:"bytes,4,opt,name=tags,proto3" json:"tags,omitempty"`
  2713  	// The key of a test result's property.
  2714  	TestProperty string `protobuf:"bytes,5,opt,name=test_property,json=testProperty,proto3" json:"test_property,omitempty"`
  2715  }
  2716  
  2717  func (x *TestNameConfig_NameElement) Reset() {
  2718  	*x = TestNameConfig_NameElement{}
  2719  	if protoimpl.UnsafeEnabled {
  2720  		mi := &file_config_proto_msgTypes[20]
  2721  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2722  		ms.StoreMessageInfo(mi)
  2723  	}
  2724  }
  2725  
  2726  func (x *TestNameConfig_NameElement) String() string {
  2727  	return protoimpl.X.MessageStringOf(x)
  2728  }
  2729  
  2730  func (*TestNameConfig_NameElement) ProtoMessage() {}
  2731  
  2732  func (x *TestNameConfig_NameElement) ProtoReflect() protoreflect.Message {
  2733  	mi := &file_config_proto_msgTypes[20]
  2734  	if protoimpl.UnsafeEnabled && x != nil {
  2735  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2736  		if ms.LoadMessageInfo() == nil {
  2737  			ms.StoreMessageInfo(mi)
  2738  		}
  2739  		return ms
  2740  	}
  2741  	return mi.MessageOf(x)
  2742  }
  2743  
  2744  // Deprecated: Use TestNameConfig_NameElement.ProtoReflect.Descriptor instead.
  2745  func (*TestNameConfig_NameElement) Descriptor() ([]byte, []int) {
  2746  	return file_config_proto_rawDescGZIP(), []int{0, 0}
  2747  }
  2748  
  2749  func (x *TestNameConfig_NameElement) GetLabels() string {
  2750  	if x != nil {
  2751  		return x.Labels
  2752  	}
  2753  	return ""
  2754  }
  2755  
  2756  func (x *TestNameConfig_NameElement) GetTargetConfig() string {
  2757  	if x != nil {
  2758  		return x.TargetConfig
  2759  	}
  2760  	return ""
  2761  }
  2762  
  2763  func (x *TestNameConfig_NameElement) GetBuildTarget() bool {
  2764  	if x != nil {
  2765  		return x.BuildTarget
  2766  	}
  2767  	return false
  2768  }
  2769  
  2770  func (x *TestNameConfig_NameElement) GetTags() string {
  2771  	if x != nil {
  2772  		return x.Tags
  2773  	}
  2774  	return ""
  2775  }
  2776  
  2777  func (x *TestNameConfig_NameElement) GetTestProperty() string {
  2778  	if x != nil {
  2779  		return x.TestProperty
  2780  	}
  2781  	return ""
  2782  }
  2783  
  2784  // Custom column headers for defining extra column-heading rows from values in
  2785  // the test result.
  2786  type TestGroup_ColumnHeader struct {
  2787  	state         protoimpl.MessageState
  2788  	sizeCache     protoimpl.SizeCache
  2789  	unknownFields protoimpl.UnknownFields
  2790  
  2791  	Label              string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"`
  2792  	Property           string `protobuf:"bytes,2,opt,name=property,proto3" json:"property,omitempty"`
  2793  	ConfigurationValue string `protobuf:"bytes,3,opt,name=configuration_value,json=configurationValue,proto3" json:"configuration_value,omitempty"`
  2794  	// If true, list all distinct values. Else, list multiple distinct values as
  2795  	// "*".
  2796  	ListAllValues bool `protobuf:"varint,4,opt,name=list_all_values,json=listAllValues,proto3" json:"list_all_values,omitempty"`
  2797  }
  2798  
  2799  func (x *TestGroup_ColumnHeader) Reset() {
  2800  	*x = TestGroup_ColumnHeader{}
  2801  	if protoimpl.UnsafeEnabled {
  2802  		mi := &file_config_proto_msgTypes[21]
  2803  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2804  		ms.StoreMessageInfo(mi)
  2805  	}
  2806  }
  2807  
  2808  func (x *TestGroup_ColumnHeader) String() string {
  2809  	return protoimpl.X.MessageStringOf(x)
  2810  }
  2811  
  2812  func (*TestGroup_ColumnHeader) ProtoMessage() {}
  2813  
  2814  func (x *TestGroup_ColumnHeader) ProtoReflect() protoreflect.Message {
  2815  	mi := &file_config_proto_msgTypes[21]
  2816  	if protoimpl.UnsafeEnabled && x != nil {
  2817  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2818  		if ms.LoadMessageInfo() == nil {
  2819  			ms.StoreMessageInfo(mi)
  2820  		}
  2821  		return ms
  2822  	}
  2823  	return mi.MessageOf(x)
  2824  }
  2825  
  2826  // Deprecated: Use TestGroup_ColumnHeader.ProtoReflect.Descriptor instead.
  2827  func (*TestGroup_ColumnHeader) Descriptor() ([]byte, []int) {
  2828  	return file_config_proto_rawDescGZIP(), []int{2, 0}
  2829  }
  2830  
  2831  func (x *TestGroup_ColumnHeader) GetLabel() string {
  2832  	if x != nil {
  2833  		return x.Label
  2834  	}
  2835  	return ""
  2836  }
  2837  
  2838  func (x *TestGroup_ColumnHeader) GetProperty() string {
  2839  	if x != nil {
  2840  		return x.Property
  2841  	}
  2842  	return ""
  2843  }
  2844  
  2845  func (x *TestGroup_ColumnHeader) GetConfigurationValue() string {
  2846  	if x != nil {
  2847  		return x.ConfigurationValue
  2848  	}
  2849  	return ""
  2850  }
  2851  
  2852  func (x *TestGroup_ColumnHeader) GetListAllValues() bool {
  2853  	if x != nil {
  2854  		return x.ListAllValues
  2855  	}
  2856  	return false
  2857  }
  2858  
  2859  // Associates the presence of a named test property with a custom short text
  2860  // displayed over the results. Short text must be <=5 characters long.
  2861  type TestGroup_TestAnnotation struct {
  2862  	state         protoimpl.MessageState
  2863  	sizeCache     protoimpl.SizeCache
  2864  	unknownFields protoimpl.UnknownFields
  2865  
  2866  	ShortText string `protobuf:"bytes,1,opt,name=short_text,json=shortText,proto3" json:"short_text,omitempty"`
  2867  	// Types that are assignable to ShortTextMessageSource:
  2868  	//	*TestGroup_TestAnnotation_PropertyName
  2869  	ShortTextMessageSource isTestGroup_TestAnnotation_ShortTextMessageSource `protobuf_oneof:"short_text_message_source"`
  2870  }
  2871  
  2872  func (x *TestGroup_TestAnnotation) Reset() {
  2873  	*x = TestGroup_TestAnnotation{}
  2874  	if protoimpl.UnsafeEnabled {
  2875  		mi := &file_config_proto_msgTypes[22]
  2876  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2877  		ms.StoreMessageInfo(mi)
  2878  	}
  2879  }
  2880  
  2881  func (x *TestGroup_TestAnnotation) String() string {
  2882  	return protoimpl.X.MessageStringOf(x)
  2883  }
  2884  
  2885  func (*TestGroup_TestAnnotation) ProtoMessage() {}
  2886  
  2887  func (x *TestGroup_TestAnnotation) ProtoReflect() protoreflect.Message {
  2888  	mi := &file_config_proto_msgTypes[22]
  2889  	if protoimpl.UnsafeEnabled && x != nil {
  2890  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2891  		if ms.LoadMessageInfo() == nil {
  2892  			ms.StoreMessageInfo(mi)
  2893  		}
  2894  		return ms
  2895  	}
  2896  	return mi.MessageOf(x)
  2897  }
  2898  
  2899  // Deprecated: Use TestGroup_TestAnnotation.ProtoReflect.Descriptor instead.
  2900  func (*TestGroup_TestAnnotation) Descriptor() ([]byte, []int) {
  2901  	return file_config_proto_rawDescGZIP(), []int{2, 1}
  2902  }
  2903  
  2904  func (x *TestGroup_TestAnnotation) GetShortText() string {
  2905  	if x != nil {
  2906  		return x.ShortText
  2907  	}
  2908  	return ""
  2909  }
  2910  
  2911  func (m *TestGroup_TestAnnotation) GetShortTextMessageSource() isTestGroup_TestAnnotation_ShortTextMessageSource {
  2912  	if m != nil {
  2913  		return m.ShortTextMessageSource
  2914  	}
  2915  	return nil
  2916  }
  2917  
  2918  func (x *TestGroup_TestAnnotation) GetPropertyName() string {
  2919  	if x, ok := x.GetShortTextMessageSource().(*TestGroup_TestAnnotation_PropertyName); ok {
  2920  		return x.PropertyName
  2921  	}
  2922  	return ""
  2923  }
  2924  
  2925  type isTestGroup_TestAnnotation_ShortTextMessageSource interface {
  2926  	isTestGroup_TestAnnotation_ShortTextMessageSource()
  2927  }
  2928  
  2929  type TestGroup_TestAnnotation_PropertyName struct {
  2930  	PropertyName string `protobuf:"bytes,2,opt,name=property_name,json=propertyName,proto3,oneof"`
  2931  }
  2932  
  2933  func (*TestGroup_TestAnnotation_PropertyName) isTestGroup_TestAnnotation_ShortTextMessageSource() {}
  2934  
  2935  // A string key value pair message
  2936  type TestGroup_KeyValue struct {
  2937  	state         protoimpl.MessageState
  2938  	sizeCache     protoimpl.SizeCache
  2939  	unknownFields protoimpl.UnknownFields
  2940  
  2941  	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  2942  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  2943  }
  2944  
  2945  func (x *TestGroup_KeyValue) Reset() {
  2946  	*x = TestGroup_KeyValue{}
  2947  	if protoimpl.UnsafeEnabled {
  2948  		mi := &file_config_proto_msgTypes[23]
  2949  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2950  		ms.StoreMessageInfo(mi)
  2951  	}
  2952  }
  2953  
  2954  func (x *TestGroup_KeyValue) String() string {
  2955  	return protoimpl.X.MessageStringOf(x)
  2956  }
  2957  
  2958  func (*TestGroup_KeyValue) ProtoMessage() {}
  2959  
  2960  func (x *TestGroup_KeyValue) ProtoReflect() protoreflect.Message {
  2961  	mi := &file_config_proto_msgTypes[23]
  2962  	if protoimpl.UnsafeEnabled && x != nil {
  2963  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2964  		if ms.LoadMessageInfo() == nil {
  2965  			ms.StoreMessageInfo(mi)
  2966  		}
  2967  		return ms
  2968  	}
  2969  	return mi.MessageOf(x)
  2970  }
  2971  
  2972  // Deprecated: Use TestGroup_KeyValue.ProtoReflect.Descriptor instead.
  2973  func (*TestGroup_KeyValue) Descriptor() ([]byte, []int) {
  2974  	return file_config_proto_rawDescGZIP(), []int{2, 2}
  2975  }
  2976  
  2977  func (x *TestGroup_KeyValue) GetKey() string {
  2978  	if x != nil {
  2979  		return x.Key
  2980  	}
  2981  	return ""
  2982  }
  2983  
  2984  func (x *TestGroup_KeyValue) GetValue() string {
  2985  	if x != nil {
  2986  		return x.Value
  2987  	}
  2988  	return ""
  2989  }
  2990  
  2991  type TestGroup_ResultSource struct {
  2992  	state         protoimpl.MessageState
  2993  	sizeCache     protoimpl.SizeCache
  2994  	unknownFields protoimpl.UnknownFields
  2995  
  2996  	// Types that are assignable to ResultSourceConfig:
  2997  	//	*TestGroup_ResultSource_GcsConfig
  2998  	//	*TestGroup_ResultSource_ResultstoreConfig
  2999  	ResultSourceConfig isTestGroup_ResultSource_ResultSourceConfig `protobuf_oneof:"result_source_config"`
  3000  }
  3001  
  3002  func (x *TestGroup_ResultSource) Reset() {
  3003  	*x = TestGroup_ResultSource{}
  3004  	if protoimpl.UnsafeEnabled {
  3005  		mi := &file_config_proto_msgTypes[24]
  3006  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3007  		ms.StoreMessageInfo(mi)
  3008  	}
  3009  }
  3010  
  3011  func (x *TestGroup_ResultSource) String() string {
  3012  	return protoimpl.X.MessageStringOf(x)
  3013  }
  3014  
  3015  func (*TestGroup_ResultSource) ProtoMessage() {}
  3016  
  3017  func (x *TestGroup_ResultSource) ProtoReflect() protoreflect.Message {
  3018  	mi := &file_config_proto_msgTypes[24]
  3019  	if protoimpl.UnsafeEnabled && x != nil {
  3020  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3021  		if ms.LoadMessageInfo() == nil {
  3022  			ms.StoreMessageInfo(mi)
  3023  		}
  3024  		return ms
  3025  	}
  3026  	return mi.MessageOf(x)
  3027  }
  3028  
  3029  // Deprecated: Use TestGroup_ResultSource.ProtoReflect.Descriptor instead.
  3030  func (*TestGroup_ResultSource) Descriptor() ([]byte, []int) {
  3031  	return file_config_proto_rawDescGZIP(), []int{2, 3}
  3032  }
  3033  
  3034  func (m *TestGroup_ResultSource) GetResultSourceConfig() isTestGroup_ResultSource_ResultSourceConfig {
  3035  	if m != nil {
  3036  		return m.ResultSourceConfig
  3037  	}
  3038  	return nil
  3039  }
  3040  
  3041  func (x *TestGroup_ResultSource) GetGcsConfig() *GCSConfig {
  3042  	if x, ok := x.GetResultSourceConfig().(*TestGroup_ResultSource_GcsConfig); ok {
  3043  		return x.GcsConfig
  3044  	}
  3045  	return nil
  3046  }
  3047  
  3048  func (x *TestGroup_ResultSource) GetResultstoreConfig() *ResultStoreConfig {
  3049  	if x, ok := x.GetResultSourceConfig().(*TestGroup_ResultSource_ResultstoreConfig); ok {
  3050  		return x.ResultstoreConfig
  3051  	}
  3052  	return nil
  3053  }
  3054  
  3055  type isTestGroup_ResultSource_ResultSourceConfig interface {
  3056  	isTestGroup_ResultSource_ResultSourceConfig()
  3057  }
  3058  
  3059  type TestGroup_ResultSource_GcsConfig struct {
  3060  	// GCS buckets holding junit and json results, typically created by prow.
  3061  	GcsConfig *GCSConfig `protobuf:"bytes,2,opt,name=gcs_config,json=gcsConfig,proto3,oneof"`
  3062  }
  3063  
  3064  type TestGroup_ResultSource_ResultstoreConfig struct {
  3065  	// Invocations stored in ResultStore.
  3066  	ResultstoreConfig *ResultStoreConfig `protobuf:"bytes,6,opt,name=resultstore_config,json=resultstoreConfig,proto3,oneof"`
  3067  }
  3068  
  3069  func (*TestGroup_ResultSource_GcsConfig) isTestGroup_ResultSource_ResultSourceConfig() {}
  3070  
  3071  func (*TestGroup_ResultSource_ResultstoreConfig) isTestGroup_ResultSource_ResultSourceConfig() {}
  3072  
  3073  type AutoBugOptions_DefaultTestMetadata struct {
  3074  	state         protoimpl.MessageState
  3075  	sizeCache     protoimpl.SizeCache
  3076  	unknownFields protoimpl.UnknownFields
  3077  
  3078  	BugComponent int32    `protobuf:"varint,1,opt,name=bug_component,json=bugComponent,proto3" json:"bug_component,omitempty"`
  3079  	Owner        string   `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
  3080  	Cc           []string `protobuf:"bytes,3,rep,name=cc,proto3" json:"cc,omitempty"`
  3081  }
  3082  
  3083  func (x *AutoBugOptions_DefaultTestMetadata) Reset() {
  3084  	*x = AutoBugOptions_DefaultTestMetadata{}
  3085  	if protoimpl.UnsafeEnabled {
  3086  		mi := &file_config_proto_msgTypes[25]
  3087  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3088  		ms.StoreMessageInfo(mi)
  3089  	}
  3090  }
  3091  
  3092  func (x *AutoBugOptions_DefaultTestMetadata) String() string {
  3093  	return protoimpl.X.MessageStringOf(x)
  3094  }
  3095  
  3096  func (*AutoBugOptions_DefaultTestMetadata) ProtoMessage() {}
  3097  
  3098  func (x *AutoBugOptions_DefaultTestMetadata) ProtoReflect() protoreflect.Message {
  3099  	mi := &file_config_proto_msgTypes[25]
  3100  	if protoimpl.UnsafeEnabled && x != nil {
  3101  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3102  		if ms.LoadMessageInfo() == nil {
  3103  			ms.StoreMessageInfo(mi)
  3104  		}
  3105  		return ms
  3106  	}
  3107  	return mi.MessageOf(x)
  3108  }
  3109  
  3110  // Deprecated: Use AutoBugOptions_DefaultTestMetadata.ProtoReflect.Descriptor instead.
  3111  func (*AutoBugOptions_DefaultTestMetadata) Descriptor() ([]byte, []int) {
  3112  	return file_config_proto_rawDescGZIP(), []int{7, 0}
  3113  }
  3114  
  3115  func (x *AutoBugOptions_DefaultTestMetadata) GetBugComponent() int32 {
  3116  	if x != nil {
  3117  		return x.BugComponent
  3118  	}
  3119  	return 0
  3120  }
  3121  
  3122  func (x *AutoBugOptions_DefaultTestMetadata) GetOwner() string {
  3123  	if x != nil {
  3124  		return x.Owner
  3125  	}
  3126  	return ""
  3127  }
  3128  
  3129  func (x *AutoBugOptions_DefaultTestMetadata) GetCc() []string {
  3130  	if x != nil {
  3131  		return x.Cc
  3132  	}
  3133  	return nil
  3134  }
  3135  
  3136  var File_config_proto protoreflect.FileDescriptor
  3137  
  3138  var file_config_proto_rawDesc = []byte{
  3139  	0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f,
  3140  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a,
  3141  	0x2a, 0x70, 0x62, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75,
  3142  	0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x76, 0x61, 0x6c,
  3143  	0x75, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x02, 0x0a, 0x0e,
  3144  	0x54, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50,
  3145  	0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18,
  3146  	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3147  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65,
  3148  	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65,
  3149  	0x6e, 0x74, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73,
  3150  	0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
  3151  	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61,
  3152  	0x74, 0x1a, 0xa6, 0x01, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
  3153  	0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
  3154  	0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72,
  3155  	0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  3156  	0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21,
  3157  	0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03,
  3158  	0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65,
  3159  	0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
  3160  	0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72,
  3161  	0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65,
  3162  	0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x22, 0x4b, 0x0a, 0x0c, 0x4e, 0x6f,
  3163  	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75,
  3164  	0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d,
  3165  	0x6d, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f,
  3166  	0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
  3167  	0x65, 0x78, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x8d, 0x20, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74,
  3168  	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
  3169  	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x63, 0x73,
  3170  	0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67,
  3171  	0x63, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x61, 0x79, 0x73,
  3172  	0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
  3173  	0x05, 0x52, 0x0d, 0x64, 0x61, 0x79, 0x73, 0x4f, 0x66, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
  3174  	0x12, 0x25, 0x0a, 0x0e, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69,
  3175  	0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,
  3176  	0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x67, 0x6e, 0x6f, 0x72,
  3177  	0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69,
  3178  	0x67, 0x6e, 0x6f, 0x72, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x12, 0x50, 0x0a, 0x11, 0x74, 0x65,
  3179  	0x73, 0x74, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18,
  3180  	0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3181  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75,
  3182  	0x70, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0f, 0x74, 0x65, 0x73,
  3183  	0x74, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x15,
  3184  	0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x73,
  3185  	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x69, 0x67, 0x6e,
  3186  	0x6f, 0x72, 0x65, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
  3187  	0x12, 0x4c, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65,
  3188  	0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  3189  	0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72,
  3190  	0x6f, 0x75, 0x70, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
  3191  	0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x58,
  3192  	0x0a, 0x11, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
  3193  	0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74,
  3194  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74,
  3195  	0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x47, 0x72,
  3196  	0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
  3197  	0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x3d, 0x0a, 0x19, 0x61, 0x6c, 0x65, 0x72,
  3198  	0x74, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f,
  3199  	0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52,
  3200  	0x16, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c,
  3201  	0x74, 0x73, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x66,
  3202  	0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74,
  3203  	0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x46,
  3204  	0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x54, 0x6f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x27,
  3205  	0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18,
  3206  	0x0d, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x62, 0x75, 0x67, 0x43, 0x6f,
  3207  	0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x64, 0x65, 0x5f,
  3208  	0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28,
  3209  	0x09, 0x52, 0x0e, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x74,
  3210  	0x68, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73,
  3211  	0x5f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e,
  3212  	0x75, 0x6d, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x12,
  3213  	0x2a, 0x0a, 0x11, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61,
  3214  	0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x54,
  3215  	0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x17, 0x61,
  3216  	0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64,
  3217  	0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01,
  3218  	0x52, 0x14, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x54, 0x6f, 0x41, 0x64, 0x64,
  3219  	0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x12, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f,
  3220  	0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01,
  3221  	0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69,
  3222  	0x6c, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a, 0x1a, 0x61, 0x6c, 0x65, 0x72,
  3223  	0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d,
  3224  	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01,
  3225  	0x52, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x46, 0x61, 0x69, 0x6c, 0x75,
  3226  	0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x14, 0x61, 0x6c, 0x65,
  3227  	0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x75, 0x72,
  3228  	0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x61, 0x6c, 0x65,
  3229  	0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x44, 0x65, 0x62, 0x75, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x4c,
  3230  	0x0a, 0x21, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x69,
  3231  	0x6e, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61,
  3232  	0x69, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1d, 0x6d,
  3233  	0x69, 0x6e, 0x45, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73,
  3234  	0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13,
  3235  	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x73, 0x74, 0x61,
  3236  	0x74, 0x75, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c,
  3237  	0x65, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x15,
  3238  	0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x5f, 0x73,
  3239  	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73,
  3240  	0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
  3241  	0x12, 0x36, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x5f, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
  3242  	0x65, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x42,
  3243  	0x02, 0x18, 0x01, 0x52, 0x13, 0x75, 0x73, 0x65, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74,
  3244  	0x65, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61,
  3245  	0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x77, 0x6a, 0x6f, 0x62, 0x5f, 0x61, 0x6e, 0x61, 0x6c,
  3246  	0x79, 0x73, 0x69, 0x73, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61,
  3247  	0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x77, 0x6a, 0x6f, 0x62, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  3248  	0x69, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
  3249  	0x6c, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x72,
  3250  	0x6e, 0x61, 0x6c, 0x12, 0x49, 0x0a, 0x10, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
  3251  	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
  3252  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
  3253  	0x54, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e,
  3254  	0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43,
  3255  	0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
  3256  	0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3257  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
  3258  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
  3259  	0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x67,
  3260  	0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e,
  3261  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
  3262  	0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72,
  3263  	0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61,
  3264  	0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e,
  3265  	0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
  3266  	0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54,
  3267  	0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x74, 0x65,
  3268  	0x73, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f,
  3269  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  3270  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
  3271  	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
  3272  	0x0f, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  3273  	0x12, 0x38, 0x0a, 0x19, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74,
  3274  	0x68, 0x6f, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x20, 0x20,
  3275  	0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68,
  3276  	0x6f, 0x64, 0x73, 0x50, 0x65, 0x72, 0x54, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x15, 0x74, 0x65,
  3277  	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x70, 0x74, 0x69,
  3278  	0x6f, 0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74,
  3279  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74,
  3280  	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
  3281  	0x13, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74,
  3282  	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67,
  3283  	0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
  3284  	0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x67, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x4d,
  3285  	0x0a, 0x10, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
  3286  	0x6e, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67,
  3287  	0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x42,
  3288  	0x75, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61,
  3289  	0x75, 0x74, 0x6f, 0x42, 0x75, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a,
  3290  	0x16, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d,
  3291  	0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6d,
  3292  	0x61, 0x78, 0x54, 0x65, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x75,
  3293  	0x72, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73,
  3294  	0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72,
  3295  	0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x73, 0x73,
  3296  	0x65, 0x73, 0x54, 0x6f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74,
  3297  	0x12, 0x2b, 0x0a, 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x75, 0x67, 0x73, 0x5f, 0x62, 0x79,
  3298  	0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6c, 0x69,
  3299  	0x6e, 0x6b, 0x42, 0x75, 0x67, 0x73, 0x42, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x59, 0x0a,
  3300  	0x16, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x70, 0x72, 0x6f,
  3301  	0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e,
  3302  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e,
  3303  	0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c,
  3304  	0x75, 0x65, 0x52, 0x14, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x50, 0x72,
  3305  	0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x68,
  3306  	0x65, 0x72, 0x5f, 0x62, 0x75, 0x67, 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x67,
  3307  	0x61, 0x74, 0x68, 0x65, 0x72, 0x42, 0x75, 0x67, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x68, 0x6f,
  3308  	0x72, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x2b,
  3309  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x78, 0x74, 0x4d,
  3310  	0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x4b, 0x0a, 0x22, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6f,
  3311  	0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
  3312  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28,
  3313  	0x09, 0x52, 0x1f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
  3314  	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
  3315  	0x75, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x62, 0x75, 0x67, 0x73, 0x5f,
  3316  	0x62, 0x79, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18,
  3317  	0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x75, 0x67, 0x73, 0x42,
  3318  	0x79, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x17,
  3319  	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x63,
  3320  	0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74,
  3321  	0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65,
  3322  	0x67, 0x65, 0x78, 0x12, 0x39, 0x0a, 0x19, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x68,
  3323  	0x6f, 0x64, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78,
  3324  	0x18, 0x3d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68,
  3325  	0x6f, 0x64, 0x55, 0x6e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x31,
  3326  	0x0a, 0x15, 0x75, 0x73, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f,
  3327  	0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x75,
  3328  	0x73, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65,
  3329  	0x73, 0x12, 0x51, 0x0a, 0x25, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x67, 0x72,
  3330  	0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
  3331  	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09,
  3332  	0x52, 0x22, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69,
  3333  	0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
  3334  	0x61, 0x6c, 0x75, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73,
  3335  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65,
  3336  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65,
  3337  	0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x6f,
  3338  	0x75, 0x72, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x6f, 0x75, 0x72,
  3339  	0x63, 0x65, 0x12, 0x5d, 0x0a, 0x19, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x76, 0x61,
  3340  	0x6c, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18,
  3341  	0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3342  	0x2e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x6f,
  3343  	0x72, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x52, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f,
  3344  	0x6d, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x53, 0x65,
  3345  	0x74, 0x12, 0x35, 0x0a, 0x17, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f,
  3346  	0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x34, 0x20, 0x01,
  3347  	0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f,
  3348  	0x6d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x67, 0x6e, 0x6f,
  3349  	0x72, 0x65, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x35,
  3350  	0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f, 0x6c, 0x64, 0x52,
  3351  	0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,
  3352  	0x5f, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x67, 0x6e,
  3353  	0x6f, 0x72, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x62, 0x75, 0x69, 0x6c, 0x64,
  3354  	0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69,
  3355  	0x6d, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4f,
  3356  	0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x53, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6d, 0x65, 0x12,
  3357  	0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
  3358  	0x18, 0x38, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70,
  3359  	0x65, 0x72, 0x74, 0x79, 0x12, 0x55, 0x0a, 0x14, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x67, 0x61,
  3360  	0x74, 0x68, 0x65, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x01,
  3361  	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f,
  3362  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x47, 0x61, 0x74, 0x68, 0x65, 0x72,
  3363  	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x47, 0x61,
  3364  	0x74, 0x68, 0x65, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x99, 0x01, 0x0a, 0x0c,
  3365  	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05,
  3366  	0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62,
  3367  	0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x02,
  3368  	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x2f,
  3369  	0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
  3370  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e,
  3371  	0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12,
  3372  	0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75,
  3373  	0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6c,
  3374  	0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x73, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x41,
  3375  	0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x68, 0x6f,
  3376  	0x72, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73,
  3377  	0x68, 0x6f, 0x72, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70,
  3378  	0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
  3379  	0x00, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x42,
  3380  	0x1b, 0x0a, 0x19, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65,
  3381  	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x32, 0x0a, 0x08,
  3382  	0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
  3383  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
  3384  	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  3385  	0x1a, 0xc4, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63,
  3386  	0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18,
  3387  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3388  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x43, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  3389  	0x67, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53,
  3390  	0x0a, 0x12, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x63, 0x6f,
  3391  	0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x73,
  3392  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x73,
  3393  	0x75, 0x6c, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00,
  3394  	0x52, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e,
  3395  	0x66, 0x69, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x6f,
  3396  	0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10,
  3397  	0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x06, 0x22, 0x6d, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x73,
  3398  	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x4e, 0x41,
  3399  	0x4d, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
  3400  	0x12, 0x15, 0x0a, 0x11, 0x54, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x49,
  3401  	0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x53, 0x54, 0x53,
  3402  	0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12,
  3403  	0x15, 0x0a, 0x11, 0x54, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x50,
  3404  	0x50, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x22, 0xca, 0x01, 0x0a, 0x10, 0x46, 0x61, 0x6c, 0x6c, 0x62,
  3405  	0x61, 0x63, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x16, 0x46,
  3406  	0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47,
  3407  	0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x41, 0x4c, 0x4c, 0x42,
  3408  	0x41, 0x43, 0x4b, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x41, 0x54,
  3409  	0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f,
  3410  	0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x10,
  3411  	0x02, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x47, 0x52,
  3412  	0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x46,
  3413  	0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47,
  3414  	0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x46, 0x41, 0x4c, 0x4c,
  3415  	0x42, 0x41, 0x43, 0x4b, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f,
  3416  	0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55,
  3417  	0x45, 0x10, 0x05, 0x22, 0x48, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x72,
  3418  	0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52,
  3419  	0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
  3420  	0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x47, 0x52, 0x4f,
  3421  	0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x4a, 0x04, 0x08,
  3422  	0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x1c, 0x10, 0x1d, 0x4a,
  3423  	0x04, 0x08, 0x21, 0x10, 0x22, 0x4a, 0x04, 0x08, 0x28, 0x10, 0x29, 0x4a, 0x04, 0x08, 0x30, 0x10,
  3424  	0x31, 0x4a, 0x04, 0x08, 0x39, 0x10, 0x3c, 0x22, 0x82, 0x01, 0x0a, 0x09, 0x47, 0x43, 0x53, 0x43,
  3425  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x70, 0x72, 0x65,
  3426  	0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x63, 0x73, 0x50, 0x72,
  3427  	0x65, 0x66, 0x69, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x70,
  3428  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x75,
  3429  	0x62, 0x73, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x70,
  3430  	0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
  3431  	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62,
  3432  	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x11,
  3433  	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  3434  	0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
  3435  	0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71,
  3436  	0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72,
  3437  	0x79, 0x22, 0x20, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x47, 0x61, 0x74, 0x68, 0x65, 0x72,
  3438  	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08,
  3439  	0x02, 0x10, 0x03, 0x22, 0xb3, 0x01, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61,
  3440  	0x64, 0x61, 0x74, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74,
  3441  	0x65, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01,
  3442  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65,
  3443  	0x67, 0x65, 0x78, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
  3444  	0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x75, 0x67, 0x43,
  3445  	0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65,
  3446  	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x0e,
  3447  	0x0a, 0x02, 0x63, 0x63, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x63, 0x63, 0x12, 0x23,
  3448  	0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18,
  3449  	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65,
  3450  	0x67, 0x65, 0x78, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x9a, 0x07, 0x0a, 0x0e, 0x41, 0x75,
  3451  	0x74, 0x6f, 0x42, 0x75, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x16,
  3452  	0x62, 0x65, 0x74, 0x61, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x67, 0x5f, 0x63, 0x6f, 0x6d,
  3453  	0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x65,
  3454  	0x74, 0x61, 0x41, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
  3455  	0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65,
  3456  	0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x43, 0x6c, 0x6f, 0x73,
  3457  	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73,
  3458  	0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49,
  3459  	0x64, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03,
  3460  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  3461  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x75, 0x67, 0x4f, 0x70,
  3462  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08,
  3463  	0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x5f, 0x0a, 0x17, 0x68, 0x6f, 0x74, 0x6c,
  3464  	0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x6f, 0x75,
  3465  	0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74,
  3466  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x6f, 0x74, 0x6c,
  3467  	0x69, 0x73, 0x74, 0x49, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42,
  3468  	0x02, 0x18, 0x01, 0x52, 0x14, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x73, 0x46,
  3469  	0x72, 0x6f, 0x6d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x69, 0x6c,
  3470  	0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01,
  3471  	0x28, 0x08, 0x52, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75,
  3472  	0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x5f,
  3473  	0x61, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73,
  3474  	0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x67, 0x12,
  3475  	0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69,
  3476  	0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x62, 0x75, 0x67, 0x73, 0x18, 0x07,
  3477  	0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
  3478  	0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x42, 0x75, 0x67, 0x73, 0x12, 0x21,
  3479  	0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x18, 0x08,
  3480  	0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c,
  3481  	0x6c, 0x12, 0x67, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x65, 0x73,
  3482  	0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
  3483  	0x32, 0x33, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
  3484  	0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x75, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  3485  	0x73, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74,
  3486  	0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x65,
  3487  	0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x16, 0x61, 0x64,
  3488  	0x76, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61,
  3489  	0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x64, 0x76, 0x61,
  3490  	0x6e, 0x63, 0x65, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
  3491  	0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x18, 0x0c,
  3492  	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x6c, 0x65, 0x12,
  3493  	0x25, 0x0a, 0x0e, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c,
  3494  	0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4f,
  3495  	0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x0e,
  3496  	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x1a, 0x60, 0x0a, 0x13, 0x44, 0x65,
  3497  	0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
  3498  	0x61, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
  3499  	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d,
  3500  	0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18,
  3501  	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02,
  3502  	0x63, 0x63, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x63, 0x63, 0x22, 0x4c, 0x0a, 0x08,
  3503  	0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x49, 0x4f,
  3504  	0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
  3505  	0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x30, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x31,
  3506  	0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x32, 0x10, 0x03, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x33,
  3507  	0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x50, 0x34, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10,
  3508  	0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x22, 0x5a, 0x0a, 0x13, 0x48, 0x6f, 0x74, 0x6c, 0x69, 0x73,
  3509  	0x74, 0x49, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a,
  3510  	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05,
  3511  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02,
  3512  	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x13, 0x0a,
  3513  	0x11, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x6f, 0x75, 0x72,
  3514  	0x63, 0x65, 0x22, 0x88, 0x03, 0x0a, 0x09, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
  3515  	0x12, 0x42, 0x0a, 0x0d, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61,
  3516  	0x62, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  3517  	0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f,
  3518  	0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x52, 0x0c, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  3519  	0x64, 0x54, 0x61, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
  3520  	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69,
  3521  	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
  3522  	0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
  3523  	0x67, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d,
  3524  	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a,
  3525  	0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x05, 0x20, 0x01,
  3526  	0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x61, 0x62, 0x12, 0x32,
  3527  	0x0a, 0x15, 0x64, 0x6f, 0x77, 0x6e, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x69,
  3528  	0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64,
  3529  	0x6f, 0x77, 0x6e, 0x70, 0x6c, 0x61, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61,
  3530  	0x62, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f,
  3531  	0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x06, 0x20, 0x01,
  3532  	0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x14, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68,
  3533  	0x74, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x73, 0x12, 0x27, 0x0a, 0x0f,
  3534  	0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x18,
  3535  	0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74,
  3536  	0x54, 0x6f, 0x64, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
  3537  	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
  3538  	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x74, 0x0a,
  3539  	0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a,
  3540  	0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12,
  3541  	0x3e, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
  3542  	0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
  3543  	0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x65,
  3544  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
  3545  	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
  3546  	0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x13, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x70, 0x74, 0x69, 0x6f,
  3547  	0x6e, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
  3548  	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
  3549  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
  3550  	0x75, 0x65, 0x22, 0x8f, 0x0d, 0x0a, 0x0c, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
  3551  	0x54, 0x61, 0x62, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  3552  	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x5f,
  3553  	0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  3554  	0x52, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12,
  3555  	0x23, 0x0a, 0x0d, 0x62, 0x75, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
  3556  	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6f,
  3557  	0x6e, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x61,
  3558  	0x72, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
  3559  	0x63, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c,
  3560  	0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x5f, 0x72, 0x65,
  3561  	0x63, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x43,
  3562  	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c,
  3563  	0x62, 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01,
  3564  	0x28, 0x09, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
  3565  	0x4b, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x65, 0x6d,
  3566  	0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65,
  3567  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69,
  3568  	0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x10, 0x6f, 0x70, 0x65, 0x6e,
  3569  	0x54, 0x65, 0x73, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x11,
  3570  	0x66, 0x69, 0x6c, 0x65, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
  3571  	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  3572  	0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65,
  3573  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x75, 0x67, 0x54,
  3574  	0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x13, 0x61, 0x74, 0x74, 0x61, 0x63,
  3575  	0x68, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x09,
  3576  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  3577  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c,
  3578  	0x61, 0x74, 0x65, 0x52, 0x11, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x42, 0x75, 0x67, 0x54, 0x65,
  3579  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  3580  	0x73, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65,
  3581  	0x73, 0x75, 0x6c, 0x74, 0x73, 0x54, 0x65, 0x78, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x72, 0x65, 0x73,
  3582  	0x75, 0x6c, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
  3583  	0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  3584  	0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65,
  3585  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x12, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x55,
  3586  	0x72, 0x6c, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x18, 0x63, 0x6f,
  3587  	0x64, 0x65, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x65,
  3588  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74,
  3589  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c,
  3590  	0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x15, 0x63, 0x6f, 0x64,
  3591  	0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x72, 0x6c, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61,
  3592  	0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
  3593  	0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
  3594  	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x5f,
  3595  	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28,
  3596  	0x09, 0x52, 0x11, 0x74, 0x61, 0x62, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x52,
  3597  	0x65, 0x67, 0x65, 0x78, 0x12, 0x4e, 0x0a, 0x0d, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6f, 0x70,
  3598  	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x74, 0x65,
  3599  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61,
  3600  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f,
  3601  	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74,
  3602  	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6a, 0x0a, 0x17, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73,
  3603  	0x73, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
  3604  	0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3605  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  3606  	0x64, 0x54, 0x61, 0x62, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6c, 0x65,
  3607  	0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x15, 0x66, 0x6c, 0x61, 0x6b, 0x69,
  3608  	0x6e, 0x65, 0x73, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  3609  	0x12, 0x79, 0x0a, 0x1c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f,
  3610  	0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  3611  	0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  3612  	0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  3613  	0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f,
  3614  	0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
  3615  	0x1a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61,
  3616  	0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x61,
  3617  	0x62, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x75,
  3618  	0x72, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x44,
  3619  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x11, 0x6f,
  3620  	0x70, 0x65, 0x6e, 0x5f, 0x62, 0x75, 0x67, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
  3621  	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  3622  	0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d,
  3623  	0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x6e, 0x42, 0x75, 0x67, 0x54, 0x65,
  3624  	0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x66,
  3625  	0x69, 0x6c, 0x65, 0x5f, 0x62, 0x75, 0x67, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c,
  3626  	0x61, 0x75, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x75, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x12,
  3627  	0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x69,
  3628  	0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
  3629  	0x79, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x15, 0x63, 0x6f,
  3630  	0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x6e, 0x75, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
  3631  	0x61, 0x74, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74,
  3632  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x69, 0x6e, 0x6b,
  3633  	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
  3634  	0x74, 0x4d, 0x65, 0x6e, 0x75, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a,
  3635  	0x17, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74,
  3636  	0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15,
  3637  	0x62, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x68, 0x72, 0x65,
  3638  	0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x51, 0x0a, 0x14, 0x62, 0x65, 0x74, 0x61, 0x5f, 0x61, 0x75,
  3639  	0x74, 0x6f, 0x62, 0x75, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20,
  3640  	0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63,
  3641  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x75, 0x67, 0x4f, 0x70, 0x74,
  3642  	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x62, 0x65, 0x74, 0x61, 0x41, 0x75, 0x74, 0x6f, 0x62, 0x75,
  3643  	0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5e, 0x0a, 0x17, 0x68, 0x65, 0x61, 0x6c,
  3644  	0x74, 0x68, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69,
  3645  	0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74,
  3646  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, 0x6c,
  3647  	0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  3648  	0x73, 0x52, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  3649  	0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6c, 0x75,
  3650  	0x6d, 0x6e, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x65, 0x6d,
  3651  	0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74,
  3652  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c,
  3653  	0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x17, 0x63, 0x6f, 0x6c,
  3654  	0x75, 0x6d, 0x6e, 0x44, 0x69, 0x66, 0x66, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c,
  3655  	0x61, 0x74, 0x65, 0x73, 0x22, 0xd5, 0x03, 0x0a, 0x18, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  3656  	0x72, 0x64, 0x54, 0x61, 0x62, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  3657  	0x73, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65,
  3658  	0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x18, 0x01,
  3659  	0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x53, 0x74, 0x61, 0x6c, 0x65,
  3660  	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x6f, 0x75, 0x72, 0x73, 0x12, 0x31, 0x0a, 0x15,
  3661  	0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f,
  3662  	0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6e, 0x75, 0x6d,
  3663  	0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x54, 0x6f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12,
  3664  	0x35, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x6f,
  3665  	0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
  3666  	0x52, 0x14, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x54, 0x6f, 0x41, 0x64, 0x64,
  3667  	0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61,
  3668  	0x73, 0x73, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f,
  3669  	0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6e, 0x75, 0x6d,
  3670  	0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x54, 0x6f, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41,
  3671  	0x6c, 0x65, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18,
  3672  	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b,
  3673  	0x0a, 0x09, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28,
  3674  	0x09, 0x52, 0x08, 0x64, 0x65, 0x62, 0x75, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x64,
  3675  	0x65, 0x62, 0x75, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01,
  3676  	0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x62, 0x75, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
  3677  	0x12, 0x3d, 0x0a, 0x1b, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73,
  3678  	0x5f, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18,
  3679  	0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x77, 0x61, 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x75, 0x74,
  3680  	0x65, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12,
  3681  	0x3b, 0x0a, 0x1a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x66, 0x61,
  3682  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x09, 0x20,
  3683  	0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x46, 0x61,
  3684  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xad, 0x02, 0x0a,
  3685  	0x21, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x46, 0x6c, 0x61,
  3686  	0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f,
  3687  	0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x66, 0x6c,
  3688  	0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74,
  3689  	0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x46,
  3690  	0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12,
  3691  	0x35, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x6f,
  3692  	0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  3693  	0x52, 0x14, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x54, 0x6f, 0x41, 0x64, 0x64,
  3694  	0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
  3695  	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
  3696  	0x12, 0x3d, 0x0a, 0x1b, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73,
  3697  	0x5f, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x18,
  3698  	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x77, 0x61, 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x75, 0x74,
  3699  	0x65, 0x73, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x73, 0x12,
  3700  	0x3b, 0x0a, 0x1a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x66, 0x61,
  3701  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20,
  3702  	0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x69, 0x6c, 0x46, 0x61,
  3703  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x80, 0x03, 0x0a,
  3704  	0x26, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61,
  3705  	0x74, 0x75, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  3706  	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x61,
  3707  	0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e,
  3708  	0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x41, 0x63,
  3709  	0x63, 0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73,
  3710  	0x73, 0x12, 0x7d, 0x0a, 0x15, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x73,
  3711  	0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e,
  3712  	0x32, 0x49, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
  3713  	0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x53,
  3714  	0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
  3715  	0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65,
  3716  	0x64, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x69, 0x67, 0x6e,
  3717  	0x6f, 0x72, 0x65, 0x64, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73,
  3718  	0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62,
  3719  	0x6c, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d,
  3720  	0x69, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x73,
  3721  	0x22, 0x6d, 0x0a, 0x11, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x64, 0x54, 0x65, 0x73, 0x74, 0x53,
  3722  	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x53, 0x54,
  3723  	0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
  3724  	0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x49, 0x5a, 0x45,
  3725  	0x44, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
  3726  	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c,
  3727  	0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x04, 0x22,
  3728  	0x6f, 0x0a, 0x0e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75,
  3729  	0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  3730  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  3731  	0x72, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e,
  3732  	0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20,
  3733  	0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
  3734  	0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  3735  	0x22, 0xd4, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
  3736  	0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
  3737  	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  3738  	0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72,
  3739  	0x6f, 0x75, 0x70, 0x52, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12,
  3740  	0x3a, 0x0a, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20,
  3741  	0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63,
  3742  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52,
  3743  	0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x64,
  3744  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
  3745  	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  3746  	0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  3747  	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  3748  	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0xd2, 0x01, 0x0a, 0x15, 0x48, 0x65, 0x61, 0x6c,
  3749  	0x74, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
  3750  	0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  3751  	0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x64, 0x61, 0x79,
  3752  	0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20,
  3753  	0x01, 0x28, 0x05, 0x52, 0x0e, 0x64, 0x61, 0x79, 0x73, 0x4f, 0x66, 0x41, 0x6e, 0x61, 0x6c, 0x79,
  3754  	0x73, 0x69, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x73, 0x63, 0x68,
  3755  	0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6d, 0x61,
  3756  	0x69, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6d,
  3757  	0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04,
  3758  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x63, 0x69, 0x70,
  3759  	0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e,
  3760  	0x67, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67,
  3761  	0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x65, 0x78, 0x22, 0xbb, 0x01, 0x0a,
  3762  	0x14, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
  3763  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
  3764  	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
  3765  	0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f, 0x6e,
  3766  	0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x02, 0x18,
  3767  	0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72,
  3768  	0x6f, 0x75, 0x70, 0x12, 0x55, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64,
  3769  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x18, 0x02, 0x20, 0x01,
  3770  	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x63, 0x6f,
  3771  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61,
  3772  	0x62, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x61,
  3773  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69,
  3774  	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43,
  3775  	0x6c, 0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x73,
  3776  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62,
  3777  	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  3778  }
  3779  
  3780  var (
  3781  	file_config_proto_rawDescOnce sync.Once
  3782  	file_config_proto_rawDescData = file_config_proto_rawDesc
  3783  )
  3784  
  3785  func file_config_proto_rawDescGZIP() []byte {
  3786  	file_config_proto_rawDescOnce.Do(func() {
  3787  		file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData)
  3788  	})
  3789  	return file_config_proto_rawDescData
  3790  }
  3791  
  3792  var file_config_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
  3793  var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
  3794  var file_config_proto_goTypes = []interface{}{
  3795  	(TestGroup_TestsName)(0),                                      // 0: testgrid.config.TestGroup.TestsName
  3796  	(TestGroup_FallbackGrouping)(0),                               // 1: testgrid.config.TestGroup.FallbackGrouping
  3797  	(TestGroup_PrimaryGrouping)(0),                                // 2: testgrid.config.TestGroup.PrimaryGrouping
  3798  	(AutoBugOptions_Priority)(0),                                  // 3: testgrid.config.AutoBugOptions.Priority
  3799  	(DashboardTabStatusCustomizationOptions_IgnoredTestStatus)(0), // 4: testgrid.config.DashboardTabStatusCustomizationOptions.IgnoredTestStatus
  3800  	(*TestNameConfig)(nil),                                        // 5: testgrid.config.TestNameConfig
  3801  	(*Notification)(nil),                                          // 6: testgrid.config.Notification
  3802  	(*TestGroup)(nil),                                             // 7: testgrid.config.TestGroup
  3803  	(*GCSConfig)(nil),                                             // 8: testgrid.config.GCSConfig
  3804  	(*ResultStoreConfig)(nil),                                     // 9: testgrid.config.ResultStoreConfig
  3805  	(*IssueGatherOptions)(nil),                                    // 10: testgrid.config.IssueGatherOptions
  3806  	(*TestMetadataOptions)(nil),                                   // 11: testgrid.config.TestMetadataOptions
  3807  	(*AutoBugOptions)(nil),                                        // 12: testgrid.config.AutoBugOptions
  3808  	(*HotlistIdFromSource)(nil),                                   // 13: testgrid.config.HotlistIdFromSource
  3809  	(*Dashboard)(nil),                                             // 14: testgrid.config.Dashboard
  3810  	(*LinkTemplate)(nil),                                          // 15: testgrid.config.LinkTemplate
  3811  	(*LinkOptionsTemplate)(nil),                                   // 16: testgrid.config.LinkOptionsTemplate
  3812  	(*DashboardTab)(nil),                                          // 17: testgrid.config.DashboardTab
  3813  	(*DashboardTabAlertOptions)(nil),                              // 18: testgrid.config.DashboardTabAlertOptions
  3814  	(*DashboardTabFlakinessAlertOptions)(nil),                     // 19: testgrid.config.DashboardTabFlakinessAlertOptions
  3815  	(*DashboardTabStatusCustomizationOptions)(nil),                // 20: testgrid.config.DashboardTabStatusCustomizationOptions
  3816  	(*DashboardGroup)(nil),                                        // 21: testgrid.config.DashboardGroup
  3817  	(*Configuration)(nil),                                         // 22: testgrid.config.Configuration
  3818  	(*HealthAnalysisOptions)(nil),                                 // 23: testgrid.config.HealthAnalysisOptions
  3819  	(*DefaultConfiguration)(nil),                                  // 24: testgrid.config.DefaultConfiguration
  3820  	(*TestNameConfig_NameElement)(nil),                            // 25: testgrid.config.TestNameConfig.NameElement
  3821  	(*TestGroup_ColumnHeader)(nil),                                // 26: testgrid.config.TestGroup.ColumnHeader
  3822  	(*TestGroup_TestAnnotation)(nil),                              // 27: testgrid.config.TestGroup.TestAnnotation
  3823  	(*TestGroup_KeyValue)(nil),                                    // 28: testgrid.config.TestGroup.KeyValue
  3824  	(*TestGroup_ResultSource)(nil),                                // 29: testgrid.config.TestGroup.ResultSource
  3825  	(*AutoBugOptions_DefaultTestMetadata)(nil),                    // 30: testgrid.config.AutoBugOptions.DefaultTestMetadata
  3826  	(*custom_evaluator.RuleSet)(nil),                              // 31: testgrid.custom_evaluator.RuleSet
  3827  }
  3828  var file_config_proto_depIdxs = []int32{
  3829  	25, // 0: testgrid.config.TestNameConfig.name_elements:type_name -> testgrid.config.TestNameConfig.NameElement
  3830  	0,  // 1: testgrid.config.TestGroup.tests_name_policy:type_name -> testgrid.config.TestGroup.TestsName
  3831  	26, // 2: testgrid.config.TestGroup.column_header:type_name -> testgrid.config.TestGroup.ColumnHeader
  3832  	1,  // 3: testgrid.config.TestGroup.fallback_grouping:type_name -> testgrid.config.TestGroup.FallbackGrouping
  3833  	5,  // 4: testgrid.config.TestGroup.test_name_config:type_name -> testgrid.config.TestNameConfig
  3834  	6,  // 5: testgrid.config.TestGroup.notifications:type_name -> testgrid.config.Notification
  3835  	2,  // 6: testgrid.config.TestGroup.primary_grouping:type_name -> testgrid.config.TestGroup.PrimaryGrouping
  3836  	27, // 7: testgrid.config.TestGroup.test_annotations:type_name -> testgrid.config.TestGroup.TestAnnotation
  3837  	11, // 8: testgrid.config.TestGroup.test_metadata_options:type_name -> testgrid.config.TestMetadataOptions
  3838  	12, // 9: testgrid.config.TestGroup.auto_bug_options:type_name -> testgrid.config.AutoBugOptions
  3839  	28, // 10: testgrid.config.TestGroup.test_method_properties:type_name -> testgrid.config.TestGroup.KeyValue
  3840  	29, // 11: testgrid.config.TestGroup.result_source:type_name -> testgrid.config.TestGroup.ResultSource
  3841  	31, // 12: testgrid.config.TestGroup.custom_evaluator_rule_set:type_name -> testgrid.custom_evaluator.RuleSet
  3842  	10, // 13: testgrid.config.TestGroup.issue_gather_options:type_name -> testgrid.config.IssueGatherOptions
  3843  	3,  // 14: testgrid.config.AutoBugOptions.priority:type_name -> testgrid.config.AutoBugOptions.Priority
  3844  	13, // 15: testgrid.config.AutoBugOptions.hotlist_ids_from_source:type_name -> testgrid.config.HotlistIdFromSource
  3845  	30, // 16: testgrid.config.AutoBugOptions.default_test_metadata:type_name -> testgrid.config.AutoBugOptions.DefaultTestMetadata
  3846  	17, // 17: testgrid.config.Dashboard.dashboard_tab:type_name -> testgrid.config.DashboardTab
  3847  	6,  // 18: testgrid.config.Dashboard.notifications:type_name -> testgrid.config.Notification
  3848  	16, // 19: testgrid.config.LinkTemplate.options:type_name -> testgrid.config.LinkOptionsTemplate
  3849  	15, // 20: testgrid.config.DashboardTab.open_test_template:type_name -> testgrid.config.LinkTemplate
  3850  	15, // 21: testgrid.config.DashboardTab.file_bug_template:type_name -> testgrid.config.LinkTemplate
  3851  	15, // 22: testgrid.config.DashboardTab.attach_bug_template:type_name -> testgrid.config.LinkTemplate
  3852  	15, // 23: testgrid.config.DashboardTab.results_url_template:type_name -> testgrid.config.LinkTemplate
  3853  	15, // 24: testgrid.config.DashboardTab.code_search_url_template:type_name -> testgrid.config.LinkTemplate
  3854  	18, // 25: testgrid.config.DashboardTab.alert_options:type_name -> testgrid.config.DashboardTabAlertOptions
  3855  	19, // 26: testgrid.config.DashboardTab.flakiness_alert_options:type_name -> testgrid.config.DashboardTabFlakinessAlertOptions
  3856  	20, // 27: testgrid.config.DashboardTab.status_customization_options:type_name -> testgrid.config.DashboardTabStatusCustomizationOptions
  3857  	15, // 28: testgrid.config.DashboardTab.open_bug_template:type_name -> testgrid.config.LinkTemplate
  3858  	15, // 29: testgrid.config.DashboardTab.context_menu_template:type_name -> testgrid.config.LinkTemplate
  3859  	12, // 30: testgrid.config.DashboardTab.beta_autobug_options:type_name -> testgrid.config.AutoBugOptions
  3860  	23, // 31: testgrid.config.DashboardTab.health_analysis_options:type_name -> testgrid.config.HealthAnalysisOptions
  3861  	15, // 32: testgrid.config.DashboardTab.column_diff_link_templates:type_name -> testgrid.config.LinkTemplate
  3862  	4,  // 33: testgrid.config.DashboardTabStatusCustomizationOptions.ignored_test_statuses:type_name -> testgrid.config.DashboardTabStatusCustomizationOptions.IgnoredTestStatus
  3863  	7,  // 34: testgrid.config.Configuration.test_groups:type_name -> testgrid.config.TestGroup
  3864  	14, // 35: testgrid.config.Configuration.dashboards:type_name -> testgrid.config.Dashboard
  3865  	21, // 36: testgrid.config.Configuration.dashboard_groups:type_name -> testgrid.config.DashboardGroup
  3866  	7,  // 37: testgrid.config.DefaultConfiguration.default_test_group:type_name -> testgrid.config.TestGroup
  3867  	17, // 38: testgrid.config.DefaultConfiguration.default_dashboard_tab:type_name -> testgrid.config.DashboardTab
  3868  	8,  // 39: testgrid.config.TestGroup.ResultSource.gcs_config:type_name -> testgrid.config.GCSConfig
  3869  	9,  // 40: testgrid.config.TestGroup.ResultSource.resultstore_config:type_name -> testgrid.config.ResultStoreConfig
  3870  	41, // [41:41] is the sub-list for method output_type
  3871  	41, // [41:41] is the sub-list for method input_type
  3872  	41, // [41:41] is the sub-list for extension type_name
  3873  	41, // [41:41] is the sub-list for extension extendee
  3874  	0,  // [0:41] is the sub-list for field type_name
  3875  }
  3876  
  3877  func init() { file_config_proto_init() }
  3878  func file_config_proto_init() {
  3879  	if File_config_proto != nil {
  3880  		return
  3881  	}
  3882  	if !protoimpl.UnsafeEnabled {
  3883  		file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  3884  			switch v := v.(*TestNameConfig); i {
  3885  			case 0:
  3886  				return &v.state
  3887  			case 1:
  3888  				return &v.sizeCache
  3889  			case 2:
  3890  				return &v.unknownFields
  3891  			default:
  3892  				return nil
  3893  			}
  3894  		}
  3895  		file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  3896  			switch v := v.(*Notification); i {
  3897  			case 0:
  3898  				return &v.state
  3899  			case 1:
  3900  				return &v.sizeCache
  3901  			case 2:
  3902  				return &v.unknownFields
  3903  			default:
  3904  				return nil
  3905  			}
  3906  		}
  3907  		file_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  3908  			switch v := v.(*TestGroup); i {
  3909  			case 0:
  3910  				return &v.state
  3911  			case 1:
  3912  				return &v.sizeCache
  3913  			case 2:
  3914  				return &v.unknownFields
  3915  			default:
  3916  				return nil
  3917  			}
  3918  		}
  3919  		file_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  3920  			switch v := v.(*GCSConfig); i {
  3921  			case 0:
  3922  				return &v.state
  3923  			case 1:
  3924  				return &v.sizeCache
  3925  			case 2:
  3926  				return &v.unknownFields
  3927  			default:
  3928  				return nil
  3929  			}
  3930  		}
  3931  		file_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  3932  			switch v := v.(*ResultStoreConfig); i {
  3933  			case 0:
  3934  				return &v.state
  3935  			case 1:
  3936  				return &v.sizeCache
  3937  			case 2:
  3938  				return &v.unknownFields
  3939  			default:
  3940  				return nil
  3941  			}
  3942  		}
  3943  		file_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  3944  			switch v := v.(*IssueGatherOptions); i {
  3945  			case 0:
  3946  				return &v.state
  3947  			case 1:
  3948  				return &v.sizeCache
  3949  			case 2:
  3950  				return &v.unknownFields
  3951  			default:
  3952  				return nil
  3953  			}
  3954  		}
  3955  		file_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  3956  			switch v := v.(*TestMetadataOptions); i {
  3957  			case 0:
  3958  				return &v.state
  3959  			case 1:
  3960  				return &v.sizeCache
  3961  			case 2:
  3962  				return &v.unknownFields
  3963  			default:
  3964  				return nil
  3965  			}
  3966  		}
  3967  		file_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  3968  			switch v := v.(*AutoBugOptions); i {
  3969  			case 0:
  3970  				return &v.state
  3971  			case 1:
  3972  				return &v.sizeCache
  3973  			case 2:
  3974  				return &v.unknownFields
  3975  			default:
  3976  				return nil
  3977  			}
  3978  		}
  3979  		file_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  3980  			switch v := v.(*HotlistIdFromSource); i {
  3981  			case 0:
  3982  				return &v.state
  3983  			case 1:
  3984  				return &v.sizeCache
  3985  			case 2:
  3986  				return &v.unknownFields
  3987  			default:
  3988  				return nil
  3989  			}
  3990  		}
  3991  		file_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  3992  			switch v := v.(*Dashboard); i {
  3993  			case 0:
  3994  				return &v.state
  3995  			case 1:
  3996  				return &v.sizeCache
  3997  			case 2:
  3998  				return &v.unknownFields
  3999  			default:
  4000  				return nil
  4001  			}
  4002  		}
  4003  		file_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  4004  			switch v := v.(*LinkTemplate); i {
  4005  			case 0:
  4006  				return &v.state
  4007  			case 1:
  4008  				return &v.sizeCache
  4009  			case 2:
  4010  				return &v.unknownFields
  4011  			default:
  4012  				return nil
  4013  			}
  4014  		}
  4015  		file_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  4016  			switch v := v.(*LinkOptionsTemplate); i {
  4017  			case 0:
  4018  				return &v.state
  4019  			case 1:
  4020  				return &v.sizeCache
  4021  			case 2:
  4022  				return &v.unknownFields
  4023  			default:
  4024  				return nil
  4025  			}
  4026  		}
  4027  		file_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  4028  			switch v := v.(*DashboardTab); i {
  4029  			case 0:
  4030  				return &v.state
  4031  			case 1:
  4032  				return &v.sizeCache
  4033  			case 2:
  4034  				return &v.unknownFields
  4035  			default:
  4036  				return nil
  4037  			}
  4038  		}
  4039  		file_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  4040  			switch v := v.(*DashboardTabAlertOptions); i {
  4041  			case 0:
  4042  				return &v.state
  4043  			case 1:
  4044  				return &v.sizeCache
  4045  			case 2:
  4046  				return &v.unknownFields
  4047  			default:
  4048  				return nil
  4049  			}
  4050  		}
  4051  		file_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  4052  			switch v := v.(*DashboardTabFlakinessAlertOptions); i {
  4053  			case 0:
  4054  				return &v.state
  4055  			case 1:
  4056  				return &v.sizeCache
  4057  			case 2:
  4058  				return &v.unknownFields
  4059  			default:
  4060  				return nil
  4061  			}
  4062  		}
  4063  		file_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  4064  			switch v := v.(*DashboardTabStatusCustomizationOptions); i {
  4065  			case 0:
  4066  				return &v.state
  4067  			case 1:
  4068  				return &v.sizeCache
  4069  			case 2:
  4070  				return &v.unknownFields
  4071  			default:
  4072  				return nil
  4073  			}
  4074  		}
  4075  		file_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  4076  			switch v := v.(*DashboardGroup); i {
  4077  			case 0:
  4078  				return &v.state
  4079  			case 1:
  4080  				return &v.sizeCache
  4081  			case 2:
  4082  				return &v.unknownFields
  4083  			default:
  4084  				return nil
  4085  			}
  4086  		}
  4087  		file_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  4088  			switch v := v.(*Configuration); i {
  4089  			case 0:
  4090  				return &v.state
  4091  			case 1:
  4092  				return &v.sizeCache
  4093  			case 2:
  4094  				return &v.unknownFields
  4095  			default:
  4096  				return nil
  4097  			}
  4098  		}
  4099  		file_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  4100  			switch v := v.(*HealthAnalysisOptions); i {
  4101  			case 0:
  4102  				return &v.state
  4103  			case 1:
  4104  				return &v.sizeCache
  4105  			case 2:
  4106  				return &v.unknownFields
  4107  			default:
  4108  				return nil
  4109  			}
  4110  		}
  4111  		file_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  4112  			switch v := v.(*DefaultConfiguration); i {
  4113  			case 0:
  4114  				return &v.state
  4115  			case 1:
  4116  				return &v.sizeCache
  4117  			case 2:
  4118  				return &v.unknownFields
  4119  			default:
  4120  				return nil
  4121  			}
  4122  		}
  4123  		file_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  4124  			switch v := v.(*TestNameConfig_NameElement); i {
  4125  			case 0:
  4126  				return &v.state
  4127  			case 1:
  4128  				return &v.sizeCache
  4129  			case 2:
  4130  				return &v.unknownFields
  4131  			default:
  4132  				return nil
  4133  			}
  4134  		}
  4135  		file_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  4136  			switch v := v.(*TestGroup_ColumnHeader); i {
  4137  			case 0:
  4138  				return &v.state
  4139  			case 1:
  4140  				return &v.sizeCache
  4141  			case 2:
  4142  				return &v.unknownFields
  4143  			default:
  4144  				return nil
  4145  			}
  4146  		}
  4147  		file_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  4148  			switch v := v.(*TestGroup_TestAnnotation); i {
  4149  			case 0:
  4150  				return &v.state
  4151  			case 1:
  4152  				return &v.sizeCache
  4153  			case 2:
  4154  				return &v.unknownFields
  4155  			default:
  4156  				return nil
  4157  			}
  4158  		}
  4159  		file_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  4160  			switch v := v.(*TestGroup_KeyValue); i {
  4161  			case 0:
  4162  				return &v.state
  4163  			case 1:
  4164  				return &v.sizeCache
  4165  			case 2:
  4166  				return &v.unknownFields
  4167  			default:
  4168  				return nil
  4169  			}
  4170  		}
  4171  		file_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  4172  			switch v := v.(*TestGroup_ResultSource); i {
  4173  			case 0:
  4174  				return &v.state
  4175  			case 1:
  4176  				return &v.sizeCache
  4177  			case 2:
  4178  				return &v.unknownFields
  4179  			default:
  4180  				return nil
  4181  			}
  4182  		}
  4183  		file_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  4184  			switch v := v.(*AutoBugOptions_DefaultTestMetadata); i {
  4185  			case 0:
  4186  				return &v.state
  4187  			case 1:
  4188  				return &v.sizeCache
  4189  			case 2:
  4190  				return &v.unknownFields
  4191  			default:
  4192  				return nil
  4193  			}
  4194  		}
  4195  	}
  4196  	file_config_proto_msgTypes[8].OneofWrappers = []interface{}{
  4197  		(*HotlistIdFromSource_Value)(nil),
  4198  		(*HotlistIdFromSource_Label)(nil),
  4199  	}
  4200  	file_config_proto_msgTypes[22].OneofWrappers = []interface{}{
  4201  		(*TestGroup_TestAnnotation_PropertyName)(nil),
  4202  	}
  4203  	file_config_proto_msgTypes[24].OneofWrappers = []interface{}{
  4204  		(*TestGroup_ResultSource_GcsConfig)(nil),
  4205  		(*TestGroup_ResultSource_ResultstoreConfig)(nil),
  4206  	}
  4207  	type x struct{}
  4208  	out := protoimpl.TypeBuilder{
  4209  		File: protoimpl.DescBuilder{
  4210  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  4211  			RawDescriptor: file_config_proto_rawDesc,
  4212  			NumEnums:      5,
  4213  			NumMessages:   26,
  4214  			NumExtensions: 0,
  4215  			NumServices:   0,
  4216  		},
  4217  		GoTypes:           file_config_proto_goTypes,
  4218  		DependencyIndexes: file_config_proto_depIdxs,
  4219  		EnumInfos:         file_config_proto_enumTypes,
  4220  		MessageInfos:      file_config_proto_msgTypes,
  4221  	}.Build()
  4222  	File_config_proto = out.File
  4223  	file_config_proto_rawDesc = nil
  4224  	file_config_proto_goTypes = nil
  4225  	file_config_proto_depIdxs = nil
  4226  }