Add GetFlushState interface (#12170)

issue: #12075
Signed-off-by: sunby <bingyi.sun@zilliz.com>

Co-authored-by: sunby <bingyi.sun@zilliz.com>
pull/12184/merge
Bingyi Sun 2021-11-23 10:55:14 +08:00 committed by GitHub
parent 2e8a3535ff
commit 01be91116e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 1899 additions and 494 deletions

View File

@ -343,6 +343,14 @@ class CompactionMergeInfoDefaultTypeInternal {
public:
::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<CompactionMergeInfo> _instance;
} _CompactionMergeInfo_default_instance_;
class GetFlushStateRequestDefaultTypeInternal {
public:
::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<GetFlushStateRequest> _instance;
} _GetFlushStateRequest_default_instance_;
class GetFlushStateResponseDefaultTypeInternal {
public:
::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<GetFlushStateResponse> _instance;
} _GetFlushStateResponse_default_instance_;
} // namespace milvus
} // namespace proto
} // namespace milvus
@ -816,6 +824,35 @@ static void InitDefaultsscc_info_GetCompactionStateResponse_milvus_2eproto() {
{{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_GetCompactionStateResponse_milvus_2eproto}, {
&scc_info_Status_common_2eproto.base,}};
static void InitDefaultsscc_info_GetFlushStateRequest_milvus_2eproto() {
GOOGLE_PROTOBUF_VERIFY_VERSION;
{
void* ptr = &::milvus::proto::milvus::_GetFlushStateRequest_default_instance_;
new (ptr) ::milvus::proto::milvus::GetFlushStateRequest();
::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
}
::milvus::proto::milvus::GetFlushStateRequest::InitAsDefaultInstance();
}
::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_GetFlushStateRequest_milvus_2eproto =
{{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsscc_info_GetFlushStateRequest_milvus_2eproto}, {}};
static void InitDefaultsscc_info_GetFlushStateResponse_milvus_2eproto() {
GOOGLE_PROTOBUF_VERIFY_VERSION;
{
void* ptr = &::milvus::proto::milvus::_GetFlushStateResponse_default_instance_;
new (ptr) ::milvus::proto::milvus::GetFlushStateResponse();
::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
}
::milvus::proto::milvus::GetFlushStateResponse::InitAsDefaultInstance();
}
::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_GetFlushStateResponse_milvus_2eproto =
{{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_GetFlushStateResponse_milvus_2eproto}, {
&scc_info_Status_common_2eproto.base,}};
static void InitDefaultsscc_info_GetIndexBuildProgressRequest_milvus_2eproto() {
GOOGLE_PROTOBUF_VERIFY_VERSION;
@ -1480,7 +1517,7 @@ static void InitDefaultsscc_info_VectorsArray_milvus_2eproto() {
&scc_info_VectorIDs_milvus_2eproto.base,
&scc_info_VectorField_schema_2eproto.base,}};
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_milvus_2eproto[75];
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_milvus_2eproto[77];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_milvus_2eproto[2];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_milvus_2eproto = nullptr;
@ -2141,6 +2178,19 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT
~0u, // no _weak_field_map_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::CompactionMergeInfo, sources_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::CompactionMergeInfo, target_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::GetFlushStateRequest, _internal_metadata_),
~0u, // no _extensions_
~0u, // no _oneof_case_
~0u, // no _weak_field_map_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::GetFlushStateRequest, segmentids_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::GetFlushStateResponse, _internal_metadata_),
~0u, // no _extensions_
~0u, // no _oneof_case_
~0u, // no _weak_field_map_
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::GetFlushStateResponse, status_),
PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::GetFlushStateResponse, flushed_),
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
{ 0, -1, sizeof(::milvus::proto::milvus::CreateAliasRequest)},
@ -2218,6 +2268,8 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB
{ 635, -1, sizeof(::milvus::proto::milvus::GetCompactionPlansRequest)},
{ 641, -1, sizeof(::milvus::proto::milvus::GetCompactionPlansResponse)},
{ 649, -1, sizeof(::milvus::proto::milvus::CompactionMergeInfo)},
{ 656, -1, sizeof(::milvus::proto::milvus::GetFlushStateRequest)},
{ 662, -1, sizeof(::milvus::proto::milvus::GetFlushStateResponse)},
};
static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
@ -2296,6 +2348,8 @@ static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] =
reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::milvus::proto::milvus::_GetCompactionPlansRequest_default_instance_),
reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::milvus::proto::milvus::_GetCompactionPlansResponse_default_instance_),
reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::milvus::proto::milvus::_CompactionMergeInfo_default_instance_),
reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::milvus::proto::milvus::_GetFlushStateRequest_default_instance_),
reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::milvus::proto::milvus::_GetFlushStateResponse_default_instance_),
};
const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
@ -2556,116 +2610,120 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE(
"ate\022<\n\nmergeInfos\030\003 \003(\0132(.milvus.proto.m"
"ilvus.CompactionMergeInfo\"6\n\023CompactionM"
"ergeInfo\022\017\n\007sources\030\001 \003(\003\022\016\n\006target\030\002 \001("
"\003*!\n\010ShowType\022\007\n\003All\020\000\022\014\n\010InMemory\020\001*>\n\017"
"PlaceholderType\022\010\n\004None\020\000\022\020\n\014BinaryVecto"
"r\020d\022\017\n\013FloatVector\020e2\233\036\n\rMilvusService\022_"
"\n\020CreateCollection\022,.milvus.proto.milvus"
".CreateCollectionRequest\032\033.milvus.proto."
"common.Status\"\000\022[\n\016DropCollection\022*.milv"
"us.proto.milvus.DropCollectionRequest\032\033."
"milvus.proto.common.Status\"\000\022_\n\rHasColle"
"ction\022).milvus.proto.milvus.HasCollectio"
"nRequest\032!.milvus.proto.milvus.BoolRespo"
"nse\"\000\022[\n\016LoadCollection\022*.milvus.proto.m"
"ilvus.LoadCollectionRequest\032\033.milvus.pro"
"to.common.Status\"\000\022a\n\021ReleaseCollection\022"
"-.milvus.proto.milvus.ReleaseCollectionR"
"equest\032\033.milvus.proto.common.Status\"\000\022w\n"
"\022DescribeCollection\022..milvus.proto.milvu"
"s.DescribeCollectionRequest\032/.milvus.pro"
"to.milvus.DescribeCollectionResponse\"\000\022\206"
"\001\n\027GetCollectionStatistics\0223.milvus.prot"
"o.milvus.GetCollectionStatisticsRequest\032"
"4.milvus.proto.milvus.GetCollectionStati"
"sticsResponse\"\000\022n\n\017ShowCollections\022+.mil"
"vus.proto.milvus.ShowCollectionsRequest\032"
",.milvus.proto.milvus.ShowCollectionsRes"
"ponse\"\000\022]\n\017CreatePartition\022+.milvus.prot"
"o.milvus.CreatePartitionRequest\032\033.milvus"
".proto.common.Status\"\000\022Y\n\rDropPartition\022"
").milvus.proto.milvus.DropPartitionReque"
"st\032\033.milvus.proto.common.Status\"\000\022]\n\014Has"
"Partition\022(.milvus.proto.milvus.HasParti"
"tionRequest\032!.milvus.proto.milvus.BoolRe"
"sponse\"\000\022[\n\016LoadPartitions\022*.milvus.prot"
"o.milvus.LoadPartitionsRequest\032\033.milvus."
"proto.common.Status\"\000\022a\n\021ReleasePartitio"
"ns\022-.milvus.proto.milvus.ReleasePartitio"
"nsRequest\032\033.milvus.proto.common.Status\"\000"
"\022\203\001\n\026GetPartitionStatistics\0222.milvus.pro"
"to.milvus.GetPartitionStatisticsRequest\032"
"3.milvus.proto.milvus.GetPartitionStatis"
"ticsResponse\"\000\022k\n\016ShowPartitions\022*.milvu"
"s.proto.milvus.ShowPartitionsRequest\032+.m"
"ilvus.proto.milvus.ShowPartitionsRespons"
"e\"\000\022U\n\013CreateAlias\022\'.milvus.proto.milvus"
".CreateAliasRequest\032\033.milvus.proto.commo"
"n.Status\"\000\022Q\n\tDropAlias\022%.milvus.proto.m"
"ilvus.DropAliasRequest\032\033.milvus.proto.co"
"mmon.Status\"\000\022S\n\nAlterAlias\022&.milvus.pro"
"to.milvus.AlterAliasRequest\032\033.milvus.pro"
"to.common.Status\"\000\022U\n\013CreateIndex\022\'.milv"
"us.proto.milvus.CreateIndexRequest\032\033.mil"
"vus.proto.common.Status\"\000\022h\n\rDescribeInd"
"ex\022).milvus.proto.milvus.DescribeIndexRe"
"quest\032*.milvus.proto.milvus.DescribeInde"
"xResponse\"\000\022h\n\rGetIndexState\022).milvus.pr"
"oto.milvus.GetIndexStateRequest\032*.milvus"
".proto.milvus.GetIndexStateResponse\"\000\022\200\001"
"\n\025GetIndexBuildProgress\0221.milvus.proto.m"
"ilvus.GetIndexBuildProgressRequest\0322.mil"
"\003\"*\n\024GetFlushStateRequest\022\022\n\nsegmentIDs\030"
"\001 \003(\003\"U\n\025GetFlushStateResponse\022+\n\006status"
"\030\001 \001(\0132\033.milvus.proto.common.Status\022\017\n\007f"
"lushed\030\002 \001(\010*!\n\010ShowType\022\007\n\003All\020\000\022\014\n\010InM"
"emory\020\001*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014"
"BinaryVector\020d\022\017\n\013FloatVector\020e2\233\036\n\rMilv"
"usService\022_\n\020CreateCollection\022,.milvus.p"
"roto.milvus.CreateCollectionRequest\032\033.mi"
"lvus.proto.common.Status\"\000\022[\n\016DropCollec"
"tion\022*.milvus.proto.milvus.DropCollectio"
"nRequest\032\033.milvus.proto.common.Status\"\000\022"
"_\n\rHasCollection\022).milvus.proto.milvus.H"
"asCollectionRequest\032!.milvus.proto.milvu"
"s.BoolResponse\"\000\022[\n\016LoadCollection\022*.mil"
"vus.proto.milvus.LoadCollectionRequest\032\033"
".milvus.proto.common.Status\"\000\022a\n\021Release"
"Collection\022-.milvus.proto.milvus.Release"
"CollectionRequest\032\033.milvus.proto.common."
"Status\"\000\022w\n\022DescribeCollection\022..milvus."
"proto.milvus.DescribeCollectionRequest\032/"
".milvus.proto.milvus.DescribeCollectionR"
"esponse\"\000\022\206\001\n\027GetCollectionStatistics\0223."
"milvus.proto.milvus.GetCollectionStatist"
"icsRequest\0324.milvus.proto.milvus.GetColl"
"ectionStatisticsResponse\"\000\022n\n\017ShowCollec"
"tions\022+.milvus.proto.milvus.ShowCollecti"
"onsRequest\032,.milvus.proto.milvus.ShowCol"
"lectionsResponse\"\000\022]\n\017CreatePartition\022+."
"milvus.proto.milvus.CreatePartitionReque"
"st\032\033.milvus.proto.common.Status\"\000\022Y\n\rDro"
"pPartition\022).milvus.proto.milvus.DropPar"
"titionRequest\032\033.milvus.proto.common.Stat"
"us\"\000\022]\n\014HasPartition\022(.milvus.proto.milv"
"us.HasPartitionRequest\032!.milvus.proto.mi"
"lvus.BoolResponse\"\000\022[\n\016LoadPartitions\022*."
"milvus.proto.milvus.LoadPartitionsReques"
"t\032\033.milvus.proto.common.Status\"\000\022a\n\021Rele"
"asePartitions\022-.milvus.proto.milvus.Rele"
"asePartitionsRequest\032\033.milvus.proto.comm"
"on.Status\"\000\022\203\001\n\026GetPartitionStatistics\0222"
".milvus.proto.milvus.GetPartitionStatist"
"icsRequest\0323.milvus.proto.milvus.GetPart"
"itionStatisticsResponse\"\000\022k\n\016ShowPartiti"
"ons\022*.milvus.proto.milvus.ShowPartitions"
"Request\032+.milvus.proto.milvus.ShowPartit"
"ionsResponse\"\000\022U\n\013CreateAlias\022\'.milvus.p"
"roto.milvus.CreateAliasRequest\032\033.milvus."
"proto.common.Status\"\000\022Q\n\tDropAlias\022%.mil"
"vus.proto.milvus.DropAliasRequest\032\033.milv"
"us.proto.common.Status\"\000\022S\n\nAlterAlias\022&"
".milvus.proto.milvus.AlterAliasRequest\032\033"
".milvus.proto.common.Status\"\000\022U\n\013CreateI"
"ndex\022\'.milvus.proto.milvus.CreateIndexRe"
"quest\032\033.milvus.proto.common.Status\"\000\022h\n\r"
"DescribeIndex\022).milvus.proto.milvus.Desc"
"ribeIndexRequest\032*.milvus.proto.milvus.D"
"escribeIndexResponse\"\000\022h\n\rGetIndexState\022"
").milvus.proto.milvus.GetIndexStateReque"
"st\032*.milvus.proto.milvus.GetIndexStateRe"
"sponse\"\000\022\200\001\n\025GetIndexBuildProgress\0221.mil"
"vus.proto.milvus.GetIndexBuildProgressRe"
"sponse\"\000\022Q\n\tDropIndex\022%.milvus.proto.mil"
"vus.DropIndexRequest\032\033.milvus.proto.comm"
"on.Status\"\000\022S\n\006Insert\022\".milvus.proto.mil"
"vus.InsertRequest\032#.milvus.proto.milvus."
"MutationResult\"\000\022S\n\006Delete\022\".milvus.prot"
"o.milvus.DeleteRequest\032#.milvus.proto.mi"
"lvus.MutationResult\"\000\022R\n\006Search\022\".milvus"
".proto.milvus.SearchRequest\032\".milvus.pro"
"to.milvus.SearchResults\"\000\022P\n\005Flush\022!.mil"
"vus.proto.milvus.FlushRequest\032\".milvus.p"
"roto.milvus.FlushResponse\"\000\022O\n\005Query\022!.m"
"ilvus.proto.milvus.QueryRequest\032!.milvus"
".proto.milvus.QueryResults\"\000\022d\n\014CalcDist"
"ance\022(.milvus.proto.milvus.CalcDistanceR"
"equest\032(.milvus.proto.milvus.CalcDistanc"
"eResults\"\000\022\211\001\n\030GetPersistentSegmentInfo\022"
"4.milvus.proto.milvus.GetPersistentSegme"
"ntInfoRequest\0325.milvus.proto.milvus.GetP"
"ersistentSegmentInfoResponse\"\000\022z\n\023GetQue"
"rySegmentInfo\022/.milvus.proto.milvus.GetQ"
"uerySegmentInfoRequest\0320.milvus.proto.mi"
"lvus.GetQuerySegmentInfoResponse\"\000\022P\n\005Du"
"mmy\022!.milvus.proto.milvus.DummyRequest\032\""
".milvus.proto.milvus.DummyResponse\"\000\022e\n\014"
"RegisterLink\022(.milvus.proto.milvus.Regis"
"terLinkRequest\032).milvus.proto.milvus.Reg"
"isterLinkResponse\"\000\022_\n\nGetMetrics\022&.milv"
"us.proto.milvus.GetMetricsRequest\032\'.milv"
"us.proto.milvus.GetMetricsResponse\"\000\022U\n\013"
"LoadBalance\022\'.milvus.proto.milvus.LoadBa"
"lanceRequest\032\033.milvus.proto.common.Statu"
"s\"\000\022w\n\022GetCompactionState\022..milvus.proto"
".milvus.GetCompactionStateRequest\032/.milv"
"us.proto.milvus.GetCompactionStateRespon"
"se\"\000\022q\n\020ManualCompaction\022,.milvus.proto."
"milvus.ManualCompactionRequest\032-.milvus."
"proto.milvus.ManualCompactionResponse\"\000\022"
"\200\001\n\033GetCompactionStateWithPlans\022..milvus"
".proto.milvus.GetCompactionPlansRequest\032"
"/.milvus.proto.milvus.GetCompactionPlans"
"Response\"\0002u\n\014ProxyService\022e\n\014RegisterLi"
"nk\022(.milvus.proto.milvus.RegisterLinkReq"
"uest\032).milvus.proto.milvus.RegisterLinkR"
"esponse\"\000B5Z3github.com/milvus-io/milvus"
"/internal/proto/milvuspbb\006proto3"
"quest\0322.milvus.proto.milvus.GetIndexBuil"
"dProgressResponse\"\000\022Q\n\tDropIndex\022%.milvu"
"s.proto.milvus.DropIndexRequest\032\033.milvus"
".proto.common.Status\"\000\022S\n\006Insert\022\".milvu"
"s.proto.milvus.InsertRequest\032#.milvus.pr"
"oto.milvus.MutationResult\"\000\022S\n\006Delete\022\"."
"milvus.proto.milvus.DeleteRequest\032#.milv"
"us.proto.milvus.MutationResult\"\000\022R\n\006Sear"
"ch\022\".milvus.proto.milvus.SearchRequest\032\""
".milvus.proto.milvus.SearchResults\"\000\022P\n\005"
"Flush\022!.milvus.proto.milvus.FlushRequest"
"\032\".milvus.proto.milvus.FlushResponse\"\000\022O"
"\n\005Query\022!.milvus.proto.milvus.QueryReque"
"st\032!.milvus.proto.milvus.QueryResults\"\000\022"
"d\n\014CalcDistance\022(.milvus.proto.milvus.Ca"
"lcDistanceRequest\032(.milvus.proto.milvus."
"CalcDistanceResults\"\000\022\211\001\n\030GetPersistentS"
"egmentInfo\0224.milvus.proto.milvus.GetPers"
"istentSegmentInfoRequest\0325.milvus.proto."
"milvus.GetPersistentSegmentInfoResponse\""
"\000\022z\n\023GetQuerySegmentInfo\022/.milvus.proto."
"milvus.GetQuerySegmentInfoRequest\0320.milv"
"us.proto.milvus.GetQuerySegmentInfoRespo"
"nse\"\000\022P\n\005Dummy\022!.milvus.proto.milvus.Dum"
"myRequest\032\".milvus.proto.milvus.DummyRes"
"ponse\"\000\022e\n\014RegisterLink\022(.milvus.proto.m"
"ilvus.RegisterLinkRequest\032).milvus.proto"
".milvus.RegisterLinkResponse\"\000\022_\n\nGetMet"
"rics\022&.milvus.proto.milvus.GetMetricsReq"
"uest\032\'.milvus.proto.milvus.GetMetricsRes"
"ponse\"\000\022U\n\013LoadBalance\022\'.milvus.proto.mi"
"lvus.LoadBalanceRequest\032\033.milvus.proto.c"
"ommon.Status\"\000\022w\n\022GetCompactionState\022..m"
"ilvus.proto.milvus.GetCompactionStateReq"
"uest\032/.milvus.proto.milvus.GetCompaction"
"StateResponse\"\000\022q\n\020ManualCompaction\022,.mi"
"lvus.proto.milvus.ManualCompactionReques"
"t\032-.milvus.proto.milvus.ManualCompaction"
"Response\"\000\022\200\001\n\033GetCompactionStateWithPla"
"ns\022..milvus.proto.milvus.GetCompactionPl"
"ansRequest\032/.milvus.proto.milvus.GetComp"
"actionPlansResponse\"\0002u\n\014ProxyService\022e\n"
"\014RegisterLink\022(.milvus.proto.milvus.Regi"
"sterLinkRequest\032).milvus.proto.milvus.Re"
"gisterLinkResponse\"\000B5Z3github.com/milvu"
"s-io/milvus/internal/proto/milvuspbb\006pro"
"to3"
;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_milvus_2eproto_deps[2] = {
&::descriptor_table_common_2eproto,
&::descriptor_table_schema_2eproto,
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_milvus_2eproto_sccs[75] = {
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_milvus_2eproto_sccs[77] = {
&scc_info_AlterAliasRequest_milvus_2eproto.base,
&scc_info_BoolResponse_milvus_2eproto.base,
&scc_info_CalcDistanceRequest_milvus_2eproto.base,
@ -2697,6 +2755,8 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil
&scc_info_GetCompactionPlansResponse_milvus_2eproto.base,
&scc_info_GetCompactionStateRequest_milvus_2eproto.base,
&scc_info_GetCompactionStateResponse_milvus_2eproto.base,
&scc_info_GetFlushStateRequest_milvus_2eproto.base,
&scc_info_GetFlushStateResponse_milvus_2eproto.base,
&scc_info_GetIndexBuildProgressRequest_milvus_2eproto.base,
&scc_info_GetIndexBuildProgressResponse_milvus_2eproto.base,
&scc_info_GetIndexStateRequest_milvus_2eproto.base,
@ -2745,10 +2805,10 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_milvus_2eproto_once;
static bool descriptor_table_milvus_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_milvus_2eproto = {
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 14432,
&descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 75, 2,
&descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 14563,
&descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 77, 2,
schemas, file_default_instances, TableStruct_milvus_2eproto::offsets,
file_level_metadata_milvus_2eproto, 75, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto,
file_level_metadata_milvus_2eproto, 77, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto,
};
// Force running AddDescriptors() at dynamic initialization time.
@ -34502,6 +34562,595 @@ void CompactionMergeInfo::InternalSwap(CompactionMergeInfo* other) {
}
// ===================================================================
void GetFlushStateRequest::InitAsDefaultInstance() {
}
class GetFlushStateRequest::_Internal {
public:
};
GetFlushStateRequest::GetFlushStateRequest()
: ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
SharedCtor();
// @@protoc_insertion_point(constructor:milvus.proto.milvus.GetFlushStateRequest)
}
GetFlushStateRequest::GetFlushStateRequest(const GetFlushStateRequest& from)
: ::PROTOBUF_NAMESPACE_ID::Message(),
_internal_metadata_(nullptr),
segmentids_(from.segmentids_) {
_internal_metadata_.MergeFrom(from._internal_metadata_);
// @@protoc_insertion_point(copy_constructor:milvus.proto.milvus.GetFlushStateRequest)
}
void GetFlushStateRequest::SharedCtor() {
}
GetFlushStateRequest::~GetFlushStateRequest() {
// @@protoc_insertion_point(destructor:milvus.proto.milvus.GetFlushStateRequest)
SharedDtor();
}
void GetFlushStateRequest::SharedDtor() {
}
void GetFlushStateRequest::SetCachedSize(int size) const {
_cached_size_.Set(size);
}
const GetFlushStateRequest& GetFlushStateRequest::default_instance() {
::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_GetFlushStateRequest_milvus_2eproto.base);
return *internal_default_instance();
}
void GetFlushStateRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:milvus.proto.milvus.GetFlushStateRequest)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
segmentids_.Clear();
_internal_metadata_.Clear();
}
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* GetFlushStateRequest::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
while (!ctx->Done(&ptr)) {
::PROTOBUF_NAMESPACE_ID::uint32 tag;
ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
CHK_(ptr);
switch (tag >> 3) {
// repeated int64 segmentIDs = 1;
case 1:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt64Parser(mutable_segmentids(), ptr, ctx);
CHK_(ptr);
} else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8) {
add_segmentids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr));
CHK_(ptr);
} else goto handle_unusual;
continue;
default: {
handle_unusual:
if ((tag & 7) == 4 || tag == 0) {
ctx->SetLastTag(tag);
goto success;
}
ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
CHK_(ptr != nullptr);
continue;
}
} // switch
} // while
success:
return ptr;
failure:
ptr = nullptr;
goto success;
#undef CHK_
}
#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool GetFlushStateRequest::MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
::PROTOBUF_NAMESPACE_ID::uint32 tag;
// @@protoc_insertion_point(parse_start:milvus.proto.milvus.GetFlushStateRequest)
for (;;) {
::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
tag = p.first;
if (!p.second) goto handle_unusual;
switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
// repeated int64 segmentIDs = 1;
case 1: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPackedPrimitive<
::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
input, this->mutable_segmentids())));
} else if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
1, 10u, input, this->mutable_segmentids())));
} else {
goto handle_unusual;
}
break;
}
default: {
handle_unusual:
if (tag == 0) {
goto success;
}
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SkipField(
input, tag, _internal_metadata_.mutable_unknown_fields()));
break;
}
}
}
success:
// @@protoc_insertion_point(parse_success:milvus.proto.milvus.GetFlushStateRequest)
return true;
failure:
// @@protoc_insertion_point(parse_failure:milvus.proto.milvus.GetFlushStateRequest)
return false;
#undef DO_
}
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void GetFlushStateRequest::SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
// @@protoc_insertion_point(serialize_start:milvus.proto.milvus.GetFlushStateRequest)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
// repeated int64 segmentIDs = 1;
if (this->segmentids_size() > 0) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteTag(1, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
output->WriteVarint32(_segmentids_cached_byte_size_.load(
std::memory_order_relaxed));
}
for (int i = 0, n = this->segmentids_size(); i < n; i++) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64NoTag(
this->segmentids(i), output);
}
if (_internal_metadata_.have_unknown_fields()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields(
_internal_metadata_.unknown_fields(), output);
}
// @@protoc_insertion_point(serialize_end:milvus.proto.milvus.GetFlushStateRequest)
}
::PROTOBUF_NAMESPACE_ID::uint8* GetFlushStateRequest::InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const {
// @@protoc_insertion_point(serialize_to_array_start:milvus.proto.milvus.GetFlushStateRequest)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
// repeated int64 segmentIDs = 1;
if (this->segmentids_size() > 0) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteTagToArray(
1,
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
target);
target = ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream::WriteVarint32ToArray(
_segmentids_cached_byte_size_.load(std::memory_order_relaxed),
target);
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
WriteInt64NoTagToArray(this->segmentids_, target);
}
if (_internal_metadata_.have_unknown_fields()) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray(
_internal_metadata_.unknown_fields(), target);
}
// @@protoc_insertion_point(serialize_to_array_end:milvus.proto.milvus.GetFlushStateRequest)
return target;
}
size_t GetFlushStateRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:milvus.proto.milvus.GetFlushStateRequest)
size_t total_size = 0;
if (_internal_metadata_.have_unknown_fields()) {
total_size +=
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::ComputeUnknownFieldsSize(
_internal_metadata_.unknown_fields());
}
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// repeated int64 segmentIDs = 1;
{
size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
Int64Size(this->segmentids_);
if (data_size > 0) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
static_cast<::PROTOBUF_NAMESPACE_ID::int32>(data_size));
}
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(data_size);
_segmentids_cached_byte_size_.store(cached_size,
std::memory_order_relaxed);
total_size += data_size;
}
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
SetCachedSize(cached_size);
return total_size;
}
void GetFlushStateRequest::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:milvus.proto.milvus.GetFlushStateRequest)
GOOGLE_DCHECK_NE(&from, this);
const GetFlushStateRequest* source =
::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<GetFlushStateRequest>(
&from);
if (source == nullptr) {
// @@protoc_insertion_point(generalized_merge_from_cast_fail:milvus.proto.milvus.GetFlushStateRequest)
::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
} else {
// @@protoc_insertion_point(generalized_merge_from_cast_success:milvus.proto.milvus.GetFlushStateRequest)
MergeFrom(*source);
}
}
void GetFlushStateRequest::MergeFrom(const GetFlushStateRequest& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:milvus.proto.milvus.GetFlushStateRequest)
GOOGLE_DCHECK_NE(&from, this);
_internal_metadata_.MergeFrom(from._internal_metadata_);
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
segmentids_.MergeFrom(from.segmentids_);
}
void GetFlushStateRequest::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:milvus.proto.milvus.GetFlushStateRequest)
if (&from == this) return;
Clear();
MergeFrom(from);
}
void GetFlushStateRequest::CopyFrom(const GetFlushStateRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:milvus.proto.milvus.GetFlushStateRequest)
if (&from == this) return;
Clear();
MergeFrom(from);
}
bool GetFlushStateRequest::IsInitialized() const {
return true;
}
void GetFlushStateRequest::InternalSwap(GetFlushStateRequest* other) {
using std::swap;
_internal_metadata_.Swap(&other->_internal_metadata_);
segmentids_.InternalSwap(&other->segmentids_);
}
::PROTOBUF_NAMESPACE_ID::Metadata GetFlushStateRequest::GetMetadata() const {
return GetMetadataStatic();
}
// ===================================================================
void GetFlushStateResponse::InitAsDefaultInstance() {
::milvus::proto::milvus::_GetFlushStateResponse_default_instance_._instance.get_mutable()->status_ = const_cast< ::milvus::proto::common::Status*>(
::milvus::proto::common::Status::internal_default_instance());
}
class GetFlushStateResponse::_Internal {
public:
static const ::milvus::proto::common::Status& status(const GetFlushStateResponse* msg);
};
const ::milvus::proto::common::Status&
GetFlushStateResponse::_Internal::status(const GetFlushStateResponse* msg) {
return *msg->status_;
}
void GetFlushStateResponse::clear_status() {
if (GetArenaNoVirtual() == nullptr && status_ != nullptr) {
delete status_;
}
status_ = nullptr;
}
GetFlushStateResponse::GetFlushStateResponse()
: ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
SharedCtor();
// @@protoc_insertion_point(constructor:milvus.proto.milvus.GetFlushStateResponse)
}
GetFlushStateResponse::GetFlushStateResponse(const GetFlushStateResponse& from)
: ::PROTOBUF_NAMESPACE_ID::Message(),
_internal_metadata_(nullptr) {
_internal_metadata_.MergeFrom(from._internal_metadata_);
if (from.has_status()) {
status_ = new ::milvus::proto::common::Status(*from.status_);
} else {
status_ = nullptr;
}
flushed_ = from.flushed_;
// @@protoc_insertion_point(copy_constructor:milvus.proto.milvus.GetFlushStateResponse)
}
void GetFlushStateResponse::SharedCtor() {
::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_GetFlushStateResponse_milvus_2eproto.base);
::memset(&status_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&flushed_) -
reinterpret_cast<char*>(&status_)) + sizeof(flushed_));
}
GetFlushStateResponse::~GetFlushStateResponse() {
// @@protoc_insertion_point(destructor:milvus.proto.milvus.GetFlushStateResponse)
SharedDtor();
}
void GetFlushStateResponse::SharedDtor() {
if (this != internal_default_instance()) delete status_;
}
void GetFlushStateResponse::SetCachedSize(int size) const {
_cached_size_.Set(size);
}
const GetFlushStateResponse& GetFlushStateResponse::default_instance() {
::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_GetFlushStateResponse_milvus_2eproto.base);
return *internal_default_instance();
}
void GetFlushStateResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:milvus.proto.milvus.GetFlushStateResponse)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
if (GetArenaNoVirtual() == nullptr && status_ != nullptr) {
delete status_;
}
status_ = nullptr;
flushed_ = false;
_internal_metadata_.Clear();
}
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* GetFlushStateResponse::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
while (!ctx->Done(&ptr)) {
::PROTOBUF_NAMESPACE_ID::uint32 tag;
ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
CHK_(ptr);
switch (tag >> 3) {
// .milvus.proto.common.Status status = 1;
case 1:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
ptr = ctx->ParseMessage(mutable_status(), ptr);
CHK_(ptr);
} else goto handle_unusual;
continue;
// bool flushed = 2;
case 2:
if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
flushed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
CHK_(ptr);
} else goto handle_unusual;
continue;
default: {
handle_unusual:
if ((tag & 7) == 4 || tag == 0) {
ctx->SetLastTag(tag);
goto success;
}
ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
CHK_(ptr != nullptr);
continue;
}
} // switch
} // while
success:
return ptr;
failure:
ptr = nullptr;
goto success;
#undef CHK_
}
#else // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool GetFlushStateResponse::MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
::PROTOBUF_NAMESPACE_ID::uint32 tag;
// @@protoc_insertion_point(parse_start:milvus.proto.milvus.GetFlushStateResponse)
for (;;) {
::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
tag = p.first;
if (!p.second) goto handle_unusual;
switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
// .milvus.proto.common.Status status = 1;
case 1: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
input, mutable_status()));
} else {
goto handle_unusual;
}
break;
}
// bool flushed = 2;
case 2: {
if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
input, &flushed_)));
} else {
goto handle_unusual;
}
break;
}
default: {
handle_unusual:
if (tag == 0) {
goto success;
}
DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SkipField(
input, tag, _internal_metadata_.mutable_unknown_fields()));
break;
}
}
}
success:
// @@protoc_insertion_point(parse_success:milvus.proto.milvus.GetFlushStateResponse)
return true;
failure:
// @@protoc_insertion_point(parse_failure:milvus.proto.milvus.GetFlushStateResponse)
return false;
#undef DO_
}
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void GetFlushStateResponse::SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
// @@protoc_insertion_point(serialize_start:milvus.proto.milvus.GetFlushStateResponse)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
// .milvus.proto.common.Status status = 1;
if (this->has_status()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessageMaybeToArray(
1, _Internal::status(this), output);
}
// bool flushed = 2;
if (this->flushed() != 0) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(2, this->flushed(), output);
}
if (_internal_metadata_.have_unknown_fields()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields(
_internal_metadata_.unknown_fields(), output);
}
// @@protoc_insertion_point(serialize_end:milvus.proto.milvus.GetFlushStateResponse)
}
::PROTOBUF_NAMESPACE_ID::uint8* GetFlushStateResponse::InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const {
// @@protoc_insertion_point(serialize_to_array_start:milvus.proto.milvus.GetFlushStateResponse)
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
// .milvus.proto.common.Status status = 1;
if (this->has_status()) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
InternalWriteMessageToArray(
1, _Internal::status(this), target);
}
// bool flushed = 2;
if (this->flushed() != 0) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->flushed(), target);
}
if (_internal_metadata_.have_unknown_fields()) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray(
_internal_metadata_.unknown_fields(), target);
}
// @@protoc_insertion_point(serialize_to_array_end:milvus.proto.milvus.GetFlushStateResponse)
return target;
}
size_t GetFlushStateResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:milvus.proto.milvus.GetFlushStateResponse)
size_t total_size = 0;
if (_internal_metadata_.have_unknown_fields()) {
total_size +=
::PROTOBUF_NAMESPACE_ID::internal::WireFormat::ComputeUnknownFieldsSize(
_internal_metadata_.unknown_fields());
}
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// .milvus.proto.common.Status status = 1;
if (this->has_status()) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
*status_);
}
// bool flushed = 2;
if (this->flushed() != 0) {
total_size += 1 + 1;
}
int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
SetCachedSize(cached_size);
return total_size;
}
void GetFlushStateResponse::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:milvus.proto.milvus.GetFlushStateResponse)
GOOGLE_DCHECK_NE(&from, this);
const GetFlushStateResponse* source =
::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<GetFlushStateResponse>(
&from);
if (source == nullptr) {
// @@protoc_insertion_point(generalized_merge_from_cast_fail:milvus.proto.milvus.GetFlushStateResponse)
::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
} else {
// @@protoc_insertion_point(generalized_merge_from_cast_success:milvus.proto.milvus.GetFlushStateResponse)
MergeFrom(*source);
}
}
void GetFlushStateResponse::MergeFrom(const GetFlushStateResponse& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:milvus.proto.milvus.GetFlushStateResponse)
GOOGLE_DCHECK_NE(&from, this);
_internal_metadata_.MergeFrom(from._internal_metadata_);
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
if (from.has_status()) {
mutable_status()->::milvus::proto::common::Status::MergeFrom(from.status());
}
if (from.flushed() != 0) {
set_flushed(from.flushed());
}
}
void GetFlushStateResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:milvus.proto.milvus.GetFlushStateResponse)
if (&from == this) return;
Clear();
MergeFrom(from);
}
void GetFlushStateResponse::CopyFrom(const GetFlushStateResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:milvus.proto.milvus.GetFlushStateResponse)
if (&from == this) return;
Clear();
MergeFrom(from);
}
bool GetFlushStateResponse::IsInitialized() const {
return true;
}
void GetFlushStateResponse::InternalSwap(GetFlushStateResponse* other) {
using std::swap;
_internal_metadata_.Swap(&other->_internal_metadata_);
swap(status_, other->status_);
swap(flushed_, other->flushed_);
}
::PROTOBUF_NAMESPACE_ID::Metadata GetFlushStateResponse::GetMetadata() const {
return GetMetadataStatic();
}
// @@protoc_insertion_point(namespace_scope)
} // namespace milvus
} // namespace proto
@ -34732,6 +35381,12 @@ template<> PROTOBUF_NOINLINE ::milvus::proto::milvus::GetCompactionPlansResponse
template<> PROTOBUF_NOINLINE ::milvus::proto::milvus::CompactionMergeInfo* Arena::CreateMaybeMessage< ::milvus::proto::milvus::CompactionMergeInfo >(Arena* arena) {
return Arena::CreateInternal< ::milvus::proto::milvus::CompactionMergeInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::milvus::proto::milvus::GetFlushStateRequest* Arena::CreateMaybeMessage< ::milvus::proto::milvus::GetFlushStateRequest >(Arena* arena) {
return Arena::CreateInternal< ::milvus::proto::milvus::GetFlushStateRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::milvus::proto::milvus::GetFlushStateResponse* Arena::CreateMaybeMessage< ::milvus::proto::milvus::GetFlushStateResponse >(Arena* arena) {
return Arena::CreateInternal< ::milvus::proto::milvus::GetFlushStateResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE
// @@protoc_insertion_point(global_scope)

View File

@ -53,7 +53,7 @@ struct TableStruct_milvus_2eproto {
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[75]
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[77]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
@ -156,6 +156,12 @@ extern GetCompactionStateRequestDefaultTypeInternal _GetCompactionStateRequest_d
class GetCompactionStateResponse;
class GetCompactionStateResponseDefaultTypeInternal;
extern GetCompactionStateResponseDefaultTypeInternal _GetCompactionStateResponse_default_instance_;
class GetFlushStateRequest;
class GetFlushStateRequestDefaultTypeInternal;
extern GetFlushStateRequestDefaultTypeInternal _GetFlushStateRequest_default_instance_;
class GetFlushStateResponse;
class GetFlushStateResponseDefaultTypeInternal;
extern GetFlushStateResponseDefaultTypeInternal _GetFlushStateResponse_default_instance_;
class GetIndexBuildProgressRequest;
class GetIndexBuildProgressRequestDefaultTypeInternal;
extern GetIndexBuildProgressRequestDefaultTypeInternal _GetIndexBuildProgressRequest_default_instance_;
@ -323,6 +329,8 @@ template<> ::milvus::proto::milvus::GetCompactionPlansRequest* Arena::CreateMayb
template<> ::milvus::proto::milvus::GetCompactionPlansResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetCompactionPlansResponse>(Arena*);
template<> ::milvus::proto::milvus::GetCompactionStateRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetCompactionStateRequest>(Arena*);
template<> ::milvus::proto::milvus::GetCompactionStateResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetCompactionStateResponse>(Arena*);
template<> ::milvus::proto::milvus::GetFlushStateRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetFlushStateRequest>(Arena*);
template<> ::milvus::proto::milvus::GetFlushStateResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetFlushStateResponse>(Arena*);
template<> ::milvus::proto::milvus::GetIndexBuildProgressRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetIndexBuildProgressRequest>(Arena*);
template<> ::milvus::proto::milvus::GetIndexBuildProgressResponse* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetIndexBuildProgressResponse>(Arena*);
template<> ::milvus::proto::milvus::GetIndexStateRequest* Arena::CreateMaybeMessage<::milvus::proto::milvus::GetIndexStateRequest>(Arena*);
@ -12787,6 +12795,285 @@ class CompactionMergeInfo :
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_milvus_2eproto;
};
// -------------------------------------------------------------------
class GetFlushStateRequest :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.milvus.GetFlushStateRequest) */ {
public:
GetFlushStateRequest();
virtual ~GetFlushStateRequest();
GetFlushStateRequest(const GetFlushStateRequest& from);
GetFlushStateRequest(GetFlushStateRequest&& from) noexcept
: GetFlushStateRequest() {
*this = ::std::move(from);
}
inline GetFlushStateRequest& operator=(const GetFlushStateRequest& from) {
CopyFrom(from);
return *this;
}
inline GetFlushStateRequest& operator=(GetFlushStateRequest&& from) noexcept {
if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
if (this != &from) InternalSwap(&from);
} else {
CopyFrom(from);
}
return *this;
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
return GetDescriptor();
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
return GetMetadataStatic().descriptor;
}
static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
return GetMetadataStatic().reflection;
}
static const GetFlushStateRequest& default_instance();
static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
static inline const GetFlushStateRequest* internal_default_instance() {
return reinterpret_cast<const GetFlushStateRequest*>(
&_GetFlushStateRequest_default_instance_);
}
static constexpr int kIndexInFileMessages =
75;
friend void swap(GetFlushStateRequest& a, GetFlushStateRequest& b) {
a.Swap(&b);
}
inline void Swap(GetFlushStateRequest* other) {
if (other == this) return;
InternalSwap(other);
}
// implements Message ----------------------------------------------
inline GetFlushStateRequest* New() const final {
return CreateMaybeMessage<GetFlushStateRequest>(nullptr);
}
GetFlushStateRequest* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
return CreateMaybeMessage<GetFlushStateRequest>(arena);
}
void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void CopyFrom(const GetFlushStateRequest& from);
void MergeFrom(const GetFlushStateRequest& from);
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
bool IsInitialized() const final;
size_t ByteSizeLong() const final;
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
#else
bool MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final;
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final;
::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const final;
int GetCachedSize() const final { return _cached_size_.Get(); }
private:
inline void SharedCtor();
inline void SharedDtor();
void SetCachedSize(int size) const final;
void InternalSwap(GetFlushStateRequest* other);
friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
return "milvus.proto.milvus.GetFlushStateRequest";
}
private:
inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
return nullptr;
}
inline void* MaybeArenaPtr() const {
return nullptr;
}
public:
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
private:
static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_milvus_2eproto);
return ::descriptor_table_milvus_2eproto.file_level_metadata[kIndexInFileMessages];
}
public:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
enum : int {
kSegmentIDsFieldNumber = 1,
};
// repeated int64 segmentIDs = 1;
int segmentids_size() const;
void clear_segmentids();
::PROTOBUF_NAMESPACE_ID::int64 segmentids(int index) const;
void set_segmentids(int index, ::PROTOBUF_NAMESPACE_ID::int64 value);
void add_segmentids(::PROTOBUF_NAMESPACE_ID::int64 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
segmentids() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
mutable_segmentids();
// @@protoc_insertion_point(class_scope:milvus.proto.milvus.GetFlushStateRequest)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 > segmentids_;
mutable std::atomic<int> _segmentids_cached_byte_size_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_milvus_2eproto;
};
// -------------------------------------------------------------------
class GetFlushStateResponse :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.milvus.GetFlushStateResponse) */ {
public:
GetFlushStateResponse();
virtual ~GetFlushStateResponse();
GetFlushStateResponse(const GetFlushStateResponse& from);
GetFlushStateResponse(GetFlushStateResponse&& from) noexcept
: GetFlushStateResponse() {
*this = ::std::move(from);
}
inline GetFlushStateResponse& operator=(const GetFlushStateResponse& from) {
CopyFrom(from);
return *this;
}
inline GetFlushStateResponse& operator=(GetFlushStateResponse&& from) noexcept {
if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
if (this != &from) InternalSwap(&from);
} else {
CopyFrom(from);
}
return *this;
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
return GetDescriptor();
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
return GetMetadataStatic().descriptor;
}
static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
return GetMetadataStatic().reflection;
}
static const GetFlushStateResponse& default_instance();
static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
static inline const GetFlushStateResponse* internal_default_instance() {
return reinterpret_cast<const GetFlushStateResponse*>(
&_GetFlushStateResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
76;
friend void swap(GetFlushStateResponse& a, GetFlushStateResponse& b) {
a.Swap(&b);
}
inline void Swap(GetFlushStateResponse* other) {
if (other == this) return;
InternalSwap(other);
}
// implements Message ----------------------------------------------
inline GetFlushStateResponse* New() const final {
return CreateMaybeMessage<GetFlushStateResponse>(nullptr);
}
GetFlushStateResponse* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
return CreateMaybeMessage<GetFlushStateResponse>(arena);
}
void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void CopyFrom(const GetFlushStateResponse& from);
void MergeFrom(const GetFlushStateResponse& from);
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
bool IsInitialized() const final;
size_t ByteSizeLong() const final;
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
#else
bool MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final;
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final;
::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const final;
int GetCachedSize() const final { return _cached_size_.Get(); }
private:
inline void SharedCtor();
inline void SharedDtor();
void SetCachedSize(int size) const final;
void InternalSwap(GetFlushStateResponse* other);
friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
return "milvus.proto.milvus.GetFlushStateResponse";
}
private:
inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
return nullptr;
}
inline void* MaybeArenaPtr() const {
return nullptr;
}
public:
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
private:
static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_milvus_2eproto);
return ::descriptor_table_milvus_2eproto.file_level_metadata[kIndexInFileMessages];
}
public:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
enum : int {
kStatusFieldNumber = 1,
kFlushedFieldNumber = 2,
};
// .milvus.proto.common.Status status = 1;
bool has_status() const;
void clear_status();
const ::milvus::proto::common::Status& status() const;
::milvus::proto::common::Status* release_status();
::milvus::proto::common::Status* mutable_status();
void set_allocated_status(::milvus::proto::common::Status* status);
// bool flushed = 2;
void clear_flushed();
bool flushed() const;
void set_flushed(bool value);
// @@protoc_insertion_point(class_scope:milvus.proto.milvus.GetFlushStateResponse)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::milvus::proto::common::Status* status_;
bool flushed_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_milvus_2eproto;
};
// ===================================================================
@ -23939,6 +24226,103 @@ inline void CompactionMergeInfo::set_target(::PROTOBUF_NAMESPACE_ID::int64 value
// @@protoc_insertion_point(field_set:milvus.proto.milvus.CompactionMergeInfo.target)
}
// -------------------------------------------------------------------
// GetFlushStateRequest
// repeated int64 segmentIDs = 1;
inline int GetFlushStateRequest::segmentids_size() const {
return segmentids_.size();
}
inline void GetFlushStateRequest::clear_segmentids() {
segmentids_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int64 GetFlushStateRequest::segmentids(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.GetFlushStateRequest.segmentIDs)
return segmentids_.Get(index);
}
inline void GetFlushStateRequest::set_segmentids(int index, ::PROTOBUF_NAMESPACE_ID::int64 value) {
segmentids_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.milvus.GetFlushStateRequest.segmentIDs)
}
inline void GetFlushStateRequest::add_segmentids(::PROTOBUF_NAMESPACE_ID::int64 value) {
segmentids_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.milvus.GetFlushStateRequest.segmentIDs)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
GetFlushStateRequest::segmentids() const {
// @@protoc_insertion_point(field_list:milvus.proto.milvus.GetFlushStateRequest.segmentIDs)
return segmentids_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
GetFlushStateRequest::mutable_segmentids() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.milvus.GetFlushStateRequest.segmentIDs)
return &segmentids_;
}
// -------------------------------------------------------------------
// GetFlushStateResponse
// .milvus.proto.common.Status status = 1;
inline bool GetFlushStateResponse::has_status() const {
return this != internal_default_instance() && status_ != nullptr;
}
inline const ::milvus::proto::common::Status& GetFlushStateResponse::status() const {
const ::milvus::proto::common::Status* p = status_;
// @@protoc_insertion_point(field_get:milvus.proto.milvus.GetFlushStateResponse.status)
return p != nullptr ? *p : *reinterpret_cast<const ::milvus::proto::common::Status*>(
&::milvus::proto::common::_Status_default_instance_);
}
inline ::milvus::proto::common::Status* GetFlushStateResponse::release_status() {
// @@protoc_insertion_point(field_release:milvus.proto.milvus.GetFlushStateResponse.status)
::milvus::proto::common::Status* temp = status_;
status_ = nullptr;
return temp;
}
inline ::milvus::proto::common::Status* GetFlushStateResponse::mutable_status() {
if (status_ == nullptr) {
auto* p = CreateMaybeMessage<::milvus::proto::common::Status>(GetArenaNoVirtual());
status_ = p;
}
// @@protoc_insertion_point(field_mutable:milvus.proto.milvus.GetFlushStateResponse.status)
return status_;
}
inline void GetFlushStateResponse::set_allocated_status(::milvus::proto::common::Status* status) {
::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
if (message_arena == nullptr) {
delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(status_);
}
if (status) {
::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
if (message_arena != submessage_arena) {
status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
message_arena, status, submessage_arena);
}
} else {
}
status_ = status;
// @@protoc_insertion_point(field_set_allocated:milvus.proto.milvus.GetFlushStateResponse.status)
}
// bool flushed = 2;
inline void GetFlushStateResponse::clear_flushed() {
flushed_ = false;
}
inline bool GetFlushStateResponse::flushed() const {
// @@protoc_insertion_point(field_get:milvus.proto.milvus.GetFlushStateResponse.flushed)
return flushed_;
}
inline void GetFlushStateResponse::set_flushed(bool value) {
flushed_ = value;
// @@protoc_insertion_point(field_set:milvus.proto.milvus.GetFlushStateResponse.flushed)
}
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif // __GNUC__
@ -24090,6 +24474,10 @@ inline void CompactionMergeInfo::set_target(::PROTOBUF_NAMESPACE_ID::int64 value
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// @@protoc_insertion_point(namespace_scope)

View File

@ -1820,6 +1820,101 @@ func TestPostFlush(t *testing.T) {
})
}
func TestGetFlushState(t *testing.T) {
t.Run("get flush state with all flushed segments", func(t *testing.T) {
svr := &Server{
isServing: ServerStateHealthy,
meta: &meta{
segments: &SegmentsInfo{
segments: map[int64]*SegmentInfo{
1: {
SegmentInfo: &datapb.SegmentInfo{
ID: 1,
State: commonpb.SegmentState_Flushed,
},
},
2: {
SegmentInfo: &datapb.SegmentInfo{
ID: 2,
State: commonpb.SegmentState_Flushed,
},
},
},
},
},
}
resp, err := svr.GetFlushState(context.TODO(), &milvuspb.GetFlushStateRequest{SegmentIDs: []int64{1, 2}})
assert.Nil(t, err)
assert.EqualValues(t, &milvuspb.GetFlushStateResponse{
Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success},
Flushed: true,
}, resp)
})
t.Run("get flush state with unflushed segments", func(t *testing.T) {
svr := &Server{
isServing: ServerStateHealthy,
meta: &meta{
segments: &SegmentsInfo{
segments: map[int64]*SegmentInfo{
1: {
SegmentInfo: &datapb.SegmentInfo{
ID: 1,
State: commonpb.SegmentState_Flushed,
},
},
2: {
SegmentInfo: &datapb.SegmentInfo{
ID: 2,
State: commonpb.SegmentState_Sealed,
},
},
},
},
},
}
resp, err := svr.GetFlushState(context.TODO(), &milvuspb.GetFlushStateRequest{SegmentIDs: []int64{1, 2}})
assert.Nil(t, err)
assert.EqualValues(t, &milvuspb.GetFlushStateResponse{
Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success},
Flushed: false,
}, resp)
})
t.Run("get flush state with compacted segments", func(t *testing.T) {
svr := &Server{
isServing: ServerStateHealthy,
meta: &meta{
segments: &SegmentsInfo{
segments: map[int64]*SegmentInfo{
1: {
SegmentInfo: &datapb.SegmentInfo{
ID: 1,
State: commonpb.SegmentState_Flushed,
},
},
2: {
SegmentInfo: &datapb.SegmentInfo{
ID: 2,
State: commonpb.SegmentState_Dropped,
},
},
},
},
},
}
resp, err := svr.GetFlushState(context.TODO(), &milvuspb.GetFlushStateRequest{SegmentIDs: []int64{1, 2}})
assert.Nil(t, err)
assert.EqualValues(t, &milvuspb.GetFlushStateResponse{
Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success},
Flushed: true,
}, resp)
})
}
func newTestServer(t *testing.T, receiveCh chan interface{}, opts ...Option) *Server {
Params.Init()
Params.TimeTickChannelName = Params.TimeTickChannelName + strconv.Itoa(rand.Int())

View File

@ -826,7 +826,7 @@ func (s *Server) WatchChannels(ctx context.Context, req *datapb.WatchChannelsReq
}
if s.isClosed() {
log.Warn("failed to watch channels request", zap.Any("channels", req.GetChannelNames()),
log.Warn("failed to watch channels request", zap.Any("channels", req.GetChannelNames()),
zap.Error(errDataCoordIsUnhealthy(Params.NodeID)))
resp.Status.Reason = msgDataCoordIsUnhealthy(Params.NodeID)
return resp, nil
@ -847,3 +847,39 @@ func (s *Server) WatchChannels(ctx context.Context, req *datapb.WatchChannelsReq
return resp, nil
}
// GetFlushState gets the flush state of multiple segments
func (s *Server) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
log.Debug("received get flush state request", zap.Int64s("segment ids", req.GetSegmentIDs()), zap.Int("len", len(req.GetSegmentIDs())))
resp := &milvuspb.GetFlushStateResponse{Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_UnexpectedError}}
if s.isClosed() {
log.Warn("failed to get flush state because of closed server",
zap.Int64s("segment ids", req.GetSegmentIDs()), zap.Int("len", len(req.GetSegmentIDs())))
resp.Status.Reason = msgDataCoordIsUnhealthy(Params.NodeID)
return resp, nil
}
var unflushed []UniqueID
for _, sid := range req.GetSegmentIDs() {
segment := s.meta.GetSegment(sid)
// segment is nil if it was compacted
if segment == nil || segment.GetState() == commonpb.SegmentState_Flushed ||
segment.GetState() == commonpb.SegmentState_Flushed {
continue
}
unflushed = append(unflushed, sid)
}
if len(unflushed) != 0 {
log.Debug("unflushed segment ids", zap.Int64s("segment ids", unflushed), zap.Int("len", len(unflushed)))
resp.Flushed = false
} else {
log.Debug("all segment is flushed", zap.Int64s("segment ids", req.GetSegmentIDs()))
resp.Flushed = true
}
resp.Status.ErrorCode = commonpb.ErrorCode_Success
return resp, nil
}

View File

@ -645,3 +645,21 @@ func (c *Client) WatchChannels(ctx context.Context, req *datapb.WatchChannelsReq
}
return ret.(*datapb.WatchChannelsResponse), err
}
// GetFlushState gets the flush state of multiple segments
func (c *Client) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
ret, err := c.recall(func() (interface{}, error) {
client, err := c.getGrpcClient()
if err != nil {
return nil, err
}
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.GetFlushState(ctx, req)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*milvuspb.GetFlushStateResponse), err
}

