cloud.google.com/go/aiplatform@v1.106.0/apiv1beta1/aiplatformpb/explanation.pb.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.35.2 18 // protoc v4.25.7 19 // source: google/cloud/aiplatform/v1beta1/explanation.proto 20 21 package aiplatformpb 22 23 import ( 24 _ "google.golang.org/genproto/googleapis/api/annotations" 25 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 26 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 27 structpb "google.golang.org/protobuf/types/known/structpb" 28 reflect "reflect" 29 sync "sync" 30 ) 31 32 const ( 33 // Verify that this generated code is sufficiently up-to-date. 34 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 35 // Verify that runtime/protoimpl is sufficiently up-to-date. 36 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 37 ) 38 39 // The format of the input example instances. 40 type Examples_ExampleGcsSource_DataFormat int32 41 42 const ( 43 // Format unspecified, used when unset. 44 Examples_ExampleGcsSource_DATA_FORMAT_UNSPECIFIED Examples_ExampleGcsSource_DataFormat = 0 45 // Examples are stored in JSONL files. 46 Examples_ExampleGcsSource_JSONL Examples_ExampleGcsSource_DataFormat = 1 47 ) 48 49 // Enum value maps for Examples_ExampleGcsSource_DataFormat. 50 var ( 51 Examples_ExampleGcsSource_DataFormat_name = map[int32]string{ 52 0: "DATA_FORMAT_UNSPECIFIED", 53 1: "JSONL", 54 } 55 Examples_ExampleGcsSource_DataFormat_value = map[string]int32{ 56 "DATA_FORMAT_UNSPECIFIED": 0, 57 "JSONL": 1, 58 } 59 ) 60 61 func (x Examples_ExampleGcsSource_DataFormat) Enum() *Examples_ExampleGcsSource_DataFormat { 62 p := new(Examples_ExampleGcsSource_DataFormat) 63 *p = x 64 return p 65 } 66 67 func (x Examples_ExampleGcsSource_DataFormat) String() string { 68 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 69 } 70 71 func (Examples_ExampleGcsSource_DataFormat) Descriptor() protoreflect.EnumDescriptor { 72 return file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[0].Descriptor() 73 } 74 75 func (Examples_ExampleGcsSource_DataFormat) Type() protoreflect.EnumType { 76 return &file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[0] 77 } 78 79 func (x Examples_ExampleGcsSource_DataFormat) Number() protoreflect.EnumNumber { 80 return protoreflect.EnumNumber(x) 81 } 82 83 // Deprecated: Use Examples_ExampleGcsSource_DataFormat.Descriptor instead. 84 func (Examples_ExampleGcsSource_DataFormat) EnumDescriptor() ([]byte, []int) { 85 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{12, 0, 0} 86 } 87 88 // Preset option controlling parameters for query speed-precision trade-off 89 type Presets_Query int32 90 91 const ( 92 // More precise neighbors as a trade-off against slower response. 93 Presets_PRECISE Presets_Query = 0 94 // Faster response as a trade-off against less precise neighbors. 95 Presets_FAST Presets_Query = 1 96 ) 97 98 // Enum value maps for Presets_Query. 99 var ( 100 Presets_Query_name = map[int32]string{ 101 0: "PRECISE", 102 1: "FAST", 103 } 104 Presets_Query_value = map[string]int32{ 105 "PRECISE": 0, 106 "FAST": 1, 107 } 108 ) 109 110 func (x Presets_Query) Enum() *Presets_Query { 111 p := new(Presets_Query) 112 *p = x 113 return p 114 } 115 116 func (x Presets_Query) String() string { 117 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 118 } 119 120 func (Presets_Query) Descriptor() protoreflect.EnumDescriptor { 121 return file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[1].Descriptor() 122 } 123 124 func (Presets_Query) Type() protoreflect.EnumType { 125 return &file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[1] 126 } 127 128 func (x Presets_Query) Number() protoreflect.EnumNumber { 129 return protoreflect.EnumNumber(x) 130 } 131 132 // Deprecated: Use Presets_Query.Descriptor instead. 133 func (Presets_Query) EnumDescriptor() ([]byte, []int) { 134 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{13, 0} 135 } 136 137 // Preset option controlling parameters for different modalities 138 type Presets_Modality int32 139 140 const ( 141 // Should not be set. Added as a recommended best practice for enums 142 Presets_MODALITY_UNSPECIFIED Presets_Modality = 0 143 // IMAGE modality 144 Presets_IMAGE Presets_Modality = 1 145 // TEXT modality 146 Presets_TEXT Presets_Modality = 2 147 // TABULAR modality 148 Presets_TABULAR Presets_Modality = 3 149 ) 150 151 // Enum value maps for Presets_Modality. 152 var ( 153 Presets_Modality_name = map[int32]string{ 154 0: "MODALITY_UNSPECIFIED", 155 1: "IMAGE", 156 2: "TEXT", 157 3: "TABULAR", 158 } 159 Presets_Modality_value = map[string]int32{ 160 "MODALITY_UNSPECIFIED": 0, 161 "IMAGE": 1, 162 "TEXT": 2, 163 "TABULAR": 3, 164 } 165 ) 166 167 func (x Presets_Modality) Enum() *Presets_Modality { 168 p := new(Presets_Modality) 169 *p = x 170 return p 171 } 172 173 func (x Presets_Modality) String() string { 174 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 175 } 176 177 func (Presets_Modality) Descriptor() protoreflect.EnumDescriptor { 178 return file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[2].Descriptor() 179 } 180 181 func (Presets_Modality) Type() protoreflect.EnumType { 182 return &file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[2] 183 } 184 185 func (x Presets_Modality) Number() protoreflect.EnumNumber { 186 return protoreflect.EnumNumber(x) 187 } 188 189 // Deprecated: Use Presets_Modality.Descriptor instead. 190 func (Presets_Modality) EnumDescriptor() ([]byte, []int) { 191 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{13, 1} 192 } 193 194 // Data format enum. 195 type ExamplesOverride_DataFormat int32 196 197 const ( 198 // Unspecified format. Must not be used. 199 ExamplesOverride_DATA_FORMAT_UNSPECIFIED ExamplesOverride_DataFormat = 0 200 // Provided data is a set of model inputs. 201 ExamplesOverride_INSTANCES ExamplesOverride_DataFormat = 1 202 // Provided data is a set of embeddings. 203 ExamplesOverride_EMBEDDINGS ExamplesOverride_DataFormat = 2 204 ) 205 206 // Enum value maps for ExamplesOverride_DataFormat. 207 var ( 208 ExamplesOverride_DataFormat_name = map[int32]string{ 209 0: "DATA_FORMAT_UNSPECIFIED", 210 1: "INSTANCES", 211 2: "EMBEDDINGS", 212 } 213 ExamplesOverride_DataFormat_value = map[string]int32{ 214 "DATA_FORMAT_UNSPECIFIED": 0, 215 "INSTANCES": 1, 216 "EMBEDDINGS": 2, 217 } 218 ) 219 220 func (x ExamplesOverride_DataFormat) Enum() *ExamplesOverride_DataFormat { 221 p := new(ExamplesOverride_DataFormat) 222 *p = x 223 return p 224 } 225 226 func (x ExamplesOverride_DataFormat) String() string { 227 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 228 } 229 230 func (ExamplesOverride_DataFormat) Descriptor() protoreflect.EnumDescriptor { 231 return file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[3].Descriptor() 232 } 233 234 func (ExamplesOverride_DataFormat) Type() protoreflect.EnumType { 235 return &file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes[3] 236 } 237 238 func (x ExamplesOverride_DataFormat) Number() protoreflect.EnumNumber { 239 return protoreflect.EnumNumber(x) 240 } 241 242 // Deprecated: Use ExamplesOverride_DataFormat.Descriptor instead. 243 func (ExamplesOverride_DataFormat) EnumDescriptor() ([]byte, []int) { 244 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{16, 0} 245 } 246 247 // Explanation of a prediction (provided in 248 // [PredictResponse.predictions][google.cloud.aiplatform.v1beta1.PredictResponse.predictions]) 249 // produced by the Model on a given 250 // [instance][google.cloud.aiplatform.v1beta1.ExplainRequest.instances]. 251 type Explanation struct { 252 state protoimpl.MessageState 253 sizeCache protoimpl.SizeCache 254 unknownFields protoimpl.UnknownFields 255 256 // Output only. Feature attributions grouped by predicted outputs. 257 // 258 // For Models that predict only one output, such as regression Models that 259 // predict only one score, there is only one attibution that explains the 260 // predicted output. For Models that predict multiple outputs, such as 261 // multiclass Models that predict multiple classes, each element explains one 262 // specific item. 263 // [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] 264 // can be used to identify which output this attribution is explaining. 265 // 266 // By default, we provide Shapley values for the predicted class. However, 267 // you can configure the explanation request to generate Shapley values for 268 // any other classes too. For example, if a model predicts a probability of 269 // `0.4` for approving a loan application, the model's decision is to reject 270 // the application since `p(reject) = 0.6 > p(approve) = 0.4`, and the default 271 // Shapley values would be computed for rejection decision and not approval, 272 // even though the latter might be the positive class. 273 // 274 // If users set 275 // [ExplanationParameters.top_k][google.cloud.aiplatform.v1beta1.ExplanationParameters.top_k], 276 // the attributions are sorted by 277 // [instance_output_value][Attributions.instance_output_value] in descending 278 // order. If 279 // [ExplanationParameters.output_indices][google.cloud.aiplatform.v1beta1.ExplanationParameters.output_indices] 280 // is specified, the attributions are stored by 281 // [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] 282 // in the same order as they appear in the output_indices. 283 Attributions []*Attribution `protobuf:"bytes,1,rep,name=attributions,proto3" json:"attributions,omitempty"` 284 // Output only. List of the nearest neighbors for example-based explanations. 285 // 286 // For models deployed with the examples explanations feature enabled, the 287 // attributions field is empty and instead the neighbors field is populated. 288 Neighbors []*Neighbor `protobuf:"bytes,2,rep,name=neighbors,proto3" json:"neighbors,omitempty"` 289 } 290 291 func (x *Explanation) Reset() { 292 *x = Explanation{} 293 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[0] 294 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 295 ms.StoreMessageInfo(mi) 296 } 297 298 func (x *Explanation) String() string { 299 return protoimpl.X.MessageStringOf(x) 300 } 301 302 func (*Explanation) ProtoMessage() {} 303 304 func (x *Explanation) ProtoReflect() protoreflect.Message { 305 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[0] 306 if x != nil { 307 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 308 if ms.LoadMessageInfo() == nil { 309 ms.StoreMessageInfo(mi) 310 } 311 return ms 312 } 313 return mi.MessageOf(x) 314 } 315 316 // Deprecated: Use Explanation.ProtoReflect.Descriptor instead. 317 func (*Explanation) Descriptor() ([]byte, []int) { 318 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{0} 319 } 320 321 func (x *Explanation) GetAttributions() []*Attribution { 322 if x != nil { 323 return x.Attributions 324 } 325 return nil 326 } 327 328 func (x *Explanation) GetNeighbors() []*Neighbor { 329 if x != nil { 330 return x.Neighbors 331 } 332 return nil 333 } 334 335 // Aggregated explanation metrics for a Model over a set of instances. 336 type ModelExplanation struct { 337 state protoimpl.MessageState 338 sizeCache protoimpl.SizeCache 339 unknownFields protoimpl.UnknownFields 340 341 // Output only. Aggregated attributions explaining the Model's prediction 342 // outputs over the set of instances. The attributions are grouped by outputs. 343 // 344 // For Models that predict only one output, such as regression Models that 345 // predict only one score, there is only one attibution that explains the 346 // predicted output. For Models that predict multiple outputs, such as 347 // multiclass Models that predict multiple classes, each element explains one 348 // specific item. 349 // [Attribution.output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] 350 // can be used to identify which output this attribution is explaining. 351 // 352 // The 353 // [baselineOutputValue][google.cloud.aiplatform.v1beta1.Attribution.baseline_output_value], 354 // [instanceOutputValue][google.cloud.aiplatform.v1beta1.Attribution.instance_output_value] 355 // and 356 // [featureAttributions][google.cloud.aiplatform.v1beta1.Attribution.feature_attributions] 357 // fields are averaged over the test data. 358 // 359 // NOTE: Currently AutoML tabular classification Models produce only one 360 // attribution, which averages attributions over all the classes it predicts. 361 // [Attribution.approximation_error][google.cloud.aiplatform.v1beta1.Attribution.approximation_error] 362 // is not populated. 363 MeanAttributions []*Attribution `protobuf:"bytes,1,rep,name=mean_attributions,json=meanAttributions,proto3" json:"mean_attributions,omitempty"` 364 } 365 366 func (x *ModelExplanation) Reset() { 367 *x = ModelExplanation{} 368 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[1] 369 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 370 ms.StoreMessageInfo(mi) 371 } 372 373 func (x *ModelExplanation) String() string { 374 return protoimpl.X.MessageStringOf(x) 375 } 376 377 func (*ModelExplanation) ProtoMessage() {} 378 379 func (x *ModelExplanation) ProtoReflect() protoreflect.Message { 380 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[1] 381 if x != nil { 382 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 383 if ms.LoadMessageInfo() == nil { 384 ms.StoreMessageInfo(mi) 385 } 386 return ms 387 } 388 return mi.MessageOf(x) 389 } 390 391 // Deprecated: Use ModelExplanation.ProtoReflect.Descriptor instead. 392 func (*ModelExplanation) Descriptor() ([]byte, []int) { 393 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{1} 394 } 395 396 func (x *ModelExplanation) GetMeanAttributions() []*Attribution { 397 if x != nil { 398 return x.MeanAttributions 399 } 400 return nil 401 } 402 403 // Attribution that explains a particular prediction output. 404 type Attribution struct { 405 state protoimpl.MessageState 406 sizeCache protoimpl.SizeCache 407 unknownFields protoimpl.UnknownFields 408 409 // Output only. Model predicted output if the input instance is constructed 410 // from the baselines of all the features defined in 411 // [ExplanationMetadata.inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 412 // The field name of the output is determined by the key in 413 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 414 // 415 // If the Model's predicted output has multiple dimensions (rank > 1), this is 416 // the value in the output located by 417 // [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index]. 418 // 419 // If there are multiple baselines, their output values are averaged. 420 BaselineOutputValue float64 `protobuf:"fixed64,1,opt,name=baseline_output_value,json=baselineOutputValue,proto3" json:"baseline_output_value,omitempty"` 421 // Output only. Model predicted output on the corresponding [explanation 422 // instance][ExplainRequest.instances]. The field name of the output is 423 // determined by the key in 424 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 425 // 426 // If the Model predicted output has multiple dimensions, this is the value in 427 // the output located by 428 // [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index]. 429 InstanceOutputValue float64 `protobuf:"fixed64,2,opt,name=instance_output_value,json=instanceOutputValue,proto3" json:"instance_output_value,omitempty"` 430 // Output only. Attributions of each explained feature. Features are extracted 431 // from the [prediction 432 // instances][google.cloud.aiplatform.v1beta1.ExplainRequest.instances] 433 // according to [explanation metadata for 434 // inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 435 // 436 // The value is a struct, whose keys are the name of the feature. The values 437 // are how much the feature in the 438 // [instance][google.cloud.aiplatform.v1beta1.ExplainRequest.instances] 439 // contributed to the predicted result. 440 // 441 // The format of the value is determined by the feature's input format: 442 // 443 // - If the feature is a scalar value, the attribution value is a 444 // [floating number][google.protobuf.Value.number_value]. 445 // 446 // - If the feature is an array of scalar values, the attribution value is 447 // an [array][google.protobuf.Value.list_value]. 448 // 449 // - If the feature is a struct, the attribution value is a 450 // [struct][google.protobuf.Value.struct_value]. The keys in the 451 // attribution value struct are the same as the keys in the feature 452 // struct. The formats of the values in the attribution struct are 453 // determined by the formats of the values in the feature struct. 454 // 455 // The 456 // [ExplanationMetadata.feature_attributions_schema_uri][google.cloud.aiplatform.v1beta1.ExplanationMetadata.feature_attributions_schema_uri] 457 // field, pointed to by the 458 // [ExplanationSpec][google.cloud.aiplatform.v1beta1.ExplanationSpec] field of 459 // the 460 // [Endpoint.deployed_models][google.cloud.aiplatform.v1beta1.Endpoint.deployed_models] 461 // object, points to the schema file that describes the features and their 462 // attribution values (if it is populated). 463 FeatureAttributions *structpb.Value `protobuf:"bytes,3,opt,name=feature_attributions,json=featureAttributions,proto3" json:"feature_attributions,omitempty"` 464 // Output only. The index that locates the explained prediction output. 465 // 466 // If the prediction output is a scalar value, output_index is not populated. 467 // If the prediction output has multiple dimensions, the length of the 468 // output_index list is the same as the number of dimensions of the output. 469 // The i-th element in output_index is the element index of the i-th dimension 470 // of the output vector. Indices start from 0. 471 OutputIndex []int32 `protobuf:"varint,4,rep,packed,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` 472 // Output only. The display name of the output identified by 473 // [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index]. 474 // For example, the predicted class name by a multi-classification Model. 475 // 476 // This field is only populated iff the Model predicts display names as a 477 // separate field along with the explained output. The predicted display name 478 // must has the same shape of the explained output, and can be located using 479 // output_index. 480 OutputDisplayName string `protobuf:"bytes,5,opt,name=output_display_name,json=outputDisplayName,proto3" json:"output_display_name,omitempty"` 481 // Output only. Error of 482 // [feature_attributions][google.cloud.aiplatform.v1beta1.Attribution.feature_attributions] 483 // caused by approximation used in the explanation method. Lower value means 484 // more precise attributions. 485 // 486 // * For Sampled Shapley 487 // [attribution][google.cloud.aiplatform.v1beta1.ExplanationParameters.sampled_shapley_attribution], 488 // increasing 489 // [path_count][google.cloud.aiplatform.v1beta1.SampledShapleyAttribution.path_count] 490 // might reduce the error. 491 // * For Integrated Gradients 492 // [attribution][google.cloud.aiplatform.v1beta1.ExplanationParameters.integrated_gradients_attribution], 493 // increasing 494 // [step_count][google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution.step_count] 495 // might reduce the error. 496 // * For [XRAI 497 // attribution][google.cloud.aiplatform.v1beta1.ExplanationParameters.xrai_attribution], 498 // increasing 499 // [step_count][google.cloud.aiplatform.v1beta1.XraiAttribution.step_count] 500 // might reduce the error. 501 // 502 // See [this introduction](/vertex-ai/docs/explainable-ai/overview) 503 // for more information. 504 ApproximationError float64 `protobuf:"fixed64,6,opt,name=approximation_error,json=approximationError,proto3" json:"approximation_error,omitempty"` 505 // Output only. Name of the explain output. Specified as the key in 506 // [ExplanationMetadata.outputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.outputs]. 507 OutputName string `protobuf:"bytes,7,opt,name=output_name,json=outputName,proto3" json:"output_name,omitempty"` 508 } 509 510 func (x *Attribution) Reset() { 511 *x = Attribution{} 512 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[2] 513 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 514 ms.StoreMessageInfo(mi) 515 } 516 517 func (x *Attribution) String() string { 518 return protoimpl.X.MessageStringOf(x) 519 } 520 521 func (*Attribution) ProtoMessage() {} 522 523 func (x *Attribution) ProtoReflect() protoreflect.Message { 524 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[2] 525 if x != nil { 526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 527 if ms.LoadMessageInfo() == nil { 528 ms.StoreMessageInfo(mi) 529 } 530 return ms 531 } 532 return mi.MessageOf(x) 533 } 534 535 // Deprecated: Use Attribution.ProtoReflect.Descriptor instead. 536 func (*Attribution) Descriptor() ([]byte, []int) { 537 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{2} 538 } 539 540 func (x *Attribution) GetBaselineOutputValue() float64 { 541 if x != nil { 542 return x.BaselineOutputValue 543 } 544 return 0 545 } 546 547 func (x *Attribution) GetInstanceOutputValue() float64 { 548 if x != nil { 549 return x.InstanceOutputValue 550 } 551 return 0 552 } 553 554 func (x *Attribution) GetFeatureAttributions() *structpb.Value { 555 if x != nil { 556 return x.FeatureAttributions 557 } 558 return nil 559 } 560 561 func (x *Attribution) GetOutputIndex() []int32 { 562 if x != nil { 563 return x.OutputIndex 564 } 565 return nil 566 } 567 568 func (x *Attribution) GetOutputDisplayName() string { 569 if x != nil { 570 return x.OutputDisplayName 571 } 572 return "" 573 } 574 575 func (x *Attribution) GetApproximationError() float64 { 576 if x != nil { 577 return x.ApproximationError 578 } 579 return 0 580 } 581 582 func (x *Attribution) GetOutputName() string { 583 if x != nil { 584 return x.OutputName 585 } 586 return "" 587 } 588 589 // Neighbors for example-based explanations. 590 type Neighbor struct { 591 state protoimpl.MessageState 592 sizeCache protoimpl.SizeCache 593 unknownFields protoimpl.UnknownFields 594 595 // Output only. The neighbor id. 596 NeighborId string `protobuf:"bytes,1,opt,name=neighbor_id,json=neighborId,proto3" json:"neighbor_id,omitempty"` 597 // Output only. The neighbor distance. 598 NeighborDistance float64 `protobuf:"fixed64,2,opt,name=neighbor_distance,json=neighborDistance,proto3" json:"neighbor_distance,omitempty"` 599 } 600 601 func (x *Neighbor) Reset() { 602 *x = Neighbor{} 603 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[3] 604 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 605 ms.StoreMessageInfo(mi) 606 } 607 608 func (x *Neighbor) String() string { 609 return protoimpl.X.MessageStringOf(x) 610 } 611 612 func (*Neighbor) ProtoMessage() {} 613 614 func (x *Neighbor) ProtoReflect() protoreflect.Message { 615 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[3] 616 if x != nil { 617 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 618 if ms.LoadMessageInfo() == nil { 619 ms.StoreMessageInfo(mi) 620 } 621 return ms 622 } 623 return mi.MessageOf(x) 624 } 625 626 // Deprecated: Use Neighbor.ProtoReflect.Descriptor instead. 627 func (*Neighbor) Descriptor() ([]byte, []int) { 628 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{3} 629 } 630 631 func (x *Neighbor) GetNeighborId() string { 632 if x != nil { 633 return x.NeighborId 634 } 635 return "" 636 } 637 638 func (x *Neighbor) GetNeighborDistance() float64 { 639 if x != nil { 640 return x.NeighborDistance 641 } 642 return 0 643 } 644 645 // Specification of Model explanation. 646 type ExplanationSpec struct { 647 state protoimpl.MessageState 648 sizeCache protoimpl.SizeCache 649 unknownFields protoimpl.UnknownFields 650 651 // Required. Parameters that configure explaining of the Model's predictions. 652 Parameters *ExplanationParameters `protobuf:"bytes,1,opt,name=parameters,proto3" json:"parameters,omitempty"` 653 // Optional. Metadata describing the Model's input and output for explanation. 654 Metadata *ExplanationMetadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 655 } 656 657 func (x *ExplanationSpec) Reset() { 658 *x = ExplanationSpec{} 659 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4] 660 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 661 ms.StoreMessageInfo(mi) 662 } 663 664 func (x *ExplanationSpec) String() string { 665 return protoimpl.X.MessageStringOf(x) 666 } 667 668 func (*ExplanationSpec) ProtoMessage() {} 669 670 func (x *ExplanationSpec) ProtoReflect() protoreflect.Message { 671 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[4] 672 if x != nil { 673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 674 if ms.LoadMessageInfo() == nil { 675 ms.StoreMessageInfo(mi) 676 } 677 return ms 678 } 679 return mi.MessageOf(x) 680 } 681 682 // Deprecated: Use ExplanationSpec.ProtoReflect.Descriptor instead. 683 func (*ExplanationSpec) Descriptor() ([]byte, []int) { 684 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{4} 685 } 686 687 func (x *ExplanationSpec) GetParameters() *ExplanationParameters { 688 if x != nil { 689 return x.Parameters 690 } 691 return nil 692 } 693 694 func (x *ExplanationSpec) GetMetadata() *ExplanationMetadata { 695 if x != nil { 696 return x.Metadata 697 } 698 return nil 699 } 700 701 // Parameters to configure explaining for Model's predictions. 702 type ExplanationParameters struct { 703 state protoimpl.MessageState 704 sizeCache protoimpl.SizeCache 705 unknownFields protoimpl.UnknownFields 706 707 // Types that are assignable to Method: 708 // 709 // *ExplanationParameters_SampledShapleyAttribution 710 // *ExplanationParameters_IntegratedGradientsAttribution 711 // *ExplanationParameters_XraiAttribution 712 // *ExplanationParameters_Examples 713 Method isExplanationParameters_Method `protobuf_oneof:"method"` 714 // If populated, returns attributions for top K indices of outputs 715 // (defaults to 1). Only applies to Models that predicts more than one outputs 716 // (e,g, multi-class Models). When set to -1, returns explanations for all 717 // outputs. 718 TopK int32 `protobuf:"varint,4,opt,name=top_k,json=topK,proto3" json:"top_k,omitempty"` 719 // If populated, only returns attributions that have 720 // [output_index][google.cloud.aiplatform.v1beta1.Attribution.output_index] 721 // contained in output_indices. It must be an ndarray of integers, with the 722 // same shape of the output it's explaining. 723 // 724 // If not populated, returns attributions for 725 // [top_k][google.cloud.aiplatform.v1beta1.ExplanationParameters.top_k] 726 // indices of outputs. If neither top_k nor output_indices is populated, 727 // returns the argmax index of the outputs. 728 // 729 // Only applicable to Models that predict multiple outputs (e,g, multi-class 730 // Models that predict multiple classes). 731 OutputIndices *structpb.ListValue `protobuf:"bytes,5,opt,name=output_indices,json=outputIndices,proto3" json:"output_indices,omitempty"` 732 } 733 734 func (x *ExplanationParameters) Reset() { 735 *x = ExplanationParameters{} 736 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5] 737 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 738 ms.StoreMessageInfo(mi) 739 } 740 741 func (x *ExplanationParameters) String() string { 742 return protoimpl.X.MessageStringOf(x) 743 } 744 745 func (*ExplanationParameters) ProtoMessage() {} 746 747 func (x *ExplanationParameters) ProtoReflect() protoreflect.Message { 748 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5] 749 if x != nil { 750 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 751 if ms.LoadMessageInfo() == nil { 752 ms.StoreMessageInfo(mi) 753 } 754 return ms 755 } 756 return mi.MessageOf(x) 757 } 758 759 // Deprecated: Use ExplanationParameters.ProtoReflect.Descriptor instead. 760 func (*ExplanationParameters) Descriptor() ([]byte, []int) { 761 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{5} 762 } 763 764 func (m *ExplanationParameters) GetMethod() isExplanationParameters_Method { 765 if m != nil { 766 return m.Method 767 } 768 return nil 769 } 770 771 func (x *ExplanationParameters) GetSampledShapleyAttribution() *SampledShapleyAttribution { 772 if x, ok := x.GetMethod().(*ExplanationParameters_SampledShapleyAttribution); ok { 773 return x.SampledShapleyAttribution 774 } 775 return nil 776 } 777 778 func (x *ExplanationParameters) GetIntegratedGradientsAttribution() *IntegratedGradientsAttribution { 779 if x, ok := x.GetMethod().(*ExplanationParameters_IntegratedGradientsAttribution); ok { 780 return x.IntegratedGradientsAttribution 781 } 782 return nil 783 } 784 785 func (x *ExplanationParameters) GetXraiAttribution() *XraiAttribution { 786 if x, ok := x.GetMethod().(*ExplanationParameters_XraiAttribution); ok { 787 return x.XraiAttribution 788 } 789 return nil 790 } 791 792 func (x *ExplanationParameters) GetExamples() *Examples { 793 if x, ok := x.GetMethod().(*ExplanationParameters_Examples); ok { 794 return x.Examples 795 } 796 return nil 797 } 798 799 func (x *ExplanationParameters) GetTopK() int32 { 800 if x != nil { 801 return x.TopK 802 } 803 return 0 804 } 805 806 func (x *ExplanationParameters) GetOutputIndices() *structpb.ListValue { 807 if x != nil { 808 return x.OutputIndices 809 } 810 return nil 811 } 812 813 type isExplanationParameters_Method interface { 814 isExplanationParameters_Method() 815 } 816 817 type ExplanationParameters_SampledShapleyAttribution struct { 818 // An attribution method that approximates Shapley values for features that 819 // contribute to the label being predicted. A sampling strategy is used to 820 // approximate the value rather than considering all subsets of features. 821 // Refer to this paper for model details: https://arxiv.org/abs/1306.4265. 822 SampledShapleyAttribution *SampledShapleyAttribution `protobuf:"bytes,1,opt,name=sampled_shapley_attribution,json=sampledShapleyAttribution,proto3,oneof"` 823 } 824 825 type ExplanationParameters_IntegratedGradientsAttribution struct { 826 // An attribution method that computes Aumann-Shapley values taking 827 // advantage of the model's fully differentiable structure. Refer to this 828 // paper for more details: https://arxiv.org/abs/1703.01365 829 IntegratedGradientsAttribution *IntegratedGradientsAttribution `protobuf:"bytes,2,opt,name=integrated_gradients_attribution,json=integratedGradientsAttribution,proto3,oneof"` 830 } 831 832 type ExplanationParameters_XraiAttribution struct { 833 // An attribution method that redistributes Integrated Gradients 834 // attribution to segmented regions, taking advantage of the model's fully 835 // differentiable structure. Refer to this paper for 836 // more details: https://arxiv.org/abs/1906.02825 837 // 838 // XRAI currently performs better on natural images, like a picture of a 839 // house or an animal. If the images are taken in artificial environments, 840 // like a lab or manufacturing line, or from diagnostic equipment, like 841 // x-rays or quality-control cameras, use Integrated Gradients instead. 842 XraiAttribution *XraiAttribution `protobuf:"bytes,3,opt,name=xrai_attribution,json=xraiAttribution,proto3,oneof"` 843 } 844 845 type ExplanationParameters_Examples struct { 846 // Example-based explanations that returns the nearest neighbors from the 847 // provided dataset. 848 Examples *Examples `protobuf:"bytes,7,opt,name=examples,proto3,oneof"` 849 } 850 851 func (*ExplanationParameters_SampledShapleyAttribution) isExplanationParameters_Method() {} 852 853 func (*ExplanationParameters_IntegratedGradientsAttribution) isExplanationParameters_Method() {} 854 855 func (*ExplanationParameters_XraiAttribution) isExplanationParameters_Method() {} 856 857 func (*ExplanationParameters_Examples) isExplanationParameters_Method() {} 858 859 // An attribution method that approximates Shapley values for features that 860 // contribute to the label being predicted. A sampling strategy is used to 861 // approximate the value rather than considering all subsets of features. 862 type SampledShapleyAttribution struct { 863 state protoimpl.MessageState 864 sizeCache protoimpl.SizeCache 865 unknownFields protoimpl.UnknownFields 866 867 // Required. The number of feature permutations to consider when approximating 868 // the Shapley values. 869 // 870 // Valid range of its value is [1, 50], inclusively. 871 PathCount int32 `protobuf:"varint,1,opt,name=path_count,json=pathCount,proto3" json:"path_count,omitempty"` 872 } 873 874 func (x *SampledShapleyAttribution) Reset() { 875 *x = SampledShapleyAttribution{} 876 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[6] 877 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 878 ms.StoreMessageInfo(mi) 879 } 880 881 func (x *SampledShapleyAttribution) String() string { 882 return protoimpl.X.MessageStringOf(x) 883 } 884 885 func (*SampledShapleyAttribution) ProtoMessage() {} 886 887 func (x *SampledShapleyAttribution) ProtoReflect() protoreflect.Message { 888 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[6] 889 if x != nil { 890 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 891 if ms.LoadMessageInfo() == nil { 892 ms.StoreMessageInfo(mi) 893 } 894 return ms 895 } 896 return mi.MessageOf(x) 897 } 898 899 // Deprecated: Use SampledShapleyAttribution.ProtoReflect.Descriptor instead. 900 func (*SampledShapleyAttribution) Descriptor() ([]byte, []int) { 901 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{6} 902 } 903 904 func (x *SampledShapleyAttribution) GetPathCount() int32 { 905 if x != nil { 906 return x.PathCount 907 } 908 return 0 909 } 910 911 // An attribution method that computes the Aumann-Shapley value taking advantage 912 // of the model's fully differentiable structure. Refer to this paper for 913 // more details: https://arxiv.org/abs/1703.01365 914 type IntegratedGradientsAttribution struct { 915 state protoimpl.MessageState 916 sizeCache protoimpl.SizeCache 917 unknownFields protoimpl.UnknownFields 918 919 // Required. The number of steps for approximating the path integral. 920 // A good value to start is 50 and gradually increase until the 921 // sum to diff property is within the desired error range. 922 // 923 // Valid range of its value is [1, 100], inclusively. 924 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 925 // Config for SmoothGrad approximation of gradients. 926 // 927 // When enabled, the gradients are approximated by averaging the gradients 928 // from noisy samples in the vicinity of the inputs. Adding 929 // noise can help improve the computed gradients. Refer to this paper for more 930 // details: https://arxiv.org/pdf/1706.03825.pdf 931 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 932 // Config for IG with blur baseline. 933 // 934 // When enabled, a linear path from the maximally blurred image to the input 935 // image is created. Using a blurred baseline instead of zero (black image) is 936 // motivated by the BlurIG approach explained here: 937 // https://arxiv.org/abs/2004.03383 938 BlurBaselineConfig *BlurBaselineConfig `protobuf:"bytes,3,opt,name=blur_baseline_config,json=blurBaselineConfig,proto3" json:"blur_baseline_config,omitempty"` 939 } 940 941 func (x *IntegratedGradientsAttribution) Reset() { 942 *x = IntegratedGradientsAttribution{} 943 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[7] 944 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 945 ms.StoreMessageInfo(mi) 946 } 947 948 func (x *IntegratedGradientsAttribution) String() string { 949 return protoimpl.X.MessageStringOf(x) 950 } 951 952 func (*IntegratedGradientsAttribution) ProtoMessage() {} 953 954 func (x *IntegratedGradientsAttribution) ProtoReflect() protoreflect.Message { 955 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[7] 956 if x != nil { 957 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 958 if ms.LoadMessageInfo() == nil { 959 ms.StoreMessageInfo(mi) 960 } 961 return ms 962 } 963 return mi.MessageOf(x) 964 } 965 966 // Deprecated: Use IntegratedGradientsAttribution.ProtoReflect.Descriptor instead. 967 func (*IntegratedGradientsAttribution) Descriptor() ([]byte, []int) { 968 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{7} 969 } 970 971 func (x *IntegratedGradientsAttribution) GetStepCount() int32 { 972 if x != nil { 973 return x.StepCount 974 } 975 return 0 976 } 977 978 func (x *IntegratedGradientsAttribution) GetSmoothGradConfig() *SmoothGradConfig { 979 if x != nil { 980 return x.SmoothGradConfig 981 } 982 return nil 983 } 984 985 func (x *IntegratedGradientsAttribution) GetBlurBaselineConfig() *BlurBaselineConfig { 986 if x != nil { 987 return x.BlurBaselineConfig 988 } 989 return nil 990 } 991 992 // An explanation method that redistributes Integrated Gradients 993 // attributions to segmented regions, taking advantage of the model's fully 994 // differentiable structure. Refer to this paper for more details: 995 // https://arxiv.org/abs/1906.02825 996 // 997 // Supported only by image Models. 998 type XraiAttribution struct { 999 state protoimpl.MessageState 1000 sizeCache protoimpl.SizeCache 1001 unknownFields protoimpl.UnknownFields 1002 1003 // Required. The number of steps for approximating the path integral. 1004 // A good value to start is 50 and gradually increase until the 1005 // sum to diff property is met within the desired error range. 1006 // 1007 // Valid range of its value is [1, 100], inclusively. 1008 StepCount int32 `protobuf:"varint,1,opt,name=step_count,json=stepCount,proto3" json:"step_count,omitempty"` 1009 // Config for SmoothGrad approximation of gradients. 1010 // 1011 // When enabled, the gradients are approximated by averaging the gradients 1012 // from noisy samples in the vicinity of the inputs. Adding 1013 // noise can help improve the computed gradients. Refer to this paper for more 1014 // details: https://arxiv.org/pdf/1706.03825.pdf 1015 SmoothGradConfig *SmoothGradConfig `protobuf:"bytes,2,opt,name=smooth_grad_config,json=smoothGradConfig,proto3" json:"smooth_grad_config,omitempty"` 1016 // Config for XRAI with blur baseline. 1017 // 1018 // When enabled, a linear path from the maximally blurred image to the input 1019 // image is created. Using a blurred baseline instead of zero (black image) is 1020 // motivated by the BlurIG approach explained here: 1021 // https://arxiv.org/abs/2004.03383 1022 BlurBaselineConfig *BlurBaselineConfig `protobuf:"bytes,3,opt,name=blur_baseline_config,json=blurBaselineConfig,proto3" json:"blur_baseline_config,omitempty"` 1023 } 1024 1025 func (x *XraiAttribution) Reset() { 1026 *x = XraiAttribution{} 1027 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8] 1028 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1029 ms.StoreMessageInfo(mi) 1030 } 1031 1032 func (x *XraiAttribution) String() string { 1033 return protoimpl.X.MessageStringOf(x) 1034 } 1035 1036 func (*XraiAttribution) ProtoMessage() {} 1037 1038 func (x *XraiAttribution) ProtoReflect() protoreflect.Message { 1039 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[8] 1040 if x != nil { 1041 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1042 if ms.LoadMessageInfo() == nil { 1043 ms.StoreMessageInfo(mi) 1044 } 1045 return ms 1046 } 1047 return mi.MessageOf(x) 1048 } 1049 1050 // Deprecated: Use XraiAttribution.ProtoReflect.Descriptor instead. 1051 func (*XraiAttribution) Descriptor() ([]byte, []int) { 1052 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{8} 1053 } 1054 1055 func (x *XraiAttribution) GetStepCount() int32 { 1056 if x != nil { 1057 return x.StepCount 1058 } 1059 return 0 1060 } 1061 1062 func (x *XraiAttribution) GetSmoothGradConfig() *SmoothGradConfig { 1063 if x != nil { 1064 return x.SmoothGradConfig 1065 } 1066 return nil 1067 } 1068 1069 func (x *XraiAttribution) GetBlurBaselineConfig() *BlurBaselineConfig { 1070 if x != nil { 1071 return x.BlurBaselineConfig 1072 } 1073 return nil 1074 } 1075 1076 // Config for SmoothGrad approximation of gradients. 1077 // 1078 // When enabled, the gradients are approximated by averaging the gradients from 1079 // noisy samples in the vicinity of the inputs. Adding noise can help improve 1080 // the computed gradients. Refer to this paper for more details: 1081 // https://arxiv.org/pdf/1706.03825.pdf 1082 type SmoothGradConfig struct { 1083 state protoimpl.MessageState 1084 sizeCache protoimpl.SizeCache 1085 unknownFields protoimpl.UnknownFields 1086 1087 // Represents the standard deviation of the gaussian kernel 1088 // that will be used to add noise to the interpolated inputs 1089 // prior to computing gradients. 1090 // 1091 // Types that are assignable to GradientNoiseSigma: 1092 // 1093 // *SmoothGradConfig_NoiseSigma 1094 // *SmoothGradConfig_FeatureNoiseSigma 1095 GradientNoiseSigma isSmoothGradConfig_GradientNoiseSigma `protobuf_oneof:"GradientNoiseSigma"` 1096 // The number of gradient samples to use for 1097 // approximation. The higher this number, the more accurate the gradient 1098 // is, but the runtime complexity increases by this factor as well. 1099 // Valid range of its value is [1, 50]. Defaults to 3. 1100 NoisySampleCount int32 `protobuf:"varint,3,opt,name=noisy_sample_count,json=noisySampleCount,proto3" json:"noisy_sample_count,omitempty"` 1101 } 1102 1103 func (x *SmoothGradConfig) Reset() { 1104 *x = SmoothGradConfig{} 1105 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9] 1106 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1107 ms.StoreMessageInfo(mi) 1108 } 1109 1110 func (x *SmoothGradConfig) String() string { 1111 return protoimpl.X.MessageStringOf(x) 1112 } 1113 1114 func (*SmoothGradConfig) ProtoMessage() {} 1115 1116 func (x *SmoothGradConfig) ProtoReflect() protoreflect.Message { 1117 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9] 1118 if x != nil { 1119 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1120 if ms.LoadMessageInfo() == nil { 1121 ms.StoreMessageInfo(mi) 1122 } 1123 return ms 1124 } 1125 return mi.MessageOf(x) 1126 } 1127 1128 // Deprecated: Use SmoothGradConfig.ProtoReflect.Descriptor instead. 1129 func (*SmoothGradConfig) Descriptor() ([]byte, []int) { 1130 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{9} 1131 } 1132 1133 func (m *SmoothGradConfig) GetGradientNoiseSigma() isSmoothGradConfig_GradientNoiseSigma { 1134 if m != nil { 1135 return m.GradientNoiseSigma 1136 } 1137 return nil 1138 } 1139 1140 func (x *SmoothGradConfig) GetNoiseSigma() float32 { 1141 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_NoiseSigma); ok { 1142 return x.NoiseSigma 1143 } 1144 return 0 1145 } 1146 1147 func (x *SmoothGradConfig) GetFeatureNoiseSigma() *FeatureNoiseSigma { 1148 if x, ok := x.GetGradientNoiseSigma().(*SmoothGradConfig_FeatureNoiseSigma); ok { 1149 return x.FeatureNoiseSigma 1150 } 1151 return nil 1152 } 1153 1154 func (x *SmoothGradConfig) GetNoisySampleCount() int32 { 1155 if x != nil { 1156 return x.NoisySampleCount 1157 } 1158 return 0 1159 } 1160 1161 type isSmoothGradConfig_GradientNoiseSigma interface { 1162 isSmoothGradConfig_GradientNoiseSigma() 1163 } 1164 1165 type SmoothGradConfig_NoiseSigma struct { 1166 // This is a single float value and will be used to add noise to all the 1167 // features. Use this field when all features are normalized to have the 1168 // same distribution: scale to range [0, 1], [-1, 1] or z-scoring, where 1169 // features are normalized to have 0-mean and 1-variance. Learn more about 1170 // [normalization](https://developers.google.com/machine-learning/data-prep/transform/normalization). 1171 // 1172 // For best results the recommended value is about 10% - 20% of the standard 1173 // deviation of the input feature. Refer to section 3.2 of the SmoothGrad 1174 // paper: https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. 1175 // 1176 // If the distribution is different per feature, set 1177 // [feature_noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.feature_noise_sigma] 1178 // instead for each feature. 1179 NoiseSigma float32 `protobuf:"fixed32,1,opt,name=noise_sigma,json=noiseSigma,proto3,oneof"` 1180 } 1181 1182 type SmoothGradConfig_FeatureNoiseSigma struct { 1183 // This is similar to 1184 // [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma], 1185 // but provides additional flexibility. A separate noise sigma can be 1186 // provided for each feature, which is useful if their distributions are 1187 // different. No noise is added to features that are not set. If this field 1188 // is unset, 1189 // [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma] 1190 // will be used for all features. 1191 FeatureNoiseSigma *FeatureNoiseSigma `protobuf:"bytes,2,opt,name=feature_noise_sigma,json=featureNoiseSigma,proto3,oneof"` 1192 } 1193 1194 func (*SmoothGradConfig_NoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 1195 1196 func (*SmoothGradConfig_FeatureNoiseSigma) isSmoothGradConfig_GradientNoiseSigma() {} 1197 1198 // Noise sigma by features. Noise sigma represents the standard deviation of the 1199 // gaussian kernel that will be used to add noise to interpolated inputs prior 1200 // to computing gradients. 1201 type FeatureNoiseSigma struct { 1202 state protoimpl.MessageState 1203 sizeCache protoimpl.SizeCache 1204 unknownFields protoimpl.UnknownFields 1205 1206 // Noise sigma per feature. No noise is added to features that are not set. 1207 NoiseSigma []*FeatureNoiseSigma_NoiseSigmaForFeature `protobuf:"bytes,1,rep,name=noise_sigma,json=noiseSigma,proto3" json:"noise_sigma,omitempty"` 1208 } 1209 1210 func (x *FeatureNoiseSigma) Reset() { 1211 *x = FeatureNoiseSigma{} 1212 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[10] 1213 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1214 ms.StoreMessageInfo(mi) 1215 } 1216 1217 func (x *FeatureNoiseSigma) String() string { 1218 return protoimpl.X.MessageStringOf(x) 1219 } 1220 1221 func (*FeatureNoiseSigma) ProtoMessage() {} 1222 1223 func (x *FeatureNoiseSigma) ProtoReflect() protoreflect.Message { 1224 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[10] 1225 if x != nil { 1226 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1227 if ms.LoadMessageInfo() == nil { 1228 ms.StoreMessageInfo(mi) 1229 } 1230 return ms 1231 } 1232 return mi.MessageOf(x) 1233 } 1234 1235 // Deprecated: Use FeatureNoiseSigma.ProtoReflect.Descriptor instead. 1236 func (*FeatureNoiseSigma) Descriptor() ([]byte, []int) { 1237 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{10} 1238 } 1239 1240 func (x *FeatureNoiseSigma) GetNoiseSigma() []*FeatureNoiseSigma_NoiseSigmaForFeature { 1241 if x != nil { 1242 return x.NoiseSigma 1243 } 1244 return nil 1245 } 1246 1247 // Config for blur baseline. 1248 // 1249 // When enabled, a linear path from the maximally blurred image to the input 1250 // image is created. Using a blurred baseline instead of zero (black image) is 1251 // motivated by the BlurIG approach explained here: 1252 // https://arxiv.org/abs/2004.03383 1253 type BlurBaselineConfig struct { 1254 state protoimpl.MessageState 1255 sizeCache protoimpl.SizeCache 1256 unknownFields protoimpl.UnknownFields 1257 1258 // The standard deviation of the blur kernel for the blurred baseline. The 1259 // same blurring parameter is used for both the height and the width 1260 // dimension. If not set, the method defaults to the zero (i.e. black for 1261 // images) baseline. 1262 MaxBlurSigma float32 `protobuf:"fixed32,1,opt,name=max_blur_sigma,json=maxBlurSigma,proto3" json:"max_blur_sigma,omitempty"` 1263 } 1264 1265 func (x *BlurBaselineConfig) Reset() { 1266 *x = BlurBaselineConfig{} 1267 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[11] 1268 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1269 ms.StoreMessageInfo(mi) 1270 } 1271 1272 func (x *BlurBaselineConfig) String() string { 1273 return protoimpl.X.MessageStringOf(x) 1274 } 1275 1276 func (*BlurBaselineConfig) ProtoMessage() {} 1277 1278 func (x *BlurBaselineConfig) ProtoReflect() protoreflect.Message { 1279 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[11] 1280 if x != nil { 1281 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1282 if ms.LoadMessageInfo() == nil { 1283 ms.StoreMessageInfo(mi) 1284 } 1285 return ms 1286 } 1287 return mi.MessageOf(x) 1288 } 1289 1290 // Deprecated: Use BlurBaselineConfig.ProtoReflect.Descriptor instead. 1291 func (*BlurBaselineConfig) Descriptor() ([]byte, []int) { 1292 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{11} 1293 } 1294 1295 func (x *BlurBaselineConfig) GetMaxBlurSigma() float32 { 1296 if x != nil { 1297 return x.MaxBlurSigma 1298 } 1299 return 0 1300 } 1301 1302 // Example-based explainability that returns the nearest neighbors from the 1303 // provided dataset. 1304 type Examples struct { 1305 state protoimpl.MessageState 1306 sizeCache protoimpl.SizeCache 1307 unknownFields protoimpl.UnknownFields 1308 1309 // Types that are assignable to Source: 1310 // 1311 // *Examples_ExampleGcsSource_ 1312 Source isExamples_Source `protobuf_oneof:"source"` 1313 // Types that are assignable to Config: 1314 // 1315 // *Examples_NearestNeighborSearchConfig 1316 // *Examples_Presets 1317 Config isExamples_Config `protobuf_oneof:"config"` 1318 // The Cloud Storage locations that contain the instances to be 1319 // indexed for approximate nearest neighbor search. 1320 GcsSource *GcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3" json:"gcs_source,omitempty"` 1321 // The number of neighbors to return when querying for examples. 1322 NeighborCount int32 `protobuf:"varint,3,opt,name=neighbor_count,json=neighborCount,proto3" json:"neighbor_count,omitempty"` 1323 } 1324 1325 func (x *Examples) Reset() { 1326 *x = Examples{} 1327 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[12] 1328 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1329 ms.StoreMessageInfo(mi) 1330 } 1331 1332 func (x *Examples) String() string { 1333 return protoimpl.X.MessageStringOf(x) 1334 } 1335 1336 func (*Examples) ProtoMessage() {} 1337 1338 func (x *Examples) ProtoReflect() protoreflect.Message { 1339 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[12] 1340 if x != nil { 1341 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1342 if ms.LoadMessageInfo() == nil { 1343 ms.StoreMessageInfo(mi) 1344 } 1345 return ms 1346 } 1347 return mi.MessageOf(x) 1348 } 1349 1350 // Deprecated: Use Examples.ProtoReflect.Descriptor instead. 1351 func (*Examples) Descriptor() ([]byte, []int) { 1352 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{12} 1353 } 1354 1355 func (m *Examples) GetSource() isExamples_Source { 1356 if m != nil { 1357 return m.Source 1358 } 1359 return nil 1360 } 1361 1362 func (x *Examples) GetExampleGcsSource() *Examples_ExampleGcsSource { 1363 if x, ok := x.GetSource().(*Examples_ExampleGcsSource_); ok { 1364 return x.ExampleGcsSource 1365 } 1366 return nil 1367 } 1368 1369 func (m *Examples) GetConfig() isExamples_Config { 1370 if m != nil { 1371 return m.Config 1372 } 1373 return nil 1374 } 1375 1376 func (x *Examples) GetNearestNeighborSearchConfig() *structpb.Value { 1377 if x, ok := x.GetConfig().(*Examples_NearestNeighborSearchConfig); ok { 1378 return x.NearestNeighborSearchConfig 1379 } 1380 return nil 1381 } 1382 1383 func (x *Examples) GetPresets() *Presets { 1384 if x, ok := x.GetConfig().(*Examples_Presets); ok { 1385 return x.Presets 1386 } 1387 return nil 1388 } 1389 1390 func (x *Examples) GetGcsSource() *GcsSource { 1391 if x != nil { 1392 return x.GcsSource 1393 } 1394 return nil 1395 } 1396 1397 func (x *Examples) GetNeighborCount() int32 { 1398 if x != nil { 1399 return x.NeighborCount 1400 } 1401 return 0 1402 } 1403 1404 type isExamples_Source interface { 1405 isExamples_Source() 1406 } 1407 1408 type Examples_ExampleGcsSource_ struct { 1409 // The Cloud Storage input instances. 1410 ExampleGcsSource *Examples_ExampleGcsSource `protobuf:"bytes,5,opt,name=example_gcs_source,json=exampleGcsSource,proto3,oneof"` 1411 } 1412 1413 func (*Examples_ExampleGcsSource_) isExamples_Source() {} 1414 1415 type isExamples_Config interface { 1416 isExamples_Config() 1417 } 1418 1419 type Examples_NearestNeighborSearchConfig struct { 1420 // The full configuration for the generated index, the semantics are the 1421 // same as [metadata][google.cloud.aiplatform.v1beta1.Index.metadata] and 1422 // should match 1423 // [NearestNeighborSearchConfig](https://cloud.google.com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#nearest-neighbor-search-config). 1424 NearestNeighborSearchConfig *structpb.Value `protobuf:"bytes,2,opt,name=nearest_neighbor_search_config,json=nearestNeighborSearchConfig,proto3,oneof"` 1425 } 1426 1427 type Examples_Presets struct { 1428 // Simplified preset configuration, which automatically sets configuration 1429 // values based on the desired query speed-precision trade-off and modality. 1430 Presets *Presets `protobuf:"bytes,4,opt,name=presets,proto3,oneof"` 1431 } 1432 1433 func (*Examples_NearestNeighborSearchConfig) isExamples_Config() {} 1434 1435 func (*Examples_Presets) isExamples_Config() {} 1436 1437 // Preset configuration for example-based explanations 1438 type Presets struct { 1439 state protoimpl.MessageState 1440 sizeCache protoimpl.SizeCache 1441 unknownFields protoimpl.UnknownFields 1442 1443 // Preset option controlling parameters for speed-precision trade-off when 1444 // querying for examples. If omitted, defaults to `PRECISE`. 1445 Query *Presets_Query `protobuf:"varint,1,opt,name=query,proto3,enum=google.cloud.aiplatform.v1beta1.Presets_Query,oneof" json:"query,omitempty"` 1446 // The modality of the uploaded model, which automatically configures the 1447 // distance measurement and feature normalization for the underlying example 1448 // index and queries. If your model does not precisely fit one of these types, 1449 // it is okay to choose the closest type. 1450 Modality Presets_Modality `protobuf:"varint,2,opt,name=modality,proto3,enum=google.cloud.aiplatform.v1beta1.Presets_Modality" json:"modality,omitempty"` 1451 } 1452 1453 func (x *Presets) Reset() { 1454 *x = Presets{} 1455 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[13] 1456 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1457 ms.StoreMessageInfo(mi) 1458 } 1459 1460 func (x *Presets) String() string { 1461 return protoimpl.X.MessageStringOf(x) 1462 } 1463 1464 func (*Presets) ProtoMessage() {} 1465 1466 func (x *Presets) ProtoReflect() protoreflect.Message { 1467 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[13] 1468 if x != nil { 1469 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1470 if ms.LoadMessageInfo() == nil { 1471 ms.StoreMessageInfo(mi) 1472 } 1473 return ms 1474 } 1475 return mi.MessageOf(x) 1476 } 1477 1478 // Deprecated: Use Presets.ProtoReflect.Descriptor instead. 1479 func (*Presets) Descriptor() ([]byte, []int) { 1480 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{13} 1481 } 1482 1483 func (x *Presets) GetQuery() Presets_Query { 1484 if x != nil && x.Query != nil { 1485 return *x.Query 1486 } 1487 return Presets_PRECISE 1488 } 1489 1490 func (x *Presets) GetModality() Presets_Modality { 1491 if x != nil { 1492 return x.Modality 1493 } 1494 return Presets_MODALITY_UNSPECIFIED 1495 } 1496 1497 // The [ExplanationSpec][google.cloud.aiplatform.v1beta1.ExplanationSpec] 1498 // entries that can be overridden at [online 1499 // explanation][google.cloud.aiplatform.v1beta1.PredictionService.Explain] time. 1500 type ExplanationSpecOverride struct { 1501 state protoimpl.MessageState 1502 sizeCache protoimpl.SizeCache 1503 unknownFields protoimpl.UnknownFields 1504 1505 // The parameters to be overridden. Note that the 1506 // attribution method cannot be changed. If not specified, 1507 // no parameter is overridden. 1508 Parameters *ExplanationParameters `protobuf:"bytes,1,opt,name=parameters,proto3" json:"parameters,omitempty"` 1509 // The metadata to be overridden. If not specified, no metadata is overridden. 1510 Metadata *ExplanationMetadataOverride `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 1511 // The example-based explanations parameter overrides. 1512 ExamplesOverride *ExamplesOverride `protobuf:"bytes,3,opt,name=examples_override,json=examplesOverride,proto3" json:"examples_override,omitempty"` 1513 } 1514 1515 func (x *ExplanationSpecOverride) Reset() { 1516 *x = ExplanationSpecOverride{} 1517 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[14] 1518 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1519 ms.StoreMessageInfo(mi) 1520 } 1521 1522 func (x *ExplanationSpecOverride) String() string { 1523 return protoimpl.X.MessageStringOf(x) 1524 } 1525 1526 func (*ExplanationSpecOverride) ProtoMessage() {} 1527 1528 func (x *ExplanationSpecOverride) ProtoReflect() protoreflect.Message { 1529 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[14] 1530 if x != nil { 1531 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1532 if ms.LoadMessageInfo() == nil { 1533 ms.StoreMessageInfo(mi) 1534 } 1535 return ms 1536 } 1537 return mi.MessageOf(x) 1538 } 1539 1540 // Deprecated: Use ExplanationSpecOverride.ProtoReflect.Descriptor instead. 1541 func (*ExplanationSpecOverride) Descriptor() ([]byte, []int) { 1542 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{14} 1543 } 1544 1545 func (x *ExplanationSpecOverride) GetParameters() *ExplanationParameters { 1546 if x != nil { 1547 return x.Parameters 1548 } 1549 return nil 1550 } 1551 1552 func (x *ExplanationSpecOverride) GetMetadata() *ExplanationMetadataOverride { 1553 if x != nil { 1554 return x.Metadata 1555 } 1556 return nil 1557 } 1558 1559 func (x *ExplanationSpecOverride) GetExamplesOverride() *ExamplesOverride { 1560 if x != nil { 1561 return x.ExamplesOverride 1562 } 1563 return nil 1564 } 1565 1566 // The 1567 // [ExplanationMetadata][google.cloud.aiplatform.v1beta1.ExplanationMetadata] 1568 // entries that can be overridden at [online 1569 // explanation][google.cloud.aiplatform.v1beta1.PredictionService.Explain] time. 1570 type ExplanationMetadataOverride struct { 1571 state protoimpl.MessageState 1572 sizeCache protoimpl.SizeCache 1573 unknownFields protoimpl.UnknownFields 1574 1575 // Required. Overrides the [input 1576 // metadata][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs] of 1577 // the features. The key is the name of the feature to be overridden. The keys 1578 // specified here must exist in the input metadata to be overridden. If a 1579 // feature is not specified here, the corresponding feature's input metadata 1580 // is not overridden. 1581 Inputs map[string]*ExplanationMetadataOverride_InputMetadataOverride `protobuf:"bytes,1,rep,name=inputs,proto3" json:"inputs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1582 } 1583 1584 func (x *ExplanationMetadataOverride) Reset() { 1585 *x = ExplanationMetadataOverride{} 1586 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[15] 1587 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1588 ms.StoreMessageInfo(mi) 1589 } 1590 1591 func (x *ExplanationMetadataOverride) String() string { 1592 return protoimpl.X.MessageStringOf(x) 1593 } 1594 1595 func (*ExplanationMetadataOverride) ProtoMessage() {} 1596 1597 func (x *ExplanationMetadataOverride) ProtoReflect() protoreflect.Message { 1598 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[15] 1599 if x != nil { 1600 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1601 if ms.LoadMessageInfo() == nil { 1602 ms.StoreMessageInfo(mi) 1603 } 1604 return ms 1605 } 1606 return mi.MessageOf(x) 1607 } 1608 1609 // Deprecated: Use ExplanationMetadataOverride.ProtoReflect.Descriptor instead. 1610 func (*ExplanationMetadataOverride) Descriptor() ([]byte, []int) { 1611 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{15} 1612 } 1613 1614 func (x *ExplanationMetadataOverride) GetInputs() map[string]*ExplanationMetadataOverride_InputMetadataOverride { 1615 if x != nil { 1616 return x.Inputs 1617 } 1618 return nil 1619 } 1620 1621 // Overrides for example-based explanations. 1622 type ExamplesOverride struct { 1623 state protoimpl.MessageState 1624 sizeCache protoimpl.SizeCache 1625 unknownFields protoimpl.UnknownFields 1626 1627 // The number of neighbors to return. 1628 NeighborCount int32 `protobuf:"varint,1,opt,name=neighbor_count,json=neighborCount,proto3" json:"neighbor_count,omitempty"` 1629 // The number of neighbors to return that have the same crowding tag. 1630 CrowdingCount int32 `protobuf:"varint,2,opt,name=crowding_count,json=crowdingCount,proto3" json:"crowding_count,omitempty"` 1631 // Restrict the resulting nearest neighbors to respect these constraints. 1632 Restrictions []*ExamplesRestrictionsNamespace `protobuf:"bytes,3,rep,name=restrictions,proto3" json:"restrictions,omitempty"` 1633 // If true, return the embeddings instead of neighbors. 1634 ReturnEmbeddings bool `protobuf:"varint,4,opt,name=return_embeddings,json=returnEmbeddings,proto3" json:"return_embeddings,omitempty"` 1635 // The format of the data being provided with each call. 1636 DataFormat ExamplesOverride_DataFormat `protobuf:"varint,5,opt,name=data_format,json=dataFormat,proto3,enum=google.cloud.aiplatform.v1beta1.ExamplesOverride_DataFormat" json:"data_format,omitempty"` 1637 } 1638 1639 func (x *ExamplesOverride) Reset() { 1640 *x = ExamplesOverride{} 1641 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[16] 1642 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1643 ms.StoreMessageInfo(mi) 1644 } 1645 1646 func (x *ExamplesOverride) String() string { 1647 return protoimpl.X.MessageStringOf(x) 1648 } 1649 1650 func (*ExamplesOverride) ProtoMessage() {} 1651 1652 func (x *ExamplesOverride) ProtoReflect() protoreflect.Message { 1653 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[16] 1654 if x != nil { 1655 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1656 if ms.LoadMessageInfo() == nil { 1657 ms.StoreMessageInfo(mi) 1658 } 1659 return ms 1660 } 1661 return mi.MessageOf(x) 1662 } 1663 1664 // Deprecated: Use ExamplesOverride.ProtoReflect.Descriptor instead. 1665 func (*ExamplesOverride) Descriptor() ([]byte, []int) { 1666 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{16} 1667 } 1668 1669 func (x *ExamplesOverride) GetNeighborCount() int32 { 1670 if x != nil { 1671 return x.NeighborCount 1672 } 1673 return 0 1674 } 1675 1676 func (x *ExamplesOverride) GetCrowdingCount() int32 { 1677 if x != nil { 1678 return x.CrowdingCount 1679 } 1680 return 0 1681 } 1682 1683 func (x *ExamplesOverride) GetRestrictions() []*ExamplesRestrictionsNamespace { 1684 if x != nil { 1685 return x.Restrictions 1686 } 1687 return nil 1688 } 1689 1690 func (x *ExamplesOverride) GetReturnEmbeddings() bool { 1691 if x != nil { 1692 return x.ReturnEmbeddings 1693 } 1694 return false 1695 } 1696 1697 func (x *ExamplesOverride) GetDataFormat() ExamplesOverride_DataFormat { 1698 if x != nil { 1699 return x.DataFormat 1700 } 1701 return ExamplesOverride_DATA_FORMAT_UNSPECIFIED 1702 } 1703 1704 // Restrictions namespace for example-based explanations overrides. 1705 type ExamplesRestrictionsNamespace struct { 1706 state protoimpl.MessageState 1707 sizeCache protoimpl.SizeCache 1708 unknownFields protoimpl.UnknownFields 1709 1710 // The namespace name. 1711 NamespaceName string `protobuf:"bytes,1,opt,name=namespace_name,json=namespaceName,proto3" json:"namespace_name,omitempty"` 1712 // The list of allowed tags. 1713 Allow []string `protobuf:"bytes,2,rep,name=allow,proto3" json:"allow,omitempty"` 1714 // The list of deny tags. 1715 Deny []string `protobuf:"bytes,3,rep,name=deny,proto3" json:"deny,omitempty"` 1716 } 1717 1718 func (x *ExamplesRestrictionsNamespace) Reset() { 1719 *x = ExamplesRestrictionsNamespace{} 1720 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[17] 1721 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1722 ms.StoreMessageInfo(mi) 1723 } 1724 1725 func (x *ExamplesRestrictionsNamespace) String() string { 1726 return protoimpl.X.MessageStringOf(x) 1727 } 1728 1729 func (*ExamplesRestrictionsNamespace) ProtoMessage() {} 1730 1731 func (x *ExamplesRestrictionsNamespace) ProtoReflect() protoreflect.Message { 1732 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[17] 1733 if x != nil { 1734 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1735 if ms.LoadMessageInfo() == nil { 1736 ms.StoreMessageInfo(mi) 1737 } 1738 return ms 1739 } 1740 return mi.MessageOf(x) 1741 } 1742 1743 // Deprecated: Use ExamplesRestrictionsNamespace.ProtoReflect.Descriptor instead. 1744 func (*ExamplesRestrictionsNamespace) Descriptor() ([]byte, []int) { 1745 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{17} 1746 } 1747 1748 func (x *ExamplesRestrictionsNamespace) GetNamespaceName() string { 1749 if x != nil { 1750 return x.NamespaceName 1751 } 1752 return "" 1753 } 1754 1755 func (x *ExamplesRestrictionsNamespace) GetAllow() []string { 1756 if x != nil { 1757 return x.Allow 1758 } 1759 return nil 1760 } 1761 1762 func (x *ExamplesRestrictionsNamespace) GetDeny() []string { 1763 if x != nil { 1764 return x.Deny 1765 } 1766 return nil 1767 } 1768 1769 // Noise sigma for a single feature. 1770 type FeatureNoiseSigma_NoiseSigmaForFeature struct { 1771 state protoimpl.MessageState 1772 sizeCache protoimpl.SizeCache 1773 unknownFields protoimpl.UnknownFields 1774 1775 // The name of the input feature for which noise sigma is provided. The 1776 // features are defined in 1777 // [explanation metadata 1778 // inputs][google.cloud.aiplatform.v1beta1.ExplanationMetadata.inputs]. 1779 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1780 // This represents the standard deviation of the Gaussian kernel that will 1781 // be used to add noise to the feature prior to computing gradients. Similar 1782 // to 1783 // [noise_sigma][google.cloud.aiplatform.v1beta1.SmoothGradConfig.noise_sigma] 1784 // but represents the noise added to the current feature. Defaults to 0.1. 1785 Sigma float32 `protobuf:"fixed32,2,opt,name=sigma,proto3" json:"sigma,omitempty"` 1786 } 1787 1788 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) Reset() { 1789 *x = FeatureNoiseSigma_NoiseSigmaForFeature{} 1790 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[18] 1791 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1792 ms.StoreMessageInfo(mi) 1793 } 1794 1795 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) String() string { 1796 return protoimpl.X.MessageStringOf(x) 1797 } 1798 1799 func (*FeatureNoiseSigma_NoiseSigmaForFeature) ProtoMessage() {} 1800 1801 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) ProtoReflect() protoreflect.Message { 1802 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[18] 1803 if x != nil { 1804 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1805 if ms.LoadMessageInfo() == nil { 1806 ms.StoreMessageInfo(mi) 1807 } 1808 return ms 1809 } 1810 return mi.MessageOf(x) 1811 } 1812 1813 // Deprecated: Use FeatureNoiseSigma_NoiseSigmaForFeature.ProtoReflect.Descriptor instead. 1814 func (*FeatureNoiseSigma_NoiseSigmaForFeature) Descriptor() ([]byte, []int) { 1815 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{10, 0} 1816 } 1817 1818 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetName() string { 1819 if x != nil { 1820 return x.Name 1821 } 1822 return "" 1823 } 1824 1825 func (x *FeatureNoiseSigma_NoiseSigmaForFeature) GetSigma() float32 { 1826 if x != nil { 1827 return x.Sigma 1828 } 1829 return 0 1830 } 1831 1832 // The Cloud Storage input instances. 1833 type Examples_ExampleGcsSource struct { 1834 state protoimpl.MessageState 1835 sizeCache protoimpl.SizeCache 1836 unknownFields protoimpl.UnknownFields 1837 1838 // The format in which instances are given, if not specified, assume it's 1839 // JSONL format. Currently only JSONL format is supported. 1840 DataFormat Examples_ExampleGcsSource_DataFormat `protobuf:"varint,1,opt,name=data_format,json=dataFormat,proto3,enum=google.cloud.aiplatform.v1beta1.Examples_ExampleGcsSource_DataFormat" json:"data_format,omitempty"` 1841 // The Cloud Storage location for the input instances. 1842 GcsSource *GcsSource `protobuf:"bytes,2,opt,name=gcs_source,json=gcsSource,proto3" json:"gcs_source,omitempty"` 1843 } 1844 1845 func (x *Examples_ExampleGcsSource) Reset() { 1846 *x = Examples_ExampleGcsSource{} 1847 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[19] 1848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1849 ms.StoreMessageInfo(mi) 1850 } 1851 1852 func (x *Examples_ExampleGcsSource) String() string { 1853 return protoimpl.X.MessageStringOf(x) 1854 } 1855 1856 func (*Examples_ExampleGcsSource) ProtoMessage() {} 1857 1858 func (x *Examples_ExampleGcsSource) ProtoReflect() protoreflect.Message { 1859 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[19] 1860 if x != nil { 1861 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1862 if ms.LoadMessageInfo() == nil { 1863 ms.StoreMessageInfo(mi) 1864 } 1865 return ms 1866 } 1867 return mi.MessageOf(x) 1868 } 1869 1870 // Deprecated: Use Examples_ExampleGcsSource.ProtoReflect.Descriptor instead. 1871 func (*Examples_ExampleGcsSource) Descriptor() ([]byte, []int) { 1872 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{12, 0} 1873 } 1874 1875 func (x *Examples_ExampleGcsSource) GetDataFormat() Examples_ExampleGcsSource_DataFormat { 1876 if x != nil { 1877 return x.DataFormat 1878 } 1879 return Examples_ExampleGcsSource_DATA_FORMAT_UNSPECIFIED 1880 } 1881 1882 func (x *Examples_ExampleGcsSource) GetGcsSource() *GcsSource { 1883 if x != nil { 1884 return x.GcsSource 1885 } 1886 return nil 1887 } 1888 1889 // The [input 1890 // metadata][google.cloud.aiplatform.v1beta1.ExplanationMetadata.InputMetadata] 1891 // entries to be overridden. 1892 type ExplanationMetadataOverride_InputMetadataOverride struct { 1893 state protoimpl.MessageState 1894 sizeCache protoimpl.SizeCache 1895 unknownFields protoimpl.UnknownFields 1896 1897 // Baseline inputs for this feature. 1898 // 1899 // This overrides the `input_baseline` field of the 1900 // [ExplanationMetadata.InputMetadata][google.cloud.aiplatform.v1beta1.ExplanationMetadata.InputMetadata] 1901 // object of the corresponding feature's input metadata. If it's not 1902 // specified, the original baselines are not overridden. 1903 InputBaselines []*structpb.Value `protobuf:"bytes,1,rep,name=input_baselines,json=inputBaselines,proto3" json:"input_baselines,omitempty"` 1904 } 1905 1906 func (x *ExplanationMetadataOverride_InputMetadataOverride) Reset() { 1907 *x = ExplanationMetadataOverride_InputMetadataOverride{} 1908 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[20] 1909 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1910 ms.StoreMessageInfo(mi) 1911 } 1912 1913 func (x *ExplanationMetadataOverride_InputMetadataOverride) String() string { 1914 return protoimpl.X.MessageStringOf(x) 1915 } 1916 1917 func (*ExplanationMetadataOverride_InputMetadataOverride) ProtoMessage() {} 1918 1919 func (x *ExplanationMetadataOverride_InputMetadataOverride) ProtoReflect() protoreflect.Message { 1920 mi := &file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[20] 1921 if x != nil { 1922 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1923 if ms.LoadMessageInfo() == nil { 1924 ms.StoreMessageInfo(mi) 1925 } 1926 return ms 1927 } 1928 return mi.MessageOf(x) 1929 } 1930 1931 // Deprecated: Use ExplanationMetadataOverride_InputMetadataOverride.ProtoReflect.Descriptor instead. 1932 func (*ExplanationMetadataOverride_InputMetadataOverride) Descriptor() ([]byte, []int) { 1933 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP(), []int{15, 0} 1934 } 1935 1936 func (x *ExplanationMetadataOverride_InputMetadataOverride) GetInputBaselines() []*structpb.Value { 1937 if x != nil { 1938 return x.InputBaselines 1939 } 1940 return nil 1941 } 1942 1943 var File_google_cloud_aiplatform_v1beta1_explanation_proto protoreflect.FileDescriptor 1944 1945 var file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc = []byte{ 1946 0x0a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 1947 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 1948 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 1949 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 1950 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 1951 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 1952 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 1953 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 1954 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 1955 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 1956 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1957 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 1958 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 1959 0x61, 0x31, 0x2f, 0x69, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 1960 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 1961 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x01, 0x0a, 0x0b, 0x45, 0x78, 1962 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0c, 0x61, 0x74, 0x74, 1963 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 1964 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 1965 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 1966 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 1967 0x41, 0x03, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 1968 0x12, 0x4c, 0x0a, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 1969 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 1970 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 1971 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x42, 0x03, 1972 0xe0, 0x41, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x22, 0x72, 1973 0x0a, 0x10, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 1974 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x11, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 1975 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 1976 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 1977 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 1978 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x03, 1979 0x52, 0x10, 0x6d, 0x65, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 1980 0x6e, 0x73, 0x22, 0x88, 0x03, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 1981 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x15, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6f, 1982 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 1983 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 1984 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x15, 0x69, 1985 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 1986 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 1987 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 1988 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 1989 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 1990 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1991 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 1992 0x13, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 1993 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 1994 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 1995 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x33, 0x0a, 0x13, 1996 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 1997 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 1998 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 1999 0x65, 0x12, 0x34, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x69, 2000 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 2001 0xe0, 0x41, 0x03, 0x52, 0x12, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x6d, 0x61, 0x74, 0x69, 2002 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 2003 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 2004 0x03, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 2005 0x08, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x69, 2006 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 2007 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x49, 0x64, 0x12, 2008 0x30, 0x0a, 0x11, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 2009 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 2010 0x10, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 2011 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 2012 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5b, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 2013 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2014 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2015 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 2016 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 2017 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 2018 0x72, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 2019 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2020 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 2021 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 2022 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 2023 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xad, 0x04, 0x0a, 0x15, 0x45, 0x78, 2024 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 2025 0x65, 0x72, 0x73, 0x12, 0x7c, 0x0a, 0x1b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x5f, 0x73, 2026 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 2027 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2028 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 2029 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 2030 0x65, 0x64, 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 2031 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x19, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x53, 2032 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 2033 0x6e, 0x12, 0x8b, 0x01, 0x0a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 2034 0x5f, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 2035 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 2036 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2037 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 2038 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 2039 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 2040 0x1e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 2041 0x65, 0x6e, 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 2042 0x5d, 0x0a, 0x10, 0x78, 0x72, 0x61, 0x69, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 2043 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2044 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2045 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x58, 0x72, 0x61, 0x69, 2046 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0f, 0x78, 2047 0x72, 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 2048 0x0a, 0x08, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 2049 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2050 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 2051 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x65, 2052 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x6f, 0x70, 0x5f, 0x6b, 2053 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4b, 0x12, 0x41, 0x0a, 0x0e, 2054 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x05, 2055 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2056 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 2057 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 2058 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x3f, 0x0a, 0x19, 0x53, 0x61, 0x6d, 2059 0x70, 0x6c, 0x65, 0x64, 0x53, 0x68, 0x61, 0x70, 0x6c, 0x65, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 2060 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x63, 2061 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 2062 0x09, 0x70, 0x61, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8c, 0x02, 0x0a, 0x1e, 0x49, 2063 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 2064 0x74, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 2065 0x0a, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2066 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 2067 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x67, 0x72, 0x61, 0x64, 2068 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 2069 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 2070 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2071 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2072 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 2073 0x69, 0x67, 0x12, 0x65, 0x0a, 0x14, 0x62, 0x6c, 0x75, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 2074 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 2075 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2076 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 2077 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 2078 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x62, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 2079 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xfd, 0x01, 0x0a, 0x0f, 0x58, 0x72, 2080 0x61, 0x69, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 2081 0x0a, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2082 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x74, 0x65, 0x70, 0x43, 0x6f, 0x75, 0x6e, 2083 0x74, 0x12, 0x5f, 0x0a, 0x12, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x5f, 0x67, 0x72, 0x61, 0x64, 2084 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 2085 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 2086 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2087 0x53, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2088 0x52, 0x10, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 2089 0x69, 0x67, 0x12, 0x65, 0x0a, 0x14, 0x62, 0x6c, 0x75, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 2090 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 2091 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2092 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 2093 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 2094 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x62, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 2095 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xdf, 0x01, 0x0a, 0x10, 0x53, 0x6d, 2096 0x6f, 0x6f, 0x74, 0x68, 0x47, 0x72, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 2097 0x0a, 0x0b, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 2098 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 2099 0x61, 0x12, 0x64, 0x0a, 0x13, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x69, 2100 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 2101 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 2102 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 2103 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 2104 0x6d, 0x61, 0x48, 0x00, 0x52, 0x11, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 2105 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x6f, 0x69, 0x73, 0x79, 2106 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 2107 0x01, 0x28, 0x05, 0x52, 0x10, 0x6e, 0x6f, 0x69, 0x73, 0x79, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 2108 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 2109 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x22, 0xbf, 0x01, 0x0a, 0x11, 2110 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 2111 0x61, 0x12, 0x68, 0x0a, 0x0b, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6d, 0x61, 2112 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2113 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2114 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 2115 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x2e, 0x4e, 0x6f, 0x69, 0x73, 0x65, 2116 0x53, 0x69, 0x67, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 2117 0x0a, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x1a, 0x40, 0x0a, 0x14, 0x4e, 2118 0x6f, 0x69, 0x73, 0x65, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x46, 0x6f, 0x72, 0x46, 0x65, 0x61, 0x74, 2119 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 2120 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 2121 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x22, 0x3a, 0x0a, 2122 0x12, 0x42, 0x6c, 0x75, 0x72, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 2123 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x6c, 0x75, 0x72, 0x5f, 2124 0x73, 0x69, 0x67, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x61, 0x78, 2125 0x42, 0x6c, 0x75, 0x72, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x22, 0x9f, 0x05, 0x0a, 0x08, 0x45, 0x78, 2126 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 2127 0x65, 0x5f, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 2128 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2129 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 2130 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x45, 0x78, 2131 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 2132 0x52, 0x10, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 2133 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x1e, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 2134 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 2135 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 2136 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 2137 0x75, 0x65, 0x48, 0x01, 0x52, 0x1b, 0x6e, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x4e, 0x65, 0x69, 2138 0x67, 0x68, 0x62, 0x6f, 0x72, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 2139 0x67, 0x12, 0x44, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 2140 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2141 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 2142 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x48, 0x01, 0x52, 0x07, 2143 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 2144 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 2145 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2146 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x63, 2147 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 2148 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x63, 2149 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x65, 0x69, 0x67, 2150 0x68, 0x62, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xfb, 0x01, 0x0a, 0x10, 0x45, 0x78, 2151 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x66, 2152 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 2153 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2154 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2155 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x45, 2156 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 2157 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 2158 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x49, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 2159 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 2160 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 2161 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x63, 0x73, 2162 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 2163 0x65, 0x22, 0x34, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 2164 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 2165 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 2166 0x4a, 0x53, 0x4f, 0x4e, 0x4c, 0x10, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 2167 0x65, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x95, 0x02, 0x0a, 0x07, 2168 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 2169 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2170 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2171 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 2172 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 2173 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 2174 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2175 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 2176 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x73, 0x2e, 0x4d, 2177 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 2178 0x79, 0x22, 0x1e, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 2179 0x45, 0x43, 0x49, 0x53, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x53, 0x54, 0x10, 2180 0x01, 0x22, 0x46, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 2181 0x14, 0x4d, 0x4f, 0x44, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 2182 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4d, 0x41, 0x47, 0x45, 2183 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x45, 0x58, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 2184 0x54, 0x41, 0x42, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 2185 0x65, 0x72, 0x79, 0x22, 0xab, 0x02, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 2186 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 2187 0x56, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 2188 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2189 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2190 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 2191 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x72, 2192 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 2193 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2194 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2195 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 2196 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 2197 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 2198 0x61, 0x12, 0x5e, 0x0a, 0x11, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x6f, 0x76, 2199 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 2200 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 2201 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 2202 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 2203 0x10, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 2204 0x65, 0x22, 0xee, 0x02, 0x0a, 0x1b, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 2205 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 2206 0x65, 0x12, 0x65, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 2207 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2208 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 2209 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 2210 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 2211 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 2212 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x1a, 0x58, 0x0a, 0x15, 0x49, 0x6e, 0x70, 0x75, 2213 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 2214 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 2215 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 2216 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 2217 0x75, 0x65, 0x52, 0x0e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 2218 0x65, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x0b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x45, 0x6e, 0x74, 2219 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2220 0x03, 0x6b, 0x65, 0x79, 0x12, 0x68, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 2221 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2222 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 2223 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 2224 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 2225 0x65, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4f, 2226 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 2227 0x38, 0x01, 0x22, 0x9a, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 2228 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x69, 0x67, 0x68, 2229 0x62, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 2230 0x0d, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 2231 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 2232 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x69, 0x6e, 0x67, 2233 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 2234 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 2235 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2236 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 2237 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 2238 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 2239 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x74, 2240 0x75, 0x72, 0x6e, 0x5f, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 2241 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x45, 0x6d, 0x62, 0x65, 2242 0x64, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x5d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 2243 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 2244 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 2245 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 2246 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e, 0x44, 2247 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x46, 2248 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x48, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 2249 0x6d, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 2250 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 2251 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 2252 0x0e, 0x0a, 0x0a, 0x45, 0x4d, 0x42, 0x45, 0x44, 0x44, 0x49, 0x4e, 0x47, 0x53, 0x10, 0x02, 0x22, 2253 0x70, 0x0a, 0x1d, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x74, 0x72, 2254 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 2255 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 2256 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 2257 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 2258 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 2259 0x04, 0x64, 0x65, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x6e, 2260 0x79, 0x42, 0xe7, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2261 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 2262 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x10, 0x45, 0x78, 0x70, 0x6c, 0x61, 2263 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x63, 2264 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 2265 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 2266 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 2267 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 2268 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 2269 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0x42, 2270 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 2271 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 2272 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 2273 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 2274 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 2275 0x74, 0x6f, 0x33, 2276 } 2277 2278 var ( 2279 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescOnce sync.Once 2280 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData = file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc 2281 ) 2282 2283 func file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescGZIP() []byte { 2284 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescOnce.Do(func() { 2285 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData) 2286 }) 2287 return file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDescData 2288 } 2289 2290 var file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 2291 var file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes = make([]protoimpl.MessageInfo, 22) 2292 var file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes = []any{ 2293 (Examples_ExampleGcsSource_DataFormat)(0), // 0: google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource.DataFormat 2294 (Presets_Query)(0), // 1: google.cloud.aiplatform.v1beta1.Presets.Query 2295 (Presets_Modality)(0), // 2: google.cloud.aiplatform.v1beta1.Presets.Modality 2296 (ExamplesOverride_DataFormat)(0), // 3: google.cloud.aiplatform.v1beta1.ExamplesOverride.DataFormat 2297 (*Explanation)(nil), // 4: google.cloud.aiplatform.v1beta1.Explanation 2298 (*ModelExplanation)(nil), // 5: google.cloud.aiplatform.v1beta1.ModelExplanation 2299 (*Attribution)(nil), // 6: google.cloud.aiplatform.v1beta1.Attribution 2300 (*Neighbor)(nil), // 7: google.cloud.aiplatform.v1beta1.Neighbor 2301 (*ExplanationSpec)(nil), // 8: google.cloud.aiplatform.v1beta1.ExplanationSpec 2302 (*ExplanationParameters)(nil), // 9: google.cloud.aiplatform.v1beta1.ExplanationParameters 2303 (*SampledShapleyAttribution)(nil), // 10: google.cloud.aiplatform.v1beta1.SampledShapleyAttribution 2304 (*IntegratedGradientsAttribution)(nil), // 11: google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution 2305 (*XraiAttribution)(nil), // 12: google.cloud.aiplatform.v1beta1.XraiAttribution 2306 (*SmoothGradConfig)(nil), // 13: google.cloud.aiplatform.v1beta1.SmoothGradConfig 2307 (*FeatureNoiseSigma)(nil), // 14: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma 2308 (*BlurBaselineConfig)(nil), // 15: google.cloud.aiplatform.v1beta1.BlurBaselineConfig 2309 (*Examples)(nil), // 16: google.cloud.aiplatform.v1beta1.Examples 2310 (*Presets)(nil), // 17: google.cloud.aiplatform.v1beta1.Presets 2311 (*ExplanationSpecOverride)(nil), // 18: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride 2312 (*ExplanationMetadataOverride)(nil), // 19: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride 2313 (*ExamplesOverride)(nil), // 20: google.cloud.aiplatform.v1beta1.ExamplesOverride 2314 (*ExamplesRestrictionsNamespace)(nil), // 21: google.cloud.aiplatform.v1beta1.ExamplesRestrictionsNamespace 2315 (*FeatureNoiseSigma_NoiseSigmaForFeature)(nil), // 22: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.NoiseSigmaForFeature 2316 (*Examples_ExampleGcsSource)(nil), // 23: google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource 2317 (*ExplanationMetadataOverride_InputMetadataOverride)(nil), // 24: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputMetadataOverride 2318 nil, // 25: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputsEntry 2319 (*structpb.Value)(nil), // 26: google.protobuf.Value 2320 (*ExplanationMetadata)(nil), // 27: google.cloud.aiplatform.v1beta1.ExplanationMetadata 2321 (*structpb.ListValue)(nil), // 28: google.protobuf.ListValue 2322 (*GcsSource)(nil), // 29: google.cloud.aiplatform.v1beta1.GcsSource 2323 } 2324 var file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs = []int32{ 2325 6, // 0: google.cloud.aiplatform.v1beta1.Explanation.attributions:type_name -> google.cloud.aiplatform.v1beta1.Attribution 2326 7, // 1: google.cloud.aiplatform.v1beta1.Explanation.neighbors:type_name -> google.cloud.aiplatform.v1beta1.Neighbor 2327 6, // 2: google.cloud.aiplatform.v1beta1.ModelExplanation.mean_attributions:type_name -> google.cloud.aiplatform.v1beta1.Attribution 2328 26, // 3: google.cloud.aiplatform.v1beta1.Attribution.feature_attributions:type_name -> google.protobuf.Value 2329 9, // 4: google.cloud.aiplatform.v1beta1.ExplanationSpec.parameters:type_name -> google.cloud.aiplatform.v1beta1.ExplanationParameters 2330 27, // 5: google.cloud.aiplatform.v1beta1.ExplanationSpec.metadata:type_name -> google.cloud.aiplatform.v1beta1.ExplanationMetadata 2331 10, // 6: google.cloud.aiplatform.v1beta1.ExplanationParameters.sampled_shapley_attribution:type_name -> google.cloud.aiplatform.v1beta1.SampledShapleyAttribution 2332 11, // 7: google.cloud.aiplatform.v1beta1.ExplanationParameters.integrated_gradients_attribution:type_name -> google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution 2333 12, // 8: google.cloud.aiplatform.v1beta1.ExplanationParameters.xrai_attribution:type_name -> google.cloud.aiplatform.v1beta1.XraiAttribution 2334 16, // 9: google.cloud.aiplatform.v1beta1.ExplanationParameters.examples:type_name -> google.cloud.aiplatform.v1beta1.Examples 2335 28, // 10: google.cloud.aiplatform.v1beta1.ExplanationParameters.output_indices:type_name -> google.protobuf.ListValue 2336 13, // 11: google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1beta1.SmoothGradConfig 2337 15, // 12: google.cloud.aiplatform.v1beta1.IntegratedGradientsAttribution.blur_baseline_config:type_name -> google.cloud.aiplatform.v1beta1.BlurBaselineConfig 2338 13, // 13: google.cloud.aiplatform.v1beta1.XraiAttribution.smooth_grad_config:type_name -> google.cloud.aiplatform.v1beta1.SmoothGradConfig 2339 15, // 14: google.cloud.aiplatform.v1beta1.XraiAttribution.blur_baseline_config:type_name -> google.cloud.aiplatform.v1beta1.BlurBaselineConfig 2340 14, // 15: google.cloud.aiplatform.v1beta1.SmoothGradConfig.feature_noise_sigma:type_name -> google.cloud.aiplatform.v1beta1.FeatureNoiseSigma 2341 22, // 16: google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.noise_sigma:type_name -> google.cloud.aiplatform.v1beta1.FeatureNoiseSigma.NoiseSigmaForFeature 2342 23, // 17: google.cloud.aiplatform.v1beta1.Examples.example_gcs_source:type_name -> google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource 2343 26, // 18: google.cloud.aiplatform.v1beta1.Examples.nearest_neighbor_search_config:type_name -> google.protobuf.Value 2344 17, // 19: google.cloud.aiplatform.v1beta1.Examples.presets:type_name -> google.cloud.aiplatform.v1beta1.Presets 2345 29, // 20: google.cloud.aiplatform.v1beta1.Examples.gcs_source:type_name -> google.cloud.aiplatform.v1beta1.GcsSource 2346 1, // 21: google.cloud.aiplatform.v1beta1.Presets.query:type_name -> google.cloud.aiplatform.v1beta1.Presets.Query 2347 2, // 22: google.cloud.aiplatform.v1beta1.Presets.modality:type_name -> google.cloud.aiplatform.v1beta1.Presets.Modality 2348 9, // 23: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride.parameters:type_name -> google.cloud.aiplatform.v1beta1.ExplanationParameters 2349 19, // 24: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride.metadata:type_name -> google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride 2350 20, // 25: google.cloud.aiplatform.v1beta1.ExplanationSpecOverride.examples_override:type_name -> google.cloud.aiplatform.v1beta1.ExamplesOverride 2351 25, // 26: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.inputs:type_name -> google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputsEntry 2352 21, // 27: google.cloud.aiplatform.v1beta1.ExamplesOverride.restrictions:type_name -> google.cloud.aiplatform.v1beta1.ExamplesRestrictionsNamespace 2353 3, // 28: google.cloud.aiplatform.v1beta1.ExamplesOverride.data_format:type_name -> google.cloud.aiplatform.v1beta1.ExamplesOverride.DataFormat 2354 0, // 29: google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource.data_format:type_name -> google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource.DataFormat 2355 29, // 30: google.cloud.aiplatform.v1beta1.Examples.ExampleGcsSource.gcs_source:type_name -> google.cloud.aiplatform.v1beta1.GcsSource 2356 26, // 31: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputMetadataOverride.input_baselines:type_name -> google.protobuf.Value 2357 24, // 32: google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputsEntry.value:type_name -> google.cloud.aiplatform.v1beta1.ExplanationMetadataOverride.InputMetadataOverride 2358 33, // [33:33] is the sub-list for method output_type 2359 33, // [33:33] is the sub-list for method input_type 2360 33, // [33:33] is the sub-list for extension type_name 2361 33, // [33:33] is the sub-list for extension extendee 2362 0, // [0:33] is the sub-list for field type_name 2363 } 2364 2365 func init() { file_google_cloud_aiplatform_v1beta1_explanation_proto_init() } 2366 func file_google_cloud_aiplatform_v1beta1_explanation_proto_init() { 2367 if File_google_cloud_aiplatform_v1beta1_explanation_proto != nil { 2368 return 2369 } 2370 file_google_cloud_aiplatform_v1beta1_explanation_metadata_proto_init() 2371 file_google_cloud_aiplatform_v1beta1_io_proto_init() 2372 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[5].OneofWrappers = []any{ 2373 (*ExplanationParameters_SampledShapleyAttribution)(nil), 2374 (*ExplanationParameters_IntegratedGradientsAttribution)(nil), 2375 (*ExplanationParameters_XraiAttribution)(nil), 2376 (*ExplanationParameters_Examples)(nil), 2377 } 2378 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[9].OneofWrappers = []any{ 2379 (*SmoothGradConfig_NoiseSigma)(nil), 2380 (*SmoothGradConfig_FeatureNoiseSigma)(nil), 2381 } 2382 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[12].OneofWrappers = []any{ 2383 (*Examples_ExampleGcsSource_)(nil), 2384 (*Examples_NearestNeighborSearchConfig)(nil), 2385 (*Examples_Presets)(nil), 2386 } 2387 file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes[13].OneofWrappers = []any{} 2388 type x struct{} 2389 out := protoimpl.TypeBuilder{ 2390 File: protoimpl.DescBuilder{ 2391 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2392 RawDescriptor: file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc, 2393 NumEnums: 4, 2394 NumMessages: 22, 2395 NumExtensions: 0, 2396 NumServices: 0, 2397 }, 2398 GoTypes: file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes, 2399 DependencyIndexes: file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs, 2400 EnumInfos: file_google_cloud_aiplatform_v1beta1_explanation_proto_enumTypes, 2401 MessageInfos: file_google_cloud_aiplatform_v1beta1_explanation_proto_msgTypes, 2402 }.Build() 2403 File_google_cloud_aiplatform_v1beta1_explanation_proto = out.File 2404 file_google_cloud_aiplatform_v1beta1_explanation_proto_rawDesc = nil 2405 file_google_cloud_aiplatform_v1beta1_explanation_proto_goTypes = nil 2406 file_google_cloud_aiplatform_v1beta1_explanation_proto_depIdxs = nil 2407 }