github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/go-control-plane/envoy/config/cluster/v3/cluster.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.25.0 4 // protoc v3.16.0 5 // source: envoy/config/cluster/v3/cluster.proto 6 7 package envoy_config_cluster_v3 8 9 import ( 10 _ "github.com/cncf/xds/go/udpa/annotations" 11 v3 "github.com/cncf/xds/go/xds/core/v3" 12 _ "github.com/hxx258456/ccgo/go-control-plane/envoy/annotations" 13 v32 "github.com/hxx258456/ccgo/go-control-plane/envoy/config/core/v3" 14 v31 "github.com/hxx258456/ccgo/go-control-plane/envoy/config/endpoint/v3" 15 v33 "github.com/hxx258456/ccgo/go-control-plane/envoy/extensions/transport_sockets/tls/v3" 16 v34 "github.com/hxx258456/ccgo/go-control-plane/envoy/type/v3" 17 _ "github.com/envoyproxy/protoc-gen-validate/validate" 18 proto "github.com/golang/protobuf/proto" 19 any "github.com/golang/protobuf/ptypes/any" 20 duration "github.com/golang/protobuf/ptypes/duration" 21 _struct "github.com/golang/protobuf/ptypes/struct" 22 wrappers "github.com/golang/protobuf/ptypes/wrappers" 23 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 24 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 25 reflect "reflect" 26 sync "sync" 27 ) 28 29 const ( 30 // Verify that this generated code is sufficiently up-to-date. 31 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 32 // Verify that runtime/protoimpl is sufficiently up-to-date. 33 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 34 ) 35 36 // This is a compile-time assertion that a sufficiently up-to-date version 37 // of the legacy proto package is being used. 38 const _ = proto.ProtoPackageIsVersion4 39 40 // Refer to :ref:`service discovery type <arch_overview_service_discovery_types>` 41 // for an explanation on each type. 42 type Cluster_DiscoveryType int32 43 44 const ( 45 // Refer to the :ref:`static discovery type<arch_overview_service_discovery_types_static>` 46 // for an explanation. 47 Cluster_STATIC Cluster_DiscoveryType = 0 48 // Refer to the :ref:`strict DNS discovery 49 // type<arch_overview_service_discovery_types_strict_dns>` 50 // for an explanation. 51 Cluster_STRICT_DNS Cluster_DiscoveryType = 1 52 // Refer to the :ref:`logical DNS discovery 53 // type<arch_overview_service_discovery_types_logical_dns>` 54 // for an explanation. 55 Cluster_LOGICAL_DNS Cluster_DiscoveryType = 2 56 // Refer to the :ref:`service discovery type<arch_overview_service_discovery_types_eds>` 57 // for an explanation. 58 Cluster_EDS Cluster_DiscoveryType = 3 59 // Refer to the :ref:`original destination discovery 60 // type<arch_overview_service_discovery_types_original_destination>` 61 // for an explanation. 62 Cluster_ORIGINAL_DST Cluster_DiscoveryType = 4 63 ) 64 65 // Enum value maps for Cluster_DiscoveryType. 66 var ( 67 Cluster_DiscoveryType_name = map[int32]string{ 68 0: "STATIC", 69 1: "STRICT_DNS", 70 2: "LOGICAL_DNS", 71 3: "EDS", 72 4: "ORIGINAL_DST", 73 } 74 Cluster_DiscoveryType_value = map[string]int32{ 75 "STATIC": 0, 76 "STRICT_DNS": 1, 77 "LOGICAL_DNS": 2, 78 "EDS": 3, 79 "ORIGINAL_DST": 4, 80 } 81 ) 82 83 func (x Cluster_DiscoveryType) Enum() *Cluster_DiscoveryType { 84 p := new(Cluster_DiscoveryType) 85 *p = x 86 return p 87 } 88 89 func (x Cluster_DiscoveryType) String() string { 90 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 91 } 92 93 func (Cluster_DiscoveryType) Descriptor() protoreflect.EnumDescriptor { 94 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[0].Descriptor() 95 } 96 97 func (Cluster_DiscoveryType) Type() protoreflect.EnumType { 98 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[0] 99 } 100 101 func (x Cluster_DiscoveryType) Number() protoreflect.EnumNumber { 102 return protoreflect.EnumNumber(x) 103 } 104 105 // Deprecated: Use Cluster_DiscoveryType.Descriptor instead. 106 func (Cluster_DiscoveryType) EnumDescriptor() ([]byte, []int) { 107 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 0} 108 } 109 110 // Refer to :ref:`load balancer type <arch_overview_load_balancing_types>` architecture 111 // overview section for information on each type. 112 type Cluster_LbPolicy int32 113 114 const ( 115 // Refer to the :ref:`round robin load balancing 116 // policy<arch_overview_load_balancing_types_round_robin>` 117 // for an explanation. 118 Cluster_ROUND_ROBIN Cluster_LbPolicy = 0 119 // Refer to the :ref:`least request load balancing 120 // policy<arch_overview_load_balancing_types_least_request>` 121 // for an explanation. 122 Cluster_LEAST_REQUEST Cluster_LbPolicy = 1 123 // Refer to the :ref:`ring hash load balancing 124 // policy<arch_overview_load_balancing_types_ring_hash>` 125 // for an explanation. 126 Cluster_RING_HASH Cluster_LbPolicy = 2 127 // Refer to the :ref:`random load balancing 128 // policy<arch_overview_load_balancing_types_random>` 129 // for an explanation. 130 Cluster_RANDOM Cluster_LbPolicy = 3 131 // Refer to the :ref:`Maglev load balancing policy<arch_overview_load_balancing_types_maglev>` 132 // for an explanation. 133 Cluster_MAGLEV Cluster_LbPolicy = 5 134 // This load balancer type must be specified if the configured cluster provides a cluster 135 // specific load balancer. Consult the configured cluster's documentation for whether to set 136 // this option or not. 137 Cluster_CLUSTER_PROVIDED Cluster_LbPolicy = 6 138 // Use the new :ref:`load_balancing_policy 139 // <envoy_v3_api_field_config.cluster.v3.Cluster.load_balancing_policy>` field to determine the LB policy. 140 // [#next-major-version: In the v3 API, we should consider deprecating the lb_policy field 141 // and instead using the new load_balancing_policy field as the one and only mechanism for 142 // configuring this.] 143 Cluster_LOAD_BALANCING_POLICY_CONFIG Cluster_LbPolicy = 7 144 // Deprecated: Do not use. 145 Cluster_hidden_envoy_deprecated_ORIGINAL_DST_LB Cluster_LbPolicy = 4 146 ) 147 148 // Enum value maps for Cluster_LbPolicy. 149 var ( 150 Cluster_LbPolicy_name = map[int32]string{ 151 0: "ROUND_ROBIN", 152 1: "LEAST_REQUEST", 153 2: "RING_HASH", 154 3: "RANDOM", 155 5: "MAGLEV", 156 6: "CLUSTER_PROVIDED", 157 7: "LOAD_BALANCING_POLICY_CONFIG", 158 4: "hidden_envoy_deprecated_ORIGINAL_DST_LB", 159 } 160 Cluster_LbPolicy_value = map[string]int32{ 161 "ROUND_ROBIN": 0, 162 "LEAST_REQUEST": 1, 163 "RING_HASH": 2, 164 "RANDOM": 3, 165 "MAGLEV": 5, 166 "CLUSTER_PROVIDED": 6, 167 "LOAD_BALANCING_POLICY_CONFIG": 7, 168 "hidden_envoy_deprecated_ORIGINAL_DST_LB": 4, 169 } 170 ) 171 172 func (x Cluster_LbPolicy) Enum() *Cluster_LbPolicy { 173 p := new(Cluster_LbPolicy) 174 *p = x 175 return p 176 } 177 178 func (x Cluster_LbPolicy) String() string { 179 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 180 } 181 182 func (Cluster_LbPolicy) Descriptor() protoreflect.EnumDescriptor { 183 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[1].Descriptor() 184 } 185 186 func (Cluster_LbPolicy) Type() protoreflect.EnumType { 187 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[1] 188 } 189 190 func (x Cluster_LbPolicy) Number() protoreflect.EnumNumber { 191 return protoreflect.EnumNumber(x) 192 } 193 194 // Deprecated: Use Cluster_LbPolicy.Descriptor instead. 195 func (Cluster_LbPolicy) EnumDescriptor() ([]byte, []int) { 196 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 1} 197 } 198 199 // When V4_ONLY is selected, the DNS resolver will only perform a lookup for 200 // addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will 201 // only perform a lookup for addresses in the IPv6 family. If AUTO is 202 // specified, the DNS resolver will first perform a lookup for addresses in 203 // the IPv6 family and fallback to a lookup for addresses in the IPv4 family. 204 // For cluster types other than 205 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` and 206 // :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`, 207 // this setting is 208 // ignored. 209 type Cluster_DnsLookupFamily int32 210 211 const ( 212 Cluster_AUTO Cluster_DnsLookupFamily = 0 213 Cluster_V4_ONLY Cluster_DnsLookupFamily = 1 214 Cluster_V6_ONLY Cluster_DnsLookupFamily = 2 215 ) 216 217 // Enum value maps for Cluster_DnsLookupFamily. 218 var ( 219 Cluster_DnsLookupFamily_name = map[int32]string{ 220 0: "AUTO", 221 1: "V4_ONLY", 222 2: "V6_ONLY", 223 } 224 Cluster_DnsLookupFamily_value = map[string]int32{ 225 "AUTO": 0, 226 "V4_ONLY": 1, 227 "V6_ONLY": 2, 228 } 229 ) 230 231 func (x Cluster_DnsLookupFamily) Enum() *Cluster_DnsLookupFamily { 232 p := new(Cluster_DnsLookupFamily) 233 *p = x 234 return p 235 } 236 237 func (x Cluster_DnsLookupFamily) String() string { 238 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 239 } 240 241 func (Cluster_DnsLookupFamily) Descriptor() protoreflect.EnumDescriptor { 242 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[2].Descriptor() 243 } 244 245 func (Cluster_DnsLookupFamily) Type() protoreflect.EnumType { 246 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[2] 247 } 248 249 func (x Cluster_DnsLookupFamily) Number() protoreflect.EnumNumber { 250 return protoreflect.EnumNumber(x) 251 } 252 253 // Deprecated: Use Cluster_DnsLookupFamily.Descriptor instead. 254 func (Cluster_DnsLookupFamily) EnumDescriptor() ([]byte, []int) { 255 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 2} 256 } 257 258 type Cluster_ClusterProtocolSelection int32 259 260 const ( 261 // Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2). 262 // If :ref:`http2_protocol_options <envoy_v3_api_field_config.cluster.v3.Cluster.http2_protocol_options>` are 263 // present, HTTP2 will be used, otherwise HTTP1.1 will be used. 264 Cluster_USE_CONFIGURED_PROTOCOL Cluster_ClusterProtocolSelection = 0 265 // Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection. 266 Cluster_USE_DOWNSTREAM_PROTOCOL Cluster_ClusterProtocolSelection = 1 267 ) 268 269 // Enum value maps for Cluster_ClusterProtocolSelection. 270 var ( 271 Cluster_ClusterProtocolSelection_name = map[int32]string{ 272 0: "USE_CONFIGURED_PROTOCOL", 273 1: "USE_DOWNSTREAM_PROTOCOL", 274 } 275 Cluster_ClusterProtocolSelection_value = map[string]int32{ 276 "USE_CONFIGURED_PROTOCOL": 0, 277 "USE_DOWNSTREAM_PROTOCOL": 1, 278 } 279 ) 280 281 func (x Cluster_ClusterProtocolSelection) Enum() *Cluster_ClusterProtocolSelection { 282 p := new(Cluster_ClusterProtocolSelection) 283 *p = x 284 return p 285 } 286 287 func (x Cluster_ClusterProtocolSelection) String() string { 288 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 289 } 290 291 func (Cluster_ClusterProtocolSelection) Descriptor() protoreflect.EnumDescriptor { 292 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[3].Descriptor() 293 } 294 295 func (Cluster_ClusterProtocolSelection) Type() protoreflect.EnumType { 296 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[3] 297 } 298 299 func (x Cluster_ClusterProtocolSelection) Number() protoreflect.EnumNumber { 300 return protoreflect.EnumNumber(x) 301 } 302 303 // Deprecated: Use Cluster_ClusterProtocolSelection.Descriptor instead. 304 func (Cluster_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) { 305 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 3} 306 } 307 308 // If NO_FALLBACK is selected, a result 309 // equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected, 310 // any cluster endpoint may be returned (subject to policy, health checks, 311 // etc). If DEFAULT_SUBSET is selected, load balancing is performed over the 312 // endpoints matching the values from the default_subset field. 313 type Cluster_LbSubsetConfig_LbSubsetFallbackPolicy int32 314 315 const ( 316 Cluster_LbSubsetConfig_NO_FALLBACK Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 0 317 Cluster_LbSubsetConfig_ANY_ENDPOINT Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 1 318 Cluster_LbSubsetConfig_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 2 319 ) 320 321 // Enum value maps for Cluster_LbSubsetConfig_LbSubsetFallbackPolicy. 322 var ( 323 Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name = map[int32]string{ 324 0: "NO_FALLBACK", 325 1: "ANY_ENDPOINT", 326 2: "DEFAULT_SUBSET", 327 } 328 Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value = map[string]int32{ 329 "NO_FALLBACK": 0, 330 "ANY_ENDPOINT": 1, 331 "DEFAULT_SUBSET": 2, 332 } 333 ) 334 335 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Enum() *Cluster_LbSubsetConfig_LbSubsetFallbackPolicy { 336 p := new(Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) 337 *p = x 338 return p 339 } 340 341 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) String() string { 342 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 343 } 344 345 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Descriptor() protoreflect.EnumDescriptor { 346 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[4].Descriptor() 347 } 348 349 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Type() protoreflect.EnumType { 350 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[4] 351 } 352 353 func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) Number() protoreflect.EnumNumber { 354 return protoreflect.EnumNumber(x) 355 } 356 357 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetFallbackPolicy.Descriptor instead. 358 func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int) { 359 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 3, 0} 360 } 361 362 // Allows to override top level fallback policy per selector. 363 type Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy int32 364 365 const ( 366 // If NOT_DEFINED top level config fallback policy is used instead. 367 Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 0 368 // If NO_FALLBACK is selected, a result equivalent to no healthy hosts is reported. 369 Cluster_LbSubsetConfig_LbSubsetSelector_NO_FALLBACK Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 1 370 // If ANY_ENDPOINT is selected, any cluster endpoint may be returned 371 // (subject to policy, health checks, etc). 372 Cluster_LbSubsetConfig_LbSubsetSelector_ANY_ENDPOINT Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 2 373 // If DEFAULT_SUBSET is selected, load balancing is performed over the 374 // endpoints matching the values from the default_subset field. 375 Cluster_LbSubsetConfig_LbSubsetSelector_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 3 376 // If KEYS_SUBSET is selected, subset selector matching is performed again with metadata 377 // keys reduced to 378 // :ref:`fallback_keys_subset<envoy_v3_api_field_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.fallback_keys_subset>`. 379 // It allows for a fallback to a different, less specific selector if some of the keys of 380 // the selector are considered optional. 381 Cluster_LbSubsetConfig_LbSubsetSelector_KEYS_SUBSET Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 4 382 ) 383 384 // Enum value maps for Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy. 385 var ( 386 Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name = map[int32]string{ 387 0: "NOT_DEFINED", 388 1: "NO_FALLBACK", 389 2: "ANY_ENDPOINT", 390 3: "DEFAULT_SUBSET", 391 4: "KEYS_SUBSET", 392 } 393 Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_value = map[string]int32{ 394 "NOT_DEFINED": 0, 395 "NO_FALLBACK": 1, 396 "ANY_ENDPOINT": 2, 397 "DEFAULT_SUBSET": 3, 398 "KEYS_SUBSET": 4, 399 } 400 ) 401 402 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Enum() *Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy { 403 p := new(Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) 404 *p = x 405 return p 406 } 407 408 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String() string { 409 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 410 } 411 412 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Descriptor() protoreflect.EnumDescriptor { 413 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[5].Descriptor() 414 } 415 416 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Type() protoreflect.EnumType { 417 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[5] 418 } 419 420 func (x Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Number() protoreflect.EnumNumber { 421 return protoreflect.EnumNumber(x) 422 } 423 424 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy.Descriptor instead. 425 func (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor() ([]byte, []int) { 426 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 3, 0, 0} 427 } 428 429 // The hash function used to hash hosts onto the ketama ring. 430 type Cluster_RingHashLbConfig_HashFunction int32 431 432 const ( 433 // Use `xxHash <https://github.com/Cyan4973/xxHash>`_, this is the default hash function. 434 Cluster_RingHashLbConfig_XX_HASH Cluster_RingHashLbConfig_HashFunction = 0 435 // Use `MurmurHash2 <https://sites.google.com/site/murmurhash/>`_, this is compatible with 436 // std:hash<string> in GNU libstdc++ 3.4.20 or above. This is typically the case when compiled 437 // on Linux and not macOS. 438 Cluster_RingHashLbConfig_MURMUR_HASH_2 Cluster_RingHashLbConfig_HashFunction = 1 439 ) 440 441 // Enum value maps for Cluster_RingHashLbConfig_HashFunction. 442 var ( 443 Cluster_RingHashLbConfig_HashFunction_name = map[int32]string{ 444 0: "XX_HASH", 445 1: "MURMUR_HASH_2", 446 } 447 Cluster_RingHashLbConfig_HashFunction_value = map[string]int32{ 448 "XX_HASH": 0, 449 "MURMUR_HASH_2": 1, 450 } 451 ) 452 453 func (x Cluster_RingHashLbConfig_HashFunction) Enum() *Cluster_RingHashLbConfig_HashFunction { 454 p := new(Cluster_RingHashLbConfig_HashFunction) 455 *p = x 456 return p 457 } 458 459 func (x Cluster_RingHashLbConfig_HashFunction) String() string { 460 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 461 } 462 463 func (Cluster_RingHashLbConfig_HashFunction) Descriptor() protoreflect.EnumDescriptor { 464 return file_envoy_config_cluster_v3_cluster_proto_enumTypes[6].Descriptor() 465 } 466 467 func (Cluster_RingHashLbConfig_HashFunction) Type() protoreflect.EnumType { 468 return &file_envoy_config_cluster_v3_cluster_proto_enumTypes[6] 469 } 470 471 func (x Cluster_RingHashLbConfig_HashFunction) Number() protoreflect.EnumNumber { 472 return protoreflect.EnumNumber(x) 473 } 474 475 // Deprecated: Use Cluster_RingHashLbConfig_HashFunction.Descriptor instead. 476 func (Cluster_RingHashLbConfig_HashFunction) EnumDescriptor() ([]byte, []int) { 477 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 5, 0} 478 } 479 480 // Cluster list collections. Entries are *Cluster* resources or references. 481 // [#not-implemented-hide:] 482 type ClusterCollection struct { 483 state protoimpl.MessageState 484 sizeCache protoimpl.SizeCache 485 unknownFields protoimpl.UnknownFields 486 487 Entries *v3.CollectionEntry `protobuf:"bytes,1,opt,name=entries,proto3" json:"entries,omitempty"` 488 } 489 490 func (x *ClusterCollection) Reset() { 491 *x = ClusterCollection{} 492 if protoimpl.UnsafeEnabled { 493 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[0] 494 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 495 ms.StoreMessageInfo(mi) 496 } 497 } 498 499 func (x *ClusterCollection) String() string { 500 return protoimpl.X.MessageStringOf(x) 501 } 502 503 func (*ClusterCollection) ProtoMessage() {} 504 505 func (x *ClusterCollection) ProtoReflect() protoreflect.Message { 506 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[0] 507 if protoimpl.UnsafeEnabled && x != nil { 508 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 509 if ms.LoadMessageInfo() == nil { 510 ms.StoreMessageInfo(mi) 511 } 512 return ms 513 } 514 return mi.MessageOf(x) 515 } 516 517 // Deprecated: Use ClusterCollection.ProtoReflect.Descriptor instead. 518 func (*ClusterCollection) Descriptor() ([]byte, []int) { 519 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{0} 520 } 521 522 func (x *ClusterCollection) GetEntries() *v3.CollectionEntry { 523 if x != nil { 524 return x.Entries 525 } 526 return nil 527 } 528 529 // Configuration for a single upstream cluster. 530 // [#next-free-field: 56] 531 type Cluster struct { 532 state protoimpl.MessageState 533 sizeCache protoimpl.SizeCache 534 unknownFields protoimpl.UnknownFields 535 536 // Configuration to use different transport sockets for different endpoints. 537 // The entry of *envoy.transport_socket_match* in the 538 // :ref:`LbEndpoint.Metadata <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.metadata>` 539 // is used to match against the transport sockets as they appear in the list. The first 540 // :ref:`match <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>` is used. 541 // For example, with the following match 542 // 543 // .. code-block:: yaml 544 // 545 // transport_socket_matches: 546 // - name: "enableMTLS" 547 // match: 548 // acceptMTLS: true 549 // transport_socket: 550 // name: envoy.transport_sockets.tls 551 // config: { ... } # tls socket configuration 552 // - name: "defaultToPlaintext" 553 // match: {} 554 // transport_socket: 555 // name: envoy.transport_sockets.raw_buffer 556 // 557 // Connections to the endpoints whose metadata value under *envoy.transport_socket_match* 558 // having "acceptMTLS"/"true" key/value pair use the "enableMTLS" socket configuration. 559 // 560 // If a :ref:`socket match <envoy_v3_api_msg_config.cluster.v3.Cluster.TransportSocketMatch>` with empty match 561 // criteria is provided, that always match any endpoint. For example, the "defaultToPlaintext" 562 // socket match in case above. 563 // 564 // If an endpoint metadata's value under *envoy.transport_socket_match* does not match any 565 // *TransportSocketMatch*, socket configuration fallbacks to use the *tls_context* or 566 // *transport_socket* specified in this cluster. 567 // 568 // This field allows gradual and flexible transport socket configuration changes. 569 // 570 // The metadata of endpoints in EDS can indicate transport socket capabilities. For example, 571 // an endpoint's metadata can have two key value pairs as "acceptMTLS": "true", 572 // "acceptPlaintext": "true". While some other endpoints, only accepting plaintext traffic 573 // has "acceptPlaintext": "true" metadata information. 574 // 575 // Then the xDS server can configure the CDS to a client, Envoy A, to send mutual TLS 576 // traffic for endpoints with "acceptMTLS": "true", by adding a corresponding 577 // *TransportSocketMatch* in this field. Other client Envoys receive CDS without 578 // *transport_socket_match* set, and still send plain text traffic to the same cluster. 579 // 580 // This field can be used to specify custom transport socket configurations for health 581 // checks by adding matching key/value pairs in a health check's 582 // :ref:`transport socket match criteria <envoy_v3_api_field_config.core.v3.HealthCheck.transport_socket_match_criteria>` field. 583 // 584 // [#comment:TODO(incfly): add a detailed architecture doc on intended usage.] 585 TransportSocketMatches []*Cluster_TransportSocketMatch `protobuf:"bytes,43,rep,name=transport_socket_matches,json=transportSocketMatches,proto3" json:"transport_socket_matches,omitempty"` 586 // Supplies the name of the cluster which must be unique across all clusters. 587 // The cluster name is used when emitting 588 // :ref:`statistics <config_cluster_manager_cluster_stats>` if :ref:`alt_stat_name 589 // <envoy_v3_api_field_config.cluster.v3.Cluster.alt_stat_name>` is not provided. 590 // Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics. 591 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 592 // An optional alternative to the cluster name to be used for observability. This name is used 593 // emitting stats for the cluster and access logging the cluster name. This will appear as 594 // additional information in configuration dumps of a cluster's current status as 595 // :ref:`observability_name <envoy_v3_api_field_admin.v3.ClusterStatus.observability_name>` 596 // and as an additional tag "upstream_cluster.name" while tracing. Note: access logging using 597 // this field is presently enabled with runtime feature 598 // `envoy.reloadable_features.use_observable_cluster_name`. Any ``:`` in the name will be 599 // converted to ``_`` when emitting statistics. This should not be confused with :ref:`Router 600 // Filter Header <config_http_filters_router_x-envoy-upstream-alt-stat-name>`. 601 AltStatName string `protobuf:"bytes,28,opt,name=alt_stat_name,json=altStatName,proto3" json:"alt_stat_name,omitempty"` 602 // Types that are assignable to ClusterDiscoveryType: 603 // *Cluster_Type 604 // *Cluster_ClusterType 605 ClusterDiscoveryType isCluster_ClusterDiscoveryType `protobuf_oneof:"cluster_discovery_type"` 606 // Configuration to use for EDS updates for the Cluster. 607 EdsClusterConfig *Cluster_EdsClusterConfig `protobuf:"bytes,3,opt,name=eds_cluster_config,json=edsClusterConfig,proto3" json:"eds_cluster_config,omitempty"` 608 // The timeout for new network connections to hosts in the cluster. 609 // If not set, a default value of 5s will be used. 610 ConnectTimeout *duration.Duration `protobuf:"bytes,4,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` 611 // Soft limit on size of the cluster’s connections read and write buffers. If 612 // unspecified, an implementation defined default is applied (1MiB). 613 PerConnectionBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes,proto3" json:"per_connection_buffer_limit_bytes,omitempty"` 614 // The :ref:`load balancer type <arch_overview_load_balancing_types>` to use 615 // when picking a host in the cluster. 616 LbPolicy Cluster_LbPolicy `protobuf:"varint,6,opt,name=lb_policy,json=lbPolicy,proto3,enum=envoy.config.cluster.v3.Cluster_LbPolicy" json:"lb_policy,omitempty"` 617 // Setting this is required for specifying members of 618 // :ref:`STATIC<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STATIC>`, 619 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` 620 // or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>` clusters. 621 // This field supersedes the *hosts* field in the v2 API. 622 // 623 // .. attention:: 624 // 625 // Setting this allows non-EDS cluster types to contain embedded EDS equivalent 626 // :ref:`endpoint assignments<envoy_v3_api_msg_config.endpoint.v3.ClusterLoadAssignment>`. 627 // 628 LoadAssignment *v31.ClusterLoadAssignment `protobuf:"bytes,33,opt,name=load_assignment,json=loadAssignment,proto3" json:"load_assignment,omitempty"` 629 // Optional :ref:`active health checking <arch_overview_health_checking>` 630 // configuration for the cluster. If no 631 // configuration is specified no health checking will be done and all cluster 632 // members will be considered healthy at all times. 633 HealthChecks []*v32.HealthCheck `protobuf:"bytes,8,rep,name=health_checks,json=healthChecks,proto3" json:"health_checks,omitempty"` 634 // Optional maximum requests for a single upstream connection. This parameter 635 // is respected by both the HTTP/1.1 and HTTP/2 connection pool 636 // implementations. If not specified, there is no limit. Setting this 637 // parameter to 1 will effectively disable keep alive. 638 // 639 // .. attention:: 640 // This field has been deprecated in favor of the :ref:`max_requests_per_connection <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_requests_per_connection>` field. 641 // 642 // Deprecated: Do not use. 643 MaxRequestsPerConnection *wrappers.UInt32Value `protobuf:"bytes,9,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"` 644 // Optional :ref:`circuit breaking <arch_overview_circuit_break>` for the cluster. 645 CircuitBreakers *CircuitBreakers `protobuf:"bytes,10,opt,name=circuit_breakers,json=circuitBreakers,proto3" json:"circuit_breakers,omitempty"` 646 // HTTP protocol options that are applied only to upstream HTTP connections. 647 // These options apply to all HTTP versions. 648 // This has been deprecated in favor of 649 // :ref:`upstream_http_protocol_options <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options>` 650 // in the :ref:`http_protocol_options <envoy_v3_api_msg_extensions.upstreams.http.v3.HttpProtocolOptions>` message. 651 // upstream_http_protocol_options can be set via the cluster's 652 // :ref:`extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`. 653 // See :ref:`upstream_http_protocol_options 654 // <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options>` 655 // for example usage. 656 // 657 // Deprecated: Do not use. 658 UpstreamHttpProtocolOptions *v32.UpstreamHttpProtocolOptions `protobuf:"bytes,46,opt,name=upstream_http_protocol_options,json=upstreamHttpProtocolOptions,proto3" json:"upstream_http_protocol_options,omitempty"` 659 // Additional options when handling HTTP requests upstream. These options will be applicable to 660 // both HTTP1 and HTTP2 requests. 661 // This has been deprecated in favor of 662 // :ref:`common_http_protocol_options <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.common_http_protocol_options>` 663 // in the :ref:`http_protocol_options <envoy_v3_api_msg_extensions.upstreams.http.v3.HttpProtocolOptions>` message. 664 // common_http_protocol_options can be set via the cluster's 665 // :ref:`extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`. 666 // See :ref:`upstream_http_protocol_options 667 // <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options>` 668 // for example usage. 669 // 670 // Deprecated: Do not use. 671 CommonHttpProtocolOptions *v32.HttpProtocolOptions `protobuf:"bytes,29,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions,proto3" json:"common_http_protocol_options,omitempty"` 672 // Additional options when handling HTTP1 requests. 673 // This has been deprecated in favor of http_protocol_options fields in the 674 // :ref:`http_protocol_options <envoy_v3_api_msg_extensions.upstreams.http.v3.HttpProtocolOptions>` message. 675 // http_protocol_options can be set via the cluster's 676 // :ref:`extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`. 677 // See :ref:`upstream_http_protocol_options 678 // <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options>` 679 // for example usage. 680 // 681 // Deprecated: Do not use. 682 HttpProtocolOptions *v32.Http1ProtocolOptions `protobuf:"bytes,13,opt,name=http_protocol_options,json=httpProtocolOptions,proto3" json:"http_protocol_options,omitempty"` 683 // Even if default HTTP2 protocol options are desired, this field must be 684 // set so that Envoy will assume that the upstream supports HTTP/2 when 685 // making new HTTP connection pool connections. Currently, Envoy only 686 // supports prior knowledge for upstream connections. Even if TLS is used 687 // with ALPN, `http2_protocol_options` must be specified. As an aside this allows HTTP/2 688 // connections to happen over plain text. 689 // This has been deprecated in favor of http2_protocol_options fields in the 690 // :ref:`http_protocol_options <envoy_v3_api_msg_extensions.upstreams.http.v3.HttpProtocolOptions>` 691 // message. http2_protocol_options can be set via the cluster's 692 // :ref:`extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`. 693 // See :ref:`upstream_http_protocol_options 694 // <envoy_v3_api_field_extensions.upstreams.http.v3.HttpProtocolOptions.upstream_http_protocol_options>` 695 // for example usage. 696 // 697 // Deprecated: Do not use. 698 Http2ProtocolOptions *v32.Http2ProtocolOptions `protobuf:"bytes,14,opt,name=http2_protocol_options,json=http2ProtocolOptions,proto3" json:"http2_protocol_options,omitempty"` 699 // The extension_protocol_options field is used to provide extension-specific protocol options 700 // for upstream connections. The key should match the extension filter name, such as 701 // "envoy.filters.network.thrift_proxy". See the extension's documentation for details on 702 // specific options. 703 // [#next-major-version: make this a list of typed extensions.] 704 TypedExtensionProtocolOptions map[string]*any.Any `protobuf:"bytes,36,rep,name=typed_extension_protocol_options,json=typedExtensionProtocolOptions,proto3" json:"typed_extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 705 // If the DNS refresh rate is specified and the cluster type is either 706 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`, 707 // or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`, 708 // this value is used as the cluster’s DNS refresh 709 // rate. The value configured must be at least 1ms. If this setting is not specified, the 710 // value defaults to 5000ms. For cluster types other than 711 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` 712 // and :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>` 713 // this setting is ignored. 714 DnsRefreshRate *duration.Duration `protobuf:"bytes,16,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"` 715 // If the DNS failure refresh rate is specified and the cluster type is either 716 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`, 717 // or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`, 718 // this is used as the cluster’s DNS refresh rate when requests are failing. If this setting is 719 // not specified, the failure refresh rate defaults to the DNS refresh rate. For cluster types 720 // other than :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` and 721 // :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>` this setting is 722 // ignored. 723 DnsFailureRefreshRate *Cluster_RefreshRate `protobuf:"bytes,44,opt,name=dns_failure_refresh_rate,json=dnsFailureRefreshRate,proto3" json:"dns_failure_refresh_rate,omitempty"` 724 // Optional configuration for setting cluster's DNS refresh rate. If the value is set to true, 725 // cluster's DNS refresh rate will be set to resource record's TTL which comes from DNS 726 // resolution. 727 RespectDnsTtl bool `protobuf:"varint,39,opt,name=respect_dns_ttl,json=respectDnsTtl,proto3" json:"respect_dns_ttl,omitempty"` 728 // The DNS IP address resolution policy. If this setting is not specified, the 729 // value defaults to 730 // :ref:`AUTO<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DnsLookupFamily.AUTO>`. 731 DnsLookupFamily Cluster_DnsLookupFamily `protobuf:"varint,17,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=envoy.config.cluster.v3.Cluster_DnsLookupFamily" json:"dns_lookup_family,omitempty"` 732 // If DNS resolvers are specified and the cluster type is either 733 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`, 734 // or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`, 735 // this value is used to specify the cluster’s dns resolvers. 736 // If this setting is not specified, the value defaults to the default 737 // resolver, which uses /etc/resolv.conf for configuration. For cluster types 738 // other than 739 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>` 740 // and :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>` 741 // this setting is ignored. 742 // Setting this value causes failure if the 743 // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during 744 // server startup. Apple's API only allows overriding DNS resolvers via system settings. 745 // This field is deprecated in favor of *dns_resolution_config* 746 // which aggregates all of the DNS resolver configuration in a single message. 747 // 748 // Deprecated: Do not use. 749 DnsResolvers []*v32.Address `protobuf:"bytes,18,rep,name=dns_resolvers,json=dnsResolvers,proto3" json:"dns_resolvers,omitempty"` 750 // Always use TCP queries instead of UDP queries for DNS lookups. 751 // Setting this value causes failure if the 752 // ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime value is true during 753 // server startup. Apple' API only uses UDP for DNS resolution. 754 // This field is deprecated in favor of *dns_resolution_config* 755 // which aggregates all of the DNS resolver configuration in a single message. 756 // 757 // Deprecated: Do not use. 758 UseTcpForDnsLookups bool `protobuf:"varint,45,opt,name=use_tcp_for_dns_lookups,json=useTcpForDnsLookups,proto3" json:"use_tcp_for_dns_lookups,omitempty"` 759 // DNS resolution configuration which includes the underlying dns resolver addresses and options. 760 // *dns_resolution_config* will be deprecated once 761 // :ref:'typed_dns_resolver_config <envoy_v3_api_field_config.cluster.v3.Cluster.typed_dns_resolver_config>' 762 // is fully supported. 763 DnsResolutionConfig *v32.DnsResolutionConfig `protobuf:"bytes,53,opt,name=dns_resolution_config,json=dnsResolutionConfig,proto3" json:"dns_resolution_config,omitempty"` 764 // DNS resolver type configuration extension. This extension can be used to configure c-ares, apple, 765 // or any other DNS resolver types and the related parameters. 766 // For example, an object of :ref:`DnsResolutionConfig <envoy_v3_api_msg_config.core.v3.DnsResolutionConfig>` 767 // can be packed into this *typed_dns_resolver_config*. This configuration will replace the 768 // :ref:'dns_resolution_config <envoy_v3_api_field_config.cluster.v3.Cluster.dns_resolution_config>' 769 // configuration eventually. 770 // TODO(yanjunxiang): Investigate the deprecation plan for *dns_resolution_config*. 771 // During the transition period when both *dns_resolution_config* and *typed_dns_resolver_config* exists, 772 // this configuration is optional. 773 // When *typed_dns_resolver_config* is in place, Envoy will use it and ignore *dns_resolution_config*. 774 // When *typed_dns_resolver_config* is missing, the default behavior is in place. 775 // [#not-implemented-hide:] 776 TypedDnsResolverConfig *v32.TypedExtensionConfig `protobuf:"bytes,55,opt,name=typed_dns_resolver_config,json=typedDnsResolverConfig,proto3" json:"typed_dns_resolver_config,omitempty"` 777 // Optional configuration for having cluster readiness block on warm-up. Currently, only applicable for 778 // :ref:`STRICT_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.STRICT_DNS>`, 779 // or :ref:`LOGICAL_DNS<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.LOGICAL_DNS>`. 780 // If true, cluster readiness blocks on warm-up. If false, the cluster will complete 781 // initialization whether or not warm-up has completed. Defaults to true. 782 WaitForWarmOnInit *wrappers.BoolValue `protobuf:"bytes,54,opt,name=wait_for_warm_on_init,json=waitForWarmOnInit,proto3" json:"wait_for_warm_on_init,omitempty"` 783 // If specified, outlier detection will be enabled for this upstream cluster. 784 // Each of the configuration values can be overridden via 785 // :ref:`runtime values <config_cluster_manager_cluster_runtime_outlier_detection>`. 786 OutlierDetection *OutlierDetection `protobuf:"bytes,19,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"` 787 // The interval for removing stale hosts from a cluster type 788 // :ref:`ORIGINAL_DST<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.ORIGINAL_DST>`. 789 // Hosts are considered stale if they have not been used 790 // as upstream destinations during this interval. New hosts are added 791 // to original destination clusters on demand as new connections are 792 // redirected to Envoy, causing the number of hosts in the cluster to 793 // grow over time. Hosts that are not stale (they are actively used as 794 // destinations) are kept in the cluster, which allows connections to 795 // them remain open, saving the latency that would otherwise be spent 796 // on opening new connections. If this setting is not specified, the 797 // value defaults to 5000ms. For cluster types other than 798 // :ref:`ORIGINAL_DST<envoy_v3_api_enum_value_config.cluster.v3.Cluster.DiscoveryType.ORIGINAL_DST>` 799 // this setting is ignored. 800 CleanupInterval *duration.Duration `protobuf:"bytes,20,opt,name=cleanup_interval,json=cleanupInterval,proto3" json:"cleanup_interval,omitempty"` 801 // Optional configuration used to bind newly established upstream connections. 802 // This overrides any bind_config specified in the bootstrap proto. 803 // If the address and port are empty, no bind will be performed. 804 UpstreamBindConfig *v32.BindConfig `protobuf:"bytes,21,opt,name=upstream_bind_config,json=upstreamBindConfig,proto3" json:"upstream_bind_config,omitempty"` 805 // Configuration for load balancing subsetting. 806 LbSubsetConfig *Cluster_LbSubsetConfig `protobuf:"bytes,22,opt,name=lb_subset_config,json=lbSubsetConfig,proto3" json:"lb_subset_config,omitempty"` 807 // Optional configuration for the load balancing algorithm selected by 808 // LbPolicy. Currently only 809 // :ref:`RING_HASH<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbPolicy.RING_HASH>`, 810 // :ref:`MAGLEV<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbPolicy.MAGLEV>` and 811 // :ref:`LEAST_REQUEST<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbPolicy.LEAST_REQUEST>` 812 // has additional configuration options. 813 // Specifying ring_hash_lb_config or maglev_lb_config or least_request_lb_config without setting the corresponding 814 // LbPolicy will generate an error at runtime. 815 // 816 // Types that are assignable to LbConfig: 817 // *Cluster_RingHashLbConfig_ 818 // *Cluster_MaglevLbConfig_ 819 // *Cluster_OriginalDstLbConfig_ 820 // *Cluster_LeastRequestLbConfig_ 821 LbConfig isCluster_LbConfig `protobuf_oneof:"lb_config"` 822 // Common configuration for all load balancer implementations. 823 CommonLbConfig *Cluster_CommonLbConfig `protobuf:"bytes,27,opt,name=common_lb_config,json=commonLbConfig,proto3" json:"common_lb_config,omitempty"` 824 // Optional custom transport socket implementation to use for upstream connections. 825 // To setup TLS, set a transport socket with name `envoy.transport_sockets.tls` and 826 // :ref:`UpstreamTlsContexts <envoy_v3_api_msg_extensions.transport_sockets.tls.v3.UpstreamTlsContext>` in the `typed_config`. 827 // If no transport socket configuration is specified, new connections 828 // will be set up with plaintext. 829 TransportSocket *v32.TransportSocket `protobuf:"bytes,24,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"` 830 // The Metadata field can be used to provide additional information about the 831 // cluster. It can be used for stats, logging, and varying filter behavior. 832 // Fields should use reverse DNS notation to denote which entity within Envoy 833 // will need the information. For instance, if the metadata is intended for 834 // the Router filter, the filter name should be specified as *envoy.filters.http.router*. 835 Metadata *v32.Metadata `protobuf:"bytes,25,opt,name=metadata,proto3" json:"metadata,omitempty"` 836 // Determines how Envoy selects the protocol used to speak to upstream hosts. 837 // This has been deprecated in favor of setting explicit protocol selection 838 // in the :ref:`http_protocol_options 839 // <envoy_v3_api_msg_extensions.upstreams.http.v3.HttpProtocolOptions>` message. 840 // http_protocol_options can be set via the cluster's 841 // :ref:`extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`. 842 // 843 // Deprecated: Do not use. 844 ProtocolSelection Cluster_ClusterProtocolSelection `protobuf:"varint,26,opt,name=protocol_selection,json=protocolSelection,proto3,enum=envoy.config.cluster.v3.Cluster_ClusterProtocolSelection" json:"protocol_selection,omitempty"` 845 // Optional options for upstream connections. 846 UpstreamConnectionOptions *UpstreamConnectionOptions `protobuf:"bytes,30,opt,name=upstream_connection_options,json=upstreamConnectionOptions,proto3" json:"upstream_connection_options,omitempty"` 847 // If an upstream host becomes unhealthy (as determined by the configured health checks 848 // or outlier detection), immediately close all connections to the failed host. 849 // 850 // .. note:: 851 // 852 // This is currently only supported for connections created by tcp_proxy. 853 // 854 // .. note:: 855 // 856 // The current implementation of this feature closes all connections immediately when 857 // the unhealthy status is detected. If there are a large number of connections open 858 // to an upstream host that becomes unhealthy, Envoy may spend a substantial amount of 859 // time exclusively closing these connections, and not processing any other traffic. 860 CloseConnectionsOnHostHealthFailure bool `protobuf:"varint,31,opt,name=close_connections_on_host_health_failure,json=closeConnectionsOnHostHealthFailure,proto3" json:"close_connections_on_host_health_failure,omitempty"` 861 // If set to true, Envoy will ignore the health value of a host when processing its removal 862 // from service discovery. This means that if active health checking is used, Envoy will *not* 863 // wait for the endpoint to go unhealthy before removing it. 864 IgnoreHealthOnHostRemoval bool `protobuf:"varint,32,opt,name=ignore_health_on_host_removal,json=ignoreHealthOnHostRemoval,proto3" json:"ignore_health_on_host_removal,omitempty"` 865 // An (optional) network filter chain, listed in the order the filters should be applied. 866 // The chain will be applied to all outgoing connections that Envoy makes to the upstream 867 // servers of this cluster. 868 Filters []*Filter `protobuf:"bytes,40,rep,name=filters,proto3" json:"filters,omitempty"` 869 // New mechanism for LB policy configuration. Used only if the 870 // :ref:`lb_policy<envoy_v3_api_field_config.cluster.v3.Cluster.lb_policy>` field has the value 871 // :ref:`LOAD_BALANCING_POLICY_CONFIG<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbPolicy.LOAD_BALANCING_POLICY_CONFIG>`. 872 LoadBalancingPolicy *LoadBalancingPolicy `protobuf:"bytes,41,opt,name=load_balancing_policy,json=loadBalancingPolicy,proto3" json:"load_balancing_policy,omitempty"` 873 // [#not-implemented-hide:] 874 // If present, tells the client where to send load reports via LRS. If not present, the 875 // client will fall back to a client-side default, which may be either (a) don't send any 876 // load reports or (b) send load reports for all clusters to a single default server 877 // (which may be configured in the bootstrap file). 878 // 879 // Note that if multiple clusters point to the same LRS server, the client may choose to 880 // create a separate stream for each cluster or it may choose to coalesce the data for 881 // multiple clusters onto a single stream. Either way, the client must make sure to send 882 // the data for any given cluster on no more than one stream. 883 // 884 // [#next-major-version: In the v3 API, we should consider restructuring this somehow, 885 // maybe by allowing LRS to go on the ADS stream, or maybe by moving some of the negotiation 886 // from the LRS stream here.] 887 LrsServer *v32.ConfigSource `protobuf:"bytes,42,opt,name=lrs_server,json=lrsServer,proto3" json:"lrs_server,omitempty"` 888 // If track_timeout_budgets is true, the :ref:`timeout budget histograms 889 // <config_cluster_manager_cluster_stats_timeout_budgets>` will be published for each 890 // request. These show what percentage of a request's per try and global timeout was used. A value 891 // of 0 would indicate that none of the timeout was used or that the timeout was infinite. A value 892 // of 100 would indicate that the request took the entirety of the timeout given to it. 893 // 894 // .. attention:: 895 // 896 // This field has been deprecated in favor of `timeout_budgets`, part of 897 // :ref:`track_cluster_stats <envoy_v3_api_field_config.cluster.v3.Cluster.track_cluster_stats>`. 898 // 899 // Deprecated: Do not use. 900 TrackTimeoutBudgets bool `protobuf:"varint,47,opt,name=track_timeout_budgets,json=trackTimeoutBudgets,proto3" json:"track_timeout_budgets,omitempty"` 901 // Optional customization and configuration of upstream connection pool, and upstream type. 902 // 903 // Currently this field only applies for HTTP traffic but is designed for eventual use for custom 904 // TCP upstreams. 905 // 906 // For HTTP traffic, Envoy will generally take downstream HTTP and send it upstream as upstream 907 // HTTP, using the http connection pool and the codec from `http2_protocol_options` 908 // 909 // For routes where CONNECT termination is configured, Envoy will take downstream CONNECT 910 // requests and forward the CONNECT payload upstream over raw TCP using the tcp connection pool. 911 // 912 // The default pool used is the generic connection pool which creates the HTTP upstream for most 913 // HTTP requests, and the TCP upstream if CONNECT termination is configured. 914 // 915 // If users desire custom connection pool or upstream behavior, for example terminating 916 // CONNECT only if a custom filter indicates it is appropriate, the custom factories 917 // can be registered and configured here. 918 // [#extension-category: envoy.upstreams] 919 UpstreamConfig *v32.TypedExtensionConfig `protobuf:"bytes,48,opt,name=upstream_config,json=upstreamConfig,proto3" json:"upstream_config,omitempty"` 920 // Configuration to track optional cluster stats. 921 TrackClusterStats *TrackClusterStats `protobuf:"bytes,49,opt,name=track_cluster_stats,json=trackClusterStats,proto3" json:"track_cluster_stats,omitempty"` 922 // Preconnect configuration for this cluster. 923 PreconnectPolicy *Cluster_PreconnectPolicy `protobuf:"bytes,50,opt,name=preconnect_policy,json=preconnectPolicy,proto3" json:"preconnect_policy,omitempty"` 924 // If `connection_pool_per_downstream_connection` is true, the cluster will use a separate 925 // connection pool for every downstream connection 926 ConnectionPoolPerDownstreamConnection bool `protobuf:"varint,51,opt,name=connection_pool_per_downstream_connection,json=connectionPoolPerDownstreamConnection,proto3" json:"connection_pool_per_downstream_connection,omitempty"` 927 // Deprecated: Do not use. 928 HiddenEnvoyDeprecatedHosts []*v32.Address `protobuf:"bytes,7,rep,name=hidden_envoy_deprecated_hosts,json=hiddenEnvoyDeprecatedHosts,proto3" json:"hidden_envoy_deprecated_hosts,omitempty"` 929 // Deprecated: Do not use. 930 HiddenEnvoyDeprecatedTlsContext *v33.UpstreamTlsContext `protobuf:"bytes,11,opt,name=hidden_envoy_deprecated_tls_context,json=hiddenEnvoyDeprecatedTlsContext,proto3" json:"hidden_envoy_deprecated_tls_context,omitempty"` 931 // Deprecated: Do not use. 932 HiddenEnvoyDeprecatedExtensionProtocolOptions map[string]*_struct.Struct `protobuf:"bytes,35,rep,name=hidden_envoy_deprecated_extension_protocol_options,json=hiddenEnvoyDeprecatedExtensionProtocolOptions,proto3" json:"hidden_envoy_deprecated_extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 933 } 934 935 func (x *Cluster) Reset() { 936 *x = Cluster{} 937 if protoimpl.UnsafeEnabled { 938 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[1] 939 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 940 ms.StoreMessageInfo(mi) 941 } 942 } 943 944 func (x *Cluster) String() string { 945 return protoimpl.X.MessageStringOf(x) 946 } 947 948 func (*Cluster) ProtoMessage() {} 949 950 func (x *Cluster) ProtoReflect() protoreflect.Message { 951 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[1] 952 if protoimpl.UnsafeEnabled && x != nil { 953 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 954 if ms.LoadMessageInfo() == nil { 955 ms.StoreMessageInfo(mi) 956 } 957 return ms 958 } 959 return mi.MessageOf(x) 960 } 961 962 // Deprecated: Use Cluster.ProtoReflect.Descriptor instead. 963 func (*Cluster) Descriptor() ([]byte, []int) { 964 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1} 965 } 966 967 func (x *Cluster) GetTransportSocketMatches() []*Cluster_TransportSocketMatch { 968 if x != nil { 969 return x.TransportSocketMatches 970 } 971 return nil 972 } 973 974 func (x *Cluster) GetName() string { 975 if x != nil { 976 return x.Name 977 } 978 return "" 979 } 980 981 func (x *Cluster) GetAltStatName() string { 982 if x != nil { 983 return x.AltStatName 984 } 985 return "" 986 } 987 988 func (m *Cluster) GetClusterDiscoveryType() isCluster_ClusterDiscoveryType { 989 if m != nil { 990 return m.ClusterDiscoveryType 991 } 992 return nil 993 } 994 995 func (x *Cluster) GetType() Cluster_DiscoveryType { 996 if x, ok := x.GetClusterDiscoveryType().(*Cluster_Type); ok { 997 return x.Type 998 } 999 return Cluster_STATIC 1000 } 1001 1002 func (x *Cluster) GetClusterType() *Cluster_CustomClusterType { 1003 if x, ok := x.GetClusterDiscoveryType().(*Cluster_ClusterType); ok { 1004 return x.ClusterType 1005 } 1006 return nil 1007 } 1008 1009 func (x *Cluster) GetEdsClusterConfig() *Cluster_EdsClusterConfig { 1010 if x != nil { 1011 return x.EdsClusterConfig 1012 } 1013 return nil 1014 } 1015 1016 func (x *Cluster) GetConnectTimeout() *duration.Duration { 1017 if x != nil { 1018 return x.ConnectTimeout 1019 } 1020 return nil 1021 } 1022 1023 func (x *Cluster) GetPerConnectionBufferLimitBytes() *wrappers.UInt32Value { 1024 if x != nil { 1025 return x.PerConnectionBufferLimitBytes 1026 } 1027 return nil 1028 } 1029 1030 func (x *Cluster) GetLbPolicy() Cluster_LbPolicy { 1031 if x != nil { 1032 return x.LbPolicy 1033 } 1034 return Cluster_ROUND_ROBIN 1035 } 1036 1037 func (x *Cluster) GetLoadAssignment() *v31.ClusterLoadAssignment { 1038 if x != nil { 1039 return x.LoadAssignment 1040 } 1041 return nil 1042 } 1043 1044 func (x *Cluster) GetHealthChecks() []*v32.HealthCheck { 1045 if x != nil { 1046 return x.HealthChecks 1047 } 1048 return nil 1049 } 1050 1051 // Deprecated: Do not use. 1052 func (x *Cluster) GetMaxRequestsPerConnection() *wrappers.UInt32Value { 1053 if x != nil { 1054 return x.MaxRequestsPerConnection 1055 } 1056 return nil 1057 } 1058 1059 func (x *Cluster) GetCircuitBreakers() *CircuitBreakers { 1060 if x != nil { 1061 return x.CircuitBreakers 1062 } 1063 return nil 1064 } 1065 1066 // Deprecated: Do not use. 1067 func (x *Cluster) GetUpstreamHttpProtocolOptions() *v32.UpstreamHttpProtocolOptions { 1068 if x != nil { 1069 return x.UpstreamHttpProtocolOptions 1070 } 1071 return nil 1072 } 1073 1074 // Deprecated: Do not use. 1075 func (x *Cluster) GetCommonHttpProtocolOptions() *v32.HttpProtocolOptions { 1076 if x != nil { 1077 return x.CommonHttpProtocolOptions 1078 } 1079 return nil 1080 } 1081 1082 // Deprecated: Do not use. 1083 func (x *Cluster) GetHttpProtocolOptions() *v32.Http1ProtocolOptions { 1084 if x != nil { 1085 return x.HttpProtocolOptions 1086 } 1087 return nil 1088 } 1089 1090 // Deprecated: Do not use. 1091 func (x *Cluster) GetHttp2ProtocolOptions() *v32.Http2ProtocolOptions { 1092 if x != nil { 1093 return x.Http2ProtocolOptions 1094 } 1095 return nil 1096 } 1097 1098 func (x *Cluster) GetTypedExtensionProtocolOptions() map[string]*any.Any { 1099 if x != nil { 1100 return x.TypedExtensionProtocolOptions 1101 } 1102 return nil 1103 } 1104 1105 func (x *Cluster) GetDnsRefreshRate() *duration.Duration { 1106 if x != nil { 1107 return x.DnsRefreshRate 1108 } 1109 return nil 1110 } 1111 1112 func (x *Cluster) GetDnsFailureRefreshRate() *Cluster_RefreshRate { 1113 if x != nil { 1114 return x.DnsFailureRefreshRate 1115 } 1116 return nil 1117 } 1118 1119 func (x *Cluster) GetRespectDnsTtl() bool { 1120 if x != nil { 1121 return x.RespectDnsTtl 1122 } 1123 return false 1124 } 1125 1126 func (x *Cluster) GetDnsLookupFamily() Cluster_DnsLookupFamily { 1127 if x != nil { 1128 return x.DnsLookupFamily 1129 } 1130 return Cluster_AUTO 1131 } 1132 1133 // Deprecated: Do not use. 1134 func (x *Cluster) GetDnsResolvers() []*v32.Address { 1135 if x != nil { 1136 return x.DnsResolvers 1137 } 1138 return nil 1139 } 1140 1141 // Deprecated: Do not use. 1142 func (x *Cluster) GetUseTcpForDnsLookups() bool { 1143 if x != nil { 1144 return x.UseTcpForDnsLookups 1145 } 1146 return false 1147 } 1148 1149 func (x *Cluster) GetDnsResolutionConfig() *v32.DnsResolutionConfig { 1150 if x != nil { 1151 return x.DnsResolutionConfig 1152 } 1153 return nil 1154 } 1155 1156 func (x *Cluster) GetTypedDnsResolverConfig() *v32.TypedExtensionConfig { 1157 if x != nil { 1158 return x.TypedDnsResolverConfig 1159 } 1160 return nil 1161 } 1162 1163 func (x *Cluster) GetWaitForWarmOnInit() *wrappers.BoolValue { 1164 if x != nil { 1165 return x.WaitForWarmOnInit 1166 } 1167 return nil 1168 } 1169 1170 func (x *Cluster) GetOutlierDetection() *OutlierDetection { 1171 if x != nil { 1172 return x.OutlierDetection 1173 } 1174 return nil 1175 } 1176 1177 func (x *Cluster) GetCleanupInterval() *duration.Duration { 1178 if x != nil { 1179 return x.CleanupInterval 1180 } 1181 return nil 1182 } 1183 1184 func (x *Cluster) GetUpstreamBindConfig() *v32.BindConfig { 1185 if x != nil { 1186 return x.UpstreamBindConfig 1187 } 1188 return nil 1189 } 1190 1191 func (x *Cluster) GetLbSubsetConfig() *Cluster_LbSubsetConfig { 1192 if x != nil { 1193 return x.LbSubsetConfig 1194 } 1195 return nil 1196 } 1197 1198 func (m *Cluster) GetLbConfig() isCluster_LbConfig { 1199 if m != nil { 1200 return m.LbConfig 1201 } 1202 return nil 1203 } 1204 1205 func (x *Cluster) GetRingHashLbConfig() *Cluster_RingHashLbConfig { 1206 if x, ok := x.GetLbConfig().(*Cluster_RingHashLbConfig_); ok { 1207 return x.RingHashLbConfig 1208 } 1209 return nil 1210 } 1211 1212 func (x *Cluster) GetMaglevLbConfig() *Cluster_MaglevLbConfig { 1213 if x, ok := x.GetLbConfig().(*Cluster_MaglevLbConfig_); ok { 1214 return x.MaglevLbConfig 1215 } 1216 return nil 1217 } 1218 1219 func (x *Cluster) GetOriginalDstLbConfig() *Cluster_OriginalDstLbConfig { 1220 if x, ok := x.GetLbConfig().(*Cluster_OriginalDstLbConfig_); ok { 1221 return x.OriginalDstLbConfig 1222 } 1223 return nil 1224 } 1225 1226 func (x *Cluster) GetLeastRequestLbConfig() *Cluster_LeastRequestLbConfig { 1227 if x, ok := x.GetLbConfig().(*Cluster_LeastRequestLbConfig_); ok { 1228 return x.LeastRequestLbConfig 1229 } 1230 return nil 1231 } 1232 1233 func (x *Cluster) GetCommonLbConfig() *Cluster_CommonLbConfig { 1234 if x != nil { 1235 return x.CommonLbConfig 1236 } 1237 return nil 1238 } 1239 1240 func (x *Cluster) GetTransportSocket() *v32.TransportSocket { 1241 if x != nil { 1242 return x.TransportSocket 1243 } 1244 return nil 1245 } 1246 1247 func (x *Cluster) GetMetadata() *v32.Metadata { 1248 if x != nil { 1249 return x.Metadata 1250 } 1251 return nil 1252 } 1253 1254 // Deprecated: Do not use. 1255 func (x *Cluster) GetProtocolSelection() Cluster_ClusterProtocolSelection { 1256 if x != nil { 1257 return x.ProtocolSelection 1258 } 1259 return Cluster_USE_CONFIGURED_PROTOCOL 1260 } 1261 1262 func (x *Cluster) GetUpstreamConnectionOptions() *UpstreamConnectionOptions { 1263 if x != nil { 1264 return x.UpstreamConnectionOptions 1265 } 1266 return nil 1267 } 1268 1269 func (x *Cluster) GetCloseConnectionsOnHostHealthFailure() bool { 1270 if x != nil { 1271 return x.CloseConnectionsOnHostHealthFailure 1272 } 1273 return false 1274 } 1275 1276 func (x *Cluster) GetIgnoreHealthOnHostRemoval() bool { 1277 if x != nil { 1278 return x.IgnoreHealthOnHostRemoval 1279 } 1280 return false 1281 } 1282 1283 func (x *Cluster) GetFilters() []*Filter { 1284 if x != nil { 1285 return x.Filters 1286 } 1287 return nil 1288 } 1289 1290 func (x *Cluster) GetLoadBalancingPolicy() *LoadBalancingPolicy { 1291 if x != nil { 1292 return x.LoadBalancingPolicy 1293 } 1294 return nil 1295 } 1296 1297 func (x *Cluster) GetLrsServer() *v32.ConfigSource { 1298 if x != nil { 1299 return x.LrsServer 1300 } 1301 return nil 1302 } 1303 1304 // Deprecated: Do not use. 1305 func (x *Cluster) GetTrackTimeoutBudgets() bool { 1306 if x != nil { 1307 return x.TrackTimeoutBudgets 1308 } 1309 return false 1310 } 1311 1312 func (x *Cluster) GetUpstreamConfig() *v32.TypedExtensionConfig { 1313 if x != nil { 1314 return x.UpstreamConfig 1315 } 1316 return nil 1317 } 1318 1319 func (x *Cluster) GetTrackClusterStats() *TrackClusterStats { 1320 if x != nil { 1321 return x.TrackClusterStats 1322 } 1323 return nil 1324 } 1325 1326 func (x *Cluster) GetPreconnectPolicy() *Cluster_PreconnectPolicy { 1327 if x != nil { 1328 return x.PreconnectPolicy 1329 } 1330 return nil 1331 } 1332 1333 func (x *Cluster) GetConnectionPoolPerDownstreamConnection() bool { 1334 if x != nil { 1335 return x.ConnectionPoolPerDownstreamConnection 1336 } 1337 return false 1338 } 1339 1340 // Deprecated: Do not use. 1341 func (x *Cluster) GetHiddenEnvoyDeprecatedHosts() []*v32.Address { 1342 if x != nil { 1343 return x.HiddenEnvoyDeprecatedHosts 1344 } 1345 return nil 1346 } 1347 1348 // Deprecated: Do not use. 1349 func (x *Cluster) GetHiddenEnvoyDeprecatedTlsContext() *v33.UpstreamTlsContext { 1350 if x != nil { 1351 return x.HiddenEnvoyDeprecatedTlsContext 1352 } 1353 return nil 1354 } 1355 1356 // Deprecated: Do not use. 1357 func (x *Cluster) GetHiddenEnvoyDeprecatedExtensionProtocolOptions() map[string]*_struct.Struct { 1358 if x != nil { 1359 return x.HiddenEnvoyDeprecatedExtensionProtocolOptions 1360 } 1361 return nil 1362 } 1363 1364 type isCluster_ClusterDiscoveryType interface { 1365 isCluster_ClusterDiscoveryType() 1366 } 1367 1368 type Cluster_Type struct { 1369 // The :ref:`service discovery type <arch_overview_service_discovery_types>` 1370 // to use for resolving the cluster. 1371 Type Cluster_DiscoveryType `protobuf:"varint,2,opt,name=type,proto3,enum=envoy.config.cluster.v3.Cluster_DiscoveryType,oneof"` 1372 } 1373 1374 type Cluster_ClusterType struct { 1375 // The custom cluster type. 1376 ClusterType *Cluster_CustomClusterType `protobuf:"bytes,38,opt,name=cluster_type,json=clusterType,proto3,oneof"` 1377 } 1378 1379 func (*Cluster_Type) isCluster_ClusterDiscoveryType() {} 1380 1381 func (*Cluster_ClusterType) isCluster_ClusterDiscoveryType() {} 1382 1383 type isCluster_LbConfig interface { 1384 isCluster_LbConfig() 1385 } 1386 1387 type Cluster_RingHashLbConfig_ struct { 1388 // Optional configuration for the Ring Hash load balancing policy. 1389 RingHashLbConfig *Cluster_RingHashLbConfig `protobuf:"bytes,23,opt,name=ring_hash_lb_config,json=ringHashLbConfig,proto3,oneof"` 1390 } 1391 1392 type Cluster_MaglevLbConfig_ struct { 1393 // Optional configuration for the Maglev load balancing policy. 1394 MaglevLbConfig *Cluster_MaglevLbConfig `protobuf:"bytes,52,opt,name=maglev_lb_config,json=maglevLbConfig,proto3,oneof"` 1395 } 1396 1397 type Cluster_OriginalDstLbConfig_ struct { 1398 // Optional configuration for the Original Destination load balancing policy. 1399 OriginalDstLbConfig *Cluster_OriginalDstLbConfig `protobuf:"bytes,34,opt,name=original_dst_lb_config,json=originalDstLbConfig,proto3,oneof"` 1400 } 1401 1402 type Cluster_LeastRequestLbConfig_ struct { 1403 // Optional configuration for the LeastRequest load balancing policy. 1404 LeastRequestLbConfig *Cluster_LeastRequestLbConfig `protobuf:"bytes,37,opt,name=least_request_lb_config,json=leastRequestLbConfig,proto3,oneof"` 1405 } 1406 1407 func (*Cluster_RingHashLbConfig_) isCluster_LbConfig() {} 1408 1409 func (*Cluster_MaglevLbConfig_) isCluster_LbConfig() {} 1410 1411 func (*Cluster_OriginalDstLbConfig_) isCluster_LbConfig() {} 1412 1413 func (*Cluster_LeastRequestLbConfig_) isCluster_LbConfig() {} 1414 1415 // Extensible load balancing policy configuration. 1416 // 1417 // Every LB policy defined via this mechanism will be identified via a unique name using reverse 1418 // DNS notation. If the policy needs configuration parameters, it must define a message for its 1419 // own configuration, which will be stored in the config field. The name of the policy will tell 1420 // clients which type of message they should expect to see in the config field. 1421 // 1422 // Note that there are cases where it is useful to be able to independently select LB policies 1423 // for choosing a locality and for choosing an endpoint within that locality. For example, a 1424 // given deployment may always use the same policy to choose the locality, but for choosing the 1425 // endpoint within the locality, some clusters may use weighted-round-robin, while others may 1426 // use some sort of session-based balancing. 1427 // 1428 // This can be accomplished via hierarchical LB policies, where the parent LB policy creates a 1429 // child LB policy for each locality. For each request, the parent chooses the locality and then 1430 // delegates to the child policy for that locality to choose the endpoint within the locality. 1431 // 1432 // To facilitate this, the config message for the top-level LB policy may include a field of 1433 // type LoadBalancingPolicy that specifies the child policy. 1434 type LoadBalancingPolicy struct { 1435 state protoimpl.MessageState 1436 sizeCache protoimpl.SizeCache 1437 unknownFields protoimpl.UnknownFields 1438 1439 // Each client will iterate over the list in order and stop at the first policy that it 1440 // supports. This provides a mechanism for starting to use new LB policies that are not yet 1441 // supported by all clients. 1442 Policies []*LoadBalancingPolicy_Policy `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` 1443 } 1444 1445 func (x *LoadBalancingPolicy) Reset() { 1446 *x = LoadBalancingPolicy{} 1447 if protoimpl.UnsafeEnabled { 1448 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[2] 1449 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1450 ms.StoreMessageInfo(mi) 1451 } 1452 } 1453 1454 func (x *LoadBalancingPolicy) String() string { 1455 return protoimpl.X.MessageStringOf(x) 1456 } 1457 1458 func (*LoadBalancingPolicy) ProtoMessage() {} 1459 1460 func (x *LoadBalancingPolicy) ProtoReflect() protoreflect.Message { 1461 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[2] 1462 if protoimpl.UnsafeEnabled && x != nil { 1463 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1464 if ms.LoadMessageInfo() == nil { 1465 ms.StoreMessageInfo(mi) 1466 } 1467 return ms 1468 } 1469 return mi.MessageOf(x) 1470 } 1471 1472 // Deprecated: Use LoadBalancingPolicy.ProtoReflect.Descriptor instead. 1473 func (*LoadBalancingPolicy) Descriptor() ([]byte, []int) { 1474 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{2} 1475 } 1476 1477 func (x *LoadBalancingPolicy) GetPolicies() []*LoadBalancingPolicy_Policy { 1478 if x != nil { 1479 return x.Policies 1480 } 1481 return nil 1482 } 1483 1484 // An extensible structure containing the address Envoy should bind to when 1485 // establishing upstream connections. 1486 type UpstreamBindConfig struct { 1487 state protoimpl.MessageState 1488 sizeCache protoimpl.SizeCache 1489 unknownFields protoimpl.UnknownFields 1490 1491 // The address Envoy should bind to when establishing upstream connections. 1492 SourceAddress *v32.Address `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3" json:"source_address,omitempty"` 1493 } 1494 1495 func (x *UpstreamBindConfig) Reset() { 1496 *x = UpstreamBindConfig{} 1497 if protoimpl.UnsafeEnabled { 1498 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[3] 1499 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1500 ms.StoreMessageInfo(mi) 1501 } 1502 } 1503 1504 func (x *UpstreamBindConfig) String() string { 1505 return protoimpl.X.MessageStringOf(x) 1506 } 1507 1508 func (*UpstreamBindConfig) ProtoMessage() {} 1509 1510 func (x *UpstreamBindConfig) ProtoReflect() protoreflect.Message { 1511 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[3] 1512 if protoimpl.UnsafeEnabled && x != nil { 1513 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1514 if ms.LoadMessageInfo() == nil { 1515 ms.StoreMessageInfo(mi) 1516 } 1517 return ms 1518 } 1519 return mi.MessageOf(x) 1520 } 1521 1522 // Deprecated: Use UpstreamBindConfig.ProtoReflect.Descriptor instead. 1523 func (*UpstreamBindConfig) Descriptor() ([]byte, []int) { 1524 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{3} 1525 } 1526 1527 func (x *UpstreamBindConfig) GetSourceAddress() *v32.Address { 1528 if x != nil { 1529 return x.SourceAddress 1530 } 1531 return nil 1532 } 1533 1534 type UpstreamConnectionOptions struct { 1535 state protoimpl.MessageState 1536 sizeCache protoimpl.SizeCache 1537 unknownFields protoimpl.UnknownFields 1538 1539 // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. 1540 TcpKeepalive *v32.TcpKeepalive `protobuf:"bytes,1,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"` 1541 } 1542 1543 func (x *UpstreamConnectionOptions) Reset() { 1544 *x = UpstreamConnectionOptions{} 1545 if protoimpl.UnsafeEnabled { 1546 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[4] 1547 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1548 ms.StoreMessageInfo(mi) 1549 } 1550 } 1551 1552 func (x *UpstreamConnectionOptions) String() string { 1553 return protoimpl.X.MessageStringOf(x) 1554 } 1555 1556 func (*UpstreamConnectionOptions) ProtoMessage() {} 1557 1558 func (x *UpstreamConnectionOptions) ProtoReflect() protoreflect.Message { 1559 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[4] 1560 if protoimpl.UnsafeEnabled && x != nil { 1561 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1562 if ms.LoadMessageInfo() == nil { 1563 ms.StoreMessageInfo(mi) 1564 } 1565 return ms 1566 } 1567 return mi.MessageOf(x) 1568 } 1569 1570 // Deprecated: Use UpstreamConnectionOptions.ProtoReflect.Descriptor instead. 1571 func (*UpstreamConnectionOptions) Descriptor() ([]byte, []int) { 1572 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{4} 1573 } 1574 1575 func (x *UpstreamConnectionOptions) GetTcpKeepalive() *v32.TcpKeepalive { 1576 if x != nil { 1577 return x.TcpKeepalive 1578 } 1579 return nil 1580 } 1581 1582 type TrackClusterStats struct { 1583 state protoimpl.MessageState 1584 sizeCache protoimpl.SizeCache 1585 unknownFields protoimpl.UnknownFields 1586 1587 // If timeout_budgets is true, the :ref:`timeout budget histograms 1588 // <config_cluster_manager_cluster_stats_timeout_budgets>` will be published for each 1589 // request. These show what percentage of a request's per try and global timeout was used. A value 1590 // of 0 would indicate that none of the timeout was used or that the timeout was infinite. A value 1591 // of 100 would indicate that the request took the entirety of the timeout given to it. 1592 TimeoutBudgets bool `protobuf:"varint,1,opt,name=timeout_budgets,json=timeoutBudgets,proto3" json:"timeout_budgets,omitempty"` 1593 // If request_response_sizes is true, then the :ref:`histograms 1594 // <config_cluster_manager_cluster_stats_request_response_sizes>` tracking header and body sizes 1595 // of requests and responses will be published. 1596 RequestResponseSizes bool `protobuf:"varint,2,opt,name=request_response_sizes,json=requestResponseSizes,proto3" json:"request_response_sizes,omitempty"` 1597 } 1598 1599 func (x *TrackClusterStats) Reset() { 1600 *x = TrackClusterStats{} 1601 if protoimpl.UnsafeEnabled { 1602 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[5] 1603 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1604 ms.StoreMessageInfo(mi) 1605 } 1606 } 1607 1608 func (x *TrackClusterStats) String() string { 1609 return protoimpl.X.MessageStringOf(x) 1610 } 1611 1612 func (*TrackClusterStats) ProtoMessage() {} 1613 1614 func (x *TrackClusterStats) ProtoReflect() protoreflect.Message { 1615 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[5] 1616 if protoimpl.UnsafeEnabled && x != nil { 1617 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1618 if ms.LoadMessageInfo() == nil { 1619 ms.StoreMessageInfo(mi) 1620 } 1621 return ms 1622 } 1623 return mi.MessageOf(x) 1624 } 1625 1626 // Deprecated: Use TrackClusterStats.ProtoReflect.Descriptor instead. 1627 func (*TrackClusterStats) Descriptor() ([]byte, []int) { 1628 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{5} 1629 } 1630 1631 func (x *TrackClusterStats) GetTimeoutBudgets() bool { 1632 if x != nil { 1633 return x.TimeoutBudgets 1634 } 1635 return false 1636 } 1637 1638 func (x *TrackClusterStats) GetRequestResponseSizes() bool { 1639 if x != nil { 1640 return x.RequestResponseSizes 1641 } 1642 return false 1643 } 1644 1645 // TransportSocketMatch specifies what transport socket config will be used 1646 // when the match conditions are satisfied. 1647 type Cluster_TransportSocketMatch struct { 1648 state protoimpl.MessageState 1649 sizeCache protoimpl.SizeCache 1650 unknownFields protoimpl.UnknownFields 1651 1652 // The name of the match, used in stats generation. 1653 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1654 // Optional endpoint metadata match criteria. 1655 // The connection to the endpoint with metadata matching what is set in this field 1656 // will use the transport socket configuration specified here. 1657 // The endpoint's metadata entry in *envoy.transport_socket_match* is used to match 1658 // against the values specified in this field. 1659 Match *_struct.Struct `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` 1660 // The configuration of the transport socket. 1661 // [#extension-category: envoy.transport_sockets.upstream] 1662 TransportSocket *v32.TransportSocket `protobuf:"bytes,3,opt,name=transport_socket,json=transportSocket,proto3" json:"transport_socket,omitempty"` 1663 } 1664 1665 func (x *Cluster_TransportSocketMatch) Reset() { 1666 *x = Cluster_TransportSocketMatch{} 1667 if protoimpl.UnsafeEnabled { 1668 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[6] 1669 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1670 ms.StoreMessageInfo(mi) 1671 } 1672 } 1673 1674 func (x *Cluster_TransportSocketMatch) String() string { 1675 return protoimpl.X.MessageStringOf(x) 1676 } 1677 1678 func (*Cluster_TransportSocketMatch) ProtoMessage() {} 1679 1680 func (x *Cluster_TransportSocketMatch) ProtoReflect() protoreflect.Message { 1681 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[6] 1682 if protoimpl.UnsafeEnabled && x != nil { 1683 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1684 if ms.LoadMessageInfo() == nil { 1685 ms.StoreMessageInfo(mi) 1686 } 1687 return ms 1688 } 1689 return mi.MessageOf(x) 1690 } 1691 1692 // Deprecated: Use Cluster_TransportSocketMatch.ProtoReflect.Descriptor instead. 1693 func (*Cluster_TransportSocketMatch) Descriptor() ([]byte, []int) { 1694 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 0} 1695 } 1696 1697 func (x *Cluster_TransportSocketMatch) GetName() string { 1698 if x != nil { 1699 return x.Name 1700 } 1701 return "" 1702 } 1703 1704 func (x *Cluster_TransportSocketMatch) GetMatch() *_struct.Struct { 1705 if x != nil { 1706 return x.Match 1707 } 1708 return nil 1709 } 1710 1711 func (x *Cluster_TransportSocketMatch) GetTransportSocket() *v32.TransportSocket { 1712 if x != nil { 1713 return x.TransportSocket 1714 } 1715 return nil 1716 } 1717 1718 // Extended cluster type. 1719 type Cluster_CustomClusterType struct { 1720 state protoimpl.MessageState 1721 sizeCache protoimpl.SizeCache 1722 unknownFields protoimpl.UnknownFields 1723 1724 // The type of the cluster to instantiate. The name must match a supported cluster type. 1725 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1726 // Cluster specific configuration which depends on the cluster being instantiated. 1727 // See the supported cluster for further documentation. 1728 // [#extension-category: envoy.clusters] 1729 TypedConfig *any.Any `protobuf:"bytes,2,opt,name=typed_config,json=typedConfig,proto3" json:"typed_config,omitempty"` 1730 } 1731 1732 func (x *Cluster_CustomClusterType) Reset() { 1733 *x = Cluster_CustomClusterType{} 1734 if protoimpl.UnsafeEnabled { 1735 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[7] 1736 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1737 ms.StoreMessageInfo(mi) 1738 } 1739 } 1740 1741 func (x *Cluster_CustomClusterType) String() string { 1742 return protoimpl.X.MessageStringOf(x) 1743 } 1744 1745 func (*Cluster_CustomClusterType) ProtoMessage() {} 1746 1747 func (x *Cluster_CustomClusterType) ProtoReflect() protoreflect.Message { 1748 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[7] 1749 if protoimpl.UnsafeEnabled && x != nil { 1750 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1751 if ms.LoadMessageInfo() == nil { 1752 ms.StoreMessageInfo(mi) 1753 } 1754 return ms 1755 } 1756 return mi.MessageOf(x) 1757 } 1758 1759 // Deprecated: Use Cluster_CustomClusterType.ProtoReflect.Descriptor instead. 1760 func (*Cluster_CustomClusterType) Descriptor() ([]byte, []int) { 1761 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 1} 1762 } 1763 1764 func (x *Cluster_CustomClusterType) GetName() string { 1765 if x != nil { 1766 return x.Name 1767 } 1768 return "" 1769 } 1770 1771 func (x *Cluster_CustomClusterType) GetTypedConfig() *any.Any { 1772 if x != nil { 1773 return x.TypedConfig 1774 } 1775 return nil 1776 } 1777 1778 // Only valid when discovery type is EDS. 1779 type Cluster_EdsClusterConfig struct { 1780 state protoimpl.MessageState 1781 sizeCache protoimpl.SizeCache 1782 unknownFields protoimpl.UnknownFields 1783 1784 // Configuration for the source of EDS updates for this Cluster. 1785 EdsConfig *v32.ConfigSource `protobuf:"bytes,1,opt,name=eds_config,json=edsConfig,proto3" json:"eds_config,omitempty"` 1786 // Optional alternative to cluster name to present to EDS. This does not 1787 // have the same restrictions as cluster name, i.e. it may be arbitrary 1788 // length. This may be a xdstp:// URL. 1789 ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` 1790 } 1791 1792 func (x *Cluster_EdsClusterConfig) Reset() { 1793 *x = Cluster_EdsClusterConfig{} 1794 if protoimpl.UnsafeEnabled { 1795 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[8] 1796 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1797 ms.StoreMessageInfo(mi) 1798 } 1799 } 1800 1801 func (x *Cluster_EdsClusterConfig) String() string { 1802 return protoimpl.X.MessageStringOf(x) 1803 } 1804 1805 func (*Cluster_EdsClusterConfig) ProtoMessage() {} 1806 1807 func (x *Cluster_EdsClusterConfig) ProtoReflect() protoreflect.Message { 1808 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[8] 1809 if protoimpl.UnsafeEnabled && x != nil { 1810 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1811 if ms.LoadMessageInfo() == nil { 1812 ms.StoreMessageInfo(mi) 1813 } 1814 return ms 1815 } 1816 return mi.MessageOf(x) 1817 } 1818 1819 // Deprecated: Use Cluster_EdsClusterConfig.ProtoReflect.Descriptor instead. 1820 func (*Cluster_EdsClusterConfig) Descriptor() ([]byte, []int) { 1821 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 2} 1822 } 1823 1824 func (x *Cluster_EdsClusterConfig) GetEdsConfig() *v32.ConfigSource { 1825 if x != nil { 1826 return x.EdsConfig 1827 } 1828 return nil 1829 } 1830 1831 func (x *Cluster_EdsClusterConfig) GetServiceName() string { 1832 if x != nil { 1833 return x.ServiceName 1834 } 1835 return "" 1836 } 1837 1838 // Optionally divide the endpoints in this cluster into subsets defined by 1839 // endpoint metadata and selected by route and weighted cluster metadata. 1840 // [#next-free-field: 8] 1841 type Cluster_LbSubsetConfig struct { 1842 state protoimpl.MessageState 1843 sizeCache protoimpl.SizeCache 1844 unknownFields protoimpl.UnknownFields 1845 1846 // The behavior used when no endpoint subset matches the selected route's 1847 // metadata. The value defaults to 1848 // :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`. 1849 FallbackPolicy Cluster_LbSubsetConfig_LbSubsetFallbackPolicy `protobuf:"varint,1,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.config.cluster.v3.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy" json:"fallback_policy,omitempty"` 1850 // Specifies the default subset of endpoints used during fallback if 1851 // fallback_policy is 1852 // :ref:`DEFAULT_SUBSET<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`. 1853 // Each field in default_subset is 1854 // compared to the matching LbEndpoint.Metadata under the *envoy.lb* 1855 // namespace. It is valid for no hosts to match, in which case the behavior 1856 // is the same as a fallback_policy of 1857 // :ref:`NO_FALLBACK<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`. 1858 DefaultSubset *_struct.Struct `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"` 1859 // For each entry, LbEndpoint.Metadata's 1860 // *envoy.lb* namespace is traversed and a subset is created for each unique 1861 // combination of key and value. For example: 1862 // 1863 // .. code-block:: json 1864 // 1865 // { "subset_selectors": [ 1866 // { "keys": [ "version" ] }, 1867 // { "keys": [ "stage", "hardware_type" ] } 1868 // ]} 1869 // 1870 // A subset is matched when the metadata from the selected route and 1871 // weighted cluster contains the same keys and values as the subset's 1872 // metadata. The same host may appear in multiple subsets. 1873 SubsetSelectors []*Cluster_LbSubsetConfig_LbSubsetSelector `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors,proto3" json:"subset_selectors,omitempty"` 1874 // If true, routing to subsets will take into account the localities and locality weights of the 1875 // endpoints when making the routing decision. 1876 // 1877 // There are some potential pitfalls associated with enabling this feature, as the resulting 1878 // traffic split after applying both a subset match and locality weights might be undesirable. 1879 // 1880 // Consider for example a situation in which you have 50/50 split across two localities X/Y 1881 // which have 100 hosts each without subsetting. If the subset LB results in X having only 1 1882 // host selected but Y having 100, then a lot more load is being dumped on the single host in X 1883 // than originally anticipated in the load balancing assignment delivered via EDS. 1884 LocalityWeightAware bool `protobuf:"varint,4,opt,name=locality_weight_aware,json=localityWeightAware,proto3" json:"locality_weight_aware,omitempty"` 1885 // When used with locality_weight_aware, scales the weight of each locality by the ratio 1886 // of hosts in the subset vs hosts in the original subset. This aims to even out the load 1887 // going to an individual locality if said locality is disproportionately affected by the 1888 // subset predicate. 1889 ScaleLocalityWeight bool `protobuf:"varint,5,opt,name=scale_locality_weight,json=scaleLocalityWeight,proto3" json:"scale_locality_weight,omitempty"` 1890 // If true, when a fallback policy is configured and its corresponding subset fails to find 1891 // a host this will cause any host to be selected instead. 1892 // 1893 // This is useful when using the default subset as the fallback policy, given the default 1894 // subset might become empty. With this option enabled, if that happens the LB will attempt 1895 // to select a host from the entire cluster. 1896 PanicModeAny bool `protobuf:"varint,6,opt,name=panic_mode_any,json=panicModeAny,proto3" json:"panic_mode_any,omitempty"` 1897 // If true, metadata specified for a metadata key will be matched against the corresponding 1898 // endpoint metadata if the endpoint metadata matches the value exactly OR it is a list value 1899 // and any of the elements in the list matches the criteria. 1900 ListAsAny bool `protobuf:"varint,7,opt,name=list_as_any,json=listAsAny,proto3" json:"list_as_any,omitempty"` 1901 } 1902 1903 func (x *Cluster_LbSubsetConfig) Reset() { 1904 *x = Cluster_LbSubsetConfig{} 1905 if protoimpl.UnsafeEnabled { 1906 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[9] 1907 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1908 ms.StoreMessageInfo(mi) 1909 } 1910 } 1911 1912 func (x *Cluster_LbSubsetConfig) String() string { 1913 return protoimpl.X.MessageStringOf(x) 1914 } 1915 1916 func (*Cluster_LbSubsetConfig) ProtoMessage() {} 1917 1918 func (x *Cluster_LbSubsetConfig) ProtoReflect() protoreflect.Message { 1919 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[9] 1920 if protoimpl.UnsafeEnabled && x != nil { 1921 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1922 if ms.LoadMessageInfo() == nil { 1923 ms.StoreMessageInfo(mi) 1924 } 1925 return ms 1926 } 1927 return mi.MessageOf(x) 1928 } 1929 1930 // Deprecated: Use Cluster_LbSubsetConfig.ProtoReflect.Descriptor instead. 1931 func (*Cluster_LbSubsetConfig) Descriptor() ([]byte, []int) { 1932 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 3} 1933 } 1934 1935 func (x *Cluster_LbSubsetConfig) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetFallbackPolicy { 1936 if x != nil { 1937 return x.FallbackPolicy 1938 } 1939 return Cluster_LbSubsetConfig_NO_FALLBACK 1940 } 1941 1942 func (x *Cluster_LbSubsetConfig) GetDefaultSubset() *_struct.Struct { 1943 if x != nil { 1944 return x.DefaultSubset 1945 } 1946 return nil 1947 } 1948 1949 func (x *Cluster_LbSubsetConfig) GetSubsetSelectors() []*Cluster_LbSubsetConfig_LbSubsetSelector { 1950 if x != nil { 1951 return x.SubsetSelectors 1952 } 1953 return nil 1954 } 1955 1956 func (x *Cluster_LbSubsetConfig) GetLocalityWeightAware() bool { 1957 if x != nil { 1958 return x.LocalityWeightAware 1959 } 1960 return false 1961 } 1962 1963 func (x *Cluster_LbSubsetConfig) GetScaleLocalityWeight() bool { 1964 if x != nil { 1965 return x.ScaleLocalityWeight 1966 } 1967 return false 1968 } 1969 1970 func (x *Cluster_LbSubsetConfig) GetPanicModeAny() bool { 1971 if x != nil { 1972 return x.PanicModeAny 1973 } 1974 return false 1975 } 1976 1977 func (x *Cluster_LbSubsetConfig) GetListAsAny() bool { 1978 if x != nil { 1979 return x.ListAsAny 1980 } 1981 return false 1982 } 1983 1984 // Specific configuration for the LeastRequest load balancing policy. 1985 type Cluster_LeastRequestLbConfig struct { 1986 state protoimpl.MessageState 1987 sizeCache protoimpl.SizeCache 1988 unknownFields protoimpl.UnknownFields 1989 1990 // The number of random healthy hosts from which the host with the fewest active requests will 1991 // be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set. 1992 ChoiceCount *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=choice_count,json=choiceCount,proto3" json:"choice_count,omitempty"` 1993 // The following formula is used to calculate the dynamic weights when hosts have different load 1994 // balancing weights: 1995 // 1996 // `weight = load_balancing_weight / (active_requests + 1)^active_request_bias` 1997 // 1998 // The larger the active request bias is, the more aggressively active requests will lower the 1999 // effective weight when all host weights are not equal. 2000 // 2001 // `active_request_bias` must be greater than or equal to 0.0. 2002 // 2003 // When `active_request_bias == 0.0` the Least Request Load Balancer doesn't consider the number 2004 // of active requests at the time it picks a host and behaves like the Round Robin Load 2005 // Balancer. 2006 // 2007 // When `active_request_bias > 0.0` the Least Request Load Balancer scales the load balancing 2008 // weight by the number of active requests at the time it does a pick. 2009 // 2010 // The value is cached for performance reasons and refreshed whenever one of the Load Balancer's 2011 // host sets changes, e.g., whenever there is a host membership update or a host load balancing 2012 // weight change. 2013 // 2014 // .. note:: 2015 // This setting only takes effect if all host weights are not equal. 2016 ActiveRequestBias *v32.RuntimeDouble `protobuf:"bytes,2,opt,name=active_request_bias,json=activeRequestBias,proto3" json:"active_request_bias,omitempty"` 2017 } 2018 2019 func (x *Cluster_LeastRequestLbConfig) Reset() { 2020 *x = Cluster_LeastRequestLbConfig{} 2021 if protoimpl.UnsafeEnabled { 2022 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[10] 2023 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2024 ms.StoreMessageInfo(mi) 2025 } 2026 } 2027 2028 func (x *Cluster_LeastRequestLbConfig) String() string { 2029 return protoimpl.X.MessageStringOf(x) 2030 } 2031 2032 func (*Cluster_LeastRequestLbConfig) ProtoMessage() {} 2033 2034 func (x *Cluster_LeastRequestLbConfig) ProtoReflect() protoreflect.Message { 2035 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[10] 2036 if protoimpl.UnsafeEnabled && x != nil { 2037 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2038 if ms.LoadMessageInfo() == nil { 2039 ms.StoreMessageInfo(mi) 2040 } 2041 return ms 2042 } 2043 return mi.MessageOf(x) 2044 } 2045 2046 // Deprecated: Use Cluster_LeastRequestLbConfig.ProtoReflect.Descriptor instead. 2047 func (*Cluster_LeastRequestLbConfig) Descriptor() ([]byte, []int) { 2048 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 4} 2049 } 2050 2051 func (x *Cluster_LeastRequestLbConfig) GetChoiceCount() *wrappers.UInt32Value { 2052 if x != nil { 2053 return x.ChoiceCount 2054 } 2055 return nil 2056 } 2057 2058 func (x *Cluster_LeastRequestLbConfig) GetActiveRequestBias() *v32.RuntimeDouble { 2059 if x != nil { 2060 return x.ActiveRequestBias 2061 } 2062 return nil 2063 } 2064 2065 // Specific configuration for the :ref:`RingHash<arch_overview_load_balancing_types_ring_hash>` 2066 // load balancing policy. 2067 type Cluster_RingHashLbConfig struct { 2068 state protoimpl.MessageState 2069 sizeCache protoimpl.SizeCache 2070 unknownFields protoimpl.UnknownFields 2071 2072 // Minimum hash ring size. The larger the ring is (that is, the more hashes there are for each 2073 // provided host) the better the request distribution will reflect the desired weights. Defaults 2074 // to 1024 entries, and limited to 8M entries. See also 2075 // :ref:`maximum_ring_size<envoy_v3_api_field_config.cluster.v3.Cluster.RingHashLbConfig.maximum_ring_size>`. 2076 MinimumRingSize *wrappers.UInt64Value `protobuf:"bytes,1,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` 2077 // The hash function used to hash hosts onto the ketama ring. The value defaults to 2078 // :ref:`XX_HASH<envoy_v3_api_enum_value_config.cluster.v3.Cluster.RingHashLbConfig.HashFunction.XX_HASH>`. 2079 HashFunction Cluster_RingHashLbConfig_HashFunction `protobuf:"varint,3,opt,name=hash_function,json=hashFunction,proto3,enum=envoy.config.cluster.v3.Cluster_RingHashLbConfig_HashFunction" json:"hash_function,omitempty"` 2080 // Maximum hash ring size. Defaults to 8M entries, and limited to 8M entries, but can be lowered 2081 // to further constrain resource use. See also 2082 // :ref:`minimum_ring_size<envoy_v3_api_field_config.cluster.v3.Cluster.RingHashLbConfig.minimum_ring_size>`. 2083 MaximumRingSize *wrappers.UInt64Value `protobuf:"bytes,4,opt,name=maximum_ring_size,json=maximumRingSize,proto3" json:"maximum_ring_size,omitempty"` 2084 } 2085 2086 func (x *Cluster_RingHashLbConfig) Reset() { 2087 *x = Cluster_RingHashLbConfig{} 2088 if protoimpl.UnsafeEnabled { 2089 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[11] 2090 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2091 ms.StoreMessageInfo(mi) 2092 } 2093 } 2094 2095 func (x *Cluster_RingHashLbConfig) String() string { 2096 return protoimpl.X.MessageStringOf(x) 2097 } 2098 2099 func (*Cluster_RingHashLbConfig) ProtoMessage() {} 2100 2101 func (x *Cluster_RingHashLbConfig) ProtoReflect() protoreflect.Message { 2102 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[11] 2103 if protoimpl.UnsafeEnabled && x != nil { 2104 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2105 if ms.LoadMessageInfo() == nil { 2106 ms.StoreMessageInfo(mi) 2107 } 2108 return ms 2109 } 2110 return mi.MessageOf(x) 2111 } 2112 2113 // Deprecated: Use Cluster_RingHashLbConfig.ProtoReflect.Descriptor instead. 2114 func (*Cluster_RingHashLbConfig) Descriptor() ([]byte, []int) { 2115 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 5} 2116 } 2117 2118 func (x *Cluster_RingHashLbConfig) GetMinimumRingSize() *wrappers.UInt64Value { 2119 if x != nil { 2120 return x.MinimumRingSize 2121 } 2122 return nil 2123 } 2124 2125 func (x *Cluster_RingHashLbConfig) GetHashFunction() Cluster_RingHashLbConfig_HashFunction { 2126 if x != nil { 2127 return x.HashFunction 2128 } 2129 return Cluster_RingHashLbConfig_XX_HASH 2130 } 2131 2132 func (x *Cluster_RingHashLbConfig) GetMaximumRingSize() *wrappers.UInt64Value { 2133 if x != nil { 2134 return x.MaximumRingSize 2135 } 2136 return nil 2137 } 2138 2139 // Specific configuration for the :ref:`Maglev<arch_overview_load_balancing_types_maglev>` 2140 // load balancing policy. 2141 type Cluster_MaglevLbConfig struct { 2142 state protoimpl.MessageState 2143 sizeCache protoimpl.SizeCache 2144 unknownFields protoimpl.UnknownFields 2145 2146 // The table size for Maglev hashing. The Maglev aims for ‘minimal disruption’ rather than an absolute guarantee. 2147 // Minimal disruption means that when the set of upstreams changes, a connection will likely be sent to the same 2148 // upstream as it was before. Increasing the table size reduces the amount of disruption. 2149 // The table size must be prime number limited to 5000011. If it is not specified, the default is 65537. 2150 TableSize *wrappers.UInt64Value `protobuf:"bytes,1,opt,name=table_size,json=tableSize,proto3" json:"table_size,omitempty"` 2151 } 2152 2153 func (x *Cluster_MaglevLbConfig) Reset() { 2154 *x = Cluster_MaglevLbConfig{} 2155 if protoimpl.UnsafeEnabled { 2156 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[12] 2157 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2158 ms.StoreMessageInfo(mi) 2159 } 2160 } 2161 2162 func (x *Cluster_MaglevLbConfig) String() string { 2163 return protoimpl.X.MessageStringOf(x) 2164 } 2165 2166 func (*Cluster_MaglevLbConfig) ProtoMessage() {} 2167 2168 func (x *Cluster_MaglevLbConfig) ProtoReflect() protoreflect.Message { 2169 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[12] 2170 if protoimpl.UnsafeEnabled && x != nil { 2171 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2172 if ms.LoadMessageInfo() == nil { 2173 ms.StoreMessageInfo(mi) 2174 } 2175 return ms 2176 } 2177 return mi.MessageOf(x) 2178 } 2179 2180 // Deprecated: Use Cluster_MaglevLbConfig.ProtoReflect.Descriptor instead. 2181 func (*Cluster_MaglevLbConfig) Descriptor() ([]byte, []int) { 2182 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 6} 2183 } 2184 2185 func (x *Cluster_MaglevLbConfig) GetTableSize() *wrappers.UInt64Value { 2186 if x != nil { 2187 return x.TableSize 2188 } 2189 return nil 2190 } 2191 2192 // Specific configuration for the 2193 // :ref:`Original Destination <arch_overview_load_balancing_types_original_destination>` 2194 // load balancing policy. 2195 type Cluster_OriginalDstLbConfig struct { 2196 state protoimpl.MessageState 2197 sizeCache protoimpl.SizeCache 2198 unknownFields protoimpl.UnknownFields 2199 2200 // When true, :ref:`x-envoy-original-dst-host 2201 // <config_http_conn_man_headers_x-envoy-original-dst-host>` can be used to override destination 2202 // address. 2203 // 2204 // .. attention:: 2205 // 2206 // This header isn't sanitized by default, so enabling this feature allows HTTP clients to 2207 // route traffic to arbitrary hosts and/or ports, which may have serious security 2208 // consequences. 2209 // 2210 // .. note:: 2211 // 2212 // If the header appears multiple times only the first value is used. 2213 UseHttpHeader bool `protobuf:"varint,1,opt,name=use_http_header,json=useHttpHeader,proto3" json:"use_http_header,omitempty"` 2214 } 2215 2216 func (x *Cluster_OriginalDstLbConfig) Reset() { 2217 *x = Cluster_OriginalDstLbConfig{} 2218 if protoimpl.UnsafeEnabled { 2219 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[13] 2220 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2221 ms.StoreMessageInfo(mi) 2222 } 2223 } 2224 2225 func (x *Cluster_OriginalDstLbConfig) String() string { 2226 return protoimpl.X.MessageStringOf(x) 2227 } 2228 2229 func (*Cluster_OriginalDstLbConfig) ProtoMessage() {} 2230 2231 func (x *Cluster_OriginalDstLbConfig) ProtoReflect() protoreflect.Message { 2232 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[13] 2233 if protoimpl.UnsafeEnabled && x != nil { 2234 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2235 if ms.LoadMessageInfo() == nil { 2236 ms.StoreMessageInfo(mi) 2237 } 2238 return ms 2239 } 2240 return mi.MessageOf(x) 2241 } 2242 2243 // Deprecated: Use Cluster_OriginalDstLbConfig.ProtoReflect.Descriptor instead. 2244 func (*Cluster_OriginalDstLbConfig) Descriptor() ([]byte, []int) { 2245 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 7} 2246 } 2247 2248 func (x *Cluster_OriginalDstLbConfig) GetUseHttpHeader() bool { 2249 if x != nil { 2250 return x.UseHttpHeader 2251 } 2252 return false 2253 } 2254 2255 // Common configuration for all load balancer implementations. 2256 // [#next-free-field: 8] 2257 type Cluster_CommonLbConfig struct { 2258 state protoimpl.MessageState 2259 sizeCache protoimpl.SizeCache 2260 unknownFields protoimpl.UnknownFields 2261 2262 // Configures the :ref:`healthy panic threshold <arch_overview_load_balancing_panic_threshold>`. 2263 // If not specified, the default is 50%. 2264 // To disable panic mode, set to 0%. 2265 // 2266 // .. note:: 2267 // The specified percent will be truncated to the nearest 1%. 2268 HealthyPanicThreshold *v34.Percent `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold,proto3" json:"healthy_panic_threshold,omitempty"` 2269 // Types that are assignable to LocalityConfigSpecifier: 2270 // *Cluster_CommonLbConfig_ZoneAwareLbConfig_ 2271 // *Cluster_CommonLbConfig_LocalityWeightedLbConfig_ 2272 LocalityConfigSpecifier isCluster_CommonLbConfig_LocalityConfigSpecifier `protobuf_oneof:"locality_config_specifier"` 2273 // If set, all health check/weight/metadata updates that happen within this duration will be 2274 // merged and delivered in one shot when the duration expires. The start of the duration is when 2275 // the first update happens. This is useful for big clusters, with potentially noisy deploys 2276 // that might trigger excessive CPU usage due to a constant stream of healthcheck state changes 2277 // or metadata updates. The first set of updates to be seen apply immediately (e.g.: a new 2278 // cluster). Please always keep in mind that the use of sandbox technologies may change this 2279 // behavior. 2280 // 2281 // If this is not set, we default to a merge window of 1000ms. To disable it, set the merge 2282 // window to 0. 2283 // 2284 // Note: merging does not apply to cluster membership changes (e.g.: adds/removes); this is 2285 // because merging those updates isn't currently safe. See 2286 // https://github.com/envoyproxy/envoy/pull/3941. 2287 UpdateMergeWindow *duration.Duration `protobuf:"bytes,4,opt,name=update_merge_window,json=updateMergeWindow,proto3" json:"update_merge_window,omitempty"` 2288 // If set to true, Envoy will :ref:`exclude <arch_overview_load_balancing_excluded>` new hosts 2289 // when computing load balancing weights until they have been health checked for the first time. 2290 // This will have no effect unless active health checking is also configured. 2291 IgnoreNewHostsUntilFirstHc bool `protobuf:"varint,5,opt,name=ignore_new_hosts_until_first_hc,json=ignoreNewHostsUntilFirstHc,proto3" json:"ignore_new_hosts_until_first_hc,omitempty"` 2292 // If set to `true`, the cluster manager will drain all existing 2293 // connections to upstream hosts whenever hosts are added or removed from the cluster. 2294 CloseConnectionsOnHostSetChange bool `protobuf:"varint,6,opt,name=close_connections_on_host_set_change,json=closeConnectionsOnHostSetChange,proto3" json:"close_connections_on_host_set_change,omitempty"` 2295 // Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.) 2296 ConsistentHashingLbConfig *Cluster_CommonLbConfig_ConsistentHashingLbConfig `protobuf:"bytes,7,opt,name=consistent_hashing_lb_config,json=consistentHashingLbConfig,proto3" json:"consistent_hashing_lb_config,omitempty"` 2297 } 2298 2299 func (x *Cluster_CommonLbConfig) Reset() { 2300 *x = Cluster_CommonLbConfig{} 2301 if protoimpl.UnsafeEnabled { 2302 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[14] 2303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2304 ms.StoreMessageInfo(mi) 2305 } 2306 } 2307 2308 func (x *Cluster_CommonLbConfig) String() string { 2309 return protoimpl.X.MessageStringOf(x) 2310 } 2311 2312 func (*Cluster_CommonLbConfig) ProtoMessage() {} 2313 2314 func (x *Cluster_CommonLbConfig) ProtoReflect() protoreflect.Message { 2315 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[14] 2316 if protoimpl.UnsafeEnabled && x != nil { 2317 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2318 if ms.LoadMessageInfo() == nil { 2319 ms.StoreMessageInfo(mi) 2320 } 2321 return ms 2322 } 2323 return mi.MessageOf(x) 2324 } 2325 2326 // Deprecated: Use Cluster_CommonLbConfig.ProtoReflect.Descriptor instead. 2327 func (*Cluster_CommonLbConfig) Descriptor() ([]byte, []int) { 2328 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 8} 2329 } 2330 2331 func (x *Cluster_CommonLbConfig) GetHealthyPanicThreshold() *v34.Percent { 2332 if x != nil { 2333 return x.HealthyPanicThreshold 2334 } 2335 return nil 2336 } 2337 2338 func (m *Cluster_CommonLbConfig) GetLocalityConfigSpecifier() isCluster_CommonLbConfig_LocalityConfigSpecifier { 2339 if m != nil { 2340 return m.LocalityConfigSpecifier 2341 } 2342 return nil 2343 } 2344 2345 func (x *Cluster_CommonLbConfig) GetZoneAwareLbConfig() *Cluster_CommonLbConfig_ZoneAwareLbConfig { 2346 if x, ok := x.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_ZoneAwareLbConfig_); ok { 2347 return x.ZoneAwareLbConfig 2348 } 2349 return nil 2350 } 2351 2352 func (x *Cluster_CommonLbConfig) GetLocalityWeightedLbConfig() *Cluster_CommonLbConfig_LocalityWeightedLbConfig { 2353 if x, ok := x.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_); ok { 2354 return x.LocalityWeightedLbConfig 2355 } 2356 return nil 2357 } 2358 2359 func (x *Cluster_CommonLbConfig) GetUpdateMergeWindow() *duration.Duration { 2360 if x != nil { 2361 return x.UpdateMergeWindow 2362 } 2363 return nil 2364 } 2365 2366 func (x *Cluster_CommonLbConfig) GetIgnoreNewHostsUntilFirstHc() bool { 2367 if x != nil { 2368 return x.IgnoreNewHostsUntilFirstHc 2369 } 2370 return false 2371 } 2372 2373 func (x *Cluster_CommonLbConfig) GetCloseConnectionsOnHostSetChange() bool { 2374 if x != nil { 2375 return x.CloseConnectionsOnHostSetChange 2376 } 2377 return false 2378 } 2379 2380 func (x *Cluster_CommonLbConfig) GetConsistentHashingLbConfig() *Cluster_CommonLbConfig_ConsistentHashingLbConfig { 2381 if x != nil { 2382 return x.ConsistentHashingLbConfig 2383 } 2384 return nil 2385 } 2386 2387 type isCluster_CommonLbConfig_LocalityConfigSpecifier interface { 2388 isCluster_CommonLbConfig_LocalityConfigSpecifier() 2389 } 2390 2391 type Cluster_CommonLbConfig_ZoneAwareLbConfig_ struct { 2392 ZoneAwareLbConfig *Cluster_CommonLbConfig_ZoneAwareLbConfig `protobuf:"bytes,2,opt,name=zone_aware_lb_config,json=zoneAwareLbConfig,proto3,oneof"` 2393 } 2394 2395 type Cluster_CommonLbConfig_LocalityWeightedLbConfig_ struct { 2396 LocalityWeightedLbConfig *Cluster_CommonLbConfig_LocalityWeightedLbConfig `protobuf:"bytes,3,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,proto3,oneof"` 2397 } 2398 2399 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() { 2400 } 2401 2402 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() { 2403 } 2404 2405 type Cluster_RefreshRate struct { 2406 state protoimpl.MessageState 2407 sizeCache protoimpl.SizeCache 2408 unknownFields protoimpl.UnknownFields 2409 2410 // Specifies the base interval between refreshes. This parameter is required and must be greater 2411 // than zero and less than 2412 // :ref:`max_interval <envoy_v3_api_field_config.cluster.v3.Cluster.RefreshRate.max_interval>`. 2413 BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` 2414 // Specifies the maximum interval between refreshes. This parameter is optional, but must be 2415 // greater than or equal to the 2416 // :ref:`base_interval <envoy_v3_api_field_config.cluster.v3.Cluster.RefreshRate.base_interval>` if set. The default 2417 // is 10 times the :ref:`base_interval <envoy_v3_api_field_config.cluster.v3.Cluster.RefreshRate.base_interval>`. 2418 MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` 2419 } 2420 2421 func (x *Cluster_RefreshRate) Reset() { 2422 *x = Cluster_RefreshRate{} 2423 if protoimpl.UnsafeEnabled { 2424 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[15] 2425 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2426 ms.StoreMessageInfo(mi) 2427 } 2428 } 2429 2430 func (x *Cluster_RefreshRate) String() string { 2431 return protoimpl.X.MessageStringOf(x) 2432 } 2433 2434 func (*Cluster_RefreshRate) ProtoMessage() {} 2435 2436 func (x *Cluster_RefreshRate) ProtoReflect() protoreflect.Message { 2437 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[15] 2438 if protoimpl.UnsafeEnabled && x != nil { 2439 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2440 if ms.LoadMessageInfo() == nil { 2441 ms.StoreMessageInfo(mi) 2442 } 2443 return ms 2444 } 2445 return mi.MessageOf(x) 2446 } 2447 2448 // Deprecated: Use Cluster_RefreshRate.ProtoReflect.Descriptor instead. 2449 func (*Cluster_RefreshRate) Descriptor() ([]byte, []int) { 2450 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 9} 2451 } 2452 2453 func (x *Cluster_RefreshRate) GetBaseInterval() *duration.Duration { 2454 if x != nil { 2455 return x.BaseInterval 2456 } 2457 return nil 2458 } 2459 2460 func (x *Cluster_RefreshRate) GetMaxInterval() *duration.Duration { 2461 if x != nil { 2462 return x.MaxInterval 2463 } 2464 return nil 2465 } 2466 2467 type Cluster_PreconnectPolicy struct { 2468 state protoimpl.MessageState 2469 sizeCache protoimpl.SizeCache 2470 unknownFields protoimpl.UnknownFields 2471 2472 // Indicates how many streams (rounded up) can be anticipated per-upstream for each 2473 // incoming stream. This is useful for high-QPS or latency-sensitive services. Preconnecting 2474 // will only be done if the upstream is healthy and the cluster has traffic. 2475 // 2476 // For example if this is 2, for an incoming HTTP/1.1 stream, 2 connections will be 2477 // established, one for the new incoming stream, and one for a presumed follow-up stream. For 2478 // HTTP/2, only one connection would be established by default as one connection can 2479 // serve both the original and presumed follow-up stream. 2480 // 2481 // In steady state for non-multiplexed connections a value of 1.5 would mean if there were 100 2482 // active streams, there would be 100 connections in use, and 50 connections preconnected. 2483 // This might be a useful value for something like short lived single-use connections, 2484 // for example proxying HTTP/1.1 if keep-alive were false and each stream resulted in connection 2485 // termination. It would likely be overkill for long lived connections, such as TCP proxying SMTP 2486 // or regular HTTP/1.1 with keep-alive. For long lived traffic, a value of 1.05 would be more 2487 // reasonable, where for every 100 connections, 5 preconnected connections would be in the queue 2488 // in case of unexpected disconnects where the connection could not be reused. 2489 // 2490 // If this value is not set, or set explicitly to one, Envoy will fetch as many connections 2491 // as needed to serve streams in flight. This means in steady state if a connection is torn down, 2492 // a subsequent streams will pay an upstream-rtt latency penalty waiting for a new connection. 2493 // 2494 // This is limited somewhat arbitrarily to 3 because preconnecting too aggressively can 2495 // harm latency more than the preconnecting helps. 2496 PerUpstreamPreconnectRatio *wrappers.DoubleValue `protobuf:"bytes,1,opt,name=per_upstream_preconnect_ratio,json=perUpstreamPreconnectRatio,proto3" json:"per_upstream_preconnect_ratio,omitempty"` 2497 // Indicates how many many streams (rounded up) can be anticipated across a cluster for each 2498 // stream, useful for low QPS services. This is currently supported for a subset of 2499 // deterministic non-hash-based load-balancing algorithms (weighted round robin, random). 2500 // Unlike *per_upstream_preconnect_ratio* this preconnects across the upstream instances in a 2501 // cluster, doing best effort predictions of what upstream would be picked next and 2502 // pre-establishing a connection. 2503 // 2504 // Preconnecting will be limited to one preconnect per configured upstream in the cluster and will 2505 // only be done if there are healthy upstreams and the cluster has traffic. 2506 // 2507 // For example if preconnecting is set to 2 for a round robin HTTP/2 cluster, on the first 2508 // incoming stream, 2 connections will be preconnected - one to the first upstream for this 2509 // cluster, one to the second on the assumption there will be a follow-up stream. 2510 // 2511 // If this value is not set, or set explicitly to one, Envoy will fetch as many connections 2512 // as needed to serve streams in flight, so during warm up and in steady state if a connection 2513 // is closed (and per_upstream_preconnect_ratio is not set), there will be a latency hit for 2514 // connection establishment. 2515 // 2516 // If both this and preconnect_ratio are set, Envoy will make sure both predicted needs are met, 2517 // basically preconnecting max(predictive-preconnect, per-upstream-preconnect), for each 2518 // upstream. 2519 PredictivePreconnectRatio *wrappers.DoubleValue `protobuf:"bytes,2,opt,name=predictive_preconnect_ratio,json=predictivePreconnectRatio,proto3" json:"predictive_preconnect_ratio,omitempty"` 2520 } 2521 2522 func (x *Cluster_PreconnectPolicy) Reset() { 2523 *x = Cluster_PreconnectPolicy{} 2524 if protoimpl.UnsafeEnabled { 2525 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[16] 2526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2527 ms.StoreMessageInfo(mi) 2528 } 2529 } 2530 2531 func (x *Cluster_PreconnectPolicy) String() string { 2532 return protoimpl.X.MessageStringOf(x) 2533 } 2534 2535 func (*Cluster_PreconnectPolicy) ProtoMessage() {} 2536 2537 func (x *Cluster_PreconnectPolicy) ProtoReflect() protoreflect.Message { 2538 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[16] 2539 if protoimpl.UnsafeEnabled && x != nil { 2540 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2541 if ms.LoadMessageInfo() == nil { 2542 ms.StoreMessageInfo(mi) 2543 } 2544 return ms 2545 } 2546 return mi.MessageOf(x) 2547 } 2548 2549 // Deprecated: Use Cluster_PreconnectPolicy.ProtoReflect.Descriptor instead. 2550 func (*Cluster_PreconnectPolicy) Descriptor() ([]byte, []int) { 2551 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 10} 2552 } 2553 2554 func (x *Cluster_PreconnectPolicy) GetPerUpstreamPreconnectRatio() *wrappers.DoubleValue { 2555 if x != nil { 2556 return x.PerUpstreamPreconnectRatio 2557 } 2558 return nil 2559 } 2560 2561 func (x *Cluster_PreconnectPolicy) GetPredictivePreconnectRatio() *wrappers.DoubleValue { 2562 if x != nil { 2563 return x.PredictivePreconnectRatio 2564 } 2565 return nil 2566 } 2567 2568 // Specifications for subsets. 2569 type Cluster_LbSubsetConfig_LbSubsetSelector struct { 2570 state protoimpl.MessageState 2571 sizeCache protoimpl.SizeCache 2572 unknownFields protoimpl.UnknownFields 2573 2574 // List of keys to match with the weighted cluster metadata. 2575 Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` 2576 // Selects a mode of operation in which each subset has only one host. This mode uses the same rules for 2577 // choosing a host, but updating hosts is faster, especially for large numbers of hosts. 2578 // 2579 // If a match is found to a host, that host will be used regardless of priority levels, unless the host is unhealthy. 2580 // 2581 // Currently, this mode is only supported if `subset_selectors` has only one entry, and `keys` contains 2582 // only one entry. 2583 // 2584 // When this mode is enabled, configurations that contain more than one host with the same metadata value for the single key in `keys` 2585 // will use only one of the hosts with the given key; no requests will be routed to the others. The cluster gauge 2586 // :ref:`lb_subsets_single_host_per_subset_duplicate<config_cluster_manager_cluster_stats_subset_lb>` indicates how many duplicates are 2587 // present in the current configuration. 2588 SingleHostPerSubset bool `protobuf:"varint,4,opt,name=single_host_per_subset,json=singleHostPerSubset,proto3" json:"single_host_per_subset,omitempty"` 2589 // The behavior used when no endpoint subset matches the selected route's 2590 // metadata. 2591 FallbackPolicy Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy `protobuf:"varint,2,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.config.cluster.v3.Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy" json:"fallback_policy,omitempty"` 2592 // Subset of 2593 // :ref:`keys<envoy_v3_api_field_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.keys>` used by 2594 // :ref:`KEYS_SUBSET<envoy_v3_api_enum_value_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy.KEYS_SUBSET>` 2595 // fallback policy. 2596 // It has to be a non empty list if KEYS_SUBSET fallback policy is selected. 2597 // For any other fallback policy the parameter is not used and should not be set. 2598 // Only values also present in 2599 // :ref:`keys<envoy_v3_api_field_config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.keys>` are allowed, but 2600 // `fallback_keys_subset` cannot be equal to `keys`. 2601 FallbackKeysSubset []string `protobuf:"bytes,3,rep,name=fallback_keys_subset,json=fallbackKeysSubset,proto3" json:"fallback_keys_subset,omitempty"` 2602 } 2603 2604 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) Reset() { 2605 *x = Cluster_LbSubsetConfig_LbSubsetSelector{} 2606 if protoimpl.UnsafeEnabled { 2607 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[19] 2608 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2609 ms.StoreMessageInfo(mi) 2610 } 2611 } 2612 2613 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) String() string { 2614 return protoimpl.X.MessageStringOf(x) 2615 } 2616 2617 func (*Cluster_LbSubsetConfig_LbSubsetSelector) ProtoMessage() {} 2618 2619 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) ProtoReflect() protoreflect.Message { 2620 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[19] 2621 if protoimpl.UnsafeEnabled && x != nil { 2622 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2623 if ms.LoadMessageInfo() == nil { 2624 ms.StoreMessageInfo(mi) 2625 } 2626 return ms 2627 } 2628 return mi.MessageOf(x) 2629 } 2630 2631 // Deprecated: Use Cluster_LbSubsetConfig_LbSubsetSelector.ProtoReflect.Descriptor instead. 2632 func (*Cluster_LbSubsetConfig_LbSubsetSelector) Descriptor() ([]byte, []int) { 2633 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 3, 0} 2634 } 2635 2636 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetKeys() []string { 2637 if x != nil { 2638 return x.Keys 2639 } 2640 return nil 2641 } 2642 2643 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetSingleHostPerSubset() bool { 2644 if x != nil { 2645 return x.SingleHostPerSubset 2646 } 2647 return false 2648 } 2649 2650 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy { 2651 if x != nil { 2652 return x.FallbackPolicy 2653 } 2654 return Cluster_LbSubsetConfig_LbSubsetSelector_NOT_DEFINED 2655 } 2656 2657 func (x *Cluster_LbSubsetConfig_LbSubsetSelector) GetFallbackKeysSubset() []string { 2658 if x != nil { 2659 return x.FallbackKeysSubset 2660 } 2661 return nil 2662 } 2663 2664 // Configuration for :ref:`zone aware routing 2665 // <arch_overview_load_balancing_zone_aware_routing>`. 2666 type Cluster_CommonLbConfig_ZoneAwareLbConfig struct { 2667 state protoimpl.MessageState 2668 sizeCache protoimpl.SizeCache 2669 unknownFields protoimpl.UnknownFields 2670 2671 // Configures percentage of requests that will be considered for zone aware routing 2672 // if zone aware routing is configured. If not specified, the default is 100%. 2673 // * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`. 2674 // * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`. 2675 RoutingEnabled *v34.Percent `protobuf:"bytes,1,opt,name=routing_enabled,json=routingEnabled,proto3" json:"routing_enabled,omitempty"` 2676 // Configures minimum upstream cluster size required for zone aware routing 2677 // If upstream cluster size is less than specified, zone aware routing is not performed 2678 // even if zone aware routing is configured. If not specified, the default is 6. 2679 // * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`. 2680 // * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`. 2681 MinClusterSize *wrappers.UInt64Value `protobuf:"bytes,2,opt,name=min_cluster_size,json=minClusterSize,proto3" json:"min_cluster_size,omitempty"` 2682 // If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic 2683 // mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all 2684 // requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a 2685 // failing service. 2686 FailTrafficOnPanic bool `protobuf:"varint,3,opt,name=fail_traffic_on_panic,json=failTrafficOnPanic,proto3" json:"fail_traffic_on_panic,omitempty"` 2687 } 2688 2689 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) Reset() { 2690 *x = Cluster_CommonLbConfig_ZoneAwareLbConfig{} 2691 if protoimpl.UnsafeEnabled { 2692 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[20] 2693 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2694 ms.StoreMessageInfo(mi) 2695 } 2696 } 2697 2698 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) String() string { 2699 return protoimpl.X.MessageStringOf(x) 2700 } 2701 2702 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) ProtoMessage() {} 2703 2704 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) ProtoReflect() protoreflect.Message { 2705 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[20] 2706 if protoimpl.UnsafeEnabled && x != nil { 2707 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2708 if ms.LoadMessageInfo() == nil { 2709 ms.StoreMessageInfo(mi) 2710 } 2711 return ms 2712 } 2713 return mi.MessageOf(x) 2714 } 2715 2716 // Deprecated: Use Cluster_CommonLbConfig_ZoneAwareLbConfig.ProtoReflect.Descriptor instead. 2717 func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) Descriptor() ([]byte, []int) { 2718 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 8, 0} 2719 } 2720 2721 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetRoutingEnabled() *v34.Percent { 2722 if x != nil { 2723 return x.RoutingEnabled 2724 } 2725 return nil 2726 } 2727 2728 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetMinClusterSize() *wrappers.UInt64Value { 2729 if x != nil { 2730 return x.MinClusterSize 2731 } 2732 return nil 2733 } 2734 2735 func (x *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetFailTrafficOnPanic() bool { 2736 if x != nil { 2737 return x.FailTrafficOnPanic 2738 } 2739 return false 2740 } 2741 2742 // Configuration for :ref:`locality weighted load balancing 2743 // <arch_overview_load_balancing_locality_weighted_lb>` 2744 type Cluster_CommonLbConfig_LocalityWeightedLbConfig struct { 2745 state protoimpl.MessageState 2746 sizeCache protoimpl.SizeCache 2747 unknownFields protoimpl.UnknownFields 2748 } 2749 2750 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Reset() { 2751 *x = Cluster_CommonLbConfig_LocalityWeightedLbConfig{} 2752 if protoimpl.UnsafeEnabled { 2753 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[21] 2754 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2755 ms.StoreMessageInfo(mi) 2756 } 2757 } 2758 2759 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) String() string { 2760 return protoimpl.X.MessageStringOf(x) 2761 } 2762 2763 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoMessage() {} 2764 2765 func (x *Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoReflect() protoreflect.Message { 2766 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[21] 2767 if protoimpl.UnsafeEnabled && x != nil { 2768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2769 if ms.LoadMessageInfo() == nil { 2770 ms.StoreMessageInfo(mi) 2771 } 2772 return ms 2773 } 2774 return mi.MessageOf(x) 2775 } 2776 2777 // Deprecated: Use Cluster_CommonLbConfig_LocalityWeightedLbConfig.ProtoReflect.Descriptor instead. 2778 func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) Descriptor() ([]byte, []int) { 2779 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 8, 1} 2780 } 2781 2782 // Common Configuration for all consistent hashing load balancers (MaglevLb, RingHashLb, etc.) 2783 type Cluster_CommonLbConfig_ConsistentHashingLbConfig struct { 2784 state protoimpl.MessageState 2785 sizeCache protoimpl.SizeCache 2786 unknownFields protoimpl.UnknownFields 2787 2788 // If set to `true`, the cluster will use hostname instead of the resolved 2789 // address as the key to consistently hash to an upstream host. Only valid for StrictDNS clusters with hostnames which resolve to a single IP address. 2790 UseHostnameForHashing bool `protobuf:"varint,1,opt,name=use_hostname_for_hashing,json=useHostnameForHashing,proto3" json:"use_hostname_for_hashing,omitempty"` 2791 // Configures percentage of average cluster load to bound per upstream host. For example, with a value of 150 2792 // no upstream host will get a load more than 1.5 times the average load of all the hosts in the cluster. 2793 // If not specified, the load is not bounded for any upstream host. Typical value for this parameter is between 120 and 200. 2794 // Minimum is 100. 2795 // 2796 // Applies to both Ring Hash and Maglev load balancers. 2797 // 2798 // This is implemented based on the method described in the paper https://arxiv.org/abs/1608.01350. For the specified 2799 // `hash_balance_factor`, requests to any upstream host are capped at `hash_balance_factor/100` times the average number of requests 2800 // across the cluster. When a request arrives for an upstream host that is currently serving at its max capacity, linear probing 2801 // is used to identify an eligible host. Further, the linear probe is implemented using a random jump in hosts ring/table to identify 2802 // the eligible host (this technique is as described in the paper https://arxiv.org/abs/1908.08762 - the random jump avoids the 2803 // cascading overflow effect when choosing the next host in the ring/table). 2804 // 2805 // If weights are specified on the hosts, they are respected. 2806 // 2807 // This is an O(N) algorithm, unlike other load balancers. Using a lower `hash_balance_factor` results in more hosts 2808 // being probed, so use a higher value if you require better performance. 2809 HashBalanceFactor *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=hash_balance_factor,json=hashBalanceFactor,proto3" json:"hash_balance_factor,omitempty"` 2810 } 2811 2812 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) Reset() { 2813 *x = Cluster_CommonLbConfig_ConsistentHashingLbConfig{} 2814 if protoimpl.UnsafeEnabled { 2815 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[22] 2816 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2817 ms.StoreMessageInfo(mi) 2818 } 2819 } 2820 2821 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) String() string { 2822 return protoimpl.X.MessageStringOf(x) 2823 } 2824 2825 func (*Cluster_CommonLbConfig_ConsistentHashingLbConfig) ProtoMessage() {} 2826 2827 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) ProtoReflect() protoreflect.Message { 2828 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[22] 2829 if protoimpl.UnsafeEnabled && x != nil { 2830 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2831 if ms.LoadMessageInfo() == nil { 2832 ms.StoreMessageInfo(mi) 2833 } 2834 return ms 2835 } 2836 return mi.MessageOf(x) 2837 } 2838 2839 // Deprecated: Use Cluster_CommonLbConfig_ConsistentHashingLbConfig.ProtoReflect.Descriptor instead. 2840 func (*Cluster_CommonLbConfig_ConsistentHashingLbConfig) Descriptor() ([]byte, []int) { 2841 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{1, 8, 2} 2842 } 2843 2844 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) GetUseHostnameForHashing() bool { 2845 if x != nil { 2846 return x.UseHostnameForHashing 2847 } 2848 return false 2849 } 2850 2851 func (x *Cluster_CommonLbConfig_ConsistentHashingLbConfig) GetHashBalanceFactor() *wrappers.UInt32Value { 2852 if x != nil { 2853 return x.HashBalanceFactor 2854 } 2855 return nil 2856 } 2857 2858 type LoadBalancingPolicy_Policy struct { 2859 state protoimpl.MessageState 2860 sizeCache protoimpl.SizeCache 2861 unknownFields protoimpl.UnknownFields 2862 2863 TypedExtensionConfig *v32.TypedExtensionConfig `protobuf:"bytes,4,opt,name=typed_extension_config,json=typedExtensionConfig,proto3" json:"typed_extension_config,omitempty"` 2864 // Deprecated: Do not use. 2865 HiddenEnvoyDeprecatedConfig *_struct.Struct `protobuf:"bytes,2,opt,name=hidden_envoy_deprecated_config,json=hiddenEnvoyDeprecatedConfig,proto3" json:"hidden_envoy_deprecated_config,omitempty"` 2866 } 2867 2868 func (x *LoadBalancingPolicy_Policy) Reset() { 2869 *x = LoadBalancingPolicy_Policy{} 2870 if protoimpl.UnsafeEnabled { 2871 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[23] 2872 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2873 ms.StoreMessageInfo(mi) 2874 } 2875 } 2876 2877 func (x *LoadBalancingPolicy_Policy) String() string { 2878 return protoimpl.X.MessageStringOf(x) 2879 } 2880 2881 func (*LoadBalancingPolicy_Policy) ProtoMessage() {} 2882 2883 func (x *LoadBalancingPolicy_Policy) ProtoReflect() protoreflect.Message { 2884 mi := &file_envoy_config_cluster_v3_cluster_proto_msgTypes[23] 2885 if protoimpl.UnsafeEnabled && x != nil { 2886 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2887 if ms.LoadMessageInfo() == nil { 2888 ms.StoreMessageInfo(mi) 2889 } 2890 return ms 2891 } 2892 return mi.MessageOf(x) 2893 } 2894 2895 // Deprecated: Use LoadBalancingPolicy_Policy.ProtoReflect.Descriptor instead. 2896 func (*LoadBalancingPolicy_Policy) Descriptor() ([]byte, []int) { 2897 return file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP(), []int{2, 0} 2898 } 2899 2900 func (x *LoadBalancingPolicy_Policy) GetTypedExtensionConfig() *v32.TypedExtensionConfig { 2901 if x != nil { 2902 return x.TypedExtensionConfig 2903 } 2904 return nil 2905 } 2906 2907 // Deprecated: Do not use. 2908 func (x *LoadBalancingPolicy_Policy) GetHiddenEnvoyDeprecatedConfig() *_struct.Struct { 2909 if x != nil { 2910 return x.HiddenEnvoyDeprecatedConfig 2911 } 2912 return nil 2913 } 2914 2915 var File_envoy_config_cluster_v3_cluster_proto protoreflect.FileDescriptor 2916 2917 var file_envoy_config_cluster_v3_cluster_proto_rawDesc = []byte{ 2918 0x0a, 0x25, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 2919 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 2920 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 2921 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 2922 0x1a, 0x2d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 2923 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 2924 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 2925 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6c, 2926 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 2927 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 2928 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x6f, 2929 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 2930 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 2931 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x61, 0x64, 0x64, 2932 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 2933 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 2934 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x65, 0x6e, 0x76, 2935 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 2936 0x33, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 2937 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 2938 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x65, 0x78, 0x74, 0x65, 2939 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x65, 0x6e, 0x76, 2940 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 2941 0x33, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 2942 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 2943 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2944 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 2945 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 2946 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 2947 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x65, 0x6e, 0x64, 2948 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x33, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 2949 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x65, 2950 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 2951 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x74, 0x6c, 0x73, 0x2f, 2952 0x76, 0x33, 0x2f, 0x74, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x65, 0x6e, 2953 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x65, 0x72, 0x63, 2954 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 2955 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 2956 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2957 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 2958 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2959 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 2960 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 2961 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 2962 0x74, 0x6f, 0x1a, 0x22, 0x78, 0x64, 0x73, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 2963 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 2964 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 2965 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 2966 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 2967 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 2968 0x67, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x75, 0x64, 0x70, 2969 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 2970 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 2971 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 2972 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, 0x64, 0x70, 2973 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, 2974 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 2975 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 2976 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4b, 0x0a, 0x11, 0x43, 0x6c, 0x75, 0x73, 0x74, 2977 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 2978 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 2979 0x78, 0x64, 0x73, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 2980 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 2981 0x72, 0x69, 0x65, 0x73, 0x22, 0x84, 0x4f, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 2982 0x12, 0x6f, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 2983 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x2b, 0x20, 0x03, 2984 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 2985 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 2986 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 2987 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 2988 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 2989 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 2990 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 2991 0x0a, 0x0d, 0x61, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 2992 0x1c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x14, 0x0a, 0x12, 0x6f, 2993 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 2994 0x65, 0x52, 0x0b, 0x61, 0x6c, 0x74, 0x53, 0x74, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 2995 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x65, 2996 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 2997 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 2998 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 2999 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x57, 3000 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x26, 3001 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 3002 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 3003 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x75, 3004 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 3005 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x12, 0x65, 0x64, 0x73, 0x5f, 0x63, 3006 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 3007 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3008 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 3009 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3010 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x65, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 3011 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 3012 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 3013 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3014 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 3015 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 3016 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x6f, 0x0a, 0x21, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 3017 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 3018 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 3019 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3020 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 3021 0x07, 0x8a, 0x93, 0xb7, 0x2a, 0x02, 0x10, 0x01, 0x52, 0x1d, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 3022 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 3023 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x70, 0x6f, 3024 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 3025 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 3026 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x50, 3027 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 3028 0x08, 0x6c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x58, 0x0a, 0x0f, 0x6c, 0x6f, 0x61, 3029 0x64, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x21, 0x20, 0x01, 3030 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 3031 0x67, 0x2e, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 3032 0x75, 0x73, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x61, 0x64, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 3033 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 3034 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 3035 0x65, 0x63, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 3036 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 3037 0x33, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x0c, 0x68, 3038 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x6d, 3039 0x61, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 3040 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 3041 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 3042 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 3043 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x18, 0x6d, 0x61, 0x78, 3044 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 3045 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x10, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 3046 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 3047 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 3048 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 3049 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x0f, 0x63, 0x69, 0x72, 0x63, 0x75, 3050 0x69, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x1e, 0x75, 3051 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 3052 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 3053 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3054 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 3055 0x65, 0x61, 0x6d, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 3056 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 3057 0x33, 0x2e, 0x30, 0x52, 0x1b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x48, 0x74, 0x74, 3058 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 3059 0x12, 0x77, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 3060 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 3061 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 3062 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 3063 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 3064 0x73, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x19, 3065 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x48, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 3066 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x15, 0x68, 0x74, 0x74, 3067 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 3068 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3069 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 3070 0x48, 0x74, 0x74, 0x70, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 3071 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 3072 0x30, 0x52, 0x13, 0x68, 0x74, 0x74, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 3073 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x74, 0x0a, 0x16, 0x68, 0x74, 0x74, 0x70, 0x32, 0x5f, 3074 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 3075 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 3076 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 3077 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 3078 0x6e, 0x73, 0x42, 0x12, 0x18, 0x01, 0x8a, 0x93, 0xb7, 0x2a, 0x02, 0x10, 0x01, 0x92, 0xc7, 0x86, 3079 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x14, 0x68, 0x74, 0x74, 0x70, 0x32, 0x50, 0x72, 0x6f, 3080 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x8c, 0x01, 0x0a, 3081 0x20, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 3082 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 3083 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3084 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 3085 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 3086 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 3087 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1d, 0x74, 0x79, 3088 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 3089 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x10, 0x64, 3090 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 3091 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 3092 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 3093 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 0x06, 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0e, 3094 0x64, 0x6e, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x65, 3095 0x0a, 0x18, 0x64, 0x6e, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 3096 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 3097 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 3098 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 3099 0x65, 0x72, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x52, 0x15, 3100 0x64, 0x6e, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 3101 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 3102 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 3103 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x44, 0x6e, 0x73, 0x54, 0x74, 0x6c, 0x12, 0x66, 0x0a, 3104 0x11, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 3105 0x6c, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3106 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 3107 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 3108 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 3109 0x01, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x64, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 3110 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x4f, 0x0a, 0x0d, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 3111 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 3112 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 3113 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0b, 0x18, 0x01, 0x92, 3114 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x73, 3115 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x63, 3116 0x70, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 3117 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 3118 0x03, 0x33, 0x2e, 0x30, 0x52, 0x13, 0x75, 0x73, 0x65, 0x54, 0x63, 0x70, 0x46, 0x6f, 0x72, 0x44, 3119 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x5d, 0x0a, 0x15, 0x64, 0x6e, 0x73, 3120 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 3121 0x69, 0x67, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3122 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 3123 0x44, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 3124 0x66, 0x69, 0x67, 0x52, 0x13, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 3125 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x65, 0x0a, 0x19, 0x74, 0x79, 0x70, 0x65, 3126 0x64, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x5f, 0x63, 3127 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 3128 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 3129 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 3130 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x74, 0x79, 0x70, 0x65, 0x64, 0x44, 0x6e, 3131 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 3132 0x4c, 0x0a, 0x15, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x77, 0x61, 0x72, 0x6d, 3133 0x5f, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 3134 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3135 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x77, 0x61, 0x69, 0x74, 3136 0x46, 0x6f, 0x72, 0x57, 0x61, 0x72, 0x6d, 0x4f, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x56, 0x0a, 3137 0x11, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 3138 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3139 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 3140 0x76, 0x33, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 3141 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x44, 0x65, 0x74, 0x65, 3142 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 3143 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 3144 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 3145 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 3146 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x49, 0x6e, 0x74, 3147 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x52, 0x0a, 0x14, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 3148 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 3149 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3150 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x43, 3151 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x42, 3152 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x59, 0x0a, 0x10, 0x6c, 0x62, 0x5f, 3153 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x16, 0x20, 3154 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3155 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 3156 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 3157 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x6c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 3158 0x6e, 0x66, 0x69, 0x67, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x61, 0x73, 3159 0x68, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 3160 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 3161 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 3162 0x74, 0x65, 0x72, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 3163 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x10, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 3164 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5b, 0x0a, 0x10, 0x6d, 0x61, 0x67, 0x6c, 3165 0x65, 0x76, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 3166 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 3167 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 3168 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 3169 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x4c, 0x62, 0x43, 3170 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6b, 0x0a, 0x16, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 3171 0x6c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 3172 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 3173 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 3174 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 3175 0x44, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x13, 0x6f, 3176 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 3177 0x69, 0x67, 0x12, 0x6e, 0x0a, 0x17, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 3178 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 3179 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3180 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 3181 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 3182 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x14, 0x6c, 0x65, 3183 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 3184 0x69, 0x67, 0x12, 0x59, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6c, 0x62, 0x5f, 3185 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 3186 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 3187 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 3188 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x63, 3189 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 3190 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 3191 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3192 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 3193 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0f, 3194 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 3195 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 3196 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 3197 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 3198 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x75, 0x0a, 0x12, 0x70, 3199 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 3200 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3201 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 3202 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 3203 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 3204 0x6f, 0x6e, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 3205 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 3206 0x6f, 0x6e, 0x12, 0x72, 0x0a, 0x1b, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 3207 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 3208 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3209 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 3210 0x33, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 3211 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x19, 0x75, 0x70, 0x73, 3212 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 3213 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x28, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 3214 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 3215 0x6f, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 3216 0x72, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x23, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 3217 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 3218 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x40, 0x0a, 3219 0x1d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x6f, 3220 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x20, 3221 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x48, 0x65, 0x61, 0x6c, 3222 0x74, 0x68, 0x4f, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x12, 3223 0x39, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 3224 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 3225 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 3226 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x60, 0x0a, 0x15, 0x6c, 0x6f, 3227 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 3228 0x69, 0x63, 0x79, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 3229 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3230 0x2e, 0x76, 0x33, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 3231 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x13, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 3232 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x41, 0x0a, 0x0a, 3233 0x6c, 0x72, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 3234 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 3235 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 3236 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x6c, 0x72, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 3237 0x3f, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 3238 0x5f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0b, 3239 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x13, 0x74, 0x72, 0x61, 3240 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 3241 0x12, 0x53, 0x0a, 0x0f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 3242 0x66, 0x69, 0x67, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 3243 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 3244 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 3245 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 3246 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x63, 3247 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x31, 0x20, 0x01, 3248 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 3249 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x72, 0x61, 3250 0x63, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x11, 3251 0x74, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 3252 0x73, 0x12, 0x5e, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 3253 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 3254 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 3255 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x50, 3256 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 3257 0x10, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 3258 0x79, 0x12, 0x58, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 3259 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 3260 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x33, 3261 0x20, 0x01, 0x28, 0x08, 0x52, 0x25, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 3262 0x50, 0x6f, 0x6f, 0x6c, 0x50, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 3263 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, 0x1d, 0x68, 3264 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 3265 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 3266 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 3267 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 3268 0x73, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x1a, 3269 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 3270 0x63, 0x61, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x23, 0x68, 3271 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 3272 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 3273 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3274 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, 0x61, 0x6e, 3275 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2e, 0x74, 0x6c, 3276 0x73, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x54, 0x6c, 0x73, 3277 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 3278 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x1f, 0x68, 0x69, 0x64, 0x64, 3279 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 3280 0x64, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0xd1, 0x01, 0x0a, 0x32, 3281 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 3282 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 3283 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 3284 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3285 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 3286 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x64, 0x64, 0x65, 3287 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 3288 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 3289 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x11, 0x18, 3290 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 3291 0x52, 0x2d, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 3292 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 3293 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 3294 0xe6, 0x01, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 3295 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 3296 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 3297 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 3298 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 3299 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x6d, 3300 0x61, 0x74, 0x63, 0x68, 0x12, 0x50, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 3301 0x74, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 3302 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 3303 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 3304 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 3305 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x3a, 0x30, 0x9a, 0xc5, 0x88, 0x1e, 0x2b, 0x0a, 0x29, 0x65, 3306 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 3307 0x74, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x6f, 0x63, 3308 0x6b, 0x65, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x98, 0x01, 0x0a, 0x11, 0x43, 0x75, 0x73, 3309 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 3310 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 3311 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x74, 3312 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 3313 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3314 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 3315 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x2d, 0x9a, 0xc5, 0x88, 0x1e, 0x28, 0x0a, 0x26, 0x65, 0x6e, 0x76, 3316 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 3317 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 3318 0x79, 0x70, 0x65, 0x1a, 0xa6, 0x01, 0x0a, 0x10, 0x45, 0x64, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 3319 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x0a, 0x65, 0x64, 0x73, 0x5f, 3320 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 3321 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 3322 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 3323 0x52, 0x09, 0x65, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 3324 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 3325 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x2c, 3326 0x9a, 0xc5, 0x88, 0x1e, 0x27, 0x0a, 0x25, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 3327 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x64, 0x73, 0x43, 3328 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xc0, 0x08, 0x0a, 3329 0x0e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 3330 0x79, 0x0a, 0x0f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 3331 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3332 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 3333 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 3334 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 3335 0x65, 0x74, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 3336 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 3337 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3e, 0x0a, 0x0e, 0x64, 0x65, 3338 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 3339 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 3340 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0d, 0x64, 0x65, 0x66, 3341 0x61, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x12, 0x6b, 0x0a, 0x10, 0x73, 0x75, 3342 0x62, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 3343 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 3344 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 3345 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 3346 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 3347 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 3348 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 3349 0x69, 0x74, 0x79, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, 3350 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 3351 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x77, 0x61, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x73, 3352 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x77, 0x65, 3353 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x63, 0x61, 0x6c, 3354 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 3355 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x61, 0x6e, 3356 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x4d, 0x6f, 3357 0x64, 0x65, 0x41, 0x6e, 0x79, 0x12, 0x1e, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x73, 3358 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 3359 0x41, 0x73, 0x41, 0x6e, 0x79, 0x1a, 0xda, 0x03, 0x0a, 0x10, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 3360 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 3361 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x33, 3362 0x0a, 0x16, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x65, 3363 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 3364 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x65, 0x72, 0x53, 0x75, 0x62, 3365 0x73, 0x65, 0x74, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 3366 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5f, 0x2e, 3367 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 3368 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 3369 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 3370 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 3371 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 3372 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x08, 3373 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 3374 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x61, 0x6c, 0x6c, 3375 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 3376 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 3377 0x4b, 0x65, 0x79, 0x73, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x22, 0x79, 0x0a, 0x1e, 0x4c, 0x62, 3378 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 3379 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 3380 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 3381 0x0b, 0x4e, 0x4f, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x10, 3382 0x0a, 0x0c, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x02, 3383 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, 3384 0x45, 0x54, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x53, 0x55, 0x42, 3385 0x53, 0x45, 0x54, 0x10, 0x04, 0x3a, 0x3b, 0x9a, 0xc5, 0x88, 0x1e, 0x36, 0x0a, 0x34, 0x65, 0x6e, 3386 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 3387 0x65, 0x72, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3388 0x67, 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 3389 0x6f, 0x72, 0x22, 0x4f, 0x0a, 0x16, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x46, 0x61, 3390 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 3391 0x4e, 0x4f, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x00, 0x12, 0x10, 0x0a, 3392 0x0c, 0x41, 0x4e, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 3393 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x45, 3394 0x54, 0x10, 0x02, 0x3a, 0x2a, 0x9a, 0xc5, 0x88, 0x1e, 0x25, 0x0a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 3395 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3396 0x2e, 0x4c, 0x62, 0x53, 0x75, 0x62, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 3397 0xe7, 0x01, 0x0a, 0x14, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 3398 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x48, 0x0a, 0x0c, 0x63, 0x68, 0x6f, 0x69, 3399 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 3400 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3401 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 3402 0x04, 0x2a, 0x02, 0x28, 0x02, 0x52, 0x0b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 3403 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x71, 3404 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 3405 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 3406 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x6f, 3407 0x75, 0x62, 0x6c, 0x65, 0x52, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 3408 0x65, 0x73, 0x74, 0x42, 0x69, 0x61, 0x73, 0x3a, 0x30, 0x9a, 0xc5, 0x88, 0x1e, 0x2b, 0x0a, 0x29, 3409 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 3410 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4c, 0x65, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 3411 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x91, 0x03, 0x0a, 0x10, 0x52, 0x69, 3412 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x54, 3413 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 3414 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 3415 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 3416 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x32, 0x05, 0x18, 0x80, 3417 0x80, 0x80, 0x04, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x52, 0x69, 0x6e, 0x67, 3418 0x53, 0x69, 0x7a, 0x65, 0x12, 0x6d, 0x0a, 0x0d, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x75, 0x6e, 3419 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x65, 0x6e, 3420 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 3421 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x69, 3422 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 3423 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 3424 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 3425 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x72, 3426 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 3427 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3428 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0xfa, 0x42, 3429 0x07, 0x32, 0x05, 0x18, 0x80, 0x80, 0x80, 0x04, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 3430 0x6d, 0x52, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x2e, 0x0a, 0x0c, 0x48, 0x61, 0x73, 3431 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x58, 0x58, 0x5f, 3432 0x48, 0x41, 0x53, 0x48, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x55, 0x52, 0x4d, 0x55, 0x52, 3433 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x32, 0x10, 0x01, 0x3a, 0x2c, 0x9a, 0xc5, 0x88, 0x1e, 0x27, 3434 0x0a, 0x25, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 3435 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x69, 0x6e, 0x67, 0x48, 0x61, 0x73, 0x68, 0x4c, 3436 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x1a, 0x59, 0x0a, 3437 0x0e, 0x4d, 0x61, 0x67, 0x6c, 0x65, 0x76, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 3438 0x47, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 3439 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 3440 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 3441 0x65, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x32, 0x05, 0x18, 0xcb, 0x96, 0xb1, 0x02, 0x52, 0x09, 0x74, 3442 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6e, 0x0a, 0x13, 0x4f, 0x72, 0x69, 0x67, 3443 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 3444 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 3445 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x48, 0x74, 0x74, 3446 0x70, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3a, 0x2f, 0x9a, 0xc5, 0x88, 0x1e, 0x2a, 0x0a, 0x28, 3447 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 3448 0x73, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x73, 0x74, 3449 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xfc, 0x0a, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 3450 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x17, 0x68, 3451 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x72, 3452 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 3453 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x65, 0x72, 3454 0x63, 0x65, 0x6e, 0x74, 0x52, 0x15, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x50, 0x61, 0x6e, 3455 0x69, 0x63, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x74, 0x0a, 0x14, 0x7a, 3456 0x6f, 0x6e, 0x65, 0x5f, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 3457 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 3458 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3459 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 3460 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x5a, 0x6f, 0x6e, 0x65, 0x41, 3461 0x77, 0x61, 0x72, 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 3462 0x7a, 0x6f, 0x6e, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3463 0x67, 0x12, 0x89, 0x01, 0x0a, 0x1b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x77, 3464 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 3465 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3466 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 3467 0x33, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 3468 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 3469 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3470 0x67, 0x48, 0x00, 0x52, 0x18, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 3471 0x67, 0x68, 0x74, 0x65, 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 3472 0x13, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x77, 0x69, 3473 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 3474 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 3475 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x72, 3476 0x67, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x43, 0x0a, 0x1f, 0x69, 0x67, 0x6e, 0x6f, 3477 0x72, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x75, 0x6e, 0x74, 3478 0x69, 0x6c, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x68, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 3479 0x08, 0x52, 0x1a, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4e, 0x65, 0x77, 0x48, 0x6f, 0x73, 0x74, 3480 0x73, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x63, 0x12, 0x4d, 0x0a, 3481 0x24, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 3482 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 3483 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x63, 0x6c, 0x6f, 3484 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4f, 0x6e, 0x48, 3485 0x6f, 0x73, 0x74, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x8a, 0x01, 0x0a, 3486 0x1c, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 3487 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 3488 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3489 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6c, 3490 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 3491 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 3492 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x19, 3493 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 3494 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8d, 0x02, 0x0a, 0x11, 0x5a, 0x6f, 3495 0x6e, 0x65, 0x41, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 3496 0x3f, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 3497 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3498 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 3499 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 3500 0x12, 0x46, 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 3501 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 3502 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 3503 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x43, 0x6c, 0x75, 3504 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, 3505 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x6e, 0x69, 3506 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x72, 0x61, 3507 0x66, 0x66, 0x69, 0x63, 0x4f, 0x6e, 0x50, 0x61, 0x6e, 0x69, 0x63, 0x3a, 0x3c, 0x9a, 0xc5, 0x88, 3508 0x1e, 0x37, 0x0a, 0x35, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 3509 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 3510 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x5a, 0x6f, 0x6e, 0x65, 0x41, 0x77, 0x61, 0x72, 3511 0x65, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5f, 0x0a, 0x18, 0x4c, 0x6f, 0x63, 3512 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4c, 0x62, 0x43, 3513 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x43, 0x9a, 0xc5, 0x88, 0x1e, 0x3e, 0x0a, 0x3c, 0x65, 0x6e, 3514 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 3515 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3516 0x67, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 3517 0x65, 0x64, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xf1, 0x01, 0x0a, 0x19, 0x43, 3518 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 3519 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x18, 0x75, 0x73, 0x65, 0x5f, 3520 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x73, 3521 0x68, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x75, 0x73, 0x65, 0x48, 3522 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 3523 0x67, 0x12, 0x55, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 3524 0x65, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 3525 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3526 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 3527 0x04, 0x2a, 0x02, 0x28, 0x64, 0x52, 0x11, 0x68, 0x61, 0x73, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 3528 0x63, 0x65, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3a, 0x44, 0x9a, 0xc5, 0x88, 0x1e, 0x3f, 0x0a, 3529 0x3d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 3530 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 3531 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x48, 3532 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x2a, 3533 0x9a, 0xc5, 0x88, 0x1e, 0x25, 0x0a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 3534 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 3535 0x6f, 0x6e, 0x4c, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x1b, 0x0a, 0x19, 0x6c, 0x6f, 3536 0x63, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x70, 3537 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0xd2, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x66, 0x72, 3538 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 3539 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 3540 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3541 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0xfa, 0x42, 0x0b, 0xaa, 0x01, 3542 0x08, 0x08, 0x01, 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 3543 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 3544 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 3545 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 3546 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0xfa, 0x42, 0x09, 0xaa, 0x01, 0x06, 3547 0x2a, 0x04, 0x10, 0xc0, 0x84, 0x3d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 3548 0x76, 0x61, 0x6c, 0x3a, 0x27, 0x9a, 0xc5, 0x88, 0x1e, 0x22, 0x0a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 3549 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3550 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x61, 0x74, 0x65, 0x1a, 0x83, 0x02, 0x0a, 3551 0x10, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 3552 0x79, 0x12, 0x78, 0x0a, 0x1d, 0x70, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 3553 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 3554 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 3555 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 3556 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x17, 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 3557 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x52, 3558 0x1a, 0x70, 0x65, 0x72, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x63, 3559 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x75, 0x0a, 0x1b, 0x70, 3560 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6e, 3561 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 3562 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 3563 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x17, 3564 0xfa, 0x42, 0x14, 0x12, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x29, 0x00, 3565 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x52, 0x19, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 3566 0x69, 0x76, 0x65, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 3567 0x69, 0x6f, 0x1a, 0x66, 0x0a, 0x22, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 3568 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 3569 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 3570 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 3571 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 3572 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 3573 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x79, 0x0a, 0x32, 0x48, 0x69, 3574 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 3575 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 3576 0x6f, 0x63, 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 3577 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 3578 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 3579 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3580 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 3581 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 3582 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 3583 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x5f, 0x44, 0x4e, 0x53, 3584 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x4e, 3585 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x44, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 3586 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x10, 0x04, 0x22, 0xcd, 3587 0x01, 0x0a, 0x08, 0x4c, 0x62, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 3588 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 3589 0x4c, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 3590 0x0d, 0x0a, 0x09, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x02, 0x12, 0x0a, 3591 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 3592 0x47, 0x4c, 0x45, 0x56, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 3593 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 3594 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x50, 3595 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x07, 0x12, 0x3e, 3596 0x0a, 0x27, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 3597 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 3598 0x41, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4c, 0x42, 0x10, 0x04, 0x1a, 0x11, 0x08, 0x01, 0xa8, 3599 0xf7, 0xb4, 0x8b, 0x02, 0x01, 0x8a, 0xf4, 0x9b, 0xb3, 0x05, 0x03, 0x33, 0x2e, 0x30, 0x22, 0x35, 3600 0x0a, 0x0f, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x46, 0x61, 0x6d, 0x69, 0x6c, 3601 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x56, 3602 0x34, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x36, 0x5f, 0x4f, 3603 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x22, 0x54, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3604 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 3605 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 3606 0x52, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x00, 0x12, 0x1b, 3607 0x0a, 0x17, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 3608 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x01, 0x3a, 0x1b, 0x9a, 0xc5, 0x88, 3609 0x1e, 0x16, 0x0a, 0x14, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 3610 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x63, 0x6c, 0x75, 0x73, 3611 0x74, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x79, 3612 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x6c, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 3613 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x22, 0xb7, 0x03, 0x0a, 0x13, 3614 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 3615 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 3616 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 3617 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 3618 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 3619 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 3620 0x63, 0x69, 0x65, 0x73, 0x1a, 0xa5, 0x02, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 3621 0x60, 0x0a, 0x16, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 3622 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 3623 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 3624 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 3625 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x74, 0x79, 0x70, 3626 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3627 0x67, 0x12, 0x69, 0x0a, 0x1e, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 3628 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 3629 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 3630 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 3631 0x63, 0x74, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 3632 0x1b, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 3633 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x2e, 0x9a, 0xc5, 3634 0x88, 0x1e, 0x29, 0x0a, 0x27, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 3635 0x32, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 3636 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4a, 0x04, 0x08, 0x01, 3637 0x10, 0x02, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0c, 3638 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x27, 0x9a, 0xc5, 3639 0x88, 0x1e, 0x22, 0x0a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 3640 0x32, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x50, 3641 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x82, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 3642 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, 3643 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 3644 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 3645 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x64, 0x72, 3646 0x65, 0x73, 0x73, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 3647 0x73, 0x73, 0x3a, 0x26, 0x9a, 0xc5, 0x88, 0x1e, 0x21, 0x0a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3648 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 3649 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x93, 0x01, 0x0a, 0x19, 0x55, 3650 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 3651 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x0d, 0x74, 0x63, 0x70, 0x5f, 3652 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 3653 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 3654 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 3655 0x69, 0x76, 0x65, 0x52, 0x0c, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 3656 0x65, 0x3a, 0x2d, 0x9a, 0xc5, 0x88, 0x1e, 0x28, 0x0a, 0x26, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 3657 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 3658 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 3659 0x22, 0x72, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 3660 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 3661 0x5f, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 3662 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x75, 0x64, 0x67, 0x65, 0x74, 0x73, 0x12, 0x34, 3663 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 3664 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 3665 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 3666 0x69, 0x7a, 0x65, 0x73, 0x42, 0x3f, 0x0a, 0x25, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 3667 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 3668 0x69, 0x67, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x42, 0x0c, 0x43, 3669 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xba, 0x80, 0xc8, 3670 0xd1, 0x06, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 3671 } 3672 3673 var ( 3674 file_envoy_config_cluster_v3_cluster_proto_rawDescOnce sync.Once 3675 file_envoy_config_cluster_v3_cluster_proto_rawDescData = file_envoy_config_cluster_v3_cluster_proto_rawDesc 3676 ) 3677 3678 func file_envoy_config_cluster_v3_cluster_proto_rawDescGZIP() []byte { 3679 file_envoy_config_cluster_v3_cluster_proto_rawDescOnce.Do(func() { 3680 file_envoy_config_cluster_v3_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_config_cluster_v3_cluster_proto_rawDescData) 3681 }) 3682 return file_envoy_config_cluster_v3_cluster_proto_rawDescData 3683 } 3684 3685 var file_envoy_config_cluster_v3_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 7) 3686 var file_envoy_config_cluster_v3_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 24) 3687 var file_envoy_config_cluster_v3_cluster_proto_goTypes = []interface{}{ 3688 (Cluster_DiscoveryType)(0), // 0: envoy.config.cluster.v3.Cluster.DiscoveryType 3689 (Cluster_LbPolicy)(0), // 1: envoy.config.cluster.v3.Cluster.LbPolicy 3690 (Cluster_DnsLookupFamily)(0), // 2: envoy.config.cluster.v3.Cluster.DnsLookupFamily 3691 (Cluster_ClusterProtocolSelection)(0), // 3: envoy.config.cluster.v3.Cluster.ClusterProtocolSelection 3692 (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy)(0), // 4: envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy 3693 (Cluster_LbSubsetConfig_LbSubsetSelector_LbSubsetSelectorFallbackPolicy)(0), // 5: envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy 3694 (Cluster_RingHashLbConfig_HashFunction)(0), // 6: envoy.config.cluster.v3.Cluster.RingHashLbConfig.HashFunction 3695 (*ClusterCollection)(nil), // 7: envoy.config.cluster.v3.ClusterCollection 3696 (*Cluster)(nil), // 8: envoy.config.cluster.v3.Cluster 3697 (*LoadBalancingPolicy)(nil), // 9: envoy.config.cluster.v3.LoadBalancingPolicy 3698 (*UpstreamBindConfig)(nil), // 10: envoy.config.cluster.v3.UpstreamBindConfig 3699 (*UpstreamConnectionOptions)(nil), // 11: envoy.config.cluster.v3.UpstreamConnectionOptions 3700 (*TrackClusterStats)(nil), // 12: envoy.config.cluster.v3.TrackClusterStats 3701 (*Cluster_TransportSocketMatch)(nil), // 13: envoy.config.cluster.v3.Cluster.TransportSocketMatch 3702 (*Cluster_CustomClusterType)(nil), // 14: envoy.config.cluster.v3.Cluster.CustomClusterType 3703 (*Cluster_EdsClusterConfig)(nil), // 15: envoy.config.cluster.v3.Cluster.EdsClusterConfig 3704 (*Cluster_LbSubsetConfig)(nil), // 16: envoy.config.cluster.v3.Cluster.LbSubsetConfig 3705 (*Cluster_LeastRequestLbConfig)(nil), // 17: envoy.config.cluster.v3.Cluster.LeastRequestLbConfig 3706 (*Cluster_RingHashLbConfig)(nil), // 18: envoy.config.cluster.v3.Cluster.RingHashLbConfig 3707 (*Cluster_MaglevLbConfig)(nil), // 19: envoy.config.cluster.v3.Cluster.MaglevLbConfig 3708 (*Cluster_OriginalDstLbConfig)(nil), // 20: envoy.config.cluster.v3.Cluster.OriginalDstLbConfig 3709 (*Cluster_CommonLbConfig)(nil), // 21: envoy.config.cluster.v3.Cluster.CommonLbConfig 3710 (*Cluster_RefreshRate)(nil), // 22: envoy.config.cluster.v3.Cluster.RefreshRate 3711 (*Cluster_PreconnectPolicy)(nil), // 23: envoy.config.cluster.v3.Cluster.PreconnectPolicy 3712 nil, // 24: envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntry 3713 nil, // 25: envoy.config.cluster.v3.Cluster.HiddenEnvoyDeprecatedExtensionProtocolOptionsEntry 3714 (*Cluster_LbSubsetConfig_LbSubsetSelector)(nil), // 26: envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector 3715 (*Cluster_CommonLbConfig_ZoneAwareLbConfig)(nil), // 27: envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig 3716 (*Cluster_CommonLbConfig_LocalityWeightedLbConfig)(nil), // 28: envoy.config.cluster.v3.Cluster.CommonLbConfig.LocalityWeightedLbConfig 3717 (*Cluster_CommonLbConfig_ConsistentHashingLbConfig)(nil), // 29: envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfig 3718 (*LoadBalancingPolicy_Policy)(nil), // 30: envoy.config.cluster.v3.LoadBalancingPolicy.Policy 3719 (*v3.CollectionEntry)(nil), // 31: xds.core.v3.CollectionEntry 3720 (*duration.Duration)(nil), // 32: google.protobuf.Duration 3721 (*wrappers.UInt32Value)(nil), // 33: google.protobuf.UInt32Value 3722 (*v31.ClusterLoadAssignment)(nil), // 34: envoy.config.endpoint.v3.ClusterLoadAssignment 3723 (*v32.HealthCheck)(nil), // 35: envoy.config.core.v3.HealthCheck 3724 (*CircuitBreakers)(nil), // 36: envoy.config.cluster.v3.CircuitBreakers 3725 (*v32.UpstreamHttpProtocolOptions)(nil), // 37: envoy.config.core.v3.UpstreamHttpProtocolOptions 3726 (*v32.HttpProtocolOptions)(nil), // 38: envoy.config.core.v3.HttpProtocolOptions 3727 (*v32.Http1ProtocolOptions)(nil), // 39: envoy.config.core.v3.Http1ProtocolOptions 3728 (*v32.Http2ProtocolOptions)(nil), // 40: envoy.config.core.v3.Http2ProtocolOptions 3729 (*v32.Address)(nil), // 41: envoy.config.core.v3.Address 3730 (*v32.DnsResolutionConfig)(nil), // 42: envoy.config.core.v3.DnsResolutionConfig 3731 (*v32.TypedExtensionConfig)(nil), // 43: envoy.config.core.v3.TypedExtensionConfig 3732 (*wrappers.BoolValue)(nil), // 44: google.protobuf.BoolValue 3733 (*OutlierDetection)(nil), // 45: envoy.config.cluster.v3.OutlierDetection 3734 (*v32.BindConfig)(nil), // 46: envoy.config.core.v3.BindConfig 3735 (*v32.TransportSocket)(nil), // 47: envoy.config.core.v3.TransportSocket 3736 (*v32.Metadata)(nil), // 48: envoy.config.core.v3.Metadata 3737 (*Filter)(nil), // 49: envoy.config.cluster.v3.Filter 3738 (*v32.ConfigSource)(nil), // 50: envoy.config.core.v3.ConfigSource 3739 (*v33.UpstreamTlsContext)(nil), // 51: envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext 3740 (*v32.TcpKeepalive)(nil), // 52: envoy.config.core.v3.TcpKeepalive 3741 (*_struct.Struct)(nil), // 53: google.protobuf.Struct 3742 (*any.Any)(nil), // 54: google.protobuf.Any 3743 (*v32.RuntimeDouble)(nil), // 55: envoy.config.core.v3.RuntimeDouble 3744 (*wrappers.UInt64Value)(nil), // 56: google.protobuf.UInt64Value 3745 (*v34.Percent)(nil), // 57: envoy.type.v3.Percent 3746 (*wrappers.DoubleValue)(nil), // 58: google.protobuf.DoubleValue 3747 } 3748 var file_envoy_config_cluster_v3_cluster_proto_depIdxs = []int32{ 3749 31, // 0: envoy.config.cluster.v3.ClusterCollection.entries:type_name -> xds.core.v3.CollectionEntry 3750 13, // 1: envoy.config.cluster.v3.Cluster.transport_socket_matches:type_name -> envoy.config.cluster.v3.Cluster.TransportSocketMatch 3751 0, // 2: envoy.config.cluster.v3.Cluster.type:type_name -> envoy.config.cluster.v3.Cluster.DiscoveryType 3752 14, // 3: envoy.config.cluster.v3.Cluster.cluster_type:type_name -> envoy.config.cluster.v3.Cluster.CustomClusterType 3753 15, // 4: envoy.config.cluster.v3.Cluster.eds_cluster_config:type_name -> envoy.config.cluster.v3.Cluster.EdsClusterConfig 3754 32, // 5: envoy.config.cluster.v3.Cluster.connect_timeout:type_name -> google.protobuf.Duration 3755 33, // 6: envoy.config.cluster.v3.Cluster.per_connection_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 3756 1, // 7: envoy.config.cluster.v3.Cluster.lb_policy:type_name -> envoy.config.cluster.v3.Cluster.LbPolicy 3757 34, // 8: envoy.config.cluster.v3.Cluster.load_assignment:type_name -> envoy.config.endpoint.v3.ClusterLoadAssignment 3758 35, // 9: envoy.config.cluster.v3.Cluster.health_checks:type_name -> envoy.config.core.v3.HealthCheck 3759 33, // 10: envoy.config.cluster.v3.Cluster.max_requests_per_connection:type_name -> google.protobuf.UInt32Value 3760 36, // 11: envoy.config.cluster.v3.Cluster.circuit_breakers:type_name -> envoy.config.cluster.v3.CircuitBreakers 3761 37, // 12: envoy.config.cluster.v3.Cluster.upstream_http_protocol_options:type_name -> envoy.config.core.v3.UpstreamHttpProtocolOptions 3762 38, // 13: envoy.config.cluster.v3.Cluster.common_http_protocol_options:type_name -> envoy.config.core.v3.HttpProtocolOptions 3763 39, // 14: envoy.config.cluster.v3.Cluster.http_protocol_options:type_name -> envoy.config.core.v3.Http1ProtocolOptions 3764 40, // 15: envoy.config.cluster.v3.Cluster.http2_protocol_options:type_name -> envoy.config.core.v3.Http2ProtocolOptions 3765 24, // 16: envoy.config.cluster.v3.Cluster.typed_extension_protocol_options:type_name -> envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntry 3766 32, // 17: envoy.config.cluster.v3.Cluster.dns_refresh_rate:type_name -> google.protobuf.Duration 3767 22, // 18: envoy.config.cluster.v3.Cluster.dns_failure_refresh_rate:type_name -> envoy.config.cluster.v3.Cluster.RefreshRate 3768 2, // 19: envoy.config.cluster.v3.Cluster.dns_lookup_family:type_name -> envoy.config.cluster.v3.Cluster.DnsLookupFamily 3769 41, // 20: envoy.config.cluster.v3.Cluster.dns_resolvers:type_name -> envoy.config.core.v3.Address 3770 42, // 21: envoy.config.cluster.v3.Cluster.dns_resolution_config:type_name -> envoy.config.core.v3.DnsResolutionConfig 3771 43, // 22: envoy.config.cluster.v3.Cluster.typed_dns_resolver_config:type_name -> envoy.config.core.v3.TypedExtensionConfig 3772 44, // 23: envoy.config.cluster.v3.Cluster.wait_for_warm_on_init:type_name -> google.protobuf.BoolValue 3773 45, // 24: envoy.config.cluster.v3.Cluster.outlier_detection:type_name -> envoy.config.cluster.v3.OutlierDetection 3774 32, // 25: envoy.config.cluster.v3.Cluster.cleanup_interval:type_name -> google.protobuf.Duration 3775 46, // 26: envoy.config.cluster.v3.Cluster.upstream_bind_config:type_name -> envoy.config.core.v3.BindConfig 3776 16, // 27: envoy.config.cluster.v3.Cluster.lb_subset_config:type_name -> envoy.config.cluster.v3.Cluster.LbSubsetConfig 3777 18, // 28: envoy.config.cluster.v3.Cluster.ring_hash_lb_config:type_name -> envoy.config.cluster.v3.Cluster.RingHashLbConfig 3778 19, // 29: envoy.config.cluster.v3.Cluster.maglev_lb_config:type_name -> envoy.config.cluster.v3.Cluster.MaglevLbConfig 3779 20, // 30: envoy.config.cluster.v3.Cluster.original_dst_lb_config:type_name -> envoy.config.cluster.v3.Cluster.OriginalDstLbConfig 3780 17, // 31: envoy.config.cluster.v3.Cluster.least_request_lb_config:type_name -> envoy.config.cluster.v3.Cluster.LeastRequestLbConfig 3781 21, // 32: envoy.config.cluster.v3.Cluster.common_lb_config:type_name -> envoy.config.cluster.v3.Cluster.CommonLbConfig 3782 47, // 33: envoy.config.cluster.v3.Cluster.transport_socket:type_name -> envoy.config.core.v3.TransportSocket 3783 48, // 34: envoy.config.cluster.v3.Cluster.metadata:type_name -> envoy.config.core.v3.Metadata 3784 3, // 35: envoy.config.cluster.v3.Cluster.protocol_selection:type_name -> envoy.config.cluster.v3.Cluster.ClusterProtocolSelection 3785 11, // 36: envoy.config.cluster.v3.Cluster.upstream_connection_options:type_name -> envoy.config.cluster.v3.UpstreamConnectionOptions 3786 49, // 37: envoy.config.cluster.v3.Cluster.filters:type_name -> envoy.config.cluster.v3.Filter 3787 9, // 38: envoy.config.cluster.v3.Cluster.load_balancing_policy:type_name -> envoy.config.cluster.v3.LoadBalancingPolicy 3788 50, // 39: envoy.config.cluster.v3.Cluster.lrs_server:type_name -> envoy.config.core.v3.ConfigSource 3789 43, // 40: envoy.config.cluster.v3.Cluster.upstream_config:type_name -> envoy.config.core.v3.TypedExtensionConfig 3790 12, // 41: envoy.config.cluster.v3.Cluster.track_cluster_stats:type_name -> envoy.config.cluster.v3.TrackClusterStats 3791 23, // 42: envoy.config.cluster.v3.Cluster.preconnect_policy:type_name -> envoy.config.cluster.v3.Cluster.PreconnectPolicy 3792 41, // 43: envoy.config.cluster.v3.Cluster.hidden_envoy_deprecated_hosts:type_name -> envoy.config.core.v3.Address 3793 51, // 44: envoy.config.cluster.v3.Cluster.hidden_envoy_deprecated_tls_context:type_name -> envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext 3794 25, // 45: envoy.config.cluster.v3.Cluster.hidden_envoy_deprecated_extension_protocol_options:type_name -> envoy.config.cluster.v3.Cluster.HiddenEnvoyDeprecatedExtensionProtocolOptionsEntry 3795 30, // 46: envoy.config.cluster.v3.LoadBalancingPolicy.policies:type_name -> envoy.config.cluster.v3.LoadBalancingPolicy.Policy 3796 41, // 47: envoy.config.cluster.v3.UpstreamBindConfig.source_address:type_name -> envoy.config.core.v3.Address 3797 52, // 48: envoy.config.cluster.v3.UpstreamConnectionOptions.tcp_keepalive:type_name -> envoy.config.core.v3.TcpKeepalive 3798 53, // 49: envoy.config.cluster.v3.Cluster.TransportSocketMatch.match:type_name -> google.protobuf.Struct 3799 47, // 50: envoy.config.cluster.v3.Cluster.TransportSocketMatch.transport_socket:type_name -> envoy.config.core.v3.TransportSocket 3800 54, // 51: envoy.config.cluster.v3.Cluster.CustomClusterType.typed_config:type_name -> google.protobuf.Any 3801 50, // 52: envoy.config.cluster.v3.Cluster.EdsClusterConfig.eds_config:type_name -> envoy.config.core.v3.ConfigSource 3802 4, // 53: envoy.config.cluster.v3.Cluster.LbSubsetConfig.fallback_policy:type_name -> envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy 3803 53, // 54: envoy.config.cluster.v3.Cluster.LbSubsetConfig.default_subset:type_name -> google.protobuf.Struct 3804 26, // 55: envoy.config.cluster.v3.Cluster.LbSubsetConfig.subset_selectors:type_name -> envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector 3805 33, // 56: envoy.config.cluster.v3.Cluster.LeastRequestLbConfig.choice_count:type_name -> google.protobuf.UInt32Value 3806 55, // 57: envoy.config.cluster.v3.Cluster.LeastRequestLbConfig.active_request_bias:type_name -> envoy.config.core.v3.RuntimeDouble 3807 56, // 58: envoy.config.cluster.v3.Cluster.RingHashLbConfig.minimum_ring_size:type_name -> google.protobuf.UInt64Value 3808 6, // 59: envoy.config.cluster.v3.Cluster.RingHashLbConfig.hash_function:type_name -> envoy.config.cluster.v3.Cluster.RingHashLbConfig.HashFunction 3809 56, // 60: envoy.config.cluster.v3.Cluster.RingHashLbConfig.maximum_ring_size:type_name -> google.protobuf.UInt64Value 3810 56, // 61: envoy.config.cluster.v3.Cluster.MaglevLbConfig.table_size:type_name -> google.protobuf.UInt64Value 3811 57, // 62: envoy.config.cluster.v3.Cluster.CommonLbConfig.healthy_panic_threshold:type_name -> envoy.type.v3.Percent 3812 27, // 63: envoy.config.cluster.v3.Cluster.CommonLbConfig.zone_aware_lb_config:type_name -> envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig 3813 28, // 64: envoy.config.cluster.v3.Cluster.CommonLbConfig.locality_weighted_lb_config:type_name -> envoy.config.cluster.v3.Cluster.CommonLbConfig.LocalityWeightedLbConfig 3814 32, // 65: envoy.config.cluster.v3.Cluster.CommonLbConfig.update_merge_window:type_name -> google.protobuf.Duration 3815 29, // 66: envoy.config.cluster.v3.Cluster.CommonLbConfig.consistent_hashing_lb_config:type_name -> envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfig 3816 32, // 67: envoy.config.cluster.v3.Cluster.RefreshRate.base_interval:type_name -> google.protobuf.Duration 3817 32, // 68: envoy.config.cluster.v3.Cluster.RefreshRate.max_interval:type_name -> google.protobuf.Duration 3818 58, // 69: envoy.config.cluster.v3.Cluster.PreconnectPolicy.per_upstream_preconnect_ratio:type_name -> google.protobuf.DoubleValue 3819 58, // 70: envoy.config.cluster.v3.Cluster.PreconnectPolicy.predictive_preconnect_ratio:type_name -> google.protobuf.DoubleValue 3820 54, // 71: envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntry.value:type_name -> google.protobuf.Any 3821 53, // 72: envoy.config.cluster.v3.Cluster.HiddenEnvoyDeprecatedExtensionProtocolOptionsEntry.value:type_name -> google.protobuf.Struct 3822 5, // 73: envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.fallback_policy:type_name -> envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy 3823 57, // 74: envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig.routing_enabled:type_name -> envoy.type.v3.Percent 3824 56, // 75: envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig.min_cluster_size:type_name -> google.protobuf.UInt64Value 3825 33, // 76: envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfig.hash_balance_factor:type_name -> google.protobuf.UInt32Value 3826 43, // 77: envoy.config.cluster.v3.LoadBalancingPolicy.Policy.typed_extension_config:type_name -> envoy.config.core.v3.TypedExtensionConfig 3827 53, // 78: envoy.config.cluster.v3.LoadBalancingPolicy.Policy.hidden_envoy_deprecated_config:type_name -> google.protobuf.Struct 3828 79, // [79:79] is the sub-list for method output_type 3829 79, // [79:79] is the sub-list for method input_type 3830 79, // [79:79] is the sub-list for extension type_name 3831 79, // [79:79] is the sub-list for extension extendee 3832 0, // [0:79] is the sub-list for field type_name 3833 } 3834 3835 func init() { file_envoy_config_cluster_v3_cluster_proto_init() } 3836 func file_envoy_config_cluster_v3_cluster_proto_init() { 3837 if File_envoy_config_cluster_v3_cluster_proto != nil { 3838 return 3839 } 3840 file_envoy_config_cluster_v3_circuit_breaker_proto_init() 3841 file_envoy_config_cluster_v3_filter_proto_init() 3842 file_envoy_config_cluster_v3_outlier_detection_proto_init() 3843 if !protoimpl.UnsafeEnabled { 3844 file_envoy_config_cluster_v3_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 3845 switch v := v.(*ClusterCollection); i { 3846 case 0: 3847 return &v.state 3848 case 1: 3849 return &v.sizeCache 3850 case 2: 3851 return &v.unknownFields 3852 default: 3853 return nil 3854 } 3855 } 3856 file_envoy_config_cluster_v3_cluster_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 3857 switch v := v.(*Cluster); i { 3858 case 0: 3859 return &v.state 3860 case 1: 3861 return &v.sizeCache 3862 case 2: 3863 return &v.unknownFields 3864 default: 3865 return nil 3866 } 3867 } 3868 file_envoy_config_cluster_v3_cluster_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 3869 switch v := v.(*LoadBalancingPolicy); i { 3870 case 0: 3871 return &v.state 3872 case 1: 3873 return &v.sizeCache 3874 case 2: 3875 return &v.unknownFields 3876 default: 3877 return nil 3878 } 3879 } 3880 file_envoy_config_cluster_v3_cluster_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 3881 switch v := v.(*UpstreamBindConfig); i { 3882 case 0: 3883 return &v.state 3884 case 1: 3885 return &v.sizeCache 3886 case 2: 3887 return &v.unknownFields 3888 default: 3889 return nil 3890 } 3891 } 3892 file_envoy_config_cluster_v3_cluster_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 3893 switch v := v.(*UpstreamConnectionOptions); i { 3894 case 0: 3895 return &v.state 3896 case 1: 3897 return &v.sizeCache 3898 case 2: 3899 return &v.unknownFields 3900 default: 3901 return nil 3902 } 3903 } 3904 file_envoy_config_cluster_v3_cluster_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 3905 switch v := v.(*TrackClusterStats); i { 3906 case 0: 3907 return &v.state 3908 case 1: 3909 return &v.sizeCache 3910 case 2: 3911 return &v.unknownFields 3912 default: 3913 return nil 3914 } 3915 } 3916 file_envoy_config_cluster_v3_cluster_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 3917 switch v := v.(*Cluster_TransportSocketMatch); i { 3918 case 0: 3919 return &v.state 3920 case 1: 3921 return &v.sizeCache 3922 case 2: 3923 return &v.unknownFields 3924 default: 3925 return nil 3926 } 3927 } 3928 file_envoy_config_cluster_v3_cluster_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 3929 switch v := v.(*Cluster_CustomClusterType); i { 3930 case 0: 3931 return &v.state 3932 case 1: 3933 return &v.sizeCache 3934 case 2: 3935 return &v.unknownFields 3936 default: 3937 return nil 3938 } 3939 } 3940 file_envoy_config_cluster_v3_cluster_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 3941 switch v := v.(*Cluster_EdsClusterConfig); i { 3942 case 0: 3943 return &v.state 3944 case 1: 3945 return &v.sizeCache 3946 case 2: 3947 return &v.unknownFields 3948 default: 3949 return nil 3950 } 3951 } 3952 file_envoy_config_cluster_v3_cluster_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 3953 switch v := v.(*Cluster_LbSubsetConfig); i { 3954 case 0: 3955 return &v.state 3956 case 1: 3957 return &v.sizeCache 3958 case 2: 3959 return &v.unknownFields 3960 default: 3961 return nil 3962 } 3963 } 3964 file_envoy_config_cluster_v3_cluster_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 3965 switch v := v.(*Cluster_LeastRequestLbConfig); i { 3966 case 0: 3967 return &v.state 3968 case 1: 3969 return &v.sizeCache 3970 case 2: 3971 return &v.unknownFields 3972 default: 3973 return nil 3974 } 3975 } 3976 file_envoy_config_cluster_v3_cluster_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 3977 switch v := v.(*Cluster_RingHashLbConfig); i { 3978 case 0: 3979 return &v.state 3980 case 1: 3981 return &v.sizeCache 3982 case 2: 3983 return &v.unknownFields 3984 default: 3985 return nil 3986 } 3987 } 3988 file_envoy_config_cluster_v3_cluster_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3989 switch v := v.(*Cluster_MaglevLbConfig); i { 3990 case 0: 3991 return &v.state 3992 case 1: 3993 return &v.sizeCache 3994 case 2: 3995 return &v.unknownFields 3996 default: 3997 return nil 3998 } 3999 } 4000 file_envoy_config_cluster_v3_cluster_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 4001 switch v := v.(*Cluster_OriginalDstLbConfig); i { 4002 case 0: 4003 return &v.state 4004 case 1: 4005 return &v.sizeCache 4006 case 2: 4007 return &v.unknownFields 4008 default: 4009 return nil 4010 } 4011 } 4012 file_envoy_config_cluster_v3_cluster_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 4013 switch v := v.(*Cluster_CommonLbConfig); i { 4014 case 0: 4015 return &v.state 4016 case 1: 4017 return &v.sizeCache 4018 case 2: 4019 return &v.unknownFields 4020 default: 4021 return nil 4022 } 4023 } 4024 file_envoy_config_cluster_v3_cluster_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 4025 switch v := v.(*Cluster_RefreshRate); i { 4026 case 0: 4027 return &v.state 4028 case 1: 4029 return &v.sizeCache 4030 case 2: 4031 return &v.unknownFields 4032 default: 4033 return nil 4034 } 4035 } 4036 file_envoy_config_cluster_v3_cluster_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 4037 switch v := v.(*Cluster_PreconnectPolicy); i { 4038 case 0: 4039 return &v.state 4040 case 1: 4041 return &v.sizeCache 4042 case 2: 4043 return &v.unknownFields 4044 default: 4045 return nil 4046 } 4047 } 4048 file_envoy_config_cluster_v3_cluster_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 4049 switch v := v.(*Cluster_LbSubsetConfig_LbSubsetSelector); i { 4050 case 0: 4051 return &v.state 4052 case 1: 4053 return &v.sizeCache 4054 case 2: 4055 return &v.unknownFields 4056 default: 4057 return nil 4058 } 4059 } 4060 file_envoy_config_cluster_v3_cluster_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 4061 switch v := v.(*Cluster_CommonLbConfig_ZoneAwareLbConfig); i { 4062 case 0: 4063 return &v.state 4064 case 1: 4065 return &v.sizeCache 4066 case 2: 4067 return &v.unknownFields 4068 default: 4069 return nil 4070 } 4071 } 4072 file_envoy_config_cluster_v3_cluster_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 4073 switch v := v.(*Cluster_CommonLbConfig_LocalityWeightedLbConfig); i { 4074 case 0: 4075 return &v.state 4076 case 1: 4077 return &v.sizeCache 4078 case 2: 4079 return &v.unknownFields 4080 default: 4081 return nil 4082 } 4083 } 4084 file_envoy_config_cluster_v3_cluster_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 4085 switch v := v.(*Cluster_CommonLbConfig_ConsistentHashingLbConfig); i { 4086 case 0: 4087 return &v.state 4088 case 1: 4089 return &v.sizeCache 4090 case 2: 4091 return &v.unknownFields 4092 default: 4093 return nil 4094 } 4095 } 4096 file_envoy_config_cluster_v3_cluster_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 4097 switch v := v.(*LoadBalancingPolicy_Policy); i { 4098 case 0: 4099 return &v.state 4100 case 1: 4101 return &v.sizeCache 4102 case 2: 4103 return &v.unknownFields 4104 default: 4105 return nil 4106 } 4107 } 4108 } 4109 file_envoy_config_cluster_v3_cluster_proto_msgTypes[1].OneofWrappers = []interface{}{ 4110 (*Cluster_Type)(nil), 4111 (*Cluster_ClusterType)(nil), 4112 (*Cluster_RingHashLbConfig_)(nil), 4113 (*Cluster_MaglevLbConfig_)(nil), 4114 (*Cluster_OriginalDstLbConfig_)(nil), 4115 (*Cluster_LeastRequestLbConfig_)(nil), 4116 } 4117 file_envoy_config_cluster_v3_cluster_proto_msgTypes[14].OneofWrappers = []interface{}{ 4118 (*Cluster_CommonLbConfig_ZoneAwareLbConfig_)(nil), 4119 (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_)(nil), 4120 } 4121 type x struct{} 4122 out := protoimpl.TypeBuilder{ 4123 File: protoimpl.DescBuilder{ 4124 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 4125 RawDescriptor: file_envoy_config_cluster_v3_cluster_proto_rawDesc, 4126 NumEnums: 7, 4127 NumMessages: 24, 4128 NumExtensions: 0, 4129 NumServices: 0, 4130 }, 4131 GoTypes: file_envoy_config_cluster_v3_cluster_proto_goTypes, 4132 DependencyIndexes: file_envoy_config_cluster_v3_cluster_proto_depIdxs, 4133 EnumInfos: file_envoy_config_cluster_v3_cluster_proto_enumTypes, 4134 MessageInfos: file_envoy_config_cluster_v3_cluster_proto_msgTypes, 4135 }.Build() 4136 File_envoy_config_cluster_v3_cluster_proto = out.File 4137 file_envoy_config_cluster_v3_cluster_proto_rawDesc = nil 4138 file_envoy_config_cluster_v3_cluster_proto_goTypes = nil 4139 file_envoy_config_cluster_v3_cluster_proto_depIdxs = nil 4140 }