diff --git a/configs/milvus.yaml b/configs/milvus.yaml index c00fc502e9..79539fbec3 100644 --- a/configs/milvus.yaml +++ b/configs/milvus.yaml @@ -94,6 +94,8 @@ minio: region: "" # Cloud whether use virtual host bucket mode useVirtualHost: false + # timeout for request time in milliseconds + requestTimeoutMs: 3000 # Milvus supports four MQ: rocksmq(based on RockDB), natsmq(embedded nats-server), Pulsar and Kafka. # You can change your mq by setting mq.type field. diff --git a/internal/core/src/common/Consts.h b/internal/core/src/common/Consts.h index 50a4f2dc32..9de3b0e48b 100644 --- a/internal/core/src/common/Consts.h +++ b/internal/core/src/common/Consts.h @@ -52,3 +52,5 @@ constexpr const char* RADIUS = knowhere::meta::RADIUS; constexpr const char* RANGE_FILTER = knowhere::meta::RANGE_FILTER; const int64_t DEFAULT_MAX_OUTPUT_SIZE = 67108864; // bytes, 64MB + +const int64_t DEFAULT_CHUNK_MANAGER_REQUEST_TIMEOUT_MS = 3000; diff --git a/internal/core/src/common/type_c.h b/internal/core/src/common/type_c.h index 085b6e8a36..e432e899e6 100644 --- a/internal/core/src/common/type_c.h +++ b/internal/core/src/common/type_c.h @@ -85,6 +85,7 @@ typedef struct CStorageConfig { bool useSSL; bool useIAM; bool useVirtualHost; + int64_t requestTimeoutMs; } CStorageConfig; typedef struct CTraceConfig { diff --git a/internal/core/src/indexbuilder/index_c.cpp b/internal/core/src/indexbuilder/index_c.cpp index e6a1e901e6..adc78b9c00 100644 --- a/internal/core/src/indexbuilder/index_c.cpp +++ b/internal/core/src/indexbuilder/index_c.cpp @@ -314,6 +314,7 @@ NewBuildIndexInfo(CBuildIndexInfo* c_build_index_info, storage_config.useIAM = c_storage_config.useIAM; storage_config.region = c_storage_config.region; storage_config.useVirtualHost = c_storage_config.useVirtualHost; + storage_config.requestTimeoutMs = c_storage_config.requestTimeoutMs; *c_build_index_info = build_index_info.release(); auto status = CStatus(); diff --git a/internal/core/src/storage/ChunkManagers.cpp b/internal/core/src/storage/ChunkManagers.cpp index 57562964ae..ea097e47d1 100644 --- a/internal/core/src/storage/ChunkManagers.cpp +++ b/internal/core/src/storage/ChunkManagers.cpp @@ -31,6 +31,7 @@ #include "storage/MinioChunkManager.h" #include "storage/AliyunSTSClient.h" #include "storage/AliyunCredentialsProvider.h" +#include "common/Consts.h" #include "common/EasyAssert.h" #include "log/Log.h" #include "signal.h" @@ -61,6 +62,11 @@ generateConfig(const StorageConfig& storage_config) { if (!storage_config.region.empty()) { config.region = ConvertToAwsString(storage_config.region); } + + config.requestTimeoutMs = storage_config.requestTimeoutMs == 0 + ? DEFAULT_CHUNK_MANAGER_REQUEST_TIMEOUT_MS + : storage_config.requestTimeoutMs; + return config; } diff --git a/internal/core/src/storage/MinioChunkManager.cpp b/internal/core/src/storage/MinioChunkManager.cpp index ca1f9d2faf..badddb5fa7 100644 --- a/internal/core/src/storage/MinioChunkManager.cpp +++ b/internal/core/src/storage/MinioChunkManager.cpp @@ -34,6 +34,7 @@ #include "common/EasyAssert.h" #include "log/Log.h" #include "signal.h" +#include "common/Consts.h" namespace milvus::storage { @@ -301,6 +302,10 @@ MinioChunkManager::MinioChunkManager(const StorageConfig& storage_config) config.verifySSL = false; } + config.requestTimeoutMs = storage_config.requestTimeoutMs == 0 + ? DEFAULT_CHUNK_MANAGER_REQUEST_TIMEOUT_MS + : storage_config.requestTimeoutMs; + if (!storage_config.region.empty()) { config.region = ConvertToAwsString(storage_config.region); } diff --git a/internal/core/src/storage/Types.h b/internal/core/src/storage/Types.h index bbce8114d7..f83a47f623 100644 --- a/internal/core/src/storage/Types.h +++ b/internal/core/src/storage/Types.h @@ -95,6 +95,7 @@ struct StorageConfig { bool useSSL = false; bool useIAM = false; bool useVirtualHost = false; + int64_t requestTimeoutMs = 3000; }; } // namespace milvus::storage diff --git a/internal/core/src/storage/storage_c.cpp b/internal/core/src/storage/storage_c.cpp index e5c83a3496..fb7d20879b 100644 --- a/internal/core/src/storage/storage_c.cpp +++ b/internal/core/src/storage/storage_c.cpp @@ -71,6 +71,7 @@ InitRemoteChunkManagerSingleton(CStorageConfig c_storage_config) { storage_config.useIAM = c_storage_config.useIAM; storage_config.useVirtualHost = c_storage_config.useVirtualHost; storage_config.region = c_storage_config.region; + storage_config.requestTimeoutMs = c_storage_config.requestTimeoutMs; milvus::storage::RemoteChunkManagerSingleton::GetInstance().Init( storage_config); diff --git a/internal/datacoord/index_builder.go b/internal/datacoord/index_builder.go index 67752479db..1fe758b08d 100644 --- a/internal/datacoord/index_builder.go +++ b/internal/datacoord/index_builder.go @@ -284,18 +284,19 @@ func (ib *indexBuilder) process(buildID UniqueID) bool { } } else { storageConfig = &indexpb.StorageConfig{ - Address: Params.MinioCfg.Address.GetValue(), - AccessKeyID: Params.MinioCfg.AccessKeyID.GetValue(), - SecretAccessKey: Params.MinioCfg.SecretAccessKey.GetValue(), - UseSSL: Params.MinioCfg.UseSSL.GetAsBool(), - BucketName: Params.MinioCfg.BucketName.GetValue(), - RootPath: Params.MinioCfg.RootPath.GetValue(), - UseIAM: Params.MinioCfg.UseIAM.GetAsBool(), - IAMEndpoint: Params.MinioCfg.IAMEndpoint.GetValue(), - StorageType: Params.CommonCfg.StorageType.GetValue(), - Region: Params.MinioCfg.Region.GetValue(), - UseVirtualHost: Params.MinioCfg.UseVirtualHost.GetAsBool(), - CloudProvider: Params.MinioCfg.CloudProvider.GetValue(), + Address: Params.MinioCfg.Address.GetValue(), + AccessKeyID: Params.MinioCfg.AccessKeyID.GetValue(), + SecretAccessKey: Params.MinioCfg.SecretAccessKey.GetValue(), + UseSSL: Params.MinioCfg.UseSSL.GetAsBool(), + BucketName: Params.MinioCfg.BucketName.GetValue(), + RootPath: Params.MinioCfg.RootPath.GetValue(), + UseIAM: Params.MinioCfg.UseIAM.GetAsBool(), + IAMEndpoint: Params.MinioCfg.IAMEndpoint.GetValue(), + StorageType: Params.CommonCfg.StorageType.GetValue(), + Region: Params.MinioCfg.Region.GetValue(), + UseVirtualHost: Params.MinioCfg.UseVirtualHost.GetAsBool(), + CloudProvider: Params.MinioCfg.CloudProvider.GetValue(), + RequestTimeoutMs: Params.MinioCfg.RequestTimeoutMs.GetAsInt64(), } } req := &indexpb.CreateJobRequest{ diff --git a/internal/indexnode/chunk_mgr_factory.go b/internal/indexnode/chunk_mgr_factory.go index 54415fa381..4d6894da37 100644 --- a/internal/indexnode/chunk_mgr_factory.go +++ b/internal/indexnode/chunk_mgr_factory.go @@ -35,6 +35,7 @@ func (m *chunkMgrFactory) NewChunkManager(ctx context.Context, config *indexpb.S storage.CloudProvider(config.GetCloudProvider()), storage.IAMEndpoint(config.GetIAMEndpoint()), storage.UseVirtualHost(config.GetUseVirtualHost()), + storage.RequestTimeout(config.GetRequestTimeoutMs()), storage.Region(config.GetRegion()), storage.CreateBucket(true), ) diff --git a/internal/proto/index_coord.proto b/internal/proto/index_coord.proto index f32161eba6..5bc11e960e 100644 --- a/internal/proto/index_coord.proto +++ b/internal/proto/index_coord.proto @@ -211,6 +211,7 @@ message StorageConfig { bool use_virtual_host = 10; string region = 11; string cloud_provider = 12; + int64 request_timeout_ms = 13; } message CreateJobRequest { diff --git a/internal/proto/indexpb/index_coord.pb.go b/internal/proto/indexpb/index_coord.pb.go index ade3ef09dd..1f55b3198e 100644 --- a/internal/proto/indexpb/index_coord.pb.go +++ b/internal/proto/indexpb/index_coord.pb.go @@ -1407,6 +1407,7 @@ type StorageConfig struct { UseVirtualHost bool `protobuf:"varint,10,opt,name=use_virtual_host,json=useVirtualHost,proto3" json:"use_virtual_host,omitempty"` Region string `protobuf:"bytes,11,opt,name=region,proto3" json:"region,omitempty"` CloudProvider string `protobuf:"bytes,12,opt,name=cloud_provider,json=cloudProvider,proto3" json:"cloud_provider,omitempty"` + RequestTimeoutMs int64 `protobuf:"varint,13,opt,name=request_timeout_ms,json=requestTimeoutMs,proto3" json:"request_timeout_ms,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1521,6 +1522,13 @@ func (m *StorageConfig) GetCloudProvider() string { return "" } +func (m *StorageConfig) GetRequestTimeoutMs() int64 { + if m != nil { + return m.RequestTimeoutMs + } + return 0 +} + type CreateJobRequest struct { ClusterID string `protobuf:"bytes,1,opt,name=clusterID,proto3" json:"clusterID,omitempty"` IndexFilePrefix string `protobuf:"bytes,2,opt,name=index_file_prefix,json=indexFilePrefix,proto3" json:"index_file_prefix,omitempty"` @@ -2205,155 +2213,156 @@ func init() { func init() { proto.RegisterFile("index_coord.proto", fileDescriptor_f9e019eb3fda53c2) } var fileDescriptor_f9e019eb3fda53c2 = []byte{ - // 2353 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xdd, 0x6e, 0x1c, 0x49, - 0xf5, 0x4f, 0xbb, 0xc7, 0xf6, 0xf4, 0xe9, 0x19, 0x7f, 0x54, 0xbc, 0xff, 0xff, 0x64, 0x92, 0x10, - 0xa7, 0xb3, 0x49, 0x0c, 0x22, 0x4e, 0xf0, 0xb2, 0x68, 0x41, 0x80, 0xe4, 0xd8, 0x9b, 0x64, 0x92, - 0x4d, 0x64, 0xda, 0x51, 0x24, 0x56, 0x88, 0xa6, 0x67, 0xba, 0xc6, 0xae, 0x75, 0x4f, 0xd7, 0xa4, - 0xab, 0x3a, 0x89, 0x83, 0x84, 0xe0, 0x02, 0x24, 0xd0, 0x4a, 0x08, 0xb4, 0x82, 0x17, 0xe0, 0x6a, - 0x79, 0x02, 0xb8, 0xe1, 0x86, 0x4b, 0x5e, 0x81, 0x77, 0x41, 0xf5, 0xd1, 0x3d, 0xdd, 0x3d, 0x3d, - 0x9e, 0x89, 0x6d, 0x84, 0x04, 0x77, 0x53, 0xa7, 0x4e, 0x7d, 0xf4, 0x39, 0xbf, 0x73, 0x7e, 0xe7, - 0xd4, 0xc0, 0x2a, 0x89, 0x02, 0xfc, 0xc6, 0xeb, 0x51, 0x1a, 0x07, 0x9b, 0xc3, 0x98, 0x72, 0x8a, - 0xd0, 0x80, 0x84, 0xaf, 0x12, 0xa6, 0x46, 0x9b, 0x72, 0xbe, 0xdd, 0xe8, 0xd1, 0xc1, 0x80, 0x46, - 0x4a, 0xd6, 0x5e, 0x22, 0x11, 0xc7, 0x71, 0xe4, 0x87, 0x7a, 0xdc, 0xc8, 0xaf, 0x70, 0xfe, 0x59, - 0x03, 0xab, 0x23, 0x56, 0x75, 0xa2, 0x3e, 0x45, 0x0e, 0x34, 0x7a, 0x34, 0x0c, 0x71, 0x8f, 0x13, - 0x1a, 0x75, 0x76, 0x5b, 0xc6, 0xba, 0xb1, 0x61, 0xba, 0x05, 0x19, 0x6a, 0xc1, 0x62, 0x9f, 0xe0, - 0x30, 0xe8, 0xec, 0xb6, 0xe6, 0xe4, 0x74, 0x3a, 0x44, 0x57, 0x01, 0xd4, 0x05, 0x23, 0x7f, 0x80, - 0x5b, 0xe6, 0xba, 0xb1, 0x61, 0xb9, 0x96, 0x94, 0x3c, 0xf3, 0x07, 0x58, 0x2c, 0x94, 0x83, 0xce, - 0x6e, 0xab, 0xa6, 0x16, 0xea, 0x21, 0xba, 0x0f, 0x36, 0x3f, 0x1e, 0x62, 0x6f, 0xe8, 0xc7, 0xfe, - 0x80, 0xb5, 0xe6, 0xd7, 0xcd, 0x0d, 0x7b, 0xeb, 0xfa, 0x66, 0xe1, 0xd3, 0xf4, 0x37, 0x3d, 0xc1, - 0xc7, 0x2f, 0xfc, 0x30, 0xc1, 0x7b, 0x3e, 0x89, 0x5d, 0x10, 0xab, 0xf6, 0xe4, 0x22, 0xb4, 0x0b, - 0x0d, 0x75, 0xb8, 0xde, 0x64, 0x61, 0xd6, 0x4d, 0x6c, 0xb9, 0x4c, 0xef, 0x72, 0x5d, 0xef, 0x82, - 0x03, 0x2f, 0xa6, 0xaf, 0x59, 0x6b, 0x51, 0x5e, 0xd4, 0xd6, 0x32, 0x97, 0xbe, 0x66, 0xe2, 0x2b, - 0x39, 0xe5, 0x7e, 0xa8, 0x14, 0xea, 0x52, 0xc1, 0x92, 0x12, 0x39, 0xfd, 0x21, 0xcc, 0x33, 0xee, - 0x73, 0xdc, 0xb2, 0xd6, 0x8d, 0x8d, 0xa5, 0xad, 0x6b, 0x95, 0x17, 0x90, 0x16, 0xdf, 0x17, 0x6a, - 0xae, 0xd2, 0x46, 0x1f, 0xc2, 0xff, 0xab, 0xeb, 0xcb, 0xa1, 0xd7, 0xf7, 0x49, 0xe8, 0xc5, 0xd8, - 0x67, 0x34, 0x6a, 0x81, 0x34, 0xe4, 0x1a, 0xc9, 0xd6, 0x3c, 0xf0, 0x49, 0xe8, 0xca, 0x39, 0xe4, - 0x40, 0x93, 0x30, 0xcf, 0x4f, 0x38, 0xf5, 0xe4, 0x7c, 0xcb, 0x5e, 0x37, 0x36, 0xea, 0xae, 0x4d, - 0xd8, 0x76, 0xc2, 0xa9, 0x3c, 0x06, 0x3d, 0x85, 0xd5, 0x84, 0xe1, 0xd8, 0x2b, 0x98, 0xa7, 0x31, - 0xab, 0x79, 0x96, 0xc5, 0xda, 0x4e, 0xce, 0x44, 0x5f, 0x07, 0x34, 0xc4, 0x51, 0x40, 0xa2, 0x03, - 0xbd, 0xa3, 0xb4, 0x43, 0x53, 0xda, 0x61, 0x45, 0xcf, 0x48, 0x7d, 0x61, 0x0e, 0xe7, 0x97, 0x06, - 0xc0, 0x03, 0x89, 0x0f, 0x79, 0x97, 0xef, 0xa6, 0x10, 0x21, 0x51, 0x9f, 0x4a, 0x78, 0xd9, 0x5b, - 0x57, 0x37, 0xc7, 0x31, 0xbc, 0x99, 0x61, 0x52, 0x23, 0x48, 0xc2, 0xb3, 0x05, 0x8b, 0x01, 0x0e, - 0x31, 0xc7, 0x81, 0x84, 0x5e, 0xdd, 0x4d, 0x87, 0xe8, 0x1a, 0xd8, 0xbd, 0x18, 0x0b, 0xcb, 0x71, - 0xa2, 0xb1, 0x57, 0x73, 0x41, 0x89, 0x9e, 0x93, 0x01, 0x76, 0xfe, 0x52, 0x83, 0xc6, 0x3e, 0x3e, - 0x18, 0xe0, 0x88, 0xab, 0x9b, 0xcc, 0x02, 0xf5, 0x75, 0xb0, 0x87, 0x7e, 0xcc, 0x89, 0x56, 0x51, - 0x70, 0xcf, 0x8b, 0xd0, 0x15, 0xb0, 0x98, 0xde, 0x75, 0x57, 0x9e, 0x6a, 0xba, 0x23, 0x01, 0xba, - 0x04, 0xf5, 0x28, 0x19, 0x28, 0x03, 0x69, 0xc8, 0x47, 0xc9, 0x40, 0xc2, 0x24, 0x17, 0x0c, 0xf3, - 0xc5, 0x60, 0x68, 0xc1, 0x62, 0x37, 0x21, 0x32, 0xbe, 0x16, 0xd4, 0x8c, 0x1e, 0xa2, 0xff, 0x83, - 0x85, 0x88, 0x06, 0xb8, 0xb3, 0xab, 0x61, 0xa9, 0x47, 0xe8, 0x06, 0x34, 0x95, 0x51, 0x5f, 0xe1, - 0x98, 0x11, 0x1a, 0x69, 0x50, 0x2a, 0x24, 0xbf, 0x50, 0xb2, 0xd3, 0xe2, 0xf2, 0x1a, 0xd8, 0xe3, - 0x58, 0x84, 0xfe, 0x08, 0x81, 0xb7, 0x60, 0x59, 0x1d, 0xde, 0x27, 0x21, 0xf6, 0x8e, 0xf0, 0x31, - 0x6b, 0xd9, 0xeb, 0xe6, 0x86, 0xe5, 0xaa, 0x3b, 0x3d, 0x20, 0x21, 0x7e, 0x82, 0x8f, 0x59, 0xde, - 0x77, 0x8d, 0x13, 0x7d, 0xd7, 0x2c, 0xfb, 0x0e, 0xdd, 0x84, 0x25, 0x86, 0x63, 0xe2, 0x87, 0xe4, - 0x2d, 0xf6, 0x18, 0x79, 0x8b, 0x5b, 0x4b, 0x52, 0xa7, 0x99, 0x49, 0xf7, 0xc9, 0x5b, 0x2c, 0xcc, - 0xf0, 0x3a, 0x26, 0x1c, 0x7b, 0x87, 0x7e, 0x14, 0xd0, 0x7e, 0xbf, 0xb5, 0x2c, 0xcf, 0x69, 0x48, - 0xe1, 0x23, 0x25, 0x43, 0x5b, 0xf0, 0x5e, 0x2f, 0x89, 0x63, 0x1c, 0x71, 0xaf, 0x68, 0xb3, 0x95, - 0x75, 0x63, 0x63, 0xde, 0xbd, 0xa8, 0x27, 0x3b, 0x39, 0xd3, 0x39, 0x7f, 0x34, 0xe0, 0xa2, 0x8b, - 0x0f, 0x08, 0xe3, 0x38, 0x7e, 0x46, 0x03, 0xec, 0xe2, 0x97, 0x09, 0x66, 0x1c, 0xdd, 0x83, 0x5a, - 0xd7, 0x67, 0x58, 0xc3, 0xf8, 0x4a, 0xa5, 0x45, 0x9f, 0xb2, 0x83, 0xfb, 0x3e, 0xc3, 0xae, 0xd4, - 0x44, 0xdf, 0x82, 0x45, 0x3f, 0x08, 0x62, 0xcc, 0x98, 0x04, 0xd3, 0xa4, 0x45, 0xdb, 0x4a, 0xc7, - 0x4d, 0x95, 0x73, 0x9e, 0x37, 0xf3, 0x9e, 0x77, 0x7e, 0x6b, 0xc0, 0x5a, 0xf1, 0x66, 0x6c, 0x48, - 0x23, 0x86, 0xd1, 0x07, 0xb0, 0x20, 0xfc, 0x97, 0x30, 0x7d, 0xb9, 0xcb, 0x95, 0xe7, 0xec, 0x4b, - 0x15, 0x57, 0xab, 0x8a, 0x34, 0x4c, 0x22, 0xc2, 0xd3, 0x14, 0xa1, 0x6e, 0x78, 0xbd, 0x1c, 0x9d, - 0x9a, 0x4c, 0x3a, 0x11, 0xe1, 0x2a, 0x23, 0xb8, 0x40, 0xb2, 0xdf, 0xce, 0x0f, 0x61, 0xed, 0x21, - 0xe6, 0x39, 0x1c, 0x69, 0x5b, 0xcd, 0x12, 0x6e, 0x45, 0xfe, 0x98, 0x2b, 0xf1, 0x87, 0xf3, 0x27, - 0x03, 0xde, 0x2b, 0xed, 0x7d, 0x96, 0xaf, 0xcd, 0x02, 0x62, 0xee, 0x2c, 0x01, 0x61, 0x96, 0x03, - 0xc2, 0xf9, 0xb9, 0x01, 0x97, 0x1f, 0x62, 0x9e, 0x4f, 0x36, 0xe7, 0x6c, 0x09, 0xf4, 0x15, 0x80, - 0x2c, 0xc9, 0xb0, 0x96, 0xb9, 0x6e, 0x6e, 0x98, 0x6e, 0x4e, 0xe2, 0xfc, 0xda, 0x80, 0xd5, 0xb1, - 0xf3, 0x8b, 0xb9, 0xca, 0x28, 0xe7, 0xaa, 0x7f, 0x97, 0x39, 0x7e, 0x6f, 0xc0, 0x95, 0x6a, 0x73, - 0x9c, 0xc5, 0x79, 0xdf, 0x53, 0x8b, 0xb0, 0x40, 0xa9, 0x20, 0xb2, 0x9b, 0x55, 0x1c, 0x32, 0x7e, - 0xa6, 0x5e, 0xe4, 0x7c, 0x6e, 0x02, 0xda, 0x91, 0x09, 0x46, 0x31, 0xd5, 0x3b, 0xb8, 0xe6, 0xd4, - 0xe5, 0x4f, 0xa9, 0xc8, 0xa9, 0x9d, 0x47, 0x91, 0x33, 0x7f, 0xaa, 0x22, 0xe7, 0x0a, 0x58, 0x22, - 0xd3, 0x32, 0xee, 0x0f, 0x86, 0x92, 0x63, 0x6a, 0xee, 0x48, 0x30, 0x5e, 0x52, 0x2c, 0xce, 0x58, - 0x52, 0xd4, 0x4f, 0x5b, 0x52, 0x38, 0x6f, 0xe0, 0x62, 0x1a, 0xd8, 0x92, 0xf2, 0xdf, 0xc1, 0x1d, - 0xc5, 0x50, 0x98, 0x2b, 0x87, 0xc2, 0x14, 0xa7, 0x38, 0x7f, 0x36, 0x61, 0xb5, 0x93, 0xf2, 0xd4, - 0x9e, 0xcf, 0x0f, 0x65, 0x9d, 0x71, 0x72, 0xa4, 0x4c, 0x46, 0x40, 0x8e, 0xd4, 0xcd, 0x89, 0xa4, - 0x5e, 0x2b, 0x92, 0x7a, 0xf1, 0x82, 0xf3, 0x65, 0xd4, 0x9c, 0x4f, 0x59, 0xbb, 0x01, 0x2b, 0x39, - 0x92, 0x1e, 0xfa, 0xfc, 0x50, 0x94, 0xb6, 0x82, 0xa5, 0x97, 0x48, 0xfe, 0xeb, 0x19, 0xba, 0x0d, - 0xcb, 0x19, 0xab, 0x06, 0x8a, 0x6c, 0xeb, 0x12, 0x21, 0x23, 0x0a, 0x0e, 0x52, 0xb6, 0x2d, 0x12, - 0xa8, 0x55, 0x51, 0x74, 0xe4, 0x0b, 0x20, 0x28, 0x16, 0x40, 0x13, 0x89, 0xd8, 0x9e, 0x4c, 0xc4, - 0x7f, 0x35, 0xc0, 0xce, 0x82, 0x7a, 0xc6, 0x76, 0xa5, 0xe0, 0xcb, 0xb9, 0xb2, 0x2f, 0xaf, 0x43, - 0x03, 0x47, 0x7e, 0x37, 0xc4, 0x1a, 0xeb, 0xa6, 0xc2, 0xba, 0x92, 0x29, 0xac, 0x3f, 0x00, 0x7b, - 0x54, 0xb2, 0xa6, 0x71, 0x7b, 0x73, 0x62, 0xcd, 0x9a, 0x07, 0x92, 0x0b, 0x59, 0xed, 0xca, 0x9c, - 0xdf, 0xcc, 0x8d, 0xa8, 0x51, 0xa1, 0xfc, 0x2c, 0x09, 0xf0, 0x47, 0xd0, 0xd0, 0x5f, 0xa1, 0x4a, - 0x69, 0x95, 0x06, 0xbf, 0x5d, 0x75, 0xad, 0xaa, 0x43, 0x37, 0x73, 0x66, 0xfc, 0x38, 0xe2, 0xf1, - 0xb1, 0x6b, 0xb3, 0x91, 0xa4, 0xed, 0xc1, 0x4a, 0x59, 0x01, 0xad, 0x80, 0x79, 0x84, 0x8f, 0xb5, - 0x8d, 0xc5, 0x4f, 0x41, 0x19, 0xaf, 0x04, 0xde, 0x74, 0xa5, 0x70, 0xed, 0xc4, 0x1c, 0xdc, 0xa7, - 0xae, 0xd2, 0xfe, 0xce, 0xdc, 0x47, 0x86, 0xf3, 0x85, 0x01, 0x2b, 0xbb, 0x31, 0x1d, 0xbe, 0x73, - 0xfa, 0x75, 0xa0, 0x91, 0xab, 0xbf, 0xd3, 0x88, 0x2f, 0xc8, 0xa6, 0x25, 0xe2, 0x4b, 0x50, 0x0f, - 0x62, 0x3a, 0xf4, 0xfc, 0x30, 0x94, 0xc1, 0x28, 0x4a, 0xd1, 0x98, 0x0e, 0xb7, 0xc3, 0xd0, 0x79, - 0x0d, 0x6b, 0xbb, 0x98, 0xf5, 0x62, 0xd2, 0x7d, 0x77, 0x62, 0x98, 0xc2, 0xd9, 0x85, 0xa4, 0x6b, - 0x96, 0x92, 0xae, 0xf3, 0xb9, 0x01, 0xef, 0x95, 0x4e, 0x3e, 0x0b, 0x3a, 0xbe, 0x5f, 0xc4, 0xac, - 0x02, 0xc7, 0x94, 0x3e, 0x2b, 0x8f, 0x55, 0x5f, 0x72, 0xb6, 0x9c, 0xbb, 0x2f, 0xf2, 0xd4, 0x5e, - 0x4c, 0x0f, 0x64, 0x45, 0x7a, 0x7e, 0xd5, 0xdc, 0xdf, 0x0d, 0xb8, 0x3a, 0xe1, 0x8c, 0xb3, 0x7c, - 0x79, 0xb9, 0x81, 0x9f, 0x9b, 0xd6, 0xc0, 0x9b, 0xe5, 0x06, 0xbe, 0xba, 0xbf, 0xad, 0x4d, 0xe8, - 0x6f, 0xbf, 0x30, 0xa1, 0xb9, 0xcf, 0x69, 0xec, 0x1f, 0xe0, 0x1d, 0x1a, 0xf5, 0xc9, 0x81, 0x48, - 0xf5, 0x69, 0x8d, 0x6f, 0xc8, 0x8f, 0xce, 0xaa, 0xf8, 0xeb, 0xd0, 0xf0, 0x7b, 0x3d, 0xcc, 0x98, - 0x68, 0x93, 0x74, 0x36, 0xb2, 0x5c, 0x5b, 0xc9, 0x9e, 0x08, 0x11, 0xfa, 0x1a, 0xac, 0x32, 0xdc, - 0x8b, 0x31, 0xf7, 0x46, 0x9a, 0x1a, 0xc1, 0xcb, 0x6a, 0x62, 0x3b, 0xd5, 0x16, 0x4d, 0x41, 0xc2, - 0xf0, 0xfe, 0xfe, 0x27, 0x1a, 0xc5, 0x7a, 0x24, 0x4a, 0xb2, 0x6e, 0xd2, 0x3b, 0xc2, 0x3c, 0x4f, - 0x29, 0xa0, 0x44, 0x12, 0x8a, 0x97, 0xc1, 0x8a, 0x29, 0xe5, 0x92, 0x07, 0x24, 0xff, 0x5b, 0x6e, - 0x5d, 0x08, 0x44, 0xda, 0xd2, 0xbb, 0x76, 0xb6, 0x9f, 0x6a, 0xde, 0xd7, 0x23, 0xd1, 0x0b, 0x77, - 0xb6, 0x9f, 0x7e, 0x1c, 0x05, 0x43, 0x4a, 0x22, 0x2e, 0x49, 0xc1, 0x72, 0xf3, 0x22, 0xf1, 0x79, - 0x4c, 0x59, 0xc2, 0x13, 0x25, 0x8b, 0x24, 0x04, 0xcb, 0xb5, 0xb5, 0xec, 0xf9, 0xf1, 0x10, 0x0b, - 0x1e, 0x4a, 0x18, 0xf6, 0x5e, 0x91, 0x98, 0x27, 0x7e, 0xe8, 0x1d, 0x52, 0xc6, 0x25, 0x2f, 0xd4, - 0xdd, 0xa5, 0x84, 0xe1, 0x17, 0x4a, 0xfc, 0x88, 0x32, 0x2e, 0xae, 0x11, 0xe3, 0x83, 0x94, 0x0f, - 0x2c, 0x57, 0x8f, 0x44, 0x2f, 0xd8, 0x0b, 0x69, 0x12, 0x78, 0xc3, 0x98, 0xbe, 0x22, 0x01, 0x8e, - 0x65, 0x37, 0x69, 0xb9, 0x4d, 0x29, 0xdd, 0xd3, 0x42, 0xe7, 0x0f, 0x35, 0x58, 0x51, 0x05, 0xde, - 0x63, 0xda, 0x4d, 0x51, 0x7b, 0x05, 0xac, 0x5e, 0x98, 0x88, 0x5e, 0x49, 0x43, 0xd6, 0x72, 0x47, - 0x02, 0x61, 0xfa, 0x3c, 0x47, 0xc6, 0xb8, 0x4f, 0xde, 0x68, 0x17, 0x2d, 0x8f, 0x48, 0x52, 0x8a, - 0xf3, 0x74, 0x6e, 0x8e, 0xd1, 0x79, 0xe0, 0x73, 0x5f, 0x73, 0x6c, 0x4d, 0x72, 0xac, 0x25, 0x24, - 0x8a, 0x5e, 0xc7, 0x58, 0x73, 0xbe, 0x82, 0x35, 0x73, 0x65, 0xc4, 0x42, 0xb1, 0x8c, 0x28, 0xc6, - 0xd4, 0x62, 0x39, 0xc7, 0x3c, 0x82, 0xa5, 0xd4, 0x03, 0x3d, 0x09, 0x46, 0xe9, 0xa6, 0x8a, 0x1e, - 0x4e, 0x66, 0xe6, 0x3c, 0x6a, 0xdd, 0x26, 0x2b, 0x80, 0xb8, 0x5c, 0x76, 0x58, 0xa7, 0x2a, 0x3b, - 0x4a, 0x25, 0x2f, 0x9c, 0xa6, 0xe4, 0xcd, 0x97, 0x10, 0xf6, 0x8c, 0x25, 0x44, 0x63, 0x72, 0x09, - 0xf1, 0x09, 0xac, 0xfc, 0x20, 0xc1, 0xf1, 0xf1, 0x63, 0xda, 0x65, 0xb3, 0xe1, 0xa2, 0x0d, 0x75, - 0xed, 0xdc, 0x94, 0x6d, 0xb2, 0xb1, 0xf3, 0xab, 0x39, 0x68, 0xca, 0xed, 0x9f, 0xfb, 0xec, 0x28, - 0x7d, 0xa2, 0x4a, 0x91, 0x61, 0x14, 0x91, 0x71, 0xca, 0x06, 0xab, 0xe2, 0x7d, 0xc5, 0xac, 0x7a, - 0x5f, 0xa9, 0x28, 0xdc, 0x6a, 0x95, 0x85, 0x5b, 0xa9, 0x63, 0x9b, 0x1f, 0x7b, 0xd1, 0x99, 0x68, - 0xd6, 0x85, 0xc9, 0x66, 0xfd, 0xd2, 0x80, 0xd5, 0x9c, 0x5d, 0xcf, 0x92, 0xc1, 0x0b, 0xde, 0x98, - 0x2b, 0x7b, 0xe3, 0x7e, 0x91, 0xd9, 0xcc, 0x2a, 0x48, 0xe5, 0x98, 0x2d, 0xf5, 0x4b, 0x81, 0xdd, - 0x9e, 0xc0, 0xb2, 0xa8, 0x3d, 0xce, 0x07, 0x02, 0xff, 0x30, 0x60, 0xf1, 0x31, 0xed, 0x4a, 0xe7, - 0xe7, 0xb1, 0x6a, 0x14, 0xb1, 0xba, 0x02, 0x66, 0x40, 0x06, 0x9a, 0x8e, 0xc4, 0x4f, 0x11, 0xcb, - 0x8c, 0xfb, 0x31, 0x1f, 0xbd, 0x58, 0x8a, 0xca, 0x54, 0x48, 0xe4, 0xa3, 0xd7, 0x25, 0xa8, 0xe3, - 0x28, 0x50, 0x93, 0xba, 0x65, 0xc0, 0x51, 0x20, 0xa7, 0xce, 0xa7, 0x0b, 0x5c, 0x83, 0xf9, 0x21, - 0x1d, 0xbd, 0x32, 0xaa, 0x81, 0xb3, 0x06, 0xe8, 0x21, 0xe6, 0x8f, 0x69, 0x57, 0x78, 0x25, 0x35, - 0x8f, 0xf3, 0xb7, 0x39, 0xd9, 0xa1, 0x8d, 0xc4, 0x67, 0x71, 0xb0, 0x03, 0x4d, 0xc5, 0xbf, 0x9f, - 0xd1, 0xae, 0x17, 0x25, 0xa9, 0x51, 0x6c, 0x29, 0x7c, 0x4c, 0xbb, 0xcf, 0x92, 0x01, 0xba, 0x03, - 0x17, 0x49, 0x24, 0x72, 0xbc, 0x2c, 0x09, 0x32, 0x4d, 0x65, 0xa5, 0x15, 0x12, 0xa5, 0xc5, 0x82, - 0x56, 0xbf, 0x05, 0xcb, 0x38, 0x7a, 0x99, 0xe0, 0x04, 0x67, 0xaa, 0xca, 0x66, 0x4d, 0x2d, 0xd6, - 0x7a, 0x82, 0xfa, 0x7d, 0x76, 0xe4, 0xb1, 0x90, 0x72, 0xa6, 0x73, 0xaf, 0x25, 0x24, 0xfb, 0x42, - 0x80, 0x3e, 0x02, 0x4b, 0x2c, 0x57, 0xd0, 0x52, 0x9d, 0xd6, 0xe5, 0x2a, 0x68, 0x69, 0x7f, 0xbb, - 0xf5, 0xcf, 0xd4, 0x0f, 0x26, 0x82, 0x4a, 0xf7, 0x11, 0x01, 0x61, 0x47, 0x9a, 0x3a, 0x41, 0x89, - 0x76, 0x09, 0x3b, 0x72, 0x7e, 0x0c, 0x97, 0xf2, 0x6f, 0x57, 0x84, 0x71, 0xd2, 0x3b, 0xcf, 0x72, - 0xea, 0x77, 0x06, 0xb4, 0xab, 0x0e, 0xf8, 0x0f, 0x56, 0x91, 0x5b, 0xbf, 0xb0, 0x01, 0xe4, 0xcc, - 0x0e, 0xa5, 0x71, 0x80, 0x42, 0x09, 0xad, 0x1d, 0x3a, 0x18, 0xd2, 0x08, 0x47, 0x5c, 0x66, 0x39, - 0x86, 0x36, 0x8b, 0xfb, 0xe9, 0xc1, 0xb8, 0xa2, 0xb6, 0x55, 0xfb, 0xfd, 0x4a, 0xfd, 0x92, 0xb2, - 0x73, 0x01, 0xbd, 0x94, 0xdd, 0xd6, 0xc8, 0x14, 0x3b, 0x87, 0x7e, 0x14, 0xe1, 0x10, 0x6d, 0x4d, - 0x78, 0xcf, 0xac, 0x52, 0x4e, 0xcf, 0xbc, 0x51, 0x79, 0xe6, 0x3e, 0x8f, 0x49, 0x74, 0x90, 0x9a, - 0xd8, 0xb9, 0x80, 0x9e, 0x83, 0x9d, 0x7b, 0x54, 0x42, 0xb7, 0xaa, 0x2c, 0x35, 0xfe, 0xea, 0xd4, - 0x3e, 0xc9, 0x17, 0xce, 0x05, 0xd4, 0x87, 0x66, 0xe1, 0xd5, 0x13, 0x6d, 0x9c, 0xd4, 0xe4, 0xe5, - 0x9f, 0x1a, 0xdb, 0x5f, 0x9d, 0x41, 0x33, 0xbb, 0xfd, 0x4f, 0x95, 0xc1, 0xc6, 0x9e, 0x0d, 0xef, - 0x4e, 0xd8, 0x64, 0xd2, 0x03, 0x67, 0xfb, 0xde, 0xec, 0x0b, 0xb2, 0xc3, 0x83, 0xd1, 0x47, 0xaa, - 0x80, 0xba, 0x3d, 0xbd, 0x93, 0x55, 0xa7, 0x6d, 0xcc, 0xda, 0xf2, 0x3a, 0x17, 0xd0, 0x1e, 0x58, - 0x59, 0xd3, 0x89, 0xde, 0xaf, 0x5a, 0x58, 0xee, 0x49, 0x67, 0x70, 0x4e, 0xa1, 0x6d, 0xab, 0x76, - 0x4e, 0x55, 0x4f, 0x59, 0xed, 0x9c, 0xca, 0x1e, 0xd0, 0xb9, 0x80, 0x12, 0x19, 0x3b, 0xa5, 0xe8, - 0x46, 0x77, 0xa6, 0xf9, 0xb7, 0x90, 0x66, 0xda, 0x9b, 0xb3, 0xaa, 0x67, 0xc7, 0xfe, 0x6c, 0xf4, - 0xe2, 0x5e, 0xe8, 0xd1, 0xd0, 0xbd, 0x93, 0xb6, 0xaa, 0x6a, 0x19, 0xdb, 0xdf, 0x78, 0x87, 0x15, - 0x39, 0x4c, 0xa2, 0xfd, 0x43, 0xfa, 0x5a, 0x15, 0xa5, 0x49, 0xec, 0x8b, 0x5c, 0x58, 0x71, 0xb8, - 0x0e, 0xe1, 0x71, 0xd5, 0x89, 0x87, 0x9f, 0xb0, 0x22, 0x3b, 0xdc, 0x03, 0x78, 0x88, 0xf9, 0x53, - 0xcc, 0x63, 0x61, 0xeb, 0x5b, 0x93, 0xf2, 0x94, 0x56, 0x48, 0x8f, 0xba, 0x3d, 0x55, 0x2f, 0x3b, - 0xa0, 0x0b, 0xf6, 0xce, 0x21, 0xee, 0x1d, 0x3d, 0xc2, 0x7e, 0xc8, 0x0f, 0x51, 0xf5, 0xca, 0x9c, - 0xc6, 0x04, 0xc8, 0x57, 0x29, 0xa6, 0x67, 0x6c, 0x7d, 0xb9, 0xa0, 0xff, 0xdf, 0x7f, 0x46, 0x03, - 0xfc, 0xdf, 0x9f, 0x82, 0xf7, 0xc0, 0xca, 0xda, 0xbe, 0xea, 0x08, 0x2f, 0x77, 0x85, 0xd3, 0x22, - 0xfc, 0x53, 0xb0, 0xb2, 0xc2, 0xb6, 0x7a, 0xc7, 0x72, 0x3f, 0xd1, 0xbe, 0x39, 0x45, 0x2b, 0xbb, - 0xed, 0x33, 0xa8, 0xa7, 0x85, 0x28, 0xba, 0x31, 0x29, 0x1d, 0xe5, 0x77, 0x9e, 0x72, 0xd7, 0x9f, - 0x80, 0x9d, 0xab, 0xd2, 0xaa, 0x09, 0x68, 0xbc, 0xba, 0x6b, 0xdf, 0x9e, 0xaa, 0xf7, 0xbf, 0x11, - 0x90, 0xf7, 0xbf, 0xf9, 0xe9, 0xd6, 0x01, 0xe1, 0x87, 0x49, 0x57, 0x58, 0xf6, 0xae, 0xd2, 0xbc, - 0x43, 0xa8, 0xfe, 0x75, 0x37, 0xbd, 0xe5, 0x5d, 0xb9, 0xd3, 0x5d, 0x69, 0xa7, 0x61, 0xb7, 0xbb, - 0x20, 0x87, 0x1f, 0xfc, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xac, 0x57, 0x6d, 0x81, 0x9e, 0x23, 0x00, - 0x00, + // 2373 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x5a, 0x5f, 0x6f, 0x1b, 0x59, + 0x15, 0xef, 0xc4, 0x4e, 0xe2, 0x39, 0x63, 0xe7, 0xcf, 0x6d, 0x0a, 0xae, 0xdb, 0xd2, 0x74, 0xba, + 0x6d, 0x0d, 0xa2, 0x69, 0xc9, 0xb2, 0x68, 0x41, 0x80, 0x94, 0x26, 0xdb, 0xd6, 0xed, 0xa6, 0x0a, + 0x93, 0xaa, 0x12, 0x2b, 0xc4, 0x30, 0xf6, 0x5c, 0x27, 0x77, 0x33, 0x9e, 0xeb, 0xce, 0xbd, 0xd3, + 0x36, 0x45, 0x42, 0xf0, 0x00, 0x12, 0x68, 0x25, 0x04, 0x42, 0xf0, 0x05, 0x78, 0x5a, 0x3e, 0x01, + 0xbc, 0x20, 0x21, 0x1e, 0xf9, 0x0a, 0x7c, 0x17, 0x74, 0xff, 0xcc, 0x78, 0x66, 0x3c, 0x8e, 0xdd, + 0x24, 0x08, 0x89, 0x7d, 0xf3, 0x3d, 0xf7, 0xdc, 0x3f, 0x73, 0xce, 0xef, 0x9c, 0xdf, 0x39, 0x57, + 0x86, 0x55, 0x12, 0xfa, 0xf8, 0x8d, 0xdb, 0xa3, 0x34, 0xf2, 0x37, 0x86, 0x11, 0xe5, 0x14, 0xa1, + 0x01, 0x09, 0x5e, 0xc5, 0x4c, 0x8d, 0x36, 0xe4, 0x7c, 0xab, 0xde, 0xa3, 0x83, 0x01, 0x0d, 0x95, + 0xac, 0xb5, 0x44, 0x42, 0x8e, 0xa3, 0xd0, 0x0b, 0xf4, 0xb8, 0x9e, 0x5d, 0x61, 0xff, 0xbb, 0x0a, + 0x66, 0x47, 0xac, 0xea, 0x84, 0x7d, 0x8a, 0x6c, 0xa8, 0xf7, 0x68, 0x10, 0xe0, 0x1e, 0x27, 0x34, + 0xec, 0xec, 0x34, 0x8d, 0x75, 0xa3, 0x5d, 0x71, 0x72, 0x32, 0xd4, 0x84, 0xc5, 0x3e, 0xc1, 0x81, + 0xdf, 0xd9, 0x69, 0xce, 0xc9, 0xe9, 0x64, 0x88, 0xae, 0x01, 0xa8, 0x0b, 0x86, 0xde, 0x00, 0x37, + 0x2b, 0xeb, 0x46, 0xdb, 0x74, 0x4c, 0x29, 0x79, 0xe6, 0x0d, 0xb0, 0x58, 0x28, 0x07, 0x9d, 0x9d, + 0x66, 0x55, 0x2d, 0xd4, 0x43, 0xf4, 0x00, 0x2c, 0x7e, 0x3c, 0xc4, 0xee, 0xd0, 0x8b, 0xbc, 0x01, + 0x6b, 0xce, 0xaf, 0x57, 0xda, 0xd6, 0xe6, 0x8d, 0x8d, 0xdc, 0xa7, 0xe9, 0x6f, 0x7a, 0x8a, 0x8f, + 0x5f, 0x78, 0x41, 0x8c, 0xf7, 0x3c, 0x12, 0x39, 0x20, 0x56, 0xed, 0xc9, 0x45, 0x68, 0x07, 0xea, + 0xea, 0x70, 0xbd, 0xc9, 0xc2, 0xac, 0x9b, 0x58, 0x72, 0x99, 0xde, 0xe5, 0x86, 0xde, 0x05, 0xfb, + 0x6e, 0x44, 0x5f, 0xb3, 0xe6, 0xa2, 0xbc, 0xa8, 0xa5, 0x65, 0x0e, 0x7d, 0xcd, 0xc4, 0x57, 0x72, + 0xca, 0xbd, 0x40, 0x29, 0xd4, 0xa4, 0x82, 0x29, 0x25, 0x72, 0xfa, 0x03, 0x98, 0x67, 0xdc, 0xe3, + 0xb8, 0x69, 0xae, 0x1b, 0xed, 0xa5, 0xcd, 0xeb, 0xa5, 0x17, 0x90, 0x16, 0xdf, 0x17, 0x6a, 0x8e, + 0xd2, 0x46, 0x1f, 0xc0, 0x97, 0xd5, 0xf5, 0xe5, 0xd0, 0xed, 0x7b, 0x24, 0x70, 0x23, 0xec, 0x31, + 0x1a, 0x36, 0x41, 0x1a, 0x72, 0x8d, 0xa4, 0x6b, 0x1e, 0x7a, 0x24, 0x70, 0xe4, 0x1c, 0xb2, 0xa1, + 0x41, 0x98, 0xeb, 0xc5, 0x9c, 0xba, 0x72, 0xbe, 0x69, 0xad, 0x1b, 0xed, 0x9a, 0x63, 0x11, 0xb6, + 0x15, 0x73, 0x2a, 0x8f, 0x41, 0xbb, 0xb0, 0x1a, 0x33, 0x1c, 0xb9, 0x39, 0xf3, 0xd4, 0x67, 0x35, + 0xcf, 0xb2, 0x58, 0xdb, 0xc9, 0x98, 0xe8, 0xeb, 0x80, 0x86, 0x38, 0xf4, 0x49, 0x78, 0xa0, 0x77, + 0x94, 0x76, 0x68, 0x48, 0x3b, 0xac, 0xe8, 0x19, 0xa9, 0x2f, 0xcc, 0x61, 0xff, 0xd2, 0x00, 0x78, + 0x28, 0xf1, 0x21, 0xef, 0xf2, 0xdd, 0x04, 0x22, 0x24, 0xec, 0x53, 0x09, 0x2f, 0x6b, 0xf3, 0xda, + 0xc6, 0x38, 0x86, 0x37, 0x52, 0x4c, 0x6a, 0x04, 0x49, 0x78, 0x36, 0x61, 0xd1, 0xc7, 0x01, 0xe6, + 0xd8, 0x97, 0xd0, 0xab, 0x39, 0xc9, 0x10, 0x5d, 0x07, 0xab, 0x17, 0x61, 0x61, 0x39, 0x4e, 0x34, + 0xf6, 0xaa, 0x0e, 0x28, 0xd1, 0x73, 0x32, 0xc0, 0xf6, 0x5f, 0xab, 0x50, 0xdf, 0xc7, 0x07, 0x03, + 0x1c, 0x72, 0x75, 0x93, 0x59, 0xa0, 0xbe, 0x0e, 0xd6, 0xd0, 0x8b, 0x38, 0xd1, 0x2a, 0x0a, 0xee, + 0x59, 0x11, 0xba, 0x0a, 0x26, 0xd3, 0xbb, 0xee, 0xc8, 0x53, 0x2b, 0xce, 0x48, 0x80, 0x2e, 0x43, + 0x2d, 0x8c, 0x07, 0xca, 0x40, 0x1a, 0xf2, 0x61, 0x3c, 0x90, 0x30, 0xc9, 0x04, 0xc3, 0x7c, 0x3e, + 0x18, 0x9a, 0xb0, 0xd8, 0x8d, 0x89, 0x8c, 0xaf, 0x05, 0x35, 0xa3, 0x87, 0xe8, 0x4b, 0xb0, 0x10, + 0x52, 0x1f, 0x77, 0x76, 0x34, 0x2c, 0xf5, 0x08, 0xdd, 0x84, 0x86, 0x32, 0xea, 0x2b, 0x1c, 0x31, + 0x42, 0x43, 0x0d, 0x4a, 0x85, 0xe4, 0x17, 0x4a, 0x76, 0x5a, 0x5c, 0x5e, 0x07, 0x6b, 0x1c, 0x8b, + 0xd0, 0x1f, 0x21, 0xf0, 0x36, 0x2c, 0xab, 0xc3, 0xfb, 0x24, 0xc0, 0xee, 0x11, 0x3e, 0x66, 0x4d, + 0x6b, 0xbd, 0xd2, 0x36, 0x1d, 0x75, 0xa7, 0x87, 0x24, 0xc0, 0x4f, 0xf1, 0x31, 0xcb, 0xfa, 0xae, + 0x7e, 0xa2, 0xef, 0x1a, 0x45, 0xdf, 0xa1, 0x5b, 0xb0, 0xc4, 0x70, 0x44, 0xbc, 0x80, 0xbc, 0xc5, + 0x2e, 0x23, 0x6f, 0x71, 0x73, 0x49, 0xea, 0x34, 0x52, 0xe9, 0x3e, 0x79, 0x8b, 0x85, 0x19, 0x5e, + 0x47, 0x84, 0x63, 0xf7, 0xd0, 0x0b, 0x7d, 0xda, 0xef, 0x37, 0x97, 0xe5, 0x39, 0x75, 0x29, 0x7c, + 0xac, 0x64, 0x68, 0x13, 0x2e, 0xf5, 0xe2, 0x28, 0xc2, 0x21, 0x77, 0xf3, 0x36, 0x5b, 0x59, 0x37, + 0xda, 0xf3, 0xce, 0x45, 0x3d, 0xd9, 0xc9, 0x98, 0xce, 0xfe, 0x93, 0x01, 0x17, 0x1d, 0x7c, 0x40, + 0x18, 0xc7, 0xd1, 0x33, 0xea, 0x63, 0x07, 0xbf, 0x8c, 0x31, 0xe3, 0xe8, 0x3e, 0x54, 0xbb, 0x1e, + 0xc3, 0x1a, 0xc6, 0x57, 0x4b, 0x2d, 0xba, 0xcb, 0x0e, 0x1e, 0x78, 0x0c, 0x3b, 0x52, 0x13, 0x7d, + 0x0b, 0x16, 0x3d, 0xdf, 0x8f, 0x30, 0x63, 0x12, 0x4c, 0x93, 0x16, 0x6d, 0x29, 0x1d, 0x27, 0x51, + 0xce, 0x78, 0xbe, 0x92, 0xf5, 0xbc, 0xfd, 0x5b, 0x03, 0xd6, 0xf2, 0x37, 0x63, 0x43, 0x1a, 0x32, + 0x8c, 0xde, 0x87, 0x05, 0xe1, 0xbf, 0x98, 0xe9, 0xcb, 0x5d, 0x29, 0x3d, 0x67, 0x5f, 0xaa, 0x38, + 0x5a, 0x55, 0xa4, 0x61, 0x12, 0x12, 0x9e, 0xa4, 0x08, 0x75, 0xc3, 0x1b, 0xc5, 0xe8, 0xd4, 0x64, + 0xd2, 0x09, 0x09, 0x57, 0x19, 0xc1, 0x01, 0x92, 0xfe, 0xb6, 0x7f, 0x08, 0x6b, 0x8f, 0x30, 0xcf, + 0xe0, 0x48, 0xdb, 0x6a, 0x96, 0x70, 0xcb, 0xf3, 0xc7, 0x5c, 0x81, 0x3f, 0xec, 0x3f, 0x1b, 0x70, + 0xa9, 0xb0, 0xf7, 0x59, 0xbe, 0x36, 0x0d, 0x88, 0xb9, 0xb3, 0x04, 0x44, 0xa5, 0x18, 0x10, 0xf6, + 0xcf, 0x0d, 0xb8, 0xf2, 0x08, 0xf3, 0x6c, 0xb2, 0x39, 0x67, 0x4b, 0xa0, 0xaf, 0x00, 0xa4, 0x49, + 0x86, 0x35, 0x2b, 0xeb, 0x95, 0x76, 0xc5, 0xc9, 0x48, 0xec, 0x5f, 0x1b, 0xb0, 0x3a, 0x76, 0x7e, + 0x3e, 0x57, 0x19, 0xc5, 0x5c, 0xf5, 0xdf, 0x32, 0xc7, 0xef, 0x0d, 0xb8, 0x5a, 0x6e, 0x8e, 0xb3, + 0x38, 0xef, 0x7b, 0x6a, 0x11, 0x16, 0x28, 0x15, 0x44, 0x76, 0xab, 0x8c, 0x43, 0xc6, 0xcf, 0xd4, + 0x8b, 0xec, 0xcf, 0x2a, 0x80, 0xb6, 0x65, 0x82, 0x51, 0x4c, 0xf5, 0x0e, 0xae, 0x39, 0x75, 0xf9, + 0x53, 0x28, 0x72, 0xaa, 0xe7, 0x51, 0xe4, 0xcc, 0x9f, 0xaa, 0xc8, 0xb9, 0x0a, 0xa6, 0xc8, 0xb4, + 0x8c, 0x7b, 0x83, 0xa1, 0xe4, 0x98, 0xaa, 0x33, 0x12, 0x8c, 0x97, 0x14, 0x8b, 0x33, 0x96, 0x14, + 0xb5, 0xd3, 0x96, 0x14, 0xf6, 0x1b, 0xb8, 0x98, 0x04, 0xb6, 0xa4, 0xfc, 0x77, 0x70, 0x47, 0x3e, + 0x14, 0xe6, 0x8a, 0xa1, 0x30, 0xc5, 0x29, 0xf6, 0x5f, 0x2a, 0xb0, 0xda, 0x49, 0x78, 0x6a, 0xcf, + 0xe3, 0x87, 0xb2, 0xce, 0x38, 0x39, 0x52, 0x26, 0x23, 0x20, 0x43, 0xea, 0x95, 0x89, 0xa4, 0x5e, + 0xcd, 0x93, 0x7a, 0xfe, 0x82, 0xf3, 0x45, 0xd4, 0x9c, 0x4f, 0x59, 0xdb, 0x86, 0x95, 0x0c, 0x49, + 0x0f, 0x3d, 0x7e, 0x28, 0x4a, 0x5b, 0xc1, 0xd2, 0x4b, 0x24, 0xfb, 0xf5, 0x0c, 0xdd, 0x81, 0xe5, + 0x94, 0x55, 0x7d, 0x45, 0xb6, 0x35, 0x89, 0x90, 0x11, 0x05, 0xfb, 0x09, 0xdb, 0xe6, 0x09, 0xd4, + 0x2c, 0x29, 0x3a, 0xb2, 0x05, 0x10, 0xe4, 0x0b, 0xa0, 0x89, 0x44, 0x6c, 0x4d, 0x26, 0xe2, 0xbf, + 0x19, 0x60, 0xa5, 0x41, 0x3d, 0x63, 0xbb, 0x92, 0xf3, 0xe5, 0x5c, 0xd1, 0x97, 0x37, 0xa0, 0x8e, + 0x43, 0xaf, 0x1b, 0x60, 0x8d, 0xf5, 0x8a, 0xc2, 0xba, 0x92, 0x29, 0xac, 0x3f, 0x04, 0x6b, 0x54, + 0xb2, 0x26, 0x71, 0x7b, 0x6b, 0x62, 0xcd, 0x9a, 0x05, 0x92, 0x03, 0x69, 0xed, 0xca, 0xec, 0xdf, + 0xcc, 0x8d, 0xa8, 0x51, 0xa1, 0xfc, 0x2c, 0x09, 0xf0, 0x47, 0x50, 0xd7, 0x5f, 0xa1, 0x4a, 0x69, + 0x95, 0x06, 0xbf, 0x5d, 0x76, 0xad, 0xb2, 0x43, 0x37, 0x32, 0x66, 0xfc, 0x28, 0xe4, 0xd1, 0xb1, + 0x63, 0xb1, 0x91, 0xa4, 0xe5, 0xc2, 0x4a, 0x51, 0x01, 0xad, 0x40, 0xe5, 0x08, 0x1f, 0x6b, 0x1b, + 0x8b, 0x9f, 0x82, 0x32, 0x5e, 0x09, 0xbc, 0xe9, 0x4a, 0xe1, 0xfa, 0x89, 0x39, 0xb8, 0x4f, 0x1d, + 0xa5, 0xfd, 0x9d, 0xb9, 0x0f, 0x0d, 0xfb, 0x0f, 0x06, 0xac, 0xec, 0x44, 0x74, 0xf8, 0xce, 0xe9, + 0xd7, 0x86, 0x7a, 0xa6, 0xfe, 0x4e, 0x22, 0x3e, 0x27, 0x9b, 0x96, 0x88, 0x2f, 0x43, 0xcd, 0x8f, + 0xe8, 0xd0, 0xf5, 0x82, 0x40, 0x06, 0xa3, 0x28, 0x45, 0x23, 0x3a, 0xdc, 0x0a, 0x02, 0xfb, 0x35, + 0xac, 0xed, 0x60, 0xd6, 0x8b, 0x48, 0xf7, 0xdd, 0x89, 0x61, 0x0a, 0x67, 0xe7, 0x92, 0x6e, 0xa5, + 0x90, 0x74, 0xed, 0xcf, 0x0c, 0xb8, 0x54, 0x38, 0xf9, 0x2c, 0xe8, 0xf8, 0x7e, 0x1e, 0xb3, 0x0a, + 0x1c, 0x53, 0xfa, 0xac, 0x2c, 0x56, 0x3d, 0xc9, 0xd9, 0x72, 0xee, 0x81, 0xc8, 0x53, 0x7b, 0x11, + 0x3d, 0x90, 0x15, 0xe9, 0xf9, 0x55, 0x73, 0xff, 0x34, 0xe0, 0xda, 0x84, 0x33, 0xce, 0xf2, 0xe5, + 0xc5, 0x06, 0x7e, 0x6e, 0x5a, 0x03, 0x5f, 0x29, 0x36, 0xf0, 0xe5, 0xfd, 0x6d, 0x75, 0x42, 0x7f, + 0xfb, 0x8f, 0x0a, 0x34, 0xf6, 0x39, 0x8d, 0xbc, 0x03, 0xbc, 0x4d, 0xc3, 0x3e, 0x39, 0x10, 0xa9, + 0x3e, 0xa9, 0xf1, 0x0d, 0xf9, 0xd1, 0x69, 0x15, 0x7f, 0x03, 0xea, 0x5e, 0xaf, 0x87, 0x19, 0x13, + 0x6d, 0x92, 0xce, 0x46, 0xa6, 0x63, 0x29, 0xd9, 0x53, 0x21, 0x42, 0x5f, 0x83, 0x55, 0x86, 0x7b, + 0x11, 0xe6, 0xee, 0x48, 0x53, 0x23, 0x78, 0x59, 0x4d, 0x6c, 0x25, 0xda, 0xa2, 0x29, 0x88, 0x19, + 0xde, 0xdf, 0xff, 0x58, 0xa3, 0x58, 0x8f, 0x44, 0x49, 0xd6, 0x8d, 0x7b, 0x47, 0x98, 0x67, 0x29, + 0x05, 0x94, 0x48, 0x42, 0xf1, 0x0a, 0x98, 0x11, 0xa5, 0x5c, 0xf2, 0x80, 0xe4, 0x7f, 0xd3, 0xa9, + 0x09, 0x81, 0x48, 0x5b, 0x7a, 0xd7, 0xce, 0xd6, 0xae, 0xe6, 0x7d, 0x3d, 0x12, 0xbd, 0x70, 0x67, + 0x6b, 0xf7, 0xa3, 0xd0, 0x1f, 0x52, 0x12, 0x72, 0x49, 0x0a, 0xa6, 0x93, 0x15, 0x89, 0xcf, 0x63, + 0xca, 0x12, 0xae, 0x28, 0x59, 0x24, 0x21, 0x98, 0x8e, 0xa5, 0x65, 0xcf, 0x8f, 0x87, 0x58, 0xf0, + 0x50, 0xcc, 0xb0, 0xfb, 0x8a, 0x44, 0x3c, 0xf6, 0x02, 0xf7, 0x90, 0x32, 0x2e, 0x79, 0xa1, 0xe6, + 0x2c, 0xc5, 0x0c, 0xbf, 0x50, 0xe2, 0xc7, 0x94, 0x71, 0x71, 0x8d, 0x08, 0x1f, 0x24, 0x7c, 0x60, + 0x3a, 0x7a, 0x24, 0x7a, 0xc1, 0x5e, 0x40, 0x63, 0xdf, 0x1d, 0x46, 0xf4, 0x15, 0xf1, 0x71, 0x24, + 0xbb, 0x49, 0xd3, 0x69, 0x48, 0xe9, 0x9e, 0x16, 0x0a, 0x27, 0x46, 0x0a, 0xab, 0xb2, 0xa9, 0xa4, + 0x31, 0x77, 0x07, 0xe9, 0x23, 0x85, 0x9e, 0x79, 0xae, 0x26, 0x76, 0x99, 0xfd, 0xc7, 0x2a, 0xac, + 0xa8, 0x72, 0xf0, 0x09, 0xed, 0x26, 0x18, 0xbf, 0x0a, 0x66, 0x2f, 0x88, 0x45, 0x67, 0xa5, 0x01, + 0x6e, 0x3a, 0x23, 0x81, 0x70, 0x54, 0x96, 0x51, 0x23, 0xdc, 0x27, 0x6f, 0xb4, 0x43, 0x97, 0x47, + 0x94, 0x2a, 0xc5, 0x59, 0xf2, 0xaf, 0x8c, 0x91, 0xbf, 0xef, 0x71, 0x4f, 0x33, 0x72, 0x55, 0x32, + 0xb2, 0x29, 0x24, 0x8a, 0x8c, 0xc7, 0x38, 0x76, 0xbe, 0x84, 0x63, 0x33, 0x45, 0xc7, 0x42, 0xbe, + 0xe8, 0xc8, 0x47, 0xe0, 0x62, 0x31, 0x23, 0x3d, 0x86, 0xa5, 0xc4, 0x5f, 0x3d, 0x09, 0x5d, 0xe9, + 0xd4, 0x92, 0x8e, 0x4f, 0xe6, 0xf1, 0x2c, 0xc6, 0x9d, 0x06, 0xcb, 0x41, 0xbe, 0x58, 0xa4, 0x98, + 0xa7, 0x2a, 0x52, 0x0a, 0x05, 0x32, 0x9c, 0xa6, 0x40, 0xce, 0x16, 0x1c, 0xd6, 0x8c, 0x05, 0x47, + 0x7d, 0x72, 0xc1, 0xf1, 0x31, 0xac, 0xfc, 0x20, 0xc6, 0xd1, 0xf1, 0x13, 0xda, 0x65, 0xb3, 0xe1, + 0xa2, 0x05, 0x35, 0xed, 0xdc, 0x84, 0x9b, 0xd2, 0xb1, 0xfd, 0xab, 0x39, 0x68, 0xc8, 0xed, 0x9f, + 0x7b, 0xec, 0x28, 0x79, 0xd0, 0x4a, 0x90, 0x61, 0xe4, 0x91, 0x71, 0xca, 0x76, 0xac, 0xe4, 0x35, + 0xa6, 0x52, 0xf6, 0x1a, 0x53, 0x52, 0xe6, 0x55, 0x4b, 0xcb, 0xbc, 0x42, 0x7f, 0x37, 0x3f, 0xf6, + 0xfe, 0x33, 0xd1, 0xac, 0x0b, 0x93, 0xcd, 0xfa, 0xb9, 0x01, 0xab, 0x19, 0xbb, 0x9e, 0x25, 0xdf, + 0xe7, 0xbc, 0x31, 0x57, 0xf4, 0xc6, 0x83, 0x3c, 0x0f, 0x56, 0xca, 0x20, 0x95, 0xe1, 0xc1, 0xc4, + 0x2f, 0x39, 0x2e, 0x7c, 0x0a, 0xcb, 0xa2, 0x52, 0x39, 0x1f, 0x08, 0xfc, 0xcb, 0x80, 0xc5, 0x27, + 0xb4, 0x2b, 0x9d, 0x9f, 0xc5, 0xaa, 0x91, 0xc7, 0xea, 0x0a, 0x54, 0x7c, 0x32, 0xd0, 0xe4, 0x25, + 0x7e, 0x8a, 0x58, 0x66, 0xdc, 0x8b, 0xf8, 0xe8, 0x7d, 0x53, 0xd4, 0xb1, 0x42, 0x22, 0x9f, 0xc8, + 0x2e, 0x43, 0x0d, 0x87, 0xbe, 0x9a, 0xd4, 0x0d, 0x06, 0x0e, 0x7d, 0x39, 0x75, 0x3e, 0x3d, 0xe3, + 0x1a, 0xcc, 0x0f, 0xe9, 0xe8, 0x4d, 0x52, 0x0d, 0xec, 0x35, 0x40, 0x8f, 0x30, 0x7f, 0x42, 0xbb, + 0xc2, 0x2b, 0x89, 0x79, 0xec, 0xbf, 0xcf, 0xc9, 0x7e, 0x6e, 0x24, 0x3e, 0x8b, 0x83, 0x6d, 0x68, + 0x28, 0xb6, 0xfe, 0x94, 0x76, 0xdd, 0x30, 0x4e, 0x8c, 0x62, 0x49, 0xe1, 0x13, 0xda, 0x7d, 0x16, + 0x0f, 0xd0, 0x5d, 0xb8, 0x48, 0x42, 0xc1, 0x08, 0xb2, 0x80, 0x48, 0x35, 0x95, 0x95, 0x56, 0x48, + 0x98, 0x94, 0x16, 0x5a, 0xfd, 0x36, 0x2c, 0xe3, 0xf0, 0x65, 0x8c, 0x63, 0x9c, 0xaa, 0x2a, 0x9b, + 0x35, 0xb4, 0x58, 0xeb, 0x89, 0x42, 0xc1, 0x63, 0x47, 0x2e, 0x0b, 0x28, 0x67, 0x3a, 0xf7, 0x9a, + 0x42, 0xb2, 0x2f, 0x04, 0xe8, 0x43, 0x30, 0xc5, 0x72, 0x05, 0x2d, 0xd5, 0x97, 0x5d, 0x29, 0x83, + 0x96, 0xf6, 0xb7, 0x53, 0xfb, 0x54, 0xfd, 0x60, 0x22, 0xa8, 0x74, 0xd7, 0xe1, 0x13, 0x76, 0xa4, + 0x89, 0x16, 0x94, 0x68, 0x87, 0xb0, 0x23, 0xfb, 0xc7, 0x70, 0x39, 0xfb, 0xd2, 0x45, 0x18, 0x27, + 0xbd, 0xf3, 0x2c, 0xbe, 0x7e, 0x67, 0x40, 0xab, 0xec, 0x80, 0xff, 0x61, 0xcd, 0xb9, 0xf9, 0x0b, + 0x0b, 0x40, 0xce, 0x6c, 0x53, 0x1a, 0xf9, 0x28, 0x90, 0xd0, 0xda, 0xa6, 0x83, 0x21, 0x0d, 0x71, + 0xc8, 0x65, 0x96, 0x63, 0x68, 0x23, 0xbf, 0x9f, 0x1e, 0x8c, 0x2b, 0x6a, 0x5b, 0xb5, 0xde, 0x2b, + 0xd5, 0x2f, 0x28, 0xdb, 0x17, 0xd0, 0x4b, 0xd9, 0x9b, 0x8d, 0x4c, 0xb1, 0x7d, 0xe8, 0x85, 0x21, + 0x0e, 0xd0, 0xe6, 0x84, 0xd7, 0xcf, 0x32, 0xe5, 0xe4, 0xcc, 0x9b, 0xa5, 0x67, 0xee, 0xf3, 0x88, + 0x84, 0x07, 0x89, 0x89, 0xed, 0x0b, 0xe8, 0x39, 0x58, 0x99, 0x27, 0x28, 0x74, 0xbb, 0xcc, 0x52, + 0xe3, 0x6f, 0x54, 0xad, 0x93, 0x7c, 0x61, 0x5f, 0x40, 0x7d, 0x68, 0xe4, 0xde, 0x48, 0x51, 0xfb, + 0xa4, 0x96, 0x30, 0xfb, 0x30, 0xd9, 0xfa, 0xea, 0x0c, 0x9a, 0xe9, 0xed, 0x7f, 0xaa, 0x0c, 0x36, + 0xf6, 0xc8, 0x78, 0x6f, 0xc2, 0x26, 0x93, 0x9e, 0x43, 0x5b, 0xf7, 0x67, 0x5f, 0x90, 0x1e, 0xee, + 0x8f, 0x3e, 0x52, 0x05, 0xd4, 0x9d, 0xe9, 0x7d, 0xaf, 0x3a, 0xad, 0x3d, 0x6b, 0x83, 0x6c, 0x5f, + 0x40, 0x7b, 0x60, 0xa6, 0x2d, 0x2a, 0x7a, 0xaf, 0x6c, 0x61, 0xb1, 0x83, 0x9d, 0xc1, 0x39, 0xb9, + 0x26, 0xaf, 0xdc, 0x39, 0x65, 0x1d, 0x68, 0xb9, 0x73, 0x4a, 0x3b, 0x46, 0xfb, 0x02, 0x8a, 0x65, + 0xec, 0x14, 0xa2, 0x1b, 0xdd, 0x9d, 0xe6, 0xdf, 0x5c, 0x9a, 0x69, 0x6d, 0xcc, 0xaa, 0x9e, 0x1e, + 0xfb, 0xb3, 0xd1, 0xfb, 0x7c, 0xae, 0xa3, 0x43, 0xf7, 0x4f, 0xda, 0xaa, 0xac, 0xc1, 0x6c, 0x7d, + 0xe3, 0x1d, 0x56, 0x64, 0x30, 0x89, 0xf6, 0x0f, 0xe9, 0x6b, 0x55, 0x94, 0xc6, 0x91, 0x27, 0x72, + 0x61, 0xc9, 0xe1, 0x3a, 0x84, 0xc7, 0x55, 0x27, 0x1e, 0x7e, 0xc2, 0x8a, 0xf4, 0x70, 0x17, 0xe0, + 0x11, 0xe6, 0xbb, 0x98, 0x47, 0xc2, 0xd6, 0xb7, 0x27, 0xe5, 0x29, 0xad, 0x90, 0x1c, 0x75, 0x67, + 0xaa, 0x5e, 0x7a, 0x40, 0x17, 0xac, 0xed, 0x43, 0xdc, 0x3b, 0x7a, 0x8c, 0xbd, 0x80, 0x1f, 0xa2, + 0xf2, 0x95, 0x19, 0x8d, 0x09, 0x90, 0x2f, 0x53, 0x4c, 0xce, 0xd8, 0xfc, 0x7c, 0x41, 0xff, 0x1b, + 0xe0, 0x19, 0xf5, 0xf1, 0xff, 0x7f, 0x0a, 0xde, 0x03, 0x33, 0x6d, 0xfb, 0xca, 0x23, 0xbc, 0xd8, + 0x15, 0x4e, 0x8b, 0xf0, 0x4f, 0xc0, 0x4c, 0x0b, 0xdb, 0xf2, 0x1d, 0x8b, 0xfd, 0x44, 0xeb, 0xd6, + 0x14, 0xad, 0xf4, 0xb6, 0xcf, 0xa0, 0x96, 0x14, 0xa2, 0xe8, 0xe6, 0xa4, 0x74, 0x94, 0xdd, 0x79, + 0xca, 0x5d, 0x7f, 0x02, 0x56, 0xa6, 0x4a, 0x2b, 0x27, 0xa0, 0xf1, 0xea, 0xae, 0x75, 0x67, 0xaa, + 0xde, 0x17, 0x23, 0x20, 0x1f, 0x7c, 0xf3, 0x93, 0xcd, 0x03, 0xc2, 0x0f, 0xe3, 0xae, 0xb0, 0xec, + 0x3d, 0xa5, 0x79, 0x97, 0x50, 0xfd, 0xeb, 0x5e, 0x72, 0xcb, 0x7b, 0x72, 0xa7, 0x7b, 0xd2, 0x4e, + 0xc3, 0x6e, 0x77, 0x41, 0x0e, 0xdf, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x89, 0xb2, + 0xd8, 0xcc, 0x23, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/internal/storage/factory.go b/internal/storage/factory.go index 1fb0387642..24a71cbf29 100644 --- a/internal/storage/factory.go +++ b/internal/storage/factory.go @@ -29,6 +29,7 @@ func NewChunkManagerFactoryWithParam(params *paramtable.ComponentParam) *ChunkMa IAMEndpoint(params.MinioCfg.IAMEndpoint.GetValue()), UseVirtualHost(params.MinioCfg.UseVirtualHost.GetAsBool()), Region(params.MinioCfg.Region.GetValue()), + RequestTimeout(params.MinioCfg.RequestTimeoutMs.GetAsInt64()), CreateBucket(true)) } diff --git a/internal/storage/options.go b/internal/storage/options.go index a6ab260651..b0efedaca4 100644 --- a/internal/storage/options.go +++ b/internal/storage/options.go @@ -14,6 +14,7 @@ type config struct { iamEndpoint string useVirtualHost bool region string + requestTimeoutMs int64 } func newDefaultConfig() *config { @@ -94,3 +95,9 @@ func Region(region string) Option { c.region = region } } + +func RequestTimeout(requestTimeoutMs int64) Option { + return func(c *config) { + c.requestTimeoutMs = requestTimeoutMs + } +} diff --git a/internal/util/indexcgowrapper/build_index_info.go b/internal/util/indexcgowrapper/build_index_info.go index 31014face3..ba24318202 100644 --- a/internal/util/indexcgowrapper/build_index_info.go +++ b/internal/util/indexcgowrapper/build_index_info.go @@ -73,6 +73,7 @@ func NewBuildIndexInfo(config *indexpb.StorageConfig) (*BuildIndexInfo, error) { useIAM: C.bool(config.UseIAM), region: cRegion, useVirtualHost: C.bool(config.UseVirtualHost), + requestTimeoutMs: C.int64_t(config.RequestTimeoutMs), } status := C.NewBuildIndexInfo(&cBuildIndexInfo, storageConfig) diff --git a/internal/util/initcore/init_core.go b/internal/util/initcore/init_core.go index ae96482786..a9cd20d561 100644 --- a/internal/util/initcore/init_core.go +++ b/internal/util/initcore/init_core.go @@ -90,6 +90,7 @@ func InitRemoteChunkManager(params *paramtable.ComponentParam) error { log_level: cLogLevel, region: cRegion, useVirtualHost: C.bool(params.MinioCfg.UseVirtualHost.GetAsBool()), + requestTimeoutMs: C.int64_t(params.MinioCfg.RequestTimeoutMs.GetAsInt64()), } status := C.InitRemoteChunkManagerSingleton(storageConfig) diff --git a/pkg/util/paramtable/base_table.go b/pkg/util/paramtable/base_table.go index f8f998da38..db441b04b9 100644 --- a/pkg/util/paramtable/base_table.go +++ b/pkg/util/paramtable/base_table.go @@ -51,6 +51,7 @@ const ( DefaultKnowhereThreadPoolNumRatioInBuild = 1 DefaultMinioRegion = "" DefaultMinioUseVirtualHost = "false" + DefaultMinioRequestTimeout = "3000" ) // Const of Global Config List diff --git a/pkg/util/paramtable/service_param.go b/pkg/util/paramtable/service_param.go index 72ab8ef1d1..3cafa06f6a 100644 --- a/pkg/util/paramtable/service_param.go +++ b/pkg/util/paramtable/service_param.go @@ -932,19 +932,20 @@ func (r *NatsmqConfig) Init(base *BaseTable) { // ///////////////////////////////////////////////////////////////////////////// // --- minio --- type MinioConfig struct { - Address ParamItem `refreshable:"false"` - Port ParamItem `refreshable:"false"` - AccessKeyID ParamItem `refreshable:"false"` - SecretAccessKey ParamItem `refreshable:"false"` - UseSSL ParamItem `refreshable:"false"` - BucketName ParamItem `refreshable:"false"` - RootPath ParamItem `refreshable:"false"` - UseIAM ParamItem `refreshable:"false"` - CloudProvider ParamItem `refreshable:"false"` - IAMEndpoint ParamItem `refreshable:"false"` - LogLevel ParamItem `refreshable:"false"` - Region ParamItem `refreshable:"false"` - UseVirtualHost ParamItem `refreshable:"false"` + Address ParamItem `refreshable:"false"` + Port ParamItem `refreshable:"false"` + AccessKeyID ParamItem `refreshable:"false"` + SecretAccessKey ParamItem `refreshable:"false"` + UseSSL ParamItem `refreshable:"false"` + BucketName ParamItem `refreshable:"false"` + RootPath ParamItem `refreshable:"false"` + UseIAM ParamItem `refreshable:"false"` + CloudProvider ParamItem `refreshable:"false"` + IAMEndpoint ParamItem `refreshable:"false"` + LogLevel ParamItem `refreshable:"false"` + Region ParamItem `refreshable:"false"` + UseVirtualHost ParamItem `refreshable:"false"` + RequestTimeoutMs ParamItem `refreshable:"false"` } func (p *MinioConfig) Init(base *BaseTable) { @@ -1094,4 +1095,13 @@ Leave it empty if you want to use AWS default endpoint`, Export: true, } p.UseVirtualHost.Init(base.mgr) + + p.RequestTimeoutMs = ParamItem{ + Key: "minio.requestTimeoutMs", + Version: "2.3.2", + DefaultValue: DefaultMinioRequestTimeout, + Doc: "minio timeout for request time in milliseconds", + Export: true, + } + p.RequestTimeoutMs.Init(base.mgr) }