1// Copyright 2019 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 16// Code generated by protoc-gen-go. DO NOT EDIT. 17// versions: 18// protoc-gen-go v1.26.0 19// protoc v3.12.2 20// source: google/cloud/vision/v1p3beta1/product_search_service.proto 21 22package vision 23 24import ( 25 context "context" 26 reflect "reflect" 27 sync "sync" 28 29 _ "google.golang.org/genproto/googleapis/api/annotations" 30 longrunning "google.golang.org/genproto/googleapis/longrunning" 31 status "google.golang.org/genproto/googleapis/rpc/status" 32 grpc "google.golang.org/grpc" 33 codes "google.golang.org/grpc/codes" 34 status1 "google.golang.org/grpc/status" 35 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 36 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 37 emptypb "google.golang.org/protobuf/types/known/emptypb" 38 fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 39 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 40) 41 42const ( 43 // Verify that this generated code is sufficiently up-to-date. 44 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 45 // Verify that runtime/protoimpl is sufficiently up-to-date. 46 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 47) 48 49// Enumerates the possible states that the batch request can be in. 50type BatchOperationMetadata_State int32 51 52const ( 53 // Invalid. 54 BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0 55 // Request is actively being processed. 56 BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1 57 // The request is done and at least one item has been successfully 58 // processed. 59 BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2 60 // The request is done and no item has been successfully processed. 61 BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3 62 // The request is done after the longrunning.Operations.CancelOperation has 63 // been called by the user. Any records that were processed before the 64 // cancel command are output as specified in the request. 65 BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4 66) 67 68// Enum value maps for BatchOperationMetadata_State. 69var ( 70 BatchOperationMetadata_State_name = map[int32]string{ 71 0: "STATE_UNSPECIFIED", 72 1: "PROCESSING", 73 2: "SUCCESSFUL", 74 3: "FAILED", 75 4: "CANCELLED", 76 } 77 BatchOperationMetadata_State_value = map[string]int32{ 78 "STATE_UNSPECIFIED": 0, 79 "PROCESSING": 1, 80 "SUCCESSFUL": 2, 81 "FAILED": 3, 82 "CANCELLED": 4, 83 } 84) 85 86func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State { 87 p := new(BatchOperationMetadata_State) 88 *p = x 89 return p 90} 91 92func (x BatchOperationMetadata_State) String() string { 93 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 94} 95 96func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor { 97 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0].Descriptor() 98} 99 100func (BatchOperationMetadata_State) Type() protoreflect.EnumType { 101 return &file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0] 102} 103 104func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber { 105 return protoreflect.EnumNumber(x) 106} 107 108// Deprecated: Use BatchOperationMetadata_State.Descriptor instead. 109func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) { 110 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28, 0} 111} 112 113// A Product contains ReferenceImages. 114type Product struct { 115 state protoimpl.MessageState 116 sizeCache protoimpl.SizeCache 117 unknownFields protoimpl.UnknownFields 118 119 // The resource name of the product. 120 // 121 // Format is: 122 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 123 // 124 // This field is ignored when creating a product. 125 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 126 // The user-provided name for this Product. Must not be empty. Must be at most 127 // 4096 characters long. 128 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 129 // User-provided metadata to be stored with this product. Must be at most 4096 130 // characters long. 131 Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` 132 // Immutable. The category for the product identified by the reference image. This should 133 // be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy categories 134 // "homegoods", "apparel", and "toys" are still supported, but these should 135 // not be used for new products. 136 ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"` 137 // Key-value pairs that can be attached to a product. At query time, 138 // constraints can be specified based on the product_labels. 139 // 140 // Note that integer values can be provided as strings, e.g. "1199". Only 141 // strings with integer values can match a range-based restriction which is 142 // to be supported soon. 143 // 144 // Multiple values can be assigned to the same key. One product may have up to 145 // 100 product_labels. 146 ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"` 147} 148 149func (x *Product) Reset() { 150 *x = Product{} 151 if protoimpl.UnsafeEnabled { 152 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0] 153 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 154 ms.StoreMessageInfo(mi) 155 } 156} 157 158func (x *Product) String() string { 159 return protoimpl.X.MessageStringOf(x) 160} 161 162func (*Product) ProtoMessage() {} 163 164func (x *Product) ProtoReflect() protoreflect.Message { 165 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0] 166 if protoimpl.UnsafeEnabled && x != nil { 167 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 168 if ms.LoadMessageInfo() == nil { 169 ms.StoreMessageInfo(mi) 170 } 171 return ms 172 } 173 return mi.MessageOf(x) 174} 175 176// Deprecated: Use Product.ProtoReflect.Descriptor instead. 177func (*Product) Descriptor() ([]byte, []int) { 178 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0} 179} 180 181func (x *Product) GetName() string { 182 if x != nil { 183 return x.Name 184 } 185 return "" 186} 187 188func (x *Product) GetDisplayName() string { 189 if x != nil { 190 return x.DisplayName 191 } 192 return "" 193} 194 195func (x *Product) GetDescription() string { 196 if x != nil { 197 return x.Description 198 } 199 return "" 200} 201 202func (x *Product) GetProductCategory() string { 203 if x != nil { 204 return x.ProductCategory 205 } 206 return "" 207} 208 209func (x *Product) GetProductLabels() []*Product_KeyValue { 210 if x != nil { 211 return x.ProductLabels 212 } 213 return nil 214} 215 216// A ProductSet contains Products. A ProductSet can contain a maximum of 1 217// million reference images. If the limit is exceeded, periodic indexing will 218// fail. 219type ProductSet struct { 220 state protoimpl.MessageState 221 sizeCache protoimpl.SizeCache 222 unknownFields protoimpl.UnknownFields 223 224 // The resource name of the ProductSet. 225 // 226 // Format is: 227 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. 228 // 229 // This field is ignored when creating a ProductSet. 230 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 231 // The user-provided name for this ProductSet. Must not be empty. Must be at 232 // most 4096 characters long. 233 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 234 // Output only. The time at which this ProductSet was last indexed. Query 235 // results will reflect all updates before this time. If this ProductSet has 236 // never been indexed, this field is 0. 237 // 238 // This field is ignored when creating a ProductSet. 239 IndexTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"` 240 // Output only. If there was an error with indexing the product set, the field 241 // is populated. 242 // 243 // This field is ignored when creating a ProductSet. 244 IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"` 245} 246 247func (x *ProductSet) Reset() { 248 *x = ProductSet{} 249 if protoimpl.UnsafeEnabled { 250 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1] 251 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 252 ms.StoreMessageInfo(mi) 253 } 254} 255 256func (x *ProductSet) String() string { 257 return protoimpl.X.MessageStringOf(x) 258} 259 260func (*ProductSet) ProtoMessage() {} 261 262func (x *ProductSet) ProtoReflect() protoreflect.Message { 263 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1] 264 if protoimpl.UnsafeEnabled && x != nil { 265 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 266 if ms.LoadMessageInfo() == nil { 267 ms.StoreMessageInfo(mi) 268 } 269 return ms 270 } 271 return mi.MessageOf(x) 272} 273 274// Deprecated: Use ProductSet.ProtoReflect.Descriptor instead. 275func (*ProductSet) Descriptor() ([]byte, []int) { 276 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{1} 277} 278 279func (x *ProductSet) GetName() string { 280 if x != nil { 281 return x.Name 282 } 283 return "" 284} 285 286func (x *ProductSet) GetDisplayName() string { 287 if x != nil { 288 return x.DisplayName 289 } 290 return "" 291} 292 293func (x *ProductSet) GetIndexTime() *timestamppb.Timestamp { 294 if x != nil { 295 return x.IndexTime 296 } 297 return nil 298} 299 300func (x *ProductSet) GetIndexError() *status.Status { 301 if x != nil { 302 return x.IndexError 303 } 304 return nil 305} 306 307// A `ReferenceImage` represents a product image and its associated metadata, 308// such as bounding boxes. 309type ReferenceImage struct { 310 state protoimpl.MessageState 311 sizeCache protoimpl.SizeCache 312 unknownFields protoimpl.UnknownFields 313 314 // The resource name of the reference image. 315 // 316 // Format is: 317 // 318 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. 319 // 320 // This field is ignored when creating a reference image. 321 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 322 // Required. The Google Cloud Storage URI of the reference image. 323 // 324 // The URI must start with `gs://`. 325 Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` 326 // Optional. Bounding polygons around the areas of interest in the reference image. 327 // If this field is empty, the system will try to detect regions of 328 // interest. At most 10 bounding polygons will be used. 329 // 330 // The provided shape is converted into a non-rotated rectangle. Once 331 // converted, the small edge of the rectangle must be greater than or equal 332 // to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 333 // is not). 334 BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"` 335} 336 337func (x *ReferenceImage) Reset() { 338 *x = ReferenceImage{} 339 if protoimpl.UnsafeEnabled { 340 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2] 341 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 342 ms.StoreMessageInfo(mi) 343 } 344} 345 346func (x *ReferenceImage) String() string { 347 return protoimpl.X.MessageStringOf(x) 348} 349 350func (*ReferenceImage) ProtoMessage() {} 351 352func (x *ReferenceImage) ProtoReflect() protoreflect.Message { 353 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2] 354 if protoimpl.UnsafeEnabled && x != nil { 355 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 356 if ms.LoadMessageInfo() == nil { 357 ms.StoreMessageInfo(mi) 358 } 359 return ms 360 } 361 return mi.MessageOf(x) 362} 363 364// Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead. 365func (*ReferenceImage) Descriptor() ([]byte, []int) { 366 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{2} 367} 368 369func (x *ReferenceImage) GetName() string { 370 if x != nil { 371 return x.Name 372 } 373 return "" 374} 375 376func (x *ReferenceImage) GetUri() string { 377 if x != nil { 378 return x.Uri 379 } 380 return "" 381} 382 383func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly { 384 if x != nil { 385 return x.BoundingPolys 386 } 387 return nil 388} 389 390// Request message for the `CreateProduct` method. 391type CreateProductRequest struct { 392 state protoimpl.MessageState 393 sizeCache protoimpl.SizeCache 394 unknownFields protoimpl.UnknownFields 395 396 // Required. The project in which the Product should be created. 397 // 398 // Format is 399 // `projects/PROJECT_ID/locations/LOC_ID`. 400 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 401 // Required. The product to create. 402 Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 403 // A user-supplied resource id for this Product. If set, the server will 404 // attempt to use this value as the resource id. If it is already in use, an 405 // error is returned with code ALREADY_EXISTS. Must be at most 128 characters 406 // long. It cannot contain the character `/`. 407 ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` 408} 409 410func (x *CreateProductRequest) Reset() { 411 *x = CreateProductRequest{} 412 if protoimpl.UnsafeEnabled { 413 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3] 414 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 415 ms.StoreMessageInfo(mi) 416 } 417} 418 419func (x *CreateProductRequest) String() string { 420 return protoimpl.X.MessageStringOf(x) 421} 422 423func (*CreateProductRequest) ProtoMessage() {} 424 425func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { 426 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3] 427 if protoimpl.UnsafeEnabled && x != nil { 428 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 429 if ms.LoadMessageInfo() == nil { 430 ms.StoreMessageInfo(mi) 431 } 432 return ms 433 } 434 return mi.MessageOf(x) 435} 436 437// Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead. 438func (*CreateProductRequest) Descriptor() ([]byte, []int) { 439 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{3} 440} 441 442func (x *CreateProductRequest) GetParent() string { 443 if x != nil { 444 return x.Parent 445 } 446 return "" 447} 448 449func (x *CreateProductRequest) GetProduct() *Product { 450 if x != nil { 451 return x.Product 452 } 453 return nil 454} 455 456func (x *CreateProductRequest) GetProductId() string { 457 if x != nil { 458 return x.ProductId 459 } 460 return "" 461} 462 463// Request message for the `ListProducts` method. 464type ListProductsRequest struct { 465 state protoimpl.MessageState 466 sizeCache protoimpl.SizeCache 467 unknownFields protoimpl.UnknownFields 468 469 // Required. The project OR ProductSet from which Products should be listed. 470 // 471 // Format: 472 // `projects/PROJECT_ID/locations/LOC_ID` 473 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 474 // The maximum number of items to return. Default 10, maximum 100. 475 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 476 // The next_page_token returned from a previous List request, if any. 477 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 478} 479 480func (x *ListProductsRequest) Reset() { 481 *x = ListProductsRequest{} 482 if protoimpl.UnsafeEnabled { 483 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4] 484 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 485 ms.StoreMessageInfo(mi) 486 } 487} 488 489func (x *ListProductsRequest) String() string { 490 return protoimpl.X.MessageStringOf(x) 491} 492 493func (*ListProductsRequest) ProtoMessage() {} 494 495func (x *ListProductsRequest) ProtoReflect() protoreflect.Message { 496 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4] 497 if protoimpl.UnsafeEnabled && x != nil { 498 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 499 if ms.LoadMessageInfo() == nil { 500 ms.StoreMessageInfo(mi) 501 } 502 return ms 503 } 504 return mi.MessageOf(x) 505} 506 507// Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead. 508func (*ListProductsRequest) Descriptor() ([]byte, []int) { 509 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{4} 510} 511 512func (x *ListProductsRequest) GetParent() string { 513 if x != nil { 514 return x.Parent 515 } 516 return "" 517} 518 519func (x *ListProductsRequest) GetPageSize() int32 { 520 if x != nil { 521 return x.PageSize 522 } 523 return 0 524} 525 526func (x *ListProductsRequest) GetPageToken() string { 527 if x != nil { 528 return x.PageToken 529 } 530 return "" 531} 532 533// Response message for the `ListProducts` method. 534type ListProductsResponse struct { 535 state protoimpl.MessageState 536 sizeCache protoimpl.SizeCache 537 unknownFields protoimpl.UnknownFields 538 539 // List of products. 540 Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` 541 // Token to retrieve the next page of results, or empty if there are no more 542 // results in the list. 543 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 544} 545 546func (x *ListProductsResponse) Reset() { 547 *x = ListProductsResponse{} 548 if protoimpl.UnsafeEnabled { 549 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5] 550 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 551 ms.StoreMessageInfo(mi) 552 } 553} 554 555func (x *ListProductsResponse) String() string { 556 return protoimpl.X.MessageStringOf(x) 557} 558 559func (*ListProductsResponse) ProtoMessage() {} 560 561func (x *ListProductsResponse) ProtoReflect() protoreflect.Message { 562 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5] 563 if protoimpl.UnsafeEnabled && x != nil { 564 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 565 if ms.LoadMessageInfo() == nil { 566 ms.StoreMessageInfo(mi) 567 } 568 return ms 569 } 570 return mi.MessageOf(x) 571} 572 573// Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead. 574func (*ListProductsResponse) Descriptor() ([]byte, []int) { 575 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{5} 576} 577 578func (x *ListProductsResponse) GetProducts() []*Product { 579 if x != nil { 580 return x.Products 581 } 582 return nil 583} 584 585func (x *ListProductsResponse) GetNextPageToken() string { 586 if x != nil { 587 return x.NextPageToken 588 } 589 return "" 590} 591 592// Request message for the `GetProduct` method. 593type GetProductRequest struct { 594 state protoimpl.MessageState 595 sizeCache protoimpl.SizeCache 596 unknownFields protoimpl.UnknownFields 597 598 // Required. Resource name of the Product to get. 599 // 600 // Format is: 601 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 602 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 603} 604 605func (x *GetProductRequest) Reset() { 606 *x = GetProductRequest{} 607 if protoimpl.UnsafeEnabled { 608 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6] 609 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 610 ms.StoreMessageInfo(mi) 611 } 612} 613 614func (x *GetProductRequest) String() string { 615 return protoimpl.X.MessageStringOf(x) 616} 617 618func (*GetProductRequest) ProtoMessage() {} 619 620func (x *GetProductRequest) ProtoReflect() protoreflect.Message { 621 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6] 622 if protoimpl.UnsafeEnabled && x != nil { 623 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 624 if ms.LoadMessageInfo() == nil { 625 ms.StoreMessageInfo(mi) 626 } 627 return ms 628 } 629 return mi.MessageOf(x) 630} 631 632// Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead. 633func (*GetProductRequest) Descriptor() ([]byte, []int) { 634 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{6} 635} 636 637func (x *GetProductRequest) GetName() string { 638 if x != nil { 639 return x.Name 640 } 641 return "" 642} 643 644// Request message for the `UpdateProduct` method. 645type UpdateProductRequest struct { 646 state protoimpl.MessageState 647 sizeCache protoimpl.SizeCache 648 unknownFields protoimpl.UnknownFields 649 650 // Required. The Product resource which replaces the one on the server. 651 // product.name is immutable. 652 Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` 653 // The [FieldMask][google.protobuf.FieldMask] that specifies which fields 654 // to update. 655 // If update_mask isn't specified, all mutable fields are to be updated. 656 // Valid mask paths include `product_labels`, `display_name`, and 657 // `description`. 658 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 659} 660 661func (x *UpdateProductRequest) Reset() { 662 *x = UpdateProductRequest{} 663 if protoimpl.UnsafeEnabled { 664 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7] 665 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 666 ms.StoreMessageInfo(mi) 667 } 668} 669 670func (x *UpdateProductRequest) String() string { 671 return protoimpl.X.MessageStringOf(x) 672} 673 674func (*UpdateProductRequest) ProtoMessage() {} 675 676func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { 677 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7] 678 if protoimpl.UnsafeEnabled && x != nil { 679 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 680 if ms.LoadMessageInfo() == nil { 681 ms.StoreMessageInfo(mi) 682 } 683 return ms 684 } 685 return mi.MessageOf(x) 686} 687 688// Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead. 689func (*UpdateProductRequest) Descriptor() ([]byte, []int) { 690 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{7} 691} 692 693func (x *UpdateProductRequest) GetProduct() *Product { 694 if x != nil { 695 return x.Product 696 } 697 return nil 698} 699 700func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 701 if x != nil { 702 return x.UpdateMask 703 } 704 return nil 705} 706 707// Request message for the `DeleteProduct` method. 708type DeleteProductRequest struct { 709 state protoimpl.MessageState 710 sizeCache protoimpl.SizeCache 711 unknownFields protoimpl.UnknownFields 712 713 // Required. Resource name of product to delete. 714 // 715 // Format is: 716 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 717 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 718} 719 720func (x *DeleteProductRequest) Reset() { 721 *x = DeleteProductRequest{} 722 if protoimpl.UnsafeEnabled { 723 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8] 724 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 725 ms.StoreMessageInfo(mi) 726 } 727} 728 729func (x *DeleteProductRequest) String() string { 730 return protoimpl.X.MessageStringOf(x) 731} 732 733func (*DeleteProductRequest) ProtoMessage() {} 734 735func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { 736 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8] 737 if protoimpl.UnsafeEnabled && x != nil { 738 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 739 if ms.LoadMessageInfo() == nil { 740 ms.StoreMessageInfo(mi) 741 } 742 return ms 743 } 744 return mi.MessageOf(x) 745} 746 747// Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead. 748func (*DeleteProductRequest) Descriptor() ([]byte, []int) { 749 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{8} 750} 751 752func (x *DeleteProductRequest) GetName() string { 753 if x != nil { 754 return x.Name 755 } 756 return "" 757} 758 759// Request message for the `CreateProductSet` method. 760type CreateProductSetRequest struct { 761 state protoimpl.MessageState 762 sizeCache protoimpl.SizeCache 763 unknownFields protoimpl.UnknownFields 764 765 // Required. The project in which the ProductSet should be created. 766 // 767 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 768 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 769 // Required. The ProductSet to create. 770 ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` 771 // A user-supplied resource id for this ProductSet. If set, the server will 772 // attempt to use this value as the resource id. If it is already in use, an 773 // error is returned with code ALREADY_EXISTS. Must be at most 128 characters 774 // long. It cannot contain the character `/`. 775 ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"` 776} 777 778func (x *CreateProductSetRequest) Reset() { 779 *x = CreateProductSetRequest{} 780 if protoimpl.UnsafeEnabled { 781 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9] 782 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 783 ms.StoreMessageInfo(mi) 784 } 785} 786 787func (x *CreateProductSetRequest) String() string { 788 return protoimpl.X.MessageStringOf(x) 789} 790 791func (*CreateProductSetRequest) ProtoMessage() {} 792 793func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message { 794 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9] 795 if protoimpl.UnsafeEnabled && x != nil { 796 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 797 if ms.LoadMessageInfo() == nil { 798 ms.StoreMessageInfo(mi) 799 } 800 return ms 801 } 802 return mi.MessageOf(x) 803} 804 805// Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead. 806func (*CreateProductSetRequest) Descriptor() ([]byte, []int) { 807 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{9} 808} 809 810func (x *CreateProductSetRequest) GetParent() string { 811 if x != nil { 812 return x.Parent 813 } 814 return "" 815} 816 817func (x *CreateProductSetRequest) GetProductSet() *ProductSet { 818 if x != nil { 819 return x.ProductSet 820 } 821 return nil 822} 823 824func (x *CreateProductSetRequest) GetProductSetId() string { 825 if x != nil { 826 return x.ProductSetId 827 } 828 return "" 829} 830 831// Request message for the `ListProductSets` method. 832type ListProductSetsRequest struct { 833 state protoimpl.MessageState 834 sizeCache protoimpl.SizeCache 835 unknownFields protoimpl.UnknownFields 836 837 // Required. The project from which ProductSets should be listed. 838 // 839 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 840 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 841 // The maximum number of items to return. Default 10, maximum 100. 842 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 843 // The next_page_token returned from a previous List request, if any. 844 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 845} 846 847func (x *ListProductSetsRequest) Reset() { 848 *x = ListProductSetsRequest{} 849 if protoimpl.UnsafeEnabled { 850 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10] 851 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 852 ms.StoreMessageInfo(mi) 853 } 854} 855 856func (x *ListProductSetsRequest) String() string { 857 return protoimpl.X.MessageStringOf(x) 858} 859 860func (*ListProductSetsRequest) ProtoMessage() {} 861 862func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message { 863 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10] 864 if protoimpl.UnsafeEnabled && x != nil { 865 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 866 if ms.LoadMessageInfo() == nil { 867 ms.StoreMessageInfo(mi) 868 } 869 return ms 870 } 871 return mi.MessageOf(x) 872} 873 874// Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead. 875func (*ListProductSetsRequest) Descriptor() ([]byte, []int) { 876 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{10} 877} 878 879func (x *ListProductSetsRequest) GetParent() string { 880 if x != nil { 881 return x.Parent 882 } 883 return "" 884} 885 886func (x *ListProductSetsRequest) GetPageSize() int32 { 887 if x != nil { 888 return x.PageSize 889 } 890 return 0 891} 892 893func (x *ListProductSetsRequest) GetPageToken() string { 894 if x != nil { 895 return x.PageToken 896 } 897 return "" 898} 899 900// Response message for the `ListProductSets` method. 901type ListProductSetsResponse struct { 902 state protoimpl.MessageState 903 sizeCache protoimpl.SizeCache 904 unknownFields protoimpl.UnknownFields 905 906 // List of ProductSets. 907 ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"` 908 // Token to retrieve the next page of results, or empty if there are no more 909 // results in the list. 910 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 911} 912 913func (x *ListProductSetsResponse) Reset() { 914 *x = ListProductSetsResponse{} 915 if protoimpl.UnsafeEnabled { 916 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11] 917 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 918 ms.StoreMessageInfo(mi) 919 } 920} 921 922func (x *ListProductSetsResponse) String() string { 923 return protoimpl.X.MessageStringOf(x) 924} 925 926func (*ListProductSetsResponse) ProtoMessage() {} 927 928func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message { 929 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11] 930 if protoimpl.UnsafeEnabled && x != nil { 931 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 932 if ms.LoadMessageInfo() == nil { 933 ms.StoreMessageInfo(mi) 934 } 935 return ms 936 } 937 return mi.MessageOf(x) 938} 939 940// Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead. 941func (*ListProductSetsResponse) Descriptor() ([]byte, []int) { 942 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{11} 943} 944 945func (x *ListProductSetsResponse) GetProductSets() []*ProductSet { 946 if x != nil { 947 return x.ProductSets 948 } 949 return nil 950} 951 952func (x *ListProductSetsResponse) GetNextPageToken() string { 953 if x != nil { 954 return x.NextPageToken 955 } 956 return "" 957} 958 959// Request message for the `GetProductSet` method. 960type GetProductSetRequest struct { 961 state protoimpl.MessageState 962 sizeCache protoimpl.SizeCache 963 unknownFields protoimpl.UnknownFields 964 965 // Required. Resource name of the ProductSet to get. 966 // 967 // Format is: 968 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 969 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 970} 971 972func (x *GetProductSetRequest) Reset() { 973 *x = GetProductSetRequest{} 974 if protoimpl.UnsafeEnabled { 975 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12] 976 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 977 ms.StoreMessageInfo(mi) 978 } 979} 980 981func (x *GetProductSetRequest) String() string { 982 return protoimpl.X.MessageStringOf(x) 983} 984 985func (*GetProductSetRequest) ProtoMessage() {} 986 987func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message { 988 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12] 989 if protoimpl.UnsafeEnabled && x != nil { 990 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 991 if ms.LoadMessageInfo() == nil { 992 ms.StoreMessageInfo(mi) 993 } 994 return ms 995 } 996 return mi.MessageOf(x) 997} 998 999// Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead. 1000func (*GetProductSetRequest) Descriptor() ([]byte, []int) { 1001 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{12} 1002} 1003 1004func (x *GetProductSetRequest) GetName() string { 1005 if x != nil { 1006 return x.Name 1007 } 1008 return "" 1009} 1010 1011// Request message for the `UpdateProductSet` method. 1012type UpdateProductSetRequest struct { 1013 state protoimpl.MessageState 1014 sizeCache protoimpl.SizeCache 1015 unknownFields protoimpl.UnknownFields 1016 1017 // Required. The ProductSet resource which replaces the one on the server. 1018 ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` 1019 // The [FieldMask][google.protobuf.FieldMask] that specifies which fields to 1020 // update. 1021 // If update_mask isn't specified, all mutable fields are to be updated. 1022 // Valid mask path is `display_name`. 1023 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 1024} 1025 1026func (x *UpdateProductSetRequest) Reset() { 1027 *x = UpdateProductSetRequest{} 1028 if protoimpl.UnsafeEnabled { 1029 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13] 1030 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1031 ms.StoreMessageInfo(mi) 1032 } 1033} 1034 1035func (x *UpdateProductSetRequest) String() string { 1036 return protoimpl.X.MessageStringOf(x) 1037} 1038 1039func (*UpdateProductSetRequest) ProtoMessage() {} 1040 1041func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message { 1042 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13] 1043 if protoimpl.UnsafeEnabled && x != nil { 1044 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1045 if ms.LoadMessageInfo() == nil { 1046 ms.StoreMessageInfo(mi) 1047 } 1048 return ms 1049 } 1050 return mi.MessageOf(x) 1051} 1052 1053// Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead. 1054func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) { 1055 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{13} 1056} 1057 1058func (x *UpdateProductSetRequest) GetProductSet() *ProductSet { 1059 if x != nil { 1060 return x.ProductSet 1061 } 1062 return nil 1063} 1064 1065func (x *UpdateProductSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 1066 if x != nil { 1067 return x.UpdateMask 1068 } 1069 return nil 1070} 1071 1072// Request message for the `DeleteProductSet` method. 1073type DeleteProductSetRequest struct { 1074 state protoimpl.MessageState 1075 sizeCache protoimpl.SizeCache 1076 unknownFields protoimpl.UnknownFields 1077 1078 // Required. Resource name of the ProductSet to delete. 1079 // 1080 // Format is: 1081 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1082 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1083} 1084 1085func (x *DeleteProductSetRequest) Reset() { 1086 *x = DeleteProductSetRequest{} 1087 if protoimpl.UnsafeEnabled { 1088 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14] 1089 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1090 ms.StoreMessageInfo(mi) 1091 } 1092} 1093 1094func (x *DeleteProductSetRequest) String() string { 1095 return protoimpl.X.MessageStringOf(x) 1096} 1097 1098func (*DeleteProductSetRequest) ProtoMessage() {} 1099 1100func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message { 1101 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14] 1102 if protoimpl.UnsafeEnabled && x != nil { 1103 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1104 if ms.LoadMessageInfo() == nil { 1105 ms.StoreMessageInfo(mi) 1106 } 1107 return ms 1108 } 1109 return mi.MessageOf(x) 1110} 1111 1112// Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead. 1113func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) { 1114 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{14} 1115} 1116 1117func (x *DeleteProductSetRequest) GetName() string { 1118 if x != nil { 1119 return x.Name 1120 } 1121 return "" 1122} 1123 1124// Request message for the `CreateReferenceImage` method. 1125type CreateReferenceImageRequest struct { 1126 state protoimpl.MessageState 1127 sizeCache protoimpl.SizeCache 1128 unknownFields protoimpl.UnknownFields 1129 1130 // Required. Resource name of the product in which to create the reference image. 1131 // 1132 // Format is 1133 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 1134 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1135 // Required. The reference image to create. 1136 // If an image ID is specified, it is ignored. 1137 ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"` 1138 // A user-supplied resource id for the ReferenceImage to be added. If set, 1139 // the server will attempt to use this value as the resource id. If it is 1140 // already in use, an error is returned with code ALREADY_EXISTS. Must be at 1141 // most 128 characters long. It cannot contain the character `/`. 1142 ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"` 1143} 1144 1145func (x *CreateReferenceImageRequest) Reset() { 1146 *x = CreateReferenceImageRequest{} 1147 if protoimpl.UnsafeEnabled { 1148 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15] 1149 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1150 ms.StoreMessageInfo(mi) 1151 } 1152} 1153 1154func (x *CreateReferenceImageRequest) String() string { 1155 return protoimpl.X.MessageStringOf(x) 1156} 1157 1158func (*CreateReferenceImageRequest) ProtoMessage() {} 1159 1160func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message { 1161 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15] 1162 if protoimpl.UnsafeEnabled && x != nil { 1163 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1164 if ms.LoadMessageInfo() == nil { 1165 ms.StoreMessageInfo(mi) 1166 } 1167 return ms 1168 } 1169 return mi.MessageOf(x) 1170} 1171 1172// Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead. 1173func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) { 1174 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{15} 1175} 1176 1177func (x *CreateReferenceImageRequest) GetParent() string { 1178 if x != nil { 1179 return x.Parent 1180 } 1181 return "" 1182} 1183 1184func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage { 1185 if x != nil { 1186 return x.ReferenceImage 1187 } 1188 return nil 1189} 1190 1191func (x *CreateReferenceImageRequest) GetReferenceImageId() string { 1192 if x != nil { 1193 return x.ReferenceImageId 1194 } 1195 return "" 1196} 1197 1198// Request message for the `ListReferenceImages` method. 1199type ListReferenceImagesRequest struct { 1200 state protoimpl.MessageState 1201 sizeCache protoimpl.SizeCache 1202 unknownFields protoimpl.UnknownFields 1203 1204 // Required. Resource name of the product containing the reference images. 1205 // 1206 // Format is 1207 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. 1208 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1209 // The maximum number of items to return. Default 10, maximum 100. 1210 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1211 // A token identifying a page of results to be returned. This is the value 1212 // of `nextPageToken` returned in a previous reference image list request. 1213 // 1214 // Defaults to the first page if not specified. 1215 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 1216} 1217 1218func (x *ListReferenceImagesRequest) Reset() { 1219 *x = ListReferenceImagesRequest{} 1220 if protoimpl.UnsafeEnabled { 1221 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16] 1222 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1223 ms.StoreMessageInfo(mi) 1224 } 1225} 1226 1227func (x *ListReferenceImagesRequest) String() string { 1228 return protoimpl.X.MessageStringOf(x) 1229} 1230 1231func (*ListReferenceImagesRequest) ProtoMessage() {} 1232 1233func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message { 1234 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16] 1235 if protoimpl.UnsafeEnabled && x != nil { 1236 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1237 if ms.LoadMessageInfo() == nil { 1238 ms.StoreMessageInfo(mi) 1239 } 1240 return ms 1241 } 1242 return mi.MessageOf(x) 1243} 1244 1245// Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead. 1246func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) { 1247 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{16} 1248} 1249 1250func (x *ListReferenceImagesRequest) GetParent() string { 1251 if x != nil { 1252 return x.Parent 1253 } 1254 return "" 1255} 1256 1257func (x *ListReferenceImagesRequest) GetPageSize() int32 { 1258 if x != nil { 1259 return x.PageSize 1260 } 1261 return 0 1262} 1263 1264func (x *ListReferenceImagesRequest) GetPageToken() string { 1265 if x != nil { 1266 return x.PageToken 1267 } 1268 return "" 1269} 1270 1271// Response message for the `ListReferenceImages` method. 1272type ListReferenceImagesResponse struct { 1273 state protoimpl.MessageState 1274 sizeCache protoimpl.SizeCache 1275 unknownFields protoimpl.UnknownFields 1276 1277 // The list of reference images. 1278 ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` 1279 // The maximum number of items to return. Default 10, maximum 100. 1280 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1281 // The next_page_token returned from a previous List request, if any. 1282 NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 1283} 1284 1285func (x *ListReferenceImagesResponse) Reset() { 1286 *x = ListReferenceImagesResponse{} 1287 if protoimpl.UnsafeEnabled { 1288 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17] 1289 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1290 ms.StoreMessageInfo(mi) 1291 } 1292} 1293 1294func (x *ListReferenceImagesResponse) String() string { 1295 return protoimpl.X.MessageStringOf(x) 1296} 1297 1298func (*ListReferenceImagesResponse) ProtoMessage() {} 1299 1300func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message { 1301 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17] 1302 if protoimpl.UnsafeEnabled && x != nil { 1303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1304 if ms.LoadMessageInfo() == nil { 1305 ms.StoreMessageInfo(mi) 1306 } 1307 return ms 1308 } 1309 return mi.MessageOf(x) 1310} 1311 1312// Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead. 1313func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) { 1314 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{17} 1315} 1316 1317func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage { 1318 if x != nil { 1319 return x.ReferenceImages 1320 } 1321 return nil 1322} 1323 1324func (x *ListReferenceImagesResponse) GetPageSize() int32 { 1325 if x != nil { 1326 return x.PageSize 1327 } 1328 return 0 1329} 1330 1331func (x *ListReferenceImagesResponse) GetNextPageToken() string { 1332 if x != nil { 1333 return x.NextPageToken 1334 } 1335 return "" 1336} 1337 1338// Request message for the `GetReferenceImage` method. 1339type GetReferenceImageRequest struct { 1340 state protoimpl.MessageState 1341 sizeCache protoimpl.SizeCache 1342 unknownFields protoimpl.UnknownFields 1343 1344 // Required. The resource name of the ReferenceImage to get. 1345 // 1346 // Format is: 1347 // 1348 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. 1349 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1350} 1351 1352func (x *GetReferenceImageRequest) Reset() { 1353 *x = GetReferenceImageRequest{} 1354 if protoimpl.UnsafeEnabled { 1355 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18] 1356 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1357 ms.StoreMessageInfo(mi) 1358 } 1359} 1360 1361func (x *GetReferenceImageRequest) String() string { 1362 return protoimpl.X.MessageStringOf(x) 1363} 1364 1365func (*GetReferenceImageRequest) ProtoMessage() {} 1366 1367func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message { 1368 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18] 1369 if protoimpl.UnsafeEnabled && x != nil { 1370 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1371 if ms.LoadMessageInfo() == nil { 1372 ms.StoreMessageInfo(mi) 1373 } 1374 return ms 1375 } 1376 return mi.MessageOf(x) 1377} 1378 1379// Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead. 1380func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) { 1381 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{18} 1382} 1383 1384func (x *GetReferenceImageRequest) GetName() string { 1385 if x != nil { 1386 return x.Name 1387 } 1388 return "" 1389} 1390 1391// Request message for the `DeleteReferenceImage` method. 1392type DeleteReferenceImageRequest struct { 1393 state protoimpl.MessageState 1394 sizeCache protoimpl.SizeCache 1395 unknownFields protoimpl.UnknownFields 1396 1397 // Required. The resource name of the reference image to delete. 1398 // 1399 // Format is: 1400 // 1401 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID` 1402 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1403} 1404 1405func (x *DeleteReferenceImageRequest) Reset() { 1406 *x = DeleteReferenceImageRequest{} 1407 if protoimpl.UnsafeEnabled { 1408 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19] 1409 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1410 ms.StoreMessageInfo(mi) 1411 } 1412} 1413 1414func (x *DeleteReferenceImageRequest) String() string { 1415 return protoimpl.X.MessageStringOf(x) 1416} 1417 1418func (*DeleteReferenceImageRequest) ProtoMessage() {} 1419 1420func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message { 1421 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19] 1422 if protoimpl.UnsafeEnabled && x != nil { 1423 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1424 if ms.LoadMessageInfo() == nil { 1425 ms.StoreMessageInfo(mi) 1426 } 1427 return ms 1428 } 1429 return mi.MessageOf(x) 1430} 1431 1432// Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead. 1433func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) { 1434 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{19} 1435} 1436 1437func (x *DeleteReferenceImageRequest) GetName() string { 1438 if x != nil { 1439 return x.Name 1440 } 1441 return "" 1442} 1443 1444// Request message for the `AddProductToProductSet` method. 1445type AddProductToProductSetRequest struct { 1446 state protoimpl.MessageState 1447 sizeCache protoimpl.SizeCache 1448 unknownFields protoimpl.UnknownFields 1449 1450 // Required. The resource name for the ProductSet to modify. 1451 // 1452 // Format is: 1453 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1454 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1455 // Required. The resource name for the Product to be added to this ProductSet. 1456 // 1457 // Format is: 1458 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 1459 Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 1460} 1461 1462func (x *AddProductToProductSetRequest) Reset() { 1463 *x = AddProductToProductSetRequest{} 1464 if protoimpl.UnsafeEnabled { 1465 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20] 1466 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1467 ms.StoreMessageInfo(mi) 1468 } 1469} 1470 1471func (x *AddProductToProductSetRequest) String() string { 1472 return protoimpl.X.MessageStringOf(x) 1473} 1474 1475func (*AddProductToProductSetRequest) ProtoMessage() {} 1476 1477func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message { 1478 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20] 1479 if protoimpl.UnsafeEnabled && x != nil { 1480 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1481 if ms.LoadMessageInfo() == nil { 1482 ms.StoreMessageInfo(mi) 1483 } 1484 return ms 1485 } 1486 return mi.MessageOf(x) 1487} 1488 1489// Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead. 1490func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) { 1491 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{20} 1492} 1493 1494func (x *AddProductToProductSetRequest) GetName() string { 1495 if x != nil { 1496 return x.Name 1497 } 1498 return "" 1499} 1500 1501func (x *AddProductToProductSetRequest) GetProduct() string { 1502 if x != nil { 1503 return x.Product 1504 } 1505 return "" 1506} 1507 1508// Request message for the `RemoveProductFromProductSet` method. 1509type RemoveProductFromProductSetRequest struct { 1510 state protoimpl.MessageState 1511 sizeCache protoimpl.SizeCache 1512 unknownFields protoimpl.UnknownFields 1513 1514 // Required. The resource name for the ProductSet to modify. 1515 // 1516 // Format is: 1517 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1518 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1519 // Required. The resource name for the Product to be removed from this ProductSet. 1520 // 1521 // Format is: 1522 // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` 1523 Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` 1524} 1525 1526func (x *RemoveProductFromProductSetRequest) Reset() { 1527 *x = RemoveProductFromProductSetRequest{} 1528 if protoimpl.UnsafeEnabled { 1529 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21] 1530 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1531 ms.StoreMessageInfo(mi) 1532 } 1533} 1534 1535func (x *RemoveProductFromProductSetRequest) String() string { 1536 return protoimpl.X.MessageStringOf(x) 1537} 1538 1539func (*RemoveProductFromProductSetRequest) ProtoMessage() {} 1540 1541func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message { 1542 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21] 1543 if protoimpl.UnsafeEnabled && x != nil { 1544 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1545 if ms.LoadMessageInfo() == nil { 1546 ms.StoreMessageInfo(mi) 1547 } 1548 return ms 1549 } 1550 return mi.MessageOf(x) 1551} 1552 1553// Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead. 1554func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) { 1555 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{21} 1556} 1557 1558func (x *RemoveProductFromProductSetRequest) GetName() string { 1559 if x != nil { 1560 return x.Name 1561 } 1562 return "" 1563} 1564 1565func (x *RemoveProductFromProductSetRequest) GetProduct() string { 1566 if x != nil { 1567 return x.Product 1568 } 1569 return "" 1570} 1571 1572// Request message for the `ListProductsInProductSet` method. 1573type ListProductsInProductSetRequest struct { 1574 state protoimpl.MessageState 1575 sizeCache protoimpl.SizeCache 1576 unknownFields protoimpl.UnknownFields 1577 1578 // Required. The ProductSet resource for which to retrieve Products. 1579 // 1580 // Format is: 1581 // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` 1582 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1583 // The maximum number of items to return. Default 10, maximum 100. 1584 PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1585 // The next_page_token returned from a previous List request, if any. 1586 PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 1587} 1588 1589func (x *ListProductsInProductSetRequest) Reset() { 1590 *x = ListProductsInProductSetRequest{} 1591 if protoimpl.UnsafeEnabled { 1592 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22] 1593 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1594 ms.StoreMessageInfo(mi) 1595 } 1596} 1597 1598func (x *ListProductsInProductSetRequest) String() string { 1599 return protoimpl.X.MessageStringOf(x) 1600} 1601 1602func (*ListProductsInProductSetRequest) ProtoMessage() {} 1603 1604func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message { 1605 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22] 1606 if protoimpl.UnsafeEnabled && x != nil { 1607 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1608 if ms.LoadMessageInfo() == nil { 1609 ms.StoreMessageInfo(mi) 1610 } 1611 return ms 1612 } 1613 return mi.MessageOf(x) 1614} 1615 1616// Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead. 1617func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) { 1618 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{22} 1619} 1620 1621func (x *ListProductsInProductSetRequest) GetName() string { 1622 if x != nil { 1623 return x.Name 1624 } 1625 return "" 1626} 1627 1628func (x *ListProductsInProductSetRequest) GetPageSize() int32 { 1629 if x != nil { 1630 return x.PageSize 1631 } 1632 return 0 1633} 1634 1635func (x *ListProductsInProductSetRequest) GetPageToken() string { 1636 if x != nil { 1637 return x.PageToken 1638 } 1639 return "" 1640} 1641 1642// Response message for the `ListProductsInProductSet` method. 1643type ListProductsInProductSetResponse struct { 1644 state protoimpl.MessageState 1645 sizeCache protoimpl.SizeCache 1646 unknownFields protoimpl.UnknownFields 1647 1648 // The list of Products. 1649 Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` 1650 // Token to retrieve the next page of results, or empty if there are no more 1651 // results in the list. 1652 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 1653} 1654 1655func (x *ListProductsInProductSetResponse) Reset() { 1656 *x = ListProductsInProductSetResponse{} 1657 if protoimpl.UnsafeEnabled { 1658 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23] 1659 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1660 ms.StoreMessageInfo(mi) 1661 } 1662} 1663 1664func (x *ListProductsInProductSetResponse) String() string { 1665 return protoimpl.X.MessageStringOf(x) 1666} 1667 1668func (*ListProductsInProductSetResponse) ProtoMessage() {} 1669 1670func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message { 1671 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23] 1672 if protoimpl.UnsafeEnabled && x != nil { 1673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1674 if ms.LoadMessageInfo() == nil { 1675 ms.StoreMessageInfo(mi) 1676 } 1677 return ms 1678 } 1679 return mi.MessageOf(x) 1680} 1681 1682// Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead. 1683func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) { 1684 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{23} 1685} 1686 1687func (x *ListProductsInProductSetResponse) GetProducts() []*Product { 1688 if x != nil { 1689 return x.Products 1690 } 1691 return nil 1692} 1693 1694func (x *ListProductsInProductSetResponse) GetNextPageToken() string { 1695 if x != nil { 1696 return x.NextPageToken 1697 } 1698 return "" 1699} 1700 1701// The Google Cloud Storage location for a csv file which preserves a list of 1702// ImportProductSetRequests in each line. 1703type ImportProductSetsGcsSource struct { 1704 state protoimpl.MessageState 1705 sizeCache protoimpl.SizeCache 1706 unknownFields protoimpl.UnknownFields 1707 1708 // The Google Cloud Storage URI of the input csv file. 1709 // 1710 // The URI must start with `gs://`. 1711 // 1712 // The format of the input csv file should be one image per line. 1713 // In each line, there are 6 columns. 1714 // 1. image_uri 1715 // 2, image_id 1716 // 3. product_set_id 1717 // 4. product_id 1718 // 5, product_category 1719 // 6, product_display_name 1720 // 7, labels 1721 // 8. bounding_poly 1722 // 1723 // Columns 1, 3, 4, and 5 are required, other columns are optional. A new 1724 // ProductSet/Product with the same id will be created on the fly 1725 // if the ProductSet/Product specified by product_set_id/product_id does not 1726 // exist. 1727 // 1728 // The image_id field is optional but has to be unique if provided. If it is 1729 // empty, we will automatically assign an unique id to the image. 1730 // 1731 // The product_display_name field is optional. If it is empty, a space (" ") 1732 // is used as the place holder for the product display_name, which can 1733 // be updated later through the realtime API. 1734 // 1735 // If the Product with product_id already exists, the fields 1736 // product_display_name, product_category and labels are ignored. 1737 // 1738 // If a Product doesn't exist and needs to be created on the fly, the 1739 // product_display_name field refers to 1740 // [Product.display_name][google.cloud.vision.v1p3beta1.Product.display_name], 1741 // the product_category field refers to 1742 // [Product.product_category][google.cloud.vision.v1p3beta1.Product.product_category], 1743 // and the labels field refers to [Product.labels][]. 1744 // 1745 // Labels (optional) should be a line containing a list of comma-separated 1746 // key-value pairs, with the format 1747 // "key_1=value_1,key_2=value_2,...,key_n=value_n". 1748 // 1749 // The bounding_poly (optional) field is used to identify one region of 1750 // interest from the image in the same manner as CreateReferenceImage. If no 1751 // bounding_poly is specified, the system will try to detect regions of 1752 // interest automatically. 1753 // 1754 // Note that the pipeline will resize the image if the image resolution is too 1755 // large to process (above 20MP). 1756 // 1757 // Also note that at most one bounding_poly is allowed per line. If the image 1758 // contains multiple regions of interest, the csv should contain one line per 1759 // region of interest. 1760 // 1761 // The bounding_poly column should contain an even number of comma-separated 1762 // numbers, with the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Nonnegative 1763 // integers should be used for absolute bounding polygons, and float values 1764 // in [0, 1] should be used for normalized bounding polygons. 1765 CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"` 1766} 1767 1768func (x *ImportProductSetsGcsSource) Reset() { 1769 *x = ImportProductSetsGcsSource{} 1770 if protoimpl.UnsafeEnabled { 1771 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24] 1772 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1773 ms.StoreMessageInfo(mi) 1774 } 1775} 1776 1777func (x *ImportProductSetsGcsSource) String() string { 1778 return protoimpl.X.MessageStringOf(x) 1779} 1780 1781func (*ImportProductSetsGcsSource) ProtoMessage() {} 1782 1783func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message { 1784 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24] 1785 if protoimpl.UnsafeEnabled && x != nil { 1786 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1787 if ms.LoadMessageInfo() == nil { 1788 ms.StoreMessageInfo(mi) 1789 } 1790 return ms 1791 } 1792 return mi.MessageOf(x) 1793} 1794 1795// Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead. 1796func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) { 1797 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{24} 1798} 1799 1800func (x *ImportProductSetsGcsSource) GetCsvFileUri() string { 1801 if x != nil { 1802 return x.CsvFileUri 1803 } 1804 return "" 1805} 1806 1807// The input content for the `ImportProductSets` method. 1808type ImportProductSetsInputConfig struct { 1809 state protoimpl.MessageState 1810 sizeCache protoimpl.SizeCache 1811 unknownFields protoimpl.UnknownFields 1812 1813 // The source of the input. 1814 // 1815 // Types that are assignable to Source: 1816 // *ImportProductSetsInputConfig_GcsSource 1817 Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"` 1818} 1819 1820func (x *ImportProductSetsInputConfig) Reset() { 1821 *x = ImportProductSetsInputConfig{} 1822 if protoimpl.UnsafeEnabled { 1823 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25] 1824 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1825 ms.StoreMessageInfo(mi) 1826 } 1827} 1828 1829func (x *ImportProductSetsInputConfig) String() string { 1830 return protoimpl.X.MessageStringOf(x) 1831} 1832 1833func (*ImportProductSetsInputConfig) ProtoMessage() {} 1834 1835func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message { 1836 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25] 1837 if protoimpl.UnsafeEnabled && x != nil { 1838 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1839 if ms.LoadMessageInfo() == nil { 1840 ms.StoreMessageInfo(mi) 1841 } 1842 return ms 1843 } 1844 return mi.MessageOf(x) 1845} 1846 1847// Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead. 1848func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) { 1849 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{25} 1850} 1851 1852func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source { 1853 if m != nil { 1854 return m.Source 1855 } 1856 return nil 1857} 1858 1859func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource { 1860 if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok { 1861 return x.GcsSource 1862 } 1863 return nil 1864} 1865 1866type isImportProductSetsInputConfig_Source interface { 1867 isImportProductSetsInputConfig_Source() 1868} 1869 1870type ImportProductSetsInputConfig_GcsSource struct { 1871 // The Google Cloud Storage location for a csv file which preserves a list 1872 // of ImportProductSetRequests in each line. 1873 GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"` 1874} 1875 1876func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {} 1877 1878// Request message for the `ImportProductSets` method. 1879type ImportProductSetsRequest struct { 1880 state protoimpl.MessageState 1881 sizeCache protoimpl.SizeCache 1882 unknownFields protoimpl.UnknownFields 1883 1884 // Required. The project in which the ProductSets should be imported. 1885 // 1886 // Format is `projects/PROJECT_ID/locations/LOC_ID`. 1887 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1888 // Required. The input content for the list of requests. 1889 InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"` 1890} 1891 1892func (x *ImportProductSetsRequest) Reset() { 1893 *x = ImportProductSetsRequest{} 1894 if protoimpl.UnsafeEnabled { 1895 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26] 1896 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1897 ms.StoreMessageInfo(mi) 1898 } 1899} 1900 1901func (x *ImportProductSetsRequest) String() string { 1902 return protoimpl.X.MessageStringOf(x) 1903} 1904 1905func (*ImportProductSetsRequest) ProtoMessage() {} 1906 1907func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message { 1908 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26] 1909 if protoimpl.UnsafeEnabled && x != nil { 1910 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1911 if ms.LoadMessageInfo() == nil { 1912 ms.StoreMessageInfo(mi) 1913 } 1914 return ms 1915 } 1916 return mi.MessageOf(x) 1917} 1918 1919// Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead. 1920func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) { 1921 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{26} 1922} 1923 1924func (x *ImportProductSetsRequest) GetParent() string { 1925 if x != nil { 1926 return x.Parent 1927 } 1928 return "" 1929} 1930 1931func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig { 1932 if x != nil { 1933 return x.InputConfig 1934 } 1935 return nil 1936} 1937 1938// Response message for the `ImportProductSets` method. 1939// 1940// This message is returned by the 1941// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] 1942// method in the returned 1943// [google.longrunning.Operation.response][google.longrunning.Operation.response] 1944// field. 1945type ImportProductSetsResponse struct { 1946 state protoimpl.MessageState 1947 sizeCache protoimpl.SizeCache 1948 unknownFields protoimpl.UnknownFields 1949 1950 // The list of reference_images that are imported successfully. 1951 ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` 1952 // The rpc status for each ImportProductSet request, including both successes 1953 // and errors. 1954 // 1955 // The number of statuses here matches the number of lines in the csv file, 1956 // and statuses[i] stores the success or failure status of processing the i-th 1957 // line of the csv, starting from line 0. 1958 Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"` 1959} 1960 1961func (x *ImportProductSetsResponse) Reset() { 1962 *x = ImportProductSetsResponse{} 1963 if protoimpl.UnsafeEnabled { 1964 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27] 1965 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1966 ms.StoreMessageInfo(mi) 1967 } 1968} 1969 1970func (x *ImportProductSetsResponse) String() string { 1971 return protoimpl.X.MessageStringOf(x) 1972} 1973 1974func (*ImportProductSetsResponse) ProtoMessage() {} 1975 1976func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message { 1977 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27] 1978 if protoimpl.UnsafeEnabled && x != nil { 1979 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1980 if ms.LoadMessageInfo() == nil { 1981 ms.StoreMessageInfo(mi) 1982 } 1983 return ms 1984 } 1985 return mi.MessageOf(x) 1986} 1987 1988// Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead. 1989func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) { 1990 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{27} 1991} 1992 1993func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage { 1994 if x != nil { 1995 return x.ReferenceImages 1996 } 1997 return nil 1998} 1999 2000func (x *ImportProductSetsResponse) GetStatuses() []*status.Status { 2001 if x != nil { 2002 return x.Statuses 2003 } 2004 return nil 2005} 2006 2007// Metadata for the batch operations such as the current state. 2008// 2009// This is included in the `metadata` field of the `Operation` returned by the 2010// `GetOperation` call of the `google::longrunning::Operations` service. 2011type BatchOperationMetadata struct { 2012 state protoimpl.MessageState 2013 sizeCache protoimpl.SizeCache 2014 unknownFields protoimpl.UnknownFields 2015 2016 // The current state of the batch operation. 2017 State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1p3beta1.BatchOperationMetadata_State" json:"state,omitempty"` 2018 // The time when the batch request was submitted to the server. 2019 SubmitTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"` 2020 // The time when the batch request is finished and 2021 // [google.longrunning.Operation.done][google.longrunning.Operation.done] is 2022 // set to true. 2023 EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 2024} 2025 2026func (x *BatchOperationMetadata) Reset() { 2027 *x = BatchOperationMetadata{} 2028 if protoimpl.UnsafeEnabled { 2029 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28] 2030 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2031 ms.StoreMessageInfo(mi) 2032 } 2033} 2034 2035func (x *BatchOperationMetadata) String() string { 2036 return protoimpl.X.MessageStringOf(x) 2037} 2038 2039func (*BatchOperationMetadata) ProtoMessage() {} 2040 2041func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message { 2042 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28] 2043 if protoimpl.UnsafeEnabled && x != nil { 2044 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2045 if ms.LoadMessageInfo() == nil { 2046 ms.StoreMessageInfo(mi) 2047 } 2048 return ms 2049 } 2050 return mi.MessageOf(x) 2051} 2052 2053// Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead. 2054func (*BatchOperationMetadata) Descriptor() ([]byte, []int) { 2055 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28} 2056} 2057 2058func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State { 2059 if x != nil { 2060 return x.State 2061 } 2062 return BatchOperationMetadata_STATE_UNSPECIFIED 2063} 2064 2065func (x *BatchOperationMetadata) GetSubmitTime() *timestamppb.Timestamp { 2066 if x != nil { 2067 return x.SubmitTime 2068 } 2069 return nil 2070} 2071 2072func (x *BatchOperationMetadata) GetEndTime() *timestamppb.Timestamp { 2073 if x != nil { 2074 return x.EndTime 2075 } 2076 return nil 2077} 2078 2079// A product label represented as a key-value pair. 2080type Product_KeyValue struct { 2081 state protoimpl.MessageState 2082 sizeCache protoimpl.SizeCache 2083 unknownFields protoimpl.UnknownFields 2084 2085 // The key of the label attached to the product. Cannot be empty and cannot 2086 // exceed 128 bytes. 2087 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 2088 // The value of the label attached to the product. Cannot be empty and 2089 // cannot exceed 128 bytes. 2090 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 2091} 2092 2093func (x *Product_KeyValue) Reset() { 2094 *x = Product_KeyValue{} 2095 if protoimpl.UnsafeEnabled { 2096 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29] 2097 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2098 ms.StoreMessageInfo(mi) 2099 } 2100} 2101 2102func (x *Product_KeyValue) String() string { 2103 return protoimpl.X.MessageStringOf(x) 2104} 2105 2106func (*Product_KeyValue) ProtoMessage() {} 2107 2108func (x *Product_KeyValue) ProtoReflect() protoreflect.Message { 2109 mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29] 2110 if protoimpl.UnsafeEnabled && x != nil { 2111 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2112 if ms.LoadMessageInfo() == nil { 2113 ms.StoreMessageInfo(mi) 2114 } 2115 return ms 2116 } 2117 return mi.MessageOf(x) 2118} 2119 2120// Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead. 2121func (*Product_KeyValue) Descriptor() ([]byte, []int) { 2122 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0, 0} 2123} 2124 2125func (x *Product_KeyValue) GetKey() string { 2126 if x != nil { 2127 return x.Key 2128 } 2129 return "" 2130} 2131 2132func (x *Product_KeyValue) GetValue() string { 2133 if x != nil { 2134 return x.Value 2135 } 2136 return "" 2137} 2138 2139var File_google_cloud_vision_v1p3beta1_product_search_service_proto protoreflect.FileDescriptor 2140 2141var file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = []byte{ 2142 0x0a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 2143 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 2144 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 2145 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f, 2146 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2147 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 2148 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 2149 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2150 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 2151 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 2152 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 2153 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 2154 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 2155 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 2156 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 2157 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 2158 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 2159 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 2160 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 2161 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 2162 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 2163 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2164 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2165 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 2166 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 2167 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x02, 0x0a, 0x07, 0x50, 2168 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 2169 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 2170 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 2171 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 2172 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 2173 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 2174 0x2e, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 2175 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 2176 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 2177 0x56, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 2178 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2179 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2180 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 2181 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2182 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 2183 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2184 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 2185 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x5e, 0xea, 0x41, 0x5b, 2186 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2187 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 2188 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 2189 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 2190 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2191 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22, 0xa7, 0x02, 0x0a, 0x0a, 2192 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 2193 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 2194 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 2195 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 2196 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 2197 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 2198 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 2199 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x69, 0x6d, 2200 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 2201 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2202 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 2203 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x68, 0xea, 0x41, 0x65, 2204 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2205 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2206 0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 2207 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2208 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 2209 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2210 0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 2211 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2212 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 2213 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 2214 0x75, 0x72, 0x69, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 2215 0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 2216 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2217 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 2218 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, 2219 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea, 2220 0x41, 0x84, 0x01, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2221 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 2222 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 2223 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 2224 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 2225 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 2226 0x64, 0x75, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 2227 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2228 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x7d, 0x22, 0xbf, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 2229 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2230 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2231 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 2232 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 2233 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 2234 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 2235 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 2236 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 2237 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 2238 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 2239 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 2240 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 2241 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2242 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2243 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2244 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 2245 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 2246 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 2247 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 2248 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 2249 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 2250 0x22, 0x82, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2251 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, 2252 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 2253 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2254 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 2255 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 2256 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 2257 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 2258 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 2259 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 2260 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 2261 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2262 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 2263 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 2264 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 2265 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 2266 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 2267 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2268 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 2269 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 2270 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 2271 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 2272 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 2273 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 2274 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 2275 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 2276 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2277 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 2278 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 2279 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2280 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 2281 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2282 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 2283 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 2284 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 2285 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2286 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2287 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2288 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 2289 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2290 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 2291 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16, 2292 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 2293 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2294 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 2295 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2296 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 2297 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 2298 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 2299 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 2300 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 2301 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2302 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 2303 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 2304 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2305 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2306 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2307 0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 2308 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 2309 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 2310 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 2311 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 2312 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 2313 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 2314 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 2315 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01, 2316 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2317 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 2318 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 2319 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2320 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 2321 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 2322 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 2323 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 2324 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2325 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 2326 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 2327 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 2328 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2329 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2330 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 2331 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2332 0x22, 0xe7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 2333 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2334 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2335 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 2336 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 2337 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 2338 0x5b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 2339 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2340 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2341 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 2342 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65, 2343 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 2344 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 2345 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 2346 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c, 2347 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 2348 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 2349 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 2350 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2351 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2352 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 2353 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 2354 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 2355 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 2356 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 2357 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 2358 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2359 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 2360 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2361 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 2362 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 2363 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 2364 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 2365 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 2366 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 2367 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 2368 0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 2369 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 2370 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 2371 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 2372 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 2373 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 2374 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 2375 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2376 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 2377 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 2378 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 2379 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 2380 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2381 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 2382 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2383 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 2384 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 2385 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 2386 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 2387 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 2388 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 2389 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 2390 0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 2391 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2392 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 2393 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 2394 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 2395 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2396 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 2397 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 2398 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2399 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2400 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 2401 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 2402 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 2403 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 2404 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2405 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 2406 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 2407 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 2408 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 2409 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 2410 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 2411 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2412 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 2413 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 2414 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2415 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 2416 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 2417 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 2418 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 2419 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 2420 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, 2421 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69, 2422 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73, 2423 0x76, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x84, 0x01, 0x0a, 0x1c, 0x49, 0x6d, 0x70, 2424 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 2425 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x63, 0x73, 2426 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 2427 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2428 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 2429 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 2430 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 2431 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 2432 0xc2, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2433 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 2434 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 2435 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 2436 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 2437 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 2438 0x63, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 2439 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2440 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 2441 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 2442 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 2443 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 2444 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 2445 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 2446 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 2447 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 2448 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 2449 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 2450 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 2451 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08, 2452 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 2453 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 2454 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xba, 0x02, 0x0a, 2455 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 2456 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 2457 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2458 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 2459 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 2460 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, 2461 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75, 2462 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 2463 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 2464 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62, 2465 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 2466 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2467 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 2468 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59, 2469 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 2470 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 2471 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 2472 0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a, 2473 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 2474 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xeb, 0x1e, 0x0a, 0x0d, 0x50, 0x72, 2475 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xe6, 0x01, 0x0a, 0x10, 2476 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2477 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2478 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2479 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2480 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2481 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2482 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2483 0x53, 0x65, 0x74, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x36, 0x2f, 0x76, 0x31, 2484 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 2485 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2486 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2487 0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 2488 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2489 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 2490 0x74, 0x5f, 0x69, 0x64, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 2491 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2492 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 2493 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 2494 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 2495 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 2496 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 2497 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 2498 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 2499 0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 2500 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 2501 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 2502 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 2503 0x12, 0xb6, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2504 0x65, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2505 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 2506 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2507 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2508 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2509 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2510 0x65, 0x74, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x70, 2511 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 2512 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2513 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 2514 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe8, 0x01, 0x0a, 0x10, 0x55, 0x70, 2515 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 2516 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2517 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 2518 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 2519 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2520 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 2521 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2522 0x74, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x32, 0x42, 0x2f, 0x76, 0x31, 0x70, 0x33, 2523 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 2524 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2525 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 2526 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x70, 2527 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x17, 0x70, 0x72, 0x6f, 2528 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 2529 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 2530 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2531 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2532 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 2533 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2534 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2535 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 2536 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 2537 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 2538 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2539 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 2540 0x12, 0xce, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 2541 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2542 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 2543 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2544 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 2545 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 2546 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 2547 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 2548 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 2549 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 2550 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, 2551 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 2552 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 2553 0x64, 0x12, 0xbd, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2554 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2555 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 2556 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 2557 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 2558 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 2559 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 2560 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 2561 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 2562 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2563 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 2564 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 2565 0x74, 0x12, 0xaa, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2566 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2567 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2568 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 2569 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 2570 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 2571 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 2572 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 2573 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 2574 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 2575 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd0, 2576 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 2577 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2578 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2579 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 2580 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2581 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 2582 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x62, 0x82, 2583 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 2584 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 2585 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 2586 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 2587 0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, 2588 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 2589 0x6b, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 2590 0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 2591 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 2592 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 2593 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2594 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 2595 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x2a, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 2596 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 2597 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 2598 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 2599 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 2600 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x2e, 2601 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2602 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 2603 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 2604 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2605 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2606 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 2607 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 2608 0x58, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 2609 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 2610 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 2611 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 2612 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 2613 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65, 2614 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 2615 0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 2616 0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc0, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 2617 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 2618 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2619 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 2620 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 2621 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 2622 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 2623 0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x76, 0x31, 0x70, 2624 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 2625 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2626 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 2627 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 2628 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 2629 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 2630 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2631 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2632 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 2633 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 2634 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 2635 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 2636 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 2637 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 2638 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 2639 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 2640 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2641 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2642 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 2643 0xd1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 2644 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 2645 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 2646 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 2647 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 2648 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2649 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 2650 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x54, 0x82, 2651 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 2652 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 2653 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 2654 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 2655 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 2656 0x61, 0x6d, 0x65, 0x12, 0xcb, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 2657 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3c, 2658 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 2659 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 2660 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 2661 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 2662 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 2663 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76, 2664 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 2665 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 2666 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 2667 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 2668 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 2669 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 2670 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2671 0x74, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2672 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 2673 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 2674 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 2675 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 2676 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5e, 0x82, 0xd3, 2677 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2678 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 2679 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 2680 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d, 2681 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, 2682 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xeb, 0x01, 0x0a, 2683 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 2684 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2685 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2686 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2687 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2688 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2689 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 2690 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 2691 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 2692 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 2693 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 2694 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 2695 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 2696 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 2697 0x63, 0x74, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x82, 0x02, 0x0a, 0x11, 0x49, 2698 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 2699 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 2700 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 2701 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 2702 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2703 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 2704 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 2705 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 2706 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 2707 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 2708 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 2709 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70, 2710 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33, 0x0a, 0x19, 0x49, 0x6d, 2711 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 2712 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 2713 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 2714 0x76, 0xca, 0x41, 0x15, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2715 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5b, 0x68, 0x74, 0x74, 0x70, 2716 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 2717 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 2718 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 2719 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2720 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 2721 0x2d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x88, 0x01, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, 2722 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 2723 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x19, 0x50, 2724 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 2725 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 2726 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 2727 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 2728 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 2729 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8, 2730 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2731} 2732 2733var ( 2734 file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce sync.Once 2735 file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc 2736) 2737 2738func file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP() []byte { 2739 file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce.Do(func() { 2740 file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData) 2741 }) 2742 return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData 2743} 2744 2745var file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) 2746var file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 30) 2747var file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = []interface{}{ 2748 (BatchOperationMetadata_State)(0), // 0: google.cloud.vision.v1p3beta1.BatchOperationMetadata.State 2749 (*Product)(nil), // 1: google.cloud.vision.v1p3beta1.Product 2750 (*ProductSet)(nil), // 2: google.cloud.vision.v1p3beta1.ProductSet 2751 (*ReferenceImage)(nil), // 3: google.cloud.vision.v1p3beta1.ReferenceImage 2752 (*CreateProductRequest)(nil), // 4: google.cloud.vision.v1p3beta1.CreateProductRequest 2753 (*ListProductsRequest)(nil), // 5: google.cloud.vision.v1p3beta1.ListProductsRequest 2754 (*ListProductsResponse)(nil), // 6: google.cloud.vision.v1p3beta1.ListProductsResponse 2755 (*GetProductRequest)(nil), // 7: google.cloud.vision.v1p3beta1.GetProductRequest 2756 (*UpdateProductRequest)(nil), // 8: google.cloud.vision.v1p3beta1.UpdateProductRequest 2757 (*DeleteProductRequest)(nil), // 9: google.cloud.vision.v1p3beta1.DeleteProductRequest 2758 (*CreateProductSetRequest)(nil), // 10: google.cloud.vision.v1p3beta1.CreateProductSetRequest 2759 (*ListProductSetsRequest)(nil), // 11: google.cloud.vision.v1p3beta1.ListProductSetsRequest 2760 (*ListProductSetsResponse)(nil), // 12: google.cloud.vision.v1p3beta1.ListProductSetsResponse 2761 (*GetProductSetRequest)(nil), // 13: google.cloud.vision.v1p3beta1.GetProductSetRequest 2762 (*UpdateProductSetRequest)(nil), // 14: google.cloud.vision.v1p3beta1.UpdateProductSetRequest 2763 (*DeleteProductSetRequest)(nil), // 15: google.cloud.vision.v1p3beta1.DeleteProductSetRequest 2764 (*CreateReferenceImageRequest)(nil), // 16: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest 2765 (*ListReferenceImagesRequest)(nil), // 17: google.cloud.vision.v1p3beta1.ListReferenceImagesRequest 2766 (*ListReferenceImagesResponse)(nil), // 18: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse 2767 (*GetReferenceImageRequest)(nil), // 19: google.cloud.vision.v1p3beta1.GetReferenceImageRequest 2768 (*DeleteReferenceImageRequest)(nil), // 20: google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest 2769 (*AddProductToProductSetRequest)(nil), // 21: google.cloud.vision.v1p3beta1.AddProductToProductSetRequest 2770 (*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest 2771 (*ListProductsInProductSetRequest)(nil), // 23: google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest 2772 (*ListProductsInProductSetResponse)(nil), // 24: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse 2773 (*ImportProductSetsGcsSource)(nil), // 25: google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource 2774 (*ImportProductSetsInputConfig)(nil), // 26: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig 2775 (*ImportProductSetsRequest)(nil), // 27: google.cloud.vision.v1p3beta1.ImportProductSetsRequest 2776 (*ImportProductSetsResponse)(nil), // 28: google.cloud.vision.v1p3beta1.ImportProductSetsResponse 2777 (*BatchOperationMetadata)(nil), // 29: google.cloud.vision.v1p3beta1.BatchOperationMetadata 2778 (*Product_KeyValue)(nil), // 30: google.cloud.vision.v1p3beta1.Product.KeyValue 2779 (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp 2780 (*status.Status)(nil), // 32: google.rpc.Status 2781 (*BoundingPoly)(nil), // 33: google.cloud.vision.v1p3beta1.BoundingPoly 2782 (*fieldmaskpb.FieldMask)(nil), // 34: google.protobuf.FieldMask 2783 (*emptypb.Empty)(nil), // 35: google.protobuf.Empty 2784 (*longrunning.Operation)(nil), // 36: google.longrunning.Operation 2785} 2786var file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = []int32{ 2787 30, // 0: google.cloud.vision.v1p3beta1.Product.product_labels:type_name -> google.cloud.vision.v1p3beta1.Product.KeyValue 2788 31, // 1: google.cloud.vision.v1p3beta1.ProductSet.index_time:type_name -> google.protobuf.Timestamp 2789 32, // 2: google.cloud.vision.v1p3beta1.ProductSet.index_error:type_name -> google.rpc.Status 2790 33, // 3: google.cloud.vision.v1p3beta1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1p3beta1.BoundingPoly 2791 1, // 4: google.cloud.vision.v1p3beta1.CreateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product 2792 1, // 5: google.cloud.vision.v1p3beta1.ListProductsResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product 2793 1, // 6: google.cloud.vision.v1p3beta1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product 2794 34, // 7: google.cloud.vision.v1p3beta1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask 2795 2, // 8: google.cloud.vision.v1p3beta1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet 2796 2, // 9: google.cloud.vision.v1p3beta1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1p3beta1.ProductSet 2797 2, // 10: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet 2798 34, // 11: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask 2799 3, // 12: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage 2800 3, // 13: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage 2801 1, // 14: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product 2802 25, // 15: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource 2803 26, // 16: google.cloud.vision.v1p3beta1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig 2804 3, // 17: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage 2805 32, // 18: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status 2806 0, // 19: google.cloud.vision.v1p3beta1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1p3beta1.BatchOperationMetadata.State 2807 31, // 20: google.cloud.vision.v1p3beta1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp 2808 31, // 21: google.cloud.vision.v1p3beta1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp 2809 10, // 22: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1p3beta1.CreateProductSetRequest 2810 11, // 23: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1p3beta1.ListProductSetsRequest 2811 13, // 24: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1p3beta1.GetProductSetRequest 2812 14, // 25: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1p3beta1.UpdateProductSetRequest 2813 15, // 26: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1p3beta1.DeleteProductSetRequest 2814 4, // 27: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1p3beta1.CreateProductRequest 2815 5, // 28: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1p3beta1.ListProductsRequest 2816 7, // 29: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1p3beta1.GetProductRequest 2817 8, // 30: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1p3beta1.UpdateProductRequest 2818 9, // 31: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1p3beta1.DeleteProductRequest 2819 16, // 32: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1p3beta1.CreateReferenceImageRequest 2820 20, // 33: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest 2821 17, // 34: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesRequest 2822 19, // 35: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1p3beta1.GetReferenceImageRequest 2823 21, // 36: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1p3beta1.AddProductToProductSetRequest 2824 22, // 37: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest 2825 23, // 38: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest 2826 27, // 39: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1p3beta1.ImportProductSetsRequest 2827 2, // 40: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet 2828 12, // 41: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1p3beta1.ListProductSetsResponse 2829 2, // 42: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet 2830 2, // 43: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet 2831 35, // 44: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty 2832 1, // 45: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1p3beta1.Product 2833 6, // 46: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1p3beta1.ListProductsResponse 2834 1, // 47: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1p3beta1.Product 2835 1, // 48: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1p3beta1.Product 2836 35, // 49: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty 2837 3, // 50: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage 2838 35, // 51: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty 2839 18, // 52: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesResponse 2840 3, // 53: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage 2841 35, // 54: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty 2842 35, // 55: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty 2843 24, // 56: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse 2844 36, // 57: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation 2845 40, // [40:58] is the sub-list for method output_type 2846 22, // [22:40] is the sub-list for method input_type 2847 22, // [22:22] is the sub-list for extension type_name 2848 22, // [22:22] is the sub-list for extension extendee 2849 0, // [0:22] is the sub-list for field type_name 2850} 2851 2852func init() { file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() } 2853func file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() { 2854 if File_google_cloud_vision_v1p3beta1_product_search_service_proto != nil { 2855 return 2856 } 2857 file_google_cloud_vision_v1p3beta1_geometry_proto_init() 2858 if !protoimpl.UnsafeEnabled { 2859 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2860 switch v := v.(*Product); i { 2861 case 0: 2862 return &v.state 2863 case 1: 2864 return &v.sizeCache 2865 case 2: 2866 return &v.unknownFields 2867 default: 2868 return nil 2869 } 2870 } 2871 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2872 switch v := v.(*ProductSet); i { 2873 case 0: 2874 return &v.state 2875 case 1: 2876 return &v.sizeCache 2877 case 2: 2878 return &v.unknownFields 2879 default: 2880 return nil 2881 } 2882 } 2883 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2884 switch v := v.(*ReferenceImage); i { 2885 case 0: 2886 return &v.state 2887 case 1: 2888 return &v.sizeCache 2889 case 2: 2890 return &v.unknownFields 2891 default: 2892 return nil 2893 } 2894 } 2895 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2896 switch v := v.(*CreateProductRequest); i { 2897 case 0: 2898 return &v.state 2899 case 1: 2900 return &v.sizeCache 2901 case 2: 2902 return &v.unknownFields 2903 default: 2904 return nil 2905 } 2906 } 2907 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2908 switch v := v.(*ListProductsRequest); i { 2909 case 0: 2910 return &v.state 2911 case 1: 2912 return &v.sizeCache 2913 case 2: 2914 return &v.unknownFields 2915 default: 2916 return nil 2917 } 2918 } 2919 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2920 switch v := v.(*ListProductsResponse); i { 2921 case 0: 2922 return &v.state 2923 case 1: 2924 return &v.sizeCache 2925 case 2: 2926 return &v.unknownFields 2927 default: 2928 return nil 2929 } 2930 } 2931 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2932 switch v := v.(*GetProductRequest); i { 2933 case 0: 2934 return &v.state 2935 case 1: 2936 return &v.sizeCache 2937 case 2: 2938 return &v.unknownFields 2939 default: 2940 return nil 2941 } 2942 } 2943 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2944 switch v := v.(*UpdateProductRequest); i { 2945 case 0: 2946 return &v.state 2947 case 1: 2948 return &v.sizeCache 2949 case 2: 2950 return &v.unknownFields 2951 default: 2952 return nil 2953 } 2954 } 2955 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2956 switch v := v.(*DeleteProductRequest); i { 2957 case 0: 2958 return &v.state 2959 case 1: 2960 return &v.sizeCache 2961 case 2: 2962 return &v.unknownFields 2963 default: 2964 return nil 2965 } 2966 } 2967 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2968 switch v := v.(*CreateProductSetRequest); i { 2969 case 0: 2970 return &v.state 2971 case 1: 2972 return &v.sizeCache 2973 case 2: 2974 return &v.unknownFields 2975 default: 2976 return nil 2977 } 2978 } 2979 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2980 switch v := v.(*ListProductSetsRequest); i { 2981 case 0: 2982 return &v.state 2983 case 1: 2984 return &v.sizeCache 2985 case 2: 2986 return &v.unknownFields 2987 default: 2988 return nil 2989 } 2990 } 2991 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2992 switch v := v.(*ListProductSetsResponse); i { 2993 case 0: 2994 return &v.state 2995 case 1: 2996 return &v.sizeCache 2997 case 2: 2998 return &v.unknownFields 2999 default: 3000 return nil 3001 } 3002 } 3003 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3004 switch v := v.(*GetProductSetRequest); i { 3005 case 0: 3006 return &v.state 3007 case 1: 3008 return &v.sizeCache 3009 case 2: 3010 return &v.unknownFields 3011 default: 3012 return nil 3013 } 3014 } 3015 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 3016 switch v := v.(*UpdateProductSetRequest); i { 3017 case 0: 3018 return &v.state 3019 case 1: 3020 return &v.sizeCache 3021 case 2: 3022 return &v.unknownFields 3023 default: 3024 return nil 3025 } 3026 } 3027 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 3028 switch v := v.(*DeleteProductSetRequest); i { 3029 case 0: 3030 return &v.state 3031 case 1: 3032 return &v.sizeCache 3033 case 2: 3034 return &v.unknownFields 3035 default: 3036 return nil 3037 } 3038 } 3039 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 3040 switch v := v.(*CreateReferenceImageRequest); i { 3041 case 0: 3042 return &v.state 3043 case 1: 3044 return &v.sizeCache 3045 case 2: 3046 return &v.unknownFields 3047 default: 3048 return nil 3049 } 3050 } 3051 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 3052 switch v := v.(*ListReferenceImagesRequest); i { 3053 case 0: 3054 return &v.state 3055 case 1: 3056 return &v.sizeCache 3057 case 2: 3058 return &v.unknownFields 3059 default: 3060 return nil 3061 } 3062 } 3063 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 3064 switch v := v.(*ListReferenceImagesResponse); i { 3065 case 0: 3066 return &v.state 3067 case 1: 3068 return &v.sizeCache 3069 case 2: 3070 return &v.unknownFields 3071 default: 3072 return nil 3073 } 3074 } 3075 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 3076 switch v := v.(*GetReferenceImageRequest); i { 3077 case 0: 3078 return &v.state 3079 case 1: 3080 return &v.sizeCache 3081 case 2: 3082 return &v.unknownFields 3083 default: 3084 return nil 3085 } 3086 } 3087 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 3088 switch v := v.(*DeleteReferenceImageRequest); i { 3089 case 0: 3090 return &v.state 3091 case 1: 3092 return &v.sizeCache 3093 case 2: 3094 return &v.unknownFields 3095 default: 3096 return nil 3097 } 3098 } 3099 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 3100 switch v := v.(*AddProductToProductSetRequest); i { 3101 case 0: 3102 return &v.state 3103 case 1: 3104 return &v.sizeCache 3105 case 2: 3106 return &v.unknownFields 3107 default: 3108 return nil 3109 } 3110 } 3111 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 3112 switch v := v.(*RemoveProductFromProductSetRequest); i { 3113 case 0: 3114 return &v.state 3115 case 1: 3116 return &v.sizeCache 3117 case 2: 3118 return &v.unknownFields 3119 default: 3120 return nil 3121 } 3122 } 3123 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 3124 switch v := v.(*ListProductsInProductSetRequest); i { 3125 case 0: 3126 return &v.state 3127 case 1: 3128 return &v.sizeCache 3129 case 2: 3130 return &v.unknownFields 3131 default: 3132 return nil 3133 } 3134 } 3135 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 3136 switch v := v.(*ListProductsInProductSetResponse); i { 3137 case 0: 3138 return &v.state 3139 case 1: 3140 return &v.sizeCache 3141 case 2: 3142 return &v.unknownFields 3143 default: 3144 return nil 3145 } 3146 } 3147 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 3148 switch v := v.(*ImportProductSetsGcsSource); i { 3149 case 0: 3150 return &v.state 3151 case 1: 3152 return &v.sizeCache 3153 case 2: 3154 return &v.unknownFields 3155 default: 3156 return nil 3157 } 3158 } 3159 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 3160 switch v := v.(*ImportProductSetsInputConfig); i { 3161 case 0: 3162 return &v.state 3163 case 1: 3164 return &v.sizeCache 3165 case 2: 3166 return &v.unknownFields 3167 default: 3168 return nil 3169 } 3170 } 3171 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 3172 switch v := v.(*ImportProductSetsRequest); i { 3173 case 0: 3174 return &v.state 3175 case 1: 3176 return &v.sizeCache 3177 case 2: 3178 return &v.unknownFields 3179 default: 3180 return nil 3181 } 3182 } 3183 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 3184 switch v := v.(*ImportProductSetsResponse); i { 3185 case 0: 3186 return &v.state 3187 case 1: 3188 return &v.sizeCache 3189 case 2: 3190 return &v.unknownFields 3191 default: 3192 return nil 3193 } 3194 } 3195 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 3196 switch v := v.(*BatchOperationMetadata); i { 3197 case 0: 3198 return &v.state 3199 case 1: 3200 return &v.sizeCache 3201 case 2: 3202 return &v.unknownFields 3203 default: 3204 return nil 3205 } 3206 } 3207 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 3208 switch v := v.(*Product_KeyValue); i { 3209 case 0: 3210 return &v.state 3211 case 1: 3212 return &v.sizeCache 3213 case 2: 3214 return &v.unknownFields 3215 default: 3216 return nil 3217 } 3218 } 3219 } 3220 file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{ 3221 (*ImportProductSetsInputConfig_GcsSource)(nil), 3222 } 3223 type x struct{} 3224 out := protoimpl.TypeBuilder{ 3225 File: protoimpl.DescBuilder{ 3226 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3227 RawDescriptor: file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc, 3228 NumEnums: 1, 3229 NumMessages: 30, 3230 NumExtensions: 0, 3231 NumServices: 1, 3232 }, 3233 GoTypes: file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes, 3234 DependencyIndexes: file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs, 3235 EnumInfos: file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes, 3236 MessageInfos: file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes, 3237 }.Build() 3238 File_google_cloud_vision_v1p3beta1_product_search_service_proto = out.File 3239 file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = nil 3240 file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = nil 3241 file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = nil 3242} 3243 3244// Reference imports to suppress errors if they are not otherwise used. 3245var _ context.Context 3246var _ grpc.ClientConnInterface 3247 3248// This is a compile-time assertion to ensure that this generated file 3249// is compatible with the grpc package it is being compiled against. 3250const _ = grpc.SupportPackageIsVersion6 3251 3252// ProductSearchClient is the client API for ProductSearch service. 3253// 3254// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 3255type ProductSearchClient interface { 3256 // Creates and returns a new ProductSet resource. 3257 // 3258 // Possible errors: 3259 // 3260 // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than 3261 // 4096 characters. 3262 CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3263 // Lists ProductSets in an unspecified order. 3264 // 3265 // Possible errors: 3266 // 3267 // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less 3268 // than 1. 3269 ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) 3270 // Gets information associated with a ProductSet. 3271 // 3272 // Possible errors: 3273 // 3274 // * Returns NOT_FOUND if the ProductSet does not exist. 3275 GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3276 // Makes changes to a ProductSet resource. 3277 // Only display_name can be updated currently. 3278 // 3279 // Possible errors: 3280 // 3281 // * Returns NOT_FOUND if the ProductSet does not exist. 3282 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but 3283 // missing from the request or longer than 4096 characters. 3284 UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) 3285 // Permanently deletes a ProductSet. All Products and ReferenceImages in the 3286 // ProductSet will be deleted. 3287 // 3288 // The actual image files are not deleted from Google Cloud Storage. 3289 // 3290 // Possible errors: 3291 // 3292 // * Returns NOT_FOUND if the ProductSet does not exist. 3293 DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3294 // Creates and returns a new product resource. 3295 // 3296 // Possible errors: 3297 // 3298 // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 3299 // characters. 3300 // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. 3301 // * Returns INVALID_ARGUMENT if product_category is missing or invalid. 3302 CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) 3303 // Lists products in an unspecified order. 3304 // 3305 // Possible errors: 3306 // 3307 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3308 ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) 3309 // Gets information associated with a Product. 3310 // 3311 // Possible errors: 3312 // 3313 // * Returns NOT_FOUND if the Product does not exist. 3314 GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) 3315 // Makes changes to a Product resource. 3316 // Only display_name, description and labels can be updated right now. 3317 // 3318 // If labels are updated, the change will not be reflected in queries until 3319 // the next index time. 3320 // 3321 // Possible errors: 3322 // 3323 // * Returns NOT_FOUND if the Product does not exist. 3324 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is 3325 // missing from the request or longer than 4096 characters. 3326 // * Returns INVALID_ARGUMENT if description is present in update_mask but is 3327 // longer than 4096 characters. 3328 // * Returns INVALID_ARGUMENT if product_category is present in update_mask. 3329 UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) 3330 // Permanently deletes a product and its reference images. 3331 // 3332 // Metadata of the product and all its images will be deleted right away, but 3333 // search queries against ProductSets containing the product may still work 3334 // until all related caches are refreshed. 3335 // 3336 // Possible errors: 3337 // 3338 // * Returns NOT_FOUND if the product does not exist. 3339 DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3340 // Creates and returns a new ReferenceImage resource. 3341 // 3342 // The `bounding_poly` field is optional. If `bounding_poly` is not specified, 3343 // the system will try to detect regions of interest in the image that are 3344 // compatible with the product_category on the parent product. If it is 3345 // specified, detection is ALWAYS skipped. The system converts polygons into 3346 // non-rotated rectangles. 3347 // 3348 // Note that the pipeline will resize the image if the image resolution is too 3349 // large to process (above 50MP). 3350 // 3351 // Possible errors: 3352 // 3353 // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 3354 // characters. 3355 // * Returns INVALID_ARGUMENT if the product does not exist. 3356 // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing 3357 // compatible with the parent product's product_category is detected. 3358 // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. 3359 CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) 3360 // Permanently deletes a reference image. 3361 // 3362 // The image metadata will be deleted right away, but search queries 3363 // against ProductSets containing the image may still work until all related 3364 // caches are refreshed. 3365 // 3366 // The actual image files are not deleted from Google Cloud Storage. 3367 // 3368 // Possible errors: 3369 // 3370 // * Returns NOT_FOUND if the reference image does not exist. 3371 DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3372 // Lists reference images. 3373 // 3374 // Possible errors: 3375 // 3376 // * Returns NOT_FOUND if the parent product does not exist. 3377 // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less 3378 // than 1. 3379 ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) 3380 // Gets information associated with a ReferenceImage. 3381 // 3382 // Possible errors: 3383 // 3384 // * Returns NOT_FOUND if the specified image does not exist. 3385 GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) 3386 // Adds a Product to the specified ProductSet. If the Product is already 3387 // present, no change is made. 3388 // 3389 // One Product can be added to at most 100 ProductSets. 3390 // 3391 // Possible errors: 3392 // 3393 // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. 3394 AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3395 // Removes a Product from the specified ProductSet. 3396 // 3397 // Possible errors: 3398 // 3399 // * Returns NOT_FOUND If the Product is not found under the ProductSet. 3400 RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) 3401 // Lists the Products in a ProductSet, in an unspecified order. If the 3402 // ProductSet does not exist, the products field of the response will be 3403 // empty. 3404 // 3405 // Possible errors: 3406 // 3407 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3408 ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) 3409 // Asynchronous API that imports a list of reference images to specified 3410 // product sets based on a list of image information. 3411 // 3412 // The [google.longrunning.Operation][google.longrunning.Operation] API can be 3413 // used to keep track of the progress and results of the request. 3414 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3415 // `Operation.response` contains `ImportProductSetsResponse`. (results) 3416 // 3417 // The input source of this method is a csv file on Google Cloud Storage. 3418 // For the format of the csv file please see 3419 // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri]. 3420 ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) 3421} 3422 3423type productSearchClient struct { 3424 cc grpc.ClientConnInterface 3425} 3426 3427func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient { 3428 return &productSearchClient{cc} 3429} 3430 3431func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3432 out := new(ProductSet) 3433 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet", in, out, opts...) 3434 if err != nil { 3435 return nil, err 3436 } 3437 return out, nil 3438} 3439 3440func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) { 3441 out := new(ListProductSetsResponse) 3442 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets", in, out, opts...) 3443 if err != nil { 3444 return nil, err 3445 } 3446 return out, nil 3447} 3448 3449func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3450 out := new(ProductSet) 3451 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet", in, out, opts...) 3452 if err != nil { 3453 return nil, err 3454 } 3455 return out, nil 3456} 3457 3458func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { 3459 out := new(ProductSet) 3460 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet", in, out, opts...) 3461 if err != nil { 3462 return nil, err 3463 } 3464 return out, nil 3465} 3466 3467func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3468 out := new(emptypb.Empty) 3469 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet", in, out, opts...) 3470 if err != nil { 3471 return nil, err 3472 } 3473 return out, nil 3474} 3475 3476func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) { 3477 out := new(Product) 3478 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct", in, out, opts...) 3479 if err != nil { 3480 return nil, err 3481 } 3482 return out, nil 3483} 3484 3485func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) { 3486 out := new(ListProductsResponse) 3487 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts", in, out, opts...) 3488 if err != nil { 3489 return nil, err 3490 } 3491 return out, nil 3492} 3493 3494func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) { 3495 out := new(Product) 3496 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct", in, out, opts...) 3497 if err != nil { 3498 return nil, err 3499 } 3500 return out, nil 3501} 3502 3503func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) { 3504 out := new(Product) 3505 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct", in, out, opts...) 3506 if err != nil { 3507 return nil, err 3508 } 3509 return out, nil 3510} 3511 3512func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3513 out := new(emptypb.Empty) 3514 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct", in, out, opts...) 3515 if err != nil { 3516 return nil, err 3517 } 3518 return out, nil 3519} 3520 3521func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { 3522 out := new(ReferenceImage) 3523 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage", in, out, opts...) 3524 if err != nil { 3525 return nil, err 3526 } 3527 return out, nil 3528} 3529 3530func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3531 out := new(emptypb.Empty) 3532 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage", in, out, opts...) 3533 if err != nil { 3534 return nil, err 3535 } 3536 return out, nil 3537} 3538 3539func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) { 3540 out := new(ListReferenceImagesResponse) 3541 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages", in, out, opts...) 3542 if err != nil { 3543 return nil, err 3544 } 3545 return out, nil 3546} 3547 3548func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { 3549 out := new(ReferenceImage) 3550 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage", in, out, opts...) 3551 if err != nil { 3552 return nil, err 3553 } 3554 return out, nil 3555} 3556 3557func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3558 out := new(emptypb.Empty) 3559 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet", in, out, opts...) 3560 if err != nil { 3561 return nil, err 3562 } 3563 return out, nil 3564} 3565 3566func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { 3567 out := new(emptypb.Empty) 3568 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet", in, out, opts...) 3569 if err != nil { 3570 return nil, err 3571 } 3572 return out, nil 3573} 3574 3575func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) { 3576 out := new(ListProductsInProductSetResponse) 3577 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet", in, out, opts...) 3578 if err != nil { 3579 return nil, err 3580 } 3581 return out, nil 3582} 3583 3584func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { 3585 out := new(longrunning.Operation) 3586 err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets", in, out, opts...) 3587 if err != nil { 3588 return nil, err 3589 } 3590 return out, nil 3591} 3592 3593// ProductSearchServer is the server API for ProductSearch service. 3594type ProductSearchServer interface { 3595 // Creates and returns a new ProductSet resource. 3596 // 3597 // Possible errors: 3598 // 3599 // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than 3600 // 4096 characters. 3601 CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) 3602 // Lists ProductSets in an unspecified order. 3603 // 3604 // Possible errors: 3605 // 3606 // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less 3607 // than 1. 3608 ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) 3609 // Gets information associated with a ProductSet. 3610 // 3611 // Possible errors: 3612 // 3613 // * Returns NOT_FOUND if the ProductSet does not exist. 3614 GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) 3615 // Makes changes to a ProductSet resource. 3616 // Only display_name can be updated currently. 3617 // 3618 // Possible errors: 3619 // 3620 // * Returns NOT_FOUND if the ProductSet does not exist. 3621 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but 3622 // missing from the request or longer than 4096 characters. 3623 UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) 3624 // Permanently deletes a ProductSet. All Products and ReferenceImages in the 3625 // ProductSet will be deleted. 3626 // 3627 // The actual image files are not deleted from Google Cloud Storage. 3628 // 3629 // Possible errors: 3630 // 3631 // * Returns NOT_FOUND if the ProductSet does not exist. 3632 DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) 3633 // Creates and returns a new product resource. 3634 // 3635 // Possible errors: 3636 // 3637 // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 3638 // characters. 3639 // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. 3640 // * Returns INVALID_ARGUMENT if product_category is missing or invalid. 3641 CreateProduct(context.Context, *CreateProductRequest) (*Product, error) 3642 // Lists products in an unspecified order. 3643 // 3644 // Possible errors: 3645 // 3646 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3647 ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) 3648 // Gets information associated with a Product. 3649 // 3650 // Possible errors: 3651 // 3652 // * Returns NOT_FOUND if the Product does not exist. 3653 GetProduct(context.Context, *GetProductRequest) (*Product, error) 3654 // Makes changes to a Product resource. 3655 // Only display_name, description and labels can be updated right now. 3656 // 3657 // If labels are updated, the change will not be reflected in queries until 3658 // the next index time. 3659 // 3660 // Possible errors: 3661 // 3662 // * Returns NOT_FOUND if the Product does not exist. 3663 // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is 3664 // missing from the request or longer than 4096 characters. 3665 // * Returns INVALID_ARGUMENT if description is present in update_mask but is 3666 // longer than 4096 characters. 3667 // * Returns INVALID_ARGUMENT if product_category is present in update_mask. 3668 UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) 3669 // Permanently deletes a product and its reference images. 3670 // 3671 // Metadata of the product and all its images will be deleted right away, but 3672 // search queries against ProductSets containing the product may still work 3673 // until all related caches are refreshed. 3674 // 3675 // Possible errors: 3676 // 3677 // * Returns NOT_FOUND if the product does not exist. 3678 DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) 3679 // Creates and returns a new ReferenceImage resource. 3680 // 3681 // The `bounding_poly` field is optional. If `bounding_poly` is not specified, 3682 // the system will try to detect regions of interest in the image that are 3683 // compatible with the product_category on the parent product. If it is 3684 // specified, detection is ALWAYS skipped. The system converts polygons into 3685 // non-rotated rectangles. 3686 // 3687 // Note that the pipeline will resize the image if the image resolution is too 3688 // large to process (above 50MP). 3689 // 3690 // Possible errors: 3691 // 3692 // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 3693 // characters. 3694 // * Returns INVALID_ARGUMENT if the product does not exist. 3695 // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing 3696 // compatible with the parent product's product_category is detected. 3697 // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. 3698 CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) 3699 // Permanently deletes a reference image. 3700 // 3701 // The image metadata will be deleted right away, but search queries 3702 // against ProductSets containing the image may still work until all related 3703 // caches are refreshed. 3704 // 3705 // The actual image files are not deleted from Google Cloud Storage. 3706 // 3707 // Possible errors: 3708 // 3709 // * Returns NOT_FOUND if the reference image does not exist. 3710 DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) 3711 // Lists reference images. 3712 // 3713 // Possible errors: 3714 // 3715 // * Returns NOT_FOUND if the parent product does not exist. 3716 // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less 3717 // than 1. 3718 ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) 3719 // Gets information associated with a ReferenceImage. 3720 // 3721 // Possible errors: 3722 // 3723 // * Returns NOT_FOUND if the specified image does not exist. 3724 GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) 3725 // Adds a Product to the specified ProductSet. If the Product is already 3726 // present, no change is made. 3727 // 3728 // One Product can be added to at most 100 ProductSets. 3729 // 3730 // Possible errors: 3731 // 3732 // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. 3733 AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) 3734 // Removes a Product from the specified ProductSet. 3735 // 3736 // Possible errors: 3737 // 3738 // * Returns NOT_FOUND If the Product is not found under the ProductSet. 3739 RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) 3740 // Lists the Products in a ProductSet, in an unspecified order. If the 3741 // ProductSet does not exist, the products field of the response will be 3742 // empty. 3743 // 3744 // Possible errors: 3745 // 3746 // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. 3747 ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) 3748 // Asynchronous API that imports a list of reference images to specified 3749 // product sets based on a list of image information. 3750 // 3751 // The [google.longrunning.Operation][google.longrunning.Operation] API can be 3752 // used to keep track of the progress and results of the request. 3753 // `Operation.metadata` contains `BatchOperationMetadata`. (progress) 3754 // `Operation.response` contains `ImportProductSetsResponse`. (results) 3755 // 3756 // The input source of this method is a csv file on Google Cloud Storage. 3757 // For the format of the csv file please see 3758 // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri]. 3759 ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) 3760} 3761 3762// UnimplementedProductSearchServer can be embedded to have forward compatible implementations. 3763type UnimplementedProductSearchServer struct { 3764} 3765 3766func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) { 3767 return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented") 3768} 3769func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) { 3770 return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented") 3771} 3772func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) { 3773 return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented") 3774} 3775func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) { 3776 return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented") 3777} 3778func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) { 3779 return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented") 3780} 3781func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) { 3782 return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented") 3783} 3784func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) { 3785 return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented") 3786} 3787func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) { 3788 return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented") 3789} 3790func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) { 3791 return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented") 3792} 3793func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) { 3794 return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented") 3795} 3796func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) { 3797 return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented") 3798} 3799func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) { 3800 return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented") 3801} 3802func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) { 3803 return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented") 3804} 3805func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) { 3806 return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented") 3807} 3808func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) { 3809 return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented") 3810} 3811func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) { 3812 return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented") 3813} 3814func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) { 3815 return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented") 3816} 3817func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) { 3818 return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented") 3819} 3820 3821func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) { 3822 s.RegisterService(&_ProductSearch_serviceDesc, srv) 3823} 3824 3825func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3826 in := new(CreateProductSetRequest) 3827 if err := dec(in); err != nil { 3828 return nil, err 3829 } 3830 if interceptor == nil { 3831 return srv.(ProductSearchServer).CreateProductSet(ctx, in) 3832 } 3833 info := &grpc.UnaryServerInfo{ 3834 Server: srv, 3835 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet", 3836 } 3837 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3838 return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest)) 3839 } 3840 return interceptor(ctx, in, info, handler) 3841} 3842 3843func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3844 in := new(ListProductSetsRequest) 3845 if err := dec(in); err != nil { 3846 return nil, err 3847 } 3848 if interceptor == nil { 3849 return srv.(ProductSearchServer).ListProductSets(ctx, in) 3850 } 3851 info := &grpc.UnaryServerInfo{ 3852 Server: srv, 3853 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets", 3854 } 3855 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3856 return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest)) 3857 } 3858 return interceptor(ctx, in, info, handler) 3859} 3860 3861func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3862 in := new(GetProductSetRequest) 3863 if err := dec(in); err != nil { 3864 return nil, err 3865 } 3866 if interceptor == nil { 3867 return srv.(ProductSearchServer).GetProductSet(ctx, in) 3868 } 3869 info := &grpc.UnaryServerInfo{ 3870 Server: srv, 3871 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet", 3872 } 3873 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3874 return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest)) 3875 } 3876 return interceptor(ctx, in, info, handler) 3877} 3878 3879func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3880 in := new(UpdateProductSetRequest) 3881 if err := dec(in); err != nil { 3882 return nil, err 3883 } 3884 if interceptor == nil { 3885 return srv.(ProductSearchServer).UpdateProductSet(ctx, in) 3886 } 3887 info := &grpc.UnaryServerInfo{ 3888 Server: srv, 3889 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet", 3890 } 3891 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3892 return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest)) 3893 } 3894 return interceptor(ctx, in, info, handler) 3895} 3896 3897func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3898 in := new(DeleteProductSetRequest) 3899 if err := dec(in); err != nil { 3900 return nil, err 3901 } 3902 if interceptor == nil { 3903 return srv.(ProductSearchServer).DeleteProductSet(ctx, in) 3904 } 3905 info := &grpc.UnaryServerInfo{ 3906 Server: srv, 3907 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet", 3908 } 3909 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3910 return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest)) 3911 } 3912 return interceptor(ctx, in, info, handler) 3913} 3914 3915func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3916 in := new(CreateProductRequest) 3917 if err := dec(in); err != nil { 3918 return nil, err 3919 } 3920 if interceptor == nil { 3921 return srv.(ProductSearchServer).CreateProduct(ctx, in) 3922 } 3923 info := &grpc.UnaryServerInfo{ 3924 Server: srv, 3925 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct", 3926 } 3927 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3928 return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest)) 3929 } 3930 return interceptor(ctx, in, info, handler) 3931} 3932 3933func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3934 in := new(ListProductsRequest) 3935 if err := dec(in); err != nil { 3936 return nil, err 3937 } 3938 if interceptor == nil { 3939 return srv.(ProductSearchServer).ListProducts(ctx, in) 3940 } 3941 info := &grpc.UnaryServerInfo{ 3942 Server: srv, 3943 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts", 3944 } 3945 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3946 return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest)) 3947 } 3948 return interceptor(ctx, in, info, handler) 3949} 3950 3951func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3952 in := new(GetProductRequest) 3953 if err := dec(in); err != nil { 3954 return nil, err 3955 } 3956 if interceptor == nil { 3957 return srv.(ProductSearchServer).GetProduct(ctx, in) 3958 } 3959 info := &grpc.UnaryServerInfo{ 3960 Server: srv, 3961 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct", 3962 } 3963 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3964 return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest)) 3965 } 3966 return interceptor(ctx, in, info, handler) 3967} 3968 3969func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3970 in := new(UpdateProductRequest) 3971 if err := dec(in); err != nil { 3972 return nil, err 3973 } 3974 if interceptor == nil { 3975 return srv.(ProductSearchServer).UpdateProduct(ctx, in) 3976 } 3977 info := &grpc.UnaryServerInfo{ 3978 Server: srv, 3979 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct", 3980 } 3981 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 3982 return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest)) 3983 } 3984 return interceptor(ctx, in, info, handler) 3985} 3986 3987func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 3988 in := new(DeleteProductRequest) 3989 if err := dec(in); err != nil { 3990 return nil, err 3991 } 3992 if interceptor == nil { 3993 return srv.(ProductSearchServer).DeleteProduct(ctx, in) 3994 } 3995 info := &grpc.UnaryServerInfo{ 3996 Server: srv, 3997 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct", 3998 } 3999 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4000 return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest)) 4001 } 4002 return interceptor(ctx, in, info, handler) 4003} 4004 4005func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4006 in := new(CreateReferenceImageRequest) 4007 if err := dec(in); err != nil { 4008 return nil, err 4009 } 4010 if interceptor == nil { 4011 return srv.(ProductSearchServer).CreateReferenceImage(ctx, in) 4012 } 4013 info := &grpc.UnaryServerInfo{ 4014 Server: srv, 4015 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage", 4016 } 4017 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4018 return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest)) 4019 } 4020 return interceptor(ctx, in, info, handler) 4021} 4022 4023func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4024 in := new(DeleteReferenceImageRequest) 4025 if err := dec(in); err != nil { 4026 return nil, err 4027 } 4028 if interceptor == nil { 4029 return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in) 4030 } 4031 info := &grpc.UnaryServerInfo{ 4032 Server: srv, 4033 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage", 4034 } 4035 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4036 return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest)) 4037 } 4038 return interceptor(ctx, in, info, handler) 4039} 4040 4041func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4042 in := new(ListReferenceImagesRequest) 4043 if err := dec(in); err != nil { 4044 return nil, err 4045 } 4046 if interceptor == nil { 4047 return srv.(ProductSearchServer).ListReferenceImages(ctx, in) 4048 } 4049 info := &grpc.UnaryServerInfo{ 4050 Server: srv, 4051 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages", 4052 } 4053 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4054 return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest)) 4055 } 4056 return interceptor(ctx, in, info, handler) 4057} 4058 4059func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4060 in := new(GetReferenceImageRequest) 4061 if err := dec(in); err != nil { 4062 return nil, err 4063 } 4064 if interceptor == nil { 4065 return srv.(ProductSearchServer).GetReferenceImage(ctx, in) 4066 } 4067 info := &grpc.UnaryServerInfo{ 4068 Server: srv, 4069 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage", 4070 } 4071 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4072 return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest)) 4073 } 4074 return interceptor(ctx, in, info, handler) 4075} 4076 4077func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4078 in := new(AddProductToProductSetRequest) 4079 if err := dec(in); err != nil { 4080 return nil, err 4081 } 4082 if interceptor == nil { 4083 return srv.(ProductSearchServer).AddProductToProductSet(ctx, in) 4084 } 4085 info := &grpc.UnaryServerInfo{ 4086 Server: srv, 4087 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet", 4088 } 4089 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4090 return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest)) 4091 } 4092 return interceptor(ctx, in, info, handler) 4093} 4094 4095func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4096 in := new(RemoveProductFromProductSetRequest) 4097 if err := dec(in); err != nil { 4098 return nil, err 4099 } 4100 if interceptor == nil { 4101 return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in) 4102 } 4103 info := &grpc.UnaryServerInfo{ 4104 Server: srv, 4105 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet", 4106 } 4107 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4108 return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest)) 4109 } 4110 return interceptor(ctx, in, info, handler) 4111} 4112 4113func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4114 in := new(ListProductsInProductSetRequest) 4115 if err := dec(in); err != nil { 4116 return nil, err 4117 } 4118 if interceptor == nil { 4119 return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in) 4120 } 4121 info := &grpc.UnaryServerInfo{ 4122 Server: srv, 4123 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet", 4124 } 4125 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4126 return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest)) 4127 } 4128 return interceptor(ctx, in, info, handler) 4129} 4130 4131func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4132 in := new(ImportProductSetsRequest) 4133 if err := dec(in); err != nil { 4134 return nil, err 4135 } 4136 if interceptor == nil { 4137 return srv.(ProductSearchServer).ImportProductSets(ctx, in) 4138 } 4139 info := &grpc.UnaryServerInfo{ 4140 Server: srv, 4141 FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets", 4142 } 4143 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4144 return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest)) 4145 } 4146 return interceptor(ctx, in, info, handler) 4147} 4148 4149var _ProductSearch_serviceDesc = grpc.ServiceDesc{ 4150 ServiceName: "google.cloud.vision.v1p3beta1.ProductSearch", 4151 HandlerType: (*ProductSearchServer)(nil), 4152 Methods: []grpc.MethodDesc{ 4153 { 4154 MethodName: "CreateProductSet", 4155 Handler: _ProductSearch_CreateProductSet_Handler, 4156 }, 4157 { 4158 MethodName: "ListProductSets", 4159 Handler: _ProductSearch_ListProductSets_Handler, 4160 }, 4161 { 4162 MethodName: "GetProductSet", 4163 Handler: _ProductSearch_GetProductSet_Handler, 4164 }, 4165 { 4166 MethodName: "UpdateProductSet", 4167 Handler: _ProductSearch_UpdateProductSet_Handler, 4168 }, 4169 { 4170 MethodName: "DeleteProductSet", 4171 Handler: _ProductSearch_DeleteProductSet_Handler, 4172 }, 4173 { 4174 MethodName: "CreateProduct", 4175 Handler: _ProductSearch_CreateProduct_Handler, 4176 }, 4177 { 4178 MethodName: "ListProducts", 4179 Handler: _ProductSearch_ListProducts_Handler, 4180 }, 4181 { 4182 MethodName: "GetProduct", 4183 Handler: _ProductSearch_GetProduct_Handler, 4184 }, 4185 { 4186 MethodName: "UpdateProduct", 4187 Handler: _ProductSearch_UpdateProduct_Handler, 4188 }, 4189 { 4190 MethodName: "DeleteProduct", 4191 Handler: _ProductSearch_DeleteProduct_Handler, 4192 }, 4193 { 4194 MethodName: "CreateReferenceImage", 4195 Handler: _ProductSearch_CreateReferenceImage_Handler, 4196 }, 4197 { 4198 MethodName: "DeleteReferenceImage", 4199 Handler: _ProductSearch_DeleteReferenceImage_Handler, 4200 }, 4201 { 4202 MethodName: "ListReferenceImages", 4203 Handler: _ProductSearch_ListReferenceImages_Handler, 4204 }, 4205 { 4206 MethodName: "GetReferenceImage", 4207 Handler: _ProductSearch_GetReferenceImage_Handler, 4208 }, 4209 { 4210 MethodName: "AddProductToProductSet", 4211 Handler: _ProductSearch_AddProductToProductSet_Handler, 4212 }, 4213 { 4214 MethodName: "RemoveProductFromProductSet", 4215 Handler: _ProductSearch_RemoveProductFromProductSet_Handler, 4216 }, 4217 { 4218 MethodName: "ListProductsInProductSet", 4219 Handler: _ProductSearch_ListProductsInProductSet_Handler, 4220 }, 4221 { 4222 MethodName: "ImportProductSets", 4223 Handler: _ProductSearch_ImportProductSets_Handler, 4224 }, 4225 }, 4226 Streams: []grpc.StreamDesc{}, 4227 Metadata: "google/cloud/vision/v1p3beta1/product_search_service.proto", 4228} 4229