View File

@ -113,7 +113,9 @@ func (m *MockDataCoordClient) GetCompactionStateWithPlans(ctx context.Context, r
func (m *MockDataCoordClient) WatchChannels(ctx context.Context, req *datapb.WatchChannelsRequest, opts ...grpc.CallOption) (*datapb.WatchChannelsResponse, error) {
return &datapb.WatchChannelsResponse{}, m.err
}
func (m *MockDataCoordClient) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest, opts ...grpc.CallOption) (*milvuspb.GetFlushStateResponse, error) {
return &milvuspb.GetFlushStateResponse{}, m.err
}
func Test_NewClient(t *testing.T) {
proxy.Params.InitOnce()

View File

@ -286,3 +286,8 @@ func (s *Server) GetCompactionStateWithPlans(ctx context.Context, req *milvuspb.
func (s *Server) WatchChannels(ctx context.Context, req *datapb.WatchChannelsRequest) (*datapb.WatchChannelsResponse, error) {
return s.dataCoord.WatchChannels(ctx, req)
}
// GetFlushState gets the flush state of multiple segments
func (s *Server) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return s.dataCoord.GetFlushState(ctx, req)
}

View File

@ -52,6 +52,7 @@ type MockDataCoord struct {
manualCompactionResp *milvuspb.ManualCompactionResponse
compactionPlansResp *milvuspb.GetCompactionPlansResponse
watchChannelsResp *datapb.WatchChannelsResponse
getFlushStateResp *milvuspb.GetFlushStateResponse
}
func (m *MockDataCoord) Init() error {
@ -150,6 +151,10 @@ func (m *MockDataCoord) WatchChannels(ctx context.Context, req *datapb.WatchChan
return m.watchChannelsResp, m.err
}
func (m *MockDataCoord) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return m.getFlushStateResp, m.err
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
func Test_NewServer(t *testing.T) {
ctx := context.Background()
@ -307,6 +312,15 @@ func Test_NewServer(t *testing.T) {
assert.NotNil(t, resp)
})
t.Run("GetFlushState", func(t *testing.T) {
server.dataCoord = &MockDataCoord{
getFlushStateResp: &milvuspb.GetFlushStateResponse{},
}
resp, err := server.GetFlushState(ctx, nil)
assert.Nil(t, err)
assert.NotNil(t, resp)
})
err = server.Stop()
assert.Nil(t, err)
}

View File

@ -447,3 +447,7 @@ func (s *Server) ManualCompaction(ctx context.Context, req *milvuspb.ManualCompa
func (s *Server) GetCompactionStateWithPlans(ctx context.Context, req *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error) {
return s.proxy.GetCompactionStateWithPlans(ctx, req)
}
func (s *Server) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return s.proxy.GetFlushState(ctx, req)
}

View File

@ -399,6 +399,10 @@ func (m *MockDataCoord) WatchChannels(ctx context.Context, req *datapb.WatchChan
return nil, nil
}
func (m *MockDataCoord) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return nil, nil
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type MockProxy struct {
MockBase
@ -609,6 +613,10 @@ func (m *MockProxy) GetCompactionStateWithPlans(ctx context.Context, req *milvus
return nil, nil
}
func (m *MockProxy) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return nil, nil
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
func Test_NewServer(t *testing.T) {
ctx := context.Background()

View File

@ -39,6 +39,7 @@ service DataCoord {
rpc GetCompactionStateWithPlans(milvus.GetCompactionPlansRequest) returns (milvus.GetCompactionPlansResponse) {}
rpc WatchChannels(WatchChannelsRequest) returns (WatchChannelsResponse) {}
rpc GetFlushState(milvus.GetFlushStateRequest) returns (milvus.GetFlushStateResponse) {}
}
service DataNode {

View File

@ -2811,170 +2811,171 @@ func init() {
func init() { proto.RegisterFile("data_coord.proto", fileDescriptor_82cd95f524594f49) }
var fileDescriptor_82cd95f524594f49 = []byte{
// 2602 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdd, 0x6f, 0x1b, 0xc7,
0x11, 0xf7, 0xf1, 0x43, 0x22, 0x87, 0x14, 0x45, 0xad, 0x1d, 0x99, 0xa5, 0x6d, 0x59, 0xbe, 0x24,
0xb6, 0xe2, 0x38, 0x92, 0x2d, 0x37, 0x68, 0x50, 0x27, 0x0d, 0x2c, 0xcb, 0x56, 0x85, 0x4a, 0xae,
0x7a, 0x54, 0xe2, 0xa2, 0x01, 0x4a, 0x9c, 0x78, 0x2b, 0xea, 0x6a, 0xde, 0x1d, 0x7d, 0xbb, 0x94,
0xad, 0xbc, 0xc4, 0x48, 0x81, 0x02, 0x2d, 0xda, 0xa6, 0x45, 0x5f, 0x0b, 0xb4, 0xe8, 0x53, 0x81,
0xbe, 0xb4, 0x05, 0xfa, 0xd2, 0xfe, 0x03, 0x45, 0xfb, 0xde, 0x7f, 0xa3, 0xff, 0x42, 0xb0, 0x1f,
0xb7, 0xf7, 0xc1, 0x23, 0x79, 0x92, 0xfc, 0xf1, 0xc6, 0xdd, 0x9b, 0x9d, 0x99, 0x9d, 0x9d, 0xf9,
0xcd, 0xcc, 0x2e, 0xa1, 0x6e, 0x99, 0xd4, 0x6c, 0x77, 0x3c, 0xcf, 0xb7, 0x96, 0xfb, 0xbe, 0x47,
0x3d, 0x34, 0xe7, 0xd8, 0xbd, 0xc3, 0x01, 0x11, 0xa3, 0x65, 0xf6, 0xb9, 0x59, 0xed, 0x78, 0x8e,
0xe3, 0xb9, 0x62, 0xaa, 0x59, 0xb3, 0x5d, 0x8a, 0x7d, 0xd7, 0xec, 0xc9, 0x71, 0x35, 0xba, 0xa0,
0x59, 0x25, 0x9d, 0x03, 0xec, 0x98, 0x62, 0xa4, 0x3f, 0x83, 0xea, 0x83, 0xde, 0x80, 0x1c, 0x18,
0xf8, 0xc9, 0x00, 0x13, 0x8a, 0x6e, 0x42, 0x61, 0xcf, 0x24, 0xb8, 0xa1, 0x2d, 0x6a, 0x4b, 0x95,
0xd5, 0x8b, 0xcb, 0x31, 0x59, 0x52, 0xca, 0x36, 0xe9, 0xae, 0x99, 0x04, 0x1b, 0x9c, 0x12, 0x21,
0x28, 0x58, 0x7b, 0x9b, 0xeb, 0x8d, 0xdc, 0xa2, 0xb6, 0x94, 0x37, 0xf8, 0x6f, 0xa4, 0x43, 0xb5,
0xe3, 0xf5, 0x7a, 0xb8, 0x43, 0x6d, 0xcf, 0xdd, 0x5c, 0x6f, 0x14, 0xf8, 0xb7, 0xd8, 0x9c, 0xfe,
0x7b, 0x0d, 0x66, 0xa4, 0x68, 0xd2, 0xf7, 0x5c, 0x82, 0xd1, 0x6d, 0x98, 0x22, 0xd4, 0xa4, 0x03,
0x22, 0xa5, 0x5f, 0x48, 0x95, 0xde, 0xe2, 0x24, 0x86, 0x24, 0xcd, 0x24, 0x3e, 0x3f, 0x2c, 0x1e,
0x2d, 0x00, 0x10, 0xdc, 0x75, 0xb0, 0x4b, 0x37, 0xd7, 0x49, 0xa3, 0xb0, 0x98, 0x5f, 0xca, 0x1b,
0x91, 0x19, 0xfd, 0xb7, 0x1a, 0xd4, 0x5b, 0xc1, 0x30, 0xb0, 0xce, 0x39, 0x28, 0x76, 0xbc, 0x81,
0x4b, 0xb9, 0x82, 0x33, 0x86, 0x18, 0xa0, 0x2b, 0x50, 0xed, 0x1c, 0x98, 0xae, 0x8b, 0x7b, 0x6d,
0xd7, 0x74, 0x30, 0x57, 0xa5, 0x6c, 0x54, 0xe4, 0xdc, 0x43, 0xd3, 0xc1, 0x99, 0x34, 0x5a, 0x84,
0x4a, 0xdf, 0xf4, 0xa9, 0x1d, 0xb3, 0x59, 0x74, 0x4a, 0xff, 0xa3, 0x06, 0xf3, 0x77, 0x09, 0xb1,
0xbb, 0xee, 0x90, 0x66, 0xf3, 0x30, 0xe5, 0x7a, 0x16, 0xde, 0x5c, 0xe7, 0xaa, 0xe5, 0x0d, 0x39,
0x42, 0x17, 0xa0, 0xdc, 0xc7, 0xd8, 0x6f, 0xfb, 0x5e, 0x2f, 0x50, 0xac, 0xc4, 0x26, 0x0c, 0xaf,
0x87, 0xd1, 0x0f, 0x60, 0x8e, 0x24, 0x18, 0x91, 0x46, 0x7e, 0x31, 0xbf, 0x54, 0x59, 0x7d, 0x73,
0x79, 0xc8, 0xcb, 0x96, 0x93, 0x42, 0x8d, 0xe1, 0xd5, 0xfa, 0xf3, 0x1c, 0x9c, 0x55, 0x74, 0x42,
0x57, 0xf6, 0x9b, 0x59, 0x8e, 0xe0, 0xae, 0x52, 0x4f, 0x0c, 0xb2, 0x58, 0x4e, 0x99, 0x3c, 0x1f,
0x35, 0x79, 0x06, 0x07, 0x4b, 0xda, 0xb3, 0x38, 0x64, 0x4f, 0x74, 0x19, 0x2a, 0xf8, 0x59, 0xdf,
0xf6, 0x71, 0x9b, 0xda, 0x0e, 0x6e, 0x4c, 0x2d, 0x6a, 0x4b, 0x05, 0x03, 0xc4, 0xd4, 0xae, 0xed,
0x44, 0x3d, 0x72, 0x3a, 0xb3, 0x47, 0xea, 0x7f, 0xd2, 0xe0, 0xfc, 0xd0, 0x29, 0x49, 0x17, 0x37,
0xa0, 0xce, 0x77, 0x1e, 0x5a, 0x86, 0x39, 0x3b, 0x33, 0xf8, 0xd5, 0x71, 0x06, 0x0f, 0xc9, 0x8d,
0xa1, 0xf5, 0x11, 0x25, 0x73, 0xd9, 0x95, 0x7c, 0x0c, 0xe7, 0x37, 0x30, 0x95, 0x02, 0xd8, 0x37,
0x4c, 0x4e, 0x0e, 0x01, 0xf1, 0x58, 0xca, 0x0d, 0xc5, 0xd2, 0x5f, 0x73, 0x2a, 0x96, 0xb8, 0xa8,
0x4d, 0x77, 0xdf, 0x43, 0x17, 0xa1, 0xac, 0x48, 0xa4, 0x57, 0x84, 0x13, 0xe8, 0x5b, 0x50, 0x64,
0x9a, 0x0a, 0x97, 0xa8, 0xad, 0x5e, 0x49, 0xdf, 0x53, 0x84, 0xa7, 0x21, 0xe8, 0xd1, 0x26, 0xd4,
0x08, 0x35, 0x7d, 0xda, 0xee, 0x7b, 0x84, 0x9f, 0x33, 0x77, 0x9c, 0xca, 0xaa, 0x1e, 0xe7, 0xa0,
0x20, 0x72, 0x9b, 0x74, 0x77, 0x24, 0xa5, 0x31, 0xc3, 0x57, 0x06, 0x43, 0x74, 0x1f, 0xaa, 0xd8,
0xb5, 0x42, 0x46, 0x85, 0xcc, 0x8c, 0x2a, 0xd8, 0xb5, 0x14, 0x9b, 0xf0, 0x7c, 0x8a, 0xd9, 0xcf,
0xe7, 0x97, 0x1a, 0x34, 0x86, 0x0f, 0xe8, 0x34, 0x40, 0x79, 0x47, 0x2c, 0xc2, 0xe2, 0x80, 0xc6,
0x46, 0xb8, 0x3a, 0x24, 0x43, 0x2e, 0xd1, 0x6d, 0x78, 0x23, 0xd4, 0x86, 0x7f, 0x79, 0x69, 0xce,
0xf2, 0x53, 0x0d, 0xe6, 0x93, 0xb2, 0x4e, 0xb3, 0xef, 0x6f, 0x42, 0xd1, 0x76, 0xf7, 0xbd, 0x60,
0xdb, 0x0b, 0x63, 0xe2, 0x8c, 0xc9, 0x12, 0xc4, 0xba, 0x03, 0x17, 0x36, 0x30, 0xdd, 0x74, 0x09,
0xf6, 0xe9, 0x9a, 0xed, 0xf6, 0xbc, 0xee, 0x8e, 0x49, 0x0f, 0x4e, 0x11, 0x23, 0x31, 0x77, 0xcf,
0x25, 0xdc, 0x5d, 0xff, 0xb3, 0x06, 0x17, 0xd3, 0xe5, 0xc9, 0xad, 0x37, 0xa1, 0xb4, 0x6f, 0xe3,
0x9e, 0xc5, 0x6c, 0xa6, 0x71, 0x9b, 0xa9, 0x31, 0x8b, 0x95, 0x3e, 0x23, 0x96, 0x3b, 0xbc, 0x32,
0xc2, 0x41, 0x5b, 0xd4, 0xb7, 0xdd, 0xee, 0x96, 0x4d, 0xa8, 0x21, 0xe8, 0x23, 0xf6, 0xcc, 0x67,
0xf7, 0xcc, 0x5f, 0x68, 0xb0, 0xb0, 0x81, 0xe9, 0x3d, 0x05, 0xb5, 0xec, 0xbb, 0x4d, 0xa8, 0xdd,
0x21, 0x2f, 0xb7, 0x88, 0x48, 0xc9, 0x99, 0xfa, 0x57, 0x1a, 0x5c, 0x1e, 0xa9, 0x8c, 0x34, 0x9d,
0x84, 0x92, 0x00, 0x68, 0xd3, 0xa1, 0xe4, 0x7b, 0xf8, 0xe8, 0x53, 0xb3, 0x37, 0xc0, 0x3b, 0xa6,
0xed, 0x0b, 0x28, 0x39, 0x21, 0xb0, 0xfe, 0x45, 0x83, 0x4b, 0x1b, 0x98, 0xee, 0x04, 0x69, 0xe6,
0x35, 0x5a, 0x27, 0x43, 0x45, 0xf1, 0x6b, 0x71, 0x98, 0xa9, 0xda, 0xbe, 0x16, 0xf3, 0x2d, 0xf0,
0x38, 0x88, 0x04, 0xe4, 0x3d, 0x51, 0x0b, 0x48, 0xe3, 0xe9, 0xff, 0xc8, 0x41, 0xf5, 0x53, 0x59,
0x1f, 0xf0, 0x34, 0x92, 0xb4, 0x83, 0x96, 0x6e, 0x87, 0x48, 0x49, 0x91, 0x56, 0x65, 0x6c, 0xc0,
0x0c, 0xc1, 0xf8, 0xf1, 0x49, 0x92, 0x46, 0x95, 0x2d, 0x54, 0x60, 0xbf, 0x05, 0x73, 0x03, 0x77,
0x9f, 0x95, 0xb5, 0xd8, 0x92, 0xbb, 0x10, 0xd5, 0xe5, 0x64, 0xe4, 0x19, 0x5e, 0x88, 0xbe, 0x0b,
0xb3, 0x49, 0x5e, 0xc5, 0x4c, 0xbc, 0x92, 0xcb, 0xf4, 0x9f, 0x6b, 0x30, 0xff, 0xc8, 0xa4, 0x9d,
0x83, 0x75, 0x47, 0x5a, 0xf4, 0x14, 0xfe, 0xf8, 0x11, 0x94, 0x0f, 0xa5, 0xf5, 0x02, 0xd0, 0xb9,
0x9c, 0xa2, 0x50, 0xf4, 0x9c, 0x8c, 0x70, 0x85, 0xfe, 0x6f, 0x0d, 0xce, 0xf1, 0xca, 0x3f, 0xd0,
0xee, 0xd5, 0x47, 0xc6, 0x84, 0xea, 0x1f, 0x5d, 0x85, 0x9a, 0x63, 0xfa, 0x8f, 0x5b, 0x21, 0x4d,
0x91, 0xd3, 0x24, 0x66, 0xf5, 0x67, 0x00, 0x72, 0xb4, 0x4d, 0xba, 0x27, 0xd0, 0xff, 0x03, 0x98,
0x96, 0x52, 0x65, 0x90, 0x4c, 0x3a, 0xd8, 0x80, 0x5c, 0xff, 0x8f, 0x06, 0xb5, 0x10, 0xf6, 0x78,
0x28, 0xd4, 0x20, 0xa7, 0x02, 0x20, 0xb7, 0xb9, 0x8e, 0x3e, 0x82, 0x29, 0xd1, 0xeb, 0x49, 0xde,
0x6f, 0xc7, 0x79, 0xcb, 0x3e, 0x30, 0x82, 0x9d, 0x7c, 0xc2, 0x90, 0x8b, 0x98, 0x8d, 0x14, 0x54,
0x88, 0xb6, 0x20, 0x6f, 0x44, 0x66, 0xd0, 0x26, 0xcc, 0xc6, 0x2b, 0xad, 0xc0, 0xd1, 0x17, 0x47,
0x41, 0xc4, 0xba, 0x49, 0x4d, 0x8e, 0x10, 0xb5, 0x58, 0xa1, 0x45, 0xf4, 0xff, 0x17, 0xa1, 0x12,
0xd9, 0xe5, 0xd0, 0x4e, 0x92, 0x47, 0x9a, 0x9b, 0x0c, 0x76, 0xf9, 0xe1, 0x72, 0xff, 0x6d, 0xa8,
0xd9, 0x3c, 0xc1, 0xb6, 0xa5, 0x2b, 0x72, 0x44, 0x2c, 0x1b, 0x33, 0x62, 0x56, 0xc6, 0x05, 0x5a,
0x80, 0x8a, 0x3b, 0x70, 0xda, 0xde, 0x7e, 0xdb, 0xf7, 0x9e, 0x12, 0xd9, 0x37, 0x94, 0xdd, 0x81,
0xf3, 0xfd, 0x7d, 0xc3, 0x7b, 0x4a, 0xc2, 0xd2, 0x74, 0xea, 0x98, 0xa5, 0xe9, 0x02, 0x54, 0x1c,
0xf3, 0x19, 0xe3, 0xda, 0x76, 0x07, 0x0e, 0x6f, 0x29, 0xf2, 0x46, 0xd9, 0x31, 0x9f, 0x19, 0xde,
0xd3, 0x87, 0x03, 0x07, 0x2d, 0x41, 0xbd, 0x67, 0x12, 0xda, 0x8e, 0xf6, 0x24, 0x25, 0xde, 0x93,
0xd4, 0xd8, 0xfc, 0xfd, 0xb0, 0x2f, 0x19, 0x2e, 0x72, 0xcb, 0xa7, 0x28, 0x72, 0x2d, 0xa7, 0x17,
0x32, 0x82, 0xec, 0x45, 0xae, 0xe5, 0xf4, 0x14, 0x9b, 0x0f, 0x60, 0x7a, 0x8f, 0x97, 0x2d, 0xa4,
0x51, 0x19, 0x89, 0x50, 0x0f, 0x58, 0xc5, 0x22, 0xaa, 0x1b, 0x23, 0x20, 0x47, 0x1f, 0x42, 0x99,
0xe7, 0x0b, 0xbe, 0xb6, 0x9a, 0x69, 0x6d, 0xb8, 0x80, 0x41, 0x91, 0x85, 0x7b, 0xd4, 0xe4, 0xab,
0x67, 0x46, 0x42, 0xd1, 0x3a, 0xa3, 0xd9, 0xf2, 0xba, 0x02, 0x8a, 0xd4, 0x0a, 0x74, 0x13, 0xce,
0x76, 0x7c, 0x6c, 0x52, 0x6c, 0xad, 0x1d, 0xdd, 0xf3, 0x9c, 0xbe, 0xc9, 0xbd, 0xa9, 0x51, 0x5b,
0xd4, 0x96, 0x4a, 0x46, 0xda, 0x27, 0x86, 0x0c, 0x1d, 0x35, 0x7a, 0xe0, 0x7b, 0x4e, 0x63, 0x56,
0x20, 0x43, 0x7c, 0x16, 0x5d, 0x02, 0xb0, 0x7c, 0xaf, 0xdf, 0xc7, 0x56, 0xdb, 0xa4, 0x8d, 0x3a,
0x3f, 0xc6, 0xb2, 0x9c, 0xb9, 0x4b, 0xf5, 0x2f, 0xe0, 0x5c, 0xe8, 0x22, 0x91, 0xe3, 0x18, 0x3e,
0x59, 0xed, 0xa4, 0x27, 0x3b, 0xbe, 0xe2, 0xfc, 0x7b, 0x01, 0xe6, 0x5b, 0xe6, 0x21, 0x7e, 0xf9,
0xc5, 0x6d, 0x26, 0x40, 0xde, 0x82, 0x39, 0x5e, 0xcf, 0xae, 0x46, 0xf4, 0x19, 0x93, 0x37, 0xa3,
0xde, 0x30, 0xbc, 0x10, 0x7d, 0xcc, 0x12, 0x3e, 0xee, 0x3c, 0xde, 0xf1, 0xec, 0x30, 0x67, 0x5e,
0x4a, 0xe1, 0x73, 0x4f, 0x51, 0x19, 0xd1, 0x15, 0x68, 0x67, 0x18, 0xdb, 0xa6, 0x38, 0x93, 0x6b,
0x63, 0xbb, 0xa6, 0xd0, 0xfa, 0x49, 0x88, 0x43, 0x0d, 0x98, 0x96, 0x39, 0x99, 0x07, 0x7e, 0xc9,
0x08, 0x86, 0x68, 0x07, 0xce, 0x8a, 0x1d, 0xb4, 0xa4, 0x57, 0x8b, 0xcd, 0x97, 0x32, 0x6d, 0x3e,
0x6d, 0x69, 0x3c, 0x28, 0xca, 0xc7, 0x0e, 0x8a, 0x06, 0x4c, 0x4b, 0x47, 0xe5, 0x68, 0x50, 0x32,
0x82, 0x21, 0xab, 0xfd, 0x21, 0x34, 0xd9, 0x84, 0x16, 0xfe, 0x3b, 0x50, 0x52, 0x4e, 0x9c, 0xcb,
0xec, 0xc4, 0x6a, 0x4d, 0x12, 0x87, 0xf3, 0x09, 0x1c, 0xd6, 0xff, 0xab, 0x41, 0x35, 0xba, 0x05,
0x86, 0xef, 0x3e, 0xee, 0x78, 0xbe, 0xd5, 0xc6, 0x2e, 0xf5, 0x6d, 0x2c, 0xda, 0xc4, 0x82, 0x31,
0x23, 0x66, 0xef, 0x8b, 0x49, 0x46, 0xc6, 0xa0, 0x95, 0x50, 0xd3, 0xe9, 0xb7, 0xf7, 0x59, 0x04,
0xe7, 0x04, 0x99, 0x9a, 0xe5, 0x01, 0x7c, 0x05, 0xaa, 0x21, 0x19, 0xf5, 0xb8, 0xfc, 0x82, 0x51,
0x51, 0x73, 0xbb, 0x1e, 0x7a, 0x0b, 0x6a, 0xdc, 0x6a, 0xed, 0x9e, 0xd7, 0x6d, 0xb3, 0x96, 0x4a,
0x26, 0x94, 0xaa, 0x25, 0xd5, 0x62, 0xc7, 0x11, 0xa7, 0x22, 0xf6, 0xe7, 0x58, 0xa6, 0x14, 0x45,
0xd5, 0xb2, 0x3f, 0xc7, 0xfa, 0x97, 0x1a, 0xcc, 0xb0, 0xfc, 0xf8, 0xd0, 0xb3, 0xf0, 0xee, 0x09,
0xab, 0x89, 0x0c, 0xd7, 0x69, 0x17, 0xa1, 0xac, 0x76, 0x20, 0xb7, 0x14, 0x4e, 0xb0, 0xde, 0x7b,
0x46, 0xa6, 0xc1, 0x96, 0xba, 0x5e, 0xe5, 0xac, 0x34, 0xce, 0x8a, 0xff, 0x46, 0xdf, 0x8e, 0xdf,
0xcd, 0xbc, 0x95, 0x1a, 0x57, 0x9c, 0x09, 0xaf, 0x38, 0x63, 0x39, 0x30, 0x4b, 0x53, 0xf7, 0x9c,
0x1d, 0xac, 0x34, 0x05, 0x3f, 0xd8, 0x06, 0x4c, 0x9b, 0x96, 0xe5, 0x63, 0x42, 0xa4, 0x1e, 0xc1,
0x90, 0x7d, 0x39, 0xc4, 0x3e, 0x09, 0x5c, 0x2c, 0x6f, 0x04, 0x43, 0xf4, 0x21, 0x94, 0x54, 0x89,
0x9a, 0x4f, 0x2b, 0x4b, 0xa2, 0x7a, 0xca, 0x26, 0x44, 0xad, 0xd0, 0xbf, 0xca, 0x41, 0x4d, 0x86,
0xf5, 0x9a, 0xcc, 0x53, 0xe3, 0x9d, 0x7d, 0x0d, 0xaa, 0xfb, 0x61, 0x58, 0x8e, 0xbb, 0x6c, 0x88,
0x46, 0x6f, 0x6c, 0xcd, 0x24, 0x87, 0x8f, 0x67, 0xca, 0xc2, 0xa9, 0x32, 0x65, 0xf1, 0xb8, 0xa0,
0xa0, 0xdf, 0x85, 0x4a, 0x84, 0x31, 0x87, 0x33, 0x71, 0xff, 0x20, 0x6d, 0x11, 0x0c, 0xd9, 0x97,
0xbd, 0x88, 0x11, 0xca, 0x2a, 0xd3, 0xb3, 0xba, 0xff, 0xfc, 0x06, 0xa6, 0x06, 0xee, 0x78, 0x87,
0xd8, 0x3f, 0x3a, 0xfd, 0xd5, 0xce, 0x9d, 0xc8, 0x19, 0x67, 0x6c, 0x43, 0xd4, 0x02, 0x74, 0x27,
0xd4, 0x33, 0x9f, 0xd6, 0xd9, 0x46, 0xa1, 0x5d, 0x9e, 0x50, 0xb8, 0x95, 0xdf, 0x88, 0x4b, 0xaa,
0xf8, 0x56, 0x4e, 0x9a, 0x3d, 0x5f, 0x48, 0x75, 0xab, 0xff, 0x4e, 0x83, 0x6f, 0x6c, 0x60, 0xfa,
0x20, 0xde, 0xf8, 0xbd, 0x6e, 0xad, 0x1c, 0x68, 0xa6, 0x29, 0x75, 0x9a, 0x53, 0x6f, 0x42, 0x89,
0x04, 0xdd, 0xb0, 0xb8, 0x3e, 0x54, 0x63, 0xfd, 0x67, 0x1a, 0x34, 0xa4, 0x14, 0x2e, 0x93, 0x15,
0x6e, 0x3d, 0x4c, 0xb1, 0xf5, 0xaa, 0xdb, 0xb3, 0x3f, 0x68, 0x50, 0x8f, 0x82, 0x20, 0xc7, 0xb1,
0xf7, 0xa1, 0xc8, 0xbb, 0x60, 0xa9, 0xc1, 0x44, 0x67, 0x15, 0xd4, 0x2c, 0xa2, 0x78, 0x31, 0xb1,
0x4b, 0x02, 0x90, 0x93, 0xc3, 0x10, 0x89, 0xf3, 0xc7, 0x46, 0x62, 0xfd, 0x57, 0x39, 0x68, 0x84,
0x75, 0xed, 0x2b, 0x07, 0xbb, 0x11, 0x55, 0x4f, 0xfe, 0x05, 0x55, 0x3d, 0x85, 0x63, 0x03, 0xdc,
0xbf, 0x72, 0xac, 0xa1, 0x0e, 0xec, 0xb1, 0xd3, 0x33, 0x5d, 0x34, 0x0f, 0x53, 0xfd, 0x9e, 0x19,
0xde, 0x2a, 0xc9, 0x11, 0x6a, 0x41, 0x8d, 0xc4, 0xec, 0x25, 0x2d, 0xf0, 0x6e, 0x9a, 0xfd, 0x47,
0x98, 0xd8, 0x48, 0xb0, 0x60, 0x0d, 0x83, 0x28, 0x39, 0x79, 0xdf, 0x27, 0x53, 0xb3, 0x38, 0x68,
0xd6, 0xf2, 0xdd, 0x00, 0xc4, 0x3e, 0x78, 0x03, 0xda, 0xb6, 0xdd, 0x36, 0xc1, 0x1d, 0xcf, 0xb5,
0x08, 0xaf, 0x37, 0x8a, 0x46, 0x5d, 0x7e, 0xd9, 0x74, 0x5b, 0x62, 0x1e, 0xbd, 0x0f, 0x05, 0x7a,
0xd4, 0x17, 0x95, 0x46, 0x2d, 0x15, 0xd9, 0x42, 0xbd, 0x76, 0x8f, 0xfa, 0xd8, 0xe0, 0xe4, 0xac,
0xe5, 0x67, 0xac, 0xa8, 0x6f, 0x1e, 0xe2, 0x5e, 0xf0, 0x1e, 0x16, 0xce, 0x30, 0x4f, 0x0c, 0x5a,
0xe7, 0x69, 0x91, 0x88, 0xe5, 0x50, 0xff, 0x67, 0x0e, 0xea, 0x21, 0x4b, 0x03, 0x93, 0x41, 0x8f,
0x8e, 0xb4, 0xdf, 0xf8, 0x76, 0x61, 0x52, 0x1a, 0xfc, 0x18, 0x2a, 0xb2, 0x8d, 0x3f, 0x46, 0x22,
0x04, 0xb1, 0x64, 0x6b, 0x8c, 0xeb, 0x15, 0x5f, 0x90, 0xeb, 0x4d, 0x1d, 0xdb, 0xf5, 0x5a, 0x30,
0x1f, 0x80, 0x56, 0x28, 0x69, 0x1b, 0x53, 0x73, 0x4c, 0x9a, 0xbd, 0x0c, 0x15, 0x91, 0x8c, 0x44,
0xe1, 0x29, 0x4a, 0x3d, 0xd8, 0x53, 0x4d, 0x90, 0xfe, 0x63, 0x38, 0xc7, 0x83, 0x3e, 0x79, 0xdd,
0x97, 0xe5, 0xc2, 0x54, 0x57, 0x85, 0x24, 0x2b, 0x1a, 0x83, 0x44, 0x1e, 0x9b, 0xd3, 0xb7, 0xe0,
0x8d, 0x04, 0xff, 0x53, 0x80, 0xfa, 0xf5, 0x5b, 0x30, 0x37, 0x84, 0x54, 0xa8, 0x06, 0xf0, 0x89,
0xdb, 0x91, 0x10, 0x5e, 0x3f, 0x83, 0xaa, 0x50, 0x0a, 0x00, 0xbd, 0xae, 0x5d, 0x6f, 0x45, 0xe3,
0x95, 0x39, 0x31, 0x3a, 0x0f, 0x67, 0x3f, 0x71, 0x2d, 0xbc, 0x6f, 0xbb, 0xd8, 0x0a, 0x3f, 0xd5,
0xcf, 0xa0, 0xb3, 0x30, 0xbb, 0xe9, 0xba, 0xd8, 0x8f, 0x4c, 0x6a, 0x6c, 0x72, 0x1b, 0xfb, 0x5d,
0x1c, 0x99, 0xcc, 0xad, 0xfe, 0x6d, 0x0e, 0xca, 0xac, 0xf6, 0xbc, 0xe7, 0x79, 0xbe, 0x85, 0xfa,
0x80, 0xf8, 0xeb, 0x82, 0xd3, 0xf7, 0x5c, 0xf5, 0x0c, 0x87, 0x6e, 0x8e, 0x68, 0x63, 0x86, 0x49,
0xa5, 0xcd, 0x9b, 0x57, 0x47, 0xac, 0x48, 0x90, 0xeb, 0x67, 0x90, 0xc3, 0x25, 0xb2, 0x88, 0xdf,
0xb5, 0x3b, 0x8f, 0x83, 0x2b, 0xa9, 0x31, 0x12, 0x13, 0xa4, 0x81, 0xc4, 0xc4, 0xeb, 0x9e, 0x1c,
0x88, 0x27, 0xa0, 0xe0, 0xa4, 0xf4, 0x33, 0xe8, 0x09, 0x9c, 0xdb, 0xc0, 0x34, 0xbc, 0xf5, 0x0f,
0x04, 0xae, 0x8e, 0x16, 0x38, 0x44, 0x7c, 0x4c, 0x91, 0x5b, 0x50, 0xe4, 0xa9, 0x19, 0xa5, 0x45,
0x48, 0xf4, 0xbf, 0x28, 0xcd, 0xc5, 0xd1, 0x04, 0x8a, 0xdb, 0x4f, 0x60, 0x36, 0xf1, 0xd6, 0x8e,
0xde, 0x49, 0x59, 0x96, 0xfe, 0xaf, 0x89, 0xe6, 0xf5, 0x2c, 0xa4, 0x4a, 0x56, 0x17, 0x6a, 0xf1,
0xb7, 0x09, 0xb4, 0x94, 0xb2, 0x3e, 0xf5, 0x9d, 0xb4, 0xf9, 0x4e, 0x06, 0x4a, 0x25, 0xc8, 0x81,
0x7a, 0xf2, 0xed, 0x17, 0x5d, 0x1f, 0xcb, 0x20, 0xee, 0x6e, 0xef, 0x66, 0xa2, 0x55, 0xe2, 0x8e,
0xb8, 0x13, 0x0c, 0xbd, 0x3d, 0xa2, 0xe5, 0x74, 0x36, 0xa3, 0x1e, 0x45, 0x9b, 0x2b, 0x99, 0xe9,
0x95, 0xe8, 0x2f, 0x45, 0x4b, 0x90, 0xf6, 0x7e, 0x87, 0x6e, 0xa5, 0xb3, 0x1b, 0xf3, 0xf0, 0xd8,
0x5c, 0x3d, 0xce, 0x12, 0xa5, 0xc4, 0x17, 0xbc, 0x96, 0x4f, 0x79, 0x03, 0x4b, 0xc6, 0x5d, 0xc0,
0x6f, 0xf4, 0xe3, 0x5e, 0xf3, 0xd6, 0x31, 0x56, 0x28, 0x05, 0xbc, 0xe4, 0xeb, 0x7a, 0x10, 0x86,
0x2b, 0x13, 0xbd, 0xe6, 0x64, 0x31, 0xf8, 0x19, 0xcc, 0x26, 0xee, 0xfe, 0x52, 0xa3, 0x26, 0xfd,
0x7e, 0xb0, 0x39, 0x0e, 0xd0, 0x45, 0x48, 0x26, 0x5a, 0x23, 0x34, 0xc2, 0xfb, 0x53, 0xda, 0xa7,
0xe6, 0xf5, 0x2c, 0xa4, 0x6a, 0x23, 0x84, 0xc3, 0x65, 0xa2, 0xbd, 0x40, 0x37, 0xd2, 0x79, 0xa4,
0xb7, 0x46, 0xcd, 0xf7, 0x32, 0x52, 0x2b, 0xa1, 0x6d, 0x80, 0x0d, 0x4c, 0xb7, 0x31, 0xf5, 0x99,
0x8f, 0x5c, 0x4d, 0x35, 0x79, 0x48, 0x10, 0x88, 0xb9, 0x36, 0x91, 0x4e, 0x09, 0xf8, 0x21, 0xa0,
0x20, 0xcf, 0x45, 0x6e, 0x9e, 0xdf, 0x1c, 0x5b, 0xc5, 0x89, 0x92, 0x6b, 0xd2, 0xd9, 0x3c, 0x81,
0xfa, 0xb6, 0xe9, 0x0e, 0xcc, 0x5e, 0x84, 0xef, 0x8d, 0x54, 0xc5, 0x92, 0x64, 0x23, 0xac, 0x35,
0x92, 0x5a, 0x6d, 0xe6, 0xa9, 0xca, 0xa1, 0xa6, 0x0a, 0x41, 0x9c, 0xc4, 0x96, 0xd0, 0x1a, 0x09,
0xc2, 0x11, 0xd8, 0x32, 0x86, 0x5e, 0x09, 0x7e, 0xae, 0xf1, 0xff, 0x70, 0x24, 0x08, 0x1e, 0xd9,
0xf4, 0x80, 0x15, 0xf7, 0x24, 0x8b, 0x0a, 0x9c, 0xf0, 0x18, 0x2a, 0x48, 0x7a, 0xa5, 0x82, 0x05,
0x33, 0xb1, 0x1a, 0x09, 0xa5, 0x5d, 0x1f, 0xa7, 0x55, 0x69, 0xcd, 0xa5, 0xc9, 0x84, 0x81, 0x94,
0xd5, 0xff, 0x15, 0xa0, 0x14, 0xdc, 0x97, 0xbd, 0x86, 0x92, 0xe5, 0x35, 0xd4, 0x10, 0x9f, 0xc1,
0x6c, 0xe2, 0x31, 0x3b, 0x15, 0x62, 0xd2, 0x1f, 0xbc, 0x27, 0xc5, 0xc8, 0x23, 0xf9, 0xbf, 0x54,
0x05, 0x27, 0xd7, 0x46, 0xd5, 0x21, 0x49, 0x24, 0x99, 0xc0, 0xf8, 0xa5, 0xe3, 0xc6, 0x43, 0x80,
0x48, 0x5c, 0x8f, 0xef, 0xfa, 0x98, 0xab, 0x4e, 0x50, 0x78, 0xed, 0xf6, 0x8f, 0x6e, 0x75, 0x6d,
0x7a, 0x30, 0xd8, 0x63, 0x5f, 0x56, 0x04, 0xe9, 0x7b, 0xb6, 0x27, 0x7f, 0xad, 0x04, 0x27, 0xba,
0xc2, 0x57, 0xaf, 0x30, 0x01, 0xfd, 0xbd, 0xbd, 0x29, 0x3e, 0xba, 0xfd, 0x75, 0x00, 0x00, 0x00,
0xff, 0xff, 0x0f, 0x73, 0x18, 0x5f, 0xb9, 0x2c, 0x00, 0x00,
// 2622 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdf, 0x6f, 0x1b, 0xc7,
0xf1, 0xf7, 0xf1, 0x87, 0x44, 0x0e, 0x29, 0x8a, 0x5e, 0x3b, 0x32, 0xbf, 0x8c, 0x23, 0xcb, 0x97,
0xc4, 0x96, 0x1d, 0x47, 0xb2, 0xe5, 0x6f, 0xd0, 0xa0, 0x4e, 0x1a, 0x58, 0x96, 0xad, 0x0a, 0x95,
0x5c, 0xf5, 0xa8, 0xc4, 0x45, 0x03, 0x94, 0x38, 0xf1, 0x56, 0xd4, 0xd5, 0xbc, 0x3b, 0xfa, 0x76,
0x29, 0x5b, 0x79, 0x89, 0x91, 0x02, 0x05, 0x5a, 0xb4, 0x4d, 0x8b, 0x3e, 0xb6, 0x40, 0x8b, 0x3e,
0x15, 0xe8, 0x4b, 0x51, 0xa0, 0x2f, 0xed, 0x3f, 0x50, 0xb4, 0xef, 0xfd, 0x37, 0xfa, 0x2f, 0x14,
0xfb, 0xe3, 0xf6, 0x7e, 0xf0, 0x48, 0x1e, 0x25, 0xff, 0x78, 0xe3, 0xee, 0xcd, 0xce, 0xcc, 0xce,
0xce, 0x7c, 0x66, 0x66, 0x97, 0x50, 0xb7, 0x4c, 0x6a, 0xb6, 0x3b, 0x9e, 0xe7, 0x5b, 0x2b, 0x7d,
0xdf, 0xa3, 0x1e, 0x3a, 0xeb, 0xd8, 0xbd, 0xa3, 0x01, 0x11, 0xa3, 0x15, 0xf6, 0xb9, 0x59, 0xed,
0x78, 0x8e, 0xe3, 0xb9, 0x62, 0xaa, 0x59, 0xb3, 0x5d, 0x8a, 0x7d, 0xd7, 0xec, 0xc9, 0x71, 0x35,
0xba, 0xa0, 0x59, 0x25, 0x9d, 0x43, 0xec, 0x98, 0x62, 0xa4, 0x3f, 0x83, 0xea, 0x83, 0xde, 0x80,
0x1c, 0x1a, 0xf8, 0xc9, 0x00, 0x13, 0x8a, 0x6e, 0x42, 0x61, 0xdf, 0x24, 0xb8, 0xa1, 0x2d, 0x69,
0xcb, 0x95, 0xb5, 0x8b, 0x2b, 0x31, 0x59, 0x52, 0xca, 0x0e, 0xe9, 0xae, 0x9b, 0x04, 0x1b, 0x9c,
0x12, 0x21, 0x28, 0x58, 0xfb, 0x5b, 0x1b, 0x8d, 0xdc, 0x92, 0xb6, 0x9c, 0x37, 0xf8, 0x6f, 0xa4,
0x43, 0xb5, 0xe3, 0xf5, 0x7a, 0xb8, 0x43, 0x6d, 0xcf, 0xdd, 0xda, 0x68, 0x14, 0xf8, 0xb7, 0xd8,
0x9c, 0xfe, 0x3b, 0x0d, 0xe6, 0xa4, 0x68, 0xd2, 0xf7, 0x5c, 0x82, 0xd1, 0x6d, 0x98, 0x21, 0xd4,
0xa4, 0x03, 0x22, 0xa5, 0xbf, 0x99, 0x2a, 0xbd, 0xc5, 0x49, 0x0c, 0x49, 0x9a, 0x49, 0x7c, 0x7e,
0x58, 0x3c, 0x5a, 0x04, 0x20, 0xb8, 0xeb, 0x60, 0x97, 0x6e, 0x6d, 0x90, 0x46, 0x61, 0x29, 0xbf,
0x9c, 0x37, 0x22, 0x33, 0xfa, 0xaf, 0x35, 0xa8, 0xb7, 0x82, 0x61, 0x60, 0x9d, 0xf3, 0x50, 0xec,
0x78, 0x03, 0x97, 0x72, 0x05, 0xe7, 0x0c, 0x31, 0x40, 0x97, 0xa1, 0xda, 0x39, 0x34, 0x5d, 0x17,
0xf7, 0xda, 0xae, 0xe9, 0x60, 0xae, 0x4a, 0xd9, 0xa8, 0xc8, 0xb9, 0x87, 0xa6, 0x83, 0x33, 0x69,
0xb4, 0x04, 0x95, 0xbe, 0xe9, 0x53, 0x3b, 0x66, 0xb3, 0xe8, 0x94, 0xfe, 0x07, 0x0d, 0x16, 0xee,
0x12, 0x62, 0x77, 0xdd, 0x21, 0xcd, 0x16, 0x60, 0xc6, 0xf5, 0x2c, 0xbc, 0xb5, 0xc1, 0x55, 0xcb,
0x1b, 0x72, 0x84, 0xde, 0x84, 0x72, 0x1f, 0x63, 0xbf, 0xed, 0x7b, 0xbd, 0x40, 0xb1, 0x12, 0x9b,
0x30, 0xbc, 0x1e, 0x46, 0xdf, 0x83, 0xb3, 0x24, 0xc1, 0x88, 0x34, 0xf2, 0x4b, 0xf9, 0xe5, 0xca,
0xda, 0xdb, 0x2b, 0x43, 0x5e, 0xb6, 0x92, 0x14, 0x6a, 0x0c, 0xaf, 0xd6, 0x9f, 0xe7, 0xe0, 0x9c,
0xa2, 0x13, 0xba, 0xb2, 0xdf, 0xcc, 0x72, 0x04, 0x77, 0x95, 0x7a, 0x62, 0x90, 0xc5, 0x72, 0xca,
0xe4, 0xf9, 0xa8, 0xc9, 0x33, 0x38, 0x58, 0xd2, 0x9e, 0xc5, 0x21, 0x7b, 0xa2, 0x4b, 0x50, 0xc1,
0xcf, 0xfa, 0xb6, 0x8f, 0xdb, 0xd4, 0x76, 0x70, 0x63, 0x66, 0x49, 0x5b, 0x2e, 0x18, 0x20, 0xa6,
0xf6, 0x6c, 0x27, 0xea, 0x91, 0xb3, 0x99, 0x3d, 0x52, 0xff, 0xa3, 0x06, 0x17, 0x86, 0x4e, 0x49,
0xba, 0xb8, 0x01, 0x75, 0xbe, 0xf3, 0xd0, 0x32, 0xcc, 0xd9, 0x99, 0xc1, 0xaf, 0x8c, 0x33, 0x78,
0x48, 0x6e, 0x0c, 0xad, 0x8f, 0x28, 0x99, 0xcb, 0xae, 0xe4, 0x63, 0xb8, 0xb0, 0x89, 0xa9, 0x14,
0xc0, 0xbe, 0x61, 0x72, 0x72, 0x08, 0x88, 0xc7, 0x52, 0x6e, 0x28, 0x96, 0xfe, 0x92, 0x53, 0xb1,
0xc4, 0x45, 0x6d, 0xb9, 0x07, 0x1e, 0xba, 0x08, 0x65, 0x45, 0x22, 0xbd, 0x22, 0x9c, 0x40, 0xdf,
0x80, 0x22, 0xd3, 0x54, 0xb8, 0x44, 0x6d, 0xed, 0x72, 0xfa, 0x9e, 0x22, 0x3c, 0x0d, 0x41, 0x8f,
0xb6, 0xa0, 0x46, 0xa8, 0xe9, 0xd3, 0x76, 0xdf, 0x23, 0xfc, 0x9c, 0xb9, 0xe3, 0x54, 0xd6, 0xf4,
0x38, 0x07, 0x05, 0x91, 0x3b, 0xa4, 0xbb, 0x2b, 0x29, 0x8d, 0x39, 0xbe, 0x32, 0x18, 0xa2, 0xfb,
0x50, 0xc5, 0xae, 0x15, 0x32, 0x2a, 0x64, 0x66, 0x54, 0xc1, 0xae, 0xa5, 0xd8, 0x84, 0xe7, 0x53,
0xcc, 0x7e, 0x3e, 0x3f, 0xd7, 0xa0, 0x31, 0x7c, 0x40, 0xa7, 0x01, 0xca, 0x3b, 0x62, 0x11, 0x16,
0x07, 0x34, 0x36, 0xc2, 0xd5, 0x21, 0x19, 0x72, 0x89, 0x6e, 0xc3, 0x1b, 0xa1, 0x36, 0xfc, 0xcb,
0x4b, 0x73, 0x96, 0x1f, 0x6b, 0xb0, 0x90, 0x94, 0x75, 0x9a, 0x7d, 0xff, 0x3f, 0x14, 0x6d, 0xf7,
0xc0, 0x0b, 0xb6, 0xbd, 0x38, 0x26, 0xce, 0x98, 0x2c, 0x41, 0xac, 0x3b, 0xf0, 0xe6, 0x26, 0xa6,
0x5b, 0x2e, 0xc1, 0x3e, 0x5d, 0xb7, 0xdd, 0x9e, 0xd7, 0xdd, 0x35, 0xe9, 0xe1, 0x29, 0x62, 0x24,
0xe6, 0xee, 0xb9, 0x84, 0xbb, 0xeb, 0x7f, 0xd2, 0xe0, 0x62, 0xba, 0x3c, 0xb9, 0xf5, 0x26, 0x94,
0x0e, 0x6c, 0xdc, 0xb3, 0x98, 0xcd, 0x34, 0x6e, 0x33, 0x35, 0x66, 0xb1, 0xd2, 0x67, 0xc4, 0x72,
0x87, 0x97, 0x47, 0x38, 0x68, 0x8b, 0xfa, 0xb6, 0xdb, 0xdd, 0xb6, 0x09, 0x35, 0x04, 0x7d, 0xc4,
0x9e, 0xf9, 0xec, 0x9e, 0xf9, 0x33, 0x0d, 0x16, 0x37, 0x31, 0xbd, 0xa7, 0xa0, 0x96, 0x7d, 0xb7,
0x09, 0xb5, 0x3b, 0xe4, 0xe5, 0x16, 0x11, 0x29, 0x39, 0x53, 0xff, 0x5a, 0x83, 0x4b, 0x23, 0x95,
0x91, 0xa6, 0x93, 0x50, 0x12, 0x00, 0x6d, 0x3a, 0x94, 0x7c, 0x07, 0x1f, 0x7f, 0x66, 0xf6, 0x06,
0x78, 0xd7, 0xb4, 0x7d, 0x01, 0x25, 0x27, 0x04, 0xd6, 0x3f, 0x6b, 0xf0, 0xd6, 0x26, 0xa6, 0xbb,
0x41, 0x9a, 0x79, 0x8d, 0xd6, 0xc9, 0x50, 0x51, 0xfc, 0x52, 0x1c, 0x66, 0xaa, 0xb6, 0xaf, 0xc5,
0x7c, 0x8b, 0x3c, 0x0e, 0x22, 0x01, 0x79, 0x4f, 0xd4, 0x02, 0xd2, 0x78, 0xfa, 0xdf, 0x72, 0x50,
0xfd, 0x4c, 0xd6, 0x07, 0x3c, 0x8d, 0x24, 0xed, 0xa0, 0xa5, 0xdb, 0x21, 0x52, 0x52, 0xa4, 0x55,
0x19, 0x9b, 0x30, 0x47, 0x30, 0x7e, 0x7c, 0x92, 0xa4, 0x51, 0x65, 0x0b, 0x15, 0xd8, 0x6f, 0xc3,
0xd9, 0x81, 0x7b, 0xc0, 0xca, 0x5a, 0x6c, 0xc9, 0x5d, 0x88, 0xea, 0x72, 0x32, 0xf2, 0x0c, 0x2f,
0x44, 0xdf, 0x86, 0xf9, 0x24, 0xaf, 0x62, 0x26, 0x5e, 0xc9, 0x65, 0xfa, 0x4f, 0x35, 0x58, 0x78,
0x64, 0xd2, 0xce, 0xe1, 0x86, 0x23, 0x2d, 0x7a, 0x0a, 0x7f, 0xfc, 0x18, 0xca, 0x47, 0xd2, 0x7a,
0x01, 0xe8, 0x5c, 0x4a, 0x51, 0x28, 0x7a, 0x4e, 0x46, 0xb8, 0x42, 0xff, 0xa7, 0x06, 0xe7, 0x79,
0xe5, 0x1f, 0x68, 0xf7, 0xea, 0x23, 0x63, 0x42, 0xf5, 0x8f, 0xae, 0x40, 0xcd, 0x31, 0xfd, 0xc7,
0xad, 0x90, 0xa6, 0xc8, 0x69, 0x12, 0xb3, 0xfa, 0x33, 0x00, 0x39, 0xda, 0x21, 0xdd, 0x13, 0xe8,
0xff, 0x21, 0xcc, 0x4a, 0xa9, 0x32, 0x48, 0x26, 0x1d, 0x6c, 0x40, 0xae, 0xff, 0x4b, 0x83, 0x5a,
0x08, 0x7b, 0x3c, 0x14, 0x6a, 0x90, 0x53, 0x01, 0x90, 0xdb, 0xda, 0x40, 0x1f, 0xc3, 0x8c, 0xe8,
0xf5, 0x24, 0xef, 0x77, 0xe3, 0xbc, 0x65, 0x1f, 0x18, 0xc1, 0x4e, 0x3e, 0x61, 0xc8, 0x45, 0xcc,
0x46, 0x0a, 0x2a, 0x44, 0x5b, 0x90, 0x37, 0x22, 0x33, 0x68, 0x0b, 0xe6, 0xe3, 0x95, 0x56, 0xe0,
0xe8, 0x4b, 0xa3, 0x20, 0x62, 0xc3, 0xa4, 0x26, 0x47, 0x88, 0x5a, 0xac, 0xd0, 0x22, 0xfa, 0x7f,
0x8b, 0x50, 0x89, 0xec, 0x72, 0x68, 0x27, 0xc9, 0x23, 0xcd, 0x4d, 0x06, 0xbb, 0xfc, 0x70, 0xb9,
0xff, 0x2e, 0xd4, 0x6c, 0x9e, 0x60, 0xdb, 0xd2, 0x15, 0x39, 0x22, 0x96, 0x8d, 0x39, 0x31, 0x2b,
0xe3, 0x02, 0x2d, 0x42, 0xc5, 0x1d, 0x38, 0x6d, 0xef, 0xa0, 0xed, 0x7b, 0x4f, 0x89, 0xec, 0x1b,
0xca, 0xee, 0xc0, 0xf9, 0xee, 0x81, 0xe1, 0x3d, 0x25, 0x61, 0x69, 0x3a, 0x33, 0x65, 0x69, 0xba,
0x08, 0x15, 0xc7, 0x7c, 0xc6, 0xb8, 0xb6, 0xdd, 0x81, 0xc3, 0x5b, 0x8a, 0xbc, 0x51, 0x76, 0xcc,
0x67, 0x86, 0xf7, 0xf4, 0xe1, 0xc0, 0x41, 0xcb, 0x50, 0xef, 0x99, 0x84, 0xb6, 0xa3, 0x3d, 0x49,
0x89, 0xf7, 0x24, 0x35, 0x36, 0x7f, 0x3f, 0xec, 0x4b, 0x86, 0x8b, 0xdc, 0xf2, 0x29, 0x8a, 0x5c,
0xcb, 0xe9, 0x85, 0x8c, 0x20, 0x7b, 0x91, 0x6b, 0x39, 0x3d, 0xc5, 0xe6, 0x43, 0x98, 0xdd, 0xe7,
0x65, 0x0b, 0x69, 0x54, 0x46, 0x22, 0xd4, 0x03, 0x56, 0xb1, 0x88, 0xea, 0xc6, 0x08, 0xc8, 0xd1,
0x47, 0x50, 0xe6, 0xf9, 0x82, 0xaf, 0xad, 0x66, 0x5a, 0x1b, 0x2e, 0x60, 0x50, 0x64, 0xe1, 0x1e,
0x35, 0xf9, 0xea, 0xb9, 0x91, 0x50, 0xb4, 0xc1, 0x68, 0xb6, 0xbd, 0xae, 0x80, 0x22, 0xb5, 0x02,
0xdd, 0x84, 0x73, 0x1d, 0x1f, 0x9b, 0x14, 0x5b, 0xeb, 0xc7, 0xf7, 0x3c, 0xa7, 0x6f, 0x72, 0x6f,
0x6a, 0xd4, 0x96, 0xb4, 0xe5, 0x92, 0x91, 0xf6, 0x89, 0x21, 0x43, 0x47, 0x8d, 0x1e, 0xf8, 0x9e,
0xd3, 0x98, 0x17, 0xc8, 0x10, 0x9f, 0x45, 0x6f, 0x01, 0x58, 0xbe, 0xd7, 0xef, 0x63, 0xab, 0x6d,
0xd2, 0x46, 0x9d, 0x1f, 0x63, 0x59, 0xce, 0xdc, 0xa5, 0xfa, 0x97, 0x70, 0x3e, 0x74, 0x91, 0xc8,
0x71, 0x0c, 0x9f, 0xac, 0x76, 0xd2, 0x93, 0x1d, 0x5f, 0x71, 0xfe, 0xb5, 0x00, 0x0b, 0x2d, 0xf3,
0x08, 0xbf, 0xfc, 0xe2, 0x36, 0x13, 0x20, 0x6f, 0xc3, 0x59, 0x5e, 0xcf, 0xae, 0x45, 0xf4, 0x19,
0x93, 0x37, 0xa3, 0xde, 0x30, 0xbc, 0x10, 0x7d, 0xc2, 0x12, 0x3e, 0xee, 0x3c, 0xde, 0xf5, 0xec,
0x30, 0x67, 0xbe, 0x95, 0xc2, 0xe7, 0x9e, 0xa2, 0x32, 0xa2, 0x2b, 0xd0, 0xee, 0x30, 0xb6, 0xcd,
0x70, 0x26, 0x57, 0xc7, 0x76, 0x4d, 0xa1, 0xf5, 0x93, 0x10, 0x87, 0x1a, 0x30, 0x2b, 0x73, 0x32,
0x0f, 0xfc, 0x92, 0x11, 0x0c, 0xd1, 0x2e, 0x9c, 0x13, 0x3b, 0x68, 0x49, 0xaf, 0x16, 0x9b, 0x2f,
0x65, 0xda, 0x7c, 0xda, 0xd2, 0x78, 0x50, 0x94, 0xa7, 0x0e, 0x8a, 0x06, 0xcc, 0x4a, 0x47, 0xe5,
0x68, 0x50, 0x32, 0x82, 0x21, 0xab, 0xfd, 0x21, 0x34, 0xd9, 0x84, 0x16, 0xfe, 0x5b, 0x50, 0x52,
0x4e, 0x9c, 0xcb, 0xec, 0xc4, 0x6a, 0x4d, 0x12, 0x87, 0xf3, 0x09, 0x1c, 0xd6, 0xff, 0xad, 0x41,
0x35, 0xba, 0x05, 0x86, 0xef, 0x3e, 0xee, 0x78, 0xbe, 0xd5, 0xc6, 0x2e, 0xf5, 0x6d, 0x2c, 0xda,
0xc4, 0x82, 0x31, 0x27, 0x66, 0xef, 0x8b, 0x49, 0x46, 0xc6, 0xa0, 0x95, 0x50, 0xd3, 0xe9, 0xb7,
0x0f, 0x58, 0x04, 0xe7, 0x04, 0x99, 0x9a, 0xe5, 0x01, 0x7c, 0x19, 0xaa, 0x21, 0x19, 0xf5, 0xb8,
0xfc, 0x82, 0x51, 0x51, 0x73, 0x7b, 0x1e, 0x7a, 0x07, 0x6a, 0xdc, 0x6a, 0xed, 0x9e, 0xd7, 0x6d,
0xb3, 0x96, 0x4a, 0x26, 0x94, 0xaa, 0x25, 0xd5, 0x62, 0xc7, 0x11, 0xa7, 0x22, 0xf6, 0x17, 0x58,
0xa6, 0x14, 0x45, 0xd5, 0xb2, 0xbf, 0xc0, 0xfa, 0x57, 0x1a, 0xcc, 0xb1, 0xfc, 0xf8, 0xd0, 0xb3,
0xf0, 0xde, 0x09, 0xab, 0x89, 0x0c, 0xd7, 0x69, 0x17, 0xa1, 0xac, 0x76, 0x20, 0xb7, 0x14, 0x4e,
0xb0, 0xde, 0x7b, 0x4e, 0xa6, 0xc1, 0x96, 0xba, 0x5e, 0xe5, 0xac, 0x34, 0xce, 0x8a, 0xff, 0x46,
0xdf, 0x8c, 0xdf, 0xcd, 0xbc, 0x93, 0x1a, 0x57, 0x9c, 0x09, 0xaf, 0x38, 0x63, 0x39, 0x30, 0x4b,
0x53, 0xf7, 0x9c, 0x1d, 0xac, 0x34, 0x05, 0x3f, 0xd8, 0x06, 0xcc, 0x9a, 0x96, 0xe5, 0x63, 0x42,
0xa4, 0x1e, 0xc1, 0x90, 0x7d, 0x39, 0xc2, 0x3e, 0x09, 0x5c, 0x2c, 0x6f, 0x04, 0x43, 0xf4, 0x11,
0x94, 0x54, 0x89, 0x9a, 0x4f, 0x2b, 0x4b, 0xa2, 0x7a, 0xca, 0x26, 0x44, 0xad, 0xd0, 0xbf, 0xce,
0x41, 0x4d, 0x86, 0xf5, 0xba, 0xcc, 0x53, 0xe3, 0x9d, 0x7d, 0x1d, 0xaa, 0x07, 0x61, 0x58, 0x8e,
0xbb, 0x6c, 0x88, 0x46, 0x6f, 0x6c, 0xcd, 0x24, 0x87, 0x8f, 0x67, 0xca, 0xc2, 0xa9, 0x32, 0x65,
0x71, 0x5a, 0x50, 0xd0, 0xef, 0x42, 0x25, 0xc2, 0x98, 0xc3, 0x99, 0xb8, 0x7f, 0x90, 0xb6, 0x08,
0x86, 0xec, 0xcb, 0x7e, 0xc4, 0x08, 0x65, 0x95, 0xe9, 0x59, 0xdd, 0x7f, 0x61, 0x13, 0x53, 0x03,
0x77, 0xbc, 0x23, 0xec, 0x1f, 0x9f, 0xfe, 0x6a, 0xe7, 0x4e, 0xe4, 0x8c, 0x33, 0xb6, 0x21, 0x6a,
0x01, 0xba, 0x13, 0xea, 0x99, 0x4f, 0xeb, 0x6c, 0xa3, 0xd0, 0x2e, 0x4f, 0x28, 0xdc, 0xca, 0xaf,
0xc4, 0x25, 0x55, 0x7c, 0x2b, 0x27, 0xcd, 0x9e, 0x2f, 0xa4, 0xba, 0xd5, 0x7f, 0xa3, 0xc1, 0xff,
0x6d, 0x62, 0xfa, 0x20, 0xde, 0xf8, 0xbd, 0x6e, 0xad, 0x1c, 0x68, 0xa6, 0x29, 0x75, 0x9a, 0x53,
0x6f, 0x42, 0x89, 0x04, 0xdd, 0xb0, 0xb8, 0x3e, 0x54, 0x63, 0xfd, 0x27, 0x1a, 0x34, 0xa4, 0x14,
0x2e, 0x93, 0x15, 0x6e, 0x3d, 0x4c, 0xb1, 0xf5, 0xaa, 0xdb, 0xb3, 0xdf, 0x6b, 0x50, 0x8f, 0x82,
0x20, 0xc7, 0xb1, 0x0f, 0xa0, 0xc8, 0xbb, 0x60, 0xa9, 0xc1, 0x44, 0x67, 0x15, 0xd4, 0x2c, 0xa2,
0x78, 0x31, 0xb1, 0x47, 0x02, 0x90, 0x93, 0xc3, 0x10, 0x89, 0xf3, 0x53, 0x23, 0xb1, 0xfe, 0x8b,
0x1c, 0x34, 0xc2, 0xba, 0xf6, 0x95, 0x83, 0xdd, 0x88, 0xaa, 0x27, 0xff, 0x82, 0xaa, 0x9e, 0xc2,
0xd4, 0x00, 0xf7, 0x8f, 0x1c, 0x6b, 0xa8, 0x03, 0x7b, 0xec, 0xf6, 0x4c, 0x17, 0x2d, 0xc0, 0x4c,
0xbf, 0x67, 0x86, 0xb7, 0x4a, 0x72, 0x84, 0x5a, 0x50, 0x23, 0x31, 0x7b, 0x49, 0x0b, 0xbc, 0x97,
0x66, 0xff, 0x11, 0x26, 0x36, 0x12, 0x2c, 0x58, 0xc3, 0x20, 0x4a, 0x4e, 0xde, 0xf7, 0xc9, 0xd4,
0x2c, 0x0e, 0x9a, 0xb5, 0x7c, 0x37, 0x00, 0xb1, 0x0f, 0xde, 0x80, 0xb6, 0x6d, 0xb7, 0x4d, 0x70,
0xc7, 0x73, 0x2d, 0xc2, 0xeb, 0x8d, 0xa2, 0x51, 0x97, 0x5f, 0xb6, 0xdc, 0x96, 0x98, 0x47, 0x1f,
0x40, 0x81, 0x1e, 0xf7, 0x45, 0xa5, 0x51, 0x4b, 0x45, 0xb6, 0x50, 0xaf, 0xbd, 0xe3, 0x3e, 0x36,
0x38, 0x39, 0x6b, 0xf9, 0x19, 0x2b, 0xea, 0x9b, 0x47, 0xb8, 0x17, 0xbc, 0x87, 0x85, 0x33, 0xcc,
0x13, 0x83, 0xd6, 0x79, 0x56, 0x24, 0x62, 0x39, 0xd4, 0xff, 0x9e, 0x83, 0x7a, 0xc8, 0xd2, 0xc0,
0x64, 0xd0, 0xa3, 0x23, 0xed, 0x37, 0xbe, 0x5d, 0x98, 0x94, 0x06, 0x3f, 0x81, 0x8a, 0x6c, 0xe3,
0xa7, 0x48, 0x84, 0x20, 0x96, 0x6c, 0x8f, 0x71, 0xbd, 0xe2, 0x0b, 0x72, 0xbd, 0x99, 0xa9, 0x5d,
0xaf, 0x05, 0x0b, 0x01, 0x68, 0x85, 0x92, 0x76, 0x30, 0x35, 0xc7, 0xa4, 0xd9, 0x4b, 0x50, 0x11,
0xc9, 0x48, 0x14, 0x9e, 0xa2, 0xd4, 0x83, 0x7d, 0xd5, 0x04, 0xe9, 0x3f, 0x84, 0xf3, 0x3c, 0xe8,
0x93, 0xd7, 0x7d, 0x59, 0x2e, 0x4c, 0x75, 0x55, 0x48, 0xb2, 0xa2, 0x31, 0x48, 0xe4, 0xb1, 0x39,
0x7d, 0x1b, 0xde, 0x48, 0xf0, 0x3f, 0x05, 0xa8, 0x5f, 0xbf, 0x05, 0x67, 0x87, 0x90, 0x0a, 0xd5,
0x00, 0x3e, 0x75, 0x3b, 0x12, 0xc2, 0xeb, 0x67, 0x50, 0x15, 0x4a, 0x01, 0xa0, 0xd7, 0xb5, 0xeb,
0xad, 0x68, 0xbc, 0x32, 0x27, 0x46, 0x17, 0xe0, 0xdc, 0xa7, 0xae, 0x85, 0x0f, 0x6c, 0x17, 0x5b,
0xe1, 0xa7, 0xfa, 0x19, 0x74, 0x0e, 0xe6, 0xb7, 0x5c, 0x17, 0xfb, 0x91, 0x49, 0x8d, 0x4d, 0xee,
0x60, 0xbf, 0x8b, 0x23, 0x93, 0xb9, 0xb5, 0xdf, 0x22, 0x28, 0xb3, 0xda, 0xf3, 0x9e, 0xe7, 0xf9,
0x16, 0xea, 0x03, 0xe2, 0xaf, 0x0b, 0x4e, 0xdf, 0x73, 0xd5, 0x33, 0x1c, 0xba, 0x39, 0xa2, 0x8d,
0x19, 0x26, 0x95, 0x36, 0x6f, 0x5e, 0x19, 0xb1, 0x22, 0x41, 0xae, 0x9f, 0x41, 0x0e, 0x97, 0xc8,
0x22, 0x7e, 0xcf, 0xee, 0x3c, 0x0e, 0xae, 0xa4, 0xc6, 0x48, 0x4c, 0x90, 0x06, 0x12, 0x13, 0xaf,
0x7b, 0x72, 0x20, 0x9e, 0x80, 0x82, 0x93, 0xd2, 0xcf, 0xa0, 0x27, 0x70, 0x7e, 0x13, 0xd3, 0xf0,
0xd6, 0x3f, 0x10, 0xb8, 0x36, 0x5a, 0xe0, 0x10, 0xf1, 0x94, 0x22, 0xb7, 0xa1, 0xc8, 0x53, 0x33,
0x4a, 0x8b, 0x90, 0xe8, 0x7f, 0x51, 0x9a, 0x4b, 0xa3, 0x09, 0x14, 0xb7, 0x1f, 0xc1, 0x7c, 0xe2,
0xad, 0x1d, 0x5d, 0x4b, 0x59, 0x96, 0xfe, 0xaf, 0x89, 0xe6, 0xf5, 0x2c, 0xa4, 0x4a, 0x56, 0x17,
0x6a, 0xf1, 0xb7, 0x09, 0xb4, 0x9c, 0xb2, 0x3e, 0xf5, 0x9d, 0xb4, 0x79, 0x2d, 0x03, 0xa5, 0x12,
0xe4, 0x40, 0x3d, 0xf9, 0xf6, 0x8b, 0xae, 0x8f, 0x65, 0x10, 0x77, 0xb7, 0xf7, 0x32, 0xd1, 0x2a,
0x71, 0xc7, 0xdc, 0x09, 0x86, 0xde, 0x1e, 0xd1, 0x4a, 0x3a, 0x9b, 0x51, 0x8f, 0xa2, 0xcd, 0xd5,
0xcc, 0xf4, 0x4a, 0xf4, 0x57, 0xa2, 0x25, 0x48, 0x7b, 0xbf, 0x43, 0xb7, 0xd2, 0xd9, 0x8d, 0x79,
0x78, 0x6c, 0xae, 0x4d, 0xb3, 0x44, 0x29, 0xf1, 0x25, 0xaf, 0xe5, 0x53, 0xde, 0xc0, 0x92, 0x71,
0x17, 0xf0, 0x1b, 0xfd, 0xb8, 0xd7, 0xbc, 0x35, 0xc5, 0x0a, 0xa5, 0x80, 0x97, 0x7c, 0x5d, 0x0f,
0xc2, 0x70, 0x75, 0xa2, 0xd7, 0x9c, 0x2c, 0x06, 0x3f, 0x87, 0xf9, 0xc4, 0xdd, 0x5f, 0x6a, 0xd4,
0xa4, 0xdf, 0x0f, 0x36, 0xc7, 0x01, 0xba, 0x08, 0xc9, 0x44, 0x6b, 0x84, 0x46, 0x78, 0x7f, 0x4a,
0xfb, 0xd4, 0xbc, 0x9e, 0x85, 0x54, 0x6d, 0x84, 0x70, 0xb8, 0x4c, 0xb4, 0x17, 0xe8, 0x46, 0x3a,
0x8f, 0xf4, 0xd6, 0xa8, 0xf9, 0x7e, 0x46, 0x6a, 0x25, 0xb4, 0x0d, 0xb0, 0x89, 0xe9, 0x0e, 0xa6,
0x3e, 0xf3, 0x91, 0x2b, 0xa9, 0x26, 0x0f, 0x09, 0x02, 0x31, 0x57, 0x27, 0xd2, 0x29, 0x01, 0xdf,
0x07, 0x14, 0xe4, 0xb9, 0xc8, 0xcd, 0xf3, 0xdb, 0x63, 0xab, 0x38, 0x51, 0x72, 0x4d, 0x3a, 0x9b,
0x27, 0x50, 0xdf, 0x31, 0xdd, 0x81, 0xd9, 0x8b, 0xf0, 0xbd, 0x91, 0xaa, 0x58, 0x92, 0x6c, 0x84,
0xb5, 0x46, 0x52, 0xab, 0xcd, 0x3c, 0x55, 0x39, 0xd4, 0x54, 0x21, 0x88, 0x93, 0xd8, 0x12, 0x5a,
0x23, 0x41, 0x38, 0x02, 0x5b, 0xc6, 0xd0, 0x2b, 0xc1, 0xcf, 0x35, 0xfe, 0x1f, 0x8e, 0x04, 0xc1,
0x23, 0x9b, 0x1e, 0xb2, 0xe2, 0x9e, 0x64, 0x51, 0x81, 0x13, 0x4e, 0xa1, 0x82, 0xa4, 0x57, 0x2a,
0x58, 0x30, 0x17, 0xab, 0x91, 0x50, 0xda, 0xf5, 0x71, 0x5a, 0x95, 0xd6, 0x5c, 0x9e, 0x4c, 0xa8,
0xa4, 0x1c, 0xc2, 0x5c, 0xe0, 0xaf, 0xc2, 0xb8, 0xd7, 0x46, 0x69, 0x1a, 0xd2, 0x8c, 0x08, 0xb7,
0x74, 0xd2, 0x40, 0xd2, 0xda, 0x7f, 0x0a, 0x50, 0x0a, 0x6e, 0xe6, 0x5e, 0x43, 0x71, 0xf4, 0x1a,
0xaa, 0x95, 0xcf, 0x61, 0x3e, 0xf1, 0x6c, 0x9e, 0x0a, 0x66, 0xe9, 0x4f, 0xeb, 0x93, 0xa2, 0xf1,
0x91, 0xfc, 0x07, 0xac, 0x02, 0xae, 0xab, 0xa3, 0x2a, 0x9e, 0x24, 0x66, 0x4d, 0x60, 0xfc, 0xd2,
0x11, 0xea, 0x21, 0x40, 0x04, 0x41, 0xc6, 0xf7, 0x97, 0x2c, 0x28, 0x26, 0x28, 0xbc, 0x7e, 0xfb,
0x07, 0xb7, 0xba, 0x36, 0x3d, 0x1c, 0xec, 0xb3, 0x2f, 0xab, 0x82, 0xf4, 0x7d, 0xdb, 0x93, 0xbf,
0x56, 0x83, 0x13, 0x5d, 0xe5, 0xab, 0x57, 0x99, 0x80, 0xfe, 0xfe, 0xfe, 0x0c, 0x1f, 0xdd, 0xfe,
0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x63, 0x69, 0x6e, 0x23, 0x2d, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3010,6 +3011,7 @@ type DataCoordClient interface {
GetCompactionState(ctx context.Context, in *milvuspb.GetCompactionStateRequest, opts ...grpc.CallOption) (*milvuspb.GetCompactionStateResponse, error)
GetCompactionStateWithPlans(ctx context.Context, in *milvuspb.GetCompactionPlansRequest, opts ...grpc.CallOption) (*milvuspb.GetCompactionPlansResponse, error)
WatchChannels(ctx context.Context, in *WatchChannelsRequest, opts ...grpc.CallOption) (*WatchChannelsResponse, error)
GetFlushState(ctx context.Context, in *milvuspb.GetFlushStateRequest, opts ...grpc.CallOption) (*milvuspb.GetFlushStateResponse, error)
}
type dataCoordClient struct {
@ -3200,6 +3202,15 @@ func (c *dataCoordClient) WatchChannels(ctx context.Context, in *WatchChannelsRe
return out, nil
}
func (c *dataCoordClient) GetFlushState(ctx context.Context, in *milvuspb.GetFlushStateRequest, opts ...grpc.CallOption) (*milvuspb.GetFlushStateResponse, error) {
out := new(milvuspb.GetFlushStateResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.data.DataCoord/GetFlushState", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// DataCoordServer is the server API for DataCoord service.
type DataCoordServer interface {
GetComponentStates(context.Context, *internalpb.GetComponentStatesRequest) (*internalpb.ComponentStates, error)
@ -3223,6 +3234,7 @@ type DataCoordServer interface {
GetCompactionState(context.Context, *milvuspb.GetCompactionStateRequest) (*milvuspb.GetCompactionStateResponse, error)
GetCompactionStateWithPlans(context.Context, *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error)
WatchChannels(context.Context, *WatchChannelsRequest) (*WatchChannelsResponse, error)
GetFlushState(context.Context, *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error)
}
// UnimplementedDataCoordServer can be embedded to have forward compatible implementations.
@ -3289,6 +3301,9 @@ func (*UnimplementedDataCoordServer) GetCompactionStateWithPlans(ctx context.Con
func (*UnimplementedDataCoordServer) WatchChannels(ctx context.Context, req *WatchChannelsRequest) (*WatchChannelsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method WatchChannels not implemented")
}
func (*UnimplementedDataCoordServer) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetFlushState not implemented")
}
func RegisterDataCoordServer(s *grpc.Server, srv DataCoordServer) {
s.RegisterService(&_DataCoord_serviceDesc, srv)
@ -3654,6 +3669,24 @@ func _DataCoord_WatchChannels_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _DataCoord_GetFlushState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(milvuspb.GetFlushStateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(DataCoordServer).GetFlushState(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.data.DataCoord/GetFlushState",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(DataCoordServer).GetFlushState(ctx, req.(*milvuspb.GetFlushStateRequest))
}
return interceptor(ctx, in, info, handler)
}
var _DataCoord_serviceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.data.DataCoord",
HandlerType: (*DataCoordServer)(nil),
@ -3738,6 +3771,10 @@ var _DataCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "WatchChannels",
Handler: _DataCoord_WatchChannels_Handler,
},
{
MethodName: "GetFlushState",
Handler: _DataCoord_GetFlushState_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "data_coord.proto",

View File

@ -764,6 +764,15 @@ message CompactionMergeInfo {
int64 target = 2;
}
message GetFlushStateRequest {
repeated int64 segmentIDs = 1;
}
message GetFlushStateResponse {
common.Status status = 1;
bool flushed = 2;
}
service ProxyService {
rpc RegisterLink(RegisterLinkRequest) returns (RegisterLinkResponse) {}
}

View File

@ -4808,6 +4808,92 @@ func (m *CompactionMergeInfo) GetTarget() int64 {
return 0
}
type GetFlushStateRequest struct {
SegmentIDs []int64 `protobuf:"varint,1,rep,packed,name=segmentIDs,proto3" json:"segmentIDs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetFlushStateRequest) Reset() { *m = GetFlushStateRequest{} }
func (m *GetFlushStateRequest) String() string { return proto.CompactTextString(m) }
func (*GetFlushStateRequest) ProtoMessage() {}
func (*GetFlushStateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{74}
}
func (m *GetFlushStateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFlushStateRequest.Unmarshal(m, b)
}
func (m *GetFlushStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetFlushStateRequest.Marshal(b, m, deterministic)
}
func (m *GetFlushStateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetFlushStateRequest.Merge(m, src)
}
func (m *GetFlushStateRequest) XXX_Size() int {
return xxx_messageInfo_GetFlushStateRequest.Size(m)
}
func (m *GetFlushStateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetFlushStateRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetFlushStateRequest proto.InternalMessageInfo
func (m *GetFlushStateRequest) GetSegmentIDs() []int64 {
if m != nil {
return m.SegmentIDs
}
return nil
}
type GetFlushStateResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
Flushed bool `protobuf:"varint,2,opt,name=flushed,proto3" json:"flushed,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetFlushStateResponse) Reset() { *m = GetFlushStateResponse{} }
func (m *GetFlushStateResponse) String() string { return proto.CompactTextString(m) }
func (*GetFlushStateResponse) ProtoMessage() {}
func (*GetFlushStateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{75}
}
func (m *GetFlushStateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetFlushStateResponse.Unmarshal(m, b)
}
func (m *GetFlushStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetFlushStateResponse.Marshal(b, m, deterministic)
}
func (m *GetFlushStateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetFlushStateResponse.Merge(m, src)
}
func (m *GetFlushStateResponse) XXX_Size() int {
return xxx_messageInfo_GetFlushStateResponse.Size(m)
}
func (m *GetFlushStateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetFlushStateResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GetFlushStateResponse proto.InternalMessageInfo
func (m *GetFlushStateResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *GetFlushStateResponse) GetFlushed() bool {
if m != nil {
return m.Flushed
}
return false
}
func init() {
proto.RegisterEnum("milvus.proto.milvus.ShowType", ShowType_name, ShowType_value)
proto.RegisterEnum("milvus.proto.milvus.PlaceholderType", PlaceholderType_name, PlaceholderType_value)
@ -4886,231 +4972,235 @@ func init() {
proto.RegisterType((*GetCompactionPlansRequest)(nil), "milvus.proto.milvus.GetCompactionPlansRequest")
proto.RegisterType((*GetCompactionPlansResponse)(nil), "milvus.proto.milvus.GetCompactionPlansResponse")
proto.RegisterType((*CompactionMergeInfo)(nil), "milvus.proto.milvus.CompactionMergeInfo")
proto.RegisterType((*GetFlushStateRequest)(nil), "milvus.proto.milvus.GetFlushStateRequest")
proto.RegisterType((*GetFlushStateResponse)(nil), "milvus.proto.milvus.GetFlushStateResponse")
}
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
var fileDescriptor_02345ba45cc0e303 = []byte{
// 3498 bytes of a gzipped FileDescriptorProto
// 3530 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3b, 0x4d, 0x73, 0x1b, 0xc7,
0xb1, 0x5c, 0x80, 0x24, 0x80, 0x06, 0x40, 0x42, 0x43, 0x8a, 0x82, 0xa0, 0x2f, 0x6a, 0x6d, 0x59,
0x94, 0x64, 0x49, 0x16, 0x65, 0x3f, 0xfb, 0xc9, 0xef, 0x3d, 0x5b, 0x12, 0x9f, 0x25, 0x96, 0x25,
0x3d, 0x7a, 0x69, 0xfb, 0x95, 0x9f, 0x4b, 0x85, 0x1a, 0x62, 0x47, 0xe0, 0x96, 0x16, 0xbb, 0xf0,
0xce, 0x40, 0x12, 0x7d, 0x7a, 0x55, 0x7e, 0x1f, 0x95, 0xb2, 0x63, 0x57, 0x2a, 0xa9, 0xa4, 0x52,
0xa9, 0xe4, 0x90, 0xc4, 0x87, 0xdc, 0xe2, 0x38, 0x95, 0xa4, 0x72, 0xca, 0xc1, 0x87, 0x1c, 0x52,
0x95, 0x8f, 0x4b, 0x0e, 0xb9, 0xe4, 0x0f, 0xf8, 0x1f, 0xe4, 0x90, 0x9a, 0x8f, 0x5d, 0xec, 0x2e,
0x66, 0x41, 0x50, 0xb0, 0x42, 0xf2, 0xb6, 0xd3, 0xd3, 0xdd, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
0xd3, 0x0b, 0x95, 0x8e, 0xe3, 0x3e, 0xe8, 0xd1, 0x0b, 0xdd, 0xc0, 0x67, 0x3e, 0x9a, 0x8b, 0xb7,
0x2e, 0xc8, 0x46, 0xa3, 0xd2, 0xf2, 0x3b, 0x1d, 0xdf, 0x93, 0xc0, 0x46, 0x85, 0xb6, 0x36, 0x49,
0x07, 0xcb, 0x96, 0xf9, 0x03, 0x03, 0xd0, 0xf5, 0x80, 0x60, 0x46, 0xae, 0xba, 0x0e, 0xa6, 0x16,
0x79, 0xaf, 0x47, 0x28, 0x43, 0xcf, 0xc1, 0xe4, 0x06, 0xa6, 0xa4, 0x6e, 0x2c, 0x1a, 0x4b, 0xe5,
0xe5, 0xa3, 0x17, 0x12, 0x6c, 0x15, 0xbb, 0xdb, 0xb4, 0x7d, 0x0d, 0x53, 0x62, 0x09, 0x4c, 0x74,
0x08, 0x0a, 0xf6, 0x46, 0xd3, 0xc3, 0x1d, 0x52, 0xcf, 0x2d, 0x1a, 0x4b, 0x25, 0x6b, 0xda, 0xde,
0xb8, 0x83, 0x3b, 0x04, 0x9d, 0x86, 0xd9, 0x96, 0xef, 0xba, 0xa4, 0xc5, 0x1c, 0xdf, 0x93, 0x08,
0x79, 0x81, 0x30, 0xd3, 0x07, 0x0b, 0xc4, 0x79, 0x98, 0xc2, 0x5c, 0x86, 0xfa, 0xa4, 0xe8, 0x96,
0x0d, 0x93, 0x42, 0x6d, 0x25, 0xf0, 0xbb, 0x4f, 0x4a, 0xba, 0x68, 0xd0, 0x7c, 0x7c, 0xd0, 0xef,
0x1b, 0x70, 0xe0, 0xaa, 0xcb, 0x48, 0xb0, 0x47, 0x95, 0xf2, 0x85, 0x01, 0x87, 0xe4, 0xaa, 0x5d,
0x8f, 0xd0, 0x77, 0x53, 0xca, 0x05, 0x98, 0x96, 0x56, 0x25, 0xc4, 0xac, 0x58, 0xaa, 0x85, 0x8e,
0x01, 0xd0, 0x4d, 0x1c, 0xd8, 0xb4, 0xe9, 0xf5, 0x3a, 0xf5, 0xa9, 0x45, 0x63, 0x69, 0xca, 0x2a,
0x49, 0xc8, 0x9d, 0x5e, 0xc7, 0xfc, 0xd0, 0x80, 0x83, 0x7c, 0x71, 0xf7, 0xc4, 0x24, 0xcc, 0x9f,
0x18, 0x30, 0x7f, 0x13, 0xd3, 0xbd, 0xa1, 0xd1, 0x63, 0x00, 0xcc, 0xe9, 0x90, 0x26, 0x65, 0xb8,
0xd3, 0x15, 0x5a, 0x9d, 0xb4, 0x4a, 0x1c, 0xb2, 0xce, 0x01, 0xe6, 0x3b, 0x50, 0xb9, 0xe6, 0xfb,
0xae, 0x45, 0x68, 0xd7, 0xf7, 0x28, 0x41, 0x97, 0x61, 0x9a, 0x32, 0xcc, 0x7a, 0x54, 0x09, 0x79,
0x44, 0x2b, 0xe4, 0xba, 0x40, 0xb1, 0x14, 0x2a, 0xb7, 0xad, 0x07, 0xd8, 0xed, 0x49, 0x19, 0x8b,
0x96, 0x6c, 0x98, 0xef, 0xc2, 0xcc, 0x3a, 0x0b, 0x1c, 0xaf, 0xfd, 0x15, 0x32, 0x2f, 0x85, 0xcc,
0xff, 0x64, 0xc0, 0xe1, 0x15, 0x42, 0x5b, 0x81, 0xb3, 0xb1, 0x47, 0x4c, 0xd7, 0x84, 0x4a, 0x1f,
0xb2, 0xba, 0x22, 0x54, 0x9d, 0xb7, 0x12, 0xb0, 0xd4, 0x62, 0x4c, 0xa5, 0x17, 0xe3, 0x83, 0x49,
0x68, 0xe8, 0x26, 0x35, 0x8e, 0xfa, 0xfe, 0x35, 0xda, 0x51, 0x39, 0x41, 0x74, 0x2a, 0x49, 0xa4,
0x7c, 0x78, 0x7f, 0xb4, 0x75, 0x01, 0x88, 0x36, 0x5e, 0x7a, 0x56, 0x79, 0xcd, 0xac, 0x96, 0xe1,
0xe0, 0x03, 0x27, 0x60, 0x3d, 0xec, 0x36, 0x5b, 0x9b, 0xd8, 0xf3, 0x88, 0x2b, 0xf4, 0xc4, 0x5d,
0x4d, 0x7e, 0xa9, 0x64, 0xcd, 0xa9, 0xce, 0xeb, 0xb2, 0x8f, 0x2b, 0x8b, 0xa2, 0xe7, 0x61, 0xa1,
0xbb, 0xb9, 0x45, 0x9d, 0xd6, 0x00, 0xd1, 0x94, 0x20, 0x9a, 0x0f, 0x7b, 0x13, 0x54, 0xe7, 0xe0,
0x40, 0x4b, 0x78, 0x2b, 0xbb, 0xc9, 0xb5, 0x26, 0xd5, 0x38, 0x2d, 0xd4, 0x58, 0x53, 0x1d, 0x6f,
0x86, 0x70, 0x2e, 0x56, 0x88, 0xdc, 0x63, 0xad, 0x18, 0x41, 0x41, 0x10, 0xcc, 0xa9, 0xce, 0xb7,
0x58, 0xab, 0x4f, 0x93, 0xf4, 0x33, 0xc5, 0x94, 0x9f, 0x41, 0x75, 0x28, 0x08, 0xbf, 0x49, 0x68,
0xbd, 0x24, 0xc4, 0x0c, 0x9b, 0x68, 0x15, 0x66, 0x29, 0xc3, 0x01, 0x6b, 0x76, 0x7d, 0xea, 0x70,
0xbd, 0xd0, 0x3a, 0x2c, 0xe6, 0x97, 0xca, 0xcb, 0x8b, 0xda, 0x45, 0x7a, 0x9d, 0x6c, 0xad, 0x60,
0x86, 0xd7, 0xb0, 0x13, 0x58, 0x33, 0x82, 0x70, 0x2d, 0xa4, 0x13, 0xce, 0xec, 0x96, 0x8f, 0xed,
0xbd, 0xe1, 0xcc, 0x3e, 0x36, 0xa0, 0x6e, 0x11, 0x97, 0x60, 0xba, 0x37, 0xf6, 0x99, 0xf9, 0x2d,
0x03, 0x8e, 0xdf, 0x20, 0x2c, 0x66, 0xb1, 0x0c, 0x33, 0x87, 0x32, 0xa7, 0xb5, 0x9b, 0xe7, 0xab,
0xf9, 0x89, 0x01, 0x27, 0x32, 0xc5, 0x1a, 0x67, 0x03, 0xbf, 0x08, 0x53, 0xfc, 0x8b, 0xd6, 0x73,
0xc2, 0x9e, 0x4e, 0x66, 0xd9, 0xd3, 0xdb, 0xdc, 0x2f, 0x0a, 0x83, 0x92, 0xf8, 0xe6, 0x5f, 0x0d,
0x58, 0x58, 0xdf, 0xf4, 0x1f, 0xf6, 0x45, 0x7a, 0x12, 0x0a, 0x4a, 0xba, 0xb4, 0x7c, 0xca, 0xa5,
0xa1, 0x4b, 0x30, 0xc9, 0xb6, 0xba, 0x44, 0x78, 0xc3, 0x99, 0xe5, 0x63, 0x17, 0x34, 0x61, 0xe5,
0x05, 0x2e, 0xe4, 0x9b, 0x5b, 0x5d, 0x62, 0x09, 0x54, 0x74, 0x06, 0x6a, 0x29, 0x95, 0x87, 0x4e,
0x61, 0x36, 0xa9, 0x73, 0x6a, 0xfe, 0x2a, 0x07, 0x87, 0x06, 0xa6, 0x38, 0x8e, 0xb2, 0x75, 0x63,
0xe7, 0xb4, 0x63, 0xa3, 0x53, 0x10, 0x33, 0x81, 0xa6, 0x63, 0xf3, 0xc8, 0x2f, 0xbf, 0x94, 0xb7,
0xaa, 0x31, 0xdf, 0x68, 0x53, 0x74, 0x1e, 0xd0, 0x80, 0xcb, 0x92, 0x9e, 0x71, 0xd2, 0x3a, 0x90,
0xf6, 0x59, 0xc2, 0x2f, 0x6a, 0x9d, 0x96, 0x54, 0xc1, 0xa4, 0x35, 0xaf, 0xf1, 0x5a, 0x14, 0x5d,
0x82, 0x79, 0xc7, 0xbb, 0x4d, 0x3a, 0x7e, 0xb0, 0xd5, 0xec, 0x92, 0xa0, 0x45, 0x3c, 0x86, 0xdb,
0x84, 0xd6, 0xa7, 0x85, 0x44, 0x73, 0x61, 0xdf, 0x5a, 0xbf, 0xcb, 0xfc, 0xdc, 0x80, 0x05, 0x19,
0xf9, 0xad, 0xe1, 0x80, 0x39, 0xbb, 0x7d, 0x7a, 0x9e, 0x82, 0x99, 0x6e, 0x28, 0x87, 0xc4, 0x93,
0x71, 0x6a, 0x35, 0x82, 0x8a, 0x5d, 0xf6, 0x99, 0x01, 0xf3, 0x3c, 0xd0, 0xdb, 0x4f, 0x32, 0xff,
0xd4, 0x80, 0xb9, 0x9b, 0x98, 0xee, 0x27, 0x91, 0x7f, 0xae, 0x8e, 0xa0, 0x48, 0xe6, 0x5d, 0xbd,
0xba, 0x9c, 0x86, 0xd9, 0xa4, 0xd0, 0x61, 0x64, 0x31, 0x93, 0x90, 0x9a, 0x9a, 0xbf, 0xec, 0x9f,
0x55, 0xfb, 0x4c, 0xf2, 0x5f, 0x1b, 0x70, 0xec, 0x06, 0x61, 0x91, 0xd4, 0x7b, 0xe2, 0x4c, 0x1b,
0xd5, 0x5a, 0x3e, 0x96, 0x27, 0xb2, 0x56, 0xf8, 0x5d, 0x39, 0xf9, 0x3e, 0xcc, 0xc1, 0x41, 0x7e,
0x2c, 0xec, 0x0d, 0x23, 0x18, 0xe5, 0x62, 0xa0, 0x31, 0x94, 0x29, 0x9d, 0xa1, 0x44, 0xe7, 0xe9,
0xf4, 0xc8, 0xe7, 0xa9, 0xf9, 0xb3, 0x9c, 0x8c, 0x03, 0xe2, 0xda, 0x18, 0x67, 0x59, 0x34, 0xb2,
0xe6, 0xb4, 0xb2, 0x9a, 0x50, 0x89, 0x20, 0xab, 0x2b, 0xe1, 0xf9, 0x98, 0x80, 0xed, 0xd9, 0xe3,
0xf1, 0x23, 0x03, 0x16, 0xc2, 0xab, 0xd8, 0x3a, 0x69, 0x77, 0x88, 0xc7, 0x1e, 0xdf, 0x86, 0xd2,
0x16, 0x90, 0xd3, 0x58, 0xc0, 0x51, 0x28, 0x51, 0x39, 0x4e, 0x74, 0xcb, 0xea, 0x03, 0xcc, 0x4f,
0x0d, 0x38, 0x34, 0x20, 0xce, 0x38, 0x8b, 0x58, 0x87, 0x82, 0xe3, 0xd9, 0xe4, 0x51, 0x24, 0x4d,
0xd8, 0xe4, 0x3d, 0x1b, 0x3d, 0xc7, 0xb5, 0x23, 0x31, 0xc2, 0x26, 0x3a, 0x09, 0x15, 0xe2, 0xe1,
0x0d, 0x97, 0x34, 0x05, 0xae, 0x30, 0xe4, 0xa2, 0x55, 0x96, 0xb0, 0x55, 0x0e, 0x32, 0xbf, 0x6e,
0xc0, 0x1c, 0xb7, 0x35, 0x25, 0x23, 0x7d, 0xb2, 0x3a, 0x5b, 0x84, 0x72, 0xcc, 0x98, 0x94, 0xb8,
0x71, 0x90, 0x79, 0x1f, 0xe6, 0x93, 0xe2, 0x8c, 0xa3, 0xb3, 0xe3, 0x00, 0xd1, 0x8a, 0x48, 0x9b,
0xcf, 0x5b, 0x31, 0x88, 0xf9, 0x65, 0x94, 0x02, 0x15, 0xca, 0xd8, 0xe5, 0xac, 0xcf, 0x3d, 0x87,
0xb8, 0x76, 0xdc, 0x6b, 0x97, 0x04, 0x44, 0x74, 0xaf, 0x40, 0x85, 0x3c, 0x62, 0x01, 0x6e, 0x76,
0x71, 0x80, 0x3b, 0x72, 0xf3, 0x8c, 0xe4, 0x60, 0xcb, 0x82, 0x6c, 0x4d, 0x50, 0x99, 0xbf, 0xe5,
0xc1, 0x98, 0x32, 0xca, 0xbd, 0x3e, 0xe3, 0x63, 0x00, 0xc2, 0x68, 0x65, 0xf7, 0x94, 0xec, 0x16,
0x10, 0x71, 0x84, 0x7d, 0x6a, 0x40, 0x4d, 0x4c, 0x41, 0xce, 0xa7, 0xcb, 0xd9, 0xa6, 0x68, 0x8c,
0x14, 0xcd, 0x90, 0x2d, 0xf4, 0xcf, 0x30, 0xad, 0x14, 0x9b, 0x1f, 0x55, 0xb1, 0x8a, 0x60, 0x9b,
0x69, 0x98, 0x3f, 0x34, 0xe0, 0x60, 0x4a, 0xe5, 0xe3, 0x58, 0xf4, 0x9b, 0x80, 0xe4, 0x0c, 0xed,
0xfe, 0xb4, 0xc3, 0xe3, 0xf6, 0x94, 0xf6, 0x6c, 0x49, 0x2b, 0xc9, 0x3a, 0xe0, 0xa4, 0x20, 0xd4,
0xfc, 0x83, 0x01, 0x47, 0x6f, 0x10, 0x26, 0x50, 0xaf, 0x71, 0xdf, 0xb1, 0x16, 0xf8, 0xed, 0x80,
0x50, 0xba, 0x7f, 0xed, 0xe3, 0xdb, 0x32, 0x3e, 0xd3, 0x4d, 0x69, 0x1c, 0xfd, 0x9f, 0x84, 0x8a,
0x18, 0x83, 0xd8, 0xcd, 0xc0, 0x7f, 0x48, 0x95, 0x1d, 0x95, 0x15, 0xcc, 0xf2, 0x1f, 0x0a, 0x83,
0x60, 0x3e, 0xc3, 0xae, 0x44, 0x50, 0x07, 0x83, 0x80, 0xf0, 0x6e, 0xb1, 0x07, 0x43, 0xc1, 0x38,
0x73, 0xb2, 0x7f, 0x75, 0xfc, 0x63, 0x03, 0x0e, 0xa6, 0xa6, 0x32, 0x8e, 0x6e, 0x5f, 0x90, 0xd1,
0xa3, 0x9c, 0xcc, 0xcc, 0xf2, 0x09, 0x2d, 0x4d, 0x6c, 0x30, 0x89, 0x8d, 0x4e, 0x40, 0xf9, 0x1e,
0x76, 0xdc, 0x66, 0x40, 0x30, 0xf5, 0x3d, 0x35, 0x51, 0xe0, 0x20, 0x4b, 0x40, 0xcc, 0x2f, 0x0c,
0xf9, 0x90, 0xb4, 0xcf, 0x3d, 0xde, 0x8f, 0x72, 0x50, 0x5d, 0xf5, 0x28, 0x09, 0xd8, 0xde, 0xbf,
0x61, 0xa0, 0x57, 0xa0, 0x2c, 0x26, 0x46, 0x9b, 0x36, 0x66, 0x58, 0x1d, 0x57, 0xc7, 0xb5, 0x99,
0xec, 0xd7, 0x38, 0xde, 0x0a, 0x66, 0xd8, 0x92, 0xda, 0xa1, 0xfc, 0x1b, 0x1d, 0x81, 0xd2, 0x26,
0xa6, 0x9b, 0xcd, 0xfb, 0x64, 0x4b, 0x86, 0x7d, 0x55, 0xab, 0xc8, 0x01, 0xaf, 0x93, 0x2d, 0x8a,
0x0e, 0x43, 0xd1, 0xeb, 0x75, 0xe4, 0x06, 0x2b, 0x2c, 0x1a, 0x4b, 0x55, 0xab, 0xe0, 0xf5, 0x3a,
0x62, 0x7b, 0xfd, 0x2e, 0x07, 0x33, 0xb7, 0x7b, 0xfc, 0x3e, 0x23, 0xf2, 0xf0, 0x3d, 0x97, 0x3d,
0x9e, 0x31, 0x9e, 0x85, 0xbc, 0x8c, 0x19, 0x38, 0x45, 0x5d, 0x2b, 0xf8, 0xea, 0x0a, 0xb5, 0x38,
0x92, 0xc8, 0x41, 0xf7, 0x5a, 0x2d, 0x15, 0x64, 0xe5, 0x85, 0xb0, 0x25, 0x0e, 0x11, 0x16, 0xc7,
0xa7, 0x42, 0x82, 0x20, 0x0a, 0xc1, 0xc4, 0x54, 0x48, 0x10, 0xc8, 0x4e, 0x13, 0x2a, 0xb8, 0x75,
0xdf, 0xf3, 0x1f, 0xba, 0xc4, 0x6e, 0x13, 0x5b, 0x2c, 0x7b, 0xd1, 0x4a, 0xc0, 0xa4, 0x61, 0xf0,
0x85, 0x6f, 0xb6, 0x3c, 0x26, 0x2e, 0x12, 0x79, 0x6e, 0x18, 0x1c, 0x72, 0xdd, 0x63, 0xbc, 0xdb,
0x26, 0x2e, 0x61, 0x44, 0x74, 0x17, 0x64, 0xb7, 0x84, 0xa8, 0xee, 0x5e, 0x37, 0xa2, 0x2e, 0xca,
0x6e, 0x09, 0xe1, 0xdd, 0x47, 0xa1, 0xd4, 0x4f, 0xb4, 0x97, 0xfa, 0xd9, 0x40, 0x01, 0x30, 0xff,
0x62, 0x40, 0x75, 0x45, 0xb0, 0xda, 0x07, 0x46, 0x87, 0x60, 0x92, 0x3c, 0xea, 0x06, 0x6a, 0xeb,
0x88, 0xef, 0xa1, 0x76, 0x64, 0x3e, 0x80, 0xda, 0x9a, 0x8b, 0x5b, 0x64, 0xd3, 0x77, 0x6d, 0x12,
0x88, 0xb3, 0x1d, 0xd5, 0x20, 0xcf, 0x70, 0x5b, 0x05, 0x0f, 0xfc, 0x13, 0xbd, 0xa4, 0x6e, 0x70,
0xd2, 0x2d, 0x3d, 0xad, 0x3d, 0x65, 0x63, 0x6c, 0x62, 0x89, 0xd1, 0x05, 0x98, 0x16, 0x8f, 0x5f,
0x32, 0xac, 0xa8, 0x58, 0xaa, 0x65, 0xde, 0x4d, 0x8c, 0x7b, 0x23, 0xf0, 0x7b, 0x5d, 0xb4, 0x0a,
0x95, 0x6e, 0x1f, 0xc6, 0x6d, 0x35, 0xfb, 0x4c, 0x4f, 0x0b, 0x6d, 0x25, 0x48, 0xcd, 0x2f, 0xf3,
0x50, 0x5d, 0x27, 0x38, 0x68, 0x6d, 0xee, 0x87, 0x54, 0x0a, 0xd7, 0xb8, 0x4d, 0x5d, 0xb5, 0x6a,
0xfc, 0x13, 0x9d, 0x83, 0x03, 0xb1, 0x09, 0x35, 0xdb, 0x5c, 0x41, 0xc2, 0xee, 0x2b, 0x56, 0xad,
0x9b, 0x56, 0xdc, 0x8b, 0x50, 0xb4, 0xa9, 0xdb, 0x14, 0x4b, 0x54, 0x10, 0x4b, 0xa4, 0x9f, 0xdf,
0x0a, 0x75, 0xc5, 0xd2, 0x14, 0x6c, 0xf9, 0x81, 0x9e, 0x82, 0xaa, 0xdf, 0x63, 0xdd, 0x1e, 0x6b,
0x4a, 0xbf, 0x53, 0x2f, 0x0a, 0xf1, 0x2a, 0x12, 0x28, 0xdc, 0x12, 0x45, 0xaf, 0x41, 0x95, 0x0a,
0x55, 0x86, 0x91, 0x77, 0x69, 0xd4, 0x00, 0xb1, 0x22, 0xe9, 0x64, 0xe8, 0x8d, 0xce, 0x40, 0x8d,
0x05, 0xf8, 0x01, 0x71, 0x63, 0xcf, 0x5a, 0x20, 0x76, 0xdb, 0xac, 0x84, 0xf7, 0x9f, 0xb4, 0x2e,
0xc2, 0x5c, 0xbb, 0x87, 0x03, 0xec, 0x31, 0x42, 0x62, 0xd8, 0x65, 0x81, 0x8d, 0xa2, 0xae, 0x88,
0xc0, 0x7c, 0x1d, 0x26, 0x6f, 0x3a, 0x4c, 0x28, 0x92, 0xfb, 0x2c, 0x43, 0xdc, 0x73, 0x84, 0x67,
0x3a, 0x0c, 0xc5, 0xc0, 0x7f, 0x28, 0x7d, 0x70, 0x4e, 0x98, 0x60, 0x21, 0xf0, 0x1f, 0x0a, 0x07,
0x2b, 0x1e, 0xee, 0xfd, 0x40, 0xd9, 0x66, 0xce, 0x52, 0x2d, 0xf3, 0x7f, 0x8d, 0xbe, 0xf1, 0x70,
0xf7, 0x49, 0x1f, 0xcf, 0x7f, 0xbe, 0x02, 0x85, 0x40, 0xd2, 0x0f, 0x7d, 0xc6, 0x8c, 0x8f, 0x24,
0xce, 0x80, 0x90, 0xca, 0xfc, 0x1f, 0x03, 0x2a, 0xaf, 0xb9, 0x3d, 0xfa, 0x24, 0x6c, 0x58, 0xf7,
0x68, 0x90, 0xd7, 0x3f, 0x58, 0x7c, 0x23, 0x07, 0x55, 0x25, 0xc6, 0x38, 0xb1, 0x4d, 0xa6, 0x28,
0xeb, 0x50, 0xe6, 0x43, 0x36, 0x29, 0x69, 0x87, 0x19, 0x97, 0xf2, 0xf2, 0xb2, 0x76, 0xd7, 0x27,
0xc4, 0x10, 0x0f, 0xc0, 0xeb, 0x82, 0xe8, 0xdf, 0x3d, 0x16, 0x6c, 0x59, 0xd0, 0x8a, 0x00, 0x8d,
0xbb, 0x30, 0x9b, 0xea, 0xe6, 0xb6, 0x71, 0x9f, 0x6c, 0x85, 0x6e, 0xed, 0x3e, 0xd9, 0x42, 0xcf,
0xc7, 0x9f, 0xe9, 0xb3, 0x0e, 0xe7, 0x5b, 0xbe, 0xd7, 0xbe, 0x1a, 0x04, 0x78, 0x4b, 0x3d, 0xe3,
0x5f, 0xc9, 0xbd, 0x64, 0x98, 0xbf, 0xc9, 0x41, 0xe5, 0x8d, 0x1e, 0x09, 0xb6, 0x76, 0xd3, 0xbd,
0x84, 0xce, 0x7e, 0x32, 0xe6, 0xec, 0x07, 0x76, 0xf4, 0x94, 0x66, 0x47, 0x6b, 0xfc, 0xd2, 0xb4,
0xd6, 0x2f, 0xe9, 0xb6, 0x6c, 0x61, 0x47, 0x5b, 0xb6, 0x98, 0xb9, 0x65, 0xb9, 0x75, 0x2b, 0x15,
0x8e, 0xb5, 0xc9, 0x12, 0x51, 0x56, 0x6e, 0xa7, 0x51, 0x96, 0xf9, 0x99, 0x01, 0xa5, 0xb7, 0x49,
0x8b, 0xf9, 0x01, 0xf7, 0x16, 0x1a, 0xdd, 0x1b, 0x23, 0x04, 0xb2, 0xb9, 0x74, 0x20, 0x7b, 0x19,
0x8a, 0x8e, 0xdd, 0xc4, 0xdc, 0x6c, 0xc4, 0xe2, 0x0d, 0x0b, 0xa0, 0x0a, 0x8e, 0x2d, 0xec, 0x6b,
0xf4, 0xcc, 0xfb, 0x77, 0x0c, 0xa8, 0x48, 0x99, 0xa9, 0xa4, 0x7c, 0x39, 0x36, 0x9c, 0xa1, 0xb3,
0x65, 0xd5, 0x88, 0x26, 0x7a, 0x73, 0xa2, 0x3f, 0xec, 0x55, 0x00, 0xae, 0x3b, 0x45, 0x2e, 0xb7,
0xc2, 0xa2, 0x56, 0x5a, 0x49, 0x2e, 0xf4, 0x78, 0x73, 0xc2, 0x2a, 0x71, 0x2a, 0xc1, 0xe2, 0x5a,
0x01, 0xa6, 0x04, 0xb5, 0xf9, 0x37, 0x03, 0xe6, 0xae, 0x63, 0xb7, 0xb5, 0xe2, 0x50, 0x86, 0xbd,
0xd6, 0x18, 0x21, 0xd3, 0x15, 0x28, 0xf8, 0xdd, 0xa6, 0x4b, 0xee, 0x31, 0x25, 0xd2, 0xc9, 0x21,
0x33, 0x92, 0x6a, 0xb0, 0xa6, 0xfd, 0xee, 0x2d, 0x72, 0x8f, 0xa1, 0x7f, 0x81, 0xa2, 0xdf, 0x6d,
0x06, 0x4e, 0x7b, 0x93, 0x29, 0xed, 0x8f, 0x40, 0x5c, 0xf0, 0xbb, 0x16, 0xa7, 0x88, 0x65, 0x42,
0x26, 0x77, 0x98, 0x09, 0x31, 0xff, 0x38, 0x30, 0xfd, 0x31, 0x4c, 0xfb, 0x0a, 0x14, 0x1d, 0x8f,
0x35, 0x6d, 0x87, 0x86, 0x2a, 0x38, 0xa6, 0xb7, 0x21, 0x8f, 0x89, 0x19, 0x88, 0x35, 0xf5, 0x18,
0x1f, 0x1b, 0xbd, 0x0a, 0x70, 0xcf, 0xf5, 0xb1, 0xa2, 0x96, 0x3a, 0x38, 0xa1, 0xdf, 0x15, 0x1c,
0x2d, 0xa4, 0x2f, 0x09, 0x22, 0xce, 0xa1, 0xbf, 0xa4, 0xbf, 0x37, 0xe0, 0xe0, 0x1a, 0x09, 0xa8,
0x43, 0x19, 0xf1, 0x98, 0xca, 0x4a, 0xae, 0x7a, 0xf7, 0xfc, 0x64, 0xfa, 0xd7, 0x48, 0xa5, 0x7f,
0xbf, 0x9a, 0x64, 0x68, 0xe2, 0x9e, 0x23, 0x1f, 0x21, 0xc2, 0x7b, 0x4e, 0xf8, 0xd4, 0x22, 0xef,
0x89, 0x33, 0x19, 0xcb, 0xa4, 0xe4, 0x8d, 0x5f, 0x97, 0xcd, 0x6f, 0xca, 0xb2, 0x07, 0xed, 0xa4,
0x1e, 0xdf, 0x60, 0x17, 0x40, 0x39, 0xf0, 0x94, 0x3b, 0x7f, 0x06, 0x52, 0xbe, 0x23, 0xa3, 0x18,
0xe3, 0xbb, 0x06, 0x2c, 0x66, 0x4b, 0x35, 0xce, 0xc9, 0xfb, 0x2a, 0x4c, 0x39, 0xde, 0x3d, 0x3f,
0x4c, 0x92, 0x9d, 0xd5, 0x07, 0xd4, 0xda, 0x71, 0x25, 0xa1, 0xf9, 0x8b, 0x1c, 0xd4, 0x84, 0xaf,
0xde, 0x85, 0xe5, 0xef, 0x90, 0x4e, 0x93, 0x3a, 0xef, 0x93, 0x70, 0xf9, 0x3b, 0xa4, 0xb3, 0xee,
0xbc, 0x4f, 0x12, 0x96, 0x31, 0x95, 0xb4, 0x8c, 0x64, 0x1a, 0x61, 0x7a, 0x48, 0x12, 0xb4, 0x90,
0x4c, 0x82, 0x2e, 0xc0, 0xb4, 0xe7, 0xdb, 0x64, 0x75, 0x45, 0x5d, 0x12, 0x55, 0xab, 0x6f, 0x6a,
0xa5, 0x1d, 0x9a, 0xda, 0xc7, 0x06, 0x34, 0x6e, 0x10, 0x96, 0xd6, 0xdd, 0xee, 0x59, 0xd9, 0x27,
0x06, 0x1c, 0xd1, 0x0a, 0x34, 0x8e, 0x81, 0xbd, 0x9c, 0x34, 0x30, 0xfd, 0x8d, 0x6d, 0x60, 0x48,
0x65, 0x5b, 0x97, 0xa0, 0xb2, 0xd2, 0xeb, 0x74, 0xa2, 0x48, 0xea, 0x24, 0x54, 0x02, 0xf9, 0x29,
0x2f, 0x34, 0xf2, 0xfc, 0x2d, 0x2b, 0x18, 0xbf, 0xb6, 0x98, 0xe7, 0xa0, 0xaa, 0x48, 0x94, 0xd4,
0x0d, 0x28, 0x06, 0xea, 0x5b, 0xe1, 0x47, 0x6d, 0xf3, 0x20, 0xcc, 0x59, 0xa4, 0xcd, 0x4d, 0x3b,
0xb8, 0xe5, 0x78, 0xf7, 0xd5, 0x30, 0xe6, 0x07, 0x06, 0xcc, 0x27, 0xe1, 0x8a, 0xd7, 0x3f, 0x41,
0x01, 0xdb, 0x76, 0x40, 0x28, 0x1d, 0xba, 0x2c, 0x57, 0x25, 0x8e, 0x15, 0x22, 0xc7, 0x34, 0x97,
0x1b, 0x59, 0x73, 0x66, 0x13, 0x0e, 0xdc, 0x20, 0xec, 0x36, 0x61, 0xc1, 0x58, 0xcf, 0xe6, 0x75,
0x7e, 0xd5, 0x10, 0xc4, 0xca, 0x2c, 0xc2, 0xa6, 0xf9, 0x91, 0x01, 0x28, 0x3e, 0xc2, 0x38, 0xcb,
0x1c, 0xd7, 0x72, 0x2e, 0xa9, 0x65, 0x59, 0x59, 0xd4, 0xe9, 0xfa, 0x1e, 0xf1, 0x58, 0x3c, 0x66,
0xad, 0x46, 0x50, 0x61, 0x7e, 0x9f, 0x1b, 0x80, 0x6e, 0xf9, 0xd8, 0xbe, 0x86, 0xdd, 0xf1, 0xc2,
0x83, 0x63, 0x00, 0x34, 0x68, 0x35, 0xd5, 0x6e, 0xcd, 0x29, 0xef, 0x13, 0xb4, 0xee, 0xc8, 0x0d,
0x7b, 0x02, 0xca, 0x36, 0x65, 0xaa, 0x3b, 0x7c, 0xc5, 0x05, 0x9b, 0x32, 0xd9, 0x2f, 0xaa, 0x32,
0x29, 0xc1, 0x2e, 0xb1, 0x9b, 0xb1, 0xe7, 0xb1, 0x49, 0x81, 0x56, 0x93, 0x1d, 0xeb, 0xfd, 0x47,
0xb2, 0xbb, 0x70, 0xe8, 0x36, 0xf6, 0x7a, 0xd8, 0xbd, 0xee, 0x77, 0xba, 0x38, 0x51, 0x4d, 0x98,
0x76, 0x73, 0x86, 0xc6, 0xcd, 0x1d, 0x97, 0xe5, 0x66, 0x32, 0x62, 0x16, 0xb2, 0x4e, 0x5a, 0x31,
0x88, 0x49, 0xa1, 0x3e, 0xc8, 0x7e, 0x9c, 0x85, 0x12, 0x42, 0x85, 0xac, 0xe2, 0xbe, 0xb7, 0x0f,
0x33, 0x5f, 0x81, 0xc3, 0xa2, 0xf4, 0x2f, 0x04, 0x25, 0x12, 0xf1, 0x69, 0x06, 0x86, 0x86, 0xc1,
0xff, 0xe7, 0x84, 0x6b, 0x1b, 0xe0, 0x30, 0x8e, 0xe0, 0x57, 0x92, 0xf9, 0xef, 0xa7, 0xb5, 0x34,
0xe9, 0x11, 0x55, 0x12, 0x7c, 0x09, 0x66, 0xc9, 0x23, 0xd2, 0xea, 0x31, 0xc7, 0x6b, 0xaf, 0xb9,
0xd8, 0xbb, 0xe3, 0xab, 0x03, 0x25, 0x0d, 0x46, 0x4f, 0x43, 0x95, 0x6b, 0xdf, 0xef, 0x31, 0x85,
0x27, 0x4f, 0x96, 0x24, 0x90, 0xf3, 0xe3, 0xf3, 0x75, 0x09, 0x23, 0xb6, 0xc2, 0x93, 0xc7, 0x4c,
0x1a, 0x3c, 0xa0, 0x4a, 0x0e, 0xa6, 0x3b, 0x51, 0xe5, 0x9f, 0x8d, 0x94, 0x2a, 0x15, 0x87, 0xdd,
0x52, 0xe5, 0x4d, 0x80, 0x0e, 0x09, 0xda, 0x64, 0x55, 0x38, 0x75, 0x79, 0x21, 0x5f, 0xd2, 0x3a,
0xf5, 0x3e, 0x83, 0xdb, 0x21, 0x81, 0x15, 0xa3, 0x35, 0x6f, 0xc0, 0x9c, 0x06, 0x85, 0xfb, 0x2b,
0xea, 0xf7, 0x82, 0x16, 0x09, 0x53, 0x35, 0x61, 0x93, 0x9f, 0x6f, 0x0c, 0x07, 0x6d, 0xc2, 0x94,
0xd1, 0xaa, 0xd6, 0xd9, 0x93, 0x50, 0x0c, 0x4b, 0x44, 0x50, 0x01, 0xf2, 0x57, 0x5d, 0xb7, 0x36,
0x81, 0x2a, 0x50, 0x5c, 0x55, 0x75, 0x10, 0x35, 0xe3, 0xec, 0xbf, 0xc1, 0x6c, 0x2a, 0x07, 0x89,
0x8a, 0x30, 0x79, 0xc7, 0xf7, 0x48, 0x6d, 0x02, 0xd5, 0xa0, 0x72, 0xcd, 0xf1, 0x70, 0xb0, 0x25,
0x63, 0xfe, 0x9a, 0x8d, 0x66, 0xa1, 0x2c, 0x62, 0x5f, 0x05, 0x20, 0xcb, 0xdf, 0x3b, 0x0e, 0xd5,
0xdb, 0x62, 0x5a, 0xeb, 0x24, 0x78, 0xe0, 0xb4, 0x08, 0x6a, 0x42, 0x2d, 0xfd, 0xa3, 0x09, 0x7a,
0x56, 0xaf, 0x07, 0xfd, 0xff, 0x28, 0x8d, 0x61, 0x4b, 0x65, 0x4e, 0xa0, 0x77, 0x61, 0x26, 0xf9,
0x0b, 0x08, 0xd2, 0x07, 0x67, 0xda, 0xff, 0x44, 0xb6, 0x63, 0xde, 0x84, 0x6a, 0xe2, 0x8f, 0x0e,
0x74, 0x46, 0xcb, 0x5b, 0xf7, 0xd7, 0x47, 0x43, 0x7f, 0x5f, 0x8a, 0xff, 0x75, 0x21, 0xa5, 0x4f,
0xd6, 0x7c, 0x67, 0x48, 0xaf, 0x2d, 0x0c, 0xdf, 0x4e, 0x7a, 0x0c, 0x07, 0x06, 0x4a, 0xb8, 0xd1,
0x79, 0x2d, 0xff, 0xac, 0x52, 0xef, 0xed, 0x86, 0x78, 0x08, 0x68, 0xf0, 0xcf, 0x05, 0x74, 0x41,
0xbf, 0x02, 0x59, 0xff, 0x6d, 0x34, 0x2e, 0x8e, 0x8c, 0x1f, 0x29, 0xee, 0xff, 0x0c, 0x38, 0x94,
0x51, 0x77, 0x8d, 0x2e, 0x6b, 0xd9, 0x0d, 0x2f, 0x1e, 0x6f, 0x3c, 0xbf, 0x33, 0xa2, 0x48, 0x10,
0x0f, 0x66, 0x53, 0xa5, 0xc8, 0xe8, 0x5c, 0x66, 0x79, 0xd6, 0x60, 0x4d, 0x76, 0xe3, 0xd9, 0xd1,
0x90, 0xa3, 0xf1, 0xee, 0xc2, 0x6c, 0xaa, 0x7e, 0x37, 0x63, 0x3c, 0x7d, 0x95, 0xef, 0x76, 0x0b,
0xfa, 0x0e, 0x54, 0x13, 0x85, 0xb6, 0x19, 0x16, 0xaf, 0x2b, 0xc6, 0xdd, 0x8e, 0xf5, 0x5d, 0xa8,
0xc4, 0xeb, 0x61, 0xd1, 0x52, 0xd6, 0x5e, 0x1a, 0x60, 0xbc, 0x93, 0xad, 0xd4, 0x2f, 0x77, 0x1b,
0xb2, 0x95, 0x06, 0x2a, 0x04, 0x47, 0xdf, 0x4a, 0x31, 0xfe, 0x43, 0xb7, 0xd2, 0x8e, 0x87, 0xf8,
0xc0, 0x80, 0x05, 0x7d, 0x39, 0x25, 0x5a, 0xce, 0xb2, 0xcd, 0xec, 0xc2, 0xd1, 0xc6, 0xe5, 0x1d,
0xd1, 0x44, 0x5a, 0xbc, 0x0f, 0x33, 0xc9, 0xa2, 0xc1, 0x0c, 0x2d, 0x6a, 0xeb, 0x2c, 0x1b, 0xe7,
0x46, 0xc2, 0x8d, 0x06, 0x7b, 0x0b, 0xca, 0xb1, 0x7f, 0x47, 0xd1, 0xe9, 0x21, 0x76, 0x1c, 0xff,
0x91, 0x72, 0x3b, 0x4d, 0xbe, 0x01, 0xa5, 0xe8, 0x97, 0x4f, 0x74, 0x2a, 0xd3, 0x7e, 0x77, 0xc2,
0x72, 0x1d, 0xa0, 0xff, 0x3f, 0x27, 0x7a, 0x46, 0xcb, 0x73, 0xe0, 0x87, 0xcf, 0xed, 0x98, 0x46,
0xd3, 0x97, 0x8f, 0xb8, 0xc3, 0xa6, 0x1f, 0xaf, 0x3a, 0xd8, 0x8e, 0xed, 0x26, 0x54, 0x13, 0xb5,
0x42, 0x59, 0x5b, 0x58, 0x53, 0xc2, 0xd5, 0x38, 0x3b, 0x0a, 0x6a, 0xb4, 0x7e, 0x9b, 0x50, 0x4d,
0x54, 0x6e, 0x64, 0x8c, 0xa4, 0x2b, 0x54, 0xc9, 0x18, 0x49, 0x5b, 0x08, 0x62, 0x4e, 0xa0, 0xff,
0x8e, 0x15, 0x89, 0x24, 0x0a, 0x71, 0xd0, 0xa5, 0xa1, 0x7c, 0x74, 0x75, 0x48, 0x8d, 0xe5, 0x9d,
0x90, 0x44, 0x22, 0x28, 0xab, 0x92, 0x2a, 0xcd, 0xb6, 0xaa, 0x9d, 0xac, 0xd4, 0x3a, 0x4c, 0xcb,
0x5a, 0x0c, 0x64, 0x66, 0x54, 0x5d, 0xc5, 0x0a, 0x35, 0x1a, 0x4f, 0x69, 0x71, 0x92, 0x65, 0x0a,
0x92, 0xa9, 0x7c, 0x6b, 0xcf, 0x60, 0x9a, 0x78, 0x88, 0x1f, 0x95, 0xa9, 0x05, 0xd3, 0xf2, 0x91,
0x2d, 0x83, 0x69, 0xe2, 0xa1, 0xb8, 0x31, 0x1c, 0x47, 0xbe, 0xcc, 0x4d, 0xa0, 0x35, 0x98, 0x12,
0x8f, 0x51, 0xe8, 0xe4, 0xb0, 0x87, 0xaa, 0x61, 0x1c, 0x13, 0x6f, 0x59, 0xe6, 0x04, 0xfa, 0x0f,
0x98, 0x12, 0x29, 0x92, 0x0c, 0x8e, 0xf1, 0xd7, 0xa6, 0xc6, 0x50, 0x94, 0x50, 0x44, 0x1b, 0x2a,
0xf1, 0x5c, 0x74, 0xc6, 0x91, 0xa5, 0xc9, 0xd6, 0x37, 0x46, 0xc1, 0x0c, 0x47, 0xf9, 0x9a, 0x01,
0xf5, 0xac, 0xb4, 0x25, 0xca, 0x8c, 0x4b, 0x86, 0xe5, 0x5e, 0x1b, 0x2f, 0xec, 0x90, 0x2a, 0x52,
0xe1, 0xfb, 0x30, 0xa7, 0xc9, 0x6d, 0xa1, 0x8b, 0x59, 0xfc, 0x32, 0xd2, 0x72, 0x8d, 0xe7, 0x46,
0x27, 0x88, 0xc6, 0x5e, 0x83, 0x29, 0x91, 0x93, 0xca, 0x58, 0xbe, 0x78, 0x8a, 0x2b, 0xc3, 0x20,
0x12, 0x29, 0x2d, 0x73, 0x02, 0x11, 0xa8, 0xc4, 0x13, 0x54, 0x19, 0xeb, 0xa7, 0xc9, 0x6d, 0x35,
0xce, 0x8c, 0x80, 0x19, 0x0d, 0xd3, 0x04, 0xe8, 0x27, 0x88, 0x32, 0x4e, 0x87, 0x81, 0x1c, 0x55,
0xe3, 0xf4, 0xb6, 0x78, 0xf1, 0x83, 0x32, 0x96, 0xf2, 0xc9, 0x38, 0x29, 0x06, 0x93, 0x42, 0x23,
0x44, 0xef, 0x83, 0xe9, 0x87, 0x8c, 0xe8, 0x3d, 0x33, 0xd3, 0xd1, 0xb8, 0x38, 0x32, 0x7e, 0x34,
0x9f, 0xf7, 0xa0, 0x96, 0x4e, 0xd7, 0x64, 0xdc, 0x0a, 0x33, 0x92, 0x46, 0x8d, 0xf3, 0x23, 0x62,
0xc7, 0x4f, 0x90, 0x23, 0x83, 0x32, 0xfd, 0xa7, 0xc3, 0x36, 0x45, 0xa6, 0x60, 0x94, 0x59, 0xc7,
0x93, 0x12, 0xa3, 0xcc, 0x3a, 0x91, 0x82, 0x30, 0x27, 0x96, 0x7b, 0x50, 0x59, 0x0b, 0xfc, 0x47,
0x5b, 0xe1, 0xdd, 0xf8, 0x1f, 0x63, 0x9d, 0xd7, 0x5e, 0xf8, 0xaf, 0xcb, 0x6d, 0x87, 0x6d, 0xf6,
0x36, 0xf8, 0xfa, 0x5f, 0x94, 0xb8, 0xe7, 0x1d, 0x5f, 0x7d, 0x5d, 0x74, 0x3c, 0x46, 0x02, 0x0f,
0xbb, 0x17, 0x05, 0x2f, 0x05, 0xed, 0x6e, 0x6c, 0x4c, 0x8b, 0xf6, 0xe5, 0xbf, 0x07, 0x00, 0x00,
0xff, 0xff, 0x24, 0x45, 0x91, 0xd1, 0x21, 0x44, 0x00, 0x00,
0xb1, 0x5c, 0x80, 0x24, 0x80, 0x26, 0x40, 0x42, 0x43, 0x8a, 0x82, 0xa0, 0x2f, 0x6a, 0x6d, 0x59,
0x94, 0x64, 0x49, 0x16, 0xe5, 0xaf, 0x27, 0xbf, 0xf7, 0x6c, 0x49, 0x7c, 0x96, 0x58, 0x96, 0xf4,
0xe8, 0xa5, 0xed, 0x57, 0x7e, 0x2e, 0x15, 0x6a, 0x88, 0x1d, 0x82, 0x5b, 0x5a, 0xec, 0xc2, 0x3b,
0x03, 0x49, 0xf4, 0x29, 0x55, 0xce, 0x47, 0xa5, 0xec, 0xd8, 0x95, 0x4a, 0x2a, 0xa9, 0x54, 0x2a,
0x39, 0x24, 0xf1, 0x21, 0xb7, 0x38, 0x4e, 0x25, 0xa9, 0x9c, 0x72, 0xf0, 0x21, 0x87, 0x54, 0xe5,
0xe3, 0x92, 0x43, 0x2e, 0xf9, 0x03, 0xfe, 0x07, 0x39, 0xa4, 0xe6, 0x63, 0x17, 0xbb, 0x8b, 0x59,
0x10, 0x14, 0xac, 0x90, 0xbc, 0xed, 0xf4, 0x74, 0xf7, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
0x42, 0xb9, 0xed, 0xb8, 0xf7, 0xbb, 0xf4, 0x42, 0x27, 0xf0, 0x99, 0x8f, 0x66, 0xe3, 0xad, 0x0b,
0xb2, 0x51, 0x2f, 0x37, 0xfd, 0x76, 0xdb, 0xf7, 0x24, 0xb0, 0x5e, 0xa6, 0xcd, 0x4d, 0xd2, 0xc6,
0xb2, 0x65, 0xfe, 0xd8, 0x00, 0x74, 0x3d, 0x20, 0x98, 0x91, 0xab, 0xae, 0x83, 0xa9, 0x45, 0xde,
0xed, 0x12, 0xca, 0xd0, 0x33, 0x30, 0xbe, 0x8e, 0x29, 0xa9, 0x19, 0x0b, 0xc6, 0xe2, 0xd4, 0xd2,
0xd1, 0x0b, 0x09, 0xb6, 0x8a, 0xdd, 0x6d, 0xda, 0xba, 0x86, 0x29, 0xb1, 0x04, 0x26, 0x3a, 0x04,
0x05, 0x7b, 0xbd, 0xe1, 0xe1, 0x36, 0xa9, 0xe5, 0x16, 0x8c, 0xc5, 0x92, 0x35, 0x69, 0xaf, 0xdf,
0xc1, 0x6d, 0x82, 0x4e, 0xc3, 0x4c, 0xd3, 0x77, 0x5d, 0xd2, 0x64, 0x8e, 0xef, 0x49, 0x84, 0xbc,
0x40, 0x98, 0xee, 0x81, 0x05, 0xe2, 0x1c, 0x4c, 0x60, 0x2e, 0x43, 0x6d, 0x5c, 0x74, 0xcb, 0x86,
0x49, 0xa1, 0xba, 0x1c, 0xf8, 0x9d, 0xc7, 0x25, 0x5d, 0x34, 0x68, 0x3e, 0x3e, 0xe8, 0x8f, 0x0c,
0x38, 0x70, 0xd5, 0x65, 0x24, 0xd8, 0xa3, 0x4a, 0xf9, 0xdc, 0x80, 0x43, 0x72, 0xd5, 0xae, 0x47,
0xe8, 0xbb, 0x29, 0xe5, 0x3c, 0x4c, 0x4a, 0xab, 0x12, 0x62, 0x96, 0x2d, 0xd5, 0x42, 0xc7, 0x00,
0xe8, 0x26, 0x0e, 0x6c, 0xda, 0xf0, 0xba, 0xed, 0xda, 0xc4, 0x82, 0xb1, 0x38, 0x61, 0x95, 0x24,
0xe4, 0x4e, 0xb7, 0x6d, 0x7e, 0x60, 0xc0, 0x41, 0xbe, 0xb8, 0x7b, 0x62, 0x12, 0xe6, 0xcf, 0x0d,
0x98, 0xbb, 0x89, 0xe9, 0xde, 0xd0, 0xe8, 0x31, 0x00, 0xe6, 0xb4, 0x49, 0x83, 0x32, 0xdc, 0xee,
0x08, 0xad, 0x8e, 0x5b, 0x25, 0x0e, 0x59, 0xe3, 0x00, 0xf3, 0x6d, 0x28, 0x5f, 0xf3, 0x7d, 0xd7,
0x22, 0xb4, 0xe3, 0x7b, 0x94, 0xa0, 0xcb, 0x30, 0x49, 0x19, 0x66, 0x5d, 0xaa, 0x84, 0x3c, 0xa2,
0x15, 0x72, 0x4d, 0xa0, 0x58, 0x0a, 0x95, 0xdb, 0xd6, 0x7d, 0xec, 0x76, 0xa5, 0x8c, 0x45, 0x4b,
0x36, 0xcc, 0x77, 0x60, 0x7a, 0x8d, 0x05, 0x8e, 0xd7, 0xfa, 0x12, 0x99, 0x97, 0x42, 0xe6, 0x7f,
0x35, 0xe0, 0xf0, 0x32, 0xa1, 0xcd, 0xc0, 0x59, 0xdf, 0x23, 0xa6, 0x6b, 0x42, 0xb9, 0x07, 0x59,
0x59, 0x16, 0xaa, 0xce, 0x5b, 0x09, 0x58, 0x6a, 0x31, 0x26, 0xd2, 0x8b, 0xf1, 0xfe, 0x38, 0xd4,
0x75, 0x93, 0x1a, 0x45, 0x7d, 0xff, 0x15, 0xed, 0xa8, 0x9c, 0x20, 0x3a, 0x95, 0x24, 0x52, 0x3e,
0xbc, 0x37, 0xda, 0x9a, 0x00, 0x44, 0x1b, 0x2f, 0x3d, 0xab, 0xbc, 0x66, 0x56, 0x4b, 0x70, 0xf0,
0xbe, 0x13, 0xb0, 0x2e, 0x76, 0x1b, 0xcd, 0x4d, 0xec, 0x79, 0xc4, 0x15, 0x7a, 0xe2, 0xae, 0x26,
0xbf, 0x58, 0xb2, 0x66, 0x55, 0xe7, 0x75, 0xd9, 0xc7, 0x95, 0x45, 0xd1, 0xb3, 0x30, 0xdf, 0xd9,
0xdc, 0xa2, 0x4e, 0xb3, 0x8f, 0x68, 0x42, 0x10, 0xcd, 0x85, 0xbd, 0x09, 0xaa, 0x73, 0x70, 0xa0,
0x29, 0xbc, 0x95, 0xdd, 0xe0, 0x5a, 0x93, 0x6a, 0x9c, 0x14, 0x6a, 0xac, 0xaa, 0x8e, 0x37, 0x42,
0x38, 0x17, 0x2b, 0x44, 0xee, 0xb2, 0x66, 0x8c, 0xa0, 0x20, 0x08, 0x66, 0x55, 0xe7, 0x9b, 0xac,
0xd9, 0xa3, 0x49, 0xfa, 0x99, 0x62, 0xca, 0xcf, 0xa0, 0x1a, 0x14, 0x84, 0xdf, 0x24, 0xb4, 0x56,
0x12, 0x62, 0x86, 0x4d, 0xb4, 0x02, 0x33, 0x94, 0xe1, 0x80, 0x35, 0x3a, 0x3e, 0x75, 0xb8, 0x5e,
0x68, 0x0d, 0x16, 0xf2, 0x8b, 0x53, 0x4b, 0x0b, 0xda, 0x45, 0x7a, 0x8d, 0x6c, 0x2d, 0x63, 0x86,
0x57, 0xb1, 0x13, 0x58, 0xd3, 0x82, 0x70, 0x35, 0xa4, 0x13, 0xce, 0xec, 0x96, 0x8f, 0xed, 0xbd,
0xe1, 0xcc, 0x3e, 0x32, 0xa0, 0x66, 0x11, 0x97, 0x60, 0xba, 0x37, 0xf6, 0x99, 0xf9, 0x5d, 0x03,
0x8e, 0xdf, 0x20, 0x2c, 0x66, 0xb1, 0x0c, 0x33, 0x87, 0x32, 0xa7, 0xb9, 0x9b, 0xe7, 0xab, 0xf9,
0xb1, 0x01, 0x27, 0x32, 0xc5, 0x1a, 0x65, 0x03, 0xbf, 0x00, 0x13, 0xfc, 0x8b, 0xd6, 0x72, 0xc2,
0x9e, 0x4e, 0x66, 0xd9, 0xd3, 0x5b, 0xdc, 0x2f, 0x0a, 0x83, 0x92, 0xf8, 0xe6, 0x3f, 0x0c, 0x98,
0x5f, 0xdb, 0xf4, 0x1f, 0xf4, 0x44, 0x7a, 0x1c, 0x0a, 0x4a, 0xba, 0xb4, 0x7c, 0xca, 0xa5, 0xa1,
0x4b, 0x30, 0xce, 0xb6, 0x3a, 0x44, 0x78, 0xc3, 0xe9, 0xa5, 0x63, 0x17, 0x34, 0x61, 0xe5, 0x05,
0x2e, 0xe4, 0x1b, 0x5b, 0x1d, 0x62, 0x09, 0x54, 0x74, 0x06, 0xaa, 0x29, 0x95, 0x87, 0x4e, 0x61,
0x26, 0xa9, 0x73, 0x6a, 0xfe, 0x36, 0x07, 0x87, 0xfa, 0xa6, 0x38, 0x8a, 0xb2, 0x75, 0x63, 0xe7,
0xb4, 0x63, 0xa3, 0x53, 0x10, 0x33, 0x81, 0x86, 0x63, 0xf3, 0xc8, 0x2f, 0xbf, 0x98, 0xb7, 0x2a,
0x31, 0xdf, 0x68, 0x53, 0x74, 0x1e, 0x50, 0x9f, 0xcb, 0x92, 0x9e, 0x71, 0xdc, 0x3a, 0x90, 0xf6,
0x59, 0xc2, 0x2f, 0x6a, 0x9d, 0x96, 0x54, 0xc1, 0xb8, 0x35, 0xa7, 0xf1, 0x5a, 0x14, 0x5d, 0x82,
0x39, 0xc7, 0xbb, 0x4d, 0xda, 0x7e, 0xb0, 0xd5, 0xe8, 0x90, 0xa0, 0x49, 0x3c, 0x86, 0x5b, 0x84,
0xd6, 0x26, 0x85, 0x44, 0xb3, 0x61, 0xdf, 0x6a, 0xaf, 0xcb, 0xfc, 0xcc, 0x80, 0x79, 0x19, 0xf9,
0xad, 0xe2, 0x80, 0x39, 0xbb, 0x7d, 0x7a, 0x9e, 0x82, 0xe9, 0x4e, 0x28, 0x87, 0xc4, 0x93, 0x71,
0x6a, 0x25, 0x82, 0x8a, 0x5d, 0xf6, 0xa9, 0x01, 0x73, 0x3c, 0xd0, 0xdb, 0x4f, 0x32, 0xff, 0xc2,
0x80, 0xd9, 0x9b, 0x98, 0xee, 0x27, 0x91, 0x7f, 0xa5, 0x8e, 0xa0, 0x48, 0xe6, 0x5d, 0xbd, 0xba,
0x9c, 0x86, 0x99, 0xa4, 0xd0, 0x61, 0x64, 0x31, 0x9d, 0x90, 0x9a, 0x9a, 0xbf, 0xe9, 0x9d, 0x55,
0xfb, 0x4c, 0xf2, 0xdf, 0x19, 0x70, 0xec, 0x06, 0x61, 0x91, 0xd4, 0x7b, 0xe2, 0x4c, 0x1b, 0xd6,
0x5a, 0x3e, 0x92, 0x27, 0xb2, 0x56, 0xf8, 0x5d, 0x39, 0xf9, 0x3e, 0xc8, 0xc1, 0x41, 0x7e, 0x2c,
0xec, 0x0d, 0x23, 0x18, 0xe6, 0x62, 0xa0, 0x31, 0x94, 0x09, 0x9d, 0xa1, 0x44, 0xe7, 0xe9, 0xe4,
0xd0, 0xe7, 0xa9, 0xf9, 0xcb, 0x9c, 0x8c, 0x03, 0xe2, 0xda, 0x18, 0x65, 0x59, 0x34, 0xb2, 0xe6,
0xb4, 0xb2, 0x9a, 0x50, 0x8e, 0x20, 0x2b, 0xcb, 0xe1, 0xf9, 0x98, 0x80, 0xed, 0xd9, 0xe3, 0xf1,
0x43, 0x03, 0xe6, 0xc3, 0xab, 0xd8, 0x1a, 0x69, 0xb5, 0x89, 0xc7, 0x1e, 0xdd, 0x86, 0xd2, 0x16,
0x90, 0xd3, 0x58, 0xc0, 0x51, 0x28, 0x51, 0x39, 0x4e, 0x74, 0xcb, 0xea, 0x01, 0xcc, 0x4f, 0x0c,
0x38, 0xd4, 0x27, 0xce, 0x28, 0x8b, 0x58, 0x83, 0x82, 0xe3, 0xd9, 0xe4, 0x61, 0x24, 0x4d, 0xd8,
0xe4, 0x3d, 0xeb, 0x5d, 0xc7, 0xb5, 0x23, 0x31, 0xc2, 0x26, 0x3a, 0x09, 0x65, 0xe2, 0xe1, 0x75,
0x97, 0x34, 0x04, 0xae, 0x30, 0xe4, 0xa2, 0x35, 0x25, 0x61, 0x2b, 0x1c, 0x64, 0x7e, 0xcb, 0x80,
0x59, 0x6e, 0x6b, 0x4a, 0x46, 0xfa, 0x78, 0x75, 0xb6, 0x00, 0x53, 0x31, 0x63, 0x52, 0xe2, 0xc6,
0x41, 0xe6, 0x3d, 0x98, 0x4b, 0x8a, 0x33, 0x8a, 0xce, 0x8e, 0x03, 0x44, 0x2b, 0x22, 0x6d, 0x3e,
0x6f, 0xc5, 0x20, 0xe6, 0x17, 0x51, 0x0a, 0x54, 0x28, 0x63, 0x97, 0xb3, 0x3e, 0x1b, 0x0e, 0x71,
0xed, 0xb8, 0xd7, 0x2e, 0x09, 0x88, 0xe8, 0x5e, 0x86, 0x32, 0x79, 0xc8, 0x02, 0xdc, 0xe8, 0xe0,
0x00, 0xb7, 0xe5, 0xe6, 0x19, 0xca, 0xc1, 0x4e, 0x09, 0xb2, 0x55, 0x41, 0x65, 0xfe, 0x81, 0x07,
0x63, 0xca, 0x28, 0xf7, 0xfa, 0x8c, 0x8f, 0x01, 0x08, 0xa3, 0x95, 0xdd, 0x13, 0xb2, 0x5b, 0x40,
0xc4, 0x11, 0xf6, 0x89, 0x01, 0x55, 0x31, 0x05, 0x39, 0x9f, 0x0e, 0x67, 0x9b, 0xa2, 0x31, 0x52,
0x34, 0x03, 0xb6, 0xd0, 0x7f, 0xc0, 0xa4, 0x52, 0x6c, 0x7e, 0x58, 0xc5, 0x2a, 0x82, 0x6d, 0xa6,
0x61, 0xfe, 0xc4, 0x80, 0x83, 0x29, 0x95, 0x8f, 0x62, 0xd1, 0x6f, 0x00, 0x92, 0x33, 0xb4, 0x7b,
0xd3, 0x0e, 0x8f, 0xdb, 0x53, 0xda, 0xb3, 0x25, 0xad, 0x24, 0xeb, 0x80, 0x93, 0x82, 0x50, 0xf3,
0xcf, 0x06, 0x1c, 0xbd, 0x41, 0x98, 0x40, 0xbd, 0xc6, 0x7d, 0xc7, 0x6a, 0xe0, 0xb7, 0x02, 0x42,
0xe9, 0xfe, 0xb5, 0x8f, 0xef, 0xc9, 0xf8, 0x4c, 0x37, 0xa5, 0x51, 0xf4, 0x7f, 0x12, 0xca, 0x62,
0x0c, 0x62, 0x37, 0x02, 0xff, 0x01, 0x55, 0x76, 0x34, 0xa5, 0x60, 0x96, 0xff, 0x40, 0x18, 0x04,
0xf3, 0x19, 0x76, 0x25, 0x82, 0x3a, 0x18, 0x04, 0x84, 0x77, 0x8b, 0x3d, 0x18, 0x0a, 0xc6, 0x99,
0x93, 0xfd, 0xab, 0xe3, 0x9f, 0x19, 0x70, 0x30, 0x35, 0x95, 0x51, 0x74, 0xfb, 0x9c, 0x8c, 0x1e,
0xe5, 0x64, 0xa6, 0x97, 0x4e, 0x68, 0x69, 0x62, 0x83, 0x49, 0x6c, 0x74, 0x02, 0xa6, 0x36, 0xb0,
0xe3, 0x36, 0x02, 0x82, 0xa9, 0xef, 0xa9, 0x89, 0x02, 0x07, 0x59, 0x02, 0x62, 0x7e, 0x6e, 0xc8,
0x87, 0xa4, 0x7d, 0xee, 0xf1, 0x7e, 0x9a, 0x83, 0xca, 0x8a, 0x47, 0x49, 0xc0, 0xf6, 0xfe, 0x0d,
0x03, 0xbd, 0x0c, 0x53, 0x62, 0x62, 0xb4, 0x61, 0x63, 0x86, 0xd5, 0x71, 0x75, 0x5c, 0x9b, 0xc9,
0x7e, 0x95, 0xe3, 0x2d, 0x63, 0x86, 0x2d, 0xa9, 0x1d, 0xca, 0xbf, 0xd1, 0x11, 0x28, 0x6d, 0x62,
0xba, 0xd9, 0xb8, 0x47, 0xb6, 0x64, 0xd8, 0x57, 0xb1, 0x8a, 0x1c, 0xf0, 0x1a, 0xd9, 0xa2, 0xe8,
0x30, 0x14, 0xbd, 0x6e, 0x5b, 0x6e, 0xb0, 0xc2, 0x82, 0xb1, 0x58, 0xb1, 0x0a, 0x5e, 0xb7, 0x2d,
0xb6, 0xd7, 0x1f, 0x73, 0x30, 0x7d, 0xbb, 0xcb, 0xef, 0x33, 0x22, 0x0f, 0xdf, 0x75, 0xd9, 0xa3,
0x19, 0xe3, 0x59, 0xc8, 0xcb, 0x98, 0x81, 0x53, 0xd4, 0xb4, 0x82, 0xaf, 0x2c, 0x53, 0x8b, 0x23,
0x89, 0x1c, 0x74, 0xb7, 0xd9, 0x54, 0x41, 0x56, 0x5e, 0x08, 0x5b, 0xe2, 0x10, 0x61, 0x71, 0x7c,
0x2a, 0x24, 0x08, 0xa2, 0x10, 0x4c, 0x4c, 0x85, 0x04, 0x81, 0xec, 0x34, 0xa1, 0x8c, 0x9b, 0xf7,
0x3c, 0xff, 0x81, 0x4b, 0xec, 0x16, 0xb1, 0xc5, 0xb2, 0x17, 0xad, 0x04, 0x4c, 0x1a, 0x06, 0x5f,
0xf8, 0x46, 0xd3, 0x63, 0xe2, 0x22, 0x91, 0xe7, 0x86, 0xc1, 0x21, 0xd7, 0x3d, 0xc6, 0xbb, 0x6d,
0xe2, 0x12, 0x46, 0x44, 0x77, 0x41, 0x76, 0x4b, 0x88, 0xea, 0xee, 0x76, 0x22, 0xea, 0xa2, 0xec,
0x96, 0x10, 0xde, 0x7d, 0x14, 0x4a, 0xbd, 0x44, 0x7b, 0xa9, 0x97, 0x0d, 0x14, 0x00, 0xf3, 0xef,
0x06, 0x54, 0x96, 0x05, 0xab, 0x7d, 0x60, 0x74, 0x08, 0xc6, 0xc9, 0xc3, 0x4e, 0xa0, 0xb6, 0x8e,
0xf8, 0x1e, 0x68, 0x47, 0xe6, 0x7d, 0xa8, 0xae, 0xba, 0xb8, 0x49, 0x36, 0x7d, 0xd7, 0x26, 0x81,
0x38, 0xdb, 0x51, 0x15, 0xf2, 0x0c, 0xb7, 0x54, 0xf0, 0xc0, 0x3f, 0xd1, 0x8b, 0xea, 0x06, 0x27,
0xdd, 0xd2, 0x93, 0xda, 0x53, 0x36, 0xc6, 0x26, 0x96, 0x18, 0x9d, 0x87, 0x49, 0xf1, 0xf8, 0x25,
0xc3, 0x8a, 0xb2, 0xa5, 0x5a, 0xe6, 0xdd, 0xc4, 0xb8, 0x37, 0x02, 0xbf, 0xdb, 0x41, 0x2b, 0x50,
0xee, 0xf4, 0x60, 0xdc, 0x56, 0xb3, 0xcf, 0xf4, 0xb4, 0xd0, 0x56, 0x82, 0xd4, 0xfc, 0x22, 0x0f,
0x95, 0x35, 0x82, 0x83, 0xe6, 0xe6, 0x7e, 0x48, 0xa5, 0x70, 0x8d, 0xdb, 0xd4, 0x55, 0xab, 0xc6,
0x3f, 0xd1, 0x39, 0x38, 0x10, 0x9b, 0x50, 0xa3, 0xc5, 0x15, 0x24, 0xec, 0xbe, 0x6c, 0x55, 0x3b,
0x69, 0xc5, 0xbd, 0x00, 0x45, 0x9b, 0xba, 0x0d, 0xb1, 0x44, 0x05, 0xb1, 0x44, 0xfa, 0xf9, 0x2d,
0x53, 0x57, 0x2c, 0x4d, 0xc1, 0x96, 0x1f, 0xe8, 0x09, 0xa8, 0xf8, 0x5d, 0xd6, 0xe9, 0xb2, 0x86,
0xf4, 0x3b, 0xb5, 0xa2, 0x10, 0xaf, 0x2c, 0x81, 0xc2, 0x2d, 0x51, 0xf4, 0x2a, 0x54, 0xa8, 0x50,
0x65, 0x18, 0x79, 0x97, 0x86, 0x0d, 0x10, 0xcb, 0x92, 0x4e, 0x86, 0xde, 0xe8, 0x0c, 0x54, 0x59,
0x80, 0xef, 0x13, 0x37, 0xf6, 0xac, 0x05, 0x62, 0xb7, 0xcd, 0x48, 0x78, 0xef, 0x49, 0xeb, 0x22,
0xcc, 0xb6, 0xba, 0x38, 0xc0, 0x1e, 0x23, 0x24, 0x86, 0x3d, 0x25, 0xb0, 0x51, 0xd4, 0x15, 0x11,
0x98, 0xaf, 0xc1, 0xf8, 0x4d, 0x87, 0x09, 0x45, 0x72, 0x9f, 0x65, 0x88, 0x7b, 0x8e, 0xf0, 0x4c,
0x87, 0xa1, 0x18, 0xf8, 0x0f, 0xa4, 0x0f, 0xce, 0x09, 0x13, 0x2c, 0x04, 0xfe, 0x03, 0xe1, 0x60,
0xc5, 0xc3, 0xbd, 0x1f, 0x28, 0xdb, 0xcc, 0x59, 0xaa, 0x65, 0x7e, 0xcd, 0xe8, 0x19, 0x0f, 0x77,
0x9f, 0xf4, 0xd1, 0xfc, 0xe7, 0xcb, 0x50, 0x08, 0x24, 0xfd, 0xc0, 0x67, 0xcc, 0xf8, 0x48, 0xe2,
0x0c, 0x08, 0xa9, 0xcc, 0xaf, 0x1a, 0x50, 0x7e, 0xd5, 0xed, 0xd2, 0xc7, 0x61, 0xc3, 0xba, 0x47,
0x83, 0xbc, 0xfe, 0xc1, 0xe2, 0xdb, 0x39, 0xa8, 0x28, 0x31, 0x46, 0x89, 0x6d, 0x32, 0x45, 0x59,
0x83, 0x29, 0x3e, 0x64, 0x83, 0x92, 0x56, 0x98, 0x71, 0x99, 0x5a, 0x5a, 0xd2, 0xee, 0xfa, 0x84,
0x18, 0xe2, 0x01, 0x78, 0x4d, 0x10, 0xfd, 0x8f, 0xc7, 0x82, 0x2d, 0x0b, 0x9a, 0x11, 0xa0, 0x7e,
0x17, 0x66, 0x52, 0xdd, 0xdc, 0x36, 0xee, 0x91, 0xad, 0xd0, 0xad, 0xdd, 0x23, 0x5b, 0xe8, 0xd9,
0xf8, 0x33, 0x7d, 0xd6, 0xe1, 0x7c, 0xcb, 0xf7, 0x5a, 0x57, 0x83, 0x00, 0x6f, 0xa9, 0x67, 0xfc,
0x2b, 0xb9, 0x17, 0x0d, 0xf3, 0xf7, 0x39, 0x28, 0xbf, 0xde, 0x25, 0xc1, 0xd6, 0x6e, 0xba, 0x97,
0xd0, 0xd9, 0x8f, 0xc7, 0x9c, 0x7d, 0xdf, 0x8e, 0x9e, 0xd0, 0xec, 0x68, 0x8d, 0x5f, 0x9a, 0xd4,
0xfa, 0x25, 0xdd, 0x96, 0x2d, 0xec, 0x68, 0xcb, 0x16, 0x33, 0xb7, 0x2c, 0xb7, 0x6e, 0xa5, 0xc2,
0x91, 0x36, 0x59, 0x22, 0xca, 0xca, 0xed, 0x34, 0xca, 0x32, 0x3f, 0x35, 0xa0, 0xf4, 0x16, 0x69,
0x32, 0x3f, 0xe0, 0xde, 0x42, 0xa3, 0x7b, 0x63, 0x88, 0x40, 0x36, 0x97, 0x0e, 0x64, 0x2f, 0x43,
0xd1, 0xb1, 0x1b, 0x98, 0x9b, 0x8d, 0x58, 0xbc, 0x41, 0x01, 0x54, 0xc1, 0xb1, 0x85, 0x7d, 0x0d,
0x9f, 0x79, 0xff, 0xbe, 0x01, 0x65, 0x29, 0x33, 0x95, 0x94, 0x2f, 0xc5, 0x86, 0x33, 0x74, 0xb6,
0xac, 0x1a, 0xd1, 0x44, 0x6f, 0x8e, 0xf5, 0x86, 0xbd, 0x0a, 0xc0, 0x75, 0xa7, 0xc8, 0xe5, 0x56,
0x58, 0xd0, 0x4a, 0x2b, 0xc9, 0x85, 0x1e, 0x6f, 0x8e, 0x59, 0x25, 0x4e, 0x25, 0x58, 0x5c, 0x2b,
0xc0, 0x84, 0xa0, 0x36, 0xff, 0x69, 0xc0, 0xec, 0x75, 0xec, 0x36, 0x97, 0x1d, 0xca, 0xb0, 0xd7,
0x1c, 0x21, 0x64, 0xba, 0x02, 0x05, 0xbf, 0xd3, 0x70, 0xc9, 0x06, 0x53, 0x22, 0x9d, 0x1c, 0x30,
0x23, 0xa9, 0x06, 0x6b, 0xd2, 0xef, 0xdc, 0x22, 0x1b, 0x0c, 0xfd, 0x27, 0x14, 0xfd, 0x4e, 0x23,
0x70, 0x5a, 0x9b, 0x4c, 0x69, 0x7f, 0x08, 0xe2, 0x82, 0xdf, 0xb1, 0x38, 0x45, 0x2c, 0x13, 0x32,
0xbe, 0xc3, 0x4c, 0x88, 0xf9, 0x97, 0xbe, 0xe9, 0x8f, 0x60, 0xda, 0x57, 0xa0, 0xe8, 0x78, 0xac,
0x61, 0x3b, 0x34, 0x54, 0xc1, 0x31, 0xbd, 0x0d, 0x79, 0x4c, 0xcc, 0x40, 0xac, 0xa9, 0xc7, 0xf8,
0xd8, 0xe8, 0x15, 0x80, 0x0d, 0xd7, 0xc7, 0x8a, 0x5a, 0xea, 0xe0, 0x84, 0x7e, 0x57, 0x70, 0xb4,
0x90, 0xbe, 0x24, 0x88, 0x38, 0x87, 0xde, 0x92, 0xfe, 0xc9, 0x80, 0x83, 0xab, 0x24, 0xa0, 0x0e,
0x65, 0xc4, 0x63, 0x2a, 0x2b, 0xb9, 0xe2, 0x6d, 0xf8, 0xc9, 0xf4, 0xaf, 0x91, 0x4a, 0xff, 0x7e,
0x39, 0xc9, 0xd0, 0xc4, 0x3d, 0x47, 0x3e, 0x42, 0x84, 0xf7, 0x9c, 0xf0, 0xa9, 0x45, 0xde, 0x13,
0xa7, 0x33, 0x96, 0x49, 0xc9, 0x1b, 0xbf, 0x2e, 0x9b, 0xdf, 0x91, 0x65, 0x0f, 0xda, 0x49, 0x3d,
0xba, 0xc1, 0xce, 0x83, 0x72, 0xe0, 0x29, 0x77, 0xfe, 0x14, 0xa4, 0x7c, 0x47, 0x46, 0x31, 0xc6,
0x0f, 0x0c, 0x58, 0xc8, 0x96, 0x6a, 0x94, 0x93, 0xf7, 0x15, 0x98, 0x70, 0xbc, 0x0d, 0x3f, 0x4c,
0x92, 0x9d, 0xd5, 0x07, 0xd4, 0xda, 0x71, 0x25, 0xa1, 0xf9, 0xeb, 0x1c, 0x54, 0x85, 0xaf, 0xde,
0x85, 0xe5, 0x6f, 0x93, 0x76, 0x83, 0x3a, 0xef, 0x91, 0x70, 0xf9, 0xdb, 0xa4, 0xbd, 0xe6, 0xbc,
0x47, 0x12, 0x96, 0x31, 0x91, 0xb4, 0x8c, 0x64, 0x1a, 0x61, 0x72, 0x40, 0x12, 0xb4, 0x90, 0x4c,
0x82, 0xce, 0xc3, 0xa4, 0xe7, 0xdb, 0x64, 0x65, 0x59, 0x5d, 0x12, 0x55, 0xab, 0x67, 0x6a, 0xa5,
0x1d, 0x9a, 0xda, 0x47, 0x06, 0xd4, 0x6f, 0x10, 0x96, 0xd6, 0xdd, 0xee, 0x59, 0xd9, 0xc7, 0x06,
0x1c, 0xd1, 0x0a, 0x34, 0x8a, 0x81, 0xbd, 0x94, 0x34, 0x30, 0xfd, 0x8d, 0xad, 0x6f, 0x48, 0x65,
0x5b, 0x97, 0xa0, 0xbc, 0xdc, 0x6d, 0xb7, 0xa3, 0x48, 0xea, 0x24, 0x94, 0x03, 0xf9, 0x29, 0x2f,
0x34, 0xf2, 0xfc, 0x9d, 0x52, 0x30, 0x7e, 0x6d, 0x31, 0xcf, 0x41, 0x45, 0x91, 0x28, 0xa9, 0xeb,
0x50, 0x0c, 0xd4, 0xb7, 0xc2, 0x8f, 0xda, 0xe6, 0x41, 0x98, 0xb5, 0x48, 0x8b, 0x9b, 0x76, 0x70,
0xcb, 0xf1, 0xee, 0xa9, 0x61, 0xcc, 0xf7, 0x0d, 0x98, 0x4b, 0xc2, 0x15, 0xaf, 0xe7, 0xa1, 0x80,
0x6d, 0x3b, 0x20, 0x94, 0x0e, 0x5c, 0x96, 0xab, 0x12, 0xc7, 0x0a, 0x91, 0x63, 0x9a, 0xcb, 0x0d,
0xad, 0x39, 0xb3, 0x01, 0x07, 0x6e, 0x10, 0x76, 0x9b, 0xb0, 0x60, 0xa4, 0x67, 0xf3, 0x1a, 0xbf,
0x6a, 0x08, 0x62, 0x65, 0x16, 0x61, 0xd3, 0xfc, 0xd0, 0x00, 0x14, 0x1f, 0x61, 0x94, 0x65, 0x8e,
0x6b, 0x39, 0x97, 0xd4, 0xb2, 0xac, 0x2c, 0x6a, 0x77, 0x7c, 0x8f, 0x78, 0x2c, 0x1e, 0xb3, 0x56,
0x22, 0xa8, 0x30, 0xbf, 0xcf, 0x0c, 0x40, 0xb7, 0x7c, 0x6c, 0x5f, 0xc3, 0xee, 0x68, 0xe1, 0xc1,
0x31, 0x00, 0x1a, 0x34, 0x1b, 0x6a, 0xb7, 0xe6, 0x94, 0xf7, 0x09, 0x9a, 0x77, 0xe4, 0x86, 0x3d,
0x01, 0x53, 0x36, 0x65, 0xaa, 0x3b, 0x7c, 0xc5, 0x05, 0x9b, 0x32, 0xd9, 0x2f, 0xaa, 0x32, 0x29,
0xc1, 0x2e, 0xb1, 0x1b, 0xb1, 0xe7, 0xb1, 0x71, 0x81, 0x56, 0x95, 0x1d, 0x6b, 0xbd, 0x47, 0xb2,
0xbb, 0x70, 0xe8, 0x36, 0xf6, 0xba, 0xd8, 0xbd, 0xee, 0xb7, 0x3b, 0x38, 0x51, 0x4d, 0x98, 0x76,
0x73, 0x86, 0xc6, 0xcd, 0x1d, 0x97, 0xe5, 0x66, 0x32, 0x62, 0x16, 0xb2, 0x8e, 0x5b, 0x31, 0x88,
0x49, 0xa1, 0xd6, 0xcf, 0x7e, 0x94, 0x85, 0x12, 0x42, 0x85, 0xac, 0xe2, 0xbe, 0xb7, 0x07, 0x33,
0x5f, 0x86, 0xc3, 0xa2, 0xf4, 0x2f, 0x04, 0x25, 0x12, 0xf1, 0x69, 0x06, 0x86, 0x86, 0xc1, 0x37,
0x72, 0xc2, 0xb5, 0xf5, 0x71, 0x18, 0x45, 0xf0, 0x2b, 0xc9, 0xfc, 0xf7, 0x93, 0x5a, 0x9a, 0xf4,
0x88, 0x2a, 0x09, 0xbe, 0x08, 0x33, 0xe4, 0x21, 0x69, 0x76, 0x99, 0xe3, 0xb5, 0x56, 0x5d, 0xec,
0xdd, 0xf1, 0xd5, 0x81, 0x92, 0x06, 0xa3, 0x27, 0xa1, 0xc2, 0xb5, 0xef, 0x77, 0x99, 0xc2, 0x93,
0x27, 0x4b, 0x12, 0xc8, 0xf9, 0xf1, 0xf9, 0xba, 0x84, 0x11, 0x5b, 0xe1, 0xc9, 0x63, 0x26, 0x0d,
0xee, 0x53, 0x25, 0x07, 0xd3, 0x9d, 0xa8, 0xf2, 0x6f, 0x46, 0x4a, 0x95, 0x8a, 0xc3, 0x6e, 0xa9,
0xf2, 0x26, 0x40, 0x9b, 0x04, 0x2d, 0xb2, 0x22, 0x9c, 0xba, 0xbc, 0x90, 0x2f, 0x6a, 0x9d, 0x7a,
0x8f, 0xc1, 0xed, 0x90, 0xc0, 0x8a, 0xd1, 0x9a, 0x37, 0x60, 0x56, 0x83, 0xc2, 0xfd, 0x15, 0xf5,
0xbb, 0x41, 0x93, 0x84, 0xa9, 0x9a, 0xb0, 0xc9, 0xcf, 0x37, 0x86, 0x83, 0x16, 0x61, 0xca, 0x68,
0x55, 0xcb, 0x7c, 0x5e, 0x3c, 0x19, 0x89, 0xfb, 0x7f, 0xc2, 0x52, 0x93, 0xef, 0xdb, 0x46, 0xdf,
0xfb, 0xf6, 0x86, 0x78, 0x9f, 0x89, 0xd3, 0x8d, 0x58, 0x81, 0xb0, 0xc1, 0x59, 0x11, 0x5b, 0xfd,
0x36, 0x10, 0x36, 0xcf, 0x9e, 0x84, 0x62, 0x58, 0xc2, 0x82, 0x0a, 0x90, 0xbf, 0xea, 0xba, 0xd5,
0x31, 0x54, 0x86, 0xe2, 0x8a, 0xaa, 0xd3, 0xa8, 0x1a, 0x67, 0xff, 0x1b, 0x66, 0x52, 0x39, 0x52,
0x54, 0x84, 0xf1, 0x3b, 0xbe, 0x47, 0xaa, 0x63, 0xa8, 0x0a, 0xe5, 0x6b, 0x8e, 0x87, 0x83, 0x2d,
0x79, 0x27, 0xa9, 0xda, 0x68, 0x06, 0xa6, 0x44, 0x6c, 0xae, 0x00, 0x64, 0xe9, 0x87, 0xc7, 0xa1,
0x72, 0x5b, 0xc8, 0xb8, 0x46, 0x82, 0xfb, 0x4e, 0x93, 0xa0, 0x06, 0x54, 0xd3, 0x3f, 0xc2, 0xa0,
0xa7, 0xf5, 0xeb, 0xa4, 0xff, 0x5f, 0xa6, 0x3e, 0x68, 0xd6, 0xe6, 0x18, 0x7a, 0x07, 0xa6, 0x93,
0xbf, 0xa8, 0x20, 0x7d, 0xf0, 0xa8, 0xfd, 0x8f, 0x65, 0x3b, 0xe6, 0x0d, 0xa8, 0x24, 0xfe, 0x38,
0x41, 0x67, 0xb4, 0xbc, 0x75, 0x7f, 0xa5, 0xd4, 0xf5, 0xf7, 0xb9, 0xf8, 0x5f, 0x21, 0x52, 0xfa,
0x64, 0x4d, 0x7a, 0x86, 0xf4, 0xda, 0xc2, 0xf5, 0xed, 0xa4, 0xc7, 0x70, 0xa0, 0xaf, 0xc4, 0x1c,
0x9d, 0xd7, 0xf2, 0xcf, 0x2a, 0x45, 0xdf, 0x6e, 0x88, 0x07, 0x80, 0xfa, 0xff, 0xac, 0x40, 0x17,
0xf4, 0x2b, 0x90, 0xf5, 0x5f, 0x49, 0xfd, 0xe2, 0xd0, 0xf8, 0x91, 0xe2, 0xbe, 0x6e, 0xc0, 0xa1,
0x8c, 0xba, 0x70, 0x74, 0x59, 0xcb, 0x6e, 0x70, 0x71, 0x7b, 0xfd, 0xd9, 0x9d, 0x11, 0x45, 0x82,
0x78, 0x30, 0x93, 0x2a, 0x95, 0x46, 0xe7, 0x32, 0xcb, 0xc7, 0xfa, 0x6b, 0xc6, 0xeb, 0x4f, 0x0f,
0x87, 0x1c, 0x8d, 0x77, 0x17, 0x66, 0x52, 0xf5, 0xc5, 0x19, 0xe3, 0xe9, 0xab, 0x90, 0xb7, 0x5b,
0xd0, 0xb7, 0xa1, 0x92, 0x28, 0x04, 0xce, 0xb0, 0x78, 0x5d, 0xb1, 0xf0, 0x76, 0xac, 0xef, 0x42,
0x39, 0x5e, 0xaf, 0x8b, 0x16, 0xb3, 0xf6, 0x52, 0x1f, 0xe3, 0x9d, 0x6c, 0xa5, 0x5e, 0x39, 0xde,
0x80, 0xad, 0xd4, 0x57, 0xc1, 0x38, 0xfc, 0x56, 0x8a, 0xf1, 0x1f, 0xb8, 0x95, 0x76, 0x3c, 0xc4,
0xfb, 0x06, 0xcc, 0xeb, 0xcb, 0x3d, 0xd1, 0x52, 0x96, 0x6d, 0x66, 0x17, 0xb6, 0xd6, 0x2f, 0xef,
0x88, 0x26, 0xd2, 0xe2, 0x3d, 0x98, 0x4e, 0x16, 0x35, 0x66, 0x68, 0x51, 0x5b, 0x07, 0x5a, 0x3f,
0x37, 0x14, 0x6e, 0x34, 0xd8, 0x9b, 0x30, 0x15, 0xfb, 0xb7, 0x15, 0x9d, 0x1e, 0x60, 0xc7, 0xf1,
0x1f, 0x3d, 0xb7, 0xd3, 0xe4, 0xeb, 0x50, 0x8a, 0x7e, 0x49, 0x45, 0xa7, 0x32, 0xed, 0x77, 0x27,
0x2c, 0xd7, 0x00, 0x7a, 0xff, 0x9b, 0xa2, 0xa7, 0xb4, 0x3c, 0xfb, 0x7e, 0x48, 0xdd, 0x8e, 0x69,
0x34, 0x7d, 0xf9, 0xc8, 0x3c, 0x68, 0xfa, 0xf1, 0xaa, 0x88, 0xed, 0xd8, 0x6e, 0x42, 0x25, 0x51,
0xcb, 0x94, 0xb5, 0x85, 0x35, 0x25, 0x66, 0xf5, 0xb3, 0xc3, 0xa0, 0x46, 0xeb, 0xb7, 0x09, 0x95,
0x44, 0x65, 0x49, 0xc6, 0x48, 0xba, 0x42, 0x9a, 0x8c, 0x91, 0xb4, 0x85, 0x2a, 0xe6, 0x18, 0xfa,
0x4a, 0xac, 0x88, 0x25, 0x51, 0x28, 0x84, 0x2e, 0x0d, 0xe4, 0xa3, 0xab, 0x93, 0xaa, 0x2f, 0xed,
0x84, 0x24, 0x12, 0x41, 0x59, 0x95, 0x54, 0x69, 0xb6, 0x55, 0xed, 0x64, 0xa5, 0xd6, 0x60, 0x52,
0xd6, 0x8a, 0x20, 0x33, 0xa3, 0x2a, 0x2c, 0x56, 0x48, 0x52, 0x7f, 0x42, 0x8b, 0x93, 0x2c, 0xa3,
0x90, 0x4c, 0x65, 0x2d, 0x40, 0x06, 0xd3, 0x44, 0xa1, 0xc0, 0xb0, 0x4c, 0x2d, 0x98, 0x94, 0x8f,
0x80, 0x19, 0x4c, 0x13, 0x0f, 0xd9, 0xf5, 0xc1, 0x38, 0xf2, 0xe5, 0x70, 0x0c, 0xad, 0xc2, 0x84,
0x08, 0x7a, 0xd1, 0xc9, 0x41, 0x0f, 0x69, 0x83, 0x38, 0x26, 0xde, 0xda, 0xcc, 0x31, 0xf4, 0xbf,
0x30, 0x21, 0x52, 0x38, 0x19, 0x1c, 0xe3, 0xaf, 0x61, 0xf5, 0x81, 0x28, 0xa1, 0x88, 0x36, 0x94,
0xe3, 0xb9, 0xf2, 0x8c, 0x23, 0x4b, 0xf3, 0x9a, 0x50, 0x1f, 0x06, 0x33, 0x1c, 0xe5, 0x9b, 0x06,
0xd4, 0xb2, 0xd2, 0xaa, 0x28, 0x33, 0x2e, 0x19, 0x94, 0x1b, 0xae, 0x3f, 0xb7, 0x43, 0xaa, 0x48,
0x85, 0xef, 0xc1, 0xac, 0x26, 0xf7, 0x86, 0x2e, 0x66, 0xf1, 0xcb, 0x48, 0x1b, 0xd6, 0x9f, 0x19,
0x9e, 0x20, 0x1a, 0x7b, 0x15, 0x26, 0x44, 0xce, 0x2c, 0x63, 0xf9, 0xe2, 0x29, 0xb8, 0x0c, 0x83,
0x48, 0xa4, 0xdc, 0xcc, 0x31, 0x44, 0xa0, 0x1c, 0x4f, 0xa0, 0x65, 0xac, 0x9f, 0x26, 0xf7, 0x56,
0x3f, 0x33, 0x04, 0x66, 0x34, 0x4c, 0x03, 0xa0, 0x97, 0xc0, 0xca, 0x38, 0x1d, 0xfa, 0x72, 0x68,
0xf5, 0xd3, 0xdb, 0xe2, 0xc5, 0x0f, 0xca, 0x58, 0x4a, 0x2a, 0xe3, 0xa4, 0xe8, 0x4f, 0x5a, 0x0d,
0x11, 0xbd, 0xf7, 0xa7, 0x47, 0x32, 0xa2, 0xf7, 0xcc, 0x4c, 0x4c, 0xfd, 0xe2, 0xd0, 0xf8, 0xd1,
0x7c, 0xde, 0x85, 0x6a, 0x3a, 0x9d, 0x94, 0x71, 0x2b, 0xcc, 0x48, 0x6a, 0xd5, 0xcf, 0x0f, 0x89,
0x1d, 0x3f, 0x41, 0x8e, 0xf4, 0xcb, 0xf4, 0x7f, 0x0e, 0xdb, 0x14, 0x99, 0x8c, 0x61, 0x66, 0x1d,
0x4f, 0x9a, 0x0c, 0x33, 0xeb, 0x44, 0x8a, 0xc4, 0x1c, 0x5b, 0xea, 0x42, 0x79, 0x35, 0xf0, 0x1f,
0x6e, 0x85, 0x77, 0xe3, 0x7f, 0x8f, 0x75, 0x5e, 0x7b, 0xee, 0xff, 0x2f, 0xb7, 0x1c, 0xb6, 0xd9,
0x5d, 0xe7, 0xeb, 0x7f, 0x51, 0xe2, 0x9e, 0x77, 0x7c, 0xf5, 0x75, 0xd1, 0xf1, 0x18, 0x09, 0x3c,
0xec, 0x5e, 0x14, 0xbc, 0x14, 0xb4, 0xb3, 0xbe, 0x3e, 0x29, 0xda, 0x97, 0xff, 0x15, 0x00, 0x00,
0xff, 0xff, 0x32, 0xc6, 0x8a, 0x94, 0xc1, 0x44, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -198,6 +198,10 @@ func (coord *DataCoordMock) WatchChannels(ctx context.Context, req *datapb.Watch
return &datapb.WatchChannelsResponse{}, nil
}
func (coord *DataCoordMock) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
return &milvuspb.GetFlushStateResponse{}, nil
}
func NewDataCoordMock() *DataCoordMock {
return &DataCoordMock{
nodeID: typeutil.UniqueID(uniquegenerator.GetUniqueIntGeneratorIns().GetInt()),

View File

@ -2537,6 +2537,21 @@ func (node *Proxy) GetCompactionStateWithPlans(ctx context.Context, req *milvusp
return resp, err
}
// GetFlushState gets the flush state of multiple segments
func (node *Proxy) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
log.Info("received get flush state request", zap.Any("request", req))
resp := &milvuspb.GetFlushStateResponse{}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
log.Info("unable to get flush state because of closed server")
return resp, nil
}
resp, err := node.dataCoord.GetFlushState(ctx, req)
log.Info("received get flush state response", zap.Any("response", resp))
return resp, err
}
// checkHealthy checks proxy state is Healthy
func (node *Proxy) checkHealthy() bool {
code := node.stateCode.Load().(internalpb.StateCode)

View File

@ -2483,6 +2483,26 @@ func Test_GetCompactionStateWithPlans(t *testing.T) {
})
}
func Test_GetFlushState(t *testing.T) {
t.Run("normal test", func(t *testing.T) {
datacoord := &DataCoordMock{}
proxy := &Proxy{dataCoord: datacoord}
proxy.stateCode.Store(internalpb.StateCode_Healthy)
resp, err := proxy.GetFlushState(context.TODO(), nil)
assert.EqualValues(t, &milvuspb.GetFlushStateResponse{}, resp)
assert.Nil(t, err)
})
t.Run("test get flush state with unhealthy proxy", func(t *testing.T) {
datacoord := &DataCoordMock{}
proxy := &Proxy{dataCoord: datacoord}
proxy.stateCode.Store(internalpb.StateCode_Abnormal)
resp, err := proxy.GetFlushState(context.TODO(), nil)
assert.EqualValues(t, unhealthyStatus(), resp.Status)
assert.Nil(t, err)
})
}
func TestProxy_GetComponentStates(t *testing.T) {
n := &Proxy{}
n.stateCode.Store(internalpb.StateCode_Healthy)

View File

@ -230,6 +230,8 @@ type DataCoord interface {
GetCompactionStateWithPlans(ctx context.Context, req *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error)
WatchChannels(ctx context.Context, req *datapb.WatchChannelsRequest) (*datapb.WatchChannelsResponse, error)
// GetFlushState gets the flush state of multiple segments
GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error)
}
// IndexNode is the interface `indexnode` package implements
@ -958,6 +960,8 @@ type ProxyComponent interface {
GetCompactionState(ctx context.Context, req *milvuspb.GetCompactionStateRequest) (*milvuspb.GetCompactionStateResponse, error)
ManualCompaction(ctx context.Context, req *milvuspb.ManualCompactionRequest) (*milvuspb.ManualCompactionResponse, error)
GetCompactionStateWithPlans(ctx context.Context, req *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error)
// GetFlushState gets the flush state of multiple segments
GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error)
}
// QueryNode is the interface `querynode` package implements