go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/proto/bq/test_verdict_row.pb.go (about)

     1  // Copyright 2023 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.31.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/analysis/proto/bq/test_verdict_row.proto
    20  
    21  package bqpb
    22  
    23  import (
    24  	v1 "go.chromium.org/luci/analysis/proto/v1"
    25  	_ "go.chromium.org/luci/common/bq/pb"
    26  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    27  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    28  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    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  // Represents a test verdict exported to BigQuery.
    41  //
    42  // A test verdict summarises the results for a test variant
    43  // (a way of running a test) in an invocation (a container of test
    44  // results, such as a build).
    45  //
    46  // BigQuery tables using this schema will use the following settings:
    47  //   - Partition by TIMESTAMP_TRUNC(partition_time, DAY),
    48  //     retain data for 540 days.
    49  //   - Cluster by project, test_id.
    50  //
    51  // NextId: 17
    52  type TestVerdictRow struct {
    53  	state         protoimpl.MessageState
    54  	sizeCache     protoimpl.SizeCache
    55  	unknownFields protoimpl.UnknownFields
    56  
    57  	// The LUCI Project. E.g. "chromium".
    58  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
    59  	// Is a unique identifier of the test in a LUCI project.
    60  	// Refer to TestResult.test_id for details.
    61  	TestId string `protobuf:"bytes,2,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
    62  	// Describes one specific way of running the test,
    63  	// e.g. a specific bucket, builder and a test suite.
    64  	//
    65  	// This will be encoded as a JSON object like
    66  	// {"builder":"linux-rel","os":"Ubuntu-18.04",...}
    67  	// to take advantage of BigQuery's JSON support, so that
    68  	// the query will only be billed for the variant
    69  	// keys it reads.
    70  	//
    71  	// In the protocol buffer, it must be a string as per
    72  	// https://cloud.google.com/bigquery/docs/write-api#data_type_conversions
    73  	Variant string `protobuf:"bytes,3,opt,name=variant,proto3" json:"variant,omitempty"`
    74  	// A hash of the variant, encoded as lowercase hexadecimal characters.
    75  	// The computation is an implementation detail of ResultDB.
    76  	VariantHash string `protobuf:"bytes,4,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
    77  	// Invocation is the ResultDB invocation.
    78  	//
    79  	// This the top-level invocation for the test results of the verdict;
    80  	// individual test results may not have been directly uploaded to
    81  	// this invocation, but rather its included invocations. For example,
    82  	// the top-level invocation may be a build, which includes multiple
    83  	// invocations for swarming tasks within that build. The test results
    84  	// that form part of this verdict may actually have been uploaded to
    85  	// the invocations of those swarming tasks.
    86  	Invocation *TestVerdictRow_InvocationRecord `protobuf:"bytes,5,opt,name=invocation,proto3" json:"invocation,omitempty"`
    87  	// Partition_time is used to partition the table.
    88  	// It is the time when exported invocation was created in Spanner.
    89  	// Note: it is NOT the time when the row is inserted into BigQuery table.
    90  	// https://cloud.google.com/bigquery/docs/creating-column-partitions#limitations
    91  	// mentions "The partitioning column must be a top-level field."
    92  	// So we keep this column here instead of adding the CreateTime to InvocationRecord.
    93  	PartitionTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=partition_time,json=partitionTime,proto3" json:"partition_time,omitempty"`
    94  	// Status of the test verdict. E.g. EXPECTED, UNEXPECTED, FLAKY,
    95  	// UNEXPECTEDLY_SKIPPED, EXONERATED.
    96  	Status v1.TestVerdictStatus `protobuf:"varint,7,opt,name=status,proto3,enum=luci.analysis.v1.TestVerdictStatus" json:"status,omitempty"`
    97  	// The test results that are part of the verdict. Usually there is
    98  	// only one test result per verdict, but in case of retries there
    99  	// may be more.
   100  	Results []*TestVerdictRow_TestResult `protobuf:"bytes,8,rep,name=results,proto3" json:"results,omitempty"`
   101  	// The exoneration(s) recorded against the verdict.
   102  	//
   103  	// To determine if a verdict has an exoneration at all in a query,
   104  	// use `ARRAY_LENGTH(exonerations) > 0`.
   105  	Exonerations []*TestVerdictRow_Exoneration `protobuf:"bytes,9,rep,name=exonerations,proto3" json:"exonerations,omitempty"`
   106  	// Statistics about the test results that are part of the verdict.
   107  	Counts *TestVerdictRow_Counts `protobuf:"bytes,10,opt,name=counts,proto3" json:"counts,omitempty"`
   108  	// The buildbucket build the results were collected as part of, if any.
   109  	BuildbucketBuild *TestVerdictRow_BuildbucketBuild `protobuf:"bytes,11,opt,name=buildbucket_build,json=buildbucketBuild,proto3" json:"buildbucket_build,omitempty"`
   110  	// The original presubmit run the results were collected as part of, if any.
   111  	ChangeVerifierRun *TestVerdictRow_ChangeVerifierRun `protobuf:"bytes,12,opt,name=change_verifier_run,json=changeVerifierRun,proto3" json:"change_verifier_run,omitempty"`
   112  	// The code sources tested. Obtained from one of the verdict's test results.
   113  	// If the invocation which contained the test result
   114  	// specified that code sources directly, this is those sources.
   115  	// If the code sources were marked as are inherited from the including
   116  	// invocation, this is the resolved code sources (if they could be resolved).
   117  	// Unset otherwise.
   118  	Sources *v1.Sources `protobuf:"bytes,13,opt,name=sources,proto3" json:"sources,omitempty"`
   119  	// The branch in source control that was tested, if known.
   120  	// For example, the `refs/heads/main` branch in the `chromium/src` repo
   121  	// hosted by `chromium.googlesource.com`.
   122  	// This is a subset of the information in the `sources` field.
   123  	SourceRef *v1.SourceRef `protobuf:"bytes,15,opt,name=source_ref,json=sourceRef,proto3" json:"source_ref,omitempty"`
   124  	// Hash of the source_ref field, as 16 lowercase hexadecimal characters.
   125  	// Can be used to uniquely identify a branch in a source code
   126  	// version control system.
   127  	SourceRefHash string `protobuf:"bytes,16,opt,name=source_ref_hash,json=sourceRefHash,proto3" json:"source_ref_hash,omitempty"`
   128  	// Metadata of the test case,
   129  	// e.g. the original test name and test location.
   130  	TestMetadata *v1.TestMetadata `protobuf:"bytes,14,opt,name=test_metadata,json=testMetadata,proto3" json:"test_metadata,omitempty"`
   131  }
   132  
   133  func (x *TestVerdictRow) Reset() {
   134  	*x = TestVerdictRow{}
   135  	if protoimpl.UnsafeEnabled {
   136  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[0]
   137  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   138  		ms.StoreMessageInfo(mi)
   139  	}
   140  }
   141  
   142  func (x *TestVerdictRow) String() string {
   143  	return protoimpl.X.MessageStringOf(x)
   144  }
   145  
   146  func (*TestVerdictRow) ProtoMessage() {}
   147  
   148  func (x *TestVerdictRow) ProtoReflect() protoreflect.Message {
   149  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[0]
   150  	if protoimpl.UnsafeEnabled && x != nil {
   151  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   152  		if ms.LoadMessageInfo() == nil {
   153  			ms.StoreMessageInfo(mi)
   154  		}
   155  		return ms
   156  	}
   157  	return mi.MessageOf(x)
   158  }
   159  
   160  // Deprecated: Use TestVerdictRow.ProtoReflect.Descriptor instead.
   161  func (*TestVerdictRow) Descriptor() ([]byte, []int) {
   162  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0}
   163  }
   164  
   165  func (x *TestVerdictRow) GetProject() string {
   166  	if x != nil {
   167  		return x.Project
   168  	}
   169  	return ""
   170  }
   171  
   172  func (x *TestVerdictRow) GetTestId() string {
   173  	if x != nil {
   174  		return x.TestId
   175  	}
   176  	return ""
   177  }
   178  
   179  func (x *TestVerdictRow) GetVariant() string {
   180  	if x != nil {
   181  		return x.Variant
   182  	}
   183  	return ""
   184  }
   185  
   186  func (x *TestVerdictRow) GetVariantHash() string {
   187  	if x != nil {
   188  		return x.VariantHash
   189  	}
   190  	return ""
   191  }
   192  
   193  func (x *TestVerdictRow) GetInvocation() *TestVerdictRow_InvocationRecord {
   194  	if x != nil {
   195  		return x.Invocation
   196  	}
   197  	return nil
   198  }
   199  
   200  func (x *TestVerdictRow) GetPartitionTime() *timestamppb.Timestamp {
   201  	if x != nil {
   202  		return x.PartitionTime
   203  	}
   204  	return nil
   205  }
   206  
   207  func (x *TestVerdictRow) GetStatus() v1.TestVerdictStatus {
   208  	if x != nil {
   209  		return x.Status
   210  	}
   211  	return v1.TestVerdictStatus(0)
   212  }
   213  
   214  func (x *TestVerdictRow) GetResults() []*TestVerdictRow_TestResult {
   215  	if x != nil {
   216  		return x.Results
   217  	}
   218  	return nil
   219  }
   220  
   221  func (x *TestVerdictRow) GetExonerations() []*TestVerdictRow_Exoneration {
   222  	if x != nil {
   223  		return x.Exonerations
   224  	}
   225  	return nil
   226  }
   227  
   228  func (x *TestVerdictRow) GetCounts() *TestVerdictRow_Counts {
   229  	if x != nil {
   230  		return x.Counts
   231  	}
   232  	return nil
   233  }
   234  
   235  func (x *TestVerdictRow) GetBuildbucketBuild() *TestVerdictRow_BuildbucketBuild {
   236  	if x != nil {
   237  		return x.BuildbucketBuild
   238  	}
   239  	return nil
   240  }
   241  
   242  func (x *TestVerdictRow) GetChangeVerifierRun() *TestVerdictRow_ChangeVerifierRun {
   243  	if x != nil {
   244  		return x.ChangeVerifierRun
   245  	}
   246  	return nil
   247  }
   248  
   249  func (x *TestVerdictRow) GetSources() *v1.Sources {
   250  	if x != nil {
   251  		return x.Sources
   252  	}
   253  	return nil
   254  }
   255  
   256  func (x *TestVerdictRow) GetSourceRef() *v1.SourceRef {
   257  	if x != nil {
   258  		return x.SourceRef
   259  	}
   260  	return nil
   261  }
   262  
   263  func (x *TestVerdictRow) GetSourceRefHash() string {
   264  	if x != nil {
   265  		return x.SourceRefHash
   266  	}
   267  	return ""
   268  }
   269  
   270  func (x *TestVerdictRow) GetTestMetadata() *v1.TestMetadata {
   271  	if x != nil {
   272  		return x.TestMetadata
   273  	}
   274  	return nil
   275  }
   276  
   277  type TestVerdictRow_InvocationRecord struct {
   278  	state         protoimpl.MessageState
   279  	sizeCache     protoimpl.SizeCache
   280  	unknownFields protoimpl.UnknownFields
   281  
   282  	// The ID of the invocation.
   283  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   284  	// Tags represents Invocation-level string key-value pairs.
   285  	// A key can be repeated.
   286  	Tags []*v1.StringPair `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
   287  	// The LUCI Realm the invocation exists under.
   288  	// For example, "chromium:try".
   289  	Realm string `protobuf:"bytes,3,opt,name=realm,proto3" json:"realm,omitempty"`
   290  	// Arbitrary JSON object that contains structured, domain-specific properties
   291  	// of the invocation. Stored here stringified as this is the only protocol
   292  	// buffer type that maps to the JSON BigQuery type:
   293  	// https://cloud.google.com/bigquery/docs/write-api#data_type_conversions
   294  	Properties string `protobuf:"bytes,4,opt,name=properties,proto3" json:"properties,omitempty"`
   295  }
   296  
   297  func (x *TestVerdictRow_InvocationRecord) Reset() {
   298  	*x = TestVerdictRow_InvocationRecord{}
   299  	if protoimpl.UnsafeEnabled {
   300  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[1]
   301  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   302  		ms.StoreMessageInfo(mi)
   303  	}
   304  }
   305  
   306  func (x *TestVerdictRow_InvocationRecord) String() string {
   307  	return protoimpl.X.MessageStringOf(x)
   308  }
   309  
   310  func (*TestVerdictRow_InvocationRecord) ProtoMessage() {}
   311  
   312  func (x *TestVerdictRow_InvocationRecord) ProtoReflect() protoreflect.Message {
   313  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[1]
   314  	if protoimpl.UnsafeEnabled && x != nil {
   315  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   316  		if ms.LoadMessageInfo() == nil {
   317  			ms.StoreMessageInfo(mi)
   318  		}
   319  		return ms
   320  	}
   321  	return mi.MessageOf(x)
   322  }
   323  
   324  // Deprecated: Use TestVerdictRow_InvocationRecord.ProtoReflect.Descriptor instead.
   325  func (*TestVerdictRow_InvocationRecord) Descriptor() ([]byte, []int) {
   326  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 0}
   327  }
   328  
   329  func (x *TestVerdictRow_InvocationRecord) GetId() string {
   330  	if x != nil {
   331  		return x.Id
   332  	}
   333  	return ""
   334  }
   335  
   336  func (x *TestVerdictRow_InvocationRecord) GetTags() []*v1.StringPair {
   337  	if x != nil {
   338  		return x.Tags
   339  	}
   340  	return nil
   341  }
   342  
   343  func (x *TestVerdictRow_InvocationRecord) GetRealm() string {
   344  	if x != nil {
   345  		return x.Realm
   346  	}
   347  	return ""
   348  }
   349  
   350  func (x *TestVerdictRow_InvocationRecord) GetProperties() string {
   351  	if x != nil {
   352  		return x.Properties
   353  	}
   354  	return ""
   355  }
   356  
   357  // ParentInvocationRecord for a test result is the immediate parent invocation
   358  // that directly contains the test result.
   359  type TestVerdictRow_ParentInvocationRecord struct {
   360  	state         protoimpl.MessageState
   361  	sizeCache     protoimpl.SizeCache
   362  	unknownFields protoimpl.UnknownFields
   363  
   364  	// The ID of the invocation.
   365  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   366  }
   367  
   368  func (x *TestVerdictRow_ParentInvocationRecord) Reset() {
   369  	*x = TestVerdictRow_ParentInvocationRecord{}
   370  	if protoimpl.UnsafeEnabled {
   371  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[2]
   372  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   373  		ms.StoreMessageInfo(mi)
   374  	}
   375  }
   376  
   377  func (x *TestVerdictRow_ParentInvocationRecord) String() string {
   378  	return protoimpl.X.MessageStringOf(x)
   379  }
   380  
   381  func (*TestVerdictRow_ParentInvocationRecord) ProtoMessage() {}
   382  
   383  func (x *TestVerdictRow_ParentInvocationRecord) ProtoReflect() protoreflect.Message {
   384  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[2]
   385  	if protoimpl.UnsafeEnabled && x != nil {
   386  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   387  		if ms.LoadMessageInfo() == nil {
   388  			ms.StoreMessageInfo(mi)
   389  		}
   390  		return ms
   391  	}
   392  	return mi.MessageOf(x)
   393  }
   394  
   395  // Deprecated: Use TestVerdictRow_ParentInvocationRecord.ProtoReflect.Descriptor instead.
   396  func (*TestVerdictRow_ParentInvocationRecord) Descriptor() ([]byte, []int) {
   397  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 1}
   398  }
   399  
   400  func (x *TestVerdictRow_ParentInvocationRecord) GetId() string {
   401  	if x != nil {
   402  		return x.Id
   403  	}
   404  	return ""
   405  }
   406  
   407  // NextId: 13
   408  type TestVerdictRow_TestResult struct {
   409  	state         protoimpl.MessageState
   410  	sizeCache     protoimpl.SizeCache
   411  	unknownFields protoimpl.UnknownFields
   412  
   413  	// Parent contains info of the result's immediate parent invocation.
   414  	Parent *TestVerdictRow_ParentInvocationRecord `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
   415  	// The global identifier of a test result in ResultDB.
   416  	// Format:
   417  	// "invocations/{INVOCATION_ID}/tests/{URL_ESCAPED_TEST_ID}/results/{RESULT_ID}".
   418  	Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"`
   419  	// Identifies a test result in a given invocation and test id.
   420  	ResultId string `protobuf:"bytes,2,opt,name=result_id,json=resultId,proto3" json:"result_id,omitempty"`
   421  	// Expected is a flag indicating whether the result of test case execution is
   422  	// expected. Refer to TestResult.Expected for details.
   423  	Expected bool `protobuf:"varint,3,opt,name=expected,proto3" json:"expected,omitempty"`
   424  	// Status of the test result.
   425  	Status v1.TestResultStatus `protobuf:"varint,4,opt,name=status,proto3,enum=luci.analysis.v1.TestResultStatus" json:"status,omitempty"`
   426  	// A human-readable explanation of the result, in HTML.
   427  	// MUST be sanitized before rendering in the browser.
   428  	SummaryHtml string `protobuf:"bytes,5,opt,name=summary_html,json=summaryHtml,proto3" json:"summary_html,omitempty"`
   429  	// The point in time when the test case started to execute.
   430  	StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
   431  	// Duration of the test case execution in seconds.
   432  	Duration float64 `protobuf:"fixed64,7,opt,name=duration,proto3" json:"duration,omitempty"`
   433  	// Tags contains metadata for this test result.
   434  	// It might describe this particular execution or the test case.
   435  	Tags []*v1.StringPair `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"`
   436  	// Information about failed tests.
   437  	// e.g. the assertion failure message.
   438  	FailureReason *v1.FailureReason `protobuf:"bytes,9,opt,name=failure_reason,json=failureReason,proto3" json:"failure_reason,omitempty"`
   439  	// Reasoning behind a test skip, in machine-readable form.
   440  	// Only set when status is SKIP.
   441  	// It's the string presentation of luci.analysis.v1.SkipReason when
   442  	// specified, "" when the skip reason is unspecified.
   443  	SkipReason string `protobuf:"bytes,12,opt,name=skip_reason,json=skipReason,proto3" json:"skip_reason,omitempty"`
   444  	// Arbitrary JSON object that contains structured, domain-specific properties
   445  	// of the test result. Stored here stringified as this is the only protocol
   446  	// buffer type that maps to the JSON BigQuery type:
   447  	// https://cloud.google.com/bigquery/docs/write-api#data_type_conversions
   448  	Properties string `protobuf:"bytes,10,opt,name=properties,proto3" json:"properties,omitempty"`
   449  }
   450  
   451  func (x *TestVerdictRow_TestResult) Reset() {
   452  	*x = TestVerdictRow_TestResult{}
   453  	if protoimpl.UnsafeEnabled {
   454  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[3]
   455  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   456  		ms.StoreMessageInfo(mi)
   457  	}
   458  }
   459  
   460  func (x *TestVerdictRow_TestResult) String() string {
   461  	return protoimpl.X.MessageStringOf(x)
   462  }
   463  
   464  func (*TestVerdictRow_TestResult) ProtoMessage() {}
   465  
   466  func (x *TestVerdictRow_TestResult) ProtoReflect() protoreflect.Message {
   467  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[3]
   468  	if protoimpl.UnsafeEnabled && x != nil {
   469  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   470  		if ms.LoadMessageInfo() == nil {
   471  			ms.StoreMessageInfo(mi)
   472  		}
   473  		return ms
   474  	}
   475  	return mi.MessageOf(x)
   476  }
   477  
   478  // Deprecated: Use TestVerdictRow_TestResult.ProtoReflect.Descriptor instead.
   479  func (*TestVerdictRow_TestResult) Descriptor() ([]byte, []int) {
   480  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 2}
   481  }
   482  
   483  func (x *TestVerdictRow_TestResult) GetParent() *TestVerdictRow_ParentInvocationRecord {
   484  	if x != nil {
   485  		return x.Parent
   486  	}
   487  	return nil
   488  }
   489  
   490  func (x *TestVerdictRow_TestResult) GetName() string {
   491  	if x != nil {
   492  		return x.Name
   493  	}
   494  	return ""
   495  }
   496  
   497  func (x *TestVerdictRow_TestResult) GetResultId() string {
   498  	if x != nil {
   499  		return x.ResultId
   500  	}
   501  	return ""
   502  }
   503  
   504  func (x *TestVerdictRow_TestResult) GetExpected() bool {
   505  	if x != nil {
   506  		return x.Expected
   507  	}
   508  	return false
   509  }
   510  
   511  func (x *TestVerdictRow_TestResult) GetStatus() v1.TestResultStatus {
   512  	if x != nil {
   513  		return x.Status
   514  	}
   515  	return v1.TestResultStatus(0)
   516  }
   517  
   518  func (x *TestVerdictRow_TestResult) GetSummaryHtml() string {
   519  	if x != nil {
   520  		return x.SummaryHtml
   521  	}
   522  	return ""
   523  }
   524  
   525  func (x *TestVerdictRow_TestResult) GetStartTime() *timestamppb.Timestamp {
   526  	if x != nil {
   527  		return x.StartTime
   528  	}
   529  	return nil
   530  }
   531  
   532  func (x *TestVerdictRow_TestResult) GetDuration() float64 {
   533  	if x != nil {
   534  		return x.Duration
   535  	}
   536  	return 0
   537  }
   538  
   539  func (x *TestVerdictRow_TestResult) GetTags() []*v1.StringPair {
   540  	if x != nil {
   541  		return x.Tags
   542  	}
   543  	return nil
   544  }
   545  
   546  func (x *TestVerdictRow_TestResult) GetFailureReason() *v1.FailureReason {
   547  	if x != nil {
   548  		return x.FailureReason
   549  	}
   550  	return nil
   551  }
   552  
   553  func (x *TestVerdictRow_TestResult) GetSkipReason() string {
   554  	if x != nil {
   555  		return x.SkipReason
   556  	}
   557  	return ""
   558  }
   559  
   560  func (x *TestVerdictRow_TestResult) GetProperties() string {
   561  	if x != nil {
   562  		return x.Properties
   563  	}
   564  	return ""
   565  }
   566  
   567  type TestVerdictRow_Exoneration struct {
   568  	state         protoimpl.MessageState
   569  	sizeCache     protoimpl.SizeCache
   570  	unknownFields protoimpl.UnknownFields
   571  
   572  	// Reasoning behind exoneration, in HTML.
   573  	// MUST be sanitized before rendering in the browser.
   574  	ExplanationHtml string `protobuf:"bytes,1,opt,name=explanation_html,json=explanationHtml,proto3" json:"explanation_html,omitempty"`
   575  	// Reasoning behind the exoneration, in machine-readable form.
   576  	Reason v1.ExonerationReason `protobuf:"varint,2,opt,name=reason,proto3,enum=luci.analysis.v1.ExonerationReason" json:"reason,omitempty"`
   577  }
   578  
   579  func (x *TestVerdictRow_Exoneration) Reset() {
   580  	*x = TestVerdictRow_Exoneration{}
   581  	if protoimpl.UnsafeEnabled {
   582  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[4]
   583  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   584  		ms.StoreMessageInfo(mi)
   585  	}
   586  }
   587  
   588  func (x *TestVerdictRow_Exoneration) String() string {
   589  	return protoimpl.X.MessageStringOf(x)
   590  }
   591  
   592  func (*TestVerdictRow_Exoneration) ProtoMessage() {}
   593  
   594  func (x *TestVerdictRow_Exoneration) ProtoReflect() protoreflect.Message {
   595  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[4]
   596  	if protoimpl.UnsafeEnabled && x != nil {
   597  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   598  		if ms.LoadMessageInfo() == nil {
   599  			ms.StoreMessageInfo(mi)
   600  		}
   601  		return ms
   602  	}
   603  	return mi.MessageOf(x)
   604  }
   605  
   606  // Deprecated: Use TestVerdictRow_Exoneration.ProtoReflect.Descriptor instead.
   607  func (*TestVerdictRow_Exoneration) Descriptor() ([]byte, []int) {
   608  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 3}
   609  }
   610  
   611  func (x *TestVerdictRow_Exoneration) GetExplanationHtml() string {
   612  	if x != nil {
   613  		return x.ExplanationHtml
   614  	}
   615  	return ""
   616  }
   617  
   618  func (x *TestVerdictRow_Exoneration) GetReason() v1.ExonerationReason {
   619  	if x != nil {
   620  		return x.Reason
   621  	}
   622  	return v1.ExonerationReason(0)
   623  }
   624  
   625  type TestVerdictRow_Counts struct {
   626  	state         protoimpl.MessageState
   627  	sizeCache     protoimpl.SizeCache
   628  	unknownFields protoimpl.UnknownFields
   629  
   630  	// The total number of unexpected test results in the verdict.
   631  	Unexpected int64 `protobuf:"varint,1,opt,name=unexpected,proto3" json:"unexpected,omitempty"`
   632  	// The total number of test results in the verdict.
   633  	Total int64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
   634  	// The total number of unexpected test results in the verdict
   635  	// that are not skips.
   636  	UnexpectedNonSkipped int64 `protobuf:"varint,3,opt,name=unexpected_non_skipped,json=unexpectedNonSkipped,proto3" json:"unexpected_non_skipped,omitempty"`
   637  	// The total number of unexpected test results in the verdict
   638  	// that are not skips and not passes.
   639  	UnexpectedNonSkippedNonPassed int64 `protobuf:"varint,4,opt,name=unexpected_non_skipped_non_passed,json=unexpectedNonSkippedNonPassed,proto3" json:"unexpected_non_skipped_non_passed,omitempty"`
   640  	// The total number of test results in the verdict that
   641  	// are not skips.
   642  	TotalNonSkipped int64 `protobuf:"varint,5,opt,name=total_non_skipped,json=totalNonSkipped,proto3" json:"total_non_skipped,omitempty"`
   643  }
   644  
   645  func (x *TestVerdictRow_Counts) Reset() {
   646  	*x = TestVerdictRow_Counts{}
   647  	if protoimpl.UnsafeEnabled {
   648  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[5]
   649  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   650  		ms.StoreMessageInfo(mi)
   651  	}
   652  }
   653  
   654  func (x *TestVerdictRow_Counts) String() string {
   655  	return protoimpl.X.MessageStringOf(x)
   656  }
   657  
   658  func (*TestVerdictRow_Counts) ProtoMessage() {}
   659  
   660  func (x *TestVerdictRow_Counts) ProtoReflect() protoreflect.Message {
   661  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[5]
   662  	if protoimpl.UnsafeEnabled && x != nil {
   663  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   664  		if ms.LoadMessageInfo() == nil {
   665  			ms.StoreMessageInfo(mi)
   666  		}
   667  		return ms
   668  	}
   669  	return mi.MessageOf(x)
   670  }
   671  
   672  // Deprecated: Use TestVerdictRow_Counts.ProtoReflect.Descriptor instead.
   673  func (*TestVerdictRow_Counts) Descriptor() ([]byte, []int) {
   674  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 4}
   675  }
   676  
   677  func (x *TestVerdictRow_Counts) GetUnexpected() int64 {
   678  	if x != nil {
   679  		return x.Unexpected
   680  	}
   681  	return 0
   682  }
   683  
   684  func (x *TestVerdictRow_Counts) GetTotal() int64 {
   685  	if x != nil {
   686  		return x.Total
   687  	}
   688  	return 0
   689  }
   690  
   691  func (x *TestVerdictRow_Counts) GetUnexpectedNonSkipped() int64 {
   692  	if x != nil {
   693  		return x.UnexpectedNonSkipped
   694  	}
   695  	return 0
   696  }
   697  
   698  func (x *TestVerdictRow_Counts) GetUnexpectedNonSkippedNonPassed() int64 {
   699  	if x != nil {
   700  		return x.UnexpectedNonSkippedNonPassed
   701  	}
   702  	return 0
   703  }
   704  
   705  func (x *TestVerdictRow_Counts) GetTotalNonSkipped() int64 {
   706  	if x != nil {
   707  		return x.TotalNonSkipped
   708  	}
   709  	return 0
   710  }
   711  
   712  // Information about the buildbucket build which contained the test result.
   713  type TestVerdictRow_BuildbucketBuild struct {
   714  	state         protoimpl.MessageState
   715  	sizeCache     protoimpl.SizeCache
   716  	unknownFields protoimpl.UnknownFields
   717  
   718  	// The identifier of the buildbucket build.
   719  	Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
   720  	// The builder the build belongs to.
   721  	Builder *TestVerdictRow_BuildbucketBuild_Builder `protobuf:"bytes,2,opt,name=builder,proto3" json:"builder,omitempty"`
   722  	// The status of the build that contained this test result. Can be used
   723  	// to filter incomplete results (e.g. where build was cancelled or had
   724  	// an infra failure). Can also be used to filter builds with incomplete
   725  	// exonerations (e.g. build succeeded but some tests not exonerated).
   726  	//
   727  	// Notionally luci.analysis.v1.BuildStatus, but string so that we can chop
   728  	// off the BUILD_STATUS_ prefix that would otherwise appear on every value.
   729  	Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
   730  	// The gardener rotations which monitor this build.
   731  	GardenerRotations []string `protobuf:"bytes,4,rep,name=gardener_rotations,json=gardenerRotations,proto3" json:"gardener_rotations,omitempty"`
   732  }
   733  
   734  func (x *TestVerdictRow_BuildbucketBuild) Reset() {
   735  	*x = TestVerdictRow_BuildbucketBuild{}
   736  	if protoimpl.UnsafeEnabled {
   737  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[6]
   738  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   739  		ms.StoreMessageInfo(mi)
   740  	}
   741  }
   742  
   743  func (x *TestVerdictRow_BuildbucketBuild) String() string {
   744  	return protoimpl.X.MessageStringOf(x)
   745  }
   746  
   747  func (*TestVerdictRow_BuildbucketBuild) ProtoMessage() {}
   748  
   749  func (x *TestVerdictRow_BuildbucketBuild) ProtoReflect() protoreflect.Message {
   750  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[6]
   751  	if protoimpl.UnsafeEnabled && x != nil {
   752  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   753  		if ms.LoadMessageInfo() == nil {
   754  			ms.StoreMessageInfo(mi)
   755  		}
   756  		return ms
   757  	}
   758  	return mi.MessageOf(x)
   759  }
   760  
   761  // Deprecated: Use TestVerdictRow_BuildbucketBuild.ProtoReflect.Descriptor instead.
   762  func (*TestVerdictRow_BuildbucketBuild) Descriptor() ([]byte, []int) {
   763  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 5}
   764  }
   765  
   766  func (x *TestVerdictRow_BuildbucketBuild) GetId() int64 {
   767  	if x != nil {
   768  		return x.Id
   769  	}
   770  	return 0
   771  }
   772  
   773  func (x *TestVerdictRow_BuildbucketBuild) GetBuilder() *TestVerdictRow_BuildbucketBuild_Builder {
   774  	if x != nil {
   775  		return x.Builder
   776  	}
   777  	return nil
   778  }
   779  
   780  func (x *TestVerdictRow_BuildbucketBuild) GetStatus() string {
   781  	if x != nil {
   782  		return x.Status
   783  	}
   784  	return ""
   785  }
   786  
   787  func (x *TestVerdictRow_BuildbucketBuild) GetGardenerRotations() []string {
   788  	if x != nil {
   789  		return x.GardenerRotations
   790  	}
   791  	return nil
   792  }
   793  
   794  // Information about the LUCI Change Verifier run which the test result
   795  // was a part of, if any.
   796  type TestVerdictRow_ChangeVerifierRun struct {
   797  	state         protoimpl.MessageState
   798  	sizeCache     protoimpl.SizeCache
   799  	unknownFields protoimpl.UnknownFields
   800  
   801  	// Identity of the change verifier run that contains this test result.
   802  	// This should be unique per "CQ+1"/"CQ+2" attempt on gerrit.
   803  	//
   804  	// All test results for the same presubmit run will have one
   805  	// partition_time.
   806  	//
   807  	// The format of this value is:
   808  	// "{LUCI_PROJECT}/{LUCI_CV_ID}", e.g.
   809  	// "infra/8988819463854-1-f94732fe20056fd1".
   810  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   811  	// The mode of the presubmit run (if any).
   812  	// E.g. DRY_RUN, FULL_RUN, QUICK_DRY_RUN.
   813  	Mode v1.PresubmitRunMode `protobuf:"varint,2,opt,name=mode,proto3,enum=luci.analysis.v1.PresubmitRunMode" json:"mode,omitempty"`
   814  	// The presubmit run's ending status.
   815  	// Notionally luci.analysis.v1.PresubmitRunStatus, but string so that
   816  	// we can chop off the "PRESUBMIT_RUN_STATUS_" prefix and have
   817  	// only the status, e.g. SUCCEEDED, FAILED, CANCELED.
   818  	Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
   819  	// Whether the build indicated by buildbucket_build was
   820  	// critical to the presubmit run succeeding. This is
   821  	// false for experimental tryjobs.
   822  	IsBuildCritical bool `protobuf:"varint,4,opt,name=is_build_critical,json=isBuildCritical,proto3" json:"is_build_critical,omitempty"`
   823  }
   824  
   825  func (x *TestVerdictRow_ChangeVerifierRun) Reset() {
   826  	*x = TestVerdictRow_ChangeVerifierRun{}
   827  	if protoimpl.UnsafeEnabled {
   828  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[7]
   829  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   830  		ms.StoreMessageInfo(mi)
   831  	}
   832  }
   833  
   834  func (x *TestVerdictRow_ChangeVerifierRun) String() string {
   835  	return protoimpl.X.MessageStringOf(x)
   836  }
   837  
   838  func (*TestVerdictRow_ChangeVerifierRun) ProtoMessage() {}
   839  
   840  func (x *TestVerdictRow_ChangeVerifierRun) ProtoReflect() protoreflect.Message {
   841  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[7]
   842  	if protoimpl.UnsafeEnabled && x != nil {
   843  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   844  		if ms.LoadMessageInfo() == nil {
   845  			ms.StoreMessageInfo(mi)
   846  		}
   847  		return ms
   848  	}
   849  	return mi.MessageOf(x)
   850  }
   851  
   852  // Deprecated: Use TestVerdictRow_ChangeVerifierRun.ProtoReflect.Descriptor instead.
   853  func (*TestVerdictRow_ChangeVerifierRun) Descriptor() ([]byte, []int) {
   854  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 6}
   855  }
   856  
   857  func (x *TestVerdictRow_ChangeVerifierRun) GetId() string {
   858  	if x != nil {
   859  		return x.Id
   860  	}
   861  	return ""
   862  }
   863  
   864  func (x *TestVerdictRow_ChangeVerifierRun) GetMode() v1.PresubmitRunMode {
   865  	if x != nil {
   866  		return x.Mode
   867  	}
   868  	return v1.PresubmitRunMode(0)
   869  }
   870  
   871  func (x *TestVerdictRow_ChangeVerifierRun) GetStatus() string {
   872  	if x != nil {
   873  		return x.Status
   874  	}
   875  	return ""
   876  }
   877  
   878  func (x *TestVerdictRow_ChangeVerifierRun) GetIsBuildCritical() bool {
   879  	if x != nil {
   880  		return x.IsBuildCritical
   881  	}
   882  	return false
   883  }
   884  
   885  type TestVerdictRow_BuildbucketBuild_Builder struct {
   886  	state         protoimpl.MessageState
   887  	sizeCache     protoimpl.SizeCache
   888  	unknownFields protoimpl.UnknownFields
   889  
   890  	// The LUCI Project ID.
   891  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
   892  	// The build bucket, e.g. "try". Unique within project.
   893  	Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
   894  	// The builder name, e.g. "linux-rel". Unique within bucket.
   895  	Builder string `protobuf:"bytes,3,opt,name=builder,proto3" json:"builder,omitempty"`
   896  }
   897  
   898  func (x *TestVerdictRow_BuildbucketBuild_Builder) Reset() {
   899  	*x = TestVerdictRow_BuildbucketBuild_Builder{}
   900  	if protoimpl.UnsafeEnabled {
   901  		mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[8]
   902  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   903  		ms.StoreMessageInfo(mi)
   904  	}
   905  }
   906  
   907  func (x *TestVerdictRow_BuildbucketBuild_Builder) String() string {
   908  	return protoimpl.X.MessageStringOf(x)
   909  }
   910  
   911  func (*TestVerdictRow_BuildbucketBuild_Builder) ProtoMessage() {}
   912  
   913  func (x *TestVerdictRow_BuildbucketBuild_Builder) ProtoReflect() protoreflect.Message {
   914  	mi := &file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[8]
   915  	if protoimpl.UnsafeEnabled && x != nil {
   916  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   917  		if ms.LoadMessageInfo() == nil {
   918  			ms.StoreMessageInfo(mi)
   919  		}
   920  		return ms
   921  	}
   922  	return mi.MessageOf(x)
   923  }
   924  
   925  // Deprecated: Use TestVerdictRow_BuildbucketBuild_Builder.ProtoReflect.Descriptor instead.
   926  func (*TestVerdictRow_BuildbucketBuild_Builder) Descriptor() ([]byte, []int) {
   927  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP(), []int{0, 5, 0}
   928  }
   929  
   930  func (x *TestVerdictRow_BuildbucketBuild_Builder) GetProject() string {
   931  	if x != nil {
   932  		return x.Project
   933  	}
   934  	return ""
   935  }
   936  
   937  func (x *TestVerdictRow_BuildbucketBuild_Builder) GetBucket() string {
   938  	if x != nil {
   939  		return x.Bucket
   940  	}
   941  	return ""
   942  }
   943  
   944  func (x *TestVerdictRow_BuildbucketBuild_Builder) GetBuilder() string {
   945  	if x != nil {
   946  		return x.Builder
   947  	}
   948  	return ""
   949  }
   950  
   951  var File_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto protoreflect.FileDescriptor
   952  
   953  var file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDesc = []byte{
   954  	0x0a, 0x3d, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
   955  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f,
   956  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x71, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65,
   957  	0x72, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
   958  	0x10, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62,
   959  	0x71, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
   960  	0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
   961  	0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
   962  	0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
   963  	0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
   964  	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f,
   965  	0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e,
   966  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f,
   967  	0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x70,
   968  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
   969  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79,
   970  	0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x6f, 0x75,
   971  	0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x2e, 0x63,
   972  	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69,
   973  	0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
   974  	0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
   975  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d,
   976  	0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61,
   977  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x74,
   978  	0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
   979  	0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f,
   980  	0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x62,
   981  	0x71, 0x2f, 0x70, 0x62, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
   982  	0x74, 0x6f, 0x22, 0xe6, 0x13, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69,
   983  	0x63, 0x74, 0x52, 0x6f, 0x77, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
   984  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
   985  	0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
   986  	0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69,
   987  	0x61, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe2, 0xbc, 0x24, 0x06, 0x0a,
   988  	0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x21,
   989  	0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04,
   990  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73,
   991  	0x68, 0x12, 0x51, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
   992  	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61,
   993  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72,
   994  	0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69,
   995  	0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61,
   996  	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
   997  	0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
   998  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
   999  	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
  1000  	0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
  1001  	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61,
  1002  	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56,
  1003  	0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
  1004  	0x61, 0x74, 0x75, 0x73, 0x12, 0x45, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18,
  1005  	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61,
  1006  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72,
  1007  	0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
  1008  	0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0c, 0x65,
  1009  	0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
  1010  	0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  1011  	0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74,
  1012  	0x52, 0x6f, 0x77, 0x2e, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
  1013  	0x0c, 0x65, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a,
  1014  	0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
  1015  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71,
  1016  	0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e,
  1017  	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5e,
  1018  	0x0a, 0x11, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x75,
  1019  	0x69, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  1020  	0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73,
  1021  	0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e, 0x42, 0x75, 0x69, 0x6c,
  1022  	0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x10, 0x62, 0x75,
  1023  	0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x62,
  1024  	0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65,
  1025  	0x72, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6c, 0x75,
  1026  	0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54,
  1027  	0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e, 0x43, 0x68,
  1028  	0x61, 0x6e, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x52,
  1029  	0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52,
  1030  	0x75, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0d, 0x20,
  1031  	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79,
  1032  	0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x07,
  1033  	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63,
  1034  	0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75,
  1035  	0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53,
  1036  	0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
  1037  	0x52, 0x65, 0x66, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65,
  1038  	0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f,
  1039  	0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x43, 0x0a, 0x0d, 0x74,
  1040  	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01,
  1041  	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  1042  	0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
  1043  	0x74, 0x61, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
  1044  	0x1a, 0x96, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
  1045  	0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
  1046  	0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20,
  1047  	0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79,
  1048  	0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69,
  1049  	0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d,
  1050  	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x2a, 0x0a,
  1051  	0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
  1052  	0x09, 0x42, 0x0a, 0xe2, 0xbc, 0x24, 0x06, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x52, 0x0a, 0x70,
  1053  	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x28, 0x0a, 0x16, 0x50, 0x61, 0x72,
  1054  	0x65, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63,
  1055  	0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  1056  	0x02, 0x69, 0x64, 0x1a, 0xa7, 0x04, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75,
  1057  	0x6c, 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
  1058  	0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  1059  	0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63,
  1060  	0x74, 0x52, 0x6f, 0x77, 0x2e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x6f, 0x63,
  1061  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x70, 0x61, 0x72,
  1062  	0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
  1063  	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6c,
  1064  	0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x75,
  1065  	0x6c, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
  1066  	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
  1067  	0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
  1068  	0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  1069  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74,
  1070  	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c,
  1071  	0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x05, 0x20, 0x01,
  1072  	0x28, 0x09, 0x52, 0x0b, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x74, 0x6d, 0x6c, 0x12,
  1073  	0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
  1074  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  1075  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
  1076  	0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75,
  1077  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x64, 0x75,
  1078  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08,
  1079  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c,
  1080  	0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61,
  1081  	0x69, 0x72, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c,
  1082  	0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
  1083  	0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  1084  	0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f,
  1085  	0x6e, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
  1086  	0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18,
  1087  	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f,
  1088  	0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18,
  1089  	0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xe2, 0xbc, 0x24, 0x06, 0x0a, 0x04, 0x4a, 0x53, 0x4f,
  1090  	0x4e, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x75, 0x0a,
  1091  	0x0b, 0x45, 0x78, 0x6f, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10,
  1092  	0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x74, 0x6d, 0x6c,
  1093  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74,
  1094  	0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
  1095  	0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61,
  1096  	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x6f, 0x6e, 0x65,
  1097  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65,
  1098  	0x61, 0x73, 0x6f, 0x6e, 0x1a, 0xea, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12,
  1099  	0x1e, 0x0a, 0x0a, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20,
  1100  	0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12,
  1101  	0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
  1102  	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63,
  1103  	0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18,
  1104  	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65,
  1105  	0x64, 0x4e, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x75,
  1106  	0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x73, 0x6b,
  1107  	0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64,
  1108  	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74,
  1109  	0x65, 0x64, 0x4e, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x4e, 0x6f, 0x6e, 0x50,
  1110  	0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e,
  1111  	0x6f, 0x6e, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
  1112  	0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x6e, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65,
  1113  	0x64, 0x1a, 0x95, 0x02, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
  1114  	0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
  1115  	0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x53, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65,
  1116  	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61,
  1117  	0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x62, 0x71, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56,
  1118  	0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x6f, 0x77, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62,
  1119  	0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64,
  1120  	0x65, 0x72, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73,
  1121  	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
  1122  	0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x67, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x65, 0x72, 0x5f,
  1123  	0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52,
  1124  	0x11, 0x67, 0x61, 0x72, 0x64, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
  1125  	0x6e, 0x73, 0x1a, 0x55, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a,
  1126  	0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
  1127  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65,
  1128  	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12,
  1129  	0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
  1130  	0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x1a, 0x9f, 0x01, 0x0a, 0x11, 0x43, 0x68,
  1131  	0x61, 0x6e, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x12,
  1132  	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
  1133  	0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e,
  1134  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2e, 0x76, 0x31,
  1135  	0x2e, 0x50, 0x72, 0x65, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x6f, 0x64,
  1136  	0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
  1137  	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
  1138  	0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x72, 0x69, 0x74,
  1139  	0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x42, 0x75,
  1140  	0x69, 0x6c, 0x64, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x2d, 0x5a, 0x2b, 0x67,
  1141  	0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c,
  1142  	0x75, 0x63, 0x69, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x2f, 0x70, 0x72, 0x6f,
  1143  	0x74, 0x6f, 0x2f, 0x62, 0x71, 0x3b, 0x62, 0x71, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
  1144  	0x6f, 0x33,
  1145  }
  1146  
  1147  var (
  1148  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescOnce sync.Once
  1149  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescData = file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDesc
  1150  )
  1151  
  1152  func file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescGZIP() []byte {
  1153  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescOnce.Do(func() {
  1154  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescData)
  1155  	})
  1156  	return file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDescData
  1157  }
  1158  
  1159  var file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
  1160  var file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_goTypes = []interface{}{
  1161  	(*TestVerdictRow)(nil),                          // 0: luci.analysis.bq.TestVerdictRow
  1162  	(*TestVerdictRow_InvocationRecord)(nil),         // 1: luci.analysis.bq.TestVerdictRow.InvocationRecord
  1163  	(*TestVerdictRow_ParentInvocationRecord)(nil),   // 2: luci.analysis.bq.TestVerdictRow.ParentInvocationRecord
  1164  	(*TestVerdictRow_TestResult)(nil),               // 3: luci.analysis.bq.TestVerdictRow.TestResult
  1165  	(*TestVerdictRow_Exoneration)(nil),              // 4: luci.analysis.bq.TestVerdictRow.Exoneration
  1166  	(*TestVerdictRow_Counts)(nil),                   // 5: luci.analysis.bq.TestVerdictRow.Counts
  1167  	(*TestVerdictRow_BuildbucketBuild)(nil),         // 6: luci.analysis.bq.TestVerdictRow.BuildbucketBuild
  1168  	(*TestVerdictRow_ChangeVerifierRun)(nil),        // 7: luci.analysis.bq.TestVerdictRow.ChangeVerifierRun
  1169  	(*TestVerdictRow_BuildbucketBuild_Builder)(nil), // 8: luci.analysis.bq.TestVerdictRow.BuildbucketBuild.Builder
  1170  	(*timestamppb.Timestamp)(nil),                   // 9: google.protobuf.Timestamp
  1171  	(v1.TestVerdictStatus)(0),                       // 10: luci.analysis.v1.TestVerdictStatus
  1172  	(*v1.Sources)(nil),                              // 11: luci.analysis.v1.Sources
  1173  	(*v1.SourceRef)(nil),                            // 12: luci.analysis.v1.SourceRef
  1174  	(*v1.TestMetadata)(nil),                         // 13: luci.analysis.v1.TestMetadata
  1175  	(*v1.StringPair)(nil),                           // 14: luci.analysis.v1.StringPair
  1176  	(v1.TestResultStatus)(0),                        // 15: luci.analysis.v1.TestResultStatus
  1177  	(*v1.FailureReason)(nil),                        // 16: luci.analysis.v1.FailureReason
  1178  	(v1.ExonerationReason)(0),                       // 17: luci.analysis.v1.ExonerationReason
  1179  	(v1.PresubmitRunMode)(0),                        // 18: luci.analysis.v1.PresubmitRunMode
  1180  }
  1181  var file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_depIdxs = []int32{
  1182  	1,  // 0: luci.analysis.bq.TestVerdictRow.invocation:type_name -> luci.analysis.bq.TestVerdictRow.InvocationRecord
  1183  	9,  // 1: luci.analysis.bq.TestVerdictRow.partition_time:type_name -> google.protobuf.Timestamp
  1184  	10, // 2: luci.analysis.bq.TestVerdictRow.status:type_name -> luci.analysis.v1.TestVerdictStatus
  1185  	3,  // 3: luci.analysis.bq.TestVerdictRow.results:type_name -> luci.analysis.bq.TestVerdictRow.TestResult
  1186  	4,  // 4: luci.analysis.bq.TestVerdictRow.exonerations:type_name -> luci.analysis.bq.TestVerdictRow.Exoneration
  1187  	5,  // 5: luci.analysis.bq.TestVerdictRow.counts:type_name -> luci.analysis.bq.TestVerdictRow.Counts
  1188  	6,  // 6: luci.analysis.bq.TestVerdictRow.buildbucket_build:type_name -> luci.analysis.bq.TestVerdictRow.BuildbucketBuild
  1189  	7,  // 7: luci.analysis.bq.TestVerdictRow.change_verifier_run:type_name -> luci.analysis.bq.TestVerdictRow.ChangeVerifierRun
  1190  	11, // 8: luci.analysis.bq.TestVerdictRow.sources:type_name -> luci.analysis.v1.Sources
  1191  	12, // 9: luci.analysis.bq.TestVerdictRow.source_ref:type_name -> luci.analysis.v1.SourceRef
  1192  	13, // 10: luci.analysis.bq.TestVerdictRow.test_metadata:type_name -> luci.analysis.v1.TestMetadata
  1193  	14, // 11: luci.analysis.bq.TestVerdictRow.InvocationRecord.tags:type_name -> luci.analysis.v1.StringPair
  1194  	2,  // 12: luci.analysis.bq.TestVerdictRow.TestResult.parent:type_name -> luci.analysis.bq.TestVerdictRow.ParentInvocationRecord
  1195  	15, // 13: luci.analysis.bq.TestVerdictRow.TestResult.status:type_name -> luci.analysis.v1.TestResultStatus
  1196  	9,  // 14: luci.analysis.bq.TestVerdictRow.TestResult.start_time:type_name -> google.protobuf.Timestamp
  1197  	14, // 15: luci.analysis.bq.TestVerdictRow.TestResult.tags:type_name -> luci.analysis.v1.StringPair
  1198  	16, // 16: luci.analysis.bq.TestVerdictRow.TestResult.failure_reason:type_name -> luci.analysis.v1.FailureReason
  1199  	17, // 17: luci.analysis.bq.TestVerdictRow.Exoneration.reason:type_name -> luci.analysis.v1.ExonerationReason
  1200  	8,  // 18: luci.analysis.bq.TestVerdictRow.BuildbucketBuild.builder:type_name -> luci.analysis.bq.TestVerdictRow.BuildbucketBuild.Builder
  1201  	18, // 19: luci.analysis.bq.TestVerdictRow.ChangeVerifierRun.mode:type_name -> luci.analysis.v1.PresubmitRunMode
  1202  	20, // [20:20] is the sub-list for method output_type
  1203  	20, // [20:20] is the sub-list for method input_type
  1204  	20, // [20:20] is the sub-list for extension type_name
  1205  	20, // [20:20] is the sub-list for extension extendee
  1206  	0,  // [0:20] is the sub-list for field type_name
  1207  }
  1208  
  1209  func init() { file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_init() }
  1210  func file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_init() {
  1211  	if File_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto != nil {
  1212  		return
  1213  	}
  1214  	if !protoimpl.UnsafeEnabled {
  1215  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1216  			switch v := v.(*TestVerdictRow); i {
  1217  			case 0:
  1218  				return &v.state
  1219  			case 1:
  1220  				return &v.sizeCache
  1221  			case 2:
  1222  				return &v.unknownFields
  1223  			default:
  1224  				return nil
  1225  			}
  1226  		}
  1227  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1228  			switch v := v.(*TestVerdictRow_InvocationRecord); i {
  1229  			case 0:
  1230  				return &v.state
  1231  			case 1:
  1232  				return &v.sizeCache
  1233  			case 2:
  1234  				return &v.unknownFields
  1235  			default:
  1236  				return nil
  1237  			}
  1238  		}
  1239  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1240  			switch v := v.(*TestVerdictRow_ParentInvocationRecord); i {
  1241  			case 0:
  1242  				return &v.state
  1243  			case 1:
  1244  				return &v.sizeCache
  1245  			case 2:
  1246  				return &v.unknownFields
  1247  			default:
  1248  				return nil
  1249  			}
  1250  		}
  1251  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1252  			switch v := v.(*TestVerdictRow_TestResult); i {
  1253  			case 0:
  1254  				return &v.state
  1255  			case 1:
  1256  				return &v.sizeCache
  1257  			case 2:
  1258  				return &v.unknownFields
  1259  			default:
  1260  				return nil
  1261  			}
  1262  		}
  1263  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1264  			switch v := v.(*TestVerdictRow_Exoneration); i {
  1265  			case 0:
  1266  				return &v.state
  1267  			case 1:
  1268  				return &v.sizeCache
  1269  			case 2:
  1270  				return &v.unknownFields
  1271  			default:
  1272  				return nil
  1273  			}
  1274  		}
  1275  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1276  			switch v := v.(*TestVerdictRow_Counts); i {
  1277  			case 0:
  1278  				return &v.state
  1279  			case 1:
  1280  				return &v.sizeCache
  1281  			case 2:
  1282  				return &v.unknownFields
  1283  			default:
  1284  				return nil
  1285  			}
  1286  		}
  1287  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1288  			switch v := v.(*TestVerdictRow_BuildbucketBuild); i {
  1289  			case 0:
  1290  				return &v.state
  1291  			case 1:
  1292  				return &v.sizeCache
  1293  			case 2:
  1294  				return &v.unknownFields
  1295  			default:
  1296  				return nil
  1297  			}
  1298  		}
  1299  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1300  			switch v := v.(*TestVerdictRow_ChangeVerifierRun); i {
  1301  			case 0:
  1302  				return &v.state
  1303  			case 1:
  1304  				return &v.sizeCache
  1305  			case 2:
  1306  				return &v.unknownFields
  1307  			default:
  1308  				return nil
  1309  			}
  1310  		}
  1311  		file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1312  			switch v := v.(*TestVerdictRow_BuildbucketBuild_Builder); i {
  1313  			case 0:
  1314  				return &v.state
  1315  			case 1:
  1316  				return &v.sizeCache
  1317  			case 2:
  1318  				return &v.unknownFields
  1319  			default:
  1320  				return nil
  1321  			}
  1322  		}
  1323  	}
  1324  	type x struct{}
  1325  	out := protoimpl.TypeBuilder{
  1326  		File: protoimpl.DescBuilder{
  1327  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1328  			RawDescriptor: file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDesc,
  1329  			NumEnums:      0,
  1330  			NumMessages:   9,
  1331  			NumExtensions: 0,
  1332  			NumServices:   0,
  1333  		},
  1334  		GoTypes:           file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_goTypes,
  1335  		DependencyIndexes: file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_depIdxs,
  1336  		MessageInfos:      file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_msgTypes,
  1337  	}.Build()
  1338  	File_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto = out.File
  1339  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_rawDesc = nil
  1340  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_goTypes = nil
  1341  	file_go_chromium_org_luci_analysis_proto_bq_test_verdict_row_proto_depIdxs = nil
  1342  }