go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/buildbucket/proto/project_config.pb.go (about) 1 // Copyright 2018 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Schemas for project configs. 16 17 // Code generated by protoc-gen-go. DO NOT EDIT. 18 // versions: 19 // protoc-gen-go v1.32.0 20 // protoc v3.21.7 21 // source: go.chromium.org/luci/buildbucket/proto/project_config.proto 22 23 package buildbucketpb 24 25 import ( 26 _ "go.chromium.org/luci/common/proto" 27 v1 "go.chromium.org/luci/resultdb/proto/v1" 28 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 29 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 30 durationpb "google.golang.org/protobuf/types/known/durationpb" 31 wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" 32 reflect "reflect" 33 sync "sync" 34 ) 35 36 const ( 37 // Verify that this generated code is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 39 // Verify that runtime/protoimpl is sufficiently up-to-date. 40 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 41 ) 42 43 // Toggle is a boolean with an extra state UNSET. 44 // When protobuf messages are merged, UNSET does not overwrite an existing 45 // value. 46 // TODO(nodir): replace with Trinary in ../common.proto. 47 type Toggle int32 48 49 const ( 50 Toggle_UNSET Toggle = 0 51 Toggle_YES Toggle = 1 52 Toggle_NO Toggle = 2 53 ) 54 55 // Enum value maps for Toggle. 56 var ( 57 Toggle_name = map[int32]string{ 58 0: "UNSET", 59 1: "YES", 60 2: "NO", 61 } 62 Toggle_value = map[string]int32{ 63 "UNSET": 0, 64 "YES": 1, 65 "NO": 2, 66 } 67 ) 68 69 func (x Toggle) Enum() *Toggle { 70 p := new(Toggle) 71 *p = x 72 return p 73 } 74 75 func (x Toggle) String() string { 76 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 77 } 78 79 func (Toggle) Descriptor() protoreflect.EnumDescriptor { 80 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[0].Descriptor() 81 } 82 83 func (Toggle) Type() protoreflect.EnumType { 84 return &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[0] 85 } 86 87 func (x Toggle) Number() protoreflect.EnumNumber { 88 return protoreflect.EnumNumber(x) 89 } 90 91 // Deprecated: Use Toggle.Descriptor instead. 92 func (Toggle) EnumDescriptor() ([]byte, []int) { 93 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0} 94 } 95 96 type Acl_Role int32 97 98 const ( 99 Acl_READER Acl_Role = 0 100 Acl_SCHEDULER Acl_Role = 1 101 Acl_WRITER Acl_Role = 2 102 ) 103 104 // Enum value maps for Acl_Role. 105 var ( 106 Acl_Role_name = map[int32]string{ 107 0: "READER", 108 1: "SCHEDULER", 109 2: "WRITER", 110 } 111 Acl_Role_value = map[string]int32{ 112 "READER": 0, 113 "SCHEDULER": 1, 114 "WRITER": 2, 115 } 116 ) 117 118 func (x Acl_Role) Enum() *Acl_Role { 119 p := new(Acl_Role) 120 *p = x 121 return p 122 } 123 124 func (x Acl_Role) String() string { 125 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 126 } 127 128 func (Acl_Role) Descriptor() protoreflect.EnumDescriptor { 129 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[1].Descriptor() 130 } 131 132 func (Acl_Role) Type() protoreflect.EnumType { 133 return &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[1] 134 } 135 136 func (x Acl_Role) Number() protoreflect.EnumNumber { 137 return protoreflect.EnumNumber(x) 138 } 139 140 // Deprecated: Use Acl_Role.Descriptor instead. 141 func (Acl_Role) EnumDescriptor() ([]byte, []int) { 142 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0, 0} 143 } 144 145 // Deprecated in favor of LUCI Realms. This proto is totally unused now, exists 146 // only to not break older configs that still may have deprecated fields 147 // populated. 148 type Acl struct { 149 state protoimpl.MessageState 150 sizeCache protoimpl.SizeCache 151 unknownFields protoimpl.UnknownFields 152 153 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 154 Role Acl_Role `protobuf:"varint,1,opt,name=role,proto3,enum=buildbucket.Acl_Role" json:"role,omitempty"` 155 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 156 Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` 157 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 158 Identity string `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` 159 } 160 161 func (x *Acl) Reset() { 162 *x = Acl{} 163 if protoimpl.UnsafeEnabled { 164 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0] 165 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 166 ms.StoreMessageInfo(mi) 167 } 168 } 169 170 func (x *Acl) String() string { 171 return protoimpl.X.MessageStringOf(x) 172 } 173 174 func (*Acl) ProtoMessage() {} 175 176 func (x *Acl) ProtoReflect() protoreflect.Message { 177 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0] 178 if protoimpl.UnsafeEnabled && x != nil { 179 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 180 if ms.LoadMessageInfo() == nil { 181 ms.StoreMessageInfo(mi) 182 } 183 return ms 184 } 185 return mi.MessageOf(x) 186 } 187 188 // Deprecated: Use Acl.ProtoReflect.Descriptor instead. 189 func (*Acl) Descriptor() ([]byte, []int) { 190 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0} 191 } 192 193 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 194 func (x *Acl) GetRole() Acl_Role { 195 if x != nil { 196 return x.Role 197 } 198 return Acl_READER 199 } 200 201 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 202 func (x *Acl) GetGroup() string { 203 if x != nil { 204 return x.Group 205 } 206 return "" 207 } 208 209 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 210 func (x *Acl) GetIdentity() string { 211 if x != nil { 212 return x.Identity 213 } 214 return "" 215 } 216 217 // Defines a swarmbucket builder. A builder has a name, a category and specifies 218 // what should happen if a build is scheduled to that builder. 219 // 220 // SECURITY WARNING: if adding more fields to this message, keep in mind that 221 // a user that has permissions to schedule a build to the bucket, can override 222 // this config. 223 // 224 // Next tag: 40. 225 type BuilderConfig struct { 226 state protoimpl.MessageState 227 sizeCache protoimpl.SizeCache 228 unknownFields protoimpl.UnknownFields 229 230 // Name of the builder. 231 // 232 // If a builder name, will be propagated to "builder" build tag and 233 // "buildername" recipe property. 234 // 235 // A builder name must be unique within the bucket, and match regex 236 // ^[a-zA-Z0-9\-_.\(\) ]{1,128}$. 237 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 238 // Backend for this builder. 239 // If unset, builds are scheduled using the legacy pipeline. 240 Backend *BuilderConfig_Backend `protobuf:"bytes,32,opt,name=backend,proto3" json:"backend,omitempty"` 241 // Alternate backend to use for this builder when the 242 // "luci.buildbucket.backend_alt" experiment is enabled. Works even when 243 // `backend` is empty. Useful for migrations to new backends. 244 BackendAlt *BuilderConfig_Backend `protobuf:"bytes,33,opt,name=backend_alt,json=backendAlt,proto3" json:"backend_alt,omitempty"` 245 // Hostname of the swarming instance, e.g. "chromium-swarm.appspot.com". 246 // Required, but defaults to deprecated Swarming.hostname. 247 SwarmingHost string `protobuf:"bytes,21,opt,name=swarming_host,json=swarmingHost,proto3" json:"swarming_host,omitempty"` 248 // Builder category. Will be used for visual grouping, for example in Code Review. 249 Category string `protobuf:"bytes,6,opt,name=category,proto3" json:"category,omitempty"` 250 // DEPRECATED. 251 // Used only to enable "vpython:native-python-wrapper" 252 // Does NOT actually propagate to swarming. 253 SwarmingTags []string `protobuf:"bytes,2,rep,name=swarming_tags,json=swarmingTags,proto3" json:"swarming_tags,omitempty"` 254 // A requirement for a bot to execute the build. 255 // 256 // Supports 2 forms: 257 // - "<key>:<value>" - require a bot with this dimension. 258 // This is a shortcut for "0:<key>:<value>", see below. 259 // - "<expiration_secs>:<key>:<value>" - wait for up to expiration_secs. 260 // for a bot with the dimension. 261 // Supports multiple values for different keys and expiration_secs. 262 // expiration_secs must be a multiple of 60. 263 // 264 // If this builder is defined in a bucket, dimension "pool" is defaulted 265 // to the name of the bucket. See Bucket message below. 266 Dimensions []string `protobuf:"bytes,3,rep,name=dimensions,proto3" json:"dimensions,omitempty"` 267 // Specifies that a recipe to run. 268 // DEPRECATED: use exe. 269 Recipe *BuilderConfig_Recipe `protobuf:"bytes,4,opt,name=recipe,proto3" json:"recipe,omitempty"` 270 // What to run when a build is ready to start. 271 Exe *Executable `protobuf:"bytes,23,opt,name=exe,proto3" json:"exe,omitempty"` 272 // A JSON object representing Build.input.properties. 273 // Individual object properties can be overridden with 274 // ScheduleBuildRequest.properties. 275 Properties string `protobuf:"bytes,24,opt,name=properties,proto3" json:"properties,omitempty"` 276 // A list of top-level property names which can be overridden in 277 // ScheduleBuildRequest. 278 // 279 // If this field is the EXACT value `["*"]` then all properties are permitted 280 // to be overridden. 281 // 282 // NOTE: Some executables (such as the recipe engine) can have drastic 283 // behavior differences based on some properties (for example, the "recipe" 284 // property). If you allow the "recipe" property to be overridden, then anyone 285 // with the 'buildbucket.builds.add' permission could create a Build for this 286 // Builder running a different recipe (from the same recipe repo). 287 AllowedPropertyOverrides []string `protobuf:"bytes,34,rep,name=allowed_property_overrides,json=allowedPropertyOverrides,proto3" json:"allowed_property_overrides,omitempty"` 288 // Swarming task priority. 289 // A value between 20 and 255, inclusive. 290 // Lower means more important. 291 // 292 // The default value is configured in 293 // https://chrome-internal.googlesource.com/infradata/config/+/master/configs/cr-buildbucket/swarming_task_template.json 294 // 295 // See also https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/User-Guide.md#request 296 Priority uint32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"` 297 // Maximum build execution time. 298 // 299 // Not to be confused with pending time. 300 // 301 // If the timeout is reached, the task will be signaled according to the 302 // `deadline` section of 303 // https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/client/LUCI_CONTEXT.md 304 // and status_details.timeout is set. 305 // 306 // The task will have `grace_period` amount of time to handle cleanup 307 // before being forcefully terminated. 308 // 309 // NOTE: This corresponds with Build.execution_timeout and 310 // ScheduleBuildRequest.execution_timeout; The name `execution_timeout_secs` and 311 // uint32 type are relics of the past. 312 ExecutionTimeoutSecs uint32 `protobuf:"varint,7,opt,name=execution_timeout_secs,json=executionTimeoutSecs,proto3" json:"execution_timeout_secs,omitempty"` 313 // Maximum amount of time to wait for the next heartbeat(i.e UpdateBuild). 314 // 315 // After a build is started, the client can send heartbeat requests 316 // periodically. Buildbucket will mark the build as INFRA_FAILURE, if the 317 // timeout threshold reaches. It’s to fail a build more quickly, rather than 318 // waiting for `execution_timeout_secs` to expire. Some V1 users, which don't 319 // have real task backends, can utilize this feature. 320 // 321 // By default, the value is 0, which means no timeout threshold is applied. 322 // 323 // Note: this field only takes effect for TaskBackendLite builds. For builds 324 // with full-featured TaskBackend Implementation, `sync_backend_tasks` cron 325 // job fulfills the similar functionality. 326 HeartbeatTimeoutSecs uint32 `protobuf:"varint,39,opt,name=heartbeat_timeout_secs,json=heartbeatTimeoutSecs,proto3" json:"heartbeat_timeout_secs,omitempty"` 327 // Maximum build pending time. 328 // 329 // If the timeout is reached, the build is marked as INFRA_FAILURE status 330 // and both status_details.{timeout, resource_exhaustion} are set. 331 // 332 // NOTE: This corresponds with Build.scheduling_timeout and 333 // ScheduleBuildRequest.scheduling_timeout; The name `expiration_secs` and 334 // uint32 type are relics of the past. 335 ExpirationSecs uint32 `protobuf:"varint,20,opt,name=expiration_secs,json=expirationSecs,proto3" json:"expiration_secs,omitempty"` 336 // Amount of cleanup time after execution_timeout_secs. 337 // 338 // After being signaled according to execution_timeout_secs, the task will 339 // have this many seconds to clean up before being forcefully terminated. 340 // 341 // The signalling process is explained in the `deadline` section of 342 // https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/client/LUCI_CONTEXT.md. 343 // 344 // Defaults to 30s if unspecified or 0. 345 GracePeriod *durationpb.Duration `protobuf:"bytes,31,opt,name=grace_period,json=gracePeriod,proto3" json:"grace_period,omitempty"` 346 // If YES, will request that swarming wait until it sees at least one bot 347 // report a superset of the requested dimensions. 348 // 349 // If UNSET/NO (the default), swarming will immediately reject a build which 350 // specifies a dimension set that it's never seen before. 351 // 352 // Usually you want this to be UNSET/NO, unless you know that some external 353 // system is working to add bots to swarming which will match the requested 354 // dimensions within expiration_secs. Otherwise you'll have to wait for all of 355 // `expiration_secs` until swarming tells you "Sorry, nothing has dimension 356 // `os:MadeUpOS`". 357 WaitForCapacity Trinary `protobuf:"varint,29,opt,name=wait_for_capacity,json=waitForCapacity,proto3,enum=buildbucket.v2.Trinary" json:"wait_for_capacity,omitempty"` 358 // Caches that should be present on the bot. 359 Caches []*BuilderConfig_CacheEntry `protobuf:"bytes,9,rep,name=caches,proto3" json:"caches,omitempty"` 360 // If YES, generate monotonically increasing contiguous numbers for each 361 // build, unique within the builder. 362 // Note: this limits the build creation rate in this builder to 5 per second. 363 BuildNumbers Toggle `protobuf:"varint,16,opt,name=build_numbers,json=buildNumbers,proto3,enum=buildbucket.Toggle" json:"build_numbers,omitempty"` 364 // Email of a service account to run the build as or literal 'bot' string to 365 // use Swarming bot's account (if available). Passed directly to Swarming. 366 // Subject to Swarming's ACLs. 367 ServiceAccount string `protobuf:"bytes,12,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` 368 // If YES, each builder will get extra dimension "builder:<builder name>" 369 // added. Default is UNSET. 370 // 371 // For example, this config 372 // 373 // builder { 374 // name: "linux-compiler" 375 // dimension: "builder:linux-compiler" 376 // } 377 // 378 // is equivalent to this: 379 // 380 // builders { 381 // name: "linux-compiler" 382 // auto_builder_dimension: YES 383 // } 384 // 385 // (see also http://docs.buildbot.net/0.8.9/manual/cfg-properties.html#interpolate) 386 // but are currently against complicating config with this. 387 AutoBuilderDimension Toggle `protobuf:"varint,17,opt,name=auto_builder_dimension,json=autoBuilderDimension,proto3,enum=buildbucket.Toggle" json:"auto_builder_dimension,omitempty"` 388 // DEPRECATED 389 // 390 // Set the "luci.non_production" experiment in the 'experiments' field below, 391 // instead. 392 // 393 // If YES, sets the "luci.non_production" experiment to 100% for 394 // builds on this builder. 395 // 396 // See the documentation on `experiments` for more details about the 397 // "luci.non_production" experiment. 398 Experimental Toggle `protobuf:"varint,18,opt,name=experimental,proto3,enum=buildbucket.Toggle" json:"experimental,omitempty"` 399 // DEPRECATED 400 // 401 // Set the "luci.buildbucket.canary_software" experiment in the 'experiments' 402 // field below, instead. 403 // 404 // Percentage of builds that should use a canary swarming task template. 405 // A value from 0 to 100. 406 // If omitted, a global server-defined default percentage is used. 407 TaskTemplateCanaryPercentage *wrapperspb.UInt32Value `protobuf:"bytes,22,opt,name=task_template_canary_percentage,json=taskTemplateCanaryPercentage,proto3" json:"task_template_canary_percentage,omitempty"` 408 // A mapping of experiment name to the percentage chance (0-100) that it will 409 // apply to builds generated from this builder. Experiments are simply strings 410 // which various parts of the stack (from LUCI services down to your build 411 // scripts) may react to in order to enable certain functionality. 412 // 413 // You may set any experiments you like, but experiments beginning with 414 // "luci." are reserved. Experiment names must conform to 415 // 416 // [a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)* 417 // 418 // Any experiments which are selected for a build show up in 419 // `Build.input.experiments`. 420 // 421 // Its recommended that you confine your experiments to smaller, more explicit 422 // targets. For example, prefer the experiment named 423 // "my_project.use_mysoftware_v2_crbug_999999" rather than "use_next_gen". 424 // 425 // It is NOT recommended to 'piggy-back' on top of existing experiment names 426 // for a different purpose. However if you want to, you can have your build 427 // treat the presence of ANY experiment as equivalent to "luci.non_production" 428 // being set for your build (i.e. "if any experiment is set, don't affect 429 // production"). This is ulimately up to you, however. 430 // 431 // # Well-known experiments 432 // 433 // Buildbucket has a number of 'global' experiments which are in various 434 // states of deployment at any given time. For the current state, see 435 // go/buildbucket-settings.cfg. 436 Experiments map[string]int32 `protobuf:"bytes,28,rep,name=experiments,proto3" json:"experiments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` 437 // This field will set the default value of the "critical" field of 438 // all the builds of this builder. Please refer to build.proto for 439 // the meaning of this field. 440 // 441 // This value can be overridden by ScheduleBuildRequest.critical 442 Critical Trinary `protobuf:"varint,25,opt,name=critical,proto3,enum=buildbucket.v2.Trinary" json:"critical,omitempty"` 443 // Used to enable and configure ResultDB integration. 444 Resultdb *BuilderConfig_ResultDB `protobuf:"bytes,26,opt,name=resultdb,proto3" json:"resultdb,omitempty"` 445 // Description that helps users understand the purpose of the builder, in 446 // HTML. 447 DescriptionHtml string `protobuf:"bytes,30,opt,name=description_html,json=descriptionHtml,proto3" json:"description_html,omitempty"` 448 ShadowBuilderAdjustments *BuilderConfig_ShadowBuilderAdjustments `protobuf:"bytes,35,opt,name=shadow_builder_adjustments,json=shadowBuilderAdjustments,proto3" json:"shadow_builder_adjustments,omitempty"` 449 // This field will set the default value of the "retriable" field of 450 // all the builds of this builder. Please refer to build.proto for 451 // the meaning of this field. 452 // 453 // This value can be overridden by ScheduleBuildRequest.retriable 454 Retriable Trinary `protobuf:"varint,36,opt,name=retriable,proto3,enum=buildbucket.v2.Trinary" json:"retriable,omitempty"` 455 BuilderHealthMetricsLinks *BuilderConfig_BuilderHealthLinks `protobuf:"bytes,37,opt,name=builder_health_metrics_links,json=builderHealthMetricsLinks,proto3" json:"builder_health_metrics_links,omitempty"` 456 // The owning team's contact email. This team is responsible for fixing 457 // any builder health issues (see Builder.Metadata.HealthSpec). 458 // Will be validated as an email address, but nothing else. 459 // It will display on milo and could be public facing, so please don't put anything sensitive. 460 ContactTeamEmail string `protobuf:"bytes,38,opt,name=contact_team_email,json=contactTeamEmail,proto3" json:"contact_team_email,omitempty"` 461 } 462 463 func (x *BuilderConfig) Reset() { 464 *x = BuilderConfig{} 465 if protoimpl.UnsafeEnabled { 466 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1] 467 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 468 ms.StoreMessageInfo(mi) 469 } 470 } 471 472 func (x *BuilderConfig) String() string { 473 return protoimpl.X.MessageStringOf(x) 474 } 475 476 func (*BuilderConfig) ProtoMessage() {} 477 478 func (x *BuilderConfig) ProtoReflect() protoreflect.Message { 479 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1] 480 if protoimpl.UnsafeEnabled && x != nil { 481 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 482 if ms.LoadMessageInfo() == nil { 483 ms.StoreMessageInfo(mi) 484 } 485 return ms 486 } 487 return mi.MessageOf(x) 488 } 489 490 // Deprecated: Use BuilderConfig.ProtoReflect.Descriptor instead. 491 func (*BuilderConfig) Descriptor() ([]byte, []int) { 492 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1} 493 } 494 495 func (x *BuilderConfig) GetName() string { 496 if x != nil { 497 return x.Name 498 } 499 return "" 500 } 501 502 func (x *BuilderConfig) GetBackend() *BuilderConfig_Backend { 503 if x != nil { 504 return x.Backend 505 } 506 return nil 507 } 508 509 func (x *BuilderConfig) GetBackendAlt() *BuilderConfig_Backend { 510 if x != nil { 511 return x.BackendAlt 512 } 513 return nil 514 } 515 516 func (x *BuilderConfig) GetSwarmingHost() string { 517 if x != nil { 518 return x.SwarmingHost 519 } 520 return "" 521 } 522 523 func (x *BuilderConfig) GetCategory() string { 524 if x != nil { 525 return x.Category 526 } 527 return "" 528 } 529 530 func (x *BuilderConfig) GetSwarmingTags() []string { 531 if x != nil { 532 return x.SwarmingTags 533 } 534 return nil 535 } 536 537 func (x *BuilderConfig) GetDimensions() []string { 538 if x != nil { 539 return x.Dimensions 540 } 541 return nil 542 } 543 544 func (x *BuilderConfig) GetRecipe() *BuilderConfig_Recipe { 545 if x != nil { 546 return x.Recipe 547 } 548 return nil 549 } 550 551 func (x *BuilderConfig) GetExe() *Executable { 552 if x != nil { 553 return x.Exe 554 } 555 return nil 556 } 557 558 func (x *BuilderConfig) GetProperties() string { 559 if x != nil { 560 return x.Properties 561 } 562 return "" 563 } 564 565 func (x *BuilderConfig) GetAllowedPropertyOverrides() []string { 566 if x != nil { 567 return x.AllowedPropertyOverrides 568 } 569 return nil 570 } 571 572 func (x *BuilderConfig) GetPriority() uint32 { 573 if x != nil { 574 return x.Priority 575 } 576 return 0 577 } 578 579 func (x *BuilderConfig) GetExecutionTimeoutSecs() uint32 { 580 if x != nil { 581 return x.ExecutionTimeoutSecs 582 } 583 return 0 584 } 585 586 func (x *BuilderConfig) GetHeartbeatTimeoutSecs() uint32 { 587 if x != nil { 588 return x.HeartbeatTimeoutSecs 589 } 590 return 0 591 } 592 593 func (x *BuilderConfig) GetExpirationSecs() uint32 { 594 if x != nil { 595 return x.ExpirationSecs 596 } 597 return 0 598 } 599 600 func (x *BuilderConfig) GetGracePeriod() *durationpb.Duration { 601 if x != nil { 602 return x.GracePeriod 603 } 604 return nil 605 } 606 607 func (x *BuilderConfig) GetWaitForCapacity() Trinary { 608 if x != nil { 609 return x.WaitForCapacity 610 } 611 return Trinary_UNSET 612 } 613 614 func (x *BuilderConfig) GetCaches() []*BuilderConfig_CacheEntry { 615 if x != nil { 616 return x.Caches 617 } 618 return nil 619 } 620 621 func (x *BuilderConfig) GetBuildNumbers() Toggle { 622 if x != nil { 623 return x.BuildNumbers 624 } 625 return Toggle_UNSET 626 } 627 628 func (x *BuilderConfig) GetServiceAccount() string { 629 if x != nil { 630 return x.ServiceAccount 631 } 632 return "" 633 } 634 635 func (x *BuilderConfig) GetAutoBuilderDimension() Toggle { 636 if x != nil { 637 return x.AutoBuilderDimension 638 } 639 return Toggle_UNSET 640 } 641 642 func (x *BuilderConfig) GetExperimental() Toggle { 643 if x != nil { 644 return x.Experimental 645 } 646 return Toggle_UNSET 647 } 648 649 func (x *BuilderConfig) GetTaskTemplateCanaryPercentage() *wrapperspb.UInt32Value { 650 if x != nil { 651 return x.TaskTemplateCanaryPercentage 652 } 653 return nil 654 } 655 656 func (x *BuilderConfig) GetExperiments() map[string]int32 { 657 if x != nil { 658 return x.Experiments 659 } 660 return nil 661 } 662 663 func (x *BuilderConfig) GetCritical() Trinary { 664 if x != nil { 665 return x.Critical 666 } 667 return Trinary_UNSET 668 } 669 670 func (x *BuilderConfig) GetResultdb() *BuilderConfig_ResultDB { 671 if x != nil { 672 return x.Resultdb 673 } 674 return nil 675 } 676 677 func (x *BuilderConfig) GetDescriptionHtml() string { 678 if x != nil { 679 return x.DescriptionHtml 680 } 681 return "" 682 } 683 684 func (x *BuilderConfig) GetShadowBuilderAdjustments() *BuilderConfig_ShadowBuilderAdjustments { 685 if x != nil { 686 return x.ShadowBuilderAdjustments 687 } 688 return nil 689 } 690 691 func (x *BuilderConfig) GetRetriable() Trinary { 692 if x != nil { 693 return x.Retriable 694 } 695 return Trinary_UNSET 696 } 697 698 func (x *BuilderConfig) GetBuilderHealthMetricsLinks() *BuilderConfig_BuilderHealthLinks { 699 if x != nil { 700 return x.BuilderHealthMetricsLinks 701 } 702 return nil 703 } 704 705 func (x *BuilderConfig) GetContactTeamEmail() string { 706 if x != nil { 707 return x.ContactTeamEmail 708 } 709 return "" 710 } 711 712 // Configuration of buildbucket-swarming integration for one bucket. 713 type Swarming struct { 714 state protoimpl.MessageState 715 sizeCache protoimpl.SizeCache 716 unknownFields protoimpl.UnknownFields 717 718 // Configuration for each builder. 719 // Swarming tasks are created only for builds for builders that are not 720 // explicitly specified. 721 Builders []*BuilderConfig `protobuf:"bytes,4,rep,name=builders,proto3" json:"builders,omitempty"` 722 // DEPRECATED. Use builder_defaults.task_template_canary_percentage instead. 723 // Setting this field sets builder_defaults.task_template_canary_percentage. 724 TaskTemplateCanaryPercentage *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=task_template_canary_percentage,json=taskTemplateCanaryPercentage,proto3" json:"task_template_canary_percentage,omitempty"` 725 } 726 727 func (x *Swarming) Reset() { 728 *x = Swarming{} 729 if protoimpl.UnsafeEnabled { 730 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2] 731 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 732 ms.StoreMessageInfo(mi) 733 } 734 } 735 736 func (x *Swarming) String() string { 737 return protoimpl.X.MessageStringOf(x) 738 } 739 740 func (*Swarming) ProtoMessage() {} 741 742 func (x *Swarming) ProtoReflect() protoreflect.Message { 743 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2] 744 if protoimpl.UnsafeEnabled && x != nil { 745 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 746 if ms.LoadMessageInfo() == nil { 747 ms.StoreMessageInfo(mi) 748 } 749 return ms 750 } 751 return mi.MessageOf(x) 752 } 753 754 // Deprecated: Use Swarming.ProtoReflect.Descriptor instead. 755 func (*Swarming) Descriptor() ([]byte, []int) { 756 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{2} 757 } 758 759 func (x *Swarming) GetBuilders() []*BuilderConfig { 760 if x != nil { 761 return x.Builders 762 } 763 return nil 764 } 765 766 func (x *Swarming) GetTaskTemplateCanaryPercentage() *wrapperspb.UInt32Value { 767 if x != nil { 768 return x.TaskTemplateCanaryPercentage 769 } 770 return nil 771 } 772 773 // Defines one bucket in buildbucket.cfg 774 type Bucket struct { 775 state protoimpl.MessageState 776 sizeCache protoimpl.SizeCache 777 unknownFields protoimpl.UnknownFields 778 779 // Name of the bucket. Names are unique within one instance of buildbucket. 780 // If another project already uses this name, a config will be rejected. 781 // Name reservation is first-come first-serve. 782 // Regex: ^[a-z0-9\-_.]{1,100}$ 783 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 784 // Deprecated and ignored. Use Realms ACLs instead. 785 // 786 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 787 Acls []*Acl `protobuf:"bytes,2,rep,name=acls,proto3" json:"acls,omitempty"` 788 // Buildbucket-swarming integration. 789 // Mutually exclusive with builder_template. 790 Swarming *Swarming `protobuf:"bytes,3,opt,name=swarming,proto3" json:"swarming,omitempty"` 791 // Name of this bucket's shadow bucket for the led builds to use. 792 // 793 // If omitted, it implies that led builds of this bucket reuse this bucket. 794 // This is allowed, but note that it means the led builds will be in 795 // the same bucket/builder with the real builds, which means Any users with 796 // led access will be able to do ANYTHING that this bucket's bots and 797 // service_accounts can do. 798 // 799 // It could also be noisy, such as: 800 // - On the LUCI UI, led builds will show under the same builder as the real builds, 801 // - Led builds will share the same ResultDB config as the real builds, so 802 // their test results will be exported to the same BigQuery tables. 803 // - Subscribers of Buildbucket PubSub need to filter them out. 804 // 805 // Note: Don't set it if it's a dynamic bucket. Currently, a dynamic bucket is 806 // not allowed to have a shadow bucket. 807 Shadow string `protobuf:"bytes,5,opt,name=shadow,proto3" json:"shadow,omitempty"` 808 // Security constraints of the bucket. 809 // 810 // This field is used by CreateBuild on this bucket to constrain proposed 811 // Builds. If a build doesn't meet the constraints, it will be rejected. 812 // For shadow buckets, this is what prevents the bucket from allowing 813 // totally arbitrary Builds. 814 // 815 // `lucicfg` will automatically populate this for the "primary" bucket 816 // when using `luci.builder`. 817 // 818 // Buildbuceket.CreateBuild will validate the incoming requests to make sure 819 // they meet these constraints. 820 Constraints *Bucket_Constraints `protobuf:"bytes,6,opt,name=constraints,proto3" json:"constraints,omitempty"` 821 // Template of builders in a dynamic bucket. 822 // Mutually exclusive with swarming. 823 // 824 // If is not nil, the bucket is a dynamic LUCI bucket. 825 // If a bucket has both swarming and dynamic_builder_template as nil, 826 // the bucket is a legacy one. 827 DynamicBuilderTemplate *Bucket_DynamicBuilderTemplate `protobuf:"bytes,7,opt,name=dynamic_builder_template,json=dynamicBuilderTemplate,proto3" json:"dynamic_builder_template,omitempty"` 828 } 829 830 func (x *Bucket) Reset() { 831 *x = Bucket{} 832 if protoimpl.UnsafeEnabled { 833 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3] 834 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 835 ms.StoreMessageInfo(mi) 836 } 837 } 838 839 func (x *Bucket) String() string { 840 return protoimpl.X.MessageStringOf(x) 841 } 842 843 func (*Bucket) ProtoMessage() {} 844 845 func (x *Bucket) ProtoReflect() protoreflect.Message { 846 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3] 847 if protoimpl.UnsafeEnabled && x != nil { 848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 849 if ms.LoadMessageInfo() == nil { 850 ms.StoreMessageInfo(mi) 851 } 852 return ms 853 } 854 return mi.MessageOf(x) 855 } 856 857 // Deprecated: Use Bucket.ProtoReflect.Descriptor instead. 858 func (*Bucket) Descriptor() ([]byte, []int) { 859 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{3} 860 } 861 862 func (x *Bucket) GetName() string { 863 if x != nil { 864 return x.Name 865 } 866 return "" 867 } 868 869 // Deprecated: Marked as deprecated in go.chromium.org/luci/buildbucket/proto/project_config.proto. 870 func (x *Bucket) GetAcls() []*Acl { 871 if x != nil { 872 return x.Acls 873 } 874 return nil 875 } 876 877 func (x *Bucket) GetSwarming() *Swarming { 878 if x != nil { 879 return x.Swarming 880 } 881 return nil 882 } 883 884 func (x *Bucket) GetShadow() string { 885 if x != nil { 886 return x.Shadow 887 } 888 return "" 889 } 890 891 func (x *Bucket) GetConstraints() *Bucket_Constraints { 892 if x != nil { 893 return x.Constraints 894 } 895 return nil 896 } 897 898 func (x *Bucket) GetDynamicBuilderTemplate() *Bucket_DynamicBuilderTemplate { 899 if x != nil { 900 return x.DynamicBuilderTemplate 901 } 902 return nil 903 } 904 905 // Schema of buildbucket.cfg file, a project config. 906 type BuildbucketCfg struct { 907 state protoimpl.MessageState 908 sizeCache protoimpl.SizeCache 909 unknownFields protoimpl.UnknownFields 910 911 // All buckets defined for this project. 912 Buckets []*Bucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"` 913 // Global configs are shared among all buckets and builders defined inside 914 // this project. 915 CommonConfig *BuildbucketCfg_CommonConfig `protobuf:"bytes,5,opt,name=common_config,json=commonConfig,proto3" json:"common_config,omitempty"` 916 } 917 918 func (x *BuildbucketCfg) Reset() { 919 *x = BuildbucketCfg{} 920 if protoimpl.UnsafeEnabled { 921 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4] 922 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 923 ms.StoreMessageInfo(mi) 924 } 925 } 926 927 func (x *BuildbucketCfg) String() string { 928 return protoimpl.X.MessageStringOf(x) 929 } 930 931 func (*BuildbucketCfg) ProtoMessage() {} 932 933 func (x *BuildbucketCfg) ProtoReflect() protoreflect.Message { 934 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4] 935 if protoimpl.UnsafeEnabled && x != nil { 936 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 937 if ms.LoadMessageInfo() == nil { 938 ms.StoreMessageInfo(mi) 939 } 940 return ms 941 } 942 return mi.MessageOf(x) 943 } 944 945 // Deprecated: Use BuildbucketCfg.ProtoReflect.Descriptor instead. 946 func (*BuildbucketCfg) Descriptor() ([]byte, []int) { 947 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{4} 948 } 949 950 func (x *BuildbucketCfg) GetBuckets() []*Bucket { 951 if x != nil { 952 return x.Buckets 953 } 954 return nil 955 } 956 957 func (x *BuildbucketCfg) GetCommonConfig() *BuildbucketCfg_CommonConfig { 958 if x != nil { 959 return x.CommonConfig 960 } 961 return nil 962 } 963 964 // Describes a cache directory persisted on a bot. 965 // Prerequisite reading in BuildInfra.Swarming.CacheEntry message in 966 // build.proto. 967 // 968 // To share a builder cache among multiple builders, it can be overridden: 969 // 970 // builders { 971 // name: "a" 972 // caches { 973 // path: "builder" 974 // name: "my_shared_cache" 975 // } 976 // } 977 // builders { 978 // name: "b" 979 // caches { 980 // path: "builder" 981 // name: "my_shared_cache" 982 // } 983 // } 984 // 985 // Builders "a" and "b" share their builder cache. If an "a" build ran on a 986 // bot and left some files in the builder cache and then a "b" build runs on 987 // the same bot, the same files will be available in the builder cache. 988 type BuilderConfig_CacheEntry struct { 989 state protoimpl.MessageState 990 sizeCache protoimpl.SizeCache 991 unknownFields protoimpl.UnknownFields 992 993 // Identifier of the cache. Length is limited to 128. 994 // Defaults to path. 995 // See also BuildInfra.Swarming.CacheEntry.name in build.proto. 996 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 997 // Relative path where the cache in mapped into. Required. 998 // See also BuildInfra.Swarming.CacheEntry.path in build.proto. 999 Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` 1000 // Number of seconds to wait for a bot with a warm cache to pick up the 1001 // task, before falling back to a bot with a cold (non-existent) cache. 1002 // See also BuildInfra.Swarming.CacheEntry.wait_for_warm_cache in build.proto. 1003 // The value must be multiples of 60 seconds. 1004 WaitForWarmCacheSecs int32 `protobuf:"varint,3,opt,name=wait_for_warm_cache_secs,json=waitForWarmCacheSecs,proto3" json:"wait_for_warm_cache_secs,omitempty"` 1005 // Environment variable with this name will be set to the path to the cache 1006 // directory. 1007 EnvVar string `protobuf:"bytes,4,opt,name=env_var,json=envVar,proto3" json:"env_var,omitempty"` 1008 } 1009 1010 func (x *BuilderConfig_CacheEntry) Reset() { 1011 *x = BuilderConfig_CacheEntry{} 1012 if protoimpl.UnsafeEnabled { 1013 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5] 1014 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1015 ms.StoreMessageInfo(mi) 1016 } 1017 } 1018 1019 func (x *BuilderConfig_CacheEntry) String() string { 1020 return protoimpl.X.MessageStringOf(x) 1021 } 1022 1023 func (*BuilderConfig_CacheEntry) ProtoMessage() {} 1024 1025 func (x *BuilderConfig_CacheEntry) ProtoReflect() protoreflect.Message { 1026 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5] 1027 if protoimpl.UnsafeEnabled && x != nil { 1028 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1029 if ms.LoadMessageInfo() == nil { 1030 ms.StoreMessageInfo(mi) 1031 } 1032 return ms 1033 } 1034 return mi.MessageOf(x) 1035 } 1036 1037 // Deprecated: Use BuilderConfig_CacheEntry.ProtoReflect.Descriptor instead. 1038 func (*BuilderConfig_CacheEntry) Descriptor() ([]byte, []int) { 1039 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 0} 1040 } 1041 1042 func (x *BuilderConfig_CacheEntry) GetName() string { 1043 if x != nil { 1044 return x.Name 1045 } 1046 return "" 1047 } 1048 1049 func (x *BuilderConfig_CacheEntry) GetPath() string { 1050 if x != nil { 1051 return x.Path 1052 } 1053 return "" 1054 } 1055 1056 func (x *BuilderConfig_CacheEntry) GetWaitForWarmCacheSecs() int32 { 1057 if x != nil { 1058 return x.WaitForWarmCacheSecs 1059 } 1060 return 0 1061 } 1062 1063 func (x *BuilderConfig_CacheEntry) GetEnvVar() string { 1064 if x != nil { 1065 return x.EnvVar 1066 } 1067 return "" 1068 } 1069 1070 // DEPRECATED. See BuilderConfig.executable and BuilderConfig.properties 1071 // 1072 // To specify a recipe name, pass "$recipe_engine" property which is a JSON 1073 // object having "recipe" property. 1074 type BuilderConfig_Recipe struct { 1075 state protoimpl.MessageState 1076 sizeCache protoimpl.SizeCache 1077 unknownFields protoimpl.UnknownFields 1078 1079 // Name of the recipe to run. 1080 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` 1081 // The CIPD package to fetch the recipes from. 1082 // 1083 // Typically the package will look like: 1084 // 1085 // infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build 1086 // 1087 // Recipes bundled from internal repositories are typically under 1088 // `infra_internal/recipe_bundles/...`. 1089 // 1090 // But if you're building your own recipe bundles, they could be located 1091 // elsewhere. 1092 CipdPackage string `protobuf:"bytes,6,opt,name=cipd_package,json=cipdPackage,proto3" json:"cipd_package,omitempty"` 1093 // The CIPD version to fetch. This can be a lower-cased git ref (like 1094 // `refs/heads/main` or `head`), or it can be a cipd tag (like 1095 // `git_revision:dead...beef`). 1096 // 1097 // The default is `head`, which corresponds to the git repo's HEAD ref. This 1098 // is typically (but not always) a symbolic ref for `refs/heads/master`. 1099 CipdVersion string `protobuf:"bytes,5,opt,name=cipd_version,json=cipdVersion,proto3" json:"cipd_version,omitempty"` 1100 // Colon-separated build properties to set. 1101 // Ignored if BuilderConfig.properties is set. 1102 // 1103 // Use this field for string properties and use properties_j for other 1104 // types. 1105 Properties []string `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty"` 1106 // Same as properties, but the value must valid JSON. For example 1107 // 1108 // properties_j: "a:1" 1109 // 1110 // means property a is a number 1, not string "1". 1111 // 1112 // If null, it means no property must be defined. In particular, it removes 1113 // a default value for the property, if any. 1114 // 1115 // Fields properties and properties_j can be used together, but cannot both 1116 // specify values for same property. 1117 PropertiesJ []string `protobuf:"bytes,4,rep,name=properties_j,json=propertiesJ,proto3" json:"properties_j,omitempty"` 1118 } 1119 1120 func (x *BuilderConfig_Recipe) Reset() { 1121 *x = BuilderConfig_Recipe{} 1122 if protoimpl.UnsafeEnabled { 1123 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6] 1124 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1125 ms.StoreMessageInfo(mi) 1126 } 1127 } 1128 1129 func (x *BuilderConfig_Recipe) String() string { 1130 return protoimpl.X.MessageStringOf(x) 1131 } 1132 1133 func (*BuilderConfig_Recipe) ProtoMessage() {} 1134 1135 func (x *BuilderConfig_Recipe) ProtoReflect() protoreflect.Message { 1136 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6] 1137 if protoimpl.UnsafeEnabled && x != nil { 1138 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1139 if ms.LoadMessageInfo() == nil { 1140 ms.StoreMessageInfo(mi) 1141 } 1142 return ms 1143 } 1144 return mi.MessageOf(x) 1145 } 1146 1147 // Deprecated: Use BuilderConfig_Recipe.ProtoReflect.Descriptor instead. 1148 func (*BuilderConfig_Recipe) Descriptor() ([]byte, []int) { 1149 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 1} 1150 } 1151 1152 func (x *BuilderConfig_Recipe) GetName() string { 1153 if x != nil { 1154 return x.Name 1155 } 1156 return "" 1157 } 1158 1159 func (x *BuilderConfig_Recipe) GetCipdPackage() string { 1160 if x != nil { 1161 return x.CipdPackage 1162 } 1163 return "" 1164 } 1165 1166 func (x *BuilderConfig_Recipe) GetCipdVersion() string { 1167 if x != nil { 1168 return x.CipdVersion 1169 } 1170 return "" 1171 } 1172 1173 func (x *BuilderConfig_Recipe) GetProperties() []string { 1174 if x != nil { 1175 return x.Properties 1176 } 1177 return nil 1178 } 1179 1180 func (x *BuilderConfig_Recipe) GetPropertiesJ() []string { 1181 if x != nil { 1182 return x.PropertiesJ 1183 } 1184 return nil 1185 } 1186 1187 // ResultDB-specific information for a builder. 1188 type BuilderConfig_ResultDB struct { 1189 state protoimpl.MessageState 1190 sizeCache protoimpl.SizeCache 1191 unknownFields protoimpl.UnknownFields 1192 1193 // Whether to enable ResultDB:Buildbucket integration. 1194 Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` 1195 // Configuration for exporting test results to BigQuery. 1196 // This can have multiple values to export results to multiple BigQuery 1197 // tables, or to support multiple test result predicates. 1198 BqExports []*v1.BigQueryExport `protobuf:"bytes,2,rep,name=bq_exports,json=bqExports,proto3" json:"bq_exports,omitempty"` 1199 // Deprecated. Any values specified here are ignored. 1200 HistoryOptions *v1.HistoryOptions `protobuf:"bytes,3,opt,name=history_options,json=historyOptions,proto3" json:"history_options,omitempty"` 1201 } 1202 1203 func (x *BuilderConfig_ResultDB) Reset() { 1204 *x = BuilderConfig_ResultDB{} 1205 if protoimpl.UnsafeEnabled { 1206 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7] 1207 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1208 ms.StoreMessageInfo(mi) 1209 } 1210 } 1211 1212 func (x *BuilderConfig_ResultDB) String() string { 1213 return protoimpl.X.MessageStringOf(x) 1214 } 1215 1216 func (*BuilderConfig_ResultDB) ProtoMessage() {} 1217 1218 func (x *BuilderConfig_ResultDB) ProtoReflect() protoreflect.Message { 1219 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7] 1220 if protoimpl.UnsafeEnabled && x != nil { 1221 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1222 if ms.LoadMessageInfo() == nil { 1223 ms.StoreMessageInfo(mi) 1224 } 1225 return ms 1226 } 1227 return mi.MessageOf(x) 1228 } 1229 1230 // Deprecated: Use BuilderConfig_ResultDB.ProtoReflect.Descriptor instead. 1231 func (*BuilderConfig_ResultDB) Descriptor() ([]byte, []int) { 1232 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 2} 1233 } 1234 1235 func (x *BuilderConfig_ResultDB) GetEnable() bool { 1236 if x != nil { 1237 return x.Enable 1238 } 1239 return false 1240 } 1241 1242 func (x *BuilderConfig_ResultDB) GetBqExports() []*v1.BigQueryExport { 1243 if x != nil { 1244 return x.BqExports 1245 } 1246 return nil 1247 } 1248 1249 func (x *BuilderConfig_ResultDB) GetHistoryOptions() *v1.HistoryOptions { 1250 if x != nil { 1251 return x.HistoryOptions 1252 } 1253 return nil 1254 } 1255 1256 // Buildbucket backend-specific information for a builder. 1257 type BuilderConfig_Backend struct { 1258 state protoimpl.MessageState 1259 sizeCache protoimpl.SizeCache 1260 unknownFields protoimpl.UnknownFields 1261 1262 // URI for this backend, e.g. "swarming://chromium-swarm". 1263 Target string `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` 1264 // A string interpreted as JSON encapsulating configuration for this 1265 // backend. 1266 // TODO(crbug.com/1042991): Move priority, wait_for_capacity, etc. here. 1267 ConfigJson string `protobuf:"bytes,2,opt,name=config_json,json=configJson,proto3" json:"config_json,omitempty"` 1268 } 1269 1270 func (x *BuilderConfig_Backend) Reset() { 1271 *x = BuilderConfig_Backend{} 1272 if protoimpl.UnsafeEnabled { 1273 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8] 1274 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1275 ms.StoreMessageInfo(mi) 1276 } 1277 } 1278 1279 func (x *BuilderConfig_Backend) String() string { 1280 return protoimpl.X.MessageStringOf(x) 1281 } 1282 1283 func (*BuilderConfig_Backend) ProtoMessage() {} 1284 1285 func (x *BuilderConfig_Backend) ProtoReflect() protoreflect.Message { 1286 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8] 1287 if protoimpl.UnsafeEnabled && x != nil { 1288 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1289 if ms.LoadMessageInfo() == nil { 1290 ms.StoreMessageInfo(mi) 1291 } 1292 return ms 1293 } 1294 return mi.MessageOf(x) 1295 } 1296 1297 // Deprecated: Use BuilderConfig_Backend.ProtoReflect.Descriptor instead. 1298 func (*BuilderConfig_Backend) Descriptor() ([]byte, []int) { 1299 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 3} 1300 } 1301 1302 func (x *BuilderConfig_Backend) GetTarget() string { 1303 if x != nil { 1304 return x.Target 1305 } 1306 return "" 1307 } 1308 1309 func (x *BuilderConfig_Backend) GetConfigJson() string { 1310 if x != nil { 1311 return x.ConfigJson 1312 } 1313 return "" 1314 } 1315 1316 // Configurations that need to be replaced when running a led build for this 1317 // Builder. 1318 // 1319 // Note: Builders in a dynamic bucket cannot have ShadowBuilderAdjustments. 1320 type BuilderConfig_ShadowBuilderAdjustments struct { 1321 state protoimpl.MessageState 1322 sizeCache protoimpl.SizeCache 1323 unknownFields protoimpl.UnknownFields 1324 1325 ServiceAccount string `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` 1326 Pool string `protobuf:"bytes,2,opt,name=pool,proto3" json:"pool,omitempty"` 1327 // A JSON object contains properties to override Build.input.properties 1328 // when creating the led build. 1329 // Same as ScheduleBuild, the top-level properties here will override the 1330 // ones in builder config, instead of deep merge. 1331 Properties string `protobuf:"bytes,3,opt,name=properties,proto3" json:"properties,omitempty"` 1332 // Overrides default dimensions defined by builder config. 1333 // Same as ScheduleBuild, 1334 // * dimensions with empty value will be excluded. 1335 // * same key dimensions with both empty and non-empty values are disallowed. 1336 // 1337 // Note: for historical reason, pool can be adjusted individually. 1338 // If pool is adjusted individually, the same change should be reflected in 1339 // dimensions, and vice versa. 1340 Dimensions []string `protobuf:"bytes,4,rep,name=dimensions,proto3" json:"dimensions,omitempty"` 1341 } 1342 1343 func (x *BuilderConfig_ShadowBuilderAdjustments) Reset() { 1344 *x = BuilderConfig_ShadowBuilderAdjustments{} 1345 if protoimpl.UnsafeEnabled { 1346 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[10] 1347 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1348 ms.StoreMessageInfo(mi) 1349 } 1350 } 1351 1352 func (x *BuilderConfig_ShadowBuilderAdjustments) String() string { 1353 return protoimpl.X.MessageStringOf(x) 1354 } 1355 1356 func (*BuilderConfig_ShadowBuilderAdjustments) ProtoMessage() {} 1357 1358 func (x *BuilderConfig_ShadowBuilderAdjustments) ProtoReflect() protoreflect.Message { 1359 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[10] 1360 if protoimpl.UnsafeEnabled && x != nil { 1361 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1362 if ms.LoadMessageInfo() == nil { 1363 ms.StoreMessageInfo(mi) 1364 } 1365 return ms 1366 } 1367 return mi.MessageOf(x) 1368 } 1369 1370 // Deprecated: Use BuilderConfig_ShadowBuilderAdjustments.ProtoReflect.Descriptor instead. 1371 func (*BuilderConfig_ShadowBuilderAdjustments) Descriptor() ([]byte, []int) { 1372 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 5} 1373 } 1374 1375 func (x *BuilderConfig_ShadowBuilderAdjustments) GetServiceAccount() string { 1376 if x != nil { 1377 return x.ServiceAccount 1378 } 1379 return "" 1380 } 1381 1382 func (x *BuilderConfig_ShadowBuilderAdjustments) GetPool() string { 1383 if x != nil { 1384 return x.Pool 1385 } 1386 return "" 1387 } 1388 1389 func (x *BuilderConfig_ShadowBuilderAdjustments) GetProperties() string { 1390 if x != nil { 1391 return x.Properties 1392 } 1393 return "" 1394 } 1395 1396 func (x *BuilderConfig_ShadowBuilderAdjustments) GetDimensions() []string { 1397 if x != nil { 1398 return x.Dimensions 1399 } 1400 return nil 1401 } 1402 1403 type BuilderConfig_BuilderHealthLinks struct { 1404 state protoimpl.MessageState 1405 sizeCache protoimpl.SizeCache 1406 unknownFields protoimpl.UnknownFields 1407 1408 // Mapping of username domain to clickable link for documentation on the health 1409 // metrics and how they were calculated. 1410 // 1411 // The empty domain value will be used as a fallback for anonymous users, or 1412 // if the user identity domain doesn't have a matching entry in this map. 1413 // 1414 // If linking an internal google link (say g3doc), use a go-link instead of a 1415 // raw url. 1416 DocLinks map[string]string `protobuf:"bytes,1,rep,name=doc_links,json=docLinks,proto3" json:"doc_links,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1417 // Mapping of username domain to clickable link for data visualization or 1418 // dashboards for the health metrics. 1419 // 1420 // Similar to doc_links, the empty domain value will be used as a fallback for 1421 // anonymous users, or if the user identity domain doesn't have a matching 1422 // entry in this map. 1423 // 1424 // If linking an internal google link (say g3doc), use a go-link instead of a 1425 // raw url. 1426 DataLinks map[string]string `protobuf:"bytes,2,rep,name=data_links,json=dataLinks,proto3" json:"data_links,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1427 } 1428 1429 func (x *BuilderConfig_BuilderHealthLinks) Reset() { 1430 *x = BuilderConfig_BuilderHealthLinks{} 1431 if protoimpl.UnsafeEnabled { 1432 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[11] 1433 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1434 ms.StoreMessageInfo(mi) 1435 } 1436 } 1437 1438 func (x *BuilderConfig_BuilderHealthLinks) String() string { 1439 return protoimpl.X.MessageStringOf(x) 1440 } 1441 1442 func (*BuilderConfig_BuilderHealthLinks) ProtoMessage() {} 1443 1444 func (x *BuilderConfig_BuilderHealthLinks) ProtoReflect() protoreflect.Message { 1445 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[11] 1446 if protoimpl.UnsafeEnabled && x != nil { 1447 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1448 if ms.LoadMessageInfo() == nil { 1449 ms.StoreMessageInfo(mi) 1450 } 1451 return ms 1452 } 1453 return mi.MessageOf(x) 1454 } 1455 1456 // Deprecated: Use BuilderConfig_BuilderHealthLinks.ProtoReflect.Descriptor instead. 1457 func (*BuilderConfig_BuilderHealthLinks) Descriptor() ([]byte, []int) { 1458 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1, 6} 1459 } 1460 1461 func (x *BuilderConfig_BuilderHealthLinks) GetDocLinks() map[string]string { 1462 if x != nil { 1463 return x.DocLinks 1464 } 1465 return nil 1466 } 1467 1468 func (x *BuilderConfig_BuilderHealthLinks) GetDataLinks() map[string]string { 1469 if x != nil { 1470 return x.DataLinks 1471 } 1472 return nil 1473 } 1474 1475 // Constraints for a bucket. 1476 // 1477 // Buildbucket.CreateBuild will validate the incoming requests to make sure 1478 // they meet these constraints. 1479 type Bucket_Constraints struct { 1480 state protoimpl.MessageState 1481 sizeCache protoimpl.SizeCache 1482 unknownFields protoimpl.UnknownFields 1483 1484 // Constraints allowed pools. 1485 // Builds in this bucket must have a "pool" dimension which matches an entry in this list. 1486 Pools []string `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` 1487 // Only service accounts in this list are allowed. 1488 ServiceAccounts []string `protobuf:"bytes,2,rep,name=service_accounts,json=serviceAccounts,proto3" json:"service_accounts,omitempty"` 1489 } 1490 1491 func (x *Bucket_Constraints) Reset() { 1492 *x = Bucket_Constraints{} 1493 if protoimpl.UnsafeEnabled { 1494 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[14] 1495 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1496 ms.StoreMessageInfo(mi) 1497 } 1498 } 1499 1500 func (x *Bucket_Constraints) String() string { 1501 return protoimpl.X.MessageStringOf(x) 1502 } 1503 1504 func (*Bucket_Constraints) ProtoMessage() {} 1505 1506 func (x *Bucket_Constraints) ProtoReflect() protoreflect.Message { 1507 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[14] 1508 if protoimpl.UnsafeEnabled && x != nil { 1509 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1510 if ms.LoadMessageInfo() == nil { 1511 ms.StoreMessageInfo(mi) 1512 } 1513 return ms 1514 } 1515 return mi.MessageOf(x) 1516 } 1517 1518 // Deprecated: Use Bucket_Constraints.ProtoReflect.Descriptor instead. 1519 func (*Bucket_Constraints) Descriptor() ([]byte, []int) { 1520 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{3, 0} 1521 } 1522 1523 func (x *Bucket_Constraints) GetPools() []string { 1524 if x != nil { 1525 return x.Pools 1526 } 1527 return nil 1528 } 1529 1530 func (x *Bucket_Constraints) GetServiceAccounts() []string { 1531 if x != nil { 1532 return x.ServiceAccounts 1533 } 1534 return nil 1535 } 1536 1537 // Template of builders in a dynamic bucket. 1538 type Bucket_DynamicBuilderTemplate struct { 1539 state protoimpl.MessageState 1540 sizeCache protoimpl.SizeCache 1541 unknownFields protoimpl.UnknownFields 1542 1543 // The Builder template which is shared among all builders in this dynamic 1544 // bucket. 1545 Template *BuilderConfig `protobuf:"bytes,1,opt,name=template,proto3" json:"template,omitempty"` 1546 } 1547 1548 func (x *Bucket_DynamicBuilderTemplate) Reset() { 1549 *x = Bucket_DynamicBuilderTemplate{} 1550 if protoimpl.UnsafeEnabled { 1551 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[15] 1552 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1553 ms.StoreMessageInfo(mi) 1554 } 1555 } 1556 1557 func (x *Bucket_DynamicBuilderTemplate) String() string { 1558 return protoimpl.X.MessageStringOf(x) 1559 } 1560 1561 func (*Bucket_DynamicBuilderTemplate) ProtoMessage() {} 1562 1563 func (x *Bucket_DynamicBuilderTemplate) ProtoReflect() protoreflect.Message { 1564 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[15] 1565 if protoimpl.UnsafeEnabled && x != nil { 1566 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1567 if ms.LoadMessageInfo() == nil { 1568 ms.StoreMessageInfo(mi) 1569 } 1570 return ms 1571 } 1572 return mi.MessageOf(x) 1573 } 1574 1575 // Deprecated: Use Bucket_DynamicBuilderTemplate.ProtoReflect.Descriptor instead. 1576 func (*Bucket_DynamicBuilderTemplate) Descriptor() ([]byte, []int) { 1577 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{3, 1} 1578 } 1579 1580 func (x *Bucket_DynamicBuilderTemplate) GetTemplate() *BuilderConfig { 1581 if x != nil { 1582 return x.Template 1583 } 1584 return nil 1585 } 1586 1587 type BuildbucketCfg_Topic struct { 1588 state protoimpl.MessageState 1589 sizeCache protoimpl.SizeCache 1590 unknownFields protoimpl.UnknownFields 1591 1592 // Topic name format should be like 1593 // "projects/<projid>/topics/<topicid>" and conforms to the guideline: 1594 // https://cloud.google.com/pubsub/docs/admin#resource_names. 1595 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1596 // The compression method that `build_large_fields` uses in pubsub message 1597 // data. By default, it's ZLIB as this is the most common one and is the 1598 // built-in lib in many programming languages. 1599 Compression Compression `protobuf:"varint,2,opt,name=compression,proto3,enum=buildbucket.v2.Compression" json:"compression,omitempty"` 1600 } 1601 1602 func (x *BuildbucketCfg_Topic) Reset() { 1603 *x = BuildbucketCfg_Topic{} 1604 if protoimpl.UnsafeEnabled { 1605 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[16] 1606 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1607 ms.StoreMessageInfo(mi) 1608 } 1609 } 1610 1611 func (x *BuildbucketCfg_Topic) String() string { 1612 return protoimpl.X.MessageStringOf(x) 1613 } 1614 1615 func (*BuildbucketCfg_Topic) ProtoMessage() {} 1616 1617 func (x *BuildbucketCfg_Topic) ProtoReflect() protoreflect.Message { 1618 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[16] 1619 if protoimpl.UnsafeEnabled && x != nil { 1620 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1621 if ms.LoadMessageInfo() == nil { 1622 ms.StoreMessageInfo(mi) 1623 } 1624 return ms 1625 } 1626 return mi.MessageOf(x) 1627 } 1628 1629 // Deprecated: Use BuildbucketCfg_Topic.ProtoReflect.Descriptor instead. 1630 func (*BuildbucketCfg_Topic) Descriptor() ([]byte, []int) { 1631 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{4, 0} 1632 } 1633 1634 func (x *BuildbucketCfg_Topic) GetName() string { 1635 if x != nil { 1636 return x.Name 1637 } 1638 return "" 1639 } 1640 1641 func (x *BuildbucketCfg_Topic) GetCompression() Compression { 1642 if x != nil { 1643 return x.Compression 1644 } 1645 return Compression_ZLIB 1646 } 1647 1648 type BuildbucketCfg_CommonConfig struct { 1649 state protoimpl.MessageState 1650 sizeCache protoimpl.SizeCache 1651 unknownFields protoimpl.UnknownFields 1652 1653 // A list of PubSub topics that Buildbucket will publish notifications for 1654 // build status changes in this project. 1655 // The message data schema can be found in message `BuildsV2PubSub` in 1656 // https://chromium.googlesource.com/infra/luci/luci-go/+/main/buildbucket/proto/notification.proto 1657 // Attributes on the pubsub messages: 1658 // - "project" 1659 // - "bucket" 1660 // - "builder" 1661 // - "is_completed" (The value is either "true" or "false" in string.) 1662 // 1663 // Note: `pubsub.topics.publish` permission must be granted to the 1664 // corresponding luci-project-scoped accounts in the cloud project(s) hosting 1665 // the topics. 1666 BuildsNotificationTopics []*BuildbucketCfg_Topic `protobuf:"bytes,1,rep,name=builds_notification_topics,json=buildsNotificationTopics,proto3" json:"builds_notification_topics,omitempty"` 1667 } 1668 1669 func (x *BuildbucketCfg_CommonConfig) Reset() { 1670 *x = BuildbucketCfg_CommonConfig{} 1671 if protoimpl.UnsafeEnabled { 1672 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[17] 1673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1674 ms.StoreMessageInfo(mi) 1675 } 1676 } 1677 1678 func (x *BuildbucketCfg_CommonConfig) String() string { 1679 return protoimpl.X.MessageStringOf(x) 1680 } 1681 1682 func (*BuildbucketCfg_CommonConfig) ProtoMessage() {} 1683 1684 func (x *BuildbucketCfg_CommonConfig) ProtoReflect() protoreflect.Message { 1685 mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[17] 1686 if protoimpl.UnsafeEnabled && x != nil { 1687 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1688 if ms.LoadMessageInfo() == nil { 1689 ms.StoreMessageInfo(mi) 1690 } 1691 return ms 1692 } 1693 return mi.MessageOf(x) 1694 } 1695 1696 // Deprecated: Use BuildbucketCfg_CommonConfig.ProtoReflect.Descriptor instead. 1697 func (*BuildbucketCfg_CommonConfig) Descriptor() ([]byte, []int) { 1698 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{4, 1} 1699 } 1700 1701 func (x *BuildbucketCfg_CommonConfig) GetBuildsNotificationTopics() []*BuildbucketCfg_Topic { 1702 if x != nil { 1703 return x.BuildsNotificationTopics 1704 } 1705 return nil 1706 } 1707 1708 var File_go_chromium_org_luci_buildbucket_proto_project_config_proto protoreflect.FileDescriptor 1709 1710 var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc = []byte{ 1711 0x0a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 1712 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 1713 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 1714 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x62, 1715 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 1716 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 1717 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 1718 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 1719 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 1720 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 1721 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 1722 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 1723 0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 1724 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 1725 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 1726 0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 1727 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f, 1728 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 1729 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x03, 0x41, 0x63, 1730 0x6c, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 1731 0x15, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x63, 1732 0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 1733 0x12, 0x18, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 1734 0x02, 0x18, 0x01, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x64, 1735 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 1736 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2d, 0x0a, 0x04, 0x52, 0x6f, 1737 0x6c, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0d, 1738 0x0a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 1739 0x06, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x02, 0x22, 0xf4, 0x16, 0x0a, 0x0d, 0x42, 0x75, 1740 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 1741 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 1742 0x3c, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 1743 0x32, 0x22, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 1744 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x61, 0x63, 1745 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x43, 0x0a, 1746 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x61, 0x6c, 0x74, 0x18, 0x21, 0x20, 0x01, 1747 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 1748 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 1749 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x41, 1750 0x6c, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x68, 1751 0x6f, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 1752 0x69, 0x6e, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 1753 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 1754 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 1755 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 1756 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 1757 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 1758 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x69, 1759 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 1760 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 1761 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x63, 0x69, 0x70, 0x65, 0x52, 0x06, 0x72, 0x65, 0x63, 1762 0x69, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x78, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 1763 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 1764 0x32, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x03, 0x65, 0x78, 1765 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 1766 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xa8, 0xfe, 0x23, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 1767 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 1768 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6f, 0x76, 0x65, 0x72, 1769 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x61, 0x6c, 0x6c, 1770 0x6f, 0x77, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4f, 0x76, 0x65, 0x72, 1771 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 1772 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 1773 0x79, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 1774 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 1775 0x0d, 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 1776 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x72, 0x74, 1777 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 1778 0x73, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 1779 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 1780 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 1781 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 1782 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 1783 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 1784 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 1785 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 1786 0x72, 0x69, 0x6f, 0x64, 0x12, 0x43, 0x0a, 0x11, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 1787 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, 1788 0x17, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 1789 0x2e, 0x54, 0x72, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 1790 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x61, 0x63, 1791 0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x62, 0x75, 0x69, 0x6c, 1792 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 1793 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 1794 0x52, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 1795 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 1796 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x6f, 1797 0x67, 0x67, 0x6c, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 1798 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 1799 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 1800 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x16, 0x61, 1801 0x75, 0x74, 0x6f, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x6d, 0x65, 1802 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x62, 0x75, 1803 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 1804 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x44, 0x69, 0x6d, 1805 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 1806 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x62, 1807 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 1808 0x65, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 1809 0x63, 0x0a, 0x1f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 1810 0x5f, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 1811 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 1812 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 1813 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 1814 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 1815 0x74, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 1816 0x6e, 0x74, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x75, 0x69, 0x6c, 1817 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 1818 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 1819 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 1820 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 1821 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1822 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x08, 1823 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x75, 1824 0x6c, 0x74, 0x64, 0x62, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x75, 0x69, 1825 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 1826 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x44, 0x42, 0x52, 1827 0x08, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 1828 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x1e, 0x20, 1829 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 1830 0x48, 0x74, 0x6d, 0x6c, 0x12, 0x71, 0x0a, 0x1a, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x62, 1831 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 1832 0x74, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 1833 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 1834 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x42, 0x75, 0x69, 0x6c, 0x64, 1835 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x18, 0x73, 1836 0x68, 0x61, 0x64, 0x6f, 0x77, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x41, 0x64, 0x6a, 0x75, 1837 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x72, 0x69, 1838 0x61, 0x62, 0x6c, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x69, 1839 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x69, 0x6e, 1840 0x61, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x6e, 1841 0x0a, 0x1c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 1842 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x25, 1843 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 1844 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 1845 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4c, 0x69, 1846 0x6e, 0x6b, 0x73, 0x52, 0x19, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 1847 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x2c, 1848 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x65, 1849 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 1850 0x61, 0x63, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x85, 0x01, 0x0a, 1851 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 1852 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 1853 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 1854 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x18, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 1855 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 1856 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x57, 0x61, 1857 0x72, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x65, 1858 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 1859 0x76, 0x56, 0x61, 0x72, 0x1a, 0xab, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x69, 0x70, 0x65, 0x12, 1860 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 1861 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 1862 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x69, 0x70, 0x64, 0x50, 1863 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x76, 1864 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x69, 1865 0x70, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 1866 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 1867 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 1868 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x6a, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 1869 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x4a, 0x4a, 0x04, 0x08, 0x01, 1870 0x10, 0x02, 0x1a, 0xae, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x44, 0x42, 0x12, 1871 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 1872 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x62, 0x71, 0x5f, 0x65, 0x78, 1873 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 1874 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x42, 1875 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x09, 0x62, 1876 0x71, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x68, 0x69, 0x73, 0x74, 1877 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 1878 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 1879 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 1880 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4f, 0x70, 0x74, 0x69, 1881 0x6f, 0x6e, 0x73, 0x1a, 0x48, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x16, 1882 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 1883 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 1884 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xa8, 0xfe, 0x23, 1885 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x73, 0x6f, 0x6e, 0x1a, 0x3e, 0x0a, 1886 0x10, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 1887 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 1888 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 1889 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x9d, 0x01, 1890 0x0a, 0x18, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x41, 1891 0x64, 0x6a, 0x75, 0x73, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 1892 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 1893 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 1894 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 1895 0x09, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 1896 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xa8, 0xfe, 0x23, 1897 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 1898 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 1899 0x09, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xc6, 0x02, 1900 0x0a, 0x12, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4c, 1901 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x58, 0x0a, 0x09, 0x64, 0x6f, 0x63, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 1902 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 1903 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 1904 0x66, 0x69, 0x67, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 1905 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2e, 0x44, 0x6f, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x45, 1906 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x5b, 1907 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 1908 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 1909 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 1910 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 1911 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 1912 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x44, 1913 0x6f, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 1914 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 1915 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 1916 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 1917 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 1918 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 1919 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 1920 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0b, 1921 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, 1922 0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 1923 0x22, 0xb9, 0x01, 0x0a, 0x08, 0x53, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a, 1924 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 1925 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 1926 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x62, 0x75, 0x69, 1927 0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x1f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x65, 1928 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x65, 1929 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 1930 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 1931 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x74, 0x61, 1932 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 1933 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 1934 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xe2, 0x03, 0x0a, 1935 0x06, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 1936 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x61, 1937 0x63, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x75, 0x69, 0x6c, 1938 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x63, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52, 1939 0x04, 0x61, 0x63, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 1940 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 1941 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x08, 1942 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x64, 1943 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 1944 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 1945 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1946 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 1947 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 1948 0x6e, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x18, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x62, 1949 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 1950 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1951 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 1952 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 1953 0x65, 0x52, 0x16, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 1954 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x1a, 0x4e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 1955 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 1956 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x29, 1957 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 1958 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 1959 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x50, 0x0a, 0x16, 0x44, 0x79, 0x6e, 1960 0x61, 0x6d, 0x69, 0x63, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 1961 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 1962 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1963 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 1964 0x67, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 1965 0x05, 0x22, 0xed, 0x02, 0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 1966 0x74, 0x43, 0x66, 0x67, 0x12, 0x2d, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 1967 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1968 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 1969 0x65, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 1970 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x75, 0x69, 1971 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 1972 0x63, 0x6b, 0x65, 0x74, 0x43, 0x66, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 1973 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 1974 0x69, 0x67, 0x1a, 0x5a, 0x0a, 0x05, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 1975 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 1976 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 1977 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 1978 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 1979 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x6f, 1980 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, 1981 0x0a, 0x1a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 1982 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 1983 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 1984 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x66, 0x67, 0x2e, 1985 0x54, 0x6f, 0x70, 0x69, 0x63, 0x52, 0x18, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x4e, 0x6f, 0x74, 1986 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x73, 0x4a, 1987 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 1988 0x05, 0x2a, 0x24, 0x0a, 0x06, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 1989 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 1990 0x06, 0x0a, 0x02, 0x4e, 0x4f, 0x10, 0x02, 0x42, 0x74, 0xa2, 0xfe, 0x23, 0x3a, 0x0a, 0x38, 0x68, 1991 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x6c, 0x75, 1992 0x63, 0x69, 0x2e, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x70, 1993 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x3a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 1994 0x6b, 0x65, 0x74, 0x2e, 0x63, 0x66, 0x67, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 1995 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 1996 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 1997 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 1998 0x72, 0x6f, 0x74, 0x6f, 0x33, 1999 } 2000 2001 var ( 2002 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescOnce sync.Once 2003 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData = file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc 2004 ) 2005 2006 func file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP() []byte { 2007 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescOnce.Do(func() { 2008 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData) 2009 }) 2010 return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData 2011 } 2012 2013 var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) 2014 var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes = make([]protoimpl.MessageInfo, 18) 2015 var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes = []interface{}{ 2016 (Toggle)(0), // 0: buildbucket.Toggle 2017 (Acl_Role)(0), // 1: buildbucket.Acl.Role 2018 (*Acl)(nil), // 2: buildbucket.Acl 2019 (*BuilderConfig)(nil), // 3: buildbucket.BuilderConfig 2020 (*Swarming)(nil), // 4: buildbucket.Swarming 2021 (*Bucket)(nil), // 5: buildbucket.Bucket 2022 (*BuildbucketCfg)(nil), // 6: buildbucket.BuildbucketCfg 2023 (*BuilderConfig_CacheEntry)(nil), // 7: buildbucket.BuilderConfig.CacheEntry 2024 (*BuilderConfig_Recipe)(nil), // 8: buildbucket.BuilderConfig.Recipe 2025 (*BuilderConfig_ResultDB)(nil), // 9: buildbucket.BuilderConfig.ResultDB 2026 (*BuilderConfig_Backend)(nil), // 10: buildbucket.BuilderConfig.Backend 2027 nil, // 11: buildbucket.BuilderConfig.ExperimentsEntry 2028 (*BuilderConfig_ShadowBuilderAdjustments)(nil), // 12: buildbucket.BuilderConfig.ShadowBuilderAdjustments 2029 (*BuilderConfig_BuilderHealthLinks)(nil), // 13: buildbucket.BuilderConfig.BuilderHealthLinks 2030 nil, // 14: buildbucket.BuilderConfig.BuilderHealthLinks.DocLinksEntry 2031 nil, // 15: buildbucket.BuilderConfig.BuilderHealthLinks.DataLinksEntry 2032 (*Bucket_Constraints)(nil), // 16: buildbucket.Bucket.Constraints 2033 (*Bucket_DynamicBuilderTemplate)(nil), // 17: buildbucket.Bucket.DynamicBuilderTemplate 2034 (*BuildbucketCfg_Topic)(nil), // 18: buildbucket.BuildbucketCfg.Topic 2035 (*BuildbucketCfg_CommonConfig)(nil), // 19: buildbucket.BuildbucketCfg.CommonConfig 2036 (*Executable)(nil), // 20: buildbucket.v2.Executable 2037 (*durationpb.Duration)(nil), // 21: google.protobuf.Duration 2038 (Trinary)(0), // 22: buildbucket.v2.Trinary 2039 (*wrapperspb.UInt32Value)(nil), // 23: google.protobuf.UInt32Value 2040 (*v1.BigQueryExport)(nil), // 24: luci.resultdb.v1.BigQueryExport 2041 (*v1.HistoryOptions)(nil), // 25: luci.resultdb.v1.HistoryOptions 2042 (Compression)(0), // 26: buildbucket.v2.Compression 2043 } 2044 var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs = []int32{ 2045 1, // 0: buildbucket.Acl.role:type_name -> buildbucket.Acl.Role 2046 10, // 1: buildbucket.BuilderConfig.backend:type_name -> buildbucket.BuilderConfig.Backend 2047 10, // 2: buildbucket.BuilderConfig.backend_alt:type_name -> buildbucket.BuilderConfig.Backend 2048 8, // 3: buildbucket.BuilderConfig.recipe:type_name -> buildbucket.BuilderConfig.Recipe 2049 20, // 4: buildbucket.BuilderConfig.exe:type_name -> buildbucket.v2.Executable 2050 21, // 5: buildbucket.BuilderConfig.grace_period:type_name -> google.protobuf.Duration 2051 22, // 6: buildbucket.BuilderConfig.wait_for_capacity:type_name -> buildbucket.v2.Trinary 2052 7, // 7: buildbucket.BuilderConfig.caches:type_name -> buildbucket.BuilderConfig.CacheEntry 2053 0, // 8: buildbucket.BuilderConfig.build_numbers:type_name -> buildbucket.Toggle 2054 0, // 9: buildbucket.BuilderConfig.auto_builder_dimension:type_name -> buildbucket.Toggle 2055 0, // 10: buildbucket.BuilderConfig.experimental:type_name -> buildbucket.Toggle 2056 23, // 11: buildbucket.BuilderConfig.task_template_canary_percentage:type_name -> google.protobuf.UInt32Value 2057 11, // 12: buildbucket.BuilderConfig.experiments:type_name -> buildbucket.BuilderConfig.ExperimentsEntry 2058 22, // 13: buildbucket.BuilderConfig.critical:type_name -> buildbucket.v2.Trinary 2059 9, // 14: buildbucket.BuilderConfig.resultdb:type_name -> buildbucket.BuilderConfig.ResultDB 2060 12, // 15: buildbucket.BuilderConfig.shadow_builder_adjustments:type_name -> buildbucket.BuilderConfig.ShadowBuilderAdjustments 2061 22, // 16: buildbucket.BuilderConfig.retriable:type_name -> buildbucket.v2.Trinary 2062 13, // 17: buildbucket.BuilderConfig.builder_health_metrics_links:type_name -> buildbucket.BuilderConfig.BuilderHealthLinks 2063 3, // 18: buildbucket.Swarming.builders:type_name -> buildbucket.BuilderConfig 2064 23, // 19: buildbucket.Swarming.task_template_canary_percentage:type_name -> google.protobuf.UInt32Value 2065 2, // 20: buildbucket.Bucket.acls:type_name -> buildbucket.Acl 2066 4, // 21: buildbucket.Bucket.swarming:type_name -> buildbucket.Swarming 2067 16, // 22: buildbucket.Bucket.constraints:type_name -> buildbucket.Bucket.Constraints 2068 17, // 23: buildbucket.Bucket.dynamic_builder_template:type_name -> buildbucket.Bucket.DynamicBuilderTemplate 2069 5, // 24: buildbucket.BuildbucketCfg.buckets:type_name -> buildbucket.Bucket 2070 19, // 25: buildbucket.BuildbucketCfg.common_config:type_name -> buildbucket.BuildbucketCfg.CommonConfig 2071 24, // 26: buildbucket.BuilderConfig.ResultDB.bq_exports:type_name -> luci.resultdb.v1.BigQueryExport 2072 25, // 27: buildbucket.BuilderConfig.ResultDB.history_options:type_name -> luci.resultdb.v1.HistoryOptions 2073 14, // 28: buildbucket.BuilderConfig.BuilderHealthLinks.doc_links:type_name -> buildbucket.BuilderConfig.BuilderHealthLinks.DocLinksEntry 2074 15, // 29: buildbucket.BuilderConfig.BuilderHealthLinks.data_links:type_name -> buildbucket.BuilderConfig.BuilderHealthLinks.DataLinksEntry 2075 3, // 30: buildbucket.Bucket.DynamicBuilderTemplate.template:type_name -> buildbucket.BuilderConfig 2076 26, // 31: buildbucket.BuildbucketCfg.Topic.compression:type_name -> buildbucket.v2.Compression 2077 18, // 32: buildbucket.BuildbucketCfg.CommonConfig.builds_notification_topics:type_name -> buildbucket.BuildbucketCfg.Topic 2078 33, // [33:33] is the sub-list for method output_type 2079 33, // [33:33] is the sub-list for method input_type 2080 33, // [33:33] is the sub-list for extension type_name 2081 33, // [33:33] is the sub-list for extension extendee 2082 0, // [0:33] is the sub-list for field type_name 2083 } 2084 2085 func init() { file_go_chromium_org_luci_buildbucket_proto_project_config_proto_init() } 2086 func file_go_chromium_org_luci_buildbucket_proto_project_config_proto_init() { 2087 if File_go_chromium_org_luci_buildbucket_proto_project_config_proto != nil { 2088 return 2089 } 2090 file_go_chromium_org_luci_buildbucket_proto_common_proto_init() 2091 if !protoimpl.UnsafeEnabled { 2092 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2093 switch v := v.(*Acl); i { 2094 case 0: 2095 return &v.state 2096 case 1: 2097 return &v.sizeCache 2098 case 2: 2099 return &v.unknownFields 2100 default: 2101 return nil 2102 } 2103 } 2104 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2105 switch v := v.(*BuilderConfig); i { 2106 case 0: 2107 return &v.state 2108 case 1: 2109 return &v.sizeCache 2110 case 2: 2111 return &v.unknownFields 2112 default: 2113 return nil 2114 } 2115 } 2116 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2117 switch v := v.(*Swarming); i { 2118 case 0: 2119 return &v.state 2120 case 1: 2121 return &v.sizeCache 2122 case 2: 2123 return &v.unknownFields 2124 default: 2125 return nil 2126 } 2127 } 2128 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2129 switch v := v.(*Bucket); i { 2130 case 0: 2131 return &v.state 2132 case 1: 2133 return &v.sizeCache 2134 case 2: 2135 return &v.unknownFields 2136 default: 2137 return nil 2138 } 2139 } 2140 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2141 switch v := v.(*BuildbucketCfg); i { 2142 case 0: 2143 return &v.state 2144 case 1: 2145 return &v.sizeCache 2146 case 2: 2147 return &v.unknownFields 2148 default: 2149 return nil 2150 } 2151 } 2152 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2153 switch v := v.(*BuilderConfig_CacheEntry); i { 2154 case 0: 2155 return &v.state 2156 case 1: 2157 return &v.sizeCache 2158 case 2: 2159 return &v.unknownFields 2160 default: 2161 return nil 2162 } 2163 } 2164 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2165 switch v := v.(*BuilderConfig_Recipe); i { 2166 case 0: 2167 return &v.state 2168 case 1: 2169 return &v.sizeCache 2170 case 2: 2171 return &v.unknownFields 2172 default: 2173 return nil 2174 } 2175 } 2176 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2177 switch v := v.(*BuilderConfig_ResultDB); i { 2178 case 0: 2179 return &v.state 2180 case 1: 2181 return &v.sizeCache 2182 case 2: 2183 return &v.unknownFields 2184 default: 2185 return nil 2186 } 2187 } 2188 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2189 switch v := v.(*BuilderConfig_Backend); i { 2190 case 0: 2191 return &v.state 2192 case 1: 2193 return &v.sizeCache 2194 case 2: 2195 return &v.unknownFields 2196 default: 2197 return nil 2198 } 2199 } 2200 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2201 switch v := v.(*BuilderConfig_ShadowBuilderAdjustments); i { 2202 case 0: 2203 return &v.state 2204 case 1: 2205 return &v.sizeCache 2206 case 2: 2207 return &v.unknownFields 2208 default: 2209 return nil 2210 } 2211 } 2212 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2213 switch v := v.(*BuilderConfig_BuilderHealthLinks); i { 2214 case 0: 2215 return &v.state 2216 case 1: 2217 return &v.sizeCache 2218 case 2: 2219 return &v.unknownFields 2220 default: 2221 return nil 2222 } 2223 } 2224 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 2225 switch v := v.(*Bucket_Constraints); i { 2226 case 0: 2227 return &v.state 2228 case 1: 2229 return &v.sizeCache 2230 case 2: 2231 return &v.unknownFields 2232 default: 2233 return nil 2234 } 2235 } 2236 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 2237 switch v := v.(*Bucket_DynamicBuilderTemplate); i { 2238 case 0: 2239 return &v.state 2240 case 1: 2241 return &v.sizeCache 2242 case 2: 2243 return &v.unknownFields 2244 default: 2245 return nil 2246 } 2247 } 2248 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 2249 switch v := v.(*BuildbucketCfg_Topic); i { 2250 case 0: 2251 return &v.state 2252 case 1: 2253 return &v.sizeCache 2254 case 2: 2255 return &v.unknownFields 2256 default: 2257 return nil 2258 } 2259 } 2260 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 2261 switch v := v.(*BuildbucketCfg_CommonConfig); i { 2262 case 0: 2263 return &v.state 2264 case 1: 2265 return &v.sizeCache 2266 case 2: 2267 return &v.unknownFields 2268 default: 2269 return nil 2270 } 2271 } 2272 } 2273 type x struct{} 2274 out := protoimpl.TypeBuilder{ 2275 File: protoimpl.DescBuilder{ 2276 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2277 RawDescriptor: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc, 2278 NumEnums: 2, 2279 NumMessages: 18, 2280 NumExtensions: 0, 2281 NumServices: 0, 2282 }, 2283 GoTypes: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes, 2284 DependencyIndexes: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs, 2285 EnumInfos: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes, 2286 MessageInfos: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes, 2287 }.Build() 2288 File_go_chromium_org_luci_buildbucket_proto_project_config_proto = out.File 2289 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc = nil 2290 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes = nil 2291 file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs = nil 2292 }