go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/bisection/proto/v1/analyses.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/bisection/proto/v1/analyses.proto
    20  
    21  package bisectionpb
    22  
    23  import prpc "go.chromium.org/luci/grpc/prpc"
    24  
    25  import (
    26  	context "context"
    27  	proto "go.chromium.org/luci/buildbucket/proto"
    28  	_ "google.golang.org/genproto/googleapis/api/annotations"
    29  	grpc "google.golang.org/grpc"
    30  	codes "google.golang.org/grpc/codes"
    31  	status "google.golang.org/grpc/status"
    32  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    33  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    34  	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
    35  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    36  	reflect "reflect"
    37  	sync "sync"
    38  )
    39  
    40  const (
    41  	// Verify that this generated code is sufficiently up-to-date.
    42  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    43  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    44  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    45  )
    46  
    47  // AnalysisRunStatus focusses on whether the analysis is currently running, not
    48  // the actual result of the analysis.
    49  type AnalysisRunStatus int32
    50  
    51  const (
    52  	AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED AnalysisRunStatus = 0
    53  	// The analysis started and is still running.
    54  	AnalysisRunStatus_STARTED AnalysisRunStatus = 2
    55  	// The analysis has ended (either it stopped naturally or ran into an error).
    56  	AnalysisRunStatus_ENDED AnalysisRunStatus = 3
    57  	// The analysis has been canceled.
    58  	AnalysisRunStatus_CANCELED AnalysisRunStatus = 4
    59  )
    60  
    61  // Enum value maps for AnalysisRunStatus.
    62  var (
    63  	AnalysisRunStatus_name = map[int32]string{
    64  		0: "ANALYSIS_RUN_STATUS_UNSPECIFIED",
    65  		2: "STARTED",
    66  		3: "ENDED",
    67  		4: "CANCELED",
    68  	}
    69  	AnalysisRunStatus_value = map[string]int32{
    70  		"ANALYSIS_RUN_STATUS_UNSPECIFIED": 0,
    71  		"STARTED":                         2,
    72  		"ENDED":                           3,
    73  		"CANCELED":                        4,
    74  	}
    75  )
    76  
    77  func (x AnalysisRunStatus) Enum() *AnalysisRunStatus {
    78  	p := new(AnalysisRunStatus)
    79  	*p = x
    80  	return p
    81  }
    82  
    83  func (x AnalysisRunStatus) String() string {
    84  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    85  }
    86  
    87  func (AnalysisRunStatus) Descriptor() protoreflect.EnumDescriptor {
    88  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[0].Descriptor()
    89  }
    90  
    91  func (AnalysisRunStatus) Type() protoreflect.EnumType {
    92  	return &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[0]
    93  }
    94  
    95  func (x AnalysisRunStatus) Number() protoreflect.EnumNumber {
    96  	return protoreflect.EnumNumber(x)
    97  }
    98  
    99  // Deprecated: Use AnalysisRunStatus.Descriptor instead.
   100  func (AnalysisRunStatus) EnumDescriptor() ([]byte, []int) {
   101  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{0}
   102  }
   103  
   104  type BuildFailureType int32
   105  
   106  const (
   107  	BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED BuildFailureType = 0
   108  	BuildFailureType_COMPILE                        BuildFailureType = 1
   109  	BuildFailureType_TEST                           BuildFailureType = 2
   110  	BuildFailureType_INFRA                          BuildFailureType = 3
   111  	BuildFailureType_OTHER                          BuildFailureType = 4
   112  )
   113  
   114  // Enum value maps for BuildFailureType.
   115  var (
   116  	BuildFailureType_name = map[int32]string{
   117  		0: "BUILD_FAILURE_TYPE_UNSPECIFIED",
   118  		1: "COMPILE",
   119  		2: "TEST",
   120  		3: "INFRA",
   121  		4: "OTHER",
   122  	}
   123  	BuildFailureType_value = map[string]int32{
   124  		"BUILD_FAILURE_TYPE_UNSPECIFIED": 0,
   125  		"COMPILE":                        1,
   126  		"TEST":                           2,
   127  		"INFRA":                          3,
   128  		"OTHER":                          4,
   129  	}
   130  )
   131  
   132  func (x BuildFailureType) Enum() *BuildFailureType {
   133  	p := new(BuildFailureType)
   134  	*p = x
   135  	return p
   136  }
   137  
   138  func (x BuildFailureType) String() string {
   139  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   140  }
   141  
   142  func (BuildFailureType) Descriptor() protoreflect.EnumDescriptor {
   143  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[1].Descriptor()
   144  }
   145  
   146  func (BuildFailureType) Type() protoreflect.EnumType {
   147  	return &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes[1]
   148  }
   149  
   150  func (x BuildFailureType) Number() protoreflect.EnumNumber {
   151  	return protoreflect.EnumNumber(x)
   152  }
   153  
   154  // Deprecated: Use BuildFailureType.Descriptor instead.
   155  func (BuildFailureType) EnumDescriptor() ([]byte, []int) {
   156  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{1}
   157  }
   158  
   159  type GetAnalysisRequest struct {
   160  	state         protoimpl.MessageState
   161  	sizeCache     protoimpl.SizeCache
   162  	unknownFields protoimpl.UnknownFields
   163  
   164  	// ID of the analysis.
   165  	AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
   166  }
   167  
   168  func (x *GetAnalysisRequest) Reset() {
   169  	*x = GetAnalysisRequest{}
   170  	if protoimpl.UnsafeEnabled {
   171  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0]
   172  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   173  		ms.StoreMessageInfo(mi)
   174  	}
   175  }
   176  
   177  func (x *GetAnalysisRequest) String() string {
   178  	return protoimpl.X.MessageStringOf(x)
   179  }
   180  
   181  func (*GetAnalysisRequest) ProtoMessage() {}
   182  
   183  func (x *GetAnalysisRequest) ProtoReflect() protoreflect.Message {
   184  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0]
   185  	if protoimpl.UnsafeEnabled && x != nil {
   186  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   187  		if ms.LoadMessageInfo() == nil {
   188  			ms.StoreMessageInfo(mi)
   189  		}
   190  		return ms
   191  	}
   192  	return mi.MessageOf(x)
   193  }
   194  
   195  // Deprecated: Use GetAnalysisRequest.ProtoReflect.Descriptor instead.
   196  func (*GetAnalysisRequest) Descriptor() ([]byte, []int) {
   197  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{0}
   198  }
   199  
   200  func (x *GetAnalysisRequest) GetAnalysisId() int64 {
   201  	if x != nil {
   202  		return x.AnalysisId
   203  	}
   204  	return 0
   205  }
   206  
   207  type QueryAnalysisRequest struct {
   208  	state         protoimpl.MessageState
   209  	sizeCache     protoimpl.SizeCache
   210  	unknownFields protoimpl.UnknownFields
   211  
   212  	// The build failure information to query for the analyses.
   213  	BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
   214  }
   215  
   216  func (x *QueryAnalysisRequest) Reset() {
   217  	*x = QueryAnalysisRequest{}
   218  	if protoimpl.UnsafeEnabled {
   219  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1]
   220  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   221  		ms.StoreMessageInfo(mi)
   222  	}
   223  }
   224  
   225  func (x *QueryAnalysisRequest) String() string {
   226  	return protoimpl.X.MessageStringOf(x)
   227  }
   228  
   229  func (*QueryAnalysisRequest) ProtoMessage() {}
   230  
   231  func (x *QueryAnalysisRequest) ProtoReflect() protoreflect.Message {
   232  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1]
   233  	if protoimpl.UnsafeEnabled && x != nil {
   234  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   235  		if ms.LoadMessageInfo() == nil {
   236  			ms.StoreMessageInfo(mi)
   237  		}
   238  		return ms
   239  	}
   240  	return mi.MessageOf(x)
   241  }
   242  
   243  // Deprecated: Use QueryAnalysisRequest.ProtoReflect.Descriptor instead.
   244  func (*QueryAnalysisRequest) Descriptor() ([]byte, []int) {
   245  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{1}
   246  }
   247  
   248  func (x *QueryAnalysisRequest) GetBuildFailure() *BuildFailure {
   249  	if x != nil {
   250  		return x.BuildFailure
   251  	}
   252  	return nil
   253  }
   254  
   255  type QueryAnalysisResponse struct {
   256  	state         protoimpl.MessageState
   257  	sizeCache     protoimpl.SizeCache
   258  	unknownFields protoimpl.UnknownFields
   259  
   260  	// The analyses corresponding to the QueryAnalysisRequest.
   261  	Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"`
   262  }
   263  
   264  func (x *QueryAnalysisResponse) Reset() {
   265  	*x = QueryAnalysisResponse{}
   266  	if protoimpl.UnsafeEnabled {
   267  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2]
   268  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   269  		ms.StoreMessageInfo(mi)
   270  	}
   271  }
   272  
   273  func (x *QueryAnalysisResponse) String() string {
   274  	return protoimpl.X.MessageStringOf(x)
   275  }
   276  
   277  func (*QueryAnalysisResponse) ProtoMessage() {}
   278  
   279  func (x *QueryAnalysisResponse) ProtoReflect() protoreflect.Message {
   280  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2]
   281  	if protoimpl.UnsafeEnabled && x != nil {
   282  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   283  		if ms.LoadMessageInfo() == nil {
   284  			ms.StoreMessageInfo(mi)
   285  		}
   286  		return ms
   287  	}
   288  	return mi.MessageOf(x)
   289  }
   290  
   291  // Deprecated: Use QueryAnalysisResponse.ProtoReflect.Descriptor instead.
   292  func (*QueryAnalysisResponse) Descriptor() ([]byte, []int) {
   293  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{2}
   294  }
   295  
   296  func (x *QueryAnalysisResponse) GetAnalyses() []*Analysis {
   297  	if x != nil {
   298  		return x.Analyses
   299  	}
   300  	return nil
   301  }
   302  
   303  type ListAnalysesRequest struct {
   304  	state         protoimpl.MessageState
   305  	sizeCache     protoimpl.SizeCache
   306  	unknownFields protoimpl.UnknownFields
   307  
   308  	// Optional. The maximum number of analyses to be returned in the response.
   309  	// The service may return fewer than this value.
   310  	// If unspecified, at most 50 analyses will be returned.
   311  	// The maximum value is 200; values above 200 will be coerced to 200.
   312  	PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   313  	// Optional. A page token, received from a previous `ListAnalyses` call.
   314  	// Provide this to retrieve the subsequent page.
   315  	// When paginating, all other parameters provided to `ListAnalyses` must
   316  	// match the call that provided the page token,
   317  	// with the exception of page_size and page_token.
   318  	PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   319  }
   320  
   321  func (x *ListAnalysesRequest) Reset() {
   322  	*x = ListAnalysesRequest{}
   323  	if protoimpl.UnsafeEnabled {
   324  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3]
   325  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   326  		ms.StoreMessageInfo(mi)
   327  	}
   328  }
   329  
   330  func (x *ListAnalysesRequest) String() string {
   331  	return protoimpl.X.MessageStringOf(x)
   332  }
   333  
   334  func (*ListAnalysesRequest) ProtoMessage() {}
   335  
   336  func (x *ListAnalysesRequest) ProtoReflect() protoreflect.Message {
   337  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3]
   338  	if protoimpl.UnsafeEnabled && x != nil {
   339  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   340  		if ms.LoadMessageInfo() == nil {
   341  			ms.StoreMessageInfo(mi)
   342  		}
   343  		return ms
   344  	}
   345  	return mi.MessageOf(x)
   346  }
   347  
   348  // Deprecated: Use ListAnalysesRequest.ProtoReflect.Descriptor instead.
   349  func (*ListAnalysesRequest) Descriptor() ([]byte, []int) {
   350  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{3}
   351  }
   352  
   353  func (x *ListAnalysesRequest) GetPageSize() int32 {
   354  	if x != nil {
   355  		return x.PageSize
   356  	}
   357  	return 0
   358  }
   359  
   360  func (x *ListAnalysesRequest) GetPageToken() string {
   361  	if x != nil {
   362  		return x.PageToken
   363  	}
   364  	return ""
   365  }
   366  
   367  type ListAnalysesResponse struct {
   368  	state         protoimpl.MessageState
   369  	sizeCache     protoimpl.SizeCache
   370  	unknownFields protoimpl.UnknownFields
   371  
   372  	// The analyses corresponding to the ListAnalysesRequest.
   373  	Analyses []*Analysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"`
   374  	// The token to send as `page_token` to retrieve the next page of analyses.
   375  	// If this field is omitted, there are no subsequent pages.
   376  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   377  }
   378  
   379  func (x *ListAnalysesResponse) Reset() {
   380  	*x = ListAnalysesResponse{}
   381  	if protoimpl.UnsafeEnabled {
   382  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4]
   383  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   384  		ms.StoreMessageInfo(mi)
   385  	}
   386  }
   387  
   388  func (x *ListAnalysesResponse) String() string {
   389  	return protoimpl.X.MessageStringOf(x)
   390  }
   391  
   392  func (*ListAnalysesResponse) ProtoMessage() {}
   393  
   394  func (x *ListAnalysesResponse) ProtoReflect() protoreflect.Message {
   395  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4]
   396  	if protoimpl.UnsafeEnabled && x != nil {
   397  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   398  		if ms.LoadMessageInfo() == nil {
   399  			ms.StoreMessageInfo(mi)
   400  		}
   401  		return ms
   402  	}
   403  	return mi.MessageOf(x)
   404  }
   405  
   406  // Deprecated: Use ListAnalysesResponse.ProtoReflect.Descriptor instead.
   407  func (*ListAnalysesResponse) Descriptor() ([]byte, []int) {
   408  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{4}
   409  }
   410  
   411  func (x *ListAnalysesResponse) GetAnalyses() []*Analysis {
   412  	if x != nil {
   413  		return x.Analyses
   414  	}
   415  	return nil
   416  }
   417  
   418  func (x *ListAnalysesResponse) GetNextPageToken() string {
   419  	if x != nil {
   420  		return x.NextPageToken
   421  	}
   422  	return ""
   423  }
   424  
   425  type TriggerAnalysisRequest struct {
   426  	state         protoimpl.MessageState
   427  	sizeCache     protoimpl.SizeCache
   428  	unknownFields protoimpl.UnknownFields
   429  
   430  	// Failure for which to trigger the analysis.
   431  	BuildFailure *BuildFailure `protobuf:"bytes,1,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
   432  	// Optionally, the client can pass the bug associated with the failure.
   433  	// LUCI Bisection will update the bug with analysis progress/result.
   434  	// This is mainly for SoM, which has information about bugs associated
   435  	// with a failure.
   436  	BugInfo []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"`
   437  }
   438  
   439  func (x *TriggerAnalysisRequest) Reset() {
   440  	*x = TriggerAnalysisRequest{}
   441  	if protoimpl.UnsafeEnabled {
   442  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5]
   443  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   444  		ms.StoreMessageInfo(mi)
   445  	}
   446  }
   447  
   448  func (x *TriggerAnalysisRequest) String() string {
   449  	return protoimpl.X.MessageStringOf(x)
   450  }
   451  
   452  func (*TriggerAnalysisRequest) ProtoMessage() {}
   453  
   454  func (x *TriggerAnalysisRequest) ProtoReflect() protoreflect.Message {
   455  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5]
   456  	if protoimpl.UnsafeEnabled && x != nil {
   457  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   458  		if ms.LoadMessageInfo() == nil {
   459  			ms.StoreMessageInfo(mi)
   460  		}
   461  		return ms
   462  	}
   463  	return mi.MessageOf(x)
   464  }
   465  
   466  // Deprecated: Use TriggerAnalysisRequest.ProtoReflect.Descriptor instead.
   467  func (*TriggerAnalysisRequest) Descriptor() ([]byte, []int) {
   468  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{5}
   469  }
   470  
   471  func (x *TriggerAnalysisRequest) GetBuildFailure() *BuildFailure {
   472  	if x != nil {
   473  		return x.BuildFailure
   474  	}
   475  	return nil
   476  }
   477  
   478  func (x *TriggerAnalysisRequest) GetBugInfo() []*BugInfo {
   479  	if x != nil {
   480  		return x.BugInfo
   481  	}
   482  	return nil
   483  }
   484  
   485  type TriggerAnalysisResponse struct {
   486  	state         protoimpl.MessageState
   487  	sizeCache     protoimpl.SizeCache
   488  	unknownFields protoimpl.UnknownFields
   489  
   490  	// The analysis result corresponding to the request.
   491  	// It is either a new analysis or an existing one.
   492  	Result *Analysis `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
   493  	// is_new_analysis will be set to true if a new analysis is triggered.
   494  	// It will be set to false if an existing analysis is used instead.
   495  	IsNewAnalysis bool `protobuf:"varint,2,opt,name=is_new_analysis,json=isNewAnalysis,proto3" json:"is_new_analysis,omitempty"`
   496  }
   497  
   498  func (x *TriggerAnalysisResponse) Reset() {
   499  	*x = TriggerAnalysisResponse{}
   500  	if protoimpl.UnsafeEnabled {
   501  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6]
   502  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   503  		ms.StoreMessageInfo(mi)
   504  	}
   505  }
   506  
   507  func (x *TriggerAnalysisResponse) String() string {
   508  	return protoimpl.X.MessageStringOf(x)
   509  }
   510  
   511  func (*TriggerAnalysisResponse) ProtoMessage() {}
   512  
   513  func (x *TriggerAnalysisResponse) ProtoReflect() protoreflect.Message {
   514  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6]
   515  	if protoimpl.UnsafeEnabled && x != nil {
   516  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   517  		if ms.LoadMessageInfo() == nil {
   518  			ms.StoreMessageInfo(mi)
   519  		}
   520  		return ms
   521  	}
   522  	return mi.MessageOf(x)
   523  }
   524  
   525  // Deprecated: Use TriggerAnalysisResponse.ProtoReflect.Descriptor instead.
   526  func (*TriggerAnalysisResponse) Descriptor() ([]byte, []int) {
   527  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{6}
   528  }
   529  
   530  func (x *TriggerAnalysisResponse) GetResult() *Analysis {
   531  	if x != nil {
   532  		return x.Result
   533  	}
   534  	return nil
   535  }
   536  
   537  func (x *TriggerAnalysisResponse) GetIsNewAnalysis() bool {
   538  	if x != nil {
   539  		return x.IsNewAnalysis
   540  	}
   541  	return false
   542  }
   543  
   544  // Update the information of an analysis,
   545  // e.g. update the bugs associated with an analysis.
   546  // LUCI Bisection will comment on the bug with analysis progress/results.
   547  // Note: Existing bugs associated with the analysis will be replaced.
   548  type UpdateAnalysisRequest struct {
   549  	state         protoimpl.MessageState
   550  	sizeCache     protoimpl.SizeCache
   551  	unknownFields protoimpl.UnknownFields
   552  
   553  	// ID of the analysis.
   554  	AnalysisId string     `protobuf:"bytes,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
   555  	BugInfo    []*BugInfo `protobuf:"bytes,2,rep,name=bug_info,json=bugInfo,proto3" json:"bug_info,omitempty"`
   556  }
   557  
   558  func (x *UpdateAnalysisRequest) Reset() {
   559  	*x = UpdateAnalysisRequest{}
   560  	if protoimpl.UnsafeEnabled {
   561  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7]
   562  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   563  		ms.StoreMessageInfo(mi)
   564  	}
   565  }
   566  
   567  func (x *UpdateAnalysisRequest) String() string {
   568  	return protoimpl.X.MessageStringOf(x)
   569  }
   570  
   571  func (*UpdateAnalysisRequest) ProtoMessage() {}
   572  
   573  func (x *UpdateAnalysisRequest) ProtoReflect() protoreflect.Message {
   574  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7]
   575  	if protoimpl.UnsafeEnabled && x != nil {
   576  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   577  		if ms.LoadMessageInfo() == nil {
   578  			ms.StoreMessageInfo(mi)
   579  		}
   580  		return ms
   581  	}
   582  	return mi.MessageOf(x)
   583  }
   584  
   585  // Deprecated: Use UpdateAnalysisRequest.ProtoReflect.Descriptor instead.
   586  func (*UpdateAnalysisRequest) Descriptor() ([]byte, []int) {
   587  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{7}
   588  }
   589  
   590  func (x *UpdateAnalysisRequest) GetAnalysisId() string {
   591  	if x != nil {
   592  		return x.AnalysisId
   593  	}
   594  	return ""
   595  }
   596  
   597  func (x *UpdateAnalysisRequest) GetBugInfo() []*BugInfo {
   598  	if x != nil {
   599  		return x.BugInfo
   600  	}
   601  	return nil
   602  }
   603  
   604  // Analysis contains result of an analysis.
   605  // Next available tag: 15.
   606  type Analysis struct {
   607  	state         protoimpl.MessageState
   608  	sizeCache     protoimpl.SizeCache
   609  	unknownFields protoimpl.UnknownFields
   610  
   611  	// ID to identify this analysis.
   612  	AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
   613  	// The failure associated with the analysis.
   614  	BuildFailure *BuildFailure `protobuf:"bytes,2,opt,name=build_failure,json=buildFailure,proto3" json:"build_failure,omitempty"`
   615  	// Result status of the analysis.
   616  	Status AnalysisStatus `protobuf:"varint,3,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"`
   617  	// Run status of the analysis.
   618  	// See https://go.chromium.org/luci/bisection/proto/v1/#AnalysisRunStatus
   619  	RunStatus AnalysisRunStatus `protobuf:"varint,4,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"`
   620  	// Buildbucket ID for the last passed build.
   621  	LastPassedBbid int64 `protobuf:"varint,5,opt,name=last_passed_bbid,json=lastPassedBbid,proto3" json:"last_passed_bbid,omitempty"`
   622  	// Buildbucket ID for the first failed build.
   623  	FirstFailedBbid int64 `protobuf:"varint,6,opt,name=first_failed_bbid,json=firstFailedBbid,proto3" json:"first_failed_bbid,omitempty"`
   624  	// Timestamp for the created time of the analysis.
   625  	CreatedTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"`
   626  	// Timestamp for the last updated time of the analysis.
   627  	LastUpdatedTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_updated_time,json=lastUpdatedTime,proto3" json:"last_updated_time,omitempty"`
   628  	// Timestamp for the end time of the analysis.
   629  	EndTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
   630  	// Result of heuristic analysis.
   631  	HeuristicResult *HeuristicAnalysisResult `protobuf:"bytes,10,opt,name=heuristic_result,json=heuristicResult,proto3" json:"heuristic_result,omitempty"`
   632  	// Result of nth-section analysis.
   633  	NthSectionResult *NthSectionAnalysisResult `protobuf:"bytes,11,opt,name=nth_section_result,json=nthSectionResult,proto3" json:"nth_section_result,omitempty"`
   634  	// Builder for the first failed build.
   635  	Builder *proto.BuilderID `protobuf:"bytes,12,opt,name=builder,proto3" json:"builder,omitempty"`
   636  	// Type of the failure associated with the analysis.
   637  	BuildFailureType BuildFailureType `protobuf:"varint,13,opt,name=build_failure_type,json=buildFailureType,proto3,enum=luci.bisection.v1.BuildFailureType" json:"build_failure_type,omitempty"`
   638  	// The culprits for the analysis.
   639  	// For some rare cases, we may get more than one culprit for a regression
   640  	// range. So we set it as repeated field.
   641  	Culprits []*Culprit `protobuf:"bytes,14,rep,name=culprits,proto3" json:"culprits,omitempty"`
   642  }
   643  
   644  func (x *Analysis) Reset() {
   645  	*x = Analysis{}
   646  	if protoimpl.UnsafeEnabled {
   647  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8]
   648  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   649  		ms.StoreMessageInfo(mi)
   650  	}
   651  }
   652  
   653  func (x *Analysis) String() string {
   654  	return protoimpl.X.MessageStringOf(x)
   655  }
   656  
   657  func (*Analysis) ProtoMessage() {}
   658  
   659  func (x *Analysis) ProtoReflect() protoreflect.Message {
   660  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8]
   661  	if protoimpl.UnsafeEnabled && x != nil {
   662  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   663  		if ms.LoadMessageInfo() == nil {
   664  			ms.StoreMessageInfo(mi)
   665  		}
   666  		return ms
   667  	}
   668  	return mi.MessageOf(x)
   669  }
   670  
   671  // Deprecated: Use Analysis.ProtoReflect.Descriptor instead.
   672  func (*Analysis) Descriptor() ([]byte, []int) {
   673  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{8}
   674  }
   675  
   676  func (x *Analysis) GetAnalysisId() int64 {
   677  	if x != nil {
   678  		return x.AnalysisId
   679  	}
   680  	return 0
   681  }
   682  
   683  func (x *Analysis) GetBuildFailure() *BuildFailure {
   684  	if x != nil {
   685  		return x.BuildFailure
   686  	}
   687  	return nil
   688  }
   689  
   690  func (x *Analysis) GetStatus() AnalysisStatus {
   691  	if x != nil {
   692  		return x.Status
   693  	}
   694  	return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
   695  }
   696  
   697  func (x *Analysis) GetRunStatus() AnalysisRunStatus {
   698  	if x != nil {
   699  		return x.RunStatus
   700  	}
   701  	return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED
   702  }
   703  
   704  func (x *Analysis) GetLastPassedBbid() int64 {
   705  	if x != nil {
   706  		return x.LastPassedBbid
   707  	}
   708  	return 0
   709  }
   710  
   711  func (x *Analysis) GetFirstFailedBbid() int64 {
   712  	if x != nil {
   713  		return x.FirstFailedBbid
   714  	}
   715  	return 0
   716  }
   717  
   718  func (x *Analysis) GetCreatedTime() *timestamppb.Timestamp {
   719  	if x != nil {
   720  		return x.CreatedTime
   721  	}
   722  	return nil
   723  }
   724  
   725  func (x *Analysis) GetLastUpdatedTime() *timestamppb.Timestamp {
   726  	if x != nil {
   727  		return x.LastUpdatedTime
   728  	}
   729  	return nil
   730  }
   731  
   732  func (x *Analysis) GetEndTime() *timestamppb.Timestamp {
   733  	if x != nil {
   734  		return x.EndTime
   735  	}
   736  	return nil
   737  }
   738  
   739  func (x *Analysis) GetHeuristicResult() *HeuristicAnalysisResult {
   740  	if x != nil {
   741  		return x.HeuristicResult
   742  	}
   743  	return nil
   744  }
   745  
   746  func (x *Analysis) GetNthSectionResult() *NthSectionAnalysisResult {
   747  	if x != nil {
   748  		return x.NthSectionResult
   749  	}
   750  	return nil
   751  }
   752  
   753  func (x *Analysis) GetBuilder() *proto.BuilderID {
   754  	if x != nil {
   755  		return x.Builder
   756  	}
   757  	return nil
   758  }
   759  
   760  func (x *Analysis) GetBuildFailureType() BuildFailureType {
   761  	if x != nil {
   762  		return x.BuildFailureType
   763  	}
   764  	return BuildFailureType_BUILD_FAILURE_TYPE_UNSPECIFIED
   765  }
   766  
   767  func (x *Analysis) GetCulprits() []*Culprit {
   768  	if x != nil {
   769  		return x.Culprits
   770  	}
   771  	return nil
   772  }
   773  
   774  type BuildFailure struct {
   775  	state         protoimpl.MessageState
   776  	sizeCache     protoimpl.SizeCache
   777  	unknownFields protoimpl.UnknownFields
   778  
   779  	// Buildbucket ID for the failed build.
   780  	Bbid int64 `protobuf:"varint,1,opt,name=bbid,proto3" json:"bbid,omitempty"`
   781  	// failed_step_name should be 'compile' for compile failures.
   782  	FailedStepName string `protobuf:"bytes,2,opt,name=failed_step_name,json=failedStepName,proto3" json:"failed_step_name,omitempty"`
   783  }
   784  
   785  func (x *BuildFailure) Reset() {
   786  	*x = BuildFailure{}
   787  	if protoimpl.UnsafeEnabled {
   788  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9]
   789  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   790  		ms.StoreMessageInfo(mi)
   791  	}
   792  }
   793  
   794  func (x *BuildFailure) String() string {
   795  	return protoimpl.X.MessageStringOf(x)
   796  }
   797  
   798  func (*BuildFailure) ProtoMessage() {}
   799  
   800  func (x *BuildFailure) ProtoReflect() protoreflect.Message {
   801  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9]
   802  	if protoimpl.UnsafeEnabled && x != nil {
   803  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   804  		if ms.LoadMessageInfo() == nil {
   805  			ms.StoreMessageInfo(mi)
   806  		}
   807  		return ms
   808  	}
   809  	return mi.MessageOf(x)
   810  }
   811  
   812  // Deprecated: Use BuildFailure.ProtoReflect.Descriptor instead.
   813  func (*BuildFailure) Descriptor() ([]byte, []int) {
   814  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{9}
   815  }
   816  
   817  func (x *BuildFailure) GetBbid() int64 {
   818  	if x != nil {
   819  		return x.Bbid
   820  	}
   821  	return 0
   822  }
   823  
   824  func (x *BuildFailure) GetFailedStepName() string {
   825  	if x != nil {
   826  		return x.FailedStepName
   827  	}
   828  	return ""
   829  }
   830  
   831  type ListTestAnalysesRequest struct {
   832  	state         protoimpl.MessageState
   833  	sizeCache     protoimpl.SizeCache
   834  	unknownFields protoimpl.UnknownFields
   835  
   836  	// The project that the test analyses belong to.
   837  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
   838  	// Optional. The maximum number of analyses to be returned in the response.
   839  	// The service may return fewer than this value.
   840  	// If unspecified, at most 50 analyses will be returned.
   841  	// The maximum value is 200; values above 200 will be coerced to 200.
   842  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   843  	// Optional. A page token, received from a previous `ListTestAnalyses` call.
   844  	// Provide this to retrieve the subsequent page.
   845  	// When paginating, all other parameters provided to `ListTestAnalyses` must
   846  	// match the call that provided the page token,
   847  	// with the exception of page_size and page_token.
   848  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   849  	// The fields to be included in the response.
   850  	// By default, all fields are included.
   851  	Fields *fieldmaskpb.FieldMask `protobuf:"bytes,4,opt,name=fields,proto3" json:"fields,omitempty"`
   852  }
   853  
   854  func (x *ListTestAnalysesRequest) Reset() {
   855  	*x = ListTestAnalysesRequest{}
   856  	if protoimpl.UnsafeEnabled {
   857  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10]
   858  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   859  		ms.StoreMessageInfo(mi)
   860  	}
   861  }
   862  
   863  func (x *ListTestAnalysesRequest) String() string {
   864  	return protoimpl.X.MessageStringOf(x)
   865  }
   866  
   867  func (*ListTestAnalysesRequest) ProtoMessage() {}
   868  
   869  func (x *ListTestAnalysesRequest) ProtoReflect() protoreflect.Message {
   870  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10]
   871  	if protoimpl.UnsafeEnabled && x != nil {
   872  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   873  		if ms.LoadMessageInfo() == nil {
   874  			ms.StoreMessageInfo(mi)
   875  		}
   876  		return ms
   877  	}
   878  	return mi.MessageOf(x)
   879  }
   880  
   881  // Deprecated: Use ListTestAnalysesRequest.ProtoReflect.Descriptor instead.
   882  func (*ListTestAnalysesRequest) Descriptor() ([]byte, []int) {
   883  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{10}
   884  }
   885  
   886  func (x *ListTestAnalysesRequest) GetProject() string {
   887  	if x != nil {
   888  		return x.Project
   889  	}
   890  	return ""
   891  }
   892  
   893  func (x *ListTestAnalysesRequest) GetPageSize() int32 {
   894  	if x != nil {
   895  		return x.PageSize
   896  	}
   897  	return 0
   898  }
   899  
   900  func (x *ListTestAnalysesRequest) GetPageToken() string {
   901  	if x != nil {
   902  		return x.PageToken
   903  	}
   904  	return ""
   905  }
   906  
   907  func (x *ListTestAnalysesRequest) GetFields() *fieldmaskpb.FieldMask {
   908  	if x != nil {
   909  		return x.Fields
   910  	}
   911  	return nil
   912  }
   913  
   914  type ListTestAnalysesResponse struct {
   915  	state         protoimpl.MessageState
   916  	sizeCache     protoimpl.SizeCache
   917  	unknownFields protoimpl.UnknownFields
   918  
   919  	// The test analyses corresponding to the ListTestAnalysesRequest.
   920  	Analyses []*TestAnalysis `protobuf:"bytes,1,rep,name=analyses,proto3" json:"analyses,omitempty"`
   921  	// The token to send as `page_token` to retrieve the next page of analyses.
   922  	// If this field is omitted, there are no subsequent pages.
   923  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   924  }
   925  
   926  func (x *ListTestAnalysesResponse) Reset() {
   927  	*x = ListTestAnalysesResponse{}
   928  	if protoimpl.UnsafeEnabled {
   929  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11]
   930  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   931  		ms.StoreMessageInfo(mi)
   932  	}
   933  }
   934  
   935  func (x *ListTestAnalysesResponse) String() string {
   936  	return protoimpl.X.MessageStringOf(x)
   937  }
   938  
   939  func (*ListTestAnalysesResponse) ProtoMessage() {}
   940  
   941  func (x *ListTestAnalysesResponse) ProtoReflect() protoreflect.Message {
   942  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11]
   943  	if protoimpl.UnsafeEnabled && x != nil {
   944  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   945  		if ms.LoadMessageInfo() == nil {
   946  			ms.StoreMessageInfo(mi)
   947  		}
   948  		return ms
   949  	}
   950  	return mi.MessageOf(x)
   951  }
   952  
   953  // Deprecated: Use ListTestAnalysesResponse.ProtoReflect.Descriptor instead.
   954  func (*ListTestAnalysesResponse) Descriptor() ([]byte, []int) {
   955  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{11}
   956  }
   957  
   958  func (x *ListTestAnalysesResponse) GetAnalyses() []*TestAnalysis {
   959  	if x != nil {
   960  		return x.Analyses
   961  	}
   962  	return nil
   963  }
   964  
   965  func (x *ListTestAnalysesResponse) GetNextPageToken() string {
   966  	if x != nil {
   967  		return x.NextPageToken
   968  	}
   969  	return ""
   970  }
   971  
   972  type GetTestAnalysisRequest struct {
   973  	state         protoimpl.MessageState
   974  	sizeCache     protoimpl.SizeCache
   975  	unknownFields protoimpl.UnknownFields
   976  
   977  	// ID of the analysis.
   978  	AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
   979  	// The fields to be included in the response.
   980  	// By default, all fields are included.
   981  	Fields *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=fields,proto3" json:"fields,omitempty"`
   982  }
   983  
   984  func (x *GetTestAnalysisRequest) Reset() {
   985  	*x = GetTestAnalysisRequest{}
   986  	if protoimpl.UnsafeEnabled {
   987  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12]
   988  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   989  		ms.StoreMessageInfo(mi)
   990  	}
   991  }
   992  
   993  func (x *GetTestAnalysisRequest) String() string {
   994  	return protoimpl.X.MessageStringOf(x)
   995  }
   996  
   997  func (*GetTestAnalysisRequest) ProtoMessage() {}
   998  
   999  func (x *GetTestAnalysisRequest) ProtoReflect() protoreflect.Message {
  1000  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12]
  1001  	if protoimpl.UnsafeEnabled && x != nil {
  1002  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1003  		if ms.LoadMessageInfo() == nil {
  1004  			ms.StoreMessageInfo(mi)
  1005  		}
  1006  		return ms
  1007  	}
  1008  	return mi.MessageOf(x)
  1009  }
  1010  
  1011  // Deprecated: Use GetTestAnalysisRequest.ProtoReflect.Descriptor instead.
  1012  func (*GetTestAnalysisRequest) Descriptor() ([]byte, []int) {
  1013  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{12}
  1014  }
  1015  
  1016  func (x *GetTestAnalysisRequest) GetAnalysisId() int64 {
  1017  	if x != nil {
  1018  		return x.AnalysisId
  1019  	}
  1020  	return 0
  1021  }
  1022  
  1023  func (x *GetTestAnalysisRequest) GetFields() *fieldmaskpb.FieldMask {
  1024  	if x != nil {
  1025  		return x.Fields
  1026  	}
  1027  	return nil
  1028  }
  1029  
  1030  type TestAnalysis struct {
  1031  	state         protoimpl.MessageState
  1032  	sizeCache     protoimpl.SizeCache
  1033  	unknownFields protoimpl.UnknownFields
  1034  
  1035  	// ID to identify this analysis.
  1036  	AnalysisId int64 `protobuf:"varint,1,opt,name=analysis_id,json=analysisId,proto3" json:"analysis_id,omitempty"`
  1037  	// Timestamp for the create time of the analysis.
  1038  	CreatedTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_time,json=createdTime,proto3" json:"created_time,omitempty"`
  1039  	// Timestamp for the start time of the analysis.
  1040  	StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
  1041  	// Timestamp for the end time of the analysis.
  1042  	EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  1043  	// Result status of the analysis.
  1044  	Status AnalysisStatus `protobuf:"varint,5,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"`
  1045  	// Run status of the analysis.
  1046  	RunStatus AnalysisRunStatus `protobuf:"varint,6,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"`
  1047  	// The verified culprit for the analysis.
  1048  	Culprit *TestCulprit `protobuf:"bytes,7,opt,name=culprit,proto3" json:"culprit,omitempty"`
  1049  	// The builder that the analysis analyzed.
  1050  	Builder *proto.BuilderID `protobuf:"bytes,8,opt,name=builder,proto3" json:"builder,omitempty"`
  1051  	// Test failures that the analysis analyzed.
  1052  	// The first item will be the primary failure, followed by other failures.
  1053  	// Bisection process will follow the path of the primary test failure.
  1054  	TestFailures []*TestFailure `protobuf:"bytes,9,rep,name=test_failures,json=testFailures,proto3" json:"test_failures,omitempty"`
  1055  	// The start commit of the regression range (exclusive).
  1056  	StartCommit *proto.GitilesCommit `protobuf:"bytes,10,opt,name=start_commit,json=startCommit,proto3" json:"start_commit,omitempty"`
  1057  	// The end commit of the regression range (inclusive).
  1058  	EndCommit *proto.GitilesCommit `protobuf:"bytes,11,opt,name=end_commit,json=endCommit,proto3" json:"end_commit,omitempty"`
  1059  	// The start failure rate of the failures.
  1060  	StartFailureRate float32 `protobuf:"fixed32,12,opt,name=start_failure_rate,json=startFailureRate,proto3" json:"start_failure_rate,omitempty"`
  1061  	// The end failure rate of the failures.
  1062  	EndFailureRate float32 `protobuf:"fixed32,13,opt,name=end_failure_rate,json=endFailureRate,proto3" json:"end_failure_rate,omitempty"`
  1063  	// Sample build bucket ID where the primary test failure failed.
  1064  	SampleBbid int64 `protobuf:"varint,14,opt,name=sample_bbid,json=sampleBbid,proto3" json:"sample_bbid,omitempty"`
  1065  	// Nthsection result.
  1066  	NthSectionResult *TestNthSectionAnalysisResult `protobuf:"bytes,15,opt,name=nth_section_result,json=nthSectionResult,proto3" json:"nth_section_result,omitempty"`
  1067  }
  1068  
  1069  func (x *TestAnalysis) Reset() {
  1070  	*x = TestAnalysis{}
  1071  	if protoimpl.UnsafeEnabled {
  1072  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13]
  1073  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1074  		ms.StoreMessageInfo(mi)
  1075  	}
  1076  }
  1077  
  1078  func (x *TestAnalysis) String() string {
  1079  	return protoimpl.X.MessageStringOf(x)
  1080  }
  1081  
  1082  func (*TestAnalysis) ProtoMessage() {}
  1083  
  1084  func (x *TestAnalysis) ProtoReflect() protoreflect.Message {
  1085  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13]
  1086  	if protoimpl.UnsafeEnabled && x != nil {
  1087  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1088  		if ms.LoadMessageInfo() == nil {
  1089  			ms.StoreMessageInfo(mi)
  1090  		}
  1091  		return ms
  1092  	}
  1093  	return mi.MessageOf(x)
  1094  }
  1095  
  1096  // Deprecated: Use TestAnalysis.ProtoReflect.Descriptor instead.
  1097  func (*TestAnalysis) Descriptor() ([]byte, []int) {
  1098  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{13}
  1099  }
  1100  
  1101  func (x *TestAnalysis) GetAnalysisId() int64 {
  1102  	if x != nil {
  1103  		return x.AnalysisId
  1104  	}
  1105  	return 0
  1106  }
  1107  
  1108  func (x *TestAnalysis) GetCreatedTime() *timestamppb.Timestamp {
  1109  	if x != nil {
  1110  		return x.CreatedTime
  1111  	}
  1112  	return nil
  1113  }
  1114  
  1115  func (x *TestAnalysis) GetStartTime() *timestamppb.Timestamp {
  1116  	if x != nil {
  1117  		return x.StartTime
  1118  	}
  1119  	return nil
  1120  }
  1121  
  1122  func (x *TestAnalysis) GetEndTime() *timestamppb.Timestamp {
  1123  	if x != nil {
  1124  		return x.EndTime
  1125  	}
  1126  	return nil
  1127  }
  1128  
  1129  func (x *TestAnalysis) GetStatus() AnalysisStatus {
  1130  	if x != nil {
  1131  		return x.Status
  1132  	}
  1133  	return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
  1134  }
  1135  
  1136  func (x *TestAnalysis) GetRunStatus() AnalysisRunStatus {
  1137  	if x != nil {
  1138  		return x.RunStatus
  1139  	}
  1140  	return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED
  1141  }
  1142  
  1143  func (x *TestAnalysis) GetCulprit() *TestCulprit {
  1144  	if x != nil {
  1145  		return x.Culprit
  1146  	}
  1147  	return nil
  1148  }
  1149  
  1150  func (x *TestAnalysis) GetBuilder() *proto.BuilderID {
  1151  	if x != nil {
  1152  		return x.Builder
  1153  	}
  1154  	return nil
  1155  }
  1156  
  1157  func (x *TestAnalysis) GetTestFailures() []*TestFailure {
  1158  	if x != nil {
  1159  		return x.TestFailures
  1160  	}
  1161  	return nil
  1162  }
  1163  
  1164  func (x *TestAnalysis) GetStartCommit() *proto.GitilesCommit {
  1165  	if x != nil {
  1166  		return x.StartCommit
  1167  	}
  1168  	return nil
  1169  }
  1170  
  1171  func (x *TestAnalysis) GetEndCommit() *proto.GitilesCommit {
  1172  	if x != nil {
  1173  		return x.EndCommit
  1174  	}
  1175  	return nil
  1176  }
  1177  
  1178  func (x *TestAnalysis) GetStartFailureRate() float32 {
  1179  	if x != nil {
  1180  		return x.StartFailureRate
  1181  	}
  1182  	return 0
  1183  }
  1184  
  1185  func (x *TestAnalysis) GetEndFailureRate() float32 {
  1186  	if x != nil {
  1187  		return x.EndFailureRate
  1188  	}
  1189  	return 0
  1190  }
  1191  
  1192  func (x *TestAnalysis) GetSampleBbid() int64 {
  1193  	if x != nil {
  1194  		return x.SampleBbid
  1195  	}
  1196  	return 0
  1197  }
  1198  
  1199  func (x *TestAnalysis) GetNthSectionResult() *TestNthSectionAnalysisResult {
  1200  	if x != nil {
  1201  		return x.NthSectionResult
  1202  	}
  1203  	return nil
  1204  }
  1205  
  1206  type TestFailure struct {
  1207  	state         protoimpl.MessageState
  1208  	sizeCache     protoimpl.SizeCache
  1209  	unknownFields protoimpl.UnknownFields
  1210  
  1211  	// The ID of the test.
  1212  	TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
  1213  	// The variant hash of the test.
  1214  	VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
  1215  	// Hash to identify the branch in the source control.
  1216  	RefHash string `protobuf:"bytes,3,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"`
  1217  	// The variant of the test.
  1218  	Variant *Variant `protobuf:"bytes,4,opt,name=variant,proto3" json:"variant,omitempty"`
  1219  	// Whether the test failure was diverged from the primary test failure
  1220  	// during the bisection process.
  1221  	IsDiverged bool `protobuf:"varint,5,opt,name=is_diverged,json=isDiverged,proto3" json:"is_diverged,omitempty"`
  1222  	// Whether the test failure is a primary failure or not.
  1223  	IsPrimary bool `protobuf:"varint,6,opt,name=is_primary,json=isPrimary,proto3" json:"is_primary,omitempty"`
  1224  	// Start hour of the test failure.
  1225  	StartHour *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=start_hour,json=startHour,proto3" json:"start_hour,omitempty"`
  1226  }
  1227  
  1228  func (x *TestFailure) Reset() {
  1229  	*x = TestFailure{}
  1230  	if protoimpl.UnsafeEnabled {
  1231  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14]
  1232  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1233  		ms.StoreMessageInfo(mi)
  1234  	}
  1235  }
  1236  
  1237  func (x *TestFailure) String() string {
  1238  	return protoimpl.X.MessageStringOf(x)
  1239  }
  1240  
  1241  func (*TestFailure) ProtoMessage() {}
  1242  
  1243  func (x *TestFailure) ProtoReflect() protoreflect.Message {
  1244  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14]
  1245  	if protoimpl.UnsafeEnabled && x != nil {
  1246  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1247  		if ms.LoadMessageInfo() == nil {
  1248  			ms.StoreMessageInfo(mi)
  1249  		}
  1250  		return ms
  1251  	}
  1252  	return mi.MessageOf(x)
  1253  }
  1254  
  1255  // Deprecated: Use TestFailure.ProtoReflect.Descriptor instead.
  1256  func (*TestFailure) Descriptor() ([]byte, []int) {
  1257  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{14}
  1258  }
  1259  
  1260  func (x *TestFailure) GetTestId() string {
  1261  	if x != nil {
  1262  		return x.TestId
  1263  	}
  1264  	return ""
  1265  }
  1266  
  1267  func (x *TestFailure) GetVariantHash() string {
  1268  	if x != nil {
  1269  		return x.VariantHash
  1270  	}
  1271  	return ""
  1272  }
  1273  
  1274  func (x *TestFailure) GetRefHash() string {
  1275  	if x != nil {
  1276  		return x.RefHash
  1277  	}
  1278  	return ""
  1279  }
  1280  
  1281  func (x *TestFailure) GetVariant() *Variant {
  1282  	if x != nil {
  1283  		return x.Variant
  1284  	}
  1285  	return nil
  1286  }
  1287  
  1288  func (x *TestFailure) GetIsDiverged() bool {
  1289  	if x != nil {
  1290  		return x.IsDiverged
  1291  	}
  1292  	return false
  1293  }
  1294  
  1295  func (x *TestFailure) GetIsPrimary() bool {
  1296  	if x != nil {
  1297  		return x.IsPrimary
  1298  	}
  1299  	return false
  1300  }
  1301  
  1302  func (x *TestFailure) GetStartHour() *timestamppb.Timestamp {
  1303  	if x != nil {
  1304  		return x.StartHour
  1305  	}
  1306  	return nil
  1307  }
  1308  
  1309  type TestNthSectionAnalysisResult struct {
  1310  	state         protoimpl.MessageState
  1311  	sizeCache     protoimpl.SizeCache
  1312  	unknownFields protoimpl.UnknownFields
  1313  
  1314  	// The status of the nth-section analysis.
  1315  	Status AnalysisStatus `protobuf:"varint,1,opt,name=status,proto3,enum=luci.bisection.v1.AnalysisStatus" json:"status,omitempty"`
  1316  	// The run status of the nth-section analysis.
  1317  	RunStatus AnalysisRunStatus `protobuf:"varint,2,opt,name=run_status,json=runStatus,proto3,enum=luci.bisection.v1.AnalysisRunStatus" json:"run_status,omitempty"`
  1318  	// Timestamp for the start time of the nth-section analysis.
  1319  	StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
  1320  	// Timestamp for the end time of the nth-section analysis.
  1321  	EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  1322  	// Optional, when status = RUNNING. This is the possible commit range of the
  1323  	// culprit. This will be updated as the nth-section progress.
  1324  	// This will only be available if nthsection is still running (not ended).
  1325  	RemainingNthSectionRange *RegressionRange `protobuf:"bytes,5,opt,name=remaining_nth_section_range,json=remainingNthSectionRange,proto3" json:"remaining_nth_section_range,omitempty"`
  1326  	// List of the reruns that have been run so far for the nth-section analysis.
  1327  	// The runs are sorted by the create timestamp.
  1328  	Reruns []*TestSingleRerun `protobuf:"bytes,6,rep,name=reruns,proto3" json:"reruns,omitempty"`
  1329  	// The blame list of commits to run the nth-section analysis on.
  1330  	// The commits are sorted by recency, with the most recent commit first.
  1331  	BlameList *BlameList `protobuf:"bytes,7,opt,name=blame_list,json=blameList,proto3" json:"blame_list,omitempty"`
  1332  	// Optional, when nth-section has found a culprit.
  1333  	Suspect *TestCulprit `protobuf:"bytes,8,opt,name=suspect,proto3" json:"suspect,omitempty"`
  1334  }
  1335  
  1336  func (x *TestNthSectionAnalysisResult) Reset() {
  1337  	*x = TestNthSectionAnalysisResult{}
  1338  	if protoimpl.UnsafeEnabled {
  1339  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15]
  1340  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1341  		ms.StoreMessageInfo(mi)
  1342  	}
  1343  }
  1344  
  1345  func (x *TestNthSectionAnalysisResult) String() string {
  1346  	return protoimpl.X.MessageStringOf(x)
  1347  }
  1348  
  1349  func (*TestNthSectionAnalysisResult) ProtoMessage() {}
  1350  
  1351  func (x *TestNthSectionAnalysisResult) ProtoReflect() protoreflect.Message {
  1352  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15]
  1353  	if protoimpl.UnsafeEnabled && x != nil {
  1354  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1355  		if ms.LoadMessageInfo() == nil {
  1356  			ms.StoreMessageInfo(mi)
  1357  		}
  1358  		return ms
  1359  	}
  1360  	return mi.MessageOf(x)
  1361  }
  1362  
  1363  // Deprecated: Use TestNthSectionAnalysisResult.ProtoReflect.Descriptor instead.
  1364  func (*TestNthSectionAnalysisResult) Descriptor() ([]byte, []int) {
  1365  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{15}
  1366  }
  1367  
  1368  func (x *TestNthSectionAnalysisResult) GetStatus() AnalysisStatus {
  1369  	if x != nil {
  1370  		return x.Status
  1371  	}
  1372  	return AnalysisStatus_ANALYSIS_STATUS_UNSPECIFIED
  1373  }
  1374  
  1375  func (x *TestNthSectionAnalysisResult) GetRunStatus() AnalysisRunStatus {
  1376  	if x != nil {
  1377  		return x.RunStatus
  1378  	}
  1379  	return AnalysisRunStatus_ANALYSIS_RUN_STATUS_UNSPECIFIED
  1380  }
  1381  
  1382  func (x *TestNthSectionAnalysisResult) GetStartTime() *timestamppb.Timestamp {
  1383  	if x != nil {
  1384  		return x.StartTime
  1385  	}
  1386  	return nil
  1387  }
  1388  
  1389  func (x *TestNthSectionAnalysisResult) GetEndTime() *timestamppb.Timestamp {
  1390  	if x != nil {
  1391  		return x.EndTime
  1392  	}
  1393  	return nil
  1394  }
  1395  
  1396  func (x *TestNthSectionAnalysisResult) GetRemainingNthSectionRange() *RegressionRange {
  1397  	if x != nil {
  1398  		return x.RemainingNthSectionRange
  1399  	}
  1400  	return nil
  1401  }
  1402  
  1403  func (x *TestNthSectionAnalysisResult) GetReruns() []*TestSingleRerun {
  1404  	if x != nil {
  1405  		return x.Reruns
  1406  	}
  1407  	return nil
  1408  }
  1409  
  1410  func (x *TestNthSectionAnalysisResult) GetBlameList() *BlameList {
  1411  	if x != nil {
  1412  		return x.BlameList
  1413  	}
  1414  	return nil
  1415  }
  1416  
  1417  func (x *TestNthSectionAnalysisResult) GetSuspect() *TestCulprit {
  1418  	if x != nil {
  1419  		return x.Suspect
  1420  	}
  1421  	return nil
  1422  }
  1423  
  1424  type TestSingleRerun struct {
  1425  	state         protoimpl.MessageState
  1426  	sizeCache     protoimpl.SizeCache
  1427  	unknownFields protoimpl.UnknownFields
  1428  
  1429  	// Buildbucket ID of the rerun build.
  1430  	Bbid int64 `protobuf:"varint,1,opt,name=bbid,proto3" json:"bbid,omitempty"`
  1431  	// Timestamp for the create time of the rerun.
  1432  	CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
  1433  	// Timestamp for the start time of the rerun.
  1434  	StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
  1435  	// Timestamp for the end time of the rerun.
  1436  	EndTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  1437  	// Timestamp when the rerun send the result to bisection from recipe.
  1438  	ReportTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=report_time,json=reportTime,proto3" json:"report_time,omitempty"`
  1439  	// ID of the bot that runs the rerun.
  1440  	BotId string `protobuf:"bytes,6,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
  1441  	// Result of the rerun.
  1442  	RerunResult *RerunTestResults `protobuf:"bytes,7,opt,name=rerun_result,json=rerunResult,proto3" json:"rerun_result,omitempty"`
  1443  	// Gitiles commit to do the rerun with.
  1444  	Commit *proto.GitilesCommit `protobuf:"bytes,8,opt,name=commit,proto3" json:"commit,omitempty"`
  1445  	// Index of the commit to rerun within the blamelist, if this is an
  1446  	// nth-section rerun. We need to use a string instead of an int here because
  1447  	// 0 is a possible valid value but would get lost due to the "omitempty" flag
  1448  	// in the generated proto.
  1449  	// There is one case where the index is not populated (empty string). It is when
  1450  	// the culprit is the (last pass + 1) position, and this rerun is for parent commit
  1451  	// of the culprit verification. In such cases, the parent commit (last pass) is not found in the
  1452  	// blamelist (this blamelist is (last pass, first fail]). In such case, index will be "".
  1453  	Index string `protobuf:"bytes,9,opt,name=index,proto3" json:"index,omitempty"`
  1454  }
  1455  
  1456  func (x *TestSingleRerun) Reset() {
  1457  	*x = TestSingleRerun{}
  1458  	if protoimpl.UnsafeEnabled {
  1459  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16]
  1460  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1461  		ms.StoreMessageInfo(mi)
  1462  	}
  1463  }
  1464  
  1465  func (x *TestSingleRerun) String() string {
  1466  	return protoimpl.X.MessageStringOf(x)
  1467  }
  1468  
  1469  func (*TestSingleRerun) ProtoMessage() {}
  1470  
  1471  func (x *TestSingleRerun) ProtoReflect() protoreflect.Message {
  1472  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16]
  1473  	if protoimpl.UnsafeEnabled && x != nil {
  1474  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1475  		if ms.LoadMessageInfo() == nil {
  1476  			ms.StoreMessageInfo(mi)
  1477  		}
  1478  		return ms
  1479  	}
  1480  	return mi.MessageOf(x)
  1481  }
  1482  
  1483  // Deprecated: Use TestSingleRerun.ProtoReflect.Descriptor instead.
  1484  func (*TestSingleRerun) Descriptor() ([]byte, []int) {
  1485  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{16}
  1486  }
  1487  
  1488  func (x *TestSingleRerun) GetBbid() int64 {
  1489  	if x != nil {
  1490  		return x.Bbid
  1491  	}
  1492  	return 0
  1493  }
  1494  
  1495  func (x *TestSingleRerun) GetCreateTime() *timestamppb.Timestamp {
  1496  	if x != nil {
  1497  		return x.CreateTime
  1498  	}
  1499  	return nil
  1500  }
  1501  
  1502  func (x *TestSingleRerun) GetStartTime() *timestamppb.Timestamp {
  1503  	if x != nil {
  1504  		return x.StartTime
  1505  	}
  1506  	return nil
  1507  }
  1508  
  1509  func (x *TestSingleRerun) GetEndTime() *timestamppb.Timestamp {
  1510  	if x != nil {
  1511  		return x.EndTime
  1512  	}
  1513  	return nil
  1514  }
  1515  
  1516  func (x *TestSingleRerun) GetReportTime() *timestamppb.Timestamp {
  1517  	if x != nil {
  1518  		return x.ReportTime
  1519  	}
  1520  	return nil
  1521  }
  1522  
  1523  func (x *TestSingleRerun) GetBotId() string {
  1524  	if x != nil {
  1525  		return x.BotId
  1526  	}
  1527  	return ""
  1528  }
  1529  
  1530  func (x *TestSingleRerun) GetRerunResult() *RerunTestResults {
  1531  	if x != nil {
  1532  		return x.RerunResult
  1533  	}
  1534  	return nil
  1535  }
  1536  
  1537  func (x *TestSingleRerun) GetCommit() *proto.GitilesCommit {
  1538  	if x != nil {
  1539  		return x.Commit
  1540  	}
  1541  	return nil
  1542  }
  1543  
  1544  func (x *TestSingleRerun) GetIndex() string {
  1545  	if x != nil {
  1546  		return x.Index
  1547  	}
  1548  	return ""
  1549  }
  1550  
  1551  type RerunTestResults struct {
  1552  	state         protoimpl.MessageState
  1553  	sizeCache     protoimpl.SizeCache
  1554  	unknownFields protoimpl.UnknownFields
  1555  
  1556  	Results []*RerunTestSingleResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
  1557  	// Status of the rerun.
  1558  	RerunStatus RerunStatus `protobuf:"varint,2,opt,name=rerun_status,json=rerunStatus,proto3,enum=luci.bisection.v1.RerunStatus" json:"rerun_status,omitempty"`
  1559  }
  1560  
  1561  func (x *RerunTestResults) Reset() {
  1562  	*x = RerunTestResults{}
  1563  	if protoimpl.UnsafeEnabled {
  1564  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17]
  1565  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1566  		ms.StoreMessageInfo(mi)
  1567  	}
  1568  }
  1569  
  1570  func (x *RerunTestResults) String() string {
  1571  	return protoimpl.X.MessageStringOf(x)
  1572  }
  1573  
  1574  func (*RerunTestResults) ProtoMessage() {}
  1575  
  1576  func (x *RerunTestResults) ProtoReflect() protoreflect.Message {
  1577  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17]
  1578  	if protoimpl.UnsafeEnabled && x != nil {
  1579  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1580  		if ms.LoadMessageInfo() == nil {
  1581  			ms.StoreMessageInfo(mi)
  1582  		}
  1583  		return ms
  1584  	}
  1585  	return mi.MessageOf(x)
  1586  }
  1587  
  1588  // Deprecated: Use RerunTestResults.ProtoReflect.Descriptor instead.
  1589  func (*RerunTestResults) Descriptor() ([]byte, []int) {
  1590  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{17}
  1591  }
  1592  
  1593  func (x *RerunTestResults) GetResults() []*RerunTestSingleResult {
  1594  	if x != nil {
  1595  		return x.Results
  1596  	}
  1597  	return nil
  1598  }
  1599  
  1600  func (x *RerunTestResults) GetRerunStatus() RerunStatus {
  1601  	if x != nil {
  1602  		return x.RerunStatus
  1603  	}
  1604  	return RerunStatus_RERUN_STATUS_UNSPECIFIED
  1605  }
  1606  
  1607  type RerunTestSingleResult struct {
  1608  	state         protoimpl.MessageState
  1609  	sizeCache     protoimpl.SizeCache
  1610  	unknownFields protoimpl.UnknownFields
  1611  
  1612  	// Test ID of the result.
  1613  	TestId string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
  1614  	// Variant hash of the result.
  1615  	VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
  1616  	// Number of expected results.
  1617  	ExpectedCount int64 `protobuf:"varint,3,opt,name=expected_count,json=expectedCount,proto3" json:"expected_count,omitempty"`
  1618  	// Number of unexpected results.
  1619  	UnexpectedCount int64 `protobuf:"varint,4,opt,name=unexpected_count,json=unexpectedCount,proto3" json:"unexpected_count,omitempty"`
  1620  }
  1621  
  1622  func (x *RerunTestSingleResult) Reset() {
  1623  	*x = RerunTestSingleResult{}
  1624  	if protoimpl.UnsafeEnabled {
  1625  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18]
  1626  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1627  		ms.StoreMessageInfo(mi)
  1628  	}
  1629  }
  1630  
  1631  func (x *RerunTestSingleResult) String() string {
  1632  	return protoimpl.X.MessageStringOf(x)
  1633  }
  1634  
  1635  func (*RerunTestSingleResult) ProtoMessage() {}
  1636  
  1637  func (x *RerunTestSingleResult) ProtoReflect() protoreflect.Message {
  1638  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18]
  1639  	if protoimpl.UnsafeEnabled && x != nil {
  1640  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1641  		if ms.LoadMessageInfo() == nil {
  1642  			ms.StoreMessageInfo(mi)
  1643  		}
  1644  		return ms
  1645  	}
  1646  	return mi.MessageOf(x)
  1647  }
  1648  
  1649  // Deprecated: Use RerunTestSingleResult.ProtoReflect.Descriptor instead.
  1650  func (*RerunTestSingleResult) Descriptor() ([]byte, []int) {
  1651  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{18}
  1652  }
  1653  
  1654  func (x *RerunTestSingleResult) GetTestId() string {
  1655  	if x != nil {
  1656  		return x.TestId
  1657  	}
  1658  	return ""
  1659  }
  1660  
  1661  func (x *RerunTestSingleResult) GetVariantHash() string {
  1662  	if x != nil {
  1663  		return x.VariantHash
  1664  	}
  1665  	return ""
  1666  }
  1667  
  1668  func (x *RerunTestSingleResult) GetExpectedCount() int64 {
  1669  	if x != nil {
  1670  		return x.ExpectedCount
  1671  	}
  1672  	return 0
  1673  }
  1674  
  1675  func (x *RerunTestSingleResult) GetUnexpectedCount() int64 {
  1676  	if x != nil {
  1677  		return x.UnexpectedCount
  1678  	}
  1679  	return 0
  1680  }
  1681  
  1682  type TestSuspectVerificationDetails struct {
  1683  	state         protoimpl.MessageState
  1684  	sizeCache     protoimpl.SizeCache
  1685  	unknownFields protoimpl.UnknownFields
  1686  
  1687  	// The status of the suspect verification.
  1688  	Status SuspectVerificationStatus `protobuf:"varint,1,opt,name=status,proto3,enum=luci.bisection.v1.SuspectVerificationStatus" json:"status,omitempty"`
  1689  	// The verification rerun build for the suspect commit.
  1690  	SuspectRerun *TestSingleRerun `protobuf:"bytes,2,opt,name=suspect_rerun,json=suspectRerun,proto3" json:"suspect_rerun,omitempty"`
  1691  	// The verification rerun build for the parent commit of the suspect.
  1692  	ParentRerun *TestSingleRerun `protobuf:"bytes,3,opt,name=parent_rerun,json=parentRerun,proto3" json:"parent_rerun,omitempty"`
  1693  }
  1694  
  1695  func (x *TestSuspectVerificationDetails) Reset() {
  1696  	*x = TestSuspectVerificationDetails{}
  1697  	if protoimpl.UnsafeEnabled {
  1698  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19]
  1699  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1700  		ms.StoreMessageInfo(mi)
  1701  	}
  1702  }
  1703  
  1704  func (x *TestSuspectVerificationDetails) String() string {
  1705  	return protoimpl.X.MessageStringOf(x)
  1706  }
  1707  
  1708  func (*TestSuspectVerificationDetails) ProtoMessage() {}
  1709  
  1710  func (x *TestSuspectVerificationDetails) ProtoReflect() protoreflect.Message {
  1711  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19]
  1712  	if protoimpl.UnsafeEnabled && x != nil {
  1713  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1714  		if ms.LoadMessageInfo() == nil {
  1715  			ms.StoreMessageInfo(mi)
  1716  		}
  1717  		return ms
  1718  	}
  1719  	return mi.MessageOf(x)
  1720  }
  1721  
  1722  // Deprecated: Use TestSuspectVerificationDetails.ProtoReflect.Descriptor instead.
  1723  func (*TestSuspectVerificationDetails) Descriptor() ([]byte, []int) {
  1724  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{19}
  1725  }
  1726  
  1727  func (x *TestSuspectVerificationDetails) GetStatus() SuspectVerificationStatus {
  1728  	if x != nil {
  1729  		return x.Status
  1730  	}
  1731  	return SuspectVerificationStatus_SUSPECT_VERIFICATION_STATUS_UNSPECIFIED
  1732  }
  1733  
  1734  func (x *TestSuspectVerificationDetails) GetSuspectRerun() *TestSingleRerun {
  1735  	if x != nil {
  1736  		return x.SuspectRerun
  1737  	}
  1738  	return nil
  1739  }
  1740  
  1741  func (x *TestSuspectVerificationDetails) GetParentRerun() *TestSingleRerun {
  1742  	if x != nil {
  1743  		return x.ParentRerun
  1744  	}
  1745  	return nil
  1746  }
  1747  
  1748  type TestCulprit struct {
  1749  	state         protoimpl.MessageState
  1750  	sizeCache     protoimpl.SizeCache
  1751  	unknownFields protoimpl.UnknownFields
  1752  
  1753  	// The gitiles commit for the culprit.
  1754  	Commit *proto.GitilesCommit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
  1755  	// The review URL for the culprit.
  1756  	ReviewUrl string `protobuf:"bytes,2,opt,name=review_url,json=reviewUrl,proto3" json:"review_url,omitempty"`
  1757  	// The review title for the culprit.
  1758  	ReviewTitle string `protobuf:"bytes,3,opt,name=review_title,json=reviewTitle,proto3" json:"review_title,omitempty"`
  1759  	// Actions we have taken with the culprit.
  1760  	// More than one action may be taken, for example, reverting the culprit and
  1761  	// commenting on the bug.
  1762  	CulpritAction []*CulpritAction `protobuf:"bytes,4,rep,name=culprit_action,json=culpritAction,proto3" json:"culprit_action,omitempty"`
  1763  	// The details of suspect verification for the culprit.
  1764  	VerificationDetails *TestSuspectVerificationDetails `protobuf:"bytes,5,opt,name=verification_details,json=verificationDetails,proto3" json:"verification_details,omitempty"`
  1765  }
  1766  
  1767  func (x *TestCulprit) Reset() {
  1768  	*x = TestCulprit{}
  1769  	if protoimpl.UnsafeEnabled {
  1770  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20]
  1771  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1772  		ms.StoreMessageInfo(mi)
  1773  	}
  1774  }
  1775  
  1776  func (x *TestCulprit) String() string {
  1777  	return protoimpl.X.MessageStringOf(x)
  1778  }
  1779  
  1780  func (*TestCulprit) ProtoMessage() {}
  1781  
  1782  func (x *TestCulprit) ProtoReflect() protoreflect.Message {
  1783  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20]
  1784  	if protoimpl.UnsafeEnabled && x != nil {
  1785  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1786  		if ms.LoadMessageInfo() == nil {
  1787  			ms.StoreMessageInfo(mi)
  1788  		}
  1789  		return ms
  1790  	}
  1791  	return mi.MessageOf(x)
  1792  }
  1793  
  1794  // Deprecated: Use TestCulprit.ProtoReflect.Descriptor instead.
  1795  func (*TestCulprit) Descriptor() ([]byte, []int) {
  1796  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{20}
  1797  }
  1798  
  1799  func (x *TestCulprit) GetCommit() *proto.GitilesCommit {
  1800  	if x != nil {
  1801  		return x.Commit
  1802  	}
  1803  	return nil
  1804  }
  1805  
  1806  func (x *TestCulprit) GetReviewUrl() string {
  1807  	if x != nil {
  1808  		return x.ReviewUrl
  1809  	}
  1810  	return ""
  1811  }
  1812  
  1813  func (x *TestCulprit) GetReviewTitle() string {
  1814  	if x != nil {
  1815  		return x.ReviewTitle
  1816  	}
  1817  	return ""
  1818  }
  1819  
  1820  func (x *TestCulprit) GetCulpritAction() []*CulpritAction {
  1821  	if x != nil {
  1822  		return x.CulpritAction
  1823  	}
  1824  	return nil
  1825  }
  1826  
  1827  func (x *TestCulprit) GetVerificationDetails() *TestSuspectVerificationDetails {
  1828  	if x != nil {
  1829  		return x.VerificationDetails
  1830  	}
  1831  	return nil
  1832  }
  1833  
  1834  type BatchGetTestAnalysesRequest struct {
  1835  	state         protoimpl.MessageState
  1836  	sizeCache     protoimpl.SizeCache
  1837  	unknownFields protoimpl.UnknownFields
  1838  
  1839  	// The LUCI project.
  1840  	Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
  1841  	// The response will only contain analyses which analyze failures in this list.
  1842  	// It is an error to request for more than 100 test failures.
  1843  	TestFailures []*BatchGetTestAnalysesRequest_TestFailureIdentifier `protobuf:"bytes,2,rep,name=test_failures,json=testFailures,proto3" json:"test_failures,omitempty"`
  1844  	// The fields to be included in the response.
  1845  	// By default, all fields are included.
  1846  	Fields *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=fields,proto3" json:"fields,omitempty"`
  1847  }
  1848  
  1849  func (x *BatchGetTestAnalysesRequest) Reset() {
  1850  	*x = BatchGetTestAnalysesRequest{}
  1851  	if protoimpl.UnsafeEnabled {
  1852  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21]
  1853  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1854  		ms.StoreMessageInfo(mi)
  1855  	}
  1856  }
  1857  
  1858  func (x *BatchGetTestAnalysesRequest) String() string {
  1859  	return protoimpl.X.MessageStringOf(x)
  1860  }
  1861  
  1862  func (*BatchGetTestAnalysesRequest) ProtoMessage() {}
  1863  
  1864  func (x *BatchGetTestAnalysesRequest) ProtoReflect() protoreflect.Message {
  1865  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21]
  1866  	if protoimpl.UnsafeEnabled && x != nil {
  1867  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1868  		if ms.LoadMessageInfo() == nil {
  1869  			ms.StoreMessageInfo(mi)
  1870  		}
  1871  		return ms
  1872  	}
  1873  	return mi.MessageOf(x)
  1874  }
  1875  
  1876  // Deprecated: Use BatchGetTestAnalysesRequest.ProtoReflect.Descriptor instead.
  1877  func (*BatchGetTestAnalysesRequest) Descriptor() ([]byte, []int) {
  1878  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{21}
  1879  }
  1880  
  1881  func (x *BatchGetTestAnalysesRequest) GetProject() string {
  1882  	if x != nil {
  1883  		return x.Project
  1884  	}
  1885  	return ""
  1886  }
  1887  
  1888  func (x *BatchGetTestAnalysesRequest) GetTestFailures() []*BatchGetTestAnalysesRequest_TestFailureIdentifier {
  1889  	if x != nil {
  1890  		return x.TestFailures
  1891  	}
  1892  	return nil
  1893  }
  1894  
  1895  func (x *BatchGetTestAnalysesRequest) GetFields() *fieldmaskpb.FieldMask {
  1896  	if x != nil {
  1897  		return x.Fields
  1898  	}
  1899  	return nil
  1900  }
  1901  
  1902  type BatchGetTestAnalysesResponse struct {
  1903  	state         protoimpl.MessageState
  1904  	sizeCache     protoimpl.SizeCache
  1905  	unknownFields protoimpl.UnknownFields
  1906  
  1907  	// Test analyses for each test failure in the order they were requested.
  1908  	// The test analysis will be null if the requested test failure has not been
  1909  	// analyzed by any bisection.
  1910  	TestAnalyses []*TestAnalysis `protobuf:"bytes,1,rep,name=test_analyses,json=testAnalyses,proto3" json:"test_analyses,omitempty"`
  1911  }
  1912  
  1913  func (x *BatchGetTestAnalysesResponse) Reset() {
  1914  	*x = BatchGetTestAnalysesResponse{}
  1915  	if protoimpl.UnsafeEnabled {
  1916  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22]
  1917  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1918  		ms.StoreMessageInfo(mi)
  1919  	}
  1920  }
  1921  
  1922  func (x *BatchGetTestAnalysesResponse) String() string {
  1923  	return protoimpl.X.MessageStringOf(x)
  1924  }
  1925  
  1926  func (*BatchGetTestAnalysesResponse) ProtoMessage() {}
  1927  
  1928  func (x *BatchGetTestAnalysesResponse) ProtoReflect() protoreflect.Message {
  1929  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22]
  1930  	if protoimpl.UnsafeEnabled && x != nil {
  1931  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1932  		if ms.LoadMessageInfo() == nil {
  1933  			ms.StoreMessageInfo(mi)
  1934  		}
  1935  		return ms
  1936  	}
  1937  	return mi.MessageOf(x)
  1938  }
  1939  
  1940  // Deprecated: Use BatchGetTestAnalysesResponse.ProtoReflect.Descriptor instead.
  1941  func (*BatchGetTestAnalysesResponse) Descriptor() ([]byte, []int) {
  1942  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{22}
  1943  }
  1944  
  1945  func (x *BatchGetTestAnalysesResponse) GetTestAnalyses() []*TestAnalysis {
  1946  	if x != nil {
  1947  		return x.TestAnalyses
  1948  	}
  1949  	return nil
  1950  }
  1951  
  1952  // Identify a test failure.
  1953  type BatchGetTestAnalysesRequest_TestFailureIdentifier struct {
  1954  	state         protoimpl.MessageState
  1955  	sizeCache     protoimpl.SizeCache
  1956  	unknownFields protoimpl.UnknownFields
  1957  
  1958  	// Identify a test variant. All fields are required.
  1959  	// This represents the ongoing test failure of this test variant.
  1960  	TestId      string `protobuf:"bytes,1,opt,name=test_id,json=testId,proto3" json:"test_id,omitempty"`
  1961  	VariantHash string `protobuf:"bytes,2,opt,name=variant_hash,json=variantHash,proto3" json:"variant_hash,omitempty"`
  1962  	RefHash     string `protobuf:"bytes,3,opt,name=ref_hash,json=refHash,proto3" json:"ref_hash,omitempty"`
  1963  }
  1964  
  1965  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) Reset() {
  1966  	*x = BatchGetTestAnalysesRequest_TestFailureIdentifier{}
  1967  	if protoimpl.UnsafeEnabled {
  1968  		mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23]
  1969  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1970  		ms.StoreMessageInfo(mi)
  1971  	}
  1972  }
  1973  
  1974  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) String() string {
  1975  	return protoimpl.X.MessageStringOf(x)
  1976  }
  1977  
  1978  func (*BatchGetTestAnalysesRequest_TestFailureIdentifier) ProtoMessage() {}
  1979  
  1980  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) ProtoReflect() protoreflect.Message {
  1981  	mi := &file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23]
  1982  	if protoimpl.UnsafeEnabled && x != nil {
  1983  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1984  		if ms.LoadMessageInfo() == nil {
  1985  			ms.StoreMessageInfo(mi)
  1986  		}
  1987  		return ms
  1988  	}
  1989  	return mi.MessageOf(x)
  1990  }
  1991  
  1992  // Deprecated: Use BatchGetTestAnalysesRequest_TestFailureIdentifier.ProtoReflect.Descriptor instead.
  1993  func (*BatchGetTestAnalysesRequest_TestFailureIdentifier) Descriptor() ([]byte, []int) {
  1994  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP(), []int{21, 0}
  1995  }
  1996  
  1997  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetTestId() string {
  1998  	if x != nil {
  1999  		return x.TestId
  2000  	}
  2001  	return ""
  2002  }
  2003  
  2004  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetVariantHash() string {
  2005  	if x != nil {
  2006  		return x.VariantHash
  2007  	}
  2008  	return ""
  2009  }
  2010  
  2011  func (x *BatchGetTestAnalysesRequest_TestFailureIdentifier) GetRefHash() string {
  2012  	if x != nil {
  2013  		return x.RefHash
  2014  	}
  2015  	return ""
  2016  }
  2017  
  2018  var File_go_chromium_org_luci_bisection_proto_v1_analyses_proto protoreflect.FileDescriptor
  2019  
  2020  var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc = []byte{
  2021  	0x0a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  2022  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2023  	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2024  	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62,
  2025  	0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
  2026  	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65,
  2027  	0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f,
  2028  	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69,
  2029  	0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f,
  2030  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
  2031  	0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
  2032  	0x32, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67,
  2033  	0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f,
  2034  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x67, 0x73, 0x2e, 0x70, 0x72,
  2035  	0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d,
  2036  	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74,
  2037  	0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d,
  2038  	0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  2039  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  2040  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
  2041  	0x76, 0x31, 0x2f, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2042  	0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f,
  2043  	0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2044  	0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x75, 0x72, 0x69,
  2045  	0x73, 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x38, 0x67, 0x6f, 0x2e, 0x63,
  2046  	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69,
  2047  	0x2f, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2048  	0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x74, 0x68, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,
  2049  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
  2050  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
  2051  	0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d,
  2052  	0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68,
  2053  	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
  2054  	0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  2055  	0x6f, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
  2056  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61,
  2057  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b,
  2058  	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
  2059  	0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  2060  	0x49, 0x64, 0x22, 0x5c, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79,
  2061  	0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75,
  2062  	0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  2063  	0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2064  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75,
  2065  	0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
  2066  	0x22, 0x50, 0x0a, 0x15, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2067  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x08, 0x61, 0x6e, 0x61,
  2068  	0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75,
  2069  	0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
  2070  	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2071  	0x65, 0x73, 0x22, 0x51, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2072  	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67,
  2073  	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
  2074  	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
  2075  	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
  2076  	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61,
  2077  	0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a,
  2078  	0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
  2079  	0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2080  	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e,
  2081  	0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70,
  2082  	0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  2083  	0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x95,
  2084  	0x01, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2085  	0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 0x69,
  2086  	0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
  2087  	0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2088  	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
  2089  	0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12,
  2090  	0x35, 0x0a, 0x08, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28,
  2091  	0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2092  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62,
  2093  	0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x76, 0x0a, 0x17, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
  2094  	0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2095  	0x65, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
  2096  	0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2097  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x06,
  2098  	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x6e, 0x65, 0x77,
  2099  	0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
  2100  	0x0d, 0x69, 0x73, 0x4e, 0x65, 0x77, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x74,
  2101  	0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  2102  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79,
  2103  	0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
  2104  	0x02, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x35, 0x0a,
  2105  	0x08, 0x62, 0x75, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
  2106  	0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2107  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x62, 0x75, 0x67,
  2108  	0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf7, 0x06, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2109  	0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64,
  2110  	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  2111  	0x49, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c,
  2112  	0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2113  	0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75,
  2114  	0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c,
  2115  	0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
  2116  	0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2117  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61,
  2118  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
  2119  	0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
  2120  	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62,
  2121  	0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c,
  2122  	0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72,
  2123  	0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74,
  2124  	0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01,
  2125  	0x28, 0x03, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x42, 0x62,
  2126  	0x69, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c,
  2127  	0x65, 0x64, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x66,
  2128  	0x69, 0x72, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x62, 0x69, 0x64, 0x12, 0x3d,
  2129  	0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07,
  2130  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2131  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  2132  	0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a,
  2133  	0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69,
  2134  	0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2135  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  2136  	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
  2137  	0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
  2138  	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2139  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
  2140  	0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x10,
  2141  	0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2142  	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69,
  2143  	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x75, 0x72, 0x69,
  2144  	0x73, 0x74, 0x69, 0x63, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75,
  2145  	0x6c, 0x74, 0x52, 0x0f, 0x68, 0x65, 0x75, 0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73,
  2146  	0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x12, 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69,
  2147  	0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2148  	0x2b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2149  	0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e,
  2150  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x6e, 0x74,
  2151  	0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33,
  2152  	0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2153  	0x19, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32,
  2154  	0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x49, 0x44, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c,
  2155  	0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69,
  2156  	0x6c, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32,
  2157  	0x23, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2158  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
  2159  	0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75,
  2160  	0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69,
  2161  	0x74, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2162  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x6c,
  2163  	0x70, 0x72, 0x69, 0x74, 0x52, 0x08, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x73, 0x22, 0x4c,
  2164  	0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x12,
  2165  	0x0a, 0x04, 0x62, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x62, 0x62,
  2166  	0x69, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x65,
  2167  	0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x61,
  2168  	0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x65, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa8, 0x01, 0x0a,
  2169  	0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65,
  2170  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a,
  2171  	0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07,
  2172  	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f,
  2173  	0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65,
  2174  	0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
  2175  	0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f,
  2176  	0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20,
  2177  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  2178  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52,
  2179  	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x7f, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54,
  2180  	0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  2181  	0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18,
  2182  	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73,
  2183  	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e,
  2184  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73,
  2185  	0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f,
  2186  	0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50,
  2187  	0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54,
  2188  	0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
  2189  	0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69,
  2190  	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x61, 0x6e,
  2191  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c,
  2192  	0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2193  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
  2194  	0x4d, 0x61, 0x73, 0x6b, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xec, 0x06, 0x0a,
  2195  	0x0c, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1f, 0x0a,
  2196  	0x0b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
  2197  	0x28, 0x03, 0x52, 0x0a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x3d,
  2198  	0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
  2199  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2200  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  2201  	0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a,
  2202  	0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
  2203  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2204  	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73,
  2205  	0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f,
  2206  	0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  2207  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
  2208  	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
  2209  	0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
  2210  	0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2211  	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x53, 0x74, 0x61, 0x74,
  2212  	0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x72, 0x75,
  2213  	0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
  2214  	0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
  2215  	0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53, 0x74,
  2216  	0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
  2217  	0x38, 0x0a, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
  2218  	0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2219  	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74,
  2220  	0x52, 0x07, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x62, 0x75, 0x69,
  2221  	0x6c, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x69,
  2222  	0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x75, 0x69, 0x6c,
  2223  	0x64, 0x65, 0x72, 0x49, 0x44, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x43,
  2224  	0x0a, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18,
  2225  	0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73,
  2226  	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61,
  2227  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75,
  2228  	0x72, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d,
  2229  	0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c,
  2230  	0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c,
  2231  	0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43,
  2232  	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d,
  2233  	0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c,
  2234  	0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c,
  2235  	0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x09, 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6d,
  2236  	0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x66, 0x61, 0x69,
  2237  	0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52,
  2238  	0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x61, 0x74,
  2239  	0x65, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x6e, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
  2240  	0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x65, 0x6e, 0x64,
  2241  	0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
  2242  	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x62, 0x62, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03,
  2243  	0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x62, 0x69, 0x64, 0x12, 0x5d, 0x0a, 0x12,
  2244  	0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75,
  2245  	0x6c, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2246  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73,
  2247  	0x74, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79,
  2248  	0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x6e, 0x74, 0x68, 0x53, 0x65,
  2249  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x95, 0x02, 0x0a, 0x0b,
  2250  	0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74,
  2251  	0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65,
  2252  	0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f,
  2253  	0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69,
  2254  	0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x68,
  2255  	0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x48, 0x61,
  2256  	0x73, 0x68, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20,
  2257  	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63,
  2258  	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x52,
  2259  	0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x64,
  2260  	0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69,
  2261  	0x73, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f,
  2262  	0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
  2263  	0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72,
  2264  	0x74, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
  2265  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
  2266  	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48,
  2267  	0x6f, 0x75, 0x72, 0x22, 0xa6, 0x04, 0x0a, 0x1c, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x74, 0x68, 0x53,
  2268  	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65,
  2269  	0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01,
  2270  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65,
  2271  	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2272  	0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
  2273  	0x43, 0x0a, 0x0a, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
  2274  	0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63,
  2275  	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73,
  2276  	0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x75, 0x6e, 0x53, 0x74,
  2277  	0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
  2278  	0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2279  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  2280  	0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
  2281  	0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
  2282  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2283  	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65,
  2284  	0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x1b, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e,
  2285  	0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
  2286  	0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75,
  2287  	0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
  2288  	0x52, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52,
  2289  	0x18, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4e, 0x74, 0x68, 0x53, 0x65, 0x63,
  2290  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x72, 0x65, 0x72,
  2291  	0x75, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2292  	0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
  2293  	0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x06, 0x72,
  2294  	0x65, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6c, 0x61, 0x6d, 0x65, 0x5f, 0x6c,
  2295  	0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2296  	0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c,
  2297  	0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x62, 0x6c, 0x61, 0x6d, 0x65, 0x4c, 0x69,
  2298  	0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20,
  2299  	0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63,
  2300  	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x75, 0x6c, 0x70,
  2301  	0x72, 0x69, 0x74, 0x52, 0x07, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x22, 0xbd, 0x03, 0x0a,
  2302  	0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e,
  2303  	0x12, 0x12, 0x0a, 0x04, 0x62, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
  2304  	0x62, 0x62, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74,
  2305  	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2306  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  2307  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
  2308  	0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
  2309  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  2310  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  2311  	0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
  2312  	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  2313  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2314  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
  2315  	0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x69,
  2316  	0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2317  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  2318  	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
  2319  	0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
  2320  	0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e,
  2321  	0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
  2322  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2323  	0x31, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c,
  2324  	0x74, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
  2325  	0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
  2326  	0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32,
  2327  	0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06,
  2328  	0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
  2329  	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x99, 0x01, 0x0a,
  2330  	0x10, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2331  	0x73, 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
  2332  	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74,
  2333  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74,
  2334  	0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65,
  2335  	0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x5f, 0x73,
  2336  	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x75,
  2337  	0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
  2338  	0x52, 0x65, 0x72, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0b, 0x72, 0x65, 0x72,
  2339  	0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x72,
  2340  	0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75,
  2341  	0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
  2342  	0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x76,
  2343  	0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28,
  2344  	0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x25,
  2345  	0x0a, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
  2346  	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64,
  2347  	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63,
  2348  	0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
  2349  	0x0f, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
  2350  	0x22, 0xf6, 0x01, 0x0a, 0x1e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74,
  2351  	0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61,
  2352  	0x69, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
  2353  	0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63,
  2354  	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x56,
  2355  	0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
  2356  	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x73, 0x75, 0x73,
  2357  	0x70, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x72, 0x75, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
  2358  	0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2359  	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52,
  2360  	0x65, 0x72, 0x75, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x52, 0x65, 0x72,
  2361  	0x75, 0x6e, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x72,
  2362  	0x75, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2363  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73,
  2364  	0x74, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x52, 0x0b, 0x70, 0x61,
  2365  	0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x72, 0x75, 0x6e, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x54, 0x65,
  2366  	0x73, 0x74, 0x43, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
  2367  	0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75, 0x69, 0x6c,
  2368  	0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c,
  2369  	0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
  2370  	0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02,
  2371  	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x55, 0x72, 0x6c, 0x12,
  2372  	0x21, 0x0a, 0x0c, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
  2373  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x54, 0x69, 0x74,
  2374  	0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x63, 0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x5f, 0x61, 0x63,
  2375  	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63,
  2376  	0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43,
  2377  	0x75, 0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x75,
  2378  	0x6c, 0x70, 0x72, 0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x14, 0x76,
  2379  	0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61,
  2380  	0x69, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2381  	0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65,
  2382  	0x73, 0x74, 0x53, 0x75, 0x73, 0x70, 0x65, 0x63, 0x74, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63,
  2383  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x13, 0x76, 0x65,
  2384  	0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
  2385  	0x73, 0x22, 0xc6, 0x02, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65,
  2386  	0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2387  	0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
  2388  	0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x69, 0x0a, 0x0d, 0x74,
  2389  	0x65, 0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
  2390  	0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74,
  2391  	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54,
  2392  	0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
  2393  	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x64,
  2394  	0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x46, 0x61,
  2395  	0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73,
  2396  	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2397  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61,
  2398  	0x73, 0x6b, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x6e, 0x0a, 0x15, 0x54, 0x65,
  2399  	0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
  2400  	0x69, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
  2401  	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
  2402  	0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01,
  2403  	0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12,
  2404  	0x19, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
  2405  	0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x48, 0x61, 0x73, 0x68, 0x22, 0x64, 0x0a, 0x1c, 0x42, 0x61,
  2406  	0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2407  	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x65,
  2408  	0x73, 0x74, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
  2409  	0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2410  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2411  	0x69, 0x73, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73,
  2412  	0x2a, 0x5e, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6e, 0x53,
  2413  	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49,
  2414  	0x53, 0x5f, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53,
  2415  	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54,
  2416  	0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x44, 0x45, 0x44,
  2417  	0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04,
  2418  	0x2a, 0x63, 0x0a, 0x10, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
  2419  	0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x46, 0x41,
  2420  	0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
  2421  	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50,
  2422  	0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x53, 0x54, 0x10, 0x02, 0x12,
  2423  	0x09, 0x0a, 0x05, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54,
  2424  	0x48, 0x45, 0x52, 0x10, 0x04, 0x32, 0xaa, 0x06, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2425  	0x65, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2426  	0x73, 0x12, 0x25, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2427  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2428  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2429  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61,
  2430  	0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x62, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e,
  2431  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69,
  2432  	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
  2433  	0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
  2434  	0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
  2435  	0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2436  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x4c, 0x69, 0x73,
  2437  	0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x6c, 0x75, 0x63, 0x69,
  2438  	0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
  2439  	0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2440  	0x74, 0x1a, 0x27, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2441  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2442  	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x0f, 0x54, 0x72,
  2443  	0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x29, 0x2e,
  2444  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2445  	0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2446  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2447  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69,
  2448  	0x67, 0x67, 0x65, 0x72, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x70,
  2449  	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e,
  2450  	0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x28, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69,
  2451  	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
  2452  	0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2453  	0x1a, 0x1b, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f,
  2454  	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x6b, 0x0a,
  2455  	0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65,
  2456  	0x73, 0x12, 0x2a, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2457  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e,
  2458  	0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e,
  2459  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2460  	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
  2461  	0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x47, 0x65,
  2462  	0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x29, 0x2e,
  2463  	0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
  2464  	0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69,
  2465  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e,
  2466  	0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73,
  2467  	0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x77, 0x0a, 0x14, 0x42, 0x61, 0x74,
  2468  	0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65,
  2469  	0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2470  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65,
  2471  	0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2472  	0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
  2473  	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x47, 0x65, 0x74, 0x54, 0x65,
  2474  	0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
  2475  	0x73, 0x65, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
  2476  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x69, 0x73, 0x65, 0x63,
  2477  	0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x3b, 0x62, 0x69,
  2478  	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2479  	0x33,
  2480  }
  2481  
  2482  var (
  2483  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescOnce sync.Once
  2484  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData = file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc
  2485  )
  2486  
  2487  func file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescGZIP() []byte {
  2488  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescOnce.Do(func() {
  2489  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData)
  2490  	})
  2491  	return file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDescData
  2492  }
  2493  
  2494  var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
  2495  var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
  2496  var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes = []interface{}{
  2497  	(AnalysisRunStatus)(0),                                    // 0: luci.bisection.v1.AnalysisRunStatus
  2498  	(BuildFailureType)(0),                                     // 1: luci.bisection.v1.BuildFailureType
  2499  	(*GetAnalysisRequest)(nil),                                // 2: luci.bisection.v1.GetAnalysisRequest
  2500  	(*QueryAnalysisRequest)(nil),                              // 3: luci.bisection.v1.QueryAnalysisRequest
  2501  	(*QueryAnalysisResponse)(nil),                             // 4: luci.bisection.v1.QueryAnalysisResponse
  2502  	(*ListAnalysesRequest)(nil),                               // 5: luci.bisection.v1.ListAnalysesRequest
  2503  	(*ListAnalysesResponse)(nil),                              // 6: luci.bisection.v1.ListAnalysesResponse
  2504  	(*TriggerAnalysisRequest)(nil),                            // 7: luci.bisection.v1.TriggerAnalysisRequest
  2505  	(*TriggerAnalysisResponse)(nil),                           // 8: luci.bisection.v1.TriggerAnalysisResponse
  2506  	(*UpdateAnalysisRequest)(nil),                             // 9: luci.bisection.v1.UpdateAnalysisRequest
  2507  	(*Analysis)(nil),                                          // 10: luci.bisection.v1.Analysis
  2508  	(*BuildFailure)(nil),                                      // 11: luci.bisection.v1.BuildFailure
  2509  	(*ListTestAnalysesRequest)(nil),                           // 12: luci.bisection.v1.ListTestAnalysesRequest
  2510  	(*ListTestAnalysesResponse)(nil),                          // 13: luci.bisection.v1.ListTestAnalysesResponse
  2511  	(*GetTestAnalysisRequest)(nil),                            // 14: luci.bisection.v1.GetTestAnalysisRequest
  2512  	(*TestAnalysis)(nil),                                      // 15: luci.bisection.v1.TestAnalysis
  2513  	(*TestFailure)(nil),                                       // 16: luci.bisection.v1.TestFailure
  2514  	(*TestNthSectionAnalysisResult)(nil),                      // 17: luci.bisection.v1.TestNthSectionAnalysisResult
  2515  	(*TestSingleRerun)(nil),                                   // 18: luci.bisection.v1.TestSingleRerun
  2516  	(*RerunTestResults)(nil),                                  // 19: luci.bisection.v1.RerunTestResults
  2517  	(*RerunTestSingleResult)(nil),                             // 20: luci.bisection.v1.RerunTestSingleResult
  2518  	(*TestSuspectVerificationDetails)(nil),                    // 21: luci.bisection.v1.TestSuspectVerificationDetails
  2519  	(*TestCulprit)(nil),                                       // 22: luci.bisection.v1.TestCulprit
  2520  	(*BatchGetTestAnalysesRequest)(nil),                       // 23: luci.bisection.v1.BatchGetTestAnalysesRequest
  2521  	(*BatchGetTestAnalysesResponse)(nil),                      // 24: luci.bisection.v1.BatchGetTestAnalysesResponse
  2522  	(*BatchGetTestAnalysesRequest_TestFailureIdentifier)(nil), // 25: luci.bisection.v1.BatchGetTestAnalysesRequest.TestFailureIdentifier
  2523  	(*BugInfo)(nil),                                           // 26: luci.bisection.v1.BugInfo
  2524  	(AnalysisStatus)(0),                                       // 27: luci.bisection.v1.AnalysisStatus
  2525  	(*timestamppb.Timestamp)(nil),                             // 28: google.protobuf.Timestamp
  2526  	(*HeuristicAnalysisResult)(nil),                           // 29: luci.bisection.v1.HeuristicAnalysisResult
  2527  	(*NthSectionAnalysisResult)(nil),                          // 30: luci.bisection.v1.NthSectionAnalysisResult
  2528  	(*proto.BuilderID)(nil),                                   // 31: buildbucket.v2.BuilderID
  2529  	(*Culprit)(nil),                                           // 32: luci.bisection.v1.Culprit
  2530  	(*fieldmaskpb.FieldMask)(nil),                             // 33: google.protobuf.FieldMask
  2531  	(*proto.GitilesCommit)(nil),                               // 34: buildbucket.v2.GitilesCommit
  2532  	(*Variant)(nil),                                           // 35: luci.bisection.v1.Variant
  2533  	(*RegressionRange)(nil),                                   // 36: luci.bisection.v1.RegressionRange
  2534  	(*BlameList)(nil),                                         // 37: luci.bisection.v1.BlameList
  2535  	(RerunStatus)(0),                                          // 38: luci.bisection.v1.RerunStatus
  2536  	(SuspectVerificationStatus)(0),                            // 39: luci.bisection.v1.SuspectVerificationStatus
  2537  	(*CulpritAction)(nil),                                     // 40: luci.bisection.v1.CulpritAction
  2538  }
  2539  var file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs = []int32{
  2540  	11, // 0: luci.bisection.v1.QueryAnalysisRequest.build_failure:type_name -> luci.bisection.v1.BuildFailure
  2541  	10, // 1: luci.bisection.v1.QueryAnalysisResponse.analyses:type_name -> luci.bisection.v1.Analysis
  2542  	10, // 2: luci.bisection.v1.ListAnalysesResponse.analyses:type_name -> luci.bisection.v1.Analysis
  2543  	11, // 3: luci.bisection.v1.TriggerAnalysisRequest.build_failure:type_name -> luci.bisection.v1.BuildFailure
  2544  	26, // 4: luci.bisection.v1.TriggerAnalysisRequest.bug_info:type_name -> luci.bisection.v1.BugInfo
  2545  	10, // 5: luci.bisection.v1.TriggerAnalysisResponse.result:type_name -> luci.bisection.v1.Analysis
  2546  	26, // 6: luci.bisection.v1.UpdateAnalysisRequest.bug_info:type_name -> luci.bisection.v1.BugInfo
  2547  	11, // 7: luci.bisection.v1.Analysis.build_failure:type_name -> luci.bisection.v1.BuildFailure
  2548  	27, // 8: luci.bisection.v1.Analysis.status:type_name -> luci.bisection.v1.AnalysisStatus
  2549  	0,  // 9: luci.bisection.v1.Analysis.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus
  2550  	28, // 10: luci.bisection.v1.Analysis.created_time:type_name -> google.protobuf.Timestamp
  2551  	28, // 11: luci.bisection.v1.Analysis.last_updated_time:type_name -> google.protobuf.Timestamp
  2552  	28, // 12: luci.bisection.v1.Analysis.end_time:type_name -> google.protobuf.Timestamp
  2553  	29, // 13: luci.bisection.v1.Analysis.heuristic_result:type_name -> luci.bisection.v1.HeuristicAnalysisResult
  2554  	30, // 14: luci.bisection.v1.Analysis.nth_section_result:type_name -> luci.bisection.v1.NthSectionAnalysisResult
  2555  	31, // 15: luci.bisection.v1.Analysis.builder:type_name -> buildbucket.v2.BuilderID
  2556  	1,  // 16: luci.bisection.v1.Analysis.build_failure_type:type_name -> luci.bisection.v1.BuildFailureType
  2557  	32, // 17: luci.bisection.v1.Analysis.culprits:type_name -> luci.bisection.v1.Culprit
  2558  	33, // 18: luci.bisection.v1.ListTestAnalysesRequest.fields:type_name -> google.protobuf.FieldMask
  2559  	15, // 19: luci.bisection.v1.ListTestAnalysesResponse.analyses:type_name -> luci.bisection.v1.TestAnalysis
  2560  	33, // 20: luci.bisection.v1.GetTestAnalysisRequest.fields:type_name -> google.protobuf.FieldMask
  2561  	28, // 21: luci.bisection.v1.TestAnalysis.created_time:type_name -> google.protobuf.Timestamp
  2562  	28, // 22: luci.bisection.v1.TestAnalysis.start_time:type_name -> google.protobuf.Timestamp
  2563  	28, // 23: luci.bisection.v1.TestAnalysis.end_time:type_name -> google.protobuf.Timestamp
  2564  	27, // 24: luci.bisection.v1.TestAnalysis.status:type_name -> luci.bisection.v1.AnalysisStatus
  2565  	0,  // 25: luci.bisection.v1.TestAnalysis.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus
  2566  	22, // 26: luci.bisection.v1.TestAnalysis.culprit:type_name -> luci.bisection.v1.TestCulprit
  2567  	31, // 27: luci.bisection.v1.TestAnalysis.builder:type_name -> buildbucket.v2.BuilderID
  2568  	16, // 28: luci.bisection.v1.TestAnalysis.test_failures:type_name -> luci.bisection.v1.TestFailure
  2569  	34, // 29: luci.bisection.v1.TestAnalysis.start_commit:type_name -> buildbucket.v2.GitilesCommit
  2570  	34, // 30: luci.bisection.v1.TestAnalysis.end_commit:type_name -> buildbucket.v2.GitilesCommit
  2571  	17, // 31: luci.bisection.v1.TestAnalysis.nth_section_result:type_name -> luci.bisection.v1.TestNthSectionAnalysisResult
  2572  	35, // 32: luci.bisection.v1.TestFailure.variant:type_name -> luci.bisection.v1.Variant
  2573  	28, // 33: luci.bisection.v1.TestFailure.start_hour:type_name -> google.protobuf.Timestamp
  2574  	27, // 34: luci.bisection.v1.TestNthSectionAnalysisResult.status:type_name -> luci.bisection.v1.AnalysisStatus
  2575  	0,  // 35: luci.bisection.v1.TestNthSectionAnalysisResult.run_status:type_name -> luci.bisection.v1.AnalysisRunStatus
  2576  	28, // 36: luci.bisection.v1.TestNthSectionAnalysisResult.start_time:type_name -> google.protobuf.Timestamp
  2577  	28, // 37: luci.bisection.v1.TestNthSectionAnalysisResult.end_time:type_name -> google.protobuf.Timestamp
  2578  	36, // 38: luci.bisection.v1.TestNthSectionAnalysisResult.remaining_nth_section_range:type_name -> luci.bisection.v1.RegressionRange
  2579  	18, // 39: luci.bisection.v1.TestNthSectionAnalysisResult.reruns:type_name -> luci.bisection.v1.TestSingleRerun
  2580  	37, // 40: luci.bisection.v1.TestNthSectionAnalysisResult.blame_list:type_name -> luci.bisection.v1.BlameList
  2581  	22, // 41: luci.bisection.v1.TestNthSectionAnalysisResult.suspect:type_name -> luci.bisection.v1.TestCulprit
  2582  	28, // 42: luci.bisection.v1.TestSingleRerun.create_time:type_name -> google.protobuf.Timestamp
  2583  	28, // 43: luci.bisection.v1.TestSingleRerun.start_time:type_name -> google.protobuf.Timestamp
  2584  	28, // 44: luci.bisection.v1.TestSingleRerun.end_time:type_name -> google.protobuf.Timestamp
  2585  	28, // 45: luci.bisection.v1.TestSingleRerun.report_time:type_name -> google.protobuf.Timestamp
  2586  	19, // 46: luci.bisection.v1.TestSingleRerun.rerun_result:type_name -> luci.bisection.v1.RerunTestResults
  2587  	34, // 47: luci.bisection.v1.TestSingleRerun.commit:type_name -> buildbucket.v2.GitilesCommit
  2588  	20, // 48: luci.bisection.v1.RerunTestResults.results:type_name -> luci.bisection.v1.RerunTestSingleResult
  2589  	38, // 49: luci.bisection.v1.RerunTestResults.rerun_status:type_name -> luci.bisection.v1.RerunStatus
  2590  	39, // 50: luci.bisection.v1.TestSuspectVerificationDetails.status:type_name -> luci.bisection.v1.SuspectVerificationStatus
  2591  	18, // 51: luci.bisection.v1.TestSuspectVerificationDetails.suspect_rerun:type_name -> luci.bisection.v1.TestSingleRerun
  2592  	18, // 52: luci.bisection.v1.TestSuspectVerificationDetails.parent_rerun:type_name -> luci.bisection.v1.TestSingleRerun
  2593  	34, // 53: luci.bisection.v1.TestCulprit.commit:type_name -> buildbucket.v2.GitilesCommit
  2594  	40, // 54: luci.bisection.v1.TestCulprit.culprit_action:type_name -> luci.bisection.v1.CulpritAction
  2595  	21, // 55: luci.bisection.v1.TestCulprit.verification_details:type_name -> luci.bisection.v1.TestSuspectVerificationDetails
  2596  	25, // 56: luci.bisection.v1.BatchGetTestAnalysesRequest.test_failures:type_name -> luci.bisection.v1.BatchGetTestAnalysesRequest.TestFailureIdentifier
  2597  	33, // 57: luci.bisection.v1.BatchGetTestAnalysesRequest.fields:type_name -> google.protobuf.FieldMask
  2598  	15, // 58: luci.bisection.v1.BatchGetTestAnalysesResponse.test_analyses:type_name -> luci.bisection.v1.TestAnalysis
  2599  	2,  // 59: luci.bisection.v1.Analyses.GetAnalysis:input_type -> luci.bisection.v1.GetAnalysisRequest
  2600  	3,  // 60: luci.bisection.v1.Analyses.QueryAnalysis:input_type -> luci.bisection.v1.QueryAnalysisRequest
  2601  	5,  // 61: luci.bisection.v1.Analyses.ListAnalyses:input_type -> luci.bisection.v1.ListAnalysesRequest
  2602  	7,  // 62: luci.bisection.v1.Analyses.TriggerAnalysis:input_type -> luci.bisection.v1.TriggerAnalysisRequest
  2603  	9,  // 63: luci.bisection.v1.Analyses.UpdateAnalysis:input_type -> luci.bisection.v1.UpdateAnalysisRequest
  2604  	12, // 64: luci.bisection.v1.Analyses.ListTestAnalyses:input_type -> luci.bisection.v1.ListTestAnalysesRequest
  2605  	14, // 65: luci.bisection.v1.Analyses.GetTestAnalysis:input_type -> luci.bisection.v1.GetTestAnalysisRequest
  2606  	23, // 66: luci.bisection.v1.Analyses.BatchGetTestAnalyses:input_type -> luci.bisection.v1.BatchGetTestAnalysesRequest
  2607  	10, // 67: luci.bisection.v1.Analyses.GetAnalysis:output_type -> luci.bisection.v1.Analysis
  2608  	4,  // 68: luci.bisection.v1.Analyses.QueryAnalysis:output_type -> luci.bisection.v1.QueryAnalysisResponse
  2609  	6,  // 69: luci.bisection.v1.Analyses.ListAnalyses:output_type -> luci.bisection.v1.ListAnalysesResponse
  2610  	8,  // 70: luci.bisection.v1.Analyses.TriggerAnalysis:output_type -> luci.bisection.v1.TriggerAnalysisResponse
  2611  	10, // 71: luci.bisection.v1.Analyses.UpdateAnalysis:output_type -> luci.bisection.v1.Analysis
  2612  	13, // 72: luci.bisection.v1.Analyses.ListTestAnalyses:output_type -> luci.bisection.v1.ListTestAnalysesResponse
  2613  	15, // 73: luci.bisection.v1.Analyses.GetTestAnalysis:output_type -> luci.bisection.v1.TestAnalysis
  2614  	24, // 74: luci.bisection.v1.Analyses.BatchGetTestAnalyses:output_type -> luci.bisection.v1.BatchGetTestAnalysesResponse
  2615  	67, // [67:75] is the sub-list for method output_type
  2616  	59, // [59:67] is the sub-list for method input_type
  2617  	59, // [59:59] is the sub-list for extension type_name
  2618  	59, // [59:59] is the sub-list for extension extendee
  2619  	0,  // [0:59] is the sub-list for field type_name
  2620  }
  2621  
  2622  func init() { file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_init() }
  2623  func file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_init() {
  2624  	if File_go_chromium_org_luci_bisection_proto_v1_analyses_proto != nil {
  2625  		return
  2626  	}
  2627  	file_go_chromium_org_luci_bisection_proto_v1_bugs_proto_init()
  2628  	file_go_chromium_org_luci_bisection_proto_v1_common_proto_init()
  2629  	file_go_chromium_org_luci_bisection_proto_v1_culprits_proto_init()
  2630  	file_go_chromium_org_luci_bisection_proto_v1_heuristic_proto_init()
  2631  	file_go_chromium_org_luci_bisection_proto_v1_nthsection_proto_init()
  2632  	if !protoimpl.UnsafeEnabled {
  2633  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2634  			switch v := v.(*GetAnalysisRequest); i {
  2635  			case 0:
  2636  				return &v.state
  2637  			case 1:
  2638  				return &v.sizeCache
  2639  			case 2:
  2640  				return &v.unknownFields
  2641  			default:
  2642  				return nil
  2643  			}
  2644  		}
  2645  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2646  			switch v := v.(*QueryAnalysisRequest); i {
  2647  			case 0:
  2648  				return &v.state
  2649  			case 1:
  2650  				return &v.sizeCache
  2651  			case 2:
  2652  				return &v.unknownFields
  2653  			default:
  2654  				return nil
  2655  			}
  2656  		}
  2657  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2658  			switch v := v.(*QueryAnalysisResponse); i {
  2659  			case 0:
  2660  				return &v.state
  2661  			case 1:
  2662  				return &v.sizeCache
  2663  			case 2:
  2664  				return &v.unknownFields
  2665  			default:
  2666  				return nil
  2667  			}
  2668  		}
  2669  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2670  			switch v := v.(*ListAnalysesRequest); i {
  2671  			case 0:
  2672  				return &v.state
  2673  			case 1:
  2674  				return &v.sizeCache
  2675  			case 2:
  2676  				return &v.unknownFields
  2677  			default:
  2678  				return nil
  2679  			}
  2680  		}
  2681  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2682  			switch v := v.(*ListAnalysesResponse); i {
  2683  			case 0:
  2684  				return &v.state
  2685  			case 1:
  2686  				return &v.sizeCache
  2687  			case 2:
  2688  				return &v.unknownFields
  2689  			default:
  2690  				return nil
  2691  			}
  2692  		}
  2693  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2694  			switch v := v.(*TriggerAnalysisRequest); i {
  2695  			case 0:
  2696  				return &v.state
  2697  			case 1:
  2698  				return &v.sizeCache
  2699  			case 2:
  2700  				return &v.unknownFields
  2701  			default:
  2702  				return nil
  2703  			}
  2704  		}
  2705  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2706  			switch v := v.(*TriggerAnalysisResponse); i {
  2707  			case 0:
  2708  				return &v.state
  2709  			case 1:
  2710  				return &v.sizeCache
  2711  			case 2:
  2712  				return &v.unknownFields
  2713  			default:
  2714  				return nil
  2715  			}
  2716  		}
  2717  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2718  			switch v := v.(*UpdateAnalysisRequest); i {
  2719  			case 0:
  2720  				return &v.state
  2721  			case 1:
  2722  				return &v.sizeCache
  2723  			case 2:
  2724  				return &v.unknownFields
  2725  			default:
  2726  				return nil
  2727  			}
  2728  		}
  2729  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2730  			switch v := v.(*Analysis); i {
  2731  			case 0:
  2732  				return &v.state
  2733  			case 1:
  2734  				return &v.sizeCache
  2735  			case 2:
  2736  				return &v.unknownFields
  2737  			default:
  2738  				return nil
  2739  			}
  2740  		}
  2741  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2742  			switch v := v.(*BuildFailure); i {
  2743  			case 0:
  2744  				return &v.state
  2745  			case 1:
  2746  				return &v.sizeCache
  2747  			case 2:
  2748  				return &v.unknownFields
  2749  			default:
  2750  				return nil
  2751  			}
  2752  		}
  2753  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2754  			switch v := v.(*ListTestAnalysesRequest); i {
  2755  			case 0:
  2756  				return &v.state
  2757  			case 1:
  2758  				return &v.sizeCache
  2759  			case 2:
  2760  				return &v.unknownFields
  2761  			default:
  2762  				return nil
  2763  			}
  2764  		}
  2765  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2766  			switch v := v.(*ListTestAnalysesResponse); i {
  2767  			case 0:
  2768  				return &v.state
  2769  			case 1:
  2770  				return &v.sizeCache
  2771  			case 2:
  2772  				return &v.unknownFields
  2773  			default:
  2774  				return nil
  2775  			}
  2776  		}
  2777  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2778  			switch v := v.(*GetTestAnalysisRequest); i {
  2779  			case 0:
  2780  				return &v.state
  2781  			case 1:
  2782  				return &v.sizeCache
  2783  			case 2:
  2784  				return &v.unknownFields
  2785  			default:
  2786  				return nil
  2787  			}
  2788  		}
  2789  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2790  			switch v := v.(*TestAnalysis); i {
  2791  			case 0:
  2792  				return &v.state
  2793  			case 1:
  2794  				return &v.sizeCache
  2795  			case 2:
  2796  				return &v.unknownFields
  2797  			default:
  2798  				return nil
  2799  			}
  2800  		}
  2801  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2802  			switch v := v.(*TestFailure); i {
  2803  			case 0:
  2804  				return &v.state
  2805  			case 1:
  2806  				return &v.sizeCache
  2807  			case 2:
  2808  				return &v.unknownFields
  2809  			default:
  2810  				return nil
  2811  			}
  2812  		}
  2813  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2814  			switch v := v.(*TestNthSectionAnalysisResult); i {
  2815  			case 0:
  2816  				return &v.state
  2817  			case 1:
  2818  				return &v.sizeCache
  2819  			case 2:
  2820  				return &v.unknownFields
  2821  			default:
  2822  				return nil
  2823  			}
  2824  		}
  2825  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2826  			switch v := v.(*TestSingleRerun); i {
  2827  			case 0:
  2828  				return &v.state
  2829  			case 1:
  2830  				return &v.sizeCache
  2831  			case 2:
  2832  				return &v.unknownFields
  2833  			default:
  2834  				return nil
  2835  			}
  2836  		}
  2837  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2838  			switch v := v.(*RerunTestResults); i {
  2839  			case 0:
  2840  				return &v.state
  2841  			case 1:
  2842  				return &v.sizeCache
  2843  			case 2:
  2844  				return &v.unknownFields
  2845  			default:
  2846  				return nil
  2847  			}
  2848  		}
  2849  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2850  			switch v := v.(*RerunTestSingleResult); i {
  2851  			case 0:
  2852  				return &v.state
  2853  			case 1:
  2854  				return &v.sizeCache
  2855  			case 2:
  2856  				return &v.unknownFields
  2857  			default:
  2858  				return nil
  2859  			}
  2860  		}
  2861  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2862  			switch v := v.(*TestSuspectVerificationDetails); i {
  2863  			case 0:
  2864  				return &v.state
  2865  			case 1:
  2866  				return &v.sizeCache
  2867  			case 2:
  2868  				return &v.unknownFields
  2869  			default:
  2870  				return nil
  2871  			}
  2872  		}
  2873  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2874  			switch v := v.(*TestCulprit); i {
  2875  			case 0:
  2876  				return &v.state
  2877  			case 1:
  2878  				return &v.sizeCache
  2879  			case 2:
  2880  				return &v.unknownFields
  2881  			default:
  2882  				return nil
  2883  			}
  2884  		}
  2885  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2886  			switch v := v.(*BatchGetTestAnalysesRequest); i {
  2887  			case 0:
  2888  				return &v.state
  2889  			case 1:
  2890  				return &v.sizeCache
  2891  			case 2:
  2892  				return &v.unknownFields
  2893  			default:
  2894  				return nil
  2895  			}
  2896  		}
  2897  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  2898  			switch v := v.(*BatchGetTestAnalysesResponse); i {
  2899  			case 0:
  2900  				return &v.state
  2901  			case 1:
  2902  				return &v.sizeCache
  2903  			case 2:
  2904  				return &v.unknownFields
  2905  			default:
  2906  				return nil
  2907  			}
  2908  		}
  2909  		file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  2910  			switch v := v.(*BatchGetTestAnalysesRequest_TestFailureIdentifier); i {
  2911  			case 0:
  2912  				return &v.state
  2913  			case 1:
  2914  				return &v.sizeCache
  2915  			case 2:
  2916  				return &v.unknownFields
  2917  			default:
  2918  				return nil
  2919  			}
  2920  		}
  2921  	}
  2922  	type x struct{}
  2923  	out := protoimpl.TypeBuilder{
  2924  		File: protoimpl.DescBuilder{
  2925  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2926  			RawDescriptor: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc,
  2927  			NumEnums:      2,
  2928  			NumMessages:   24,
  2929  			NumExtensions: 0,
  2930  			NumServices:   1,
  2931  		},
  2932  		GoTypes:           file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes,
  2933  		DependencyIndexes: file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs,
  2934  		EnumInfos:         file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_enumTypes,
  2935  		MessageInfos:      file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_msgTypes,
  2936  	}.Build()
  2937  	File_go_chromium_org_luci_bisection_proto_v1_analyses_proto = out.File
  2938  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_rawDesc = nil
  2939  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_goTypes = nil
  2940  	file_go_chromium_org_luci_bisection_proto_v1_analyses_proto_depIdxs = nil
  2941  }
  2942  
  2943  // Reference imports to suppress errors if they are not otherwise used.
  2944  var _ context.Context
  2945  var _ grpc.ClientConnInterface
  2946  
  2947  // This is a compile-time assertion to ensure that this generated file
  2948  // is compatible with the grpc package it is being compiled against.
  2949  const _ = grpc.SupportPackageIsVersion6
  2950  
  2951  // AnalysesClient is the client API for Analyses service.
  2952  //
  2953  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  2954  type AnalysesClient interface {
  2955  	// GetAnalysis is used to get an analysis by analysis ID.
  2956  	GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error)
  2957  	// QueryAnalysis is used to query for the status and result of analyses.
  2958  	// The user can pass in the failure information to retrieve the analyses.
  2959  	QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error)
  2960  	// ListAnalyses is used to get existing analyses.
  2961  	// Most recently created analyses are returned first.
  2962  	ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error)
  2963  	// TriggerAnalysis is used to trigger an analysis for a failed build.
  2964  	// This RPC is called from a LUCI Bisection client like SoM or Milo.
  2965  	// If an existing analysis is found for the same failure, no new analysis
  2966  	// will be triggered.
  2967  	TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error)
  2968  	// Update the information of an analysis,
  2969  	// e.g. update the bugs associated with an analysis.
  2970  	// Mainly used by SoM, since LUCI Bisection does not have any information
  2971  	// about bugs created by sheriffs.
  2972  	UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error)
  2973  	// ListTestAnalyses is used to get existing test analyses.
  2974  	// Most recently created test analyses are returned first.
  2975  	ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error)
  2976  	// GetTestAnalysis is used to get a test analysis by its ID.
  2977  	GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error)
  2978  	// BatchGetTestAnalyses is an RPC to batch get test analyses for test failures.
  2979  	// At this moment it only support getting the bisection for the ongoing test failure.
  2980  	// TODO(@beining): This endpoint can be extended to support returning bisection for
  2981  	// any test failure by specifying source position in the request.
  2982  	BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error)
  2983  }
  2984  type analysesPRPCClient struct {
  2985  	client *prpc.Client
  2986  }
  2987  
  2988  func NewAnalysesPRPCClient(client *prpc.Client) AnalysesClient {
  2989  	return &analysesPRPCClient{client}
  2990  }
  2991  
  2992  func (c *analysesPRPCClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
  2993  	out := new(Analysis)
  2994  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "GetAnalysis", in, out, opts...)
  2995  	if err != nil {
  2996  		return nil, err
  2997  	}
  2998  	return out, nil
  2999  }
  3000  
  3001  func (c *analysesPRPCClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) {
  3002  	out := new(QueryAnalysisResponse)
  3003  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "QueryAnalysis", in, out, opts...)
  3004  	if err != nil {
  3005  		return nil, err
  3006  	}
  3007  	return out, nil
  3008  }
  3009  
  3010  func (c *analysesPRPCClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) {
  3011  	out := new(ListAnalysesResponse)
  3012  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "ListAnalyses", in, out, opts...)
  3013  	if err != nil {
  3014  		return nil, err
  3015  	}
  3016  	return out, nil
  3017  }
  3018  
  3019  func (c *analysesPRPCClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) {
  3020  	out := new(TriggerAnalysisResponse)
  3021  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "TriggerAnalysis", in, out, opts...)
  3022  	if err != nil {
  3023  		return nil, err
  3024  	}
  3025  	return out, nil
  3026  }
  3027  
  3028  func (c *analysesPRPCClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
  3029  	out := new(Analysis)
  3030  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "UpdateAnalysis", in, out, opts...)
  3031  	if err != nil {
  3032  		return nil, err
  3033  	}
  3034  	return out, nil
  3035  }
  3036  
  3037  func (c *analysesPRPCClient) ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error) {
  3038  	out := new(ListTestAnalysesResponse)
  3039  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "ListTestAnalyses", in, out, opts...)
  3040  	if err != nil {
  3041  		return nil, err
  3042  	}
  3043  	return out, nil
  3044  }
  3045  
  3046  func (c *analysesPRPCClient) GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error) {
  3047  	out := new(TestAnalysis)
  3048  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "GetTestAnalysis", in, out, opts...)
  3049  	if err != nil {
  3050  		return nil, err
  3051  	}
  3052  	return out, nil
  3053  }
  3054  
  3055  func (c *analysesPRPCClient) BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error) {
  3056  	out := new(BatchGetTestAnalysesResponse)
  3057  	err := c.client.Call(ctx, "luci.bisection.v1.Analyses", "BatchGetTestAnalyses", in, out, opts...)
  3058  	if err != nil {
  3059  		return nil, err
  3060  	}
  3061  	return out, nil
  3062  }
  3063  
  3064  type analysesClient struct {
  3065  	cc grpc.ClientConnInterface
  3066  }
  3067  
  3068  func NewAnalysesClient(cc grpc.ClientConnInterface) AnalysesClient {
  3069  	return &analysesClient{cc}
  3070  }
  3071  
  3072  func (c *analysesClient) GetAnalysis(ctx context.Context, in *GetAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
  3073  	out := new(Analysis)
  3074  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/GetAnalysis", in, out, opts...)
  3075  	if err != nil {
  3076  		return nil, err
  3077  	}
  3078  	return out, nil
  3079  }
  3080  
  3081  func (c *analysesClient) QueryAnalysis(ctx context.Context, in *QueryAnalysisRequest, opts ...grpc.CallOption) (*QueryAnalysisResponse, error) {
  3082  	out := new(QueryAnalysisResponse)
  3083  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/QueryAnalysis", in, out, opts...)
  3084  	if err != nil {
  3085  		return nil, err
  3086  	}
  3087  	return out, nil
  3088  }
  3089  
  3090  func (c *analysesClient) ListAnalyses(ctx context.Context, in *ListAnalysesRequest, opts ...grpc.CallOption) (*ListAnalysesResponse, error) {
  3091  	out := new(ListAnalysesResponse)
  3092  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/ListAnalyses", in, out, opts...)
  3093  	if err != nil {
  3094  		return nil, err
  3095  	}
  3096  	return out, nil
  3097  }
  3098  
  3099  func (c *analysesClient) TriggerAnalysis(ctx context.Context, in *TriggerAnalysisRequest, opts ...grpc.CallOption) (*TriggerAnalysisResponse, error) {
  3100  	out := new(TriggerAnalysisResponse)
  3101  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/TriggerAnalysis", in, out, opts...)
  3102  	if err != nil {
  3103  		return nil, err
  3104  	}
  3105  	return out, nil
  3106  }
  3107  
  3108  func (c *analysesClient) UpdateAnalysis(ctx context.Context, in *UpdateAnalysisRequest, opts ...grpc.CallOption) (*Analysis, error) {
  3109  	out := new(Analysis)
  3110  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/UpdateAnalysis", in, out, opts...)
  3111  	if err != nil {
  3112  		return nil, err
  3113  	}
  3114  	return out, nil
  3115  }
  3116  
  3117  func (c *analysesClient) ListTestAnalyses(ctx context.Context, in *ListTestAnalysesRequest, opts ...grpc.CallOption) (*ListTestAnalysesResponse, error) {
  3118  	out := new(ListTestAnalysesResponse)
  3119  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/ListTestAnalyses", in, out, opts...)
  3120  	if err != nil {
  3121  		return nil, err
  3122  	}
  3123  	return out, nil
  3124  }
  3125  
  3126  func (c *analysesClient) GetTestAnalysis(ctx context.Context, in *GetTestAnalysisRequest, opts ...grpc.CallOption) (*TestAnalysis, error) {
  3127  	out := new(TestAnalysis)
  3128  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/GetTestAnalysis", in, out, opts...)
  3129  	if err != nil {
  3130  		return nil, err
  3131  	}
  3132  	return out, nil
  3133  }
  3134  
  3135  func (c *analysesClient) BatchGetTestAnalyses(ctx context.Context, in *BatchGetTestAnalysesRequest, opts ...grpc.CallOption) (*BatchGetTestAnalysesResponse, error) {
  3136  	out := new(BatchGetTestAnalysesResponse)
  3137  	err := c.cc.Invoke(ctx, "/luci.bisection.v1.Analyses/BatchGetTestAnalyses", in, out, opts...)
  3138  	if err != nil {
  3139  		return nil, err
  3140  	}
  3141  	return out, nil
  3142  }
  3143  
  3144  // AnalysesServer is the server API for Analyses service.
  3145  type AnalysesServer interface {
  3146  	// GetAnalysis is used to get an analysis by analysis ID.
  3147  	GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error)
  3148  	// QueryAnalysis is used to query for the status and result of analyses.
  3149  	// The user can pass in the failure information to retrieve the analyses.
  3150  	QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error)
  3151  	// ListAnalyses is used to get existing analyses.
  3152  	// Most recently created analyses are returned first.
  3153  	ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error)
  3154  	// TriggerAnalysis is used to trigger an analysis for a failed build.
  3155  	// This RPC is called from a LUCI Bisection client like SoM or Milo.
  3156  	// If an existing analysis is found for the same failure, no new analysis
  3157  	// will be triggered.
  3158  	TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error)
  3159  	// Update the information of an analysis,
  3160  	// e.g. update the bugs associated with an analysis.
  3161  	// Mainly used by SoM, since LUCI Bisection does not have any information
  3162  	// about bugs created by sheriffs.
  3163  	UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error)
  3164  	// ListTestAnalyses is used to get existing test analyses.
  3165  	// Most recently created test analyses are returned first.
  3166  	ListTestAnalyses(context.Context, *ListTestAnalysesRequest) (*ListTestAnalysesResponse, error)
  3167  	// GetTestAnalysis is used to get a test analysis by its ID.
  3168  	GetTestAnalysis(context.Context, *GetTestAnalysisRequest) (*TestAnalysis, error)
  3169  	// BatchGetTestAnalyses is an RPC to batch get test analyses for test failures.
  3170  	// At this moment it only support getting the bisection for the ongoing test failure.
  3171  	// TODO(@beining): This endpoint can be extended to support returning bisection for
  3172  	// any test failure by specifying source position in the request.
  3173  	BatchGetTestAnalyses(context.Context, *BatchGetTestAnalysesRequest) (*BatchGetTestAnalysesResponse, error)
  3174  }
  3175  
  3176  // UnimplementedAnalysesServer can be embedded to have forward compatible implementations.
  3177  type UnimplementedAnalysesServer struct {
  3178  }
  3179  
  3180  func (*UnimplementedAnalysesServer) GetAnalysis(context.Context, *GetAnalysisRequest) (*Analysis, error) {
  3181  	return nil, status.Errorf(codes.Unimplemented, "method GetAnalysis not implemented")
  3182  }
  3183  func (*UnimplementedAnalysesServer) QueryAnalysis(context.Context, *QueryAnalysisRequest) (*QueryAnalysisResponse, error) {
  3184  	return nil, status.Errorf(codes.Unimplemented, "method QueryAnalysis not implemented")
  3185  }
  3186  func (*UnimplementedAnalysesServer) ListAnalyses(context.Context, *ListAnalysesRequest) (*ListAnalysesResponse, error) {
  3187  	return nil, status.Errorf(codes.Unimplemented, "method ListAnalyses not implemented")
  3188  }
  3189  func (*UnimplementedAnalysesServer) TriggerAnalysis(context.Context, *TriggerAnalysisRequest) (*TriggerAnalysisResponse, error) {
  3190  	return nil, status.Errorf(codes.Unimplemented, "method TriggerAnalysis not implemented")
  3191  }
  3192  func (*UnimplementedAnalysesServer) UpdateAnalysis(context.Context, *UpdateAnalysisRequest) (*Analysis, error) {
  3193  	return nil, status.Errorf(codes.Unimplemented, "method UpdateAnalysis not implemented")
  3194  }
  3195  func (*UnimplementedAnalysesServer) ListTestAnalyses(context.Context, *ListTestAnalysesRequest) (*ListTestAnalysesResponse, error) {
  3196  	return nil, status.Errorf(codes.Unimplemented, "method ListTestAnalyses not implemented")
  3197  }
  3198  func (*UnimplementedAnalysesServer) GetTestAnalysis(context.Context, *GetTestAnalysisRequest) (*TestAnalysis, error) {
  3199  	return nil, status.Errorf(codes.Unimplemented, "method GetTestAnalysis not implemented")
  3200  }
  3201  func (*UnimplementedAnalysesServer) BatchGetTestAnalyses(context.Context, *BatchGetTestAnalysesRequest) (*BatchGetTestAnalysesResponse, error) {
  3202  	return nil, status.Errorf(codes.Unimplemented, "method BatchGetTestAnalyses not implemented")
  3203  }
  3204  
  3205  func RegisterAnalysesServer(s prpc.Registrar, srv AnalysesServer) {
  3206  	s.RegisterService(&_Analyses_serviceDesc, srv)
  3207  }
  3208  
  3209  func _Analyses_GetAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3210  	in := new(GetAnalysisRequest)
  3211  	if err := dec(in); err != nil {
  3212  		return nil, err
  3213  	}
  3214  	if interceptor == nil {
  3215  		return srv.(AnalysesServer).GetAnalysis(ctx, in)
  3216  	}
  3217  	info := &grpc.UnaryServerInfo{
  3218  		Server:     srv,
  3219  		FullMethod: "/luci.bisection.v1.Analyses/GetAnalysis",
  3220  	}
  3221  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3222  		return srv.(AnalysesServer).GetAnalysis(ctx, req.(*GetAnalysisRequest))
  3223  	}
  3224  	return interceptor(ctx, in, info, handler)
  3225  }
  3226  
  3227  func _Analyses_QueryAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3228  	in := new(QueryAnalysisRequest)
  3229  	if err := dec(in); err != nil {
  3230  		return nil, err
  3231  	}
  3232  	if interceptor == nil {
  3233  		return srv.(AnalysesServer).QueryAnalysis(ctx, in)
  3234  	}
  3235  	info := &grpc.UnaryServerInfo{
  3236  		Server:     srv,
  3237  		FullMethod: "/luci.bisection.v1.Analyses/QueryAnalysis",
  3238  	}
  3239  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3240  		return srv.(AnalysesServer).QueryAnalysis(ctx, req.(*QueryAnalysisRequest))
  3241  	}
  3242  	return interceptor(ctx, in, info, handler)
  3243  }
  3244  
  3245  func _Analyses_ListAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3246  	in := new(ListAnalysesRequest)
  3247  	if err := dec(in); err != nil {
  3248  		return nil, err
  3249  	}
  3250  	if interceptor == nil {
  3251  		return srv.(AnalysesServer).ListAnalyses(ctx, in)
  3252  	}
  3253  	info := &grpc.UnaryServerInfo{
  3254  		Server:     srv,
  3255  		FullMethod: "/luci.bisection.v1.Analyses/ListAnalyses",
  3256  	}
  3257  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3258  		return srv.(AnalysesServer).ListAnalyses(ctx, req.(*ListAnalysesRequest))
  3259  	}
  3260  	return interceptor(ctx, in, info, handler)
  3261  }
  3262  
  3263  func _Analyses_TriggerAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3264  	in := new(TriggerAnalysisRequest)
  3265  	if err := dec(in); err != nil {
  3266  		return nil, err
  3267  	}
  3268  	if interceptor == nil {
  3269  		return srv.(AnalysesServer).TriggerAnalysis(ctx, in)
  3270  	}
  3271  	info := &grpc.UnaryServerInfo{
  3272  		Server:     srv,
  3273  		FullMethod: "/luci.bisection.v1.Analyses/TriggerAnalysis",
  3274  	}
  3275  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3276  		return srv.(AnalysesServer).TriggerAnalysis(ctx, req.(*TriggerAnalysisRequest))
  3277  	}
  3278  	return interceptor(ctx, in, info, handler)
  3279  }
  3280  
  3281  func _Analyses_UpdateAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3282  	in := new(UpdateAnalysisRequest)
  3283  	if err := dec(in); err != nil {
  3284  		return nil, err
  3285  	}
  3286  	if interceptor == nil {
  3287  		return srv.(AnalysesServer).UpdateAnalysis(ctx, in)
  3288  	}
  3289  	info := &grpc.UnaryServerInfo{
  3290  		Server:     srv,
  3291  		FullMethod: "/luci.bisection.v1.Analyses/UpdateAnalysis",
  3292  	}
  3293  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3294  		return srv.(AnalysesServer).UpdateAnalysis(ctx, req.(*UpdateAnalysisRequest))
  3295  	}
  3296  	return interceptor(ctx, in, info, handler)
  3297  }
  3298  
  3299  func _Analyses_ListTestAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3300  	in := new(ListTestAnalysesRequest)
  3301  	if err := dec(in); err != nil {
  3302  		return nil, err
  3303  	}
  3304  	if interceptor == nil {
  3305  		return srv.(AnalysesServer).ListTestAnalyses(ctx, in)
  3306  	}
  3307  	info := &grpc.UnaryServerInfo{
  3308  		Server:     srv,
  3309  		FullMethod: "/luci.bisection.v1.Analyses/ListTestAnalyses",
  3310  	}
  3311  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3312  		return srv.(AnalysesServer).ListTestAnalyses(ctx, req.(*ListTestAnalysesRequest))
  3313  	}
  3314  	return interceptor(ctx, in, info, handler)
  3315  }
  3316  
  3317  func _Analyses_GetTestAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3318  	in := new(GetTestAnalysisRequest)
  3319  	if err := dec(in); err != nil {
  3320  		return nil, err
  3321  	}
  3322  	if interceptor == nil {
  3323  		return srv.(AnalysesServer).GetTestAnalysis(ctx, in)
  3324  	}
  3325  	info := &grpc.UnaryServerInfo{
  3326  		Server:     srv,
  3327  		FullMethod: "/luci.bisection.v1.Analyses/GetTestAnalysis",
  3328  	}
  3329  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3330  		return srv.(AnalysesServer).GetTestAnalysis(ctx, req.(*GetTestAnalysisRequest))
  3331  	}
  3332  	return interceptor(ctx, in, info, handler)
  3333  }
  3334  
  3335  func _Analyses_BatchGetTestAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3336  	in := new(BatchGetTestAnalysesRequest)
  3337  	if err := dec(in); err != nil {
  3338  		return nil, err
  3339  	}
  3340  	if interceptor == nil {
  3341  		return srv.(AnalysesServer).BatchGetTestAnalyses(ctx, in)
  3342  	}
  3343  	info := &grpc.UnaryServerInfo{
  3344  		Server:     srv,
  3345  		FullMethod: "/luci.bisection.v1.Analyses/BatchGetTestAnalyses",
  3346  	}
  3347  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3348  		return srv.(AnalysesServer).BatchGetTestAnalyses(ctx, req.(*BatchGetTestAnalysesRequest))
  3349  	}
  3350  	return interceptor(ctx, in, info, handler)
  3351  }
  3352  
  3353  var _Analyses_serviceDesc = grpc.ServiceDesc{
  3354  	ServiceName: "luci.bisection.v1.Analyses",
  3355  	HandlerType: (*AnalysesServer)(nil),
  3356  	Methods: []grpc.MethodDesc{
  3357  		{
  3358  			MethodName: "GetAnalysis",
  3359  			Handler:    _Analyses_GetAnalysis_Handler,
  3360  		},
  3361  		{
  3362  			MethodName: "QueryAnalysis",
  3363  			Handler:    _Analyses_QueryAnalysis_Handler,
  3364  		},
  3365  		{
  3366  			MethodName: "ListAnalyses",
  3367  			Handler:    _Analyses_ListAnalyses_Handler,
  3368  		},
  3369  		{
  3370  			MethodName: "TriggerAnalysis",
  3371  			Handler:    _Analyses_TriggerAnalysis_Handler,
  3372  		},
  3373  		{
  3374  			MethodName: "UpdateAnalysis",
  3375  			Handler:    _Analyses_UpdateAnalysis_Handler,
  3376  		},
  3377  		{
  3378  			MethodName: "ListTestAnalyses",
  3379  			Handler:    _Analyses_ListTestAnalyses_Handler,
  3380  		},
  3381  		{
  3382  			MethodName: "GetTestAnalysis",
  3383  			Handler:    _Analyses_GetTestAnalysis_Handler,
  3384  		},
  3385  		{
  3386  			MethodName: "BatchGetTestAnalyses",
  3387  			Handler:    _Analyses_BatchGetTestAnalyses_Handler,
  3388  		},
  3389  	},
  3390  	Streams:  []grpc.StreamDesc{},
  3391  	Metadata: "go.chromium.org/luci/bisection/proto/v1/analyses.proto",
  3392  }