diff --git a/proto/v2.2/milvuspb/milvus.pb.go b/proto/v2.2/milvuspb/milvus.pb.go index 69538a7..c576545 100644 --- a/proto/v2.2/milvuspb/milvus.pb.go +++ b/proto/v2.2/milvuspb/milvus.pb.go @@ -376,7 +376,6 @@ func (m *DescribeAliasRequest) GetAlias() string { return "" } -// // Describe alias response type DescribeAliasResponse struct { // Response status @@ -497,7 +496,6 @@ func (m *ListAliasesRequest) GetCollectionName() string { return "" } -// // List aliases response type ListAliasesResponse struct { // Response status @@ -563,7 +561,7 @@ func (m *ListAliasesResponse) GetAliases() []string { return nil } -//* +// * // Create collection in milvus type CreateCollectionRequest struct { // Not useful for now @@ -666,7 +664,7 @@ func (m *CreateCollectionRequest) GetNumPartitions() int64 { return 0 } -//* +// * // Drop collection in milvus, also will drop data in collection. type DropCollectionRequest struct { // Not useful for now @@ -725,7 +723,7 @@ func (m *DropCollectionRequest) GetCollectionName() string { return "" } -//* +// * // Alter collection in milvus type AlterCollectionRequest struct { // Not useful for now @@ -800,7 +798,7 @@ func (m *AlterCollectionRequest) GetProperties() []*commonpb.KeyValuePair { return nil } -//* +// * // Check collection exist in milvus or not. type HasCollectionRequest struct { // Not useful for now @@ -962,7 +960,7 @@ func (m *StringResponse) GetValue() string { return "" } -//* +// * // Get collection meta datas like: schema, collectionID, shards number ... type DescribeCollectionRequest struct { // Not useful for now @@ -1039,7 +1037,7 @@ func (m *DescribeCollectionRequest) GetTimeStamp() uint64 { return 0 } -//* +// * // DescribeCollection Response type DescribeCollectionResponse struct { // Contain error_code and reason @@ -1204,7 +1202,7 @@ func (m *DescribeCollectionResponse) GetNumPartitions() int64 { return 0 } -//* +// * // Load collection data into query nodes, then you can do vector search on this collection. type LoadCollectionRequest struct { // Not useful for now @@ -1290,7 +1288,7 @@ func (m *LoadCollectionRequest) GetRefresh() bool { return false } -//* +// * // Release collection data from query nodes, then you can't do vector search on this collection. type ReleaseCollectionRequest struct { // Not useful for now @@ -1349,7 +1347,7 @@ func (m *ReleaseCollectionRequest) GetCollectionName() string { return "" } -//* +// * // Get statistics like row_count. // WARNING: This API is experimental and not useful for now. type GetStatisticsRequest struct { @@ -1427,7 +1425,7 @@ func (m *GetStatisticsRequest) GetGuaranteeTimestamp() uint64 { return 0 } -//* +// * // Will return statistics in stats field like [{key:"row_count",value:"1"}] // WARNING: This API is experimental and not useful for now. type GetStatisticsResponse struct { @@ -1479,7 +1477,7 @@ func (m *GetStatisticsResponse) GetStats() []*commonpb.KeyValuePair { return nil } -//* +// * // Get collection statistics like row_count. type GetCollectionStatisticsRequest struct { // Not useful for now @@ -1538,7 +1536,7 @@ func (m *GetCollectionStatisticsRequest) GetCollectionName() string { return "" } -//* +// * // Will return collection statistics in stats field like [{key:"row_count",value:"1"}] type GetCollectionStatisticsResponse struct { // Contain error_code and reason @@ -1589,7 +1587,6 @@ func (m *GetCollectionStatisticsResponse) GetStats() []*commonpb.KeyValuePair { return nil } -// // List collections type ShowCollectionsRequest struct { // Not useful for now @@ -1668,7 +1665,6 @@ func (m *ShowCollectionsRequest) GetCollectionNames() []string { return nil } -// // Return basic collection infos. type ShowCollectionsResponse struct { // Contain error_code and reason @@ -1766,7 +1762,6 @@ func (m *ShowCollectionsResponse) GetQueryServiceAvailable() []bool { return nil } -// // Create partition in created collection. type CreatePartitionRequest struct { // Not useful for now @@ -1834,7 +1829,6 @@ func (m *CreatePartitionRequest) GetPartitionName() string { return "" } -// // Drop partition in created collection. type DropPartitionRequest struct { // Not useful for now @@ -1902,7 +1896,6 @@ func (m *DropPartitionRequest) GetPartitionName() string { return "" } -// // Check if partition exist in collection or not. type HasPartitionRequest struct { // Not useful for now @@ -1970,7 +1963,6 @@ func (m *HasPartitionRequest) GetPartitionName() string { return "" } -// // Load specific partitions data of one collection into query nodes // Then you can get these data as result when you do vector search on this collection. type LoadPartitionsRequest struct { @@ -2066,7 +2058,6 @@ func (m *LoadPartitionsRequest) GetRefresh() bool { return false } -// // Release specific partitions data of one collection from query nodes. // Then you can not get these data as result when you do vector search on this collection. type ReleasePartitionsRequest struct { @@ -2135,7 +2126,6 @@ func (m *ReleasePartitionsRequest) GetPartitionNames() []string { return nil } -// // Get partition statistics like row_count. type GetPartitionStatisticsRequest struct { // Not useful for now @@ -2250,7 +2240,6 @@ func (m *GetPartitionStatisticsResponse) GetStats() []*commonpb.KeyValuePair { return nil } -// // List all partitions for particular collection type ShowPartitionsRequest struct { // Not useful for now @@ -2338,7 +2327,6 @@ func (m *ShowPartitionsRequest) GetType() ShowType { return ShowType_All } -// // List all partitions for particular collection response. // The returned datas are all rows, we can format to columns by therir index. type ShowPartitionsResponse struct { @@ -2656,7 +2644,6 @@ func (m *ShowSegmentsResponse) GetSegmentIDs() []int64 { return nil } -// // Create index for vector datas type CreateIndexRequest struct { // Not useful for now @@ -2742,7 +2729,6 @@ func (m *CreateIndexRequest) GetIndexName() string { return "" } -// // Get created index information. // Current release of Milvus only supports showing latest built index. type DescribeIndexRequest struct { @@ -2828,7 +2814,6 @@ func (m *DescribeIndexRequest) GetTimestamp() uint64 { return 0 } -// // Index informations type IndexDescription struct { // Index name @@ -2939,7 +2924,6 @@ func (m *IndexDescription) GetPendingIndexRows() int64 { return 0 } -// // Describe index response type DescribeIndexResponse struct { // Response status @@ -2990,8 +2974,7 @@ func (m *DescribeIndexResponse) GetIndexDescriptions() []*IndexDescription { return nil } -// -// Get index building progress +// Get index building progress type GetIndexBuildProgressRequest struct { // Not useful for now Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` @@ -4335,6 +4318,7 @@ func (m *VectorIDs) GetPartitionNames() []string { type VectorsArray struct { // Types that are valid to be assigned to Array: + // // *VectorsArray_IdArray // *VectorsArray_DataArray Array isVectorsArray_Array `protobuf_oneof:"array"` @@ -4481,6 +4465,7 @@ type CalcDistanceResults struct { // num(op_left)*num(op_right) distance values, "HAMMIN" return integer distance // // Types that are valid to be assigned to Array: + // // *CalcDistanceResults_IntDist // *CalcDistanceResults_FloatDist Array isCalcDistanceResults_Array `protobuf_oneof:"array"` @@ -5455,7 +5440,6 @@ func (m *GetComponentStatesRequest) XXX_DiscardUnknown() { var xxx_messageInfo_GetComponentStatesRequest proto.InternalMessageInfo -// // Do load balancing operation from src_nodeID to dst_nodeID. type LoadBalanceRequest struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` diff --git a/proto/v2.2/proxypb/proxy.pb.go b/proto/v2.2/proxypb/proxy.pb.go index fa977ad..04567bb 100644 --- a/proto/v2.2/proxypb/proxy.pb.go +++ b/proto/v2.2/proxypb/proxy.pb.go @@ -29,8 +29,9 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type InvalidateCollMetaCacheRequest struct { // MsgType: - // DropCollection -> {meta cache, dml channels} - // Other -> {meta cache} + // + // DropCollection -> {meta cache, dml channels} + // Other -> {meta cache} Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` CollectionName string `protobuf:"bytes,3,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"` diff --git a/proto/v2.2/query_coord.proto b/proto/v2.2/query_coord.proto index 92c0b0e..5a3f738 100644 --- a/proto/v2.2/query_coord.proto +++ b/proto/v2.2/query_coord.proto @@ -46,6 +46,10 @@ service QueryCoord { rpc TransferReplica(TransferReplicaRequest) returns (common.Status) {} rpc ListResourceGroups(milvus.ListResourceGroupsRequest) returns (milvus.ListResourceGroupsResponse) {} rpc DescribeResourceGroup(DescribeResourceGroupRequest) returns (DescribeResourceGroupResponse) {} + + rpc ListCheckers(ListCheckersRequest) returns (ListCheckersResponse) {} + rpc ActivateChecker(ActivateCheckerRequest) returns (common.Status) {} + rpc DeactivateChecker(DeactivateCheckerRequest) returns (common.Status) {} } service QueryNode { @@ -634,3 +638,31 @@ message DeleteRequest { schema.IDs primary_keys = 6; repeated uint64 timestamps = 7; } + +message ActivateCheckerRequest { + common.MsgBase base = 1; + int32 checkerID = 2; +} + +message DeactivateCheckerRequest { + common.MsgBase base = 1; + int32 checkerID = 2; +} + +message ListCheckersRequest { + common.MsgBase base = 1; + repeated int32 checkerIDs = 2; +} + +message ListCheckersResponse { + common.Status status = 1; + repeated CheckerInfo checkerInfos = 2; +} + +message CheckerInfo { + int32 id = 1; + string desc = 2; + bool activated = 3; + bool found = 4; +} + diff --git a/proto/v2.2/querypb/query_coord.pb.go b/proto/v2.2/querypb/query_coord.pb.go index 8e76721..b279ba0 100644 --- a/proto/v2.2/querypb/query_coord.pb.go +++ b/proto/v2.2/querypb/query_coord.pb.go @@ -4519,6 +4519,257 @@ func (m *DeleteRequest) GetTimestamps() []uint64 { return nil } +type ActivateCheckerRequest struct { + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + CheckerID int32 `protobuf:"varint,2,opt,name=checkerID,proto3" json:"checkerID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ActivateCheckerRequest) Reset() { *m = ActivateCheckerRequest{} } +func (m *ActivateCheckerRequest) String() string { return proto.CompactTextString(m) } +func (*ActivateCheckerRequest) ProtoMessage() {} +func (*ActivateCheckerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_aab7cc9a69ed26e8, []int{58} +} + +func (m *ActivateCheckerRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ActivateCheckerRequest.Unmarshal(m, b) +} +func (m *ActivateCheckerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ActivateCheckerRequest.Marshal(b, m, deterministic) +} +func (m *ActivateCheckerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActivateCheckerRequest.Merge(m, src) +} +func (m *ActivateCheckerRequest) XXX_Size() int { + return xxx_messageInfo_ActivateCheckerRequest.Size(m) +} +func (m *ActivateCheckerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ActivateCheckerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ActivateCheckerRequest proto.InternalMessageInfo + +func (m *ActivateCheckerRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *ActivateCheckerRequest) GetCheckerID() int32 { + if m != nil { + return m.CheckerID + } + return 0 +} + +type DeactivateCheckerRequest struct { + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + CheckerID int32 `protobuf:"varint,2,opt,name=checkerID,proto3" json:"checkerID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DeactivateCheckerRequest) Reset() { *m = DeactivateCheckerRequest{} } +func (m *DeactivateCheckerRequest) String() string { return proto.CompactTextString(m) } +func (*DeactivateCheckerRequest) ProtoMessage() {} +func (*DeactivateCheckerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_aab7cc9a69ed26e8, []int{59} +} + +func (m *DeactivateCheckerRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeactivateCheckerRequest.Unmarshal(m, b) +} +func (m *DeactivateCheckerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeactivateCheckerRequest.Marshal(b, m, deterministic) +} +func (m *DeactivateCheckerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeactivateCheckerRequest.Merge(m, src) +} +func (m *DeactivateCheckerRequest) XXX_Size() int { + return xxx_messageInfo_DeactivateCheckerRequest.Size(m) +} +func (m *DeactivateCheckerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeactivateCheckerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeactivateCheckerRequest proto.InternalMessageInfo + +func (m *DeactivateCheckerRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *DeactivateCheckerRequest) GetCheckerID() int32 { + if m != nil { + return m.CheckerID + } + return 0 +} + +type ListCheckersRequest struct { + Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` + CheckerIDs []int32 `protobuf:"varint,2,rep,packed,name=checkerIDs,proto3" json:"checkerIDs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListCheckersRequest) Reset() { *m = ListCheckersRequest{} } +func (m *ListCheckersRequest) String() string { return proto.CompactTextString(m) } +func (*ListCheckersRequest) ProtoMessage() {} +func (*ListCheckersRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_aab7cc9a69ed26e8, []int{60} +} + +func (m *ListCheckersRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListCheckersRequest.Unmarshal(m, b) +} +func (m *ListCheckersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListCheckersRequest.Marshal(b, m, deterministic) +} +func (m *ListCheckersRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListCheckersRequest.Merge(m, src) +} +func (m *ListCheckersRequest) XXX_Size() int { + return xxx_messageInfo_ListCheckersRequest.Size(m) +} +func (m *ListCheckersRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ListCheckersRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ListCheckersRequest proto.InternalMessageInfo + +func (m *ListCheckersRequest) GetBase() *commonpb.MsgBase { + if m != nil { + return m.Base + } + return nil +} + +func (m *ListCheckersRequest) GetCheckerIDs() []int32 { + if m != nil { + return m.CheckerIDs + } + return nil +} + +type ListCheckersResponse struct { + Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + CheckerInfos []*CheckerInfo `protobuf:"bytes,2,rep,name=checkerInfos,proto3" json:"checkerInfos,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ListCheckersResponse) Reset() { *m = ListCheckersResponse{} } +func (m *ListCheckersResponse) String() string { return proto.CompactTextString(m) } +func (*ListCheckersResponse) ProtoMessage() {} +func (*ListCheckersResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_aab7cc9a69ed26e8, []int{61} +} + +func (m *ListCheckersResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ListCheckersResponse.Unmarshal(m, b) +} +func (m *ListCheckersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ListCheckersResponse.Marshal(b, m, deterministic) +} +func (m *ListCheckersResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListCheckersResponse.Merge(m, src) +} +func (m *ListCheckersResponse) XXX_Size() int { + return xxx_messageInfo_ListCheckersResponse.Size(m) +} +func (m *ListCheckersResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ListCheckersResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ListCheckersResponse proto.InternalMessageInfo + +func (m *ListCheckersResponse) GetStatus() *commonpb.Status { + if m != nil { + return m.Status + } + return nil +} + +func (m *ListCheckersResponse) GetCheckerInfos() []*CheckerInfo { + if m != nil { + return m.CheckerInfos + } + return nil +} + +type CheckerInfo struct { + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Desc string `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"` + Activated bool `protobuf:"varint,3,opt,name=activated,proto3" json:"activated,omitempty"` + Found bool `protobuf:"varint,4,opt,name=found,proto3" json:"found,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CheckerInfo) Reset() { *m = CheckerInfo{} } +func (m *CheckerInfo) String() string { return proto.CompactTextString(m) } +func (*CheckerInfo) ProtoMessage() {} +func (*CheckerInfo) Descriptor() ([]byte, []int) { + return fileDescriptor_aab7cc9a69ed26e8, []int{62} +} + +func (m *CheckerInfo) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CheckerInfo.Unmarshal(m, b) +} +func (m *CheckerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CheckerInfo.Marshal(b, m, deterministic) +} +func (m *CheckerInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckerInfo.Merge(m, src) +} +func (m *CheckerInfo) XXX_Size() int { + return xxx_messageInfo_CheckerInfo.Size(m) +} +func (m *CheckerInfo) XXX_DiscardUnknown() { + xxx_messageInfo_CheckerInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckerInfo proto.InternalMessageInfo + +func (m *CheckerInfo) GetId() int32 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *CheckerInfo) GetDesc() string { + if m != nil { + return m.Desc + } + return "" +} + +func (m *CheckerInfo) GetActivated() bool { + if m != nil { + return m.Activated + } + return false +} + +func (m *CheckerInfo) GetFound() bool { + if m != nil { + return m.Found + } + return false +} + func init() { proto.RegisterEnum("milvus.protov2.query.LoadScope", LoadScope_name, LoadScope_value) proto.RegisterEnum("milvus.protov2.query.DataScope", DataScope_name, DataScope_value) @@ -4597,317 +4848,332 @@ func init() { proto.RegisterMapType((map[int64]int32)(nil), "milvus.protov2.query.ResourceGroupInfo.NumLoadedReplicaEntry") proto.RegisterMapType((map[int64]int32)(nil), "milvus.protov2.query.ResourceGroupInfo.NumOutgoingNodeEntry") proto.RegisterType((*DeleteRequest)(nil), "milvus.protov2.query.DeleteRequest") + proto.RegisterType((*ActivateCheckerRequest)(nil), "milvus.protov2.query.ActivateCheckerRequest") + proto.RegisterType((*DeactivateCheckerRequest)(nil), "milvus.protov2.query.DeactivateCheckerRequest") + proto.RegisterType((*ListCheckersRequest)(nil), "milvus.protov2.query.ListCheckersRequest") + proto.RegisterType((*ListCheckersResponse)(nil), "milvus.protov2.query.ListCheckersResponse") + proto.RegisterType((*CheckerInfo)(nil), "milvus.protov2.query.CheckerInfo") } func init() { proto.RegisterFile("query_coord.proto", fileDescriptor_aab7cc9a69ed26e8) } var fileDescriptor_aab7cc9a69ed26e8 = []byte{ - // 4865 bytes of a gzipped FileDescriptorProto + // 5028 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3c, 0x5b, 0x6f, 0x24, 0x57, - 0x5a, 0x53, 0x7d, 0x73, 0xf7, 0xd7, 0x17, 0x97, 0x8f, 0xed, 0x99, 0xde, 0x26, 0x93, 0x38, 0x35, - 0xb9, 0x38, 0x93, 0xc4, 0x33, 0x71, 0x36, 0x9b, 0xec, 0x2c, 0x49, 0x98, 0xb1, 0x33, 0x13, 0x93, - 0x89, 0x63, 0xca, 0x33, 0x09, 0x0a, 0x28, 0x9d, 0x72, 0xd7, 0x71, 0xbb, 0x34, 0x75, 0xe9, 0xa9, - 0xaa, 0xf6, 0xc4, 0x01, 0x89, 0x8b, 0x10, 0xe2, 0x61, 0x61, 0x79, 0xe2, 0x81, 0x15, 0x68, 0x5f, - 0x00, 0x09, 0x10, 0x62, 0xa5, 0x7d, 0xe1, 0x01, 0x69, 0xc5, 0x03, 0x2f, 0x48, 0x48, 0x80, 0xc4, - 0x8f, 0xe0, 0x89, 0xd7, 0x7d, 0x40, 0xa0, 0x73, 0xab, 0xaa, 0x53, 0x17, 0x77, 0x79, 0xda, 0xb3, - 0xc9, 0x02, 0x6f, 0x5d, 0xdf, 0xb9, 0x7c, 0xdf, 0xf9, 0x6e, 0xe7, 0xfb, 0xbe, 0x73, 0x4e, 0xc3, - 0xd2, 0xc3, 0x29, 0xf6, 0x4f, 0x86, 0x23, 0xcf, 0xf3, 0xcd, 0x8d, 0x89, 0xef, 0x85, 0x1e, 0x5a, - 0x71, 0x2c, 0xfb, 0x78, 0x1a, 0xb0, 0xaf, 0xe3, 0xcd, 0x0d, 0xda, 0x63, 0xd0, 0x19, 0x79, 0x8e, - 0xe3, 0xb9, 0x0c, 0x3a, 0xe8, 0x24, 0xfb, 0x0c, 0x7a, 0x96, 0x1b, 0x62, 0xdf, 0x35, 0x6c, 0xd1, - 0x1a, 0x8c, 0x8e, 0xb0, 0x63, 0xf0, 0xaf, 0x96, 0x13, 0x8c, 0xf9, 0x4f, 0xd5, 0x34, 0x42, 0x23, - 0x89, 0x6c, 0xb0, 0x64, 0xb9, 0x26, 0xfe, 0x22, 0x09, 0xd2, 0x7e, 0x57, 0x81, 0x8b, 0xfb, 0x47, - 0xde, 0xa3, 0x2d, 0xcf, 0xb6, 0xf1, 0x28, 0xb4, 0x3c, 0x37, 0xd0, 0xf1, 0xc3, 0x29, 0x0e, 0x42, - 0xb4, 0x09, 0xb5, 0x03, 0x23, 0xc0, 0x7d, 0x65, 0x4d, 0x59, 0x6f, 0x6f, 0x3e, 0xbd, 0x91, 0xa2, - 0x94, 0x93, 0xf8, 0x61, 0x30, 0xbe, 0x65, 0x04, 0x58, 0xa7, 0x7d, 0x11, 0x82, 0x9a, 0x79, 0xb0, - 0xb3, 0xdd, 0xaf, 0xac, 0x29, 0xeb, 0x55, 0x9d, 0xfe, 0x46, 0xcf, 0x41, 0x77, 0x14, 0xcd, 0xbe, - 0xb3, 0x1d, 0xf4, 0xab, 0x6b, 0xd5, 0xf5, 0xaa, 0x2e, 0x03, 0xb5, 0xef, 0x56, 0xe0, 0x52, 0x86, - 0x90, 0x60, 0xe2, 0xb9, 0x01, 0x46, 0x6f, 0x40, 0x23, 0x08, 0x8d, 0x70, 0x1a, 0x70, 0x5a, 0x2e, - 0x17, 0xd0, 0xb2, 0x4f, 0x3b, 0xe9, 0xbc, 0x73, 0x16, 0x71, 0x25, 0x07, 0x31, 0x7a, 0x0d, 0x56, - 0x2c, 0xf7, 0x43, 0xec, 0x78, 0xfe, 0xc9, 0x70, 0x82, 0xfd, 0x11, 0x76, 0x43, 0x63, 0x8c, 0x05, - 0x95, 0xcb, 0xa2, 0x6d, 0x2f, 0x6e, 0x42, 0xdf, 0x82, 0x4b, 0x4c, 0x92, 0x01, 0xf6, 0x8f, 0xad, - 0x11, 0x1e, 0x1a, 0xc7, 0x86, 0x65, 0x1b, 0x07, 0x36, 0xee, 0xd7, 0xd6, 0xaa, 0xeb, 0x4d, 0x7d, - 0x95, 0x36, 0xef, 0xb3, 0xd6, 0x9b, 0xa2, 0x11, 0xbd, 0x04, 0xaa, 0x8f, 0x0f, 0x7d, 0x1c, 0x1c, - 0x0d, 0x27, 0xbe, 0x37, 0xf6, 0x71, 0x10, 0xf4, 0xeb, 0x14, 0xcd, 0x22, 0x87, 0xef, 0x71, 0xb0, - 0xf6, 0x17, 0x0a, 0xac, 0x12, 0x76, 0xec, 0x19, 0x7e, 0x68, 0x3d, 0x11, 0xb1, 0x68, 0xd0, 0x49, - 0x32, 0xa2, 0x5f, 0xa5, 0x6d, 0x12, 0x8c, 0xf4, 0x99, 0x08, 0x02, 0x08, 0x03, 0x6b, 0x94, 0x58, - 0x09, 0xa6, 0xfd, 0x0b, 0xd7, 0xa0, 0x24, 0xa5, 0xf3, 0xc9, 0x2d, 0x8d, 0xb5, 0x92, 0xc5, 0xfa, - 0x38, 0x52, 0xcb, 0xe3, 0x7e, 0x2d, 0x9f, 0xfb, 0xff, 0x56, 0x85, 0xd5, 0xbb, 0x9e, 0x61, 0xc6, - 0xca, 0xf8, 0x55, 0x70, 0xff, 0x5d, 0x68, 0x30, 0xdb, 0xee, 0xd7, 0x28, 0xb6, 0x17, 0xd3, 0xd8, - 0xb8, 0xe5, 0xc7, 0x54, 0xee, 0x53, 0x80, 0xce, 0x87, 0xa1, 0xe7, 0xa1, 0xe7, 0xe3, 0x89, 0x6d, - 0x8d, 0x8c, 0xa1, 0x3b, 0x75, 0x0e, 0xb0, 0xdf, 0xaf, 0xaf, 0x29, 0xeb, 0x75, 0xbd, 0xcb, 0xa1, - 0xbb, 0x14, 0x88, 0x0e, 0xa0, 0x7b, 0x68, 0x61, 0xdb, 0x1c, 0x52, 0xf7, 0xb0, 0xb3, 0xdd, 0x6f, - 0xac, 0x55, 0xd7, 0xdb, 0x9b, 0x6f, 0x6f, 0xe4, 0xf9, 0xa6, 0x8d, 0x5c, 0xbe, 0x6c, 0xdc, 0x26, - 0x13, 0xec, 0xb0, 0xf1, 0xef, 0xb9, 0xa1, 0x7f, 0xa2, 0x77, 0x0e, 0x13, 0x20, 0xd4, 0x87, 0x05, - 0xce, 0xe4, 0xfe, 0xc2, 0x9a, 0xb2, 0xde, 0xd4, 0xc5, 0x27, 0x7a, 0x11, 0x16, 0x7d, 0x1c, 0x78, - 0x53, 0x7f, 0x84, 0x87, 0x63, 0xdf, 0x9b, 0x4e, 0x82, 0x7e, 0x73, 0xad, 0xba, 0xde, 0xd2, 0x7b, - 0x02, 0x7c, 0x87, 0x42, 0x07, 0xef, 0xc2, 0x52, 0x06, 0x0b, 0x52, 0xa1, 0xfa, 0x00, 0x9f, 0x50, - 0x71, 0x54, 0x75, 0xf2, 0x13, 0xad, 0x40, 0xfd, 0xd8, 0xb0, 0xa7, 0x98, 0xb3, 0x9b, 0x7d, 0xdc, - 0xa8, 0xbc, 0xa5, 0x68, 0x7f, 0xaa, 0x40, 0x5f, 0xc7, 0x36, 0x36, 0x02, 0xfc, 0xd5, 0x0a, 0xf6, - 0x22, 0x34, 0x5c, 0xcf, 0xc4, 0x3b, 0xdb, 0x54, 0xb0, 0x55, 0x9d, 0x7f, 0x69, 0xff, 0xa5, 0xc0, - 0xca, 0x1d, 0x1c, 0x12, 0x73, 0xb0, 0x82, 0xd0, 0x1a, 0x45, 0x36, 0xff, 0x2e, 0x54, 0x7d, 0xfc, - 0x90, 0xd3, 0xf6, 0x6a, 0x9a, 0xb6, 0x68, 0x43, 0xc8, 0x1b, 0xab, 0x93, 0x91, 0xe8, 0x59, 0xe8, - 0x98, 0x8e, 0x3d, 0x1c, 0x1d, 0x19, 0xae, 0x8b, 0x6d, 0x66, 0x52, 0x2d, 0xbd, 0x6d, 0x3a, 0xf6, - 0x16, 0x07, 0xa1, 0xa7, 0x01, 0x02, 0x3c, 0x76, 0xb0, 0x1b, 0xc6, 0x3e, 0x3a, 0x01, 0x41, 0x57, - 0x61, 0xe9, 0xd0, 0xf7, 0x9c, 0x61, 0x70, 0x64, 0xf8, 0xe6, 0xd0, 0xc6, 0x86, 0x89, 0x7d, 0x4a, - 0x7f, 0x53, 0x5f, 0x24, 0x0d, 0xfb, 0x04, 0x7e, 0x97, 0x82, 0xd1, 0x1b, 0x50, 0x0f, 0x46, 0xde, - 0x04, 0x53, 0x7d, 0xeb, 0x6d, 0x3e, 0x93, 0xaf, 0x49, 0xdb, 0x46, 0x68, 0xec, 0x93, 0x6e, 0x3a, - 0xeb, 0xad, 0xfd, 0xb8, 0xc6, 0xcc, 0xee, 0x6b, 0xef, 0xf4, 0x12, 0xa6, 0x59, 0x3f, 0x2f, 0xd3, - 0x6c, 0x94, 0x32, 0xcd, 0x85, 0x59, 0xa6, 0x99, 0xe1, 0xdd, 0x59, 0x4c, 0xb3, 0x39, 0xd3, 0x34, - 0x5b, 0x79, 0xa6, 0x89, 0xee, 0xc0, 0x22, 0x0b, 0x2d, 0x2c, 0xf7, 0xd0, 0x1b, 0xda, 0x56, 0x10, - 0xf6, 0x81, 0x12, 0xfa, 0x4c, 0x56, 0x57, 0x4d, 0xfc, 0xc5, 0x06, 0x43, 0xed, 0x1e, 0x7a, 0x7a, - 0xd7, 0x12, 0x3f, 0xef, 0x5a, 0x41, 0x38, 0xbf, 0x8d, 0xff, 0x43, 0x6c, 0xe3, 0x5f, 0x7f, 0x2d, - 0x8a, 0xfd, 0x40, 0x5d, 0xf2, 0x03, 0x7f, 0xa5, 0xc0, 0x37, 0xee, 0xe0, 0x30, 0x5a, 0x00, 0x31, - 0x6a, 0xfc, 0xb5, 0x0d, 0x00, 0x7e, 0xa8, 0xc0, 0x20, 0x8f, 0xda, 0xf9, 0x82, 0x80, 0x5f, 0x85, - 0x8b, 0x11, 0x96, 0xa1, 0x89, 0x83, 0x91, 0x6f, 0x4d, 0xa8, 0x30, 0xa9, 0xef, 0x6a, 0x6f, 0x3e, - 0x9f, 0x6f, 0x02, 0x69, 0x2a, 0x56, 0xa3, 0x49, 0xb6, 0x13, 0x73, 0x68, 0xdf, 0x53, 0x60, 0x95, - 0x78, 0x4b, 0xee, 0xde, 0x88, 0x26, 0xce, 0xc1, 0x5d, 0xd9, 0x75, 0x56, 0x32, 0xae, 0xb3, 0x04, - 0xa7, 0xb5, 0xdf, 0x53, 0xe0, 0x62, 0x9a, 0xa2, 0xf9, 0x38, 0xf8, 0x26, 0xd4, 0x89, 0x39, 0x0a, - 0x86, 0x3d, 0x9b, 0xcf, 0xb0, 0x24, 0x42, 0xd6, 0x5f, 0x9b, 0x30, 0x4a, 0x62, 0x7f, 0x3e, 0x97, - 0xea, 0xa5, 0x17, 0x5f, 0xc9, 0x59, 0xfc, 0x1f, 0x2a, 0x70, 0x29, 0x83, 0x72, 0xbe, 0xd5, 0xbf, - 0x03, 0x0d, 0xba, 0x53, 0x89, 0xe5, 0xbf, 0x50, 0xb0, 0xfc, 0x04, 0x4a, 0xe2, 0x81, 0x74, 0x3e, - 0x4a, 0xf3, 0x40, 0x4d, 0xb7, 0x91, 0x5d, 0x94, 0xef, 0xa0, 0x43, 0xd7, 0x70, 0x18, 0x1b, 0x5a, - 0x7a, 0x9b, 0xc3, 0x76, 0x0d, 0x07, 0xa3, 0x6f, 0x40, 0x93, 0x18, 0xf1, 0xd0, 0x32, 0x85, 0x22, - 0x2c, 0x50, 0xa3, 0x36, 0x03, 0x74, 0x19, 0x80, 0x36, 0x19, 0xa6, 0xe9, 0xb3, 0x0d, 0xb6, 0xa5, - 0xb7, 0x08, 0xe4, 0x26, 0x01, 0x68, 0x7f, 0xac, 0xc0, 0xd3, 0xfb, 0x27, 0xee, 0x68, 0x17, 0x3f, - 0xda, 0xf2, 0xb1, 0x11, 0xe2, 0xd8, 0x95, 0x3f, 0x61, 0xf6, 0xa3, 0x35, 0x68, 0x27, 0x2c, 0x9a, - 0xab, 0x67, 0x12, 0xa4, 0xfd, 0x48, 0x81, 0x0e, 0xd9, 0x5d, 0x3e, 0xc4, 0xa1, 0x41, 0x54, 0x05, - 0x7d, 0x07, 0x5a, 0xb6, 0x67, 0x98, 0xc3, 0xf0, 0x64, 0xc2, 0xe8, 0xe9, 0x65, 0xe9, 0x89, 0x37, - 0xa5, 0x7b, 0x27, 0x13, 0xac, 0x37, 0x6d, 0xfe, 0xab, 0x14, 0x4d, 0x69, 0xcf, 0x53, 0xcd, 0xf1, - 0x9f, 0xcf, 0x40, 0xdb, 0xc1, 0xa1, 0x6f, 0x8d, 0x18, 0x19, 0x35, 0x2a, 0x0e, 0x60, 0x20, 0x82, - 0x48, 0xfb, 0x93, 0x06, 0x5c, 0xfc, 0xc4, 0x08, 0x47, 0x47, 0xdb, 0x8e, 0x88, 0x73, 0xe6, 0xe1, - 0x65, 0xec, 0xaf, 0x2b, 0x49, 0x7f, 0x7d, 0x6e, 0xfb, 0x41, 0x64, 0xb1, 0xf5, 0x7c, 0x8b, 0x25, - 0x09, 0xfd, 0xc6, 0xc7, 0x5c, 0xdd, 0x12, 0x16, 0x9b, 0x08, 0x47, 0x1a, 0x8f, 0x17, 0x8e, 0xbc, - 0x07, 0x5d, 0xfc, 0xc5, 0xc8, 0x9e, 0x12, 0xcd, 0xa5, 0x14, 0xb0, 0x38, 0x63, 0x2d, 0x97, 0x82, - 0xa4, 0xcb, 0xe8, 0xf0, 0x61, 0x3b, 0x9c, 0x0e, 0xa6, 0x15, 0x0e, 0x0e, 0x0d, 0x1a, 0x4c, 0xb4, - 0x37, 0xb5, 0x62, 0xad, 0x10, 0xca, 0xc4, 0x34, 0x83, 0x7c, 0xa1, 0xa7, 0xa0, 0xc5, 0x03, 0xa0, - 0x9d, 0xed, 0x7e, 0x8b, 0xb2, 0x31, 0x06, 0xa0, 0x11, 0x74, 0xb9, 0x57, 0xe5, 0x54, 0xb2, 0x20, - 0xe3, 0x9d, 0x7c, 0x14, 0xf9, 0x82, 0x4f, 0x52, 0x1f, 0xf0, 0x70, 0x28, 0x48, 0x80, 0xd0, 0x73, - 0xd0, 0xf5, 0x0e, 0x0f, 0x6d, 0xcb, 0xc5, 0xbb, 0x4c, 0xd6, 0x6d, 0x4a, 0x86, 0x0c, 0x24, 0x41, - 0xd3, 0x31, 0xf6, 0x03, 0xcb, 0x73, 0xfb, 0x1d, 0xda, 0x2e, 0x3e, 0xf3, 0x62, 0xa1, 0xee, 0x63, - 0xc5, 0x42, 0x06, 0x2c, 0x65, 0x68, 0xcd, 0x89, 0x85, 0xbe, 0x95, 0x8c, 0x85, 0xca, 0x88, 0x2c, - 0x11, 0x2d, 0xfd, 0xa5, 0x02, 0xab, 0xf7, 0xdd, 0x60, 0x7a, 0x10, 0xb1, 0xe9, 0xab, 0x32, 0x8f, - 0xb4, 0x6b, 0xad, 0x65, 0x5c, 0xab, 0xf6, 0x77, 0x0d, 0x58, 0xe4, 0xeb, 0x20, 0xda, 0x43, 0xdd, - 0xd0, 0x53, 0xd0, 0x8a, 0xf6, 0x59, 0xce, 0x94, 0x18, 0x90, 0xf6, 0x6b, 0x95, 0x8c, 0x5f, 0x2b, - 0x45, 0x9a, 0x88, 0x9d, 0x6a, 0x89, 0xd8, 0xe9, 0x32, 0xc0, 0xa1, 0x3d, 0x0d, 0x8e, 0x86, 0xa1, - 0xe5, 0x60, 0x1e, 0xbd, 0xb5, 0x28, 0xe4, 0x9e, 0xe5, 0x60, 0xb4, 0x05, 0x9d, 0x03, 0xcb, 0xb5, - 0xbd, 0xf1, 0x70, 0x62, 0x84, 0x47, 0x01, 0x4f, 0xa8, 0xf3, 0x45, 0x43, 0xe3, 0xdd, 0x5b, 0xb4, - 0xb7, 0xde, 0x66, 0xa3, 0xf6, 0xc8, 0x20, 0xf4, 0x34, 0xb4, 0xdd, 0xa9, 0x33, 0xf4, 0x0e, 0x87, - 0xbe, 0xf7, 0x28, 0xa0, 0x69, 0x73, 0x55, 0x6f, 0xb9, 0x53, 0xe7, 0xa3, 0x43, 0xdd, 0x7b, 0x44, - 0x76, 0xb8, 0x16, 0xd9, 0xeb, 0x02, 0xdb, 0x1b, 0xb3, 0x94, 0xb9, 0x0c, 0x86, 0x78, 0x08, 0x19, - 0x6f, 0x62, 0x3b, 0x34, 0xe8, 0xf8, 0x56, 0xd9, 0xf1, 0xd1, 0x10, 0xf4, 0x02, 0xf4, 0x46, 0x9e, - 0x33, 0x31, 0x28, 0x9f, 0x6e, 0xfb, 0x9e, 0x43, 0xcd, 0xb1, 0xaa, 0xa7, 0xa0, 0xe8, 0x3d, 0x68, - 0xc7, 0x06, 0x11, 0xf4, 0xdb, 0x14, 0xd3, 0x73, 0xf9, 0x36, 0x9b, 0x08, 0xfe, 0x89, 0xaa, 0x42, - 0x64, 0x11, 0x01, 0xd1, 0x10, 0x61, 0xfc, 0x81, 0xf5, 0x25, 0xe6, 0x66, 0xd7, 0xe6, 0xb0, 0x7d, - 0xeb, 0x4b, 0x4c, 0x92, 0x2a, 0xcb, 0x0d, 0xb0, 0x1f, 0x8a, 0x44, 0xb7, 0xdf, 0xa5, 0x6a, 0xd4, - 0x65, 0x50, 0xae, 0xe2, 0xe8, 0x36, 0xf4, 0x82, 0xd0, 0xf0, 0xc3, 0xe1, 0xc4, 0x0b, 0xa8, 0x22, - 0xf4, 0x7b, 0x54, 0xcb, 0x33, 0x06, 0xea, 0x04, 0x63, 0xa2, 0xe2, 0x7b, 0xbc, 0x9b, 0xde, 0xa5, - 0xc3, 0xc4, 0x27, 0x99, 0x87, 0x72, 0x23, 0x9e, 0x67, 0xb1, 0xe4, 0x3c, 0x74, 0x58, 0x34, 0xcf, - 0x3a, 0x49, 0xb3, 0x0c, 0xd3, 0x38, 0xb0, 0xf1, 0xc7, 0xdc, 0xa7, 0xa8, 0x74, 0x71, 0x69, 0x30, - 0xd9, 0x20, 0x6c, 0x7c, 0x8c, 0xed, 0xfe, 0x12, 0xdd, 0x71, 0x9f, 0x3d, 0xcd, 0xd6, 0xef, 0x92, - 0x8e, 0x3a, 0xeb, 0xaf, 0xfd, 0x59, 0x15, 0x7a, 0x32, 0x6f, 0x89, 0x07, 0x63, 0x69, 0xa0, 0x30, - 0x1c, 0xf1, 0x49, 0x38, 0x8d, 0x5d, 0x82, 0x96, 0x65, 0x9d, 0xd4, 0x6e, 0x9a, 0x7a, 0x9b, 0xc1, - 0xe8, 0x04, 0x44, 0xff, 0x99, 0x4c, 0xa9, 0xb1, 0x56, 0x29, 0x97, 0x5b, 0x14, 0x42, 0xa3, 0xa0, - 0x3e, 0x2c, 0x88, 0x84, 0x95, 0x59, 0x8d, 0xf8, 0x24, 0x2d, 0x07, 0x53, 0x8b, 0x62, 0x65, 0x56, - 0x23, 0x3e, 0xd1, 0x6d, 0xe8, 0xb0, 0x29, 0x27, 0x86, 0x6f, 0x38, 0xc2, 0x66, 0xae, 0x14, 0x78, - 0x9e, 0x0f, 0xf0, 0xc9, 0xc7, 0xc4, 0x8d, 0xed, 0x19, 0x96, 0xaf, 0x33, 0xfd, 0xda, 0xa3, 0xe3, - 0xd0, 0x3a, 0xa8, 0x6c, 0x9e, 0x43, 0xcb, 0xc6, 0xdc, 0xfe, 0x16, 0x58, 0xd6, 0x4a, 0xe1, 0xb7, - 0x2d, 0x1b, 0x33, 0x03, 0x8b, 0x16, 0x41, 0xf5, 0xa9, 0xc9, 0xec, 0x8b, 0x42, 0xa8, 0x36, 0x5d, - 0x01, 0xe6, 0x90, 0x87, 0xc2, 0xd1, 0xb3, 0xfd, 0x88, 0x51, 0x29, 0x24, 0x42, 0xe2, 0xbd, 0xa9, - 0xc3, 0x2c, 0x14, 0xd8, 0x82, 0xdc, 0xa9, 0x43, 0xed, 0x73, 0x13, 0x56, 0x47, 0x53, 0xdf, 0x67, - 0xbb, 0x55, 0x72, 0x9e, 0x36, 0xcd, 0xf4, 0x97, 0x79, 0xe3, 0x4e, 0x62, 0x3a, 0xed, 0x07, 0x75, - 0x58, 0x26, 0xce, 0x8d, 0xcb, 0x70, 0xae, 0x68, 0xe5, 0x32, 0x80, 0x19, 0x84, 0x43, 0xc9, 0x25, - 0xb7, 0xcc, 0x20, 0xe4, 0x3b, 0xd8, 0x77, 0x44, 0xb0, 0x51, 0x3d, 0x2d, 0x9f, 0x4a, 0x39, 0xdc, - 0x6c, 0xc0, 0xf1, 0x98, 0xa5, 0xc9, 0x2b, 0xd0, 0xe5, 0x85, 0x05, 0x29, 0x03, 0xee, 0x30, 0xe0, - 0x6e, 0xfe, 0xc6, 0xd1, 0xc8, 0x2d, 0x92, 0x26, 0x42, 0x8e, 0x85, 0x79, 0x43, 0x8e, 0x66, 0x3a, - 0xe4, 0x78, 0x1f, 0x16, 0x65, 0x1b, 0x17, 0xae, 0x72, 0xa6, 0x91, 0xf7, 0x24, 0x23, 0x0f, 0x92, - 0x11, 0x03, 0xc8, 0x11, 0xc3, 0x15, 0xe8, 0xba, 0x18, 0x9b, 0xc3, 0xd0, 0x37, 0xdc, 0xe0, 0x10, - 0xfb, 0x54, 0x41, 0x9a, 0x7a, 0x87, 0x00, 0xef, 0x71, 0x18, 0x7a, 0x07, 0x80, 0xae, 0x93, 0xd5, - 0xd5, 0x3a, 0xa7, 0xd5, 0xd5, 0xa8, 0x02, 0xd1, 0xba, 0x1a, 0x65, 0x0d, 0xfd, 0x79, 0x6e, 0x61, - 0x89, 0xf6, 0xaf, 0x15, 0xb8, 0xc8, 0x2b, 0x2c, 0xe7, 0xa1, 0xa5, 0x45, 0x41, 0x83, 0xd8, 0x75, - 0xab, 0xa7, 0x54, 0x2c, 0x6a, 0x25, 0xe2, 0xec, 0x7a, 0x4e, 0x9c, 0x2d, 0xe7, 0xeb, 0x8d, 0x4c, - 0xbe, 0x1e, 0x95, 0x2f, 0x17, 0xce, 0x52, 0xbe, 0x44, 0x2b, 0x50, 0xa7, 0xc9, 0x23, 0xd5, 0xa2, - 0x96, 0xce, 0x3e, 0x4a, 0x49, 0x57, 0xfb, 0x7e, 0x05, 0xba, 0xfb, 0xd8, 0xf0, 0x47, 0x47, 0x82, - 0x97, 0x6f, 0x25, 0x4b, 0xbe, 0x2f, 0x14, 0x96, 0x7c, 0xa5, 0x41, 0x3f, 0x43, 0xb5, 0x5e, 0x82, - 0x22, 0xf4, 0x42, 0x23, 0xa2, 0x73, 0xe8, 0x4e, 0x1d, 0x5e, 0x03, 0x5d, 0xa4, 0x0d, 0x9c, 0xd8, - 0xdd, 0xa9, 0xa3, 0xfd, 0xa7, 0x02, 0x9d, 0x5f, 0x22, 0xd3, 0x08, 0xe6, 0xdc, 0x48, 0x32, 0x67, - 0xbd, 0x90, 0x39, 0x3a, 0xc9, 0x04, 0xf1, 0x31, 0xfe, 0x19, 0x2c, 0x85, 0xff, 0x93, 0x02, 0x83, - 0xfd, 0x13, 0x77, 0xa4, 0x33, 0x4f, 0x74, 0x1e, 0x96, 0x76, 0x05, 0xba, 0xc7, 0x52, 0x8c, 0x5d, - 0xa1, 0x6a, 0xda, 0x39, 0x4e, 0xd6, 0x2f, 0xee, 0x81, 0x2a, 0xea, 0xd2, 0x7c, 0xc1, 0x62, 0x83, - 0x78, 0x29, 0x9f, 0xf2, 0x14, 0x81, 0xd4, 0x63, 0x2c, 0xfa, 0x32, 0x50, 0xfb, 0x03, 0x05, 0x96, - 0x73, 0x3a, 0xa2, 0x4b, 0xb0, 0xc0, 0xab, 0x25, 0x3c, 0x06, 0x61, 0xd6, 0x6f, 0x12, 0x21, 0xc5, - 0xd5, 0x3f, 0xcb, 0xcc, 0x86, 0xee, 0x26, 0x49, 0xfe, 0xa3, 0x64, 0xd0, 0xcc, 0x48, 0xc9, 0x0c, - 0xd0, 0x00, 0x9a, 0xdc, 0xc3, 0x8a, 0x6c, 0x3b, 0xfa, 0xd6, 0x1c, 0x40, 0x77, 0x70, 0xbc, 0xab, - 0xcd, 0xc7, 0xd5, 0xd8, 0xff, 0xc4, 0xa4, 0x26, 0x9d, 0x92, 0xa9, 0xfd, 0x87, 0x02, 0xcb, 0x12, - 0xbe, 0xf9, 0x6a, 0x5b, 0xf1, 0xee, 0x5b, 0x79, 0xbc, 0xdd, 0x57, 0xaa, 0xde, 0x54, 0xcf, 0x58, - 0xbd, 0x79, 0x1a, 0x20, 0x92, 0x83, 0xe0, 0x6c, 0x02, 0xa2, 0xfd, 0x58, 0x81, 0x8b, 0xef, 0x1b, - 0xae, 0xe9, 0x1d, 0x1e, 0x9e, 0x87, 0xda, 0xbe, 0x07, 0x52, 0x7e, 0x5e, 0xbe, 0x9a, 0x29, 0xa7, - 0xf5, 0x2f, 0xc3, 0x92, 0xcf, 0x76, 0x2d, 0x53, 0xd6, 0xec, 0xaa, 0xae, 0x8a, 0x86, 0x48, 0x5f, - 0xff, 0xb6, 0x02, 0x88, 0xac, 0xfc, 0x96, 0x61, 0x1b, 0xee, 0x08, 0xcf, 0x43, 0xfe, 0xf3, 0xd0, - 0x93, 0x02, 0x9d, 0xe8, 0x16, 0x42, 0x32, 0xd2, 0x09, 0xd0, 0x87, 0xd0, 0x3b, 0x60, 0xc8, 0x86, - 0x3e, 0x36, 0x02, 0xcf, 0xe5, 0x62, 0x29, 0x28, 0x5b, 0xde, 0xf3, 0xad, 0xf1, 0x18, 0xfb, 0x5b, - 0x9e, 0x6b, 0xf2, 0x94, 0xe2, 0x40, 0x90, 0x4a, 0x06, 0x13, 0xe3, 0x88, 0x63, 0xbf, 0x48, 0x48, - 0x51, 0xf0, 0x47, 0xd9, 0x11, 0x60, 0xc3, 0x8e, 0x99, 0x11, 0xef, 0x95, 0x2a, 0x6b, 0xd8, 0x2f, - 0xae, 0x5f, 0xe7, 0xc4, 0x61, 0xda, 0x8f, 0x14, 0x40, 0x51, 0x15, 0x81, 0x96, 0x5e, 0xa8, 0x85, - 0xa7, 0x87, 0x2a, 0x39, 0x5b, 0xf6, 0x53, 0xd0, 0x32, 0xc5, 0x48, 0xee, 0x94, 0x62, 0x00, 0xdd, - 0x3f, 0x29, 0xd1, 0x43, 0xa2, 0x81, 0xd8, 0x14, 0x39, 0x3a, 0x03, 0xde, 0xa5, 0x30, 0x39, 0x88, - 0xab, 0xa5, 0x83, 0xb8, 0x64, 0x51, 0xb6, 0x2e, 0x15, 0x65, 0xb5, 0xbf, 0xae, 0x80, 0x4a, 0xb7, - 0x96, 0xad, 0xb8, 0xaa, 0x56, 0x8a, 0xe8, 0x2b, 0xd0, 0xe5, 0xb7, 0x79, 0x24, 0xc2, 0x3b, 0x0f, - 0x13, 0x93, 0xa1, 0xeb, 0xb0, 0xc2, 0x3a, 0xf9, 0x38, 0x98, 0xda, 0x71, 0x5a, 0xca, 0x12, 0x26, - 0xf4, 0x90, 0xed, 0x69, 0xa4, 0x49, 0x8c, 0xf8, 0x04, 0x2e, 0x8e, 0x6d, 0xef, 0xc0, 0xb0, 0x87, - 0xb2, 0x78, 0x98, 0x0c, 0x4b, 0xe9, 0xfd, 0x0a, 0x9b, 0x60, 0x3f, 0x29, 0xc5, 0x00, 0x6d, 0x43, - 0x37, 0xc0, 0xf8, 0x41, 0x9c, 0xab, 0xd6, 0xcb, 0xe5, 0xaa, 0x1d, 0x32, 0x4a, 0x7c, 0x69, 0x3f, - 0x50, 0x60, 0x31, 0x75, 0xc4, 0x92, 0xae, 0xb2, 0x28, 0xd9, 0x2a, 0xcb, 0x0d, 0xa8, 0x13, 0xcf, - 0xc5, 0x76, 0x9c, 0x5e, 0x51, 0xee, 0x2f, 0xcf, 0xab, 0xb3, 0x21, 0xe8, 0x1a, 0x2c, 0xe7, 0x5c, - 0xf4, 0xe0, 0x4a, 0x80, 0xb2, 0xf7, 0x3c, 0xb4, 0x9f, 0xd4, 0xa0, 0x9d, 0x60, 0xc7, 0x8c, 0x12, - 0xd1, 0xb9, 0x94, 0xc7, 0x8b, 0x0e, 0xf4, 0x89, 0xe2, 0x39, 0xd8, 0x61, 0xf9, 0x25, 0x4f, 0x77, - 0x1d, 0xec, 0xd0, 0xec, 0x32, 0x99, 0x38, 0x36, 0xe4, 0xc4, 0x51, 0x4e, 0xae, 0x17, 0x4e, 0x49, - 0xae, 0x9b, 0x72, 0x72, 0x2d, 0x19, 0x52, 0x2b, 0x6d, 0x48, 0x65, 0xeb, 0x35, 0xd7, 0x61, 0x79, - 0xc4, 0x0e, 0x20, 0x6e, 0x9d, 0x6c, 0x45, 0x4d, 0x3c, 0x6c, 0xcd, 0x6b, 0x42, 0xef, 0xc7, 0x75, - 0x59, 0x26, 0x67, 0x96, 0x9e, 0x14, 0xe5, 0xee, 0x5c, 0x3a, 0x4c, 0xcc, 0xc2, 0x4b, 0xd3, 0xaf, - 0x74, 0xad, 0xa8, 0xfb, 0x98, 0xb5, 0xa2, 0x67, 0xa0, 0x2d, 0xa2, 0x18, 0x62, 0xf3, 0x3d, 0xe6, - 0xfe, 0x84, 0x43, 0x30, 0x03, 0xc9, 0x23, 0x2c, 0xca, 0xc7, 0x34, 0xe9, 0xea, 0x87, 0x9a, 0xad, - 0x7e, 0x5c, 0x82, 0x05, 0x2b, 0x18, 0x1e, 0x1a, 0x0f, 0x30, 0x2d, 0xc4, 0x34, 0xf5, 0x86, 0x15, - 0xdc, 0x36, 0x1e, 0x60, 0xed, 0xdf, 0xab, 0xd0, 0x8b, 0x37, 0xdd, 0xd2, 0xbe, 0xa4, 0xcc, 0x85, - 0xa7, 0x3d, 0x50, 0xe3, 0x88, 0x88, 0x72, 0x79, 0x46, 0xe6, 0x9e, 0x3e, 0x09, 0x5d, 0x9c, 0xa4, - 0xec, 0x56, 0x0a, 0x02, 0x6a, 0x67, 0x0c, 0x02, 0xe6, 0xbe, 0x00, 0xf1, 0x3a, 0xac, 0x46, 0xfb, - 0xb1, 0xb4, 0x78, 0x96, 0x8e, 0xad, 0x88, 0xc6, 0xbd, 0x24, 0x13, 0x0a, 0x9c, 0xc1, 0x42, 0x91, - 0x33, 0x48, 0x2b, 0x42, 0x33, 0xa3, 0x08, 0xd9, 0x7b, 0x18, 0xad, 0x9c, 0x7b, 0x18, 0xda, 0x7d, - 0x58, 0xa6, 0x75, 0xf2, 0x60, 0xe4, 0x5b, 0x07, 0x38, 0x4a, 0x14, 0xca, 0x08, 0x77, 0x00, 0xcd, - 0x54, 0xae, 0x11, 0x7d, 0x6b, 0xdf, 0x55, 0xe0, 0x62, 0x76, 0x5e, 0xaa, 0x37, 0xb1, 0x4b, 0x51, - 0x24, 0x97, 0xf2, 0x29, 0x2c, 0x27, 0xe2, 0x4d, 0x69, 0xe6, 0xc2, 0x18, 0x3d, 0x87, 0x74, 0x1d, - 0xc5, 0xb3, 0x08, 0x98, 0xf6, 0x13, 0x25, 0x3a, 0x72, 0x20, 0xb0, 0x31, 0x3d, 0xd5, 0x21, 0x3b, - 0x9d, 0xe7, 0xda, 0x96, 0x1b, 0x95, 0x6a, 0xf8, 0x2a, 0x19, 0x90, 0x97, 0x6a, 0x7e, 0x11, 0x16, - 0x79, 0xa7, 0x68, 0xc3, 0x2a, 0x1d, 0xa8, 0xf5, 0xd8, 0xc8, 0x68, 0xab, 0x7a, 0x1e, 0x7a, 0xfc, - 0xb0, 0x45, 0x60, 0xac, 0xe6, 0x1d, 0xc1, 0xdc, 0x05, 0x55, 0x74, 0x3b, 0xfb, 0x26, 0xb9, 0xc8, - 0x87, 0x46, 0x21, 0xdf, 0xef, 0x2b, 0xd0, 0x97, 0xb7, 0xcc, 0x04, 0x0b, 0x1e, 0x27, 0xf0, 0x7b, - 0x5b, 0x3e, 0x7e, 0x7f, 0xf1, 0x54, 0x9a, 0x62, 0x5c, 0xe2, 0x10, 0xfe, 0x8f, 0x2a, 0xf4, 0x56, - 0x05, 0x49, 0x0c, 0xb7, 0xad, 0x20, 0xf4, 0xad, 0x83, 0xe9, 0xbc, 0x47, 0xc1, 0x23, 0x68, 0x8f, - 0x8e, 0xf0, 0xe8, 0xc1, 0xc4, 0xb3, 0x62, 0xf9, 0xdc, 0xcc, 0xa7, 0xab, 0x18, 0xf5, 0xc6, 0x56, - 0x3c, 0x07, 0x3b, 0x3f, 0x4b, 0xce, 0x3a, 0x18, 0x82, 0x9a, 0xee, 0x90, 0x3c, 0xb4, 0x6a, 0xb1, - 0x43, 0xab, 0x37, 0xe4, 0x43, 0xab, 0x99, 0x51, 0x48, 0xe2, 0xcc, 0xea, 0xef, 0x2b, 0xf0, 0x73, - 0xb9, 0xd4, 0xcd, 0x97, 0x53, 0x15, 0xd5, 0xa1, 0xb6, 0xa1, 0x99, 0x4a, 0x84, 0xd7, 0x4f, 0x95, - 0x24, 0xaf, 0xe4, 0xb2, 0x22, 0x63, 0x10, 0x47, 0x5f, 0xb1, 0x13, 0xa8, 0x9d, 0x36, 0x0b, 0xb7, - 0x45, 0x69, 0x16, 0x31, 0x12, 0x6d, 0x41, 0x87, 0x15, 0x1b, 0x86, 0xc7, 0x16, 0x7e, 0x24, 0x8e, - 0x89, 0xd7, 0x0a, 0x9c, 0x36, 0xed, 0xf9, 0xb1, 0x85, 0x1f, 0xe9, 0x6d, 0x3b, 0xfa, 0x1d, 0x68, - 0xdf, 0xaf, 0x01, 0xc4, 0x6d, 0x24, 0x9b, 0x8b, 0x3d, 0x01, 0x37, 0xed, 0x04, 0x84, 0x44, 0x1b, - 0x72, 0x84, 0x2b, 0x3e, 0xd1, 0xbd, 0xf8, 0x40, 0xc6, 0xb4, 0x82, 0x90, 0x73, 0xe7, 0xb5, 0x59, - 0xd4, 0x08, 0x46, 0x11, 0xe1, 0x71, 0xfd, 0x09, 0x62, 0x08, 0x7a, 0x15, 0xd0, 0xd8, 0xf7, 0x1e, - 0x59, 0xee, 0x38, 0x99, 0x99, 0xb0, 0x04, 0x66, 0x89, 0xb7, 0x24, 0x52, 0x93, 0xcf, 0x41, 0x4d, - 0x75, 0x17, 0x6c, 0x79, 0x63, 0x26, 0x21, 0x77, 0xa4, 0xd9, 0xb8, 0x32, 0x2f, 0xca, 0x38, 0xe8, - 0x79, 0xf0, 0x3d, 0xc3, 0x1f, 0x63, 0x21, 0x59, 0x1e, 0xad, 0xc9, 0xc0, 0x81, 0x01, 0x6a, 0x7a, - 0x5d, 0x39, 0x67, 0xb5, 0x6f, 0xca, 0x6a, 0x7f, 0xba, 0x9f, 0x22, 0x13, 0x25, 0x14, 0x7f, 0x30, - 0x82, 0x95, 0x3c, 0x8a, 0x73, 0xd0, 0xcc, 0x61, 0x5d, 0xef, 0x46, 0xc1, 0x33, 0x95, 0x46, 0xd1, - 0x2e, 0x94, 0x28, 0x66, 0x57, 0xa4, 0x62, 0xb6, 0xf6, 0x3b, 0x55, 0x40, 0x59, 0x53, 0x40, 0x3d, - 0xa8, 0x44, 0x93, 0x54, 0x76, 0xb6, 0x53, 0x6a, 0x57, 0xc9, 0xa8, 0xdd, 0x53, 0xd0, 0x8a, 0xa2, - 0x02, 0xee, 0xfe, 0x63, 0x40, 0x52, 0x29, 0x6b, 0xb2, 0x52, 0x26, 0x08, 0xab, 0xcb, 0x55, 0xf6, - 0xeb, 0xb0, 0x62, 0x1b, 0x41, 0x38, 0x64, 0xe5, 0xfc, 0xd0, 0x72, 0x70, 0x10, 0x1a, 0xce, 0x84, - 0x8a, 0xb3, 0xa6, 0x23, 0xd2, 0xb6, 0x4d, 0x9a, 0xee, 0x89, 0x16, 0xf4, 0xb1, 0x88, 0xc3, 0x89, - 0x47, 0xe6, 0x37, 0x22, 0xde, 0x2c, 0x6b, 0xfc, 0x71, 0x01, 0x9d, 0xe9, 0x55, 0x2b, 0x0a, 0x4f, - 0x07, 0x07, 0xd0, 0x93, 0x1b, 0x73, 0x44, 0x78, 0x43, 0x16, 0x61, 0xb9, 0x10, 0x38, 0x21, 0xc7, - 0x23, 0x40, 0x59, 0x57, 0x92, 0xe4, 0x9b, 0x22, 0xf3, 0x6d, 0x96, 0x3c, 0x12, 0x7c, 0xad, 0xca, - 0x02, 0xff, 0xe7, 0x2a, 0xa0, 0x38, 0xca, 0x8b, 0x4e, 0xe6, 0xcb, 0x84, 0x46, 0xd7, 0x60, 0x39, - 0x1b, 0x03, 0x8a, 0xf0, 0x17, 0x65, 0x22, 0xc0, 0xbc, 0x68, 0xad, 0x9a, 0x77, 0x6b, 0xf6, 0xad, - 0x68, 0x0b, 0x60, 0x61, 0xed, 0xda, 0x29, 0xe7, 0x24, 0xf2, 0x2e, 0x30, 0x4c, 0xdf, 0xb7, 0x65, - 0xbe, 0xe4, 0x46, 0x81, 0xb3, 0xce, 0x2c, 0x7b, 0xe6, 0x65, 0x5b, 0x29, 0xe8, 0x6e, 0x9c, 0x31, - 0xe8, 0xbe, 0x02, 0x5d, 0x1f, 0x8f, 0xbc, 0x63, 0xec, 0x33, 0xfd, 0xa5, 0x81, 0x6f, 0x5d, 0xef, - 0x70, 0x20, 0xd5, 0xdc, 0xf9, 0xaf, 0xd0, 0xfe, 0x66, 0x15, 0x96, 0x22, 0x9e, 0x9f, 0x49, 0x9e, - 0xb3, 0xef, 0x5b, 0x3c, 0x71, 0x01, 0x7e, 0x96, 0x2f, 0xc0, 0x6f, 0xcf, 0xc8, 0x91, 0x4a, 0xcb, - 0xef, 0xa7, 0x23, 0x82, 0x2f, 0x61, 0x81, 0x97, 0xcb, 0x33, 0x8e, 0xb3, 0x4c, 0xc1, 0x62, 0x05, - 0xea, 0xc4, 0x4f, 0x8b, 0xfa, 0x26, 0xfb, 0x60, 0xbc, 0x4f, 0xde, 0xe6, 0xe6, 0xbe, 0xb3, 0x2b, - 0x5d, 0xe6, 0xd6, 0xbe, 0x57, 0x05, 0xd8, 0x3f, 0x71, 0x47, 0x37, 0x99, 0xe1, 0x6f, 0x42, 0x6d, - 0xf6, 0x1d, 0x3f, 0xd2, 0x9f, 0xea, 0x2a, 0xed, 0x5b, 0x42, 0x0f, 0xa4, 0xa2, 0x4c, 0x35, 0x5d, - 0x94, 0x29, 0x2a, 0xa7, 0x14, 0x3b, 0xf7, 0x6f, 0x43, 0x8d, 0x3a, 0x69, 0x76, 0xfd, 0xad, 0xe4, - 0x59, 0x36, 0x1d, 0x82, 0xd6, 0x41, 0x6c, 0xf9, 0x3b, 0x2e, 0xdb, 0xd3, 0xa9, 0xab, 0xaf, 0xea, - 0x69, 0x30, 0x7a, 0x01, 0x7a, 0xac, 0x28, 0x17, 0x75, 0x64, 0xf9, 0x64, 0x0a, 0x9a, 0x8d, 0x18, - 0x5a, 0x39, 0x11, 0x03, 0xc1, 0x6b, 0xfa, 0xde, 0x64, 0x92, 0x98, 0x8e, 0xd5, 0x63, 0xd2, 0x60, - 0xed, 0xb7, 0xaa, 0x70, 0x89, 0x70, 0xf8, 0xbc, 0xf2, 0x80, 0x32, 0x2a, 0x94, 0xd8, 0x29, 0xaa, - 0xf2, 0x4e, 0x71, 0x03, 0x16, 0x58, 0xd9, 0x47, 0x44, 0xb2, 0x6b, 0xc5, 0x3a, 0xc1, 0x74, 0x48, - 0x17, 0x03, 0xe6, 0xaf, 0x1a, 0x48, 0xa7, 0xfd, 0x8d, 0x79, 0x4f, 0xfb, 0x17, 0xd2, 0x85, 0xe2, - 0x84, 0x82, 0x35, 0xe5, 0x5d, 0xee, 0x3e, 0x74, 0xf5, 0xa4, 0x99, 0x20, 0x04, 0xb5, 0xc4, 0x1d, - 0x60, 0xfa, 0x9b, 0xa6, 0xfa, 0xc6, 0xc4, 0x18, 0x59, 0xe1, 0x09, 0x65, 0x6a, 0x5d, 0x8f, 0xbe, - 0xf3, 0x6d, 0x92, 0x64, 0xdc, 0x17, 0xc5, 0x21, 0x30, 0xb7, 0xf8, 0x79, 0x24, 0xbb, 0x09, 0xab, - 0xdc, 0xc0, 0x53, 0x96, 0xce, 0x42, 0xf7, 0x65, 0x06, 0x93, 0x17, 0xb2, 0x09, 0xab, 0x21, 0xd5, - 0xb3, 0xf4, 0x18, 0x26, 0xf7, 0x65, 0xd6, 0x28, 0x8f, 0x29, 0x73, 0x10, 0xff, 0x0c, 0xbb, 0xbe, - 0xc6, 0x99, 0xcb, 0x0d, 0x16, 0xdc, 0xa9, 0xc3, 0xd7, 0xa9, 0x9d, 0xc0, 0x53, 0xec, 0x4e, 0xfe, - 0x81, 0x4c, 0xd1, 0x9c, 0xa7, 0x2d, 0xb9, 0x2b, 0x4f, 0xf9, 0xb8, 0x3f, 0x57, 0xe0, 0x72, 0x01, - 0xee, 0xf9, 0xb2, 0xc8, 0xdd, 0x5c, 0xfc, 0x85, 0xd9, 0xbf, 0x84, 0x9b, 0x5d, 0xb6, 0x90, 0x09, - 0xfd, 0xef, 0x1a, 0x2c, 0x65, 0x3a, 0x9d, 0x59, 0xf7, 0x5e, 0x01, 0x44, 0x44, 0x11, 0xbd, 0x52, - 0xa5, 0x65, 0x15, 0xbe, 0xf3, 0xaa, 0xee, 0xd4, 0x89, 0x5e, 0xa8, 0xee, 0x7a, 0x26, 0x46, 0x0f, - 0x58, 0x6f, 0x76, 0xda, 0x12, 0xc9, 0xaf, 0x76, 0xda, 0xc3, 0xa3, 0x0c, 0x89, 0x1b, 0xbb, 0x53, - 0x87, 0x1d, 0xcd, 0x70, 0x69, 0xb3, 0xbd, 0x94, 0x20, 0x93, 0xc0, 0xe8, 0x08, 0x96, 0xe8, 0x25, - 0xc7, 0x69, 0x38, 0xf6, 0x48, 0x12, 0x47, 0x29, 0x63, 0x7b, 0xf6, 0xcf, 0x9f, 0x01, 0xd7, 0x47, - 0x7c, 0x3c, 0x59, 0x00, 0xcf, 0xe3, 0x5c, 0x19, 0x2a, 0x30, 0x59, 0xee, 0xc8, 0x73, 0x22, 0x4c, - 0x8d, 0x33, 0x63, 0xda, 0xe1, 0xe3, 0x65, 0x4c, 0x49, 0xe8, 0x60, 0x0b, 0x56, 0x73, 0x97, 0x3f, - 0x2b, 0x04, 0xa8, 0x27, 0xb3, 0xbd, 0x5b, 0xb0, 0x92, 0xb7, 0xae, 0xc7, 0x98, 0x23, 0x43, 0xf1, - 0x59, 0xe6, 0xd0, 0xfe, 0xa6, 0x02, 0xdd, 0x6d, 0x6c, 0xe3, 0x10, 0x3f, 0xe9, 0x53, 0xf2, 0xcc, - 0xa1, 0x7f, 0x35, 0x7b, 0xe8, 0x9f, 0xb9, 0xc3, 0x50, 0xcb, 0xb9, 0xc3, 0x70, 0x39, 0xba, 0xbe, - 0x41, 0x66, 0xa9, 0xcb, 0xd1, 0x85, 0x89, 0xde, 0x86, 0xce, 0xc4, 0xb7, 0x1c, 0xc3, 0x3f, 0x19, - 0x3e, 0xc0, 0x27, 0x01, 0xdf, 0x46, 0x06, 0x05, 0x5b, 0xd1, 0xce, 0x76, 0xa0, 0xb7, 0x79, 0xff, - 0x0f, 0xf0, 0x09, 0xbd, 0x1c, 0x12, 0x25, 0x8f, 0xec, 0x66, 0x61, 0x4d, 0x4f, 0x40, 0xae, 0xbe, - 0x0c, 0xad, 0xe8, 0x02, 0x16, 0x6a, 0x42, 0xed, 0xf6, 0xd4, 0xb6, 0xd5, 0x0b, 0xa8, 0x05, 0x75, - 0x9a, 0x5e, 0xaa, 0x0a, 0xf9, 0x49, 0x23, 0x43, 0xb5, 0x72, 0xf5, 0x17, 0xa0, 0x15, 0x5d, 0xfd, - 0x40, 0x6d, 0x58, 0xb8, 0xef, 0x7e, 0xe0, 0x7a, 0x8f, 0x5c, 0xf5, 0x02, 0x5a, 0x80, 0xea, 0x4d, - 0xdb, 0x56, 0x15, 0xd4, 0x85, 0xd6, 0x7e, 0xe8, 0x63, 0x83, 0x88, 0x50, 0xad, 0xa0, 0x1e, 0xc0, - 0xfb, 0x56, 0x10, 0x7a, 0xbe, 0x35, 0x32, 0x6c, 0xb5, 0x7a, 0xf5, 0x4b, 0xe8, 0xc9, 0x95, 0x7e, - 0xd4, 0x81, 0xe6, 0xae, 0x17, 0xbe, 0xf7, 0x85, 0x15, 0x84, 0xea, 0x05, 0xd2, 0x7f, 0xd7, 0x0b, - 0xf7, 0x7c, 0x1c, 0x60, 0x37, 0x54, 0x15, 0x04, 0xd0, 0xf8, 0xc8, 0xdd, 0xb6, 0x82, 0x07, 0x6a, - 0x05, 0x2d, 0xf3, 0xc3, 0x3c, 0xc3, 0xde, 0xe1, 0xa5, 0x73, 0xb5, 0x4a, 0x86, 0x47, 0x5f, 0x35, - 0xa4, 0x42, 0x27, 0xea, 0x72, 0x67, 0xef, 0xbe, 0x5a, 0x67, 0xd4, 0x93, 0x9f, 0x8d, 0xab, 0x26, - 0xa8, 0xe9, 0x83, 0x68, 0x32, 0x27, 0x5b, 0x44, 0x04, 0x52, 0x2f, 0x90, 0x95, 0xf1, 0x1b, 0x01, - 0xaa, 0x82, 0x16, 0xa1, 0x9d, 0x38, 0x5b, 0x57, 0x2b, 0x04, 0x70, 0xc7, 0x9f, 0x8c, 0xb8, 0x7e, - 0x31, 0x12, 0x88, 0xb2, 0x6e, 0x13, 0x4e, 0xd4, 0xae, 0xde, 0x82, 0xa6, 0xc8, 0x85, 0x48, 0x57, - 0xce, 0x22, 0xf2, 0xa9, 0x5e, 0x40, 0x4b, 0xd0, 0x95, 0x5e, 0x3d, 0xaa, 0x0a, 0x42, 0xd0, 0x93, - 0xdf, 0x28, 0xab, 0x95, 0xab, 0x9b, 0x00, 0x71, 0xb2, 0x40, 0xc8, 0xd9, 0x71, 0x8f, 0x0d, 0xdb, - 0x32, 0x19, 0x6d, 0xa4, 0x89, 0x70, 0x97, 0x72, 0x87, 0xd9, 0xad, 0x5a, 0xb9, 0xfa, 0x36, 0x34, - 0x45, 0x5c, 0x4b, 0xe0, 0x3a, 0x76, 0xbc, 0x63, 0xcc, 0x24, 0xb3, 0x8f, 0x43, 0x26, 0xc7, 0x9b, - 0x0e, 0x76, 0x4d, 0xb5, 0x42, 0xc8, 0xb8, 0x3f, 0x31, 0x8d, 0x50, 0xdc, 0xd4, 0x55, 0xab, 0x9b, - 0xff, 0xb8, 0x02, 0xc0, 0x4e, 0x96, 0x3d, 0xcf, 0x37, 0xd1, 0x84, 0xde, 0x38, 0xd9, 0xf2, 0x9c, - 0x89, 0xe7, 0x8a, 0xe3, 0xae, 0x00, 0x5d, 0xcf, 0x94, 0x66, 0xd8, 0x67, 0xb6, 0x2b, 0xe7, 0xce, - 0xe0, 0x85, 0x82, 0x11, 0xa9, 0xee, 0xda, 0x05, 0xf4, 0x90, 0x62, 0x24, 0x19, 0xc9, 0x3d, 0x6b, - 0xf4, 0x40, 0x9c, 0x02, 0x6e, 0x9e, 0xf6, 0x7a, 0x38, 0xd5, 0x59, 0xe0, 0x7c, 0xbe, 0x00, 0xe7, - 0x7e, 0xe8, 0x5b, 0xee, 0x58, 0xec, 0x99, 0xda, 0x05, 0x34, 0x4d, 0xbd, 0x5f, 0x16, 0x48, 0xbf, - 0x59, 0xee, 0xc9, 0xf2, 0xe3, 0xa2, 0x9d, 0xc0, 0x62, 0xea, 0xaf, 0x23, 0xd0, 0x2b, 0x45, 0xcf, - 0xbd, 0xf2, 0xfe, 0xea, 0x62, 0xf0, 0x6a, 0xc9, 0xde, 0x11, 0x46, 0x07, 0x7a, 0xf2, 0x7f, 0x1e, - 0xa0, 0x97, 0x8b, 0xa7, 0xc8, 0x3c, 0x44, 0x1d, 0xbc, 0x52, 0xae, 0x73, 0x84, 0xee, 0x33, 0xa6, - 0xd2, 0xb3, 0xd1, 0xe5, 0xbe, 0x00, 0x1e, 0x9c, 0x1e, 0xbc, 0x68, 0x17, 0x90, 0x49, 0xa2, 0x8c, - 0xd4, 0xa3, 0x59, 0xb4, 0x51, 0xb4, 0x2b, 0xe6, 0xbf, 0xae, 0x9d, 0x8d, 0xe5, 0xb3, 0xb4, 0x61, - 0x9e, 0xb6, 0x8a, 0xcc, 0x0b, 0xfd, 0xb3, 0xac, 0x22, 0x81, 0xe2, 0xf4, 0x55, 0x3c, 0x06, 0x96, - 0x09, 0x4b, 0xc6, 0x72, 0x9e, 0xe9, 0x65, 0xd5, 0x3c, 0xce, 0x84, 0x8a, 0x5f, 0xf5, 0xcd, 0xc6, - 0x78, 0x42, 0x0d, 0x39, 0x7d, 0xed, 0xe2, 0x5a, 0xe1, 0xc1, 0x4d, 0xfe, 0xbb, 0xe1, 0xc1, 0xf5, - 0xf2, 0x03, 0x92, 0x7a, 0x2e, 0x3f, 0x4a, 0x2d, 0x12, 0x59, 0xee, 0x63, 0xda, 0x22, 0x3d, 0xcf, - 0x7f, 0xe7, 0xaa, 0x5d, 0x40, 0xbf, 0x2c, 0x6d, 0x0d, 0x68, 0xbd, 0x58, 0x3d, 0xe4, 0x9b, 0x59, - 0xb3, 0x79, 0xf8, 0x1b, 0x80, 0x98, 0x35, 0xbb, 0x87, 0xd6, 0x78, 0xea, 0x1b, 0x4c, 0xc5, 0x8b, - 0x9d, 0x61, 0xb6, 0xb3, 0x40, 0xf5, 0xfa, 0x99, 0xc6, 0x44, 0x4b, 0x1b, 0x01, 0xdc, 0xc1, 0xe1, - 0x87, 0xf4, 0x6d, 0x62, 0x90, 0x5d, 0x59, 0xec, 0xf7, 0x79, 0x17, 0x81, 0xee, 0xa5, 0x12, 0x3d, - 0x23, 0x24, 0x87, 0xd0, 0xbe, 0x43, 0x72, 0x35, 0x1a, 0x73, 0x06, 0xe8, 0x94, 0xb1, 0xa2, 0x8f, - 0x40, 0x73, 0xb5, 0x4c, 0xd7, 0xa4, 0xc3, 0x4d, 0x3d, 0xd7, 0x45, 0xa7, 0x88, 0x3a, 0xfb, 0x90, - 0xb8, 0xc8, 0xe1, 0x16, 0xbc, 0x01, 0x66, 0x2b, 0xa3, 0xc7, 0x8a, 0xef, 0x63, 0xc3, 0x0e, 0x8f, - 0x0a, 0x57, 0x96, 0xe8, 0x33, 0x6b, 0x65, 0x52, 0xd7, 0x08, 0x8f, 0x05, 0xcb, 0xcc, 0x4e, 0xe5, - 0x84, 0xf7, 0xb5, 0xa2, 0x49, 0xb2, 0x7d, 0x4b, 0xab, 0x24, 0x86, 0xa5, 0x6d, 0xdf, 0x9b, 0xc8, - 0x88, 0xae, 0x15, 0x20, 0xca, 0xf4, 0x2c, 0x8d, 0xe6, 0x57, 0xa0, 0x23, 0x2a, 0x0c, 0x34, 0x0f, - 0x2a, 0xe2, 0x47, 0xb2, 0x53, 0xe9, 0xc9, 0x3f, 0x87, 0xc5, 0x54, 0xf9, 0xa2, 0x48, 0x11, 0xf2, - 0xab, 0x1c, 0xb3, 0x31, 0xfc, 0x1a, 0x20, 0xfa, 0x2e, 0x5b, 0xfe, 0xc3, 0x89, 0xa2, 0xb8, 0x29, - 0xdb, 0x55, 0x20, 0x7a, 0xed, 0x0c, 0x23, 0x22, 0x6d, 0xf8, 0x6d, 0x05, 0x56, 0x73, 0xeb, 0x04, - 0x59, 0xcf, 0xc1, 0xef, 0x71, 0x9f, 0x52, 0xd0, 0xc8, 0x7a, 0x8e, 0x53, 0xc7, 0x08, 0x22, 0x36, - 0x7f, 0xb8, 0x0c, 0x2d, 0x1a, 0x48, 0x52, 0xf1, 0xfd, 0x7f, 0x1c, 0xf9, 0xe4, 0xe2, 0xc8, 0xcf, - 0x61, 0x31, 0xf5, 0x68, 0xb8, 0x48, 0x9b, 0xf3, 0xdf, 0x16, 0x97, 0x0a, 0x81, 0xe4, 0xf7, 0xb6, - 0x45, 0xfb, 0x69, 0xee, 0xab, 0xdc, 0xd9, 0xf3, 0x7f, 0xca, 0x9e, 0xe9, 0x47, 0x87, 0xd7, 0x2f, - 0x9d, 0x72, 0x70, 0x22, 0xdf, 0xcd, 0xfe, 0xba, 0x84, 0x57, 0xff, 0x3b, 0x42, 0xdd, 0xcf, 0x61, - 0x31, 0xf5, 0x46, 0xaa, 0x48, 0x93, 0xf2, 0x9f, 0x52, 0xcd, 0xc6, 0xf0, 0x53, 0x8e, 0xcc, 0x8e, - 0x60, 0x39, 0xe7, 0x39, 0x0a, 0xba, 0x5e, 0x1c, 0xf1, 0xe6, 0xbf, 0x5c, 0x29, 0xb3, 0xb0, 0xae, - 0x64, 0xcc, 0xd9, 0x0d, 0x2b, 0x26, 0x35, 0xfd, 0x67, 0x57, 0x83, 0x8d, 0xb2, 0xff, 0x8d, 0x15, - 0x2d, 0xec, 0x13, 0x68, 0xb0, 0x37, 0x54, 0xe8, 0x4a, 0xd1, 0xa9, 0x51, 0xe2, 0x85, 0xd5, 0x60, - 0xf6, 0x4b, 0xac, 0x60, 0x6a, 0x87, 0x64, 0x1d, 0x43, 0xe8, 0x31, 0x50, 0xc4, 0xac, 0x73, 0x46, - 0xf0, 0x09, 0xd4, 0xe9, 0xb6, 0x80, 0x0a, 0x4e, 0x40, 0x92, 0x2f, 0xa6, 0x06, 0x65, 0x1e, 0x49, - 0xc5, 0x94, 0xb7, 0xe9, 0x58, 0x56, 0x76, 0x3a, 0xef, 0xe9, 0xaf, 0x2b, 0x68, 0x08, 0x5d, 0x86, - 0x40, 0x70, 0xe6, 0xbc, 0x57, 0x30, 0x86, 0xe5, 0xc4, 0x0a, 0x9e, 0x14, 0x9a, 0xeb, 0xca, 0xff, - 0x91, 0xb4, 0xe2, 0xd7, 0xe9, 0xeb, 0xa5, 0xf4, 0x8d, 0x3b, 0x74, 0xfd, 0xac, 0x57, 0x07, 0x07, - 0xaf, 0x9d, 0x61, 0x44, 0x84, 0xfd, 0x00, 0xd4, 0xf4, 0xe9, 0x27, 0x7a, 0xb5, 0xd8, 0xef, 0xe4, - 0xe1, 0x9d, 0xe9, 0x74, 0x76, 0xa1, 0xc1, 0x8a, 0xdc, 0x45, 0x46, 0x2a, 0x95, 0xc0, 0x67, 0xce, - 0x77, 0xeb, 0x9b, 0x9f, 0x6e, 0x8e, 0xad, 0xf0, 0x68, 0x7a, 0x40, 0x5a, 0xae, 0xb1, 0xce, 0xaf, - 0x5a, 0x1e, 0xff, 0x75, 0x4d, 0xc8, 0xf6, 0x1a, 0x1d, 0x7f, 0x8d, 0xa2, 0x98, 0x1c, 0x1c, 0x34, - 0xe8, 0xe7, 0xeb, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x08, 0x10, 0xad, 0x71, 0x28, 0x56, 0x00, - 0x00, + 0x5a, 0x53, 0x7d, 0xb1, 0xbb, 0xbf, 0xbe, 0xfa, 0xf8, 0x32, 0xbd, 0xcd, 0x4c, 0xe2, 0xd4, 0xe4, + 0xe2, 0x4c, 0x12, 0xcf, 0xc4, 0xd9, 0x6c, 0xb2, 0xb3, 0x24, 0x61, 0xc6, 0x9e, 0x99, 0x98, 0x4c, + 0x1c, 0x53, 0x9e, 0x49, 0x50, 0x40, 0xe9, 0x29, 0x77, 0x1d, 0xb7, 0x8b, 0xa9, 0x4b, 0x4f, 0x55, + 0xb5, 0x27, 0x0e, 0x48, 0x5c, 0x84, 0x10, 0x0f, 0x0b, 0xcb, 0x03, 0xe2, 0x81, 0x15, 0x68, 0x5f, + 0x00, 0x09, 0x10, 0x62, 0xa5, 0x7d, 0xe1, 0x01, 0x69, 0xc5, 0x2b, 0x12, 0x12, 0x20, 0xf1, 0x23, + 0x78, 0xe2, 0x0d, 0xed, 0x03, 0x02, 0x9d, 0x5b, 0x55, 0x9d, 0xba, 0xb8, 0xcb, 0x6e, 0x4f, 0x92, + 0x05, 0xde, 0xba, 0xbe, 0x73, 0xf9, 0xbe, 0xf3, 0xdd, 0xce, 0xf7, 0x7d, 0xe7, 0x9c, 0x86, 0x85, + 0xc7, 0x13, 0xec, 0x1d, 0x0f, 0x86, 0xae, 0xeb, 0x19, 0xeb, 0x63, 0xcf, 0x0d, 0x5c, 0xb4, 0x64, + 0x9b, 0xd6, 0xd1, 0xc4, 0x67, 0x5f, 0x47, 0x1b, 0xeb, 0xb4, 0x47, 0xbf, 0x39, 0x74, 0x6d, 0xdb, + 0x75, 0x18, 0xb4, 0xdf, 0x8c, 0xf7, 0xe9, 0xb7, 0x4d, 0x27, 0xc0, 0x9e, 0xa3, 0x5b, 0xa2, 0xd5, + 0x1f, 0x1e, 0x62, 0x5b, 0xe7, 0x5f, 0x75, 0xdb, 0x1f, 0xf1, 0x9f, 0x5d, 0x43, 0x0f, 0xf4, 0x38, + 0xb2, 0xfe, 0x82, 0xe9, 0x18, 0xf8, 0xf3, 0x38, 0x48, 0xfd, 0x1d, 0x05, 0x56, 0xf6, 0x0e, 0xdd, + 0x27, 0x9b, 0xae, 0x65, 0xe1, 0x61, 0x60, 0xba, 0x8e, 0xaf, 0xe1, 0xc7, 0x13, 0xec, 0x07, 0x68, + 0x03, 0x2a, 0xfb, 0xba, 0x8f, 0x7b, 0xca, 0xaa, 0xb2, 0xd6, 0xd8, 0x78, 0x66, 0x3d, 0x41, 0x29, + 0x27, 0xf1, 0x43, 0x7f, 0x74, 0x4b, 0xf7, 0xb1, 0x46, 0xfb, 0x22, 0x04, 0x15, 0x63, 0x7f, 0x7b, + 0xab, 0x57, 0x5a, 0x55, 0xd6, 0xca, 0x1a, 0xfd, 0x8d, 0x9e, 0x87, 0xd6, 0x30, 0x9c, 0x7d, 0x7b, + 0xcb, 0xef, 0x95, 0x57, 0xcb, 0x6b, 0x65, 0x4d, 0x06, 0xaa, 0xdf, 0x2d, 0xc1, 0xc5, 0x14, 0x21, + 0xfe, 0xd8, 0x75, 0x7c, 0x8c, 0xde, 0x84, 0x39, 0x3f, 0xd0, 0x83, 0x89, 0xcf, 0x69, 0xb9, 0x9c, + 0x43, 0xcb, 0x1e, 0xed, 0xa4, 0xf1, 0xce, 0x69, 0xc4, 0xa5, 0x0c, 0xc4, 0xe8, 0x75, 0x58, 0x32, + 0x9d, 0x0f, 0xb1, 0xed, 0x7a, 0xc7, 0x83, 0x31, 0xf6, 0x86, 0xd8, 0x09, 0xf4, 0x11, 0x16, 0x54, + 0x2e, 0x8a, 0xb6, 0xdd, 0xa8, 0x09, 0x7d, 0x0b, 0x2e, 0x32, 0x49, 0xfa, 0xd8, 0x3b, 0x32, 0x87, + 0x78, 0xa0, 0x1f, 0xe9, 0xa6, 0xa5, 0xef, 0x5b, 0xb8, 0x57, 0x59, 0x2d, 0xaf, 0xd5, 0xb4, 0x65, + 0xda, 0xbc, 0xc7, 0x5a, 0x6f, 0x8a, 0x46, 0xf4, 0x32, 0x74, 0x3d, 0x7c, 0xe0, 0x61, 0xff, 0x70, + 0x30, 0xf6, 0xdc, 0x91, 0x87, 0x7d, 0xbf, 0x57, 0xa5, 0x68, 0x3a, 0x1c, 0xbe, 0xcb, 0xc1, 0xea, + 0x5f, 0x28, 0xb0, 0x4c, 0xd8, 0xb1, 0xab, 0x7b, 0x81, 0xf9, 0x54, 0xc4, 0xa2, 0x42, 0x33, 0xce, + 0x88, 0x5e, 0x99, 0xb6, 0x49, 0x30, 0xd2, 0x67, 0x2c, 0x08, 0x20, 0x0c, 0xac, 0x50, 0x62, 0x25, + 0x98, 0xfa, 0xcf, 0x5c, 0x83, 0xe2, 0x94, 0xce, 0x26, 0xb7, 0x24, 0xd6, 0x52, 0x1a, 0xeb, 0x59, + 0xa4, 0x96, 0xc5, 0xfd, 0x4a, 0x36, 0xf7, 0xff, 0xb5, 0x0c, 0xcb, 0xf7, 0x5c, 0xdd, 0x88, 0x94, + 0xf1, 0xab, 0xe0, 0xfe, 0x7b, 0x30, 0xc7, 0x6c, 0xbb, 0x57, 0xa1, 0xd8, 0x5e, 0x4a, 0x62, 0xe3, + 0x96, 0x1f, 0x51, 0xb9, 0x47, 0x01, 0x1a, 0x1f, 0x86, 0x5e, 0x80, 0xb6, 0x87, 0xc7, 0x96, 0x39, + 0xd4, 0x07, 0xce, 0xc4, 0xde, 0xc7, 0x5e, 0xaf, 0xba, 0xaa, 0xac, 0x55, 0xb5, 0x16, 0x87, 0xee, + 0x50, 0x20, 0xda, 0x87, 0xd6, 0x81, 0x89, 0x2d, 0x63, 0x40, 0xdd, 0xc3, 0xf6, 0x56, 0x6f, 0x6e, + 0xb5, 0xbc, 0xd6, 0xd8, 0x78, 0x67, 0x3d, 0xcb, 0x37, 0xad, 0x67, 0xf2, 0x65, 0xfd, 0x0e, 0x99, + 0x60, 0x9b, 0x8d, 0xbf, 0xed, 0x04, 0xde, 0xb1, 0xd6, 0x3c, 0x88, 0x81, 0x50, 0x0f, 0xe6, 0x39, + 0x93, 0x7b, 0xf3, 0xab, 0xca, 0x5a, 0x4d, 0x13, 0x9f, 0xe8, 0x25, 0xe8, 0x78, 0xd8, 0x77, 0x27, + 0xde, 0x10, 0x0f, 0x46, 0x9e, 0x3b, 0x19, 0xfb, 0xbd, 0xda, 0x6a, 0x79, 0xad, 0xae, 0xb5, 0x05, + 0xf8, 0x2e, 0x85, 0xf6, 0xdf, 0x83, 0x85, 0x14, 0x16, 0xd4, 0x85, 0xf2, 0x23, 0x7c, 0x4c, 0xc5, + 0x51, 0xd6, 0xc8, 0x4f, 0xb4, 0x04, 0xd5, 0x23, 0xdd, 0x9a, 0x60, 0xce, 0x6e, 0xf6, 0x71, 0xa3, + 0xf4, 0xb6, 0xa2, 0xfe, 0xa9, 0x02, 0x3d, 0x0d, 0x5b, 0x58, 0xf7, 0xf1, 0x57, 0x2b, 0xd8, 0x15, + 0x98, 0x73, 0x5c, 0x03, 0x6f, 0x6f, 0x51, 0xc1, 0x96, 0x35, 0xfe, 0xa5, 0xfe, 0x97, 0x02, 0x4b, + 0x77, 0x71, 0x40, 0xcc, 0xc1, 0xf4, 0x03, 0x73, 0x18, 0xda, 0xfc, 0x7b, 0x50, 0xf6, 0xf0, 0x63, + 0x4e, 0xdb, 0x6b, 0x49, 0xda, 0xc2, 0x0d, 0x21, 0x6b, 0xac, 0x46, 0x46, 0xa2, 0xe7, 0xa0, 0x69, + 0xd8, 0xd6, 0x60, 0x78, 0xa8, 0x3b, 0x0e, 0xb6, 0x98, 0x49, 0xd5, 0xb5, 0x86, 0x61, 0x5b, 0x9b, + 0x1c, 0x84, 0x9e, 0x01, 0xf0, 0xf1, 0xc8, 0xc6, 0x4e, 0x10, 0xf9, 0xe8, 0x18, 0x04, 0x5d, 0x85, + 0x85, 0x03, 0xcf, 0xb5, 0x07, 0xfe, 0xa1, 0xee, 0x19, 0x03, 0x0b, 0xeb, 0x06, 0xf6, 0x28, 0xfd, + 0x35, 0xad, 0x43, 0x1a, 0xf6, 0x08, 0xfc, 0x1e, 0x05, 0xa3, 0x37, 0xa1, 0xea, 0x0f, 0xdd, 0x31, + 0xa6, 0xfa, 0xd6, 0xde, 0x78, 0x36, 0x5b, 0x93, 0xb6, 0xf4, 0x40, 0xdf, 0x23, 0xdd, 0x34, 0xd6, + 0x5b, 0xfd, 0x71, 0x85, 0x99, 0xdd, 0xd7, 0xde, 0xe9, 0xc5, 0x4c, 0xb3, 0x7a, 0x5e, 0xa6, 0x39, + 0x57, 0xc8, 0x34, 0xe7, 0xa7, 0x99, 0x66, 0x8a, 0x77, 0xa7, 0x31, 0xcd, 0xda, 0x54, 0xd3, 0xac, + 0x67, 0x99, 0x26, 0xba, 0x0b, 0x1d, 0x16, 0x5a, 0x98, 0xce, 0x81, 0x3b, 0xb0, 0x4c, 0x3f, 0xe8, + 0x01, 0x25, 0xf4, 0xd9, 0xb4, 0xae, 0x1a, 0xf8, 0xf3, 0x75, 0x86, 0xda, 0x39, 0x70, 0xb5, 0x96, + 0x29, 0x7e, 0xde, 0x33, 0xfd, 0x60, 0x76, 0x1b, 0xff, 0x87, 0xc8, 0xc6, 0xbf, 0xfe, 0x5a, 0x14, + 0xf9, 0x81, 0xaa, 0xe4, 0x07, 0xfe, 0x4a, 0x81, 0x6f, 0xdc, 0xc5, 0x41, 0xb8, 0x00, 0x62, 0xd4, + 0xf8, 0x6b, 0x1b, 0x00, 0xfc, 0x50, 0x81, 0x7e, 0x16, 0xb5, 0xb3, 0x05, 0x01, 0xbf, 0x0c, 0x2b, + 0x21, 0x96, 0x81, 0x81, 0xfd, 0xa1, 0x67, 0x8e, 0xa9, 0x30, 0xa9, 0xef, 0x6a, 0x6c, 0xbc, 0x90, + 0x6d, 0x02, 0x49, 0x2a, 0x96, 0xc3, 0x49, 0xb6, 0x62, 0x73, 0xa8, 0xdf, 0x53, 0x60, 0x99, 0x78, + 0x4b, 0xee, 0xde, 0x88, 0x26, 0xce, 0xc0, 0x5d, 0xd9, 0x75, 0x96, 0x52, 0xae, 0xb3, 0x00, 0xa7, + 0xd5, 0xdf, 0x55, 0x60, 0x25, 0x49, 0xd1, 0x6c, 0x1c, 0x7c, 0x0b, 0xaa, 0xc4, 0x1c, 0x05, 0xc3, + 0x9e, 0xcb, 0x66, 0x58, 0x1c, 0x21, 0xeb, 0xaf, 0x8e, 0x19, 0x25, 0x91, 0x3f, 0x9f, 0x49, 0xf5, + 0x92, 0x8b, 0x2f, 0x65, 0x2c, 0xfe, 0x0f, 0x14, 0xb8, 0x98, 0x42, 0x39, 0xdb, 0xea, 0xdf, 0x85, + 0x39, 0xba, 0x53, 0x89, 0xe5, 0xbf, 0x98, 0xb3, 0xfc, 0x18, 0x4a, 0xe2, 0x81, 0x34, 0x3e, 0x4a, + 0x75, 0xa1, 0x9b, 0x6c, 0x23, 0xbb, 0x28, 0xdf, 0x41, 0x07, 0x8e, 0x6e, 0x33, 0x36, 0xd4, 0xb5, + 0x06, 0x87, 0xed, 0xe8, 0x36, 0x46, 0xdf, 0x80, 0x1a, 0x31, 0xe2, 0x81, 0x69, 0x08, 0x45, 0x98, + 0xa7, 0x46, 0x6d, 0xf8, 0xe8, 0x32, 0x00, 0x6d, 0xd2, 0x0d, 0xc3, 0x63, 0x1b, 0x6c, 0x5d, 0xab, + 0x13, 0xc8, 0x4d, 0x02, 0x50, 0xff, 0x58, 0x81, 0x67, 0xf6, 0x8e, 0x9d, 0xe1, 0x0e, 0x7e, 0xb2, + 0xe9, 0x61, 0x3d, 0xc0, 0x91, 0x2b, 0x7f, 0xca, 0xec, 0x47, 0xab, 0xd0, 0x88, 0x59, 0x34, 0x57, + 0xcf, 0x38, 0x48, 0xfd, 0x91, 0x02, 0x4d, 0xb2, 0xbb, 0x7c, 0x88, 0x03, 0x9d, 0xa8, 0x0a, 0xfa, + 0x0e, 0xd4, 0x2d, 0x57, 0x37, 0x06, 0xc1, 0xf1, 0x98, 0xd1, 0xd3, 0x4e, 0xd3, 0x13, 0x6d, 0x4a, + 0xf7, 0x8f, 0xc7, 0x58, 0xab, 0x59, 0xfc, 0x57, 0x21, 0x9a, 0x92, 0x9e, 0xa7, 0x9c, 0xe1, 0x3f, + 0x9f, 0x85, 0x86, 0x8d, 0x03, 0xcf, 0x1c, 0x32, 0x32, 0x2a, 0x54, 0x1c, 0xc0, 0x40, 0x04, 0x91, + 0xfa, 0x27, 0x73, 0xb0, 0xf2, 0x89, 0x1e, 0x0c, 0x0f, 0xb7, 0x6c, 0x11, 0xe7, 0xcc, 0xc2, 0xcb, + 0xc8, 0x5f, 0x97, 0xe2, 0xfe, 0xfa, 0xdc, 0xf6, 0x83, 0xd0, 0x62, 0xab, 0xd9, 0x16, 0x4b, 0x12, + 0xfa, 0xf5, 0x8f, 0xb9, 0xba, 0xc5, 0x2c, 0x36, 0x16, 0x8e, 0xcc, 0x9d, 0x2d, 0x1c, 0xb9, 0x0d, + 0x2d, 0xfc, 0xf9, 0xd0, 0x9a, 0x10, 0xcd, 0xa5, 0x14, 0xb0, 0x38, 0x63, 0x35, 0x93, 0x82, 0xb8, + 0xcb, 0x68, 0xf2, 0x61, 0xdb, 0x9c, 0x0e, 0xa6, 0x15, 0x36, 0x0e, 0x74, 0x1a, 0x4c, 0x34, 0x36, + 0xd4, 0x7c, 0xad, 0x10, 0xca, 0xc4, 0x34, 0x83, 0x7c, 0xa1, 0x4b, 0x50, 0xe7, 0x01, 0xd0, 0xf6, + 0x56, 0xaf, 0x4e, 0xd9, 0x18, 0x01, 0xd0, 0x10, 0x5a, 0xdc, 0xab, 0x72, 0x2a, 0x59, 0x90, 0xf1, + 0x6e, 0x36, 0x8a, 0x6c, 0xc1, 0xc7, 0xa9, 0xf7, 0x79, 0x38, 0xe4, 0xc7, 0x40, 0xe8, 0x79, 0x68, + 0xb9, 0x07, 0x07, 0x96, 0xe9, 0xe0, 0x1d, 0x26, 0xeb, 0x06, 0x25, 0x43, 0x06, 0x92, 0xa0, 0xe9, + 0x08, 0x7b, 0xbe, 0xe9, 0x3a, 0xbd, 0x26, 0x6d, 0x17, 0x9f, 0x59, 0xb1, 0x50, 0xeb, 0x4c, 0xb1, + 0x90, 0x0e, 0x0b, 0x29, 0x5a, 0x33, 0x62, 0xa1, 0x6f, 0xc5, 0x63, 0xa1, 0x22, 0x22, 0x8b, 0x45, + 0x4b, 0x7f, 0xa9, 0xc0, 0xf2, 0x03, 0xc7, 0x9f, 0xec, 0x87, 0x6c, 0xfa, 0xaa, 0xcc, 0x23, 0xe9, + 0x5a, 0x2b, 0x29, 0xd7, 0xaa, 0xfe, 0xdd, 0x1c, 0x74, 0xf8, 0x3a, 0x88, 0xf6, 0x50, 0x37, 0x74, + 0x09, 0xea, 0xe1, 0x3e, 0xcb, 0x99, 0x12, 0x01, 0x92, 0x7e, 0xad, 0x94, 0xf2, 0x6b, 0x85, 0x48, + 0x13, 0xb1, 0x53, 0x25, 0x16, 0x3b, 0x5d, 0x06, 0x38, 0xb0, 0x26, 0xfe, 0xe1, 0x20, 0x30, 0x6d, + 0xcc, 0xa3, 0xb7, 0x3a, 0x85, 0xdc, 0x37, 0x6d, 0x8c, 0x36, 0xa1, 0xb9, 0x6f, 0x3a, 0x96, 0x3b, + 0x1a, 0x8c, 0xf5, 0xe0, 0xd0, 0xe7, 0x09, 0x75, 0xb6, 0x68, 0x68, 0xbc, 0x7b, 0x8b, 0xf6, 0xd6, + 0x1a, 0x6c, 0xd4, 0x2e, 0x19, 0x84, 0x9e, 0x81, 0x86, 0x33, 0xb1, 0x07, 0xee, 0xc1, 0xc0, 0x73, + 0x9f, 0xf8, 0x34, 0x6d, 0x2e, 0x6b, 0x75, 0x67, 0x62, 0x7f, 0x74, 0xa0, 0xb9, 0x4f, 0xc8, 0x0e, + 0x57, 0x27, 0x7b, 0x9d, 0x6f, 0xb9, 0x23, 0x96, 0x32, 0x17, 0xc1, 0x10, 0x0d, 0x21, 0xe3, 0x0d, + 0x6c, 0x05, 0x3a, 0x1d, 0x5f, 0x2f, 0x3a, 0x3e, 0x1c, 0x82, 0x5e, 0x84, 0xf6, 0xd0, 0xb5, 0xc7, + 0x3a, 0xe5, 0xd3, 0x1d, 0xcf, 0xb5, 0xa9, 0x39, 0x96, 0xb5, 0x04, 0x14, 0xdd, 0x86, 0x46, 0x64, + 0x10, 0x7e, 0xaf, 0x41, 0x31, 0x3d, 0x9f, 0x6d, 0xb3, 0xb1, 0xe0, 0x9f, 0xa8, 0x2a, 0x84, 0x16, + 0xe1, 0x13, 0x0d, 0x11, 0xc6, 0xef, 0x9b, 0x5f, 0x60, 0x6e, 0x76, 0x0d, 0x0e, 0xdb, 0x33, 0xbf, + 0xc0, 0x24, 0xa9, 0x32, 0x1d, 0x1f, 0x7b, 0x81, 0x48, 0x74, 0x7b, 0x2d, 0xaa, 0x46, 0x2d, 0x06, + 0xe5, 0x2a, 0x8e, 0xee, 0x40, 0xdb, 0x0f, 0x74, 0x2f, 0x18, 0x8c, 0x5d, 0x9f, 0x2a, 0x42, 0xaf, + 0x4d, 0xb5, 0x3c, 0x65, 0xa0, 0xb6, 0x3f, 0x22, 0x2a, 0xbe, 0xcb, 0xbb, 0x69, 0x2d, 0x3a, 0x4c, + 0x7c, 0x92, 0x79, 0x28, 0x37, 0xa2, 0x79, 0x3a, 0x05, 0xe7, 0xa1, 0xc3, 0xc2, 0x79, 0xd6, 0x48, + 0x9a, 0xa5, 0x1b, 0xfa, 0xbe, 0x85, 0x3f, 0xe6, 0x3e, 0xa5, 0x4b, 0x17, 0x97, 0x04, 0x93, 0x0d, + 0xc2, 0xc2, 0x47, 0xd8, 0xea, 0x2d, 0xd0, 0x1d, 0xf7, 0xb9, 0x93, 0x6c, 0xfd, 0x1e, 0xe9, 0xa8, + 0xb1, 0xfe, 0xea, 0x9f, 0x95, 0xa1, 0x2d, 0xf3, 0x96, 0x78, 0x30, 0x96, 0x06, 0x0a, 0xc3, 0x11, + 0x9f, 0x84, 0xd3, 0xd8, 0x21, 0x68, 0x59, 0xd6, 0x49, 0xed, 0xa6, 0xa6, 0x35, 0x18, 0x8c, 0x4e, + 0x40, 0xf4, 0x9f, 0xc9, 0x94, 0x1a, 0x6b, 0x99, 0x72, 0xb9, 0x4e, 0x21, 0x34, 0x0a, 0xea, 0xc1, + 0xbc, 0x48, 0x58, 0x99, 0xd5, 0x88, 0x4f, 0xd2, 0xb2, 0x3f, 0x31, 0x29, 0x56, 0x66, 0x35, 0xe2, + 0x13, 0xdd, 0x81, 0x26, 0x9b, 0x72, 0xac, 0x7b, 0xba, 0x2d, 0x6c, 0xe6, 0x4a, 0x8e, 0xe7, 0xf9, + 0x00, 0x1f, 0x7f, 0x4c, 0xdc, 0xd8, 0xae, 0x6e, 0x7a, 0x1a, 0xd3, 0xaf, 0x5d, 0x3a, 0x0e, 0xad, + 0x41, 0x97, 0xcd, 0x73, 0x60, 0x5a, 0x98, 0xdb, 0xdf, 0x3c, 0xcb, 0x5a, 0x29, 0xfc, 0x8e, 0x69, + 0x61, 0x66, 0x60, 0xe1, 0x22, 0xa8, 0x3e, 0xd5, 0x98, 0x7d, 0x51, 0x08, 0xd5, 0xa6, 0x2b, 0xc0, + 0x1c, 0xf2, 0x40, 0x38, 0x7a, 0xb6, 0x1f, 0x31, 0x2a, 0x85, 0x44, 0x48, 0xbc, 0x37, 0xb1, 0x99, + 0x85, 0x02, 0x5b, 0x90, 0x33, 0xb1, 0xa9, 0x7d, 0x6e, 0xc0, 0xf2, 0x70, 0xe2, 0x79, 0x6c, 0xb7, + 0x8a, 0xcf, 0xd3, 0xa0, 0x99, 0xfe, 0x22, 0x6f, 0xdc, 0x8e, 0x4d, 0xa7, 0xfe, 0xa0, 0x0a, 0x8b, + 0xc4, 0xb9, 0x71, 0x19, 0xce, 0x14, 0xad, 0x5c, 0x06, 0x30, 0xfc, 0x60, 0x20, 0xb9, 0xe4, 0xba, + 0xe1, 0x07, 0x7c, 0x07, 0xfb, 0x8e, 0x08, 0x36, 0xca, 0x27, 0xe5, 0x53, 0x09, 0x87, 0x9b, 0x0e, + 0x38, 0xce, 0x58, 0x9a, 0xbc, 0x02, 0x2d, 0x5e, 0x58, 0x90, 0x32, 0xe0, 0x26, 0x03, 0xee, 0x64, + 0x6f, 0x1c, 0x73, 0x99, 0x45, 0xd2, 0x58, 0xc8, 0x31, 0x3f, 0x6b, 0xc8, 0x51, 0x4b, 0x86, 0x1c, + 0xef, 0x43, 0x47, 0xb6, 0x71, 0xe1, 0x2a, 0xa7, 0x1a, 0x79, 0x5b, 0x32, 0x72, 0x3f, 0x1e, 0x31, + 0x80, 0x1c, 0x31, 0x5c, 0x81, 0x96, 0x83, 0xb1, 0x31, 0x08, 0x3c, 0xdd, 0xf1, 0x0f, 0xb0, 0x47, + 0x15, 0xa4, 0xa6, 0x35, 0x09, 0xf0, 0x3e, 0x87, 0xa1, 0x77, 0x01, 0xe8, 0x3a, 0x59, 0x5d, 0xad, + 0x79, 0x52, 0x5d, 0x8d, 0x2a, 0x10, 0xad, 0xab, 0x51, 0xd6, 0xd0, 0x9f, 0xe7, 0x16, 0x96, 0xa8, + 0xff, 0x52, 0x82, 0x15, 0x5e, 0x61, 0x39, 0x0f, 0x2d, 0xcd, 0x0b, 0x1a, 0xc4, 0xae, 0x5b, 0x3e, + 0xa1, 0x62, 0x51, 0x29, 0x10, 0x67, 0x57, 0x33, 0xe2, 0x6c, 0x39, 0x5f, 0x9f, 0x4b, 0xe5, 0xeb, + 0x61, 0xf9, 0x72, 0xfe, 0x34, 0xe5, 0x4b, 0xb4, 0x04, 0x55, 0x9a, 0x3c, 0x52, 0x2d, 0xaa, 0x6b, + 0xec, 0xa3, 0x90, 0x74, 0xd5, 0xef, 0x97, 0xa0, 0xb5, 0x87, 0x75, 0x6f, 0x78, 0x28, 0x78, 0xf9, + 0x76, 0xbc, 0xe4, 0xfb, 0x62, 0x6e, 0xc9, 0x57, 0x1a, 0xf4, 0x53, 0x54, 0xeb, 0x25, 0x28, 0x02, + 0x37, 0xd0, 0x43, 0x3a, 0x07, 0xce, 0xc4, 0xe6, 0x35, 0xd0, 0x0e, 0x6d, 0xe0, 0xc4, 0xee, 0x4c, + 0x6c, 0xf5, 0x3f, 0x14, 0x68, 0xfe, 0x02, 0x99, 0x46, 0x30, 0xe7, 0x46, 0x9c, 0x39, 0x6b, 0xb9, + 0xcc, 0xd1, 0x48, 0x26, 0x88, 0x8f, 0xf0, 0x4f, 0x61, 0x29, 0xfc, 0x1f, 0x15, 0xe8, 0xef, 0x1d, + 0x3b, 0x43, 0x8d, 0x79, 0xa2, 0xf3, 0xb0, 0xb4, 0x2b, 0xd0, 0x3a, 0x92, 0x62, 0xec, 0x12, 0x55, + 0xd3, 0xe6, 0x51, 0xbc, 0x7e, 0x71, 0x1f, 0xba, 0xa2, 0x2e, 0xcd, 0x17, 0x2c, 0x36, 0x88, 0x97, + 0xb3, 0x29, 0x4f, 0x10, 0x48, 0x3d, 0x46, 0xc7, 0x93, 0x81, 0xea, 0xef, 0x2b, 0xb0, 0x98, 0xd1, + 0x11, 0x5d, 0x84, 0x79, 0x5e, 0x2d, 0xe1, 0x31, 0x08, 0xb3, 0x7e, 0x83, 0x08, 0x29, 0xaa, 0xfe, + 0x99, 0x46, 0x3a, 0x74, 0x37, 0x48, 0xf2, 0x1f, 0x26, 0x83, 0x46, 0x4a, 0x4a, 0x86, 0x8f, 0xfa, + 0x50, 0xe3, 0x1e, 0x56, 0x64, 0xdb, 0xe1, 0xb7, 0x6a, 0x03, 0xba, 0x8b, 0xa3, 0x5d, 0x6d, 0x36, + 0xae, 0x46, 0xfe, 0x27, 0x22, 0x35, 0xee, 0x94, 0x0c, 0xf5, 0xdf, 0x15, 0x58, 0x94, 0xf0, 0xcd, + 0x56, 0xdb, 0x8a, 0x76, 0xdf, 0xd2, 0xd9, 0x76, 0x5f, 0xa9, 0x7a, 0x53, 0x3e, 0x65, 0xf5, 0xe6, + 0x19, 0x80, 0x50, 0x0e, 0x82, 0xb3, 0x31, 0x88, 0xfa, 0x63, 0x05, 0x56, 0xde, 0xd7, 0x1d, 0xc3, + 0x3d, 0x38, 0x38, 0x0f, 0xb5, 0xbd, 0x0d, 0x52, 0x7e, 0x5e, 0xbc, 0x9a, 0x29, 0xa7, 0xf5, 0xaf, + 0xc0, 0x82, 0xc7, 0x76, 0x2d, 0x43, 0xd6, 0xec, 0xb2, 0xd6, 0x15, 0x0d, 0xa1, 0xbe, 0xfe, 0x6d, + 0x09, 0x10, 0x59, 0xf9, 0x2d, 0xdd, 0xd2, 0x9d, 0x21, 0x9e, 0x85, 0xfc, 0x17, 0xa0, 0x2d, 0x05, + 0x3a, 0xe1, 0x2d, 0x84, 0x78, 0xa4, 0xe3, 0xa3, 0x0f, 0xa1, 0xbd, 0xcf, 0x90, 0x0d, 0x3c, 0xac, + 0xfb, 0xae, 0xc3, 0xc5, 0x92, 0x53, 0xb6, 0xbc, 0xef, 0x99, 0xa3, 0x11, 0xf6, 0x36, 0x5d, 0xc7, + 0xe0, 0x29, 0xc5, 0xbe, 0x20, 0x95, 0x0c, 0x26, 0xc6, 0x11, 0xc5, 0x7e, 0xa1, 0x90, 0xc2, 0xe0, + 0x8f, 0xb2, 0xc3, 0xc7, 0xba, 0x15, 0x31, 0x23, 0xda, 0x2b, 0xbb, 0xac, 0x61, 0x2f, 0xbf, 0x7e, + 0x9d, 0x11, 0x87, 0xa9, 0x3f, 0x52, 0x00, 0x85, 0x55, 0x04, 0x5a, 0x7a, 0xa1, 0x16, 0x9e, 0x1c, + 0xaa, 0x64, 0x6c, 0xd9, 0x97, 0xa0, 0x6e, 0x88, 0x91, 0xdc, 0x29, 0x45, 0x00, 0xba, 0x7f, 0x52, + 0xa2, 0x07, 0x44, 0x03, 0xb1, 0x21, 0x72, 0x74, 0x06, 0xbc, 0x47, 0x61, 0x72, 0x10, 0x57, 0x49, + 0x06, 0x71, 0xf1, 0xa2, 0x6c, 0x55, 0x2a, 0xca, 0xaa, 0x7f, 0x5d, 0x82, 0x2e, 0xdd, 0x5a, 0x36, + 0xa3, 0xaa, 0x5a, 0x21, 0xa2, 0xaf, 0x40, 0x8b, 0xdf, 0xe6, 0x91, 0x08, 0x6f, 0x3e, 0x8e, 0x4d, + 0x86, 0xae, 0xc3, 0x12, 0xeb, 0xe4, 0x61, 0x7f, 0x62, 0x45, 0x69, 0x29, 0x4b, 0x98, 0xd0, 0x63, + 0xb6, 0xa7, 0x91, 0x26, 0x31, 0xe2, 0x13, 0x58, 0x19, 0x59, 0xee, 0xbe, 0x6e, 0x0d, 0x64, 0xf1, + 0x30, 0x19, 0x16, 0xd2, 0xfb, 0x25, 0x36, 0xc1, 0x5e, 0x5c, 0x8a, 0x3e, 0xda, 0x82, 0x96, 0x8f, + 0xf1, 0xa3, 0x28, 0x57, 0xad, 0x16, 0xcb, 0x55, 0x9b, 0x64, 0x94, 0xf8, 0x52, 0x7f, 0xa0, 0x40, + 0x27, 0x71, 0xc4, 0x92, 0xac, 0xb2, 0x28, 0xe9, 0x2a, 0xcb, 0x0d, 0xa8, 0x12, 0xcf, 0xc5, 0x76, + 0x9c, 0x76, 0x5e, 0xee, 0x2f, 0xcf, 0xab, 0xb1, 0x21, 0xe8, 0x1a, 0x2c, 0x66, 0x5c, 0xf4, 0xe0, + 0x4a, 0x80, 0xd2, 0xf7, 0x3c, 0xd4, 0x9f, 0x54, 0xa0, 0x11, 0x63, 0xc7, 0x94, 0x12, 0xd1, 0xb9, + 0x94, 0xc7, 0xf3, 0x0e, 0xf4, 0x89, 0xe2, 0xd9, 0xd8, 0x66, 0xf9, 0x25, 0x4f, 0x77, 0x6d, 0x6c, + 0xd3, 0xec, 0x32, 0x9e, 0x38, 0xce, 0xc9, 0x89, 0xa3, 0x9c, 0x5c, 0xcf, 0x9f, 0x90, 0x5c, 0xd7, + 0xe4, 0xe4, 0x5a, 0x32, 0xa4, 0x7a, 0xd2, 0x90, 0x8a, 0xd6, 0x6b, 0xae, 0xc3, 0xe2, 0x90, 0x1d, + 0x40, 0xdc, 0x3a, 0xde, 0x0c, 0x9b, 0x78, 0xd8, 0x9a, 0xd5, 0x84, 0xde, 0x8f, 0xea, 0xb2, 0x4c, + 0xce, 0x2c, 0x3d, 0xc9, 0xcb, 0xdd, 0xb9, 0x74, 0x98, 0x98, 0x85, 0x97, 0xa6, 0x5f, 0xc9, 0x5a, + 0x51, 0xeb, 0x8c, 0xb5, 0xa2, 0x67, 0xa1, 0x21, 0xa2, 0x18, 0x62, 0xf3, 0x6d, 0xe6, 0xfe, 0x84, + 0x43, 0x30, 0x7c, 0xc9, 0x23, 0x74, 0xe4, 0x63, 0x9a, 0x64, 0xf5, 0xa3, 0x9b, 0xae, 0x7e, 0x5c, + 0x84, 0x79, 0xd3, 0x1f, 0x1c, 0xe8, 0x8f, 0x30, 0x2d, 0xc4, 0xd4, 0xb4, 0x39, 0xd3, 0xbf, 0xa3, + 0x3f, 0xc2, 0xea, 0xbf, 0x95, 0xa1, 0x1d, 0x6d, 0xba, 0x85, 0x7d, 0x49, 0x91, 0x0b, 0x4f, 0xbb, + 0xd0, 0x8d, 0x22, 0x22, 0xca, 0xe5, 0x29, 0x99, 0x7b, 0xf2, 0x24, 0xb4, 0x33, 0x4e, 0xd8, 0xad, + 0x14, 0x04, 0x54, 0x4e, 0x19, 0x04, 0xcc, 0x7c, 0x01, 0xe2, 0x0d, 0x58, 0x0e, 0xf7, 0x63, 0x69, + 0xf1, 0x2c, 0x1d, 0x5b, 0x12, 0x8d, 0xbb, 0x71, 0x26, 0xe4, 0x38, 0x83, 0xf9, 0x3c, 0x67, 0x90, + 0x54, 0x84, 0x5a, 0x4a, 0x11, 0xd2, 0xf7, 0x30, 0xea, 0x19, 0xf7, 0x30, 0xd4, 0x07, 0xb0, 0x48, + 0xeb, 0xe4, 0xfe, 0xd0, 0x33, 0xf7, 0x71, 0x98, 0x28, 0x14, 0x11, 0x6e, 0x1f, 0x6a, 0x89, 0x5c, + 0x23, 0xfc, 0x56, 0xbf, 0xab, 0xc0, 0x4a, 0x7a, 0x5e, 0xaa, 0x37, 0x91, 0x4b, 0x51, 0x24, 0x97, + 0xf2, 0x29, 0x2c, 0xc6, 0xe2, 0x4d, 0x69, 0xe6, 0xdc, 0x18, 0x3d, 0x83, 0x74, 0x0d, 0x45, 0xb3, + 0x08, 0x98, 0xfa, 0x13, 0x25, 0x3c, 0x72, 0x20, 0xb0, 0x11, 0x3d, 0xd5, 0x21, 0x3b, 0x9d, 0xeb, + 0x58, 0xa6, 0x13, 0x96, 0x6a, 0xf8, 0x2a, 0x19, 0x90, 0x97, 0x6a, 0x7e, 0x1e, 0x3a, 0xbc, 0x53, + 0xb8, 0x61, 0x15, 0x0e, 0xd4, 0xda, 0x6c, 0x64, 0xb8, 0x55, 0xbd, 0x00, 0x6d, 0x7e, 0xd8, 0x22, + 0x30, 0x96, 0xb3, 0x8e, 0x60, 0xee, 0x41, 0x57, 0x74, 0x3b, 0xfd, 0x26, 0xd9, 0xe1, 0x43, 0xc3, + 0x90, 0xef, 0xf7, 0x14, 0xe8, 0xc9, 0x5b, 0x66, 0x8c, 0x05, 0x67, 0x09, 0xfc, 0xde, 0x91, 0x8f, + 0xdf, 0x5f, 0x3a, 0x91, 0xa6, 0x08, 0x97, 0x38, 0x84, 0xff, 0xa3, 0x12, 0xbd, 0x55, 0x41, 0x12, + 0xc3, 0x2d, 0xd3, 0x0f, 0x3c, 0x73, 0x7f, 0x32, 0xeb, 0x51, 0xf0, 0x10, 0x1a, 0xc3, 0x43, 0x3c, + 0x7c, 0x34, 0x76, 0xcd, 0x48, 0x3e, 0x37, 0xb3, 0xe9, 0xca, 0x47, 0xbd, 0xbe, 0x19, 0xcd, 0xc1, + 0xce, 0xcf, 0xe2, 0xb3, 0xf6, 0x07, 0xd0, 0x4d, 0x76, 0x88, 0x1f, 0x5a, 0xd5, 0xd9, 0xa1, 0xd5, + 0x9b, 0xf2, 0xa1, 0xd5, 0xd4, 0x28, 0x24, 0x76, 0x66, 0xf5, 0xf7, 0x25, 0xf8, 0x99, 0x4c, 0xea, + 0x66, 0xcb, 0xa9, 0xf2, 0xea, 0x50, 0x5b, 0x50, 0x4b, 0x24, 0xc2, 0x6b, 0x27, 0x4a, 0x92, 0x57, + 0x72, 0x59, 0x91, 0xd1, 0x8f, 0xa2, 0xaf, 0xc8, 0x09, 0x54, 0x4e, 0x9a, 0x85, 0xdb, 0xa2, 0x34, + 0x8b, 0x18, 0x89, 0x36, 0xa1, 0xc9, 0x8a, 0x0d, 0x83, 0x23, 0x13, 0x3f, 0x11, 0xc7, 0xc4, 0xab, + 0x39, 0x4e, 0x9b, 0xf6, 0xfc, 0xd8, 0xc4, 0x4f, 0xb4, 0x86, 0x15, 0xfe, 0xf6, 0xd5, 0xef, 0x57, + 0x00, 0xa2, 0x36, 0x92, 0xcd, 0x45, 0x9e, 0x80, 0x9b, 0x76, 0x0c, 0x42, 0xa2, 0x0d, 0x39, 0xc2, + 0x15, 0x9f, 0xe8, 0x7e, 0x74, 0x20, 0x63, 0x98, 0x7e, 0xc0, 0xb9, 0xf3, 0xfa, 0x34, 0x6a, 0x04, + 0xa3, 0x88, 0xf0, 0xb8, 0xfe, 0xf8, 0x11, 0x04, 0xbd, 0x06, 0x68, 0xe4, 0xb9, 0x4f, 0x4c, 0x67, + 0x14, 0xcf, 0x4c, 0x58, 0x02, 0xb3, 0xc0, 0x5b, 0x62, 0xa9, 0xc9, 0x43, 0xe8, 0x26, 0xba, 0x0b, + 0xb6, 0xbc, 0x39, 0x95, 0x90, 0xbb, 0xd2, 0x6c, 0x5c, 0x99, 0x3b, 0x32, 0x0e, 0x7a, 0x1e, 0x7c, + 0x5f, 0xf7, 0x46, 0x58, 0x48, 0x96, 0x47, 0x6b, 0x32, 0xb0, 0xaf, 0x43, 0x37, 0xb9, 0xae, 0x8c, + 0xb3, 0xda, 0xb7, 0x64, 0xb5, 0x3f, 0xd9, 0x4f, 0x91, 0x89, 0x62, 0x8a, 0xdf, 0x1f, 0xc2, 0x52, + 0x16, 0xc5, 0x19, 0x68, 0x66, 0xb0, 0xae, 0xf7, 0xc2, 0xe0, 0x99, 0x4a, 0x23, 0x6f, 0x17, 0x8a, + 0x15, 0xb3, 0x4b, 0x52, 0x31, 0x5b, 0xfd, 0xed, 0x32, 0xa0, 0xb4, 0x29, 0xa0, 0x36, 0x94, 0xc2, + 0x49, 0x4a, 0xdb, 0x5b, 0x09, 0xb5, 0x2b, 0xa5, 0xd4, 0xee, 0x12, 0xd4, 0xc3, 0xa8, 0x80, 0xbb, + 0xff, 0x08, 0x10, 0x57, 0xca, 0x8a, 0xac, 0x94, 0x31, 0xc2, 0xaa, 0x72, 0x95, 0xfd, 0x3a, 0x2c, + 0x59, 0xba, 0x1f, 0x0c, 0x58, 0x39, 0x3f, 0x30, 0x6d, 0xec, 0x07, 0xba, 0x3d, 0xa6, 0xe2, 0xac, + 0x68, 0x88, 0xb4, 0x6d, 0x91, 0xa6, 0xfb, 0xa2, 0x05, 0x7d, 0x2c, 0xe2, 0x70, 0xe2, 0x91, 0xf9, + 0x8d, 0x88, 0xb7, 0x8a, 0x1a, 0x7f, 0x54, 0x40, 0x67, 0x7a, 0x55, 0x0f, 0xc3, 0xd3, 0xfe, 0x3e, + 0xb4, 0xe5, 0xc6, 0x0c, 0x11, 0xde, 0x90, 0x45, 0x58, 0x2c, 0x04, 0x8e, 0xc9, 0xf1, 0x10, 0x50, + 0xda, 0x95, 0xc4, 0xf9, 0xa6, 0xc8, 0x7c, 0x9b, 0x26, 0x8f, 0x18, 0x5f, 0xcb, 0xb2, 0xc0, 0xff, + 0xa9, 0x0c, 0x28, 0x8a, 0xf2, 0xc2, 0x93, 0xf9, 0x22, 0xa1, 0xd1, 0x35, 0x58, 0x4c, 0xc7, 0x80, + 0x22, 0xfc, 0x45, 0xa9, 0x08, 0x30, 0x2b, 0x5a, 0x2b, 0x67, 0xdd, 0x9a, 0x7d, 0x3b, 0xdc, 0x02, + 0x58, 0x58, 0xbb, 0x7a, 0xc2, 0x39, 0x89, 0xbc, 0x0b, 0x0c, 0x92, 0xf7, 0x6d, 0x99, 0x2f, 0xb9, + 0x91, 0xe3, 0xac, 0x53, 0xcb, 0x9e, 0x7a, 0xd9, 0x56, 0x0a, 0xba, 0xe7, 0x4e, 0x19, 0x74, 0x5f, + 0x81, 0x96, 0x87, 0x87, 0xee, 0x11, 0xf6, 0x98, 0xfe, 0xd2, 0xc0, 0xb7, 0xaa, 0x35, 0x39, 0x90, + 0x6a, 0xee, 0xec, 0x57, 0x68, 0x7f, 0xa3, 0x0c, 0x0b, 0x21, 0xcf, 0x4f, 0x25, 0xcf, 0xe9, 0xf7, + 0x2d, 0x9e, 0xba, 0x00, 0x3f, 0xcb, 0x16, 0xe0, 0xb7, 0xa7, 0xe4, 0x48, 0x85, 0xe5, 0xf7, 0xe5, + 0x88, 0xe0, 0x0b, 0x98, 0xe7, 0xe5, 0xf2, 0x94, 0xe3, 0x2c, 0x52, 0xb0, 0x58, 0x82, 0x2a, 0xf1, + 0xd3, 0xa2, 0xbe, 0xc9, 0x3e, 0x18, 0xef, 0xe3, 0xb7, 0xb9, 0xb9, 0xef, 0x6c, 0x49, 0x97, 0xb9, + 0xd5, 0xef, 0x95, 0x01, 0xf6, 0x8e, 0x9d, 0xe1, 0x4d, 0x66, 0xf8, 0x1b, 0x50, 0x99, 0x7e, 0xc7, + 0x8f, 0xf4, 0xa7, 0xba, 0x4a, 0xfb, 0x16, 0xd0, 0x03, 0xa9, 0x28, 0x53, 0x4e, 0x16, 0x65, 0xf2, + 0xca, 0x29, 0xf9, 0xce, 0xfd, 0xdb, 0x50, 0xa1, 0x4e, 0x9a, 0x5d, 0x7f, 0x2b, 0x78, 0x96, 0x4d, + 0x87, 0xa0, 0x35, 0x10, 0x5b, 0xfe, 0xb6, 0xc3, 0xf6, 0x74, 0xea, 0xea, 0xcb, 0x5a, 0x12, 0x8c, + 0x5e, 0x84, 0x36, 0x2b, 0xca, 0x85, 0x1d, 0x59, 0x3e, 0x99, 0x80, 0xa6, 0x23, 0x86, 0x7a, 0x46, + 0xc4, 0x40, 0xf0, 0x1a, 0x9e, 0x3b, 0x1e, 0xc7, 0xa6, 0x63, 0xf5, 0x98, 0x24, 0x58, 0xfd, 0xcd, + 0x32, 0x5c, 0x24, 0x1c, 0x3e, 0xaf, 0x3c, 0xa0, 0x88, 0x0a, 0xc5, 0x76, 0x8a, 0xb2, 0xbc, 0x53, + 0xdc, 0x80, 0x79, 0x56, 0xf6, 0x11, 0x91, 0xec, 0x6a, 0xbe, 0x4e, 0x30, 0x1d, 0xd2, 0xc4, 0x80, + 0xd9, 0xab, 0x06, 0xd2, 0x69, 0xff, 0xdc, 0xac, 0xa7, 0xfd, 0xf3, 0xc9, 0x42, 0x71, 0x4c, 0xc1, + 0x6a, 0xf2, 0x2e, 0xf7, 0x00, 0x5a, 0x5a, 0xdc, 0x4c, 0x10, 0x82, 0x4a, 0xec, 0x0e, 0x30, 0xfd, + 0x4d, 0x53, 0x7d, 0x7d, 0xac, 0x0f, 0xcd, 0xe0, 0x98, 0x32, 0xb5, 0xaa, 0x85, 0xdf, 0xd9, 0x36, + 0x49, 0x32, 0xee, 0x15, 0x71, 0x08, 0xcc, 0x2d, 0x7e, 0x16, 0xc9, 0x6e, 0xc0, 0x32, 0x37, 0xf0, + 0x84, 0xa5, 0xb3, 0xd0, 0x7d, 0x91, 0xc1, 0xe4, 0x85, 0x6c, 0xc0, 0x72, 0x40, 0xf5, 0x2c, 0x39, + 0x86, 0xc9, 0x7d, 0x91, 0x35, 0xca, 0x63, 0x8a, 0x1c, 0xc4, 0x3f, 0xcb, 0xae, 0xaf, 0x71, 0xe6, + 0x72, 0x83, 0x05, 0x67, 0x62, 0xf3, 0x75, 0xaa, 0xc7, 0x70, 0x89, 0xdd, 0xc9, 0xdf, 0x97, 0x29, + 0x9a, 0xf1, 0xb4, 0x25, 0x73, 0xe5, 0x09, 0x1f, 0xf7, 0xe7, 0x0a, 0x5c, 0xce, 0xc1, 0x3d, 0x5b, + 0x16, 0xb9, 0x93, 0x89, 0x3f, 0x37, 0xfb, 0x97, 0x70, 0xb3, 0xcb, 0x16, 0x32, 0xa1, 0xff, 0x5d, + 0x81, 0x85, 0x54, 0xa7, 0x53, 0xeb, 0xde, 0xab, 0x80, 0x88, 0x28, 0xc2, 0x57, 0xaa, 0xb4, 0xac, + 0xc2, 0x77, 0xde, 0xae, 0x33, 0xb1, 0xc3, 0x17, 0xaa, 0x3b, 0xae, 0x81, 0xd1, 0x23, 0xd6, 0x9b, + 0x9d, 0xb6, 0x84, 0xf2, 0xab, 0x9c, 0xf4, 0xf0, 0x28, 0x45, 0xe2, 0xfa, 0xce, 0xc4, 0x66, 0x47, + 0x33, 0x5c, 0xda, 0x6c, 0x2f, 0x25, 0xc8, 0x24, 0x30, 0x3a, 0x84, 0x05, 0x7a, 0xc9, 0x71, 0x12, + 0x8c, 0x5c, 0x92, 0xc4, 0x51, 0xca, 0xd8, 0x9e, 0xfd, 0xb3, 0xa7, 0xc0, 0xf5, 0x11, 0x1f, 0x4f, + 0x16, 0xc0, 0xf3, 0x38, 0x47, 0x86, 0x0a, 0x4c, 0xa6, 0x33, 0x74, 0xed, 0x10, 0xd3, 0xdc, 0xa9, + 0x31, 0x6d, 0xf3, 0xf1, 0x32, 0xa6, 0x38, 0xb4, 0xbf, 0x09, 0xcb, 0x99, 0xcb, 0x9f, 0x16, 0x02, + 0x54, 0xe3, 0xd9, 0xde, 0x2d, 0x58, 0xca, 0x5a, 0xd7, 0x19, 0xe6, 0x48, 0x51, 0x7c, 0x9a, 0x39, + 0xd4, 0xbf, 0x29, 0x41, 0x6b, 0x0b, 0x5b, 0x38, 0xc0, 0x4f, 0xfb, 0x94, 0x3c, 0x75, 0xe8, 0x5f, + 0x4e, 0x1f, 0xfa, 0xa7, 0xee, 0x30, 0x54, 0x32, 0xee, 0x30, 0x5c, 0x0e, 0xaf, 0x6f, 0x90, 0x59, + 0xaa, 0x72, 0x74, 0x61, 0xa0, 0x77, 0xa0, 0x39, 0xf6, 0x4c, 0x5b, 0xf7, 0x8e, 0x07, 0x8f, 0xf0, + 0xb1, 0xcf, 0xb7, 0x91, 0x7e, 0xce, 0x56, 0xb4, 0xbd, 0xe5, 0x6b, 0x0d, 0xde, 0xff, 0x03, 0x7c, + 0x4c, 0x2f, 0x87, 0x84, 0xc9, 0x23, 0xbb, 0x59, 0x58, 0xd1, 0x62, 0x10, 0xf5, 0x57, 0x60, 0x85, + 0x6c, 0x7b, 0x47, 0x7a, 0x80, 0x69, 0x21, 0x8c, 0x38, 0xf6, 0xb3, 0x33, 0xee, 0x12, 0xd4, 0x87, + 0x6c, 0x16, 0xbe, 0x51, 0x57, 0xb5, 0x08, 0xa0, 0x5a, 0xd0, 0xdb, 0xc2, 0xfa, 0x97, 0x85, 0xcd, + 0x84, 0xc5, 0x7b, 0xa6, 0x1f, 0x70, 0x3c, 0xfe, 0x8c, 0x2f, 0xa6, 0xc2, 0x79, 0x59, 0xc2, 0x57, + 0xd5, 0x62, 0x10, 0xf5, 0x0f, 0x15, 0x58, 0x92, 0x71, 0xcd, 0xe6, 0x97, 0x6f, 0x43, 0x53, 0xcc, + 0x3e, 0xfd, 0x12, 0xc1, 0x66, 0xd4, 0x53, 0x93, 0x86, 0xa9, 0x18, 0x1a, 0xb1, 0x46, 0x12, 0x9b, + 0xf3, 0x9b, 0x2b, 0x55, 0xad, 0x64, 0x1a, 0xf4, 0xce, 0x1a, 0xf6, 0x87, 0x7c, 0xcf, 0xa1, 0xbf, + 0x09, 0x4b, 0x85, 0x80, 0x98, 0x46, 0xd7, 0xb4, 0x08, 0x40, 0xec, 0xee, 0xc0, 0x9d, 0x38, 0x06, + 0xbf, 0x3d, 0xc4, 0x3e, 0xae, 0xbe, 0x02, 0xf5, 0xf0, 0x0e, 0x1f, 0xaa, 0x41, 0xe5, 0xce, 0xc4, + 0xb2, 0xba, 0x17, 0x50, 0x1d, 0xaa, 0xb4, 0x42, 0xd1, 0x55, 0xc8, 0x4f, 0x9a, 0x5c, 0x74, 0x4b, + 0x57, 0x7f, 0x0e, 0xea, 0xe1, 0xed, 0x21, 0xd4, 0x80, 0xf9, 0x07, 0xce, 0x07, 0x8e, 0xfb, 0xc4, + 0xe9, 0x5e, 0x40, 0xf3, 0x50, 0xbe, 0x69, 0x59, 0x5d, 0x05, 0xb5, 0xa0, 0xbe, 0x17, 0x78, 0x58, + 0x27, 0x5e, 0xa0, 0x5b, 0x42, 0x6d, 0x80, 0xf7, 0x4d, 0x3f, 0x70, 0x3d, 0x73, 0xa8, 0x5b, 0xdd, + 0xf2, 0xd5, 0x2f, 0xa0, 0x2d, 0x1f, 0x16, 0xa1, 0x26, 0xd4, 0x76, 0xdc, 0xe0, 0xf6, 0xe7, 0xa6, + 0x1f, 0x74, 0x2f, 0x90, 0xfe, 0x3b, 0x6e, 0xb0, 0xeb, 0x61, 0x1f, 0x3b, 0x41, 0x57, 0x41, 0x00, + 0x73, 0x1f, 0x39, 0x5b, 0xa6, 0xff, 0xa8, 0x5b, 0x42, 0x8b, 0xfc, 0x3c, 0x58, 0xb7, 0xb6, 0xf9, + 0xe9, 0x4b, 0xb7, 0x4c, 0x86, 0x87, 0x5f, 0x15, 0xd4, 0x85, 0x66, 0xd8, 0xe5, 0xee, 0xee, 0x83, + 0x6e, 0x95, 0x51, 0x4f, 0x7e, 0xce, 0x5d, 0x35, 0xa0, 0x9b, 0xbc, 0xcb, 0x40, 0xe6, 0x64, 0x8b, + 0x08, 0x41, 0xdd, 0x0b, 0x64, 0x65, 0xfc, 0x52, 0x49, 0x57, 0x41, 0x1d, 0x68, 0xc4, 0xae, 0x67, + 0x74, 0x4b, 0x04, 0x70, 0xd7, 0x1b, 0x0f, 0xb9, 0x4a, 0x32, 0x12, 0x88, 0xbf, 0xdb, 0x22, 0x9c, + 0xa8, 0x5c, 0xbd, 0x05, 0x35, 0x91, 0x4e, 0x93, 0xae, 0x9c, 0x45, 0xe4, 0xb3, 0x7b, 0x01, 0x2d, + 0x40, 0x4b, 0x7a, 0x38, 0xdb, 0x55, 0x10, 0x82, 0xb6, 0xfc, 0xcc, 0xbd, 0x5b, 0xba, 0xba, 0x01, + 0x10, 0xe5, 0x9b, 0x84, 0x9c, 0x6d, 0xe7, 0x48, 0xb7, 0x4c, 0x83, 0xd1, 0x46, 0x9a, 0x08, 0x77, + 0x29, 0x77, 0x98, 0xeb, 0xef, 0x96, 0xae, 0xbe, 0x03, 0x35, 0x91, 0x1a, 0x11, 0xb8, 0x86, 0x6d, + 0xf7, 0x08, 0x33, 0xc9, 0xec, 0xe1, 0x80, 0xc9, 0xf1, 0xa6, 0x8d, 0x1d, 0xa3, 0x5b, 0x22, 0x64, + 0x3c, 0x18, 0x1b, 0x7a, 0x20, 0x2e, 0x7b, 0x77, 0xcb, 0x1b, 0xff, 0xb9, 0x02, 0xc0, 0x2e, 0x27, + 0xb8, 0xae, 0x67, 0xa0, 0x31, 0xbd, 0xb4, 0xb4, 0xe9, 0xda, 0x63, 0xd7, 0x11, 0x27, 0xa6, 0x3e, + 0xba, 0x9e, 0xaa, 0xee, 0xb1, 0xcf, 0x74, 0x57, 0xce, 0x9d, 0xfe, 0x8b, 0x39, 0x23, 0x12, 0xdd, + 0xd5, 0x0b, 0xe8, 0x31, 0xc5, 0x48, 0x92, 0xda, 0xfb, 0xe6, 0xf0, 0x91, 0x38, 0x48, 0xde, 0x38, + 0xe9, 0x01, 0x7a, 0xa2, 0xb3, 0xc0, 0xf9, 0x42, 0x0e, 0xce, 0xbd, 0xc0, 0x33, 0x9d, 0x91, 0x30, + 0x6f, 0xf5, 0x02, 0x9a, 0x24, 0x9e, 0xc0, 0x0b, 0xa4, 0xdf, 0x2c, 0xf6, 0xea, 0xfd, 0xac, 0x68, + 0xc7, 0xd0, 0x49, 0xfc, 0xfb, 0x08, 0x7a, 0x35, 0xef, 0xc5, 0x60, 0xd6, 0xbf, 0xa5, 0xf4, 0x5f, + 0x2b, 0xd8, 0x3b, 0xc4, 0x68, 0x43, 0x5b, 0xfe, 0xdb, 0x0c, 0xf4, 0x4a, 0xfe, 0x14, 0xa9, 0xb7, + 0xcc, 0xfd, 0x57, 0x8b, 0x75, 0x0e, 0xd1, 0x7d, 0xc6, 0x54, 0x7a, 0x3a, 0xba, 0xcc, 0x47, 0xe4, + 0xfd, 0x93, 0xfd, 0xac, 0x7a, 0x01, 0x19, 0x24, 0x50, 0x4d, 0xbc, 0xbb, 0x46, 0xeb, 0x79, 0x81, + 0x55, 0xf6, 0x03, 0xed, 0xe9, 0x58, 0x3e, 0x4b, 0x1a, 0xe6, 0x49, 0xab, 0x48, 0xfd, 0xc9, 0xc3, + 0x69, 0x56, 0x11, 0x43, 0x71, 0xf2, 0x2a, 0xce, 0x80, 0x65, 0xcc, 0xf2, 0xf9, 0x8c, 0x97, 0x9e, + 0x69, 0x35, 0x8f, 0x92, 0xe9, 0xfc, 0x87, 0xa1, 0xd3, 0x31, 0x1e, 0x53, 0x43, 0x4e, 0xde, 0xdc, + 0xb9, 0x96, 0x7b, 0xf6, 0x97, 0xfd, 0xf4, 0xbc, 0x7f, 0xbd, 0xf8, 0x80, 0xb8, 0x9e, 0xcb, 0xef, + 0x9a, 0xf3, 0x44, 0x96, 0xf9, 0x1e, 0x3b, 0x4f, 0xcf, 0xb3, 0x9f, 0x4a, 0xab, 0x17, 0xd0, 0x2f, + 0x4a, 0x5b, 0x03, 0x5a, 0xcb, 0x57, 0x0f, 0xf9, 0x72, 0xdf, 0x74, 0x1e, 0xfe, 0x3a, 0x20, 0x66, + 0xcd, 0xce, 0x81, 0x39, 0x9a, 0x78, 0x3a, 0x53, 0xf1, 0x7c, 0x67, 0x98, 0xee, 0x2c, 0x50, 0xbd, + 0x71, 0xaa, 0x31, 0xe1, 0xd2, 0x86, 0x00, 0x77, 0x71, 0xf0, 0x21, 0x7d, 0xde, 0xea, 0xa7, 0x57, + 0x16, 0xf9, 0x7d, 0xde, 0x45, 0xa0, 0x7b, 0xb9, 0x40, 0xcf, 0x10, 0xc9, 0x01, 0x34, 0xee, 0x92, + 0x74, 0x9f, 0xa6, 0x2d, 0x3e, 0x3a, 0x61, 0xac, 0xe8, 0x23, 0xd0, 0x5c, 0x2d, 0xd2, 0x35, 0xee, + 0x70, 0x13, 0x2f, 0xbe, 0xd1, 0x09, 0xa2, 0x4e, 0xbf, 0x45, 0xcf, 0x73, 0xb8, 0x39, 0xcf, 0xc8, + 0xd9, 0xca, 0x68, 0xf0, 0xf6, 0x3e, 0xd6, 0xad, 0xe0, 0x30, 0x77, 0x65, 0xb1, 0x3e, 0xd3, 0x56, + 0x26, 0x75, 0x0d, 0xf1, 0x98, 0xb0, 0xc8, 0xec, 0x54, 0xae, 0x99, 0xbc, 0x9e, 0x37, 0x49, 0xba, + 0x6f, 0x61, 0x95, 0xc4, 0xb0, 0xb0, 0xe5, 0xb9, 0x63, 0x19, 0xd1, 0xb5, 0x1c, 0x44, 0xa9, 0x9e, + 0x85, 0xd1, 0xfc, 0x12, 0x34, 0x45, 0x91, 0x8a, 0xa6, 0xd2, 0x79, 0xfc, 0x88, 0x77, 0x2a, 0x3c, + 0xf9, 0x43, 0xe8, 0x24, 0x2a, 0x60, 0x79, 0x8a, 0x90, 0x5d, 0x28, 0x9b, 0x8e, 0xe1, 0x57, 0x01, + 0xd1, 0xa7, 0xfd, 0xf2, 0x7f, 0x96, 0xe4, 0xc5, 0x4d, 0xe9, 0xae, 0x02, 0xd1, 0xeb, 0xa7, 0x18, + 0x11, 0x6a, 0xc3, 0x6f, 0x29, 0xb0, 0x9c, 0x59, 0x6a, 0x4a, 0x7b, 0x0e, 0xfe, 0x14, 0xe0, 0x84, + 0x9a, 0x58, 0xda, 0x73, 0x9c, 0x38, 0x26, 0x24, 0x62, 0x04, 0xcd, 0x78, 0x36, 0x85, 0x72, 0xee, + 0x09, 0x65, 0x64, 0x77, 0x69, 0xdd, 0xcf, 0xea, 0x1a, 0x22, 0x7a, 0x08, 0x9d, 0x44, 0xf2, 0x9b, + 0x27, 0xcc, 0xec, 0x1c, 0xb9, 0xd0, 0x0e, 0x9d, 0x4a, 0x79, 0xf3, 0x76, 0xe8, 0xbc, 0xdc, 0x78, + 0x2a, 0x96, 0x8d, 0x1f, 0x2e, 0x42, 0x9d, 0x46, 0xde, 0x54, 0xdf, 0xff, 0x3f, 0xf0, 0x7e, 0x7a, + 0x81, 0xf7, 0x43, 0xe8, 0x24, 0x1e, 0xea, 0xe7, 0x69, 0x4c, 0xf6, 0x7b, 0xfe, 0x42, 0x31, 0xa3, + 0xfc, 0xc6, 0x3d, 0x2f, 0x00, 0xc9, 0x7c, 0x09, 0x3f, 0x7d, 0xfe, 0x4f, 0xd9, 0x5f, 0x63, 0x84, + 0x17, 0x46, 0x5e, 0x3e, 0xe1, 0xb0, 0x52, 0x7e, 0x0f, 0xf1, 0x75, 0x89, 0x47, 0xff, 0x77, 0xe4, + 0x06, 0x0f, 0xa1, 0x93, 0x78, 0x97, 0x98, 0xa7, 0x49, 0xd9, 0xcf, 0x17, 0xa7, 0x63, 0xf8, 0x92, + 0x43, 0xd9, 0x43, 0x58, 0xcc, 0x78, 0x02, 0x86, 0xae, 0xe7, 0xa7, 0x08, 0xd9, 0xaf, 0xc5, 0x8a, + 0x2c, 0xac, 0x25, 0x19, 0x33, 0xba, 0x9a, 0x4f, 0x6a, 0xf2, 0x0f, 0xe6, 0xfa, 0xeb, 0x45, 0xff, + 0x8f, 0x2e, 0x5c, 0xd8, 0x27, 0x30, 0xc7, 0xde, 0x2d, 0xa2, 0x2b, 0x79, 0x27, 0xb5, 0xb1, 0x57, + 0x8d, 0xfd, 0xe9, 0xaf, 0x1f, 0xfd, 0x89, 0x15, 0x90, 0x75, 0x0c, 0xa0, 0xcd, 0x40, 0x21, 0xb3, + 0xce, 0x19, 0xc1, 0x27, 0x50, 0xa5, 0xdb, 0x02, 0xca, 0x39, 0x75, 0x8c, 0xbf, 0x52, 0xec, 0x17, + 0x79, 0x98, 0x18, 0x51, 0xde, 0xa0, 0x63, 0x59, 0x9d, 0xee, 0xbc, 0xa7, 0xbf, 0xae, 0xa0, 0x01, + 0xb4, 0x18, 0x02, 0xc1, 0x99, 0xf3, 0x5e, 0xc1, 0x08, 0x16, 0x63, 0x2b, 0x78, 0x5a, 0x68, 0xae, + 0x2b, 0xff, 0x47, 0xf2, 0xb0, 0x5f, 0xa3, 0x2f, 0x06, 0x93, 0xb7, 0x5c, 0xd1, 0xf5, 0xd3, 0x5e, + 0xd7, 0xed, 0xbf, 0x7e, 0x8a, 0x11, 0x21, 0xf6, 0x7d, 0xe8, 0x26, 0x6f, 0x1c, 0xa0, 0xd7, 0xf2, + 0xfd, 0x4e, 0x16, 0xde, 0xa9, 0x4e, 0x67, 0x07, 0xe6, 0xd8, 0xc1, 0x52, 0x9e, 0x91, 0x4a, 0xc7, + 0x4e, 0x53, 0xe7, 0xbb, 0xf5, 0xcd, 0x4f, 0x37, 0x46, 0x66, 0x70, 0x38, 0xd9, 0x27, 0x2d, 0xd7, + 0x58, 0xe7, 0xd7, 0x4c, 0x97, 0xff, 0xba, 0x26, 0x64, 0x7b, 0x8d, 0x8e, 0xbf, 0x46, 0x51, 0x8c, + 0xf7, 0xf7, 0xe7, 0xe8, 0xe7, 0x1b, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x47, 0xe5, 0x4c, 0x36, + 0x9c, 0x59, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -4948,6 +5214,9 @@ type QueryCoordClient interface { TransferReplica(ctx context.Context, in *TransferReplicaRequest, opts ...grpc.CallOption) (*commonpb.Status, error) ListResourceGroups(ctx context.Context, in *milvuspb.ListResourceGroupsRequest, opts ...grpc.CallOption) (*milvuspb.ListResourceGroupsResponse, error) DescribeResourceGroup(ctx context.Context, in *DescribeResourceGroupRequest, opts ...grpc.CallOption) (*DescribeResourceGroupResponse, error) + ListCheckers(ctx context.Context, in *ListCheckersRequest, opts ...grpc.CallOption) (*ListCheckersResponse, error) + ActivateChecker(ctx context.Context, in *ActivateCheckerRequest, opts ...grpc.CallOption) (*commonpb.Status, error) + DeactivateChecker(ctx context.Context, in *DeactivateCheckerRequest, opts ...grpc.CallOption) (*commonpb.Status, error) } type queryCoordClient struct { @@ -5174,6 +5443,33 @@ func (c *queryCoordClient) DescribeResourceGroup(ctx context.Context, in *Descri return out, nil } +func (c *queryCoordClient) ListCheckers(ctx context.Context, in *ListCheckersRequest, opts ...grpc.CallOption) (*ListCheckersResponse, error) { + out := new(ListCheckersResponse) + err := c.cc.Invoke(ctx, "/milvus.proto.query.QueryCoord/ListCheckers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryCoordClient) ActivateChecker(ctx context.Context, in *ActivateCheckerRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.query.QueryCoord/ActivateChecker", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryCoordClient) DeactivateChecker(ctx context.Context, in *DeactivateCheckerRequest, opts ...grpc.CallOption) (*commonpb.Status, error) { + out := new(commonpb.Status) + err := c.cc.Invoke(ctx, "/milvus.proto.query.QueryCoord/DeactivateChecker", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryCoordServer is the server API for QueryCoord service. type QueryCoordServer interface { GetComponentStates(context.Context, *milvuspb.GetComponentStatesRequest) (*milvuspb.ComponentStates, error) @@ -5202,6 +5498,9 @@ type QueryCoordServer interface { TransferReplica(context.Context, *TransferReplicaRequest) (*commonpb.Status, error) ListResourceGroups(context.Context, *milvuspb.ListResourceGroupsRequest) (*milvuspb.ListResourceGroupsResponse, error) DescribeResourceGroup(context.Context, *DescribeResourceGroupRequest) (*DescribeResourceGroupResponse, error) + ListCheckers(context.Context, *ListCheckersRequest) (*ListCheckersResponse, error) + ActivateChecker(context.Context, *ActivateCheckerRequest) (*commonpb.Status, error) + DeactivateChecker(context.Context, *DeactivateCheckerRequest) (*commonpb.Status, error) } // UnimplementedQueryCoordServer can be embedded to have forward compatible implementations. @@ -5280,6 +5579,15 @@ func (*UnimplementedQueryCoordServer) ListResourceGroups(ctx context.Context, re func (*UnimplementedQueryCoordServer) DescribeResourceGroup(ctx context.Context, req *DescribeResourceGroupRequest) (*DescribeResourceGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DescribeResourceGroup not implemented") } +func (*UnimplementedQueryCoordServer) ListCheckers(ctx context.Context, req *ListCheckersRequest) (*ListCheckersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCheckers not implemented") +} +func (*UnimplementedQueryCoordServer) ActivateChecker(ctx context.Context, req *ActivateCheckerRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method ActivateChecker not implemented") +} +func (*UnimplementedQueryCoordServer) DeactivateChecker(ctx context.Context, req *DeactivateCheckerRequest) (*commonpb.Status, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeactivateChecker not implemented") +} func RegisterQueryCoordServer(s *grpc.Server, srv QueryCoordServer) { s.RegisterService(&_QueryCoord_serviceDesc, srv) @@ -5717,6 +6025,60 @@ func _QueryCoord_DescribeResourceGroup_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _QueryCoord_ListCheckers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCheckersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryCoordServer).ListCheckers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.query.QueryCoord/ListCheckers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryCoordServer).ListCheckers(ctx, req.(*ListCheckersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _QueryCoord_ActivateChecker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ActivateCheckerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryCoordServer).ActivateChecker(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.query.QueryCoord/ActivateChecker", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryCoordServer).ActivateChecker(ctx, req.(*ActivateCheckerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _QueryCoord_DeactivateChecker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeactivateCheckerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryCoordServer).DeactivateChecker(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/milvus.proto.query.QueryCoord/DeactivateChecker", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryCoordServer).DeactivateChecker(ctx, req.(*DeactivateCheckerRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _QueryCoord_serviceDesc = grpc.ServiceDesc{ ServiceName: "milvus.protov2.query.QueryCoord", HandlerType: (*QueryCoordServer)(nil), @@ -5817,6 +6179,18 @@ var _QueryCoord_serviceDesc = grpc.ServiceDesc{ MethodName: "DescribeResourceGroup", Handler: _QueryCoord_DescribeResourceGroup_Handler, }, + { + MethodName: "ListCheckers", + Handler: _QueryCoord_ListCheckers_Handler, + }, + { + MethodName: "ActivateChecker", + Handler: _QueryCoord_ActivateChecker_Handler, + }, + { + MethodName: "DeactivateChecker", + Handler: _QueryCoord_DeactivateChecker_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "query_coord.proto", diff --git a/proto/v2.2/rootcoordpb/root_coord.pb.go b/proto/v2.2/rootcoordpb/root_coord.pb.go index c75c516..218f5f6 100644 --- a/proto/v2.2/rootcoordpb/root_coord.pb.go +++ b/proto/v2.2/rootcoordpb/root_coord.pb.go @@ -794,28 +794,28 @@ type RootCoordClient interface { GetComponentStates(ctx context.Context, in *milvuspb.GetComponentStatesRequest, opts ...grpc.CallOption) (*milvuspb.ComponentStates, error) GetTimeTickChannel(ctx context.Context, in *internalpb.GetTimeTickChannelRequest, opts ...grpc.CallOption) (*milvuspb.StringResponse, error) GetStatisticsChannel(ctx context.Context, in *internalpb.GetStatisticsChannelRequest, opts ...grpc.CallOption) (*milvuspb.StringResponse, error) - //* + // * // @brief This method is used to create collection // // @param CreateCollectionRequest, use to provide collection information to be created. // // @return Status CreateCollection(ctx context.Context, in *milvuspb.CreateCollectionRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to delete collection. // // @param DropCollectionRequest, collection name is going to be deleted. // // @return Status DropCollection(ctx context.Context, in *milvuspb.DropCollectionRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to test collection existence. // // @param HasCollectionRequest, collection name is going to be tested. // // @return BoolResponse HasCollection(ctx context.Context, in *milvuspb.HasCollectionRequest, opts ...grpc.CallOption) (*milvuspb.BoolResponse, error) - //* + // * // @brief This method is used to get collection schema. // // @param DescribeCollectionRequest, target collection name. @@ -826,28 +826,28 @@ type RootCoordClient interface { CreateAlias(ctx context.Context, in *milvuspb.CreateAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) DropAlias(ctx context.Context, in *milvuspb.DropAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) AlterAlias(ctx context.Context, in *milvuspb.AlterAliasRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to list all collections. // // @return StringListResponse, collection name list ShowCollections(ctx context.Context, in *milvuspb.ShowCollectionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowCollectionsResponse, error) AlterCollection(ctx context.Context, in *milvuspb.AlterCollectionRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to create partition // // @return Status CreatePartition(ctx context.Context, in *milvuspb.CreatePartitionRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to drop partition // // @return Status DropPartition(ctx context.Context, in *milvuspb.DropPartitionRequest, opts ...grpc.CallOption) (*commonpb.Status, error) - //* + // * // @brief This method is used to test partition existence. // // @return BoolResponse HasPartition(ctx context.Context, in *milvuspb.HasPartitionRequest, opts ...grpc.CallOption) (*milvuspb.BoolResponse, error) - //* + // * // @brief This method is used to show partition information // // @param ShowPartitionRequest, target collection name. @@ -855,7 +855,7 @@ type RootCoordClient interface { // @return StringListResponse ShowPartitions(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error) ShowPartitionsInternal(ctx context.Context, in *milvuspb.ShowPartitionsRequest, opts ...grpc.CallOption) (*milvuspb.ShowPartitionsResponse, error) - // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} + // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} ShowSegments(ctx context.Context, in *milvuspb.ShowSegmentsRequest, opts ...grpc.CallOption) (*milvuspb.ShowSegmentsResponse, error) AllocTimestamp(ctx context.Context, in *AllocTimestampRequest, opts ...grpc.CallOption) (*AllocTimestampResponse, error) AllocID(ctx context.Context, in *AllocIDRequest, opts ...grpc.CallOption) (*AllocIDResponse, error) @@ -1328,28 +1328,28 @@ type RootCoordServer interface { GetComponentStates(context.Context, *milvuspb.GetComponentStatesRequest) (*milvuspb.ComponentStates, error) GetTimeTickChannel(context.Context, *internalpb.GetTimeTickChannelRequest) (*milvuspb.StringResponse, error) GetStatisticsChannel(context.Context, *internalpb.GetStatisticsChannelRequest) (*milvuspb.StringResponse, error) - //* + // * // @brief This method is used to create collection // // @param CreateCollectionRequest, use to provide collection information to be created. // // @return Status CreateCollection(context.Context, *milvuspb.CreateCollectionRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to delete collection. // // @param DropCollectionRequest, collection name is going to be deleted. // // @return Status DropCollection(context.Context, *milvuspb.DropCollectionRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to test collection existence. // // @param HasCollectionRequest, collection name is going to be tested. // // @return BoolResponse HasCollection(context.Context, *milvuspb.HasCollectionRequest) (*milvuspb.BoolResponse, error) - //* + // * // @brief This method is used to get collection schema. // // @param DescribeCollectionRequest, target collection name. @@ -1360,28 +1360,28 @@ type RootCoordServer interface { CreateAlias(context.Context, *milvuspb.CreateAliasRequest) (*commonpb.Status, error) DropAlias(context.Context, *milvuspb.DropAliasRequest) (*commonpb.Status, error) AlterAlias(context.Context, *milvuspb.AlterAliasRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to list all collections. // // @return StringListResponse, collection name list ShowCollections(context.Context, *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) AlterCollection(context.Context, *milvuspb.AlterCollectionRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to create partition // // @return Status CreatePartition(context.Context, *milvuspb.CreatePartitionRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to drop partition // // @return Status DropPartition(context.Context, *milvuspb.DropPartitionRequest) (*commonpb.Status, error) - //* + // * // @brief This method is used to test partition existence. // // @return BoolResponse HasPartition(context.Context, *milvuspb.HasPartitionRequest) (*milvuspb.BoolResponse, error) - //* + // * // @brief This method is used to show partition information // // @param ShowPartitionRequest, target collection name. @@ -1389,7 +1389,7 @@ type RootCoordServer interface { // @return StringListResponse ShowPartitions(context.Context, *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) ShowPartitionsInternal(context.Context, *milvuspb.ShowPartitionsRequest) (*milvuspb.ShowPartitionsResponse, error) - // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} + // rpc DescribeSegment(milvus.DescribeSegmentRequest) returns (milvus.DescribeSegmentResponse) {} ShowSegments(context.Context, *milvuspb.ShowSegmentsRequest) (*milvuspb.ShowSegmentsResponse, error) AllocTimestamp(context.Context, *AllocTimestampRequest) (*AllocTimestampResponse, error) AllocID(context.Context, *AllocIDRequest) (*AllocIDResponse, error) diff --git a/proto/v2.2/schemapb/schema.pb.go b/proto/v2.2/schemapb/schema.pb.go index 732fe7e..e701c96 100644 --- a/proto/v2.2/schemapb/schema.pb.go +++ b/proto/v2.2/schemapb/schema.pb.go @@ -22,7 +22,7 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package -//* +// * // @brief Field data type type DataType int32 @@ -122,7 +122,7 @@ func (FieldState) EnumDescriptor() ([]byte, []int) { return fileDescriptor_1c5fb4d8cc22d66a, []int{1} } -//* +// * // @brief Field schema type FieldSchema struct { FieldID int64 `protobuf:"varint,1,opt,name=fieldID,proto3" json:"fieldID,omitempty"` @@ -260,7 +260,7 @@ func (m *FieldSchema) GetIsPartitionKey() bool { return false } -//* +// * // @brief Collection schema type CollectionSchema struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -696,6 +696,7 @@ func (m *JSONArray) GetData() [][]byte { type ValueField struct { // Types that are valid to be assigned to Data: + // // *ValueField_BoolData // *ValueField_IntData // *ValueField_LongData @@ -851,6 +852,7 @@ func (*ValueField) XXX_OneofWrappers() []interface{} { type ScalarField struct { // Types that are valid to be assigned to Data: + // // *ScalarField_BoolData // *ScalarField_IntData // *ScalarField_LongData @@ -1037,6 +1039,7 @@ func (*ScalarField) XXX_OneofWrappers() []interface{} { type VectorField struct { Dim int64 `protobuf:"varint,1,opt,name=dim,proto3" json:"dim,omitempty"` // Types that are valid to be assigned to Data: + // // *VectorField_FloatVector // *VectorField_BinaryVector // *VectorField_Float16Vector @@ -1156,6 +1159,7 @@ type FieldData struct { Type DataType `protobuf:"varint,1,opt,name=type,proto3,enum=milvus.protov2.schema.DataType" json:"type,omitempty"` FieldName string `protobuf:"bytes,2,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` // Types that are valid to be assigned to Field: + // // *FieldData_Scalars // *FieldData_Vectors Field isFieldData_Field `protobuf_oneof:"field"` @@ -1266,6 +1270,7 @@ func (*FieldData) XXX_OneofWrappers() []interface{} { type IDs struct { // Types that are valid to be assigned to IdField: + // // *IDs_IntId // *IDs_StrId IdField isIDs_IdField `protobuf_oneof:"id_field"` diff --git a/states/visit_querycoord.go b/states/visit_querycoord.go index a4454c1..ebede42 100644 --- a/states/visit_querycoord.go +++ b/states/visit_querycoord.go @@ -1,10 +1,16 @@ package states import ( + "context" "fmt" + "os" + "sort" + "strconv" + "text/tabwriter" "github.com/milvus-io/birdwatcher/models" "github.com/milvus-io/birdwatcher/proto/v2.0/querypb" + "github.com/milvus-io/birdwatcher/proto/v2.2/commonpb" querypbv2 "github.com/milvus-io/birdwatcher/proto/v2.2/querypb" "github.com/spf13/cobra" "google.golang.org/grpc" @@ -28,10 +34,11 @@ func (s *queryCoordState) SetupCommands() { getMetricsCmd(s.client), // configuration getConfigurationCmd(s.clientv2, s.session.ServerID), - //back + // back getBackCmd(s, s.prevState), // exit getExitCmd(s), + checkerActivationCmd(s.clientv2, s.session.ServerID), ) s.mergeFunctionCommands(cmd, s) @@ -72,7 +79,6 @@ func (s *queryCoordState) ShowCollectionCmd() *cobra.Command { }*/ func getQueryCoordState(client querypb.QueryCoordClient, conn *grpc.ClientConn, prev State, session *models.Session) State { - state := &queryCoordState{ cmdState: cmdState{ label: fmt.Sprintf("QueryCoord-%d(%s)", session.ServerID, session.Address), @@ -88,3 +94,130 @@ func getQueryCoordState(client querypb.QueryCoordClient, conn *grpc.ClientConn, return state } + +func checkerActivationCmd(clientv2 querypbv2.QueryCoordClient, id int64) *cobra.Command { + cmd := &cobra.Command{ + Use: "checker", + Short: "checker cmd", + } + cmd.AddCommand( + checkerActivateCmd(clientv2, id), + checkerDeactivateCmd(clientv2, id), + checkerListCmd(clientv2, id), + ) + return cmd +} + +func checkerActivateCmd(clientv2 querypbv2.QueryCoordClient, id int64) *cobra.Command { + cmd := &cobra.Command{ + Use: "activate", + Short: "activate checkerID", + Run: func(cmd *cobra.Command, args []string) { + checkerID, err := strconv.ParseInt(args[0], 10, 64) + if err != nil { + fmt.Println("checkerID must be a number") + return + } + req := &querypbv2.ActivateCheckerRequest{ + Base: &commonpb.MsgBase{ + TargetID: id, + SourceID: -1, + }, + CheckerID: int32(checkerID), + } + + status, err := clientv2.ActivateChecker(context.Background(), req) + if err != nil { + fmt.Println(err.Error()) + return + } + if status.ErrorCode != commonpb.ErrorCode_Success { + fmt.Print(status.Reason) + return + } + fmt.Println("success") + }, + } + + return cmd +} + +func checkerDeactivateCmd(clientv2 querypbv2.QueryCoordClient, id int64) *cobra.Command { + cmd := &cobra.Command{ + Use: "deactivate", + Short: "deactivate checkerID", + Run: func(cmd *cobra.Command, args []string) { + checkerID, err := strconv.ParseInt(args[0], 10, 64) + if err != nil { + fmt.Println("checkerID must be a number") + return + } + req := &querypbv2.DeactivateCheckerRequest{ + Base: &commonpb.MsgBase{ + TargetID: id, + SourceID: -1, + }, + CheckerID: int32(checkerID), + } + + status, err := clientv2.DeactivateChecker(context.Background(), req) + if err != nil { + fmt.Println(err.Error()) + return + } + if status.ErrorCode != commonpb.ErrorCode_Success { + fmt.Print(status.Reason) + return + } + fmt.Println("success") + }, + } + + return cmd +} + +func checkerListCmd(clientv2 querypbv2.QueryCoordClient, id int64) *cobra.Command { + cmd := &cobra.Command{ + Use: "list", + Short: "checker list [checkerIDs]", + Run: func(cmd *cobra.Command, args []string) { + checkerIDs := make([]int32, 0) + for _, arg := range args { + checkerID, err := strconv.ParseInt(arg, 10, 32) + if err != nil { + fmt.Println("checkerID must be number") + } + checkerIDs = append(checkerIDs, int32(checkerID)) + } + + req := &querypbv2.ListCheckersRequest{ + Base: &commonpb.MsgBase{ + TargetID: id, + SourceID: -1, + }, + CheckerIDs: checkerIDs, + } + + resp, err := clientv2.ListCheckers(context.Background(), req) + if err != nil { + fmt.Println(err.Error()) + return + } + if resp.Status.ErrorCode != commonpb.ErrorCode_Success { + fmt.Println(resp.Status.Reason) + return + } + + sort.Slice(resp.CheckerInfos, func(i, j int) bool { + return resp.CheckerInfos[i].GetId() < resp.CheckerInfos[j].GetId() + }) + w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', tabwriter.AlignRight|tabwriter.Debug) + fmt.Fprintln(w, "id\tdesc\tfound\tactivated") + for _, info := range resp.CheckerInfos { + fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", info.GetId(), info.GetDesc(), info.GetFound(), info.GetActivated()) + } + w.Flush() + }, + } + return cmd +} diff --git a/states/visit_querynode.go b/states/visit_querynode.go index 343b658..e30625e 100644 --- a/states/visit_querynode.go +++ b/states/visit_querynode.go @@ -52,7 +52,6 @@ func (s *queryNodeState) SetupCommands() { } func getQueryNodeState(client querypb.QueryNodeClient, conn *grpc.ClientConn, prev State, session *models.Session) State { - state := &queryNodeState{ cmdState: cmdState{ label: fmt.Sprintf("QueryNode-%d(%s)", session.ServerID, session.Address),