Impl GetReplicas in Proxy (#16390)

See also: #16298

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
pull/16400/head
XuanYang-cn 2022-04-06 14:57:31 +08:00 committed by GitHub
parent 2b27fa4609
commit 78200009a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 3823 additions and 887 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -647,6 +647,10 @@ func (s *Server) GetImportState(ctx context.Context, req *milvuspb.GetImportStat
return s.proxy.GetImportState(ctx, req)
}
func (s *Server) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return s.proxy.GetReplicas(ctx, req)
}
// Check is required by gRPC healthy checking
func (s *Server) Check(ctx context.Context, req *grpc_health_v1.HealthCheckRequest) (*grpc_health_v1.HealthCheckResponse, error) {
ret := &grpc_health_v1.HealthCheckResponse{

View File

@ -360,7 +360,7 @@ func (m *MockQueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetric
return nil, nil
}
func (m *MockQueryCoord) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (m *MockQueryCoord) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return nil, nil
}
@ -708,6 +708,10 @@ func (m *MockProxy) GetImportState(ctx context.Context, req *milvuspb.GetImportS
return nil, nil
}
func (m *MockProxy) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return nil, nil
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
func Test_NewServer(t *testing.T) {
ctx := context.Background()

View File

@ -302,7 +302,7 @@ func (c *Client) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest
}
// GetReplicas gets the replicas of a certain collection.
func (c *Client) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (c *Client) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
@ -312,7 +312,7 @@ func (c *Client) GetReplicas(ctx context.Context, req *querypb.GetReplicasReques
if err != nil || ret == nil {
return nil, err
}
return ret.(*querypb.GetReplicasResponse), err
return ret.(*milvuspb.GetReplicasResponse), err
}
// GetShardLeaders gets the shard leaders of a certain collection.

View File

@ -391,7 +391,7 @@ func (s *Server) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest
}
// GetReplicas returns the shard leaders of a certain collection.
func (s *Server) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (s *Server) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return s.queryCoord.GetReplicas(ctx, req)
}

View File

@ -48,7 +48,7 @@ type MockQueryCoord struct {
channelResp *querypb.CreateQueryChannelResponse
infoResp *querypb.GetSegmentInfoResponse
metricResp *milvuspb.GetMetricsResponse
replicasResp *querypb.GetReplicasResponse
replicasResp *milvuspb.GetReplicasResponse
shardLeadersResp *querypb.GetShardLeadersResponse
}
@ -144,7 +144,7 @@ func (m *MockQueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetric
return m.metricResp, m.err
}
func (m *MockQueryCoord) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (m *MockQueryCoord) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return m.replicasResp, m.err
}

View File

@ -49,6 +49,7 @@ service MilvusService {
rpc GetFlushState(GetFlushStateRequest) returns (GetFlushStateResponse) {}
rpc GetPersistentSegmentInfo(GetPersistentSegmentInfoRequest) returns (GetPersistentSegmentInfoResponse) {}
rpc GetQuerySegmentInfo(GetQuerySegmentInfoRequest) returns (GetQuerySegmentInfoResponse) {}
rpc GetReplicas(GetReplicasRequest) returns (GetReplicasResponse) {}
rpc Dummy(DummyRequest) returns (DummyResponse) {}
@ -821,6 +822,37 @@ message GetImportStateResponse {
repeated common.KeyValuePair infos = 5; // more informations about the task, progress percent, file path, failed reason, etc.
}
message GetReplicasRequest {
common.MsgBase base = 1;
int64 collectionID = 2;
bool with_shard_nodes = 3;
}
message GetReplicasResponse {
common.Status status = 1;
repeated ReplicaInfo replicas = 2;
}
message ReplicaInfo { // ReplicaGroup
int64 replicaID = 1;
int64 collectionID = 2;
repeated int64 partition_ids = 3; // empty indicates to load collection
repeated ShardReplica shard_replicas = 4;
repeated int64 node_ids = 5; // include leaders
}
message ShardReplica {
int64 leaderID = 1;
string leader_addr = 2; // IP:port
string dm_channel_name = 3;
// optional, DO NOT save it in meta, set it only for GetReplicas()
// if with_shard_nodes is true
repeated int64 node_ids = 4;
}
service ProxyService {
rpc RegisterLink(RegisterLinkRequest) returns (RegisterLinkResponse) {}
}

View File

@ -5191,6 +5191,244 @@ func (m *GetImportStateResponse) GetInfos() []*commonpb.KeyValuePair {
return nil
}
type GetReplicasRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
WithShardNodes bool `protobuf:"varint,3,opt,name=with_shard_nodes,json=withShardNodes,proto3" json:"with_shard_nodes,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReplicasRequest) Reset() { *m = GetReplicasRequest{} }
func (m *GetReplicasRequest) String() string { return proto.CompactTextString(m) }
func (*GetReplicasRequest) ProtoMessage() {}
func (*GetReplicasRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{80}
}
func (m *GetReplicasRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReplicasRequest.Unmarshal(m, b)
}
func (m *GetReplicasRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReplicasRequest.Marshal(b, m, deterministic)
}
func (m *GetReplicasRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasRequest.Merge(m, src)
}
func (m *GetReplicasRequest) XXX_Size() int {
return xxx_messageInfo_GetReplicasRequest.Size(m)
}
func (m *GetReplicasRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetReplicasRequest proto.InternalMessageInfo
func (m *GetReplicasRequest) GetBase() *commonpb.MsgBase {
if m != nil {
return m.Base
}
return nil
}
func (m *GetReplicasRequest) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *GetReplicasRequest) GetWithShardNodes() bool {
if m != nil {
return m.WithShardNodes
}
return false
}
type GetReplicasResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
Replicas []*ReplicaInfo `protobuf:"bytes,2,rep,name=replicas,proto3" json:"replicas,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReplicasResponse) Reset() { *m = GetReplicasResponse{} }
func (m *GetReplicasResponse) String() string { return proto.CompactTextString(m) }
func (*GetReplicasResponse) ProtoMessage() {}
func (*GetReplicasResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{81}
}
func (m *GetReplicasResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReplicasResponse.Unmarshal(m, b)
}
func (m *GetReplicasResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReplicasResponse.Marshal(b, m, deterministic)
}
func (m *GetReplicasResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasResponse.Merge(m, src)
}
func (m *GetReplicasResponse) XXX_Size() int {
return xxx_messageInfo_GetReplicasResponse.Size(m)
}
func (m *GetReplicasResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GetReplicasResponse proto.InternalMessageInfo
func (m *GetReplicasResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *GetReplicasResponse) GetReplicas() []*ReplicaInfo {
if m != nil {
return m.Replicas
}
return nil
}
type ReplicaInfo struct {
ReplicaID int64 `protobuf:"varint,1,opt,name=replicaID,proto3" json:"replicaID,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
PartitionIds []int64 `protobuf:"varint,3,rep,packed,name=partition_ids,json=partitionIds,proto3" json:"partition_ids,omitempty"`
ShardReplicas []*ShardReplica `protobuf:"bytes,4,rep,name=shard_replicas,json=shardReplicas,proto3" json:"shard_replicas,omitempty"`
NodeIds []int64 `protobuf:"varint,5,rep,packed,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReplicaInfo) Reset() { *m = ReplicaInfo{} }
func (m *ReplicaInfo) String() string { return proto.CompactTextString(m) }
func (*ReplicaInfo) ProtoMessage() {}
func (*ReplicaInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{82}
}
func (m *ReplicaInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplicaInfo.Unmarshal(m, b)
}
func (m *ReplicaInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplicaInfo.Marshal(b, m, deterministic)
}
func (m *ReplicaInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaInfo.Merge(m, src)
}
func (m *ReplicaInfo) XXX_Size() int {
return xxx_messageInfo_ReplicaInfo.Size(m)
}
func (m *ReplicaInfo) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaInfo.DiscardUnknown(m)
}
var xxx_messageInfo_ReplicaInfo proto.InternalMessageInfo
func (m *ReplicaInfo) GetReplicaID() int64 {
if m != nil {
return m.ReplicaID
}
return 0
}
func (m *ReplicaInfo) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *ReplicaInfo) GetPartitionIds() []int64 {
if m != nil {
return m.PartitionIds
}
return nil
}
func (m *ReplicaInfo) GetShardReplicas() []*ShardReplica {
if m != nil {
return m.ShardReplicas
}
return nil
}
func (m *ReplicaInfo) GetNodeIds() []int64 {
if m != nil {
return m.NodeIds
}
return nil
}
type ShardReplica struct {
LeaderID int64 `protobuf:"varint,1,opt,name=leaderID,proto3" json:"leaderID,omitempty"`
LeaderAddr string `protobuf:"bytes,2,opt,name=leader_addr,json=leaderAddr,proto3" json:"leader_addr,omitempty"`
DmChannelName string `protobuf:"bytes,3,opt,name=dm_channel_name,json=dmChannelName,proto3" json:"dm_channel_name,omitempty"`
// optional, DO NOT save it in meta, set it only for GetReplicas()
// if with_shard_nodes is true
NodeIds []int64 `protobuf:"varint,4,rep,packed,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ShardReplica) Reset() { *m = ShardReplica{} }
func (m *ShardReplica) String() string { return proto.CompactTextString(m) }
func (*ShardReplica) ProtoMessage() {}
func (*ShardReplica) Descriptor() ([]byte, []int) {
return fileDescriptor_02345ba45cc0e303, []int{83}
}
func (m *ShardReplica) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShardReplica.Unmarshal(m, b)
}
func (m *ShardReplica) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ShardReplica.Marshal(b, m, deterministic)
}
func (m *ShardReplica) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardReplica.Merge(m, src)
}
func (m *ShardReplica) XXX_Size() int {
return xxx_messageInfo_ShardReplica.Size(m)
}
func (m *ShardReplica) XXX_DiscardUnknown() {
xxx_messageInfo_ShardReplica.DiscardUnknown(m)
}
var xxx_messageInfo_ShardReplica proto.InternalMessageInfo
func (m *ShardReplica) GetLeaderID() int64 {
if m != nil {
return m.LeaderID
}
return 0
}
func (m *ShardReplica) GetLeaderAddr() string {
if m != nil {
return m.LeaderAddr
}
return ""
}
func (m *ShardReplica) GetDmChannelName() string {
if m != nil {
return m.DmChannelName
}
return ""
}
func (m *ShardReplica) GetNodeIds() []int64 {
if m != nil {
return m.NodeIds
}
return nil
}
func init() {
proto.RegisterEnum("milvus.proto.milvus.ShowType", ShowType_name, ShowType_value)
proto.RegisterEnum("milvus.proto.milvus.PlaceholderType", PlaceholderType_name, PlaceholderType_value)
@ -5275,253 +5513,269 @@ func init() {
proto.RegisterType((*ImportResponse)(nil), "milvus.proto.milvus.ImportResponse")
proto.RegisterType((*GetImportStateRequest)(nil), "milvus.proto.milvus.GetImportStateRequest")
proto.RegisterType((*GetImportStateResponse)(nil), "milvus.proto.milvus.GetImportStateResponse")
proto.RegisterType((*GetReplicasRequest)(nil), "milvus.proto.milvus.GetReplicasRequest")
proto.RegisterType((*GetReplicasResponse)(nil), "milvus.proto.milvus.GetReplicasResponse")
proto.RegisterType((*ReplicaInfo)(nil), "milvus.proto.milvus.ReplicaInfo")
proto.RegisterType((*ShardReplica)(nil), "milvus.proto.milvus.ShardReplica")
}
func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) }
var fileDescriptor_02345ba45cc0e303 = []byte{
// 3843 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3b, 0x4d, 0x6f, 0x1c, 0xc9,
0x75, 0xec, 0x19, 0xce, 0xd7, 0x9b, 0x19, 0x72, 0x58, 0xfc, 0xd0, 0xec, 0x68, 0xb5, 0xa2, 0xda,
0xbb, 0x5e, 0x4a, 0xb2, 0x24, 0x8b, 0x5a, 0xef, 0x3a, 0xda, 0x24, 0x6b, 0x91, 0xcc, 0x4a, 0xc4,
0x4a, 0x0a, 0xdd, 0x5c, 0xdb, 0x70, 0x16, 0x42, 0xa3, 0xd9, 0x5d, 0x1c, 0x36, 0xd8, 0xd3, 0x3d,
0xee, 0xaa, 0x11, 0xc5, 0x3d, 0x19, 0x70, 0x90, 0x20, 0xf0, 0x66, 0x8d, 0x20, 0x41, 0x3e, 0x0e,
0x09, 0x82, 0x7c, 0x1c, 0x72, 0x48, 0x10, 0xdb, 0x41, 0x12, 0xe4, 0x92, 0x1c, 0x02, 0x24, 0x87,
0x00, 0xf9, 0xb8, 0xe4, 0x90, 0x4b, 0xfe, 0x40, 0x6e, 0x39, 0xe6, 0x10, 0xd4, 0x47, 0xf7, 0x74,
0xf7, 0x54, 0x0f, 0x87, 0x1a, 0xcb, 0x24, 0x6f, 0xdd, 0xaf, 0xde, 0xab, 0x7a, 0xf5, 0xea, 0x7d,
0x54, 0xbd, 0x7a, 0x05, 0x8d, 0x9e, 0xeb, 0x3d, 0x1f, 0x90, 0xdb, 0xfd, 0x30, 0xa0, 0x01, 0x5a,
0x4c, 0xfe, 0xdd, 0x16, 0x3f, 0x9d, 0x86, 0x1d, 0xf4, 0x7a, 0x81, 0x2f, 0x80, 0x9d, 0x06, 0xb1,
0x0f, 0x70, 0xcf, 0x12, 0x7f, 0xfa, 0x1f, 0x68, 0x80, 0x36, 0x43, 0x6c, 0x51, 0xfc, 0xc0, 0x73,
0x2d, 0x62, 0xe0, 0xef, 0x0c, 0x30, 0xa1, 0xe8, 0xcb, 0x30, 0xbb, 0x67, 0x11, 0xdc, 0xd6, 0x56,
0xb5, 0xb5, 0xfa, 0xfa, 0xeb, 0xb7, 0x53, 0xdd, 0xca, 0xee, 0x9e, 0x90, 0xee, 0x86, 0x45, 0xb0,
0xc1, 0x31, 0xd1, 0x25, 0xa8, 0x38, 0x7b, 0xa6, 0x6f, 0xf5, 0x70, 0xbb, 0xb0, 0xaa, 0xad, 0xd5,
0x8c, 0xb2, 0xb3, 0xf7, 0xd4, 0xea, 0x61, 0xf4, 0x36, 0xcc, 0xdb, 0x81, 0xe7, 0x61, 0x9b, 0xba,
0x81, 0x2f, 0x10, 0x8a, 0x1c, 0x61, 0x6e, 0x08, 0xe6, 0x88, 0x4b, 0x50, 0xb2, 0x18, 0x0f, 0xed,
0x59, 0xde, 0x2c, 0x7e, 0x74, 0x02, 0xad, 0xad, 0x30, 0xe8, 0xbf, 0x2a, 0xee, 0xe2, 0x41, 0x8b,
0xc9, 0x41, 0x7f, 0x5f, 0x83, 0x85, 0x07, 0x1e, 0xc5, 0xe1, 0x39, 0x15, 0xca, 0xef, 0x16, 0xe0,
0x92, 0x58, 0xb5, 0xcd, 0x18, 0xfd, 0x2c, 0xb9, 0x5c, 0x81, 0xb2, 0xd0, 0x2a, 0xce, 0x66, 0xc3,
0x90, 0x7f, 0xe8, 0x0a, 0x00, 0x39, 0xb0, 0x42, 0x87, 0x98, 0xfe, 0xa0, 0xd7, 0x2e, 0xad, 0x6a,
0x6b, 0x25, 0xa3, 0x26, 0x20, 0x4f, 0x07, 0x3d, 0x64, 0xc0, 0x82, 0x1d, 0xf8, 0xc4, 0x25, 0x14,
0xfb, 0xf6, 0xb1, 0xe9, 0xe1, 0xe7, 0xd8, 0x6b, 0x97, 0x57, 0xb5, 0xb5, 0xb9, 0xf5, 0xb7, 0x94,
0x7c, 0x6f, 0x0e, 0xb1, 0x1f, 0x33, 0x64, 0xa3, 0x65, 0x67, 0x20, 0xfa, 0xf7, 0x35, 0x58, 0x66,
0x0a, 0x73, 0x2e, 0x04, 0xa3, 0xff, 0x99, 0x06, 0x4b, 0x8f, 0x2c, 0x72, 0x3e, 0x56, 0xe9, 0x0a,
0x00, 0x75, 0x7b, 0xd8, 0x24, 0xd4, 0xea, 0xf5, 0xf9, 0x4a, 0xcd, 0x1a, 0x35, 0x06, 0xd9, 0x65,
0x00, 0xfd, 0xdb, 0xd0, 0xd8, 0x08, 0x02, 0xcf, 0xc0, 0xa4, 0x1f, 0xf8, 0x04, 0xa3, 0x7b, 0x50,
0x26, 0xd4, 0xa2, 0x03, 0x22, 0x99, 0xbc, 0xac, 0x64, 0x72, 0x97, 0xa3, 0x18, 0x12, 0x95, 0xe9,
0xeb, 0x73, 0xcb, 0x1b, 0x08, 0x1e, 0xab, 0x86, 0xf8, 0xd1, 0x3f, 0x81, 0xb9, 0x5d, 0x1a, 0xba,
0x7e, 0xf7, 0x27, 0xd8, 0x79, 0x2d, 0xea, 0xfc, 0x3f, 0x34, 0x78, 0x6d, 0x0b, 0x13, 0x3b, 0x74,
0xf7, 0xce, 0x89, 0x39, 0xe8, 0xd0, 0x18, 0x42, 0xb6, 0xb7, 0xb8, 0xa8, 0x8b, 0x46, 0x0a, 0x96,
0x59, 0x8c, 0x52, 0x76, 0x31, 0xbe, 0x5b, 0x82, 0x8e, 0x6a, 0x52, 0xd3, 0x88, 0xef, 0xe7, 0x62,
0x2b, 0x2d, 0x70, 0xa2, 0x8c, 0x8d, 0xc9, 0xb8, 0x30, 0x1c, 0x6d, 0x97, 0x03, 0x62, 0x63, 0xce,
0xce, 0xaa, 0xa8, 0x98, 0xd5, 0x3a, 0x2c, 0x3f, 0x77, 0x43, 0x3a, 0xb0, 0x3c, 0xd3, 0x3e, 0xb0,
0x7c, 0x1f, 0x7b, 0x5c, 0x4e, 0xcc, 0x7d, 0x15, 0xd7, 0x6a, 0xc6, 0xa2, 0x6c, 0xdc, 0x14, 0x6d,
0x4c, 0x58, 0x04, 0xbd, 0x03, 0x2b, 0xfd, 0x83, 0x63, 0xe2, 0xda, 0x23, 0x44, 0x25, 0x4e, 0xb4,
0x14, 0xb5, 0xa6, 0xa8, 0x6e, 0xc2, 0x82, 0xcd, 0x3d, 0xa0, 0x63, 0x32, 0xa9, 0x09, 0x31, 0x96,
0xb9, 0x18, 0x5b, 0xb2, 0xe1, 0xe3, 0x08, 0xce, 0xd8, 0x8a, 0x90, 0x07, 0xd4, 0x4e, 0x10, 0x54,
0x38, 0xc1, 0xa2, 0x6c, 0xfc, 0x06, 0xb5, 0x87, 0x34, 0x69, 0xdf, 0x55, 0xcd, 0xfa, 0xae, 0x36,
0x54, 0xb8, 0x2f, 0xc6, 0xa4, 0x5d, 0xe3, 0x6c, 0x46, 0xbf, 0x68, 0x1b, 0xe6, 0x09, 0xb5, 0x42,
0x6a, 0xf6, 0x03, 0xe2, 0x32, 0xb9, 0x90, 0x36, 0xac, 0x16, 0xd7, 0xea, 0xeb, 0xab, 0xca, 0x45,
0xfa, 0x08, 0x1f, 0x6f, 0x59, 0xd4, 0xda, 0xb1, 0xdc, 0xd0, 0x98, 0xe3, 0x84, 0x3b, 0x11, 0x9d,
0xda, 0x41, 0xd6, 0xa7, 0x72, 0x90, 0x2a, 0x2d, 0x6e, 0x28, 0x7d, 0xd7, 0x8f, 0x34, 0x58, 0x7e,
0x1c, 0x58, 0xce, 0xf9, 0xb0, 0xa9, 0xb7, 0x60, 0x2e, 0xc4, 0x7d, 0xcf, 0xb5, 0x2d, 0xb6, 0x1e,
0x7b, 0x38, 0xe4, 0x56, 0x55, 0x32, 0x9a, 0x12, 0xfa, 0x94, 0x03, 0xf5, 0xcf, 0x35, 0x68, 0x1b,
0xd8, 0xc3, 0x16, 0x39, 0x1f, 0xbe, 0x40, 0xff, 0x2d, 0x0d, 0xde, 0x78, 0x88, 0x69, 0xc2, 0xaa,
0xa8, 0x45, 0x5d, 0x42, 0x5d, 0xfb, 0x2c, 0xf7, 0x15, 0xfa, 0x0f, 0x34, 0xb8, 0x9a, 0xcb, 0xd6,
0x34, 0x4e, 0xe6, 0x3d, 0x28, 0xb1, 0x2f, 0xd2, 0x2e, 0x70, 0x9d, 0xbf, 0x96, 0xa7, 0xf3, 0xdf,
0x64, 0xbe, 0x9b, 0x2b, 0xbd, 0xc0, 0xd7, 0xff, 0x5b, 0x83, 0x95, 0xdd, 0x83, 0xe0, 0x68, 0xc8,
0xd2, 0xab, 0x10, 0x50, 0xda, 0xed, 0x16, 0x33, 0x6e, 0x17, 0xdd, 0x85, 0x59, 0x7a, 0xdc, 0xc7,
0x5c, 0xb7, 0xe6, 0xd6, 0xaf, 0xdc, 0x56, 0x6c, 0xa7, 0x6f, 0x33, 0x26, 0x3f, 0x3e, 0xee, 0x63,
0x83, 0xa3, 0xa2, 0xeb, 0xd0, 0xca, 0x88, 0x3c, 0x72, 0x5c, 0xf3, 0x69, 0x99, 0x13, 0xfd, 0x6f,
0x0b, 0x70, 0x69, 0x64, 0x8a, 0xd3, 0x08, 0x5b, 0x35, 0x76, 0x41, 0x39, 0x36, 0xb3, 0x9f, 0x04,
0xaa, 0xeb, 0xb0, 0x1d, 0x6f, 0x71, 0xad, 0x68, 0x34, 0x13, 0xfe, 0xdb, 0x21, 0xe8, 0x16, 0xa0,
0x11, 0xb7, 0x2a, 0xbc, 0xf7, 0xac, 0xb1, 0x90, 0xf5, 0xab, 0xdc, 0x77, 0x2b, 0x1d, 0xab, 0x10,
0xc1, 0xac, 0xb1, 0xa4, 0xf0, 0xac, 0x04, 0xdd, 0x85, 0x25, 0xd7, 0x7f, 0x82, 0x7b, 0x41, 0x78,
0x6c, 0xf6, 0x71, 0x68, 0x63, 0x9f, 0x5a, 0x5d, 0x4c, 0xda, 0x65, 0xce, 0xd1, 0x62, 0xd4, 0xb6,
0x33, 0x6c, 0xd2, 0x7f, 0xac, 0xc1, 0x8a, 0xd8, 0xf1, 0xee, 0x58, 0x21, 0x75, 0xcf, 0x81, 0x37,
0xea, 0x47, 0x7c, 0x08, 0x3c, 0xb1, 0x3f, 0x6f, 0xc6, 0x50, 0x6e, 0x65, 0x3f, 0xd4, 0x60, 0x89,
0x6d, 0x46, 0x2f, 0x12, 0xcf, 0x7f, 0xa9, 0xc1, 0xe2, 0x23, 0x8b, 0x5c, 0x24, 0x96, 0xff, 0x4a,
0x46, 0xaa, 0x98, 0xe7, 0x33, 0x3d, 0xb2, 0xbd, 0x0d, 0xf3, 0x69, 0xa6, 0xa3, 0xdd, 0xcf, 0x5c,
0x8a, 0x6b, 0xa2, 0xff, 0xcd, 0x30, 0x56, 0x5d, 0x30, 0xce, 0xff, 0x4e, 0x83, 0x2b, 0x0f, 0x31,
0x8d, 0xb9, 0x3e, 0x17, 0x31, 0x6d, 0x52, 0x6d, 0xf9, 0x5c, 0x44, 0x64, 0x25, 0xf3, 0x67, 0x12,
0xf9, 0xbe, 0x5f, 0x80, 0x65, 0x16, 0x16, 0xce, 0x87, 0x12, 0x4c, 0x72, 0x78, 0x51, 0x28, 0x4a,
0x49, 0xa5, 0x28, 0x71, 0x3c, 0x2d, 0x4f, 0x1c, 0x4f, 0xf5, 0x1f, 0x15, 0xc4, 0x3e, 0x20, 0x29,
0x8d, 0x69, 0x96, 0x45, 0xc1, 0x6b, 0x41, 0xc9, 0xab, 0x0e, 0x8d, 0x18, 0xb2, 0xbd, 0x15, 0xc5,
0xc7, 0x14, 0xec, 0xdc, 0x86, 0xc7, 0xcf, 0x34, 0x58, 0x89, 0x8e, 0x8b, 0xbb, 0xb8, 0xdb, 0xc3,
0x3e, 0x7d, 0x79, 0x1d, 0xca, 0x6a, 0x40, 0x41, 0xa1, 0x01, 0xaf, 0x43, 0x8d, 0x88, 0x71, 0xe2,
0x93, 0xe0, 0x10, 0xa0, 0xff, 0xbd, 0x06, 0x97, 0x46, 0xd8, 0x99, 0x66, 0x11, 0xdb, 0x50, 0x71,
0x7d, 0x07, 0xbf, 0x88, 0xb9, 0x89, 0x7e, 0x59, 0xcb, 0xde, 0xc0, 0xf5, 0x9c, 0x98, 0x8d, 0xe8,
0x17, 0x5d, 0x83, 0x06, 0xf6, 0xad, 0x3d, 0x0f, 0x9b, 0x1c, 0x97, 0x2b, 0x72, 0xd5, 0xa8, 0x0b,
0xd8, 0x36, 0x03, 0x31, 0xe2, 0x7d, 0x17, 0x73, 0xe2, 0x92, 0x20, 0x96, 0xbf, 0xfa, 0xaf, 0x6b,
0xb0, 0xc8, 0xb4, 0x50, 0x72, 0x4f, 0x5e, 0xad, 0x34, 0x57, 0xa1, 0x9e, 0x50, 0x33, 0x39, 0x91,
0x24, 0x48, 0x3f, 0x84, 0xa5, 0x34, 0x3b, 0xd3, 0x48, 0xf3, 0x0d, 0x80, 0x78, 0xad, 0x84, 0x35,
0x14, 0x8d, 0x04, 0x44, 0xff, 0xac, 0x10, 0x25, 0x85, 0xb9, 0x98, 0xce, 0x38, 0x67, 0xc5, 0x97,
0x24, 0xe9, 0xcf, 0x6b, 0x1c, 0xc2, 0x9b, 0xb7, 0xa0, 0x81, 0x5f, 0xd0, 0xd0, 0x32, 0xfb, 0x56,
0x68, 0xf5, 0x84, 0x59, 0x4d, 0xe4, 0x7a, 0xeb, 0x9c, 0x6c, 0x87, 0x53, 0xb1, 0x41, 0xb8, 0x8a,
0x88, 0x41, 0xca, 0x62, 0x10, 0x0e, 0xe1, 0x01, 0xe3, 0x9f, 0xd9, 0x2e, 0x4e, 0x6a, 0xf3, 0x79,
0x17, 0x48, 0x7a, 0x2a, 0xa5, 0xec, 0x54, 0xfe, 0x54, 0x83, 0x16, 0x9f, 0x82, 0x98, 0x4f, 0x9f,
0x75, 0x9b, 0xa1, 0xd1, 0x32, 0x34, 0x63, 0x6c, 0xef, 0x67, 0xa0, 0x2c, 0xe5, 0x5e, 0x9c, 0x54,
0xee, 0x92, 0xe0, 0x84, 0x69, 0xe8, 0x7f, 0xa4, 0xc1, 0x72, 0x46, 0xe4, 0xd3, 0x28, 0xfc, 0xc7,
0x80, 0xc4, 0x0c, 0x9d, 0xe1, 0xb4, 0xa3, 0x38, 0xfd, 0x96, 0x32, 0x28, 0x65, 0x85, 0x64, 0x2c,
0xb8, 0x19, 0x08, 0xd1, 0xff, 0x4d, 0x83, 0xd7, 0x1f, 0x62, 0xca, 0x51, 0x37, 0x98, 0xd3, 0xd9,
0x09, 0x83, 0x6e, 0x88, 0x09, 0xb9, 0xb8, 0xfa, 0xf1, 0xdb, 0x62, 0x63, 0xa7, 0x9a, 0xd2, 0x34,
0xf2, 0xbf, 0x06, 0x0d, 0x3e, 0x06, 0x76, 0xcc, 0x30, 0x38, 0x22, 0x52, 0x8f, 0xea, 0x12, 0x66,
0x04, 0x47, 0x5c, 0x21, 0x68, 0x40, 0x2d, 0x4f, 0x20, 0xc8, 0x88, 0xc2, 0x21, 0xac, 0x99, 0xdb,
0x60, 0xc4, 0x18, 0xeb, 0x1c, 0x5f, 0x5c, 0x19, 0xff, 0x89, 0x06, 0xcb, 0x99, 0xa9, 0x4c, 0x23,
0xdb, 0xaf, 0x88, 0x6d, 0xa7, 0x98, 0xcc, 0xdc, 0xfa, 0x55, 0x25, 0x4d, 0x62, 0x30, 0x81, 0x8d,
0xae, 0x42, 0x7d, 0xdf, 0x72, 0x3d, 0x33, 0xc4, 0x16, 0x09, 0x7c, 0x39, 0x51, 0x60, 0x20, 0x83,
0x43, 0xf4, 0x7f, 0xd4, 0xc4, 0xcd, 0xdb, 0x05, 0xf7, 0x78, 0x7f, 0x5c, 0x80, 0xe6, 0xb6, 0x4f,
0x70, 0x48, 0xcf, 0xff, 0xd1, 0x04, 0x7d, 0x00, 0x75, 0x3e, 0x31, 0x62, 0x3a, 0x16, 0xb5, 0x64,
0x34, 0x7b, 0x43, 0x99, 0xa6, 0xff, 0x90, 0xe1, 0x6d, 0x59, 0xd4, 0x32, 0x84, 0x74, 0x08, 0xfb,
0x46, 0x97, 0xa1, 0x76, 0x60, 0x91, 0x03, 0xf3, 0x10, 0x1f, 0x8b, 0xfd, 0x62, 0xd3, 0xa8, 0x32,
0xc0, 0x47, 0xf8, 0x98, 0xa0, 0xd7, 0xa0, 0xea, 0x0f, 0x7a, 0xc2, 0xc0, 0x2a, 0xab, 0xda, 0x5a,
0xd3, 0xa8, 0xf8, 0x83, 0x1e, 0x37, 0xaf, 0x7f, 0x29, 0xc0, 0xdc, 0x93, 0x01, 0x3b, 0x08, 0xf1,
0x4b, 0x86, 0x81, 0x47, 0x5f, 0x4e, 0x19, 0x6f, 0x40, 0x51, 0x6c, 0x29, 0x18, 0x45, 0x5b, 0xc9,
0xf8, 0xf6, 0x16, 0x31, 0x18, 0x12, 0x4f, 0xb0, 0x0f, 0x6c, 0x5b, 0xee, 0xce, 0x8a, 0x9c, 0xd9,
0x1a, 0x83, 0x88, 0xbd, 0xd9, 0x65, 0xa8, 0xe1, 0x30, 0x8c, 0xf7, 0x6e, 0x7c, 0x2a, 0x38, 0x0c,
0x45, 0xa3, 0x0e, 0x0d, 0xcb, 0x3e, 0xf4, 0x83, 0x23, 0x0f, 0x3b, 0x5d, 0xec, 0xf0, 0x65, 0xaf,
0x1a, 0x29, 0x98, 0x50, 0x0c, 0xb6, 0xf0, 0xa6, 0xed, 0x53, 0x1e, 0xd5, 0x8b, 0x4c, 0x31, 0x18,
0x64, 0xd3, 0xa7, 0xac, 0xd9, 0xc1, 0x1e, 0xa6, 0x98, 0x37, 0x57, 0x44, 0xb3, 0x80, 0xc8, 0xe6,
0x41, 0x3f, 0xa6, 0xae, 0x8a, 0x66, 0x01, 0x61, 0xcd, 0xaf, 0x43, 0x6d, 0x78, 0x8b, 0x50, 0x1b,
0xa6, 0x11, 0x39, 0x40, 0xff, 0x2f, 0x0d, 0x9a, 0x5b, 0xbc, 0xab, 0x0b, 0xa0, 0x74, 0x08, 0x66,
0xf1, 0x8b, 0x7e, 0x28, 0x4d, 0x87, 0x7f, 0x8f, 0xd5, 0x23, 0xfd, 0x39, 0xb4, 0x76, 0x3c, 0xcb,
0xc6, 0x07, 0x81, 0xe7, 0xe0, 0x90, 0xc7, 0x76, 0xd4, 0x82, 0x22, 0xb5, 0xba, 0x72, 0xf3, 0xc0,
0x3e, 0xd1, 0x57, 0xe5, 0xd1, 0x4f, 0xb8, 0xa5, 0x37, 0x95, 0x51, 0x36, 0xd1, 0x4d, 0x22, 0xa3,
0xba, 0x02, 0x65, 0x7e, 0xb3, 0x27, 0xb6, 0x15, 0x0d, 0x43, 0xfe, 0xe9, 0xcf, 0x52, 0xe3, 0x3e,
0x0c, 0x83, 0x41, 0x1f, 0x6d, 0x43, 0xa3, 0x3f, 0x84, 0x31, 0x5d, 0xcd, 0x8f, 0xe9, 0x59, 0xa6,
0x8d, 0x14, 0xa9, 0xfe, 0x3f, 0x45, 0x68, 0xee, 0x62, 0x2b, 0xb4, 0x0f, 0x2e, 0x42, 0x0e, 0x86,
0x49, 0xdc, 0x21, 0x9e, 0x5c, 0x35, 0xf6, 0x89, 0x6e, 0xc2, 0x42, 0x62, 0x42, 0x66, 0x97, 0x09,
0x88, 0xeb, 0x7d, 0xc3, 0x68, 0xf5, 0xb3, 0x82, 0x7b, 0x0f, 0xaa, 0x0e, 0xf1, 0x4c, 0xbe, 0x44,
0x15, 0xbe, 0x44, 0xea, 0xf9, 0x6d, 0x11, 0x8f, 0x2f, 0x4d, 0xc5, 0x11, 0x1f, 0xe8, 0x0b, 0xd0,
0x0c, 0x06, 0xb4, 0x3f, 0xa0, 0xa6, 0xf0, 0x3b, 0xed, 0x2a, 0x67, 0xaf, 0x21, 0x80, 0xdc, 0x2d,
0x11, 0xf4, 0x21, 0x34, 0x09, 0x17, 0x65, 0xb4, 0x31, 0xaf, 0x4d, 0xba, 0x41, 0x6c, 0x08, 0x3a,
0xb9, 0x33, 0xbf, 0x0e, 0x2d, 0x1a, 0x5a, 0xcf, 0xb1, 0x97, 0xb8, 0xb3, 0x03, 0x6e, 0x6d, 0xf3,
0x02, 0x3e, 0xbc, 0xaf, 0xbb, 0x03, 0x8b, 0xdd, 0x81, 0x15, 0x5a, 0x3e, 0xc5, 0x38, 0x81, 0x5d,
0xe7, 0xd8, 0x28, 0x6e, 0x8a, 0x09, 0xf4, 0x8f, 0x60, 0xf6, 0x91, 0x4b, 0xb9, 0x20, 0x99, 0xcf,
0xd2, 0xf8, 0x31, 0x88, 0x7b, 0xa6, 0xd7, 0xa0, 0x1a, 0x06, 0x47, 0xc2, 0x07, 0x17, 0xb8, 0x0a,
0x56, 0xc2, 0xe0, 0x88, 0x3b, 0x58, 0x5e, 0xe9, 0x10, 0x84, 0x52, 0x37, 0x0b, 0x86, 0xfc, 0xd3,
0xff, 0x42, 0x1b, 0x2a, 0x0f, 0x73, 0x9f, 0xe4, 0xe5, 0xfc, 0xe7, 0x07, 0x50, 0x09, 0x05, 0xfd,
0xd8, 0x3b, 0xda, 0xe4, 0x48, 0x3c, 0x06, 0x44, 0x54, 0x93, 0x5f, 0x00, 0xfd, 0xb2, 0x06, 0x8d,
0x0f, 0xbd, 0x01, 0x79, 0x15, 0xca, 0xae, 0xba, 0x96, 0x28, 0xaa, 0xaf, 0x44, 0x7e, 0xa3, 0x00,
0x4d, 0xc9, 0xc6, 0x34, 0x9b, 0xa0, 0x5c, 0x56, 0x76, 0xa1, 0xce, 0x86, 0x34, 0x09, 0xee, 0x46,
0x39, 0x9d, 0xfa, 0xfa, 0xba, 0xd2, 0x3d, 0xa4, 0xd8, 0xe0, 0xd7, 0xe0, 0xbb, 0x9c, 0xe8, 0x17,
0x7c, 0x1a, 0x1e, 0x1b, 0x60, 0xc7, 0x80, 0xce, 0x33, 0x98, 0xcf, 0x34, 0x33, 0x25, 0x3a, 0xc4,
0xc7, 0x91, 0xff, 0x3b, 0xc4, 0xc7, 0xe8, 0x9d, 0x64, 0xb1, 0x42, 0x5e, 0x14, 0x7f, 0x1c, 0xf8,
0xdd, 0x07, 0x61, 0x68, 0x1d, 0xcb, 0x62, 0x86, 0xfb, 0x85, 0xaf, 0x6a, 0xfa, 0x3f, 0x14, 0xa0,
0xf1, 0xf5, 0x01, 0x0e, 0x8f, 0xcf, 0xd2, 0x0f, 0x45, 0x51, 0x61, 0x36, 0x11, 0x15, 0x46, 0x4c,
0xbf, 0xa4, 0x30, 0x7d, 0x85, 0x03, 0x2b, 0x2b, 0x1d, 0x98, 0xca, 0xb6, 0x2b, 0xa7, 0xb2, 0xed,
0x6a, 0xae, 0x6d, 0xff, 0xb9, 0x16, 0x8b, 0x70, 0x2a, 0x6b, 0x4c, 0x6d, 0xc7, 0x0a, 0xa7, 0xde,
0x8e, 0x4d, 0x6c, 0x8d, 0x3f, 0xd4, 0xa0, 0xf6, 0x4d, 0x6c, 0xd3, 0x20, 0x64, 0xfe, 0x47, 0x41,
0xa6, 0x4d, 0xb0, 0x35, 0x2e, 0x64, 0xb7, 0xc6, 0xf7, 0xa0, 0xea, 0x3a, 0xa6, 0xc5, 0xf4, 0x8b,
0x8f, 0x3b, 0x6e, 0x4b, 0x56, 0x71, 0x1d, 0xae, 0x88, 0x93, 0x5f, 0x02, 0xfc, 0x8e, 0x06, 0x0d,
0xc1, 0x33, 0x11, 0x94, 0xef, 0x27, 0x86, 0xd3, 0x54, 0x4a, 0x2f, 0x7f, 0xe2, 0x89, 0x3e, 0x9a,
0x19, 0x0e, 0xfb, 0x00, 0x80, 0x09, 0x59, 0x92, 0x0b, 0x9b, 0x59, 0x55, 0x72, 0x2b, 0xc8, 0xb9,
0xc0, 0x1f, 0xcd, 0x18, 0x35, 0x46, 0xc5, 0xbb, 0xd8, 0xa8, 0x40, 0x89, 0x53, 0xeb, 0xff, 0xa7,
0xc1, 0xe2, 0xa6, 0xe5, 0xd9, 0x5b, 0x2e, 0xa1, 0x96, 0x6f, 0x4f, 0xb1, 0x09, 0xbb, 0x0f, 0x95,
0xa0, 0x6f, 0x7a, 0x78, 0x9f, 0x4a, 0x96, 0xae, 0x8d, 0x99, 0x91, 0x10, 0x83, 0x51, 0x0e, 0xfa,
0x8f, 0xf1, 0x3e, 0x45, 0x3f, 0x0b, 0xd5, 0xa0, 0x6f, 0x86, 0x6e, 0xf7, 0x80, 0x4a, 0xe9, 0x4f,
0x40, 0x5c, 0x09, 0xfa, 0x06, 0xa3, 0x48, 0xe4, 0x56, 0x66, 0x4f, 0x99, 0x5b, 0xd1, 0xff, 0x7d,
0x64, 0xfa, 0x53, 0xd8, 0xc0, 0x7d, 0xa8, 0xba, 0x3e, 0x35, 0x1d, 0x97, 0x44, 0x22, 0xb8, 0xa2,
0xd6, 0x21, 0x9f, 0xf2, 0x19, 0xf0, 0x35, 0xf5, 0x29, 0x1b, 0x1b, 0x7d, 0x0d, 0x60, 0xdf, 0x0b,
0x2c, 0x49, 0x2d, 0x64, 0x70, 0x55, 0x6d, 0x3e, 0x0c, 0x2d, 0xa2, 0xaf, 0x71, 0x22, 0xd6, 0xc3,
0x70, 0x49, 0xff, 0x55, 0x83, 0xe5, 0x1d, 0x1c, 0x8a, 0x52, 0x16, 0x2a, 0xd3, 0xa0, 0xdb, 0xfe,
0x7e, 0x90, 0xce, 0x44, 0x6b, 0x99, 0x4c, 0xf4, 0x4f, 0x26, 0xfb, 0x9a, 0x3a, 0x39, 0x89, 0xfb,
0x90, 0xe8, 0xe4, 0x14, 0xdd, 0xfa, 0x88, 0x93, 0xe7, 0x5c, 0xce, 0x32, 0x49, 0x7e, 0x93, 0x07,
0x70, 0xfd, 0x37, 0x45, 0x05, 0x86, 0x72, 0x52, 0x2f, 0xaf, 0xb0, 0x2b, 0x20, 0x3d, 0x7d, 0xc6,
0xef, 0x7f, 0x11, 0x32, 0xbe, 0x23, 0xc7, 0x11, 0xfd, 0x9e, 0x06, 0xab, 0xf9, 0x5c, 0x4d, 0x13,
0xa2, 0xbf, 0x06, 0x25, 0xd7, 0xdf, 0x0f, 0xa2, 0xb4, 0xdb, 0x0d, 0xf5, 0x16, 0x5d, 0x39, 0xae,
0x20, 0xd4, 0xff, 0xba, 0x00, 0x2d, 0xee, 0xd4, 0xcf, 0x60, 0xf9, 0x7b, 0xb8, 0x67, 0x12, 0xf7,
0x53, 0x1c, 0x2d, 0x7f, 0x0f, 0xf7, 0x76, 0xdd, 0x4f, 0x71, 0x4a, 0x33, 0x4a, 0x69, 0xcd, 0x18,
0x9f, 0x55, 0x4e, 0xa6, 0x55, 0x2b, 0xe9, 0xb4, 0xea, 0x0a, 0x94, 0xfd, 0xc0, 0xc1, 0xdb, 0x5b,
0xf2, 0xd8, 0x29, 0xff, 0x86, 0xaa, 0x56, 0x3b, 0xa5, 0xaa, 0x7d, 0xae, 0x41, 0xe7, 0x21, 0xa6,
0x59, 0xd9, 0x9d, 0x9d, 0x96, 0xfd, 0x40, 0x83, 0xcb, 0x4a, 0x86, 0xa6, 0x51, 0xb0, 0xf7, 0xd3,
0x0a, 0xa6, 0x3e, 0x03, 0x8e, 0x0c, 0x29, 0x75, 0xeb, 0x2e, 0x34, 0xb6, 0x06, 0xbd, 0x5e, 0xbc,
0xe5, 0xba, 0x06, 0x8d, 0x50, 0x7c, 0x8a, 0x23, 0x92, 0x88, 0xbf, 0x75, 0x09, 0x63, 0x07, 0x21,
0xfd, 0x26, 0x34, 0x25, 0x89, 0xe4, 0xba, 0x03, 0xd5, 0x50, 0x7e, 0x4b, 0xfc, 0xf8, 0x5f, 0x5f,
0x86, 0x45, 0x03, 0x77, 0x99, 0x6a, 0x87, 0x8f, 0x5d, 0xff, 0x50, 0x0e, 0xa3, 0x7f, 0x4f, 0x83,
0xa5, 0x34, 0x5c, 0xf6, 0xf5, 0x2e, 0x54, 0x2c, 0xc7, 0x09, 0x31, 0x21, 0x63, 0x97, 0xe5, 0x81,
0xc0, 0x31, 0x22, 0xe4, 0x84, 0xe4, 0x0a, 0x13, 0x4b, 0x4e, 0x37, 0x61, 0xe1, 0x21, 0xa6, 0x4f,
0x30, 0x0d, 0xa7, 0xba, 0xc1, 0x6f, 0xb3, 0xc3, 0x0b, 0x27, 0x96, 0x6a, 0x11, 0xfd, 0xea, 0x9f,
0x69, 0x80, 0x92, 0x23, 0x4c, 0xb3, 0xcc, 0x49, 0x29, 0x17, 0xd2, 0x52, 0x16, 0x45, 0x4e, 0xbd,
0x7e, 0xe0, 0x63, 0x9f, 0x26, 0xb7, 0x5b, 0xcd, 0x18, 0xca, 0xd5, 0xef, 0xc7, 0x1a, 0xa0, 0xc7,
0x81, 0xe5, 0x6c, 0x58, 0xde, 0x74, 0xdb, 0x83, 0x2b, 0x00, 0x24, 0xb4, 0x4d, 0x69, 0xad, 0x05,
0xe9, 0x7d, 0x42, 0xfb, 0xa9, 0x30, 0xd8, 0xab, 0x50, 0x77, 0x08, 0x95, 0xcd, 0xd1, 0x85, 0x32,
0x38, 0x84, 0x8a, 0x76, 0x5e, 0xc4, 0x4a, 0xb0, 0xe5, 0x61, 0xc7, 0x4c, 0xdc, 0xc7, 0xcd, 0x72,
0xb4, 0x96, 0x68, 0xd8, 0x1d, 0xde, 0xca, 0x3d, 0x83, 0x4b, 0x4f, 0x2c, 0x7f, 0x60, 0x79, 0x9b,
0x41, 0xaf, 0x6f, 0xa5, 0x0a, 0x1b, 0xb3, 0x6e, 0x4e, 0x53, 0xb8, 0xb9, 0x37, 0x44, 0xe5, 0x9b,
0xd8, 0x5a, 0x73, 0x5e, 0x67, 0x8d, 0x04, 0x44, 0x27, 0xd0, 0x1e, 0xed, 0x7e, 0x9a, 0x85, 0xe2,
0x4c, 0x45, 0x5d, 0x25, 0x7d, 0xef, 0x10, 0xa6, 0x7f, 0x00, 0xaf, 0xf1, 0x2a, 0xc4, 0x08, 0x94,
0x4a, 0xed, 0x67, 0x3b, 0xd0, 0x14, 0x1d, 0xfc, 0x6a, 0x81, 0xbb, 0xb6, 0x91, 0x1e, 0xa6, 0x61,
0xfc, 0x7e, 0x3a, 0xa3, 0xfe, 0x66, 0x4e, 0xa5, 0x6d, 0x7a, 0x44, 0x99, 0x56, 0x5f, 0x83, 0x79,
0xfc, 0x02, 0xdb, 0x03, 0xea, 0xfa, 0xdd, 0x1d, 0xcf, 0xf2, 0x9f, 0x06, 0x32, 0xa0, 0x64, 0xc1,
0xe8, 0x4d, 0x68, 0x32, 0xe9, 0x07, 0x03, 0x2a, 0xf1, 0x44, 0x64, 0x49, 0x03, 0x59, 0x7f, 0x6c,
0xbe, 0x1e, 0xa6, 0xd8, 0x91, 0x78, 0x22, 0xcc, 0x64, 0xc1, 0x23, 0xa2, 0x64, 0x60, 0x72, 0x1a,
0x51, 0xfe, 0xa7, 0x96, 0x11, 0xa5, 0xec, 0xe1, 0xac, 0x44, 0xf9, 0x08, 0xa0, 0x87, 0xc3, 0x2e,
0xde, 0xe6, 0x4e, 0x5d, 0x9c, 0xdc, 0xd7, 0x94, 0x4e, 0x7d, 0xd8, 0xc1, 0x93, 0x88, 0xc0, 0x48,
0xd0, 0xea, 0x0f, 0x61, 0x51, 0x81, 0xc2, 0xfc, 0x15, 0x09, 0x06, 0xa1, 0x8d, 0xa3, 0xe4, 0x4f,
0xf4, 0xcb, 0xe2, 0x1b, 0xb5, 0xc2, 0x2e, 0xa6, 0x52, 0x69, 0xe5, 0x9f, 0xfe, 0x2e, 0xbf, 0x84,
0xe2, 0x89, 0x82, 0x94, 0xa6, 0xa6, 0x2f, 0xd4, 0xb5, 0x91, 0x0b, 0xf5, 0x7d, 0x7e, 0xe3, 0x93,
0xa4, 0x9b, 0xb2, 0x18, 0x62, 0x9f, 0x75, 0x85, 0x1d, 0xf9, 0xca, 0x22, 0xfa, 0x65, 0xbb, 0xe4,
0xe6, 0x76, 0xaf, 0x1f, 0x0c, 0x2f, 0x3b, 0x26, 0x3e, 0x4a, 0x8e, 0x26, 0x8b, 0x0b, 0xaa, 0x64,
0xf1, 0x65, 0xa8, 0x85, 0xc1, 0x91, 0xc9, 0xbc, 0x9f, 0xc3, 0x35, 0xbb, 0x6a, 0x54, 0xc3, 0xe0,
0x88, 0xf9, 0x44, 0x07, 0x2d, 0x41, 0x69, 0xdf, 0xf5, 0xe2, 0x03, 0xa3, 0xf8, 0x41, 0xef, 0xb3,
0x33, 0x94, 0xb8, 0x71, 0x9d, 0xf8, 0x7a, 0x3e, 0xa2, 0xd0, 0x3f, 0x81, 0xb9, 0x68, 0x42, 0x53,
0xbe, 0x1c, 0xa1, 0x16, 0x39, 0x8c, 0x8a, 0x1d, 0xc4, 0x8f, 0x7e, 0x53, 0x5c, 0xc4, 0xf1, 0xfe,
0x53, 0xeb, 0x89, 0x60, 0x96, 0x61, 0x48, 0x33, 0xe1, 0xdf, 0xfa, 0xff, 0x6a, 0xb0, 0x92, 0xc5,
0x9e, 0x86, 0xa5, 0x77, 0xd3, 0xa6, 0xa1, 0x7e, 0x1c, 0x90, 0x1c, 0x4d, 0x9a, 0x85, 0x5c, 0x01,
0x3b, 0x18, 0xf8, 0x54, 0xfa, 0x16, 0xb6, 0x02, 0x9b, 0xec, 0x1f, 0x5d, 0x82, 0x8a, 0xeb, 0x98,
0x1e, 0x3b, 0x6e, 0x89, 0x30, 0x52, 0x76, 0x9d, 0xc7, 0xec, 0x28, 0xf6, 0x5e, 0xb4, 0x39, 0x9a,
0x78, 0x09, 0x04, 0xfe, 0x8d, 0x6b, 0x50, 0x8d, 0x0a, 0xb4, 0x50, 0x05, 0x8a, 0x0f, 0x3c, 0xaf,
0x35, 0x83, 0x1a, 0x50, 0xdd, 0x96, 0x55, 0x48, 0x2d, 0xed, 0xc6, 0xcf, 0xc3, 0x7c, 0x26, 0x91,
0x8f, 0xaa, 0x30, 0xfb, 0x34, 0xf0, 0x71, 0x6b, 0x06, 0xb5, 0xa0, 0xb1, 0xe1, 0xfa, 0x56, 0x78,
0x2c, 0x8e, 0xb9, 0x2d, 0x07, 0xcd, 0x43, 0x9d, 0x1f, 0xf7, 0x24, 0x00, 0xaf, 0xff, 0xd3, 0x2a,
0x34, 0x9f, 0x70, 0x76, 0x76, 0x71, 0xf8, 0xdc, 0xb5, 0x31, 0x32, 0xa1, 0x95, 0x7d, 0xde, 0x86,
0xbe, 0xa4, 0x36, 0x7d, 0xf5, 0x2b, 0xb8, 0xce, 0xb8, 0x25, 0xd0, 0x67, 0xd0, 0x27, 0x30, 0x97,
0x7e, 0x24, 0x86, 0xd4, 0xe7, 0x11, 0xe5, 0x4b, 0xb2, 0x93, 0x3a, 0x37, 0xa1, 0x99, 0x7a, 0xf3,
0x85, 0xae, 0x2b, 0xfb, 0x56, 0xbd, 0x0b, 0xeb, 0xa8, 0x53, 0x04, 0xc9, 0x77, 0x59, 0x82, 0xfb,
0xf4, 0xc3, 0x8c, 0x1c, 0xee, 0x95, 0xaf, 0x37, 0x4e, 0xe2, 0xde, 0x82, 0x85, 0x91, 0x07, 0x14,
0xe8, 0x96, 0xb2, 0xff, 0xbc, 0x87, 0x16, 0x27, 0x0d, 0x71, 0x04, 0x68, 0xf4, 0x6d, 0x13, 0xba,
0xad, 0x5e, 0x81, 0xbc, 0x97, 0x5d, 0x9d, 0x3b, 0x13, 0xe3, 0xc7, 0x82, 0xfb, 0x15, 0x0d, 0x2e,
0xe5, 0xbc, 0x7a, 0x40, 0xf7, 0x94, 0xdd, 0x8d, 0x7f, 0xba, 0xd1, 0x79, 0xe7, 0x74, 0x44, 0x31,
0x23, 0x3e, 0xcc, 0x67, 0x1e, 0x02, 0xa0, 0x9b, 0xb9, 0xc5, 0x91, 0xa3, 0x2f, 0x22, 0x3a, 0x5f,
0x9a, 0x0c, 0x39, 0x1e, 0xef, 0x19, 0xcc, 0x67, 0xaa, 0xe7, 0x73, 0xc6, 0x53, 0xd7, 0xd8, 0x9f,
0xb4, 0xa0, 0xdf, 0x86, 0x66, 0xaa, 0xcc, 0x3d, 0x47, 0xe3, 0x55, 0xa5, 0xf0, 0x27, 0x75, 0xfd,
0x0c, 0x1a, 0xc9, 0x6a, 0x74, 0xb4, 0x96, 0x67, 0x4b, 0x23, 0x1d, 0x9f, 0xc6, 0x94, 0x86, 0xc5,
0xa6, 0x63, 0x4c, 0x69, 0xa4, 0x3e, 0x77, 0x72, 0x53, 0x4a, 0xf4, 0x3f, 0xd6, 0x94, 0x4e, 0x3d,
0xc4, 0xf7, 0x44, 0x54, 0x52, 0x14, 0x33, 0xa3, 0xf5, 0x3c, 0xdd, 0xcc, 0x2f, 0xdb, 0xee, 0xdc,
0x3b, 0x15, 0x4d, 0x2c, 0xc5, 0x43, 0x98, 0x4b, 0x97, 0xec, 0xe6, 0x48, 0x51, 0x59, 0xe5, 0xdc,
0xb9, 0x39, 0x11, 0x6e, 0x3c, 0xd8, 0x37, 0xa0, 0x9e, 0x78, 0xb1, 0x8e, 0xde, 0x1e, 0xa3, 0xc7,
0xc9, 0xe7, 0xdb, 0x27, 0x49, 0xf2, 0xeb, 0x50, 0x8b, 0x1f, 0x9a, 0xa3, 0xb7, 0x72, 0xf5, 0xf7,
0x34, 0x5d, 0xee, 0x02, 0x0c, 0x5f, 0x91, 0xa3, 0x2f, 0x2a, 0xfb, 0x1c, 0x79, 0x66, 0x7e, 0x52,
0xa7, 0xf1, 0xf4, 0x45, 0x25, 0xc4, 0xb8, 0xe9, 0x27, 0x4b, 0x77, 0x4e, 0xea, 0xf6, 0x00, 0x9a,
0xa9, 0x82, 0xbb, 0x3c, 0x13, 0x56, 0xd4, 0x41, 0x76, 0x6e, 0x4c, 0x82, 0x1a, 0xaf, 0xdf, 0x01,
0x34, 0x53, 0xe5, 0x4f, 0x39, 0x23, 0xa9, 0xaa, 0xbd, 0x72, 0x46, 0x52, 0x56, 0x53, 0xe9, 0x33,
0xe8, 0xbb, 0x89, 0x4a, 0xab, 0x54, 0x35, 0x1b, 0xba, 0x3b, 0xb6, 0x1f, 0x55, 0x31, 0x5f, 0x67,
0xfd, 0x34, 0x24, 0x31, 0x0b, 0x52, 0xab, 0x84, 0x48, 0xf3, 0xb5, 0xea, 0x34, 0x2b, 0xb5, 0x0b,
0x65, 0x51, 0xd0, 0x84, 0xf4, 0x9c, 0xd2, 0xc5, 0x44, 0xb5, 0x53, 0xe7, 0x0b, 0x4a, 0x9c, 0x74,
0xad, 0x8f, 0xe8, 0x54, 0x14, 0xac, 0xe4, 0x74, 0x9a, 0xaa, 0x66, 0x99, 0xb4, 0x53, 0x03, 0xca,
0xe2, 0xa6, 0x3a, 0xa7, 0xd3, 0x54, 0xb5, 0x45, 0x67, 0x3c, 0x0e, 0xbf, 0xc2, 0xd0, 0x67, 0xd0,
0x0e, 0x94, 0xf8, 0x39, 0x0a, 0x5d, 0x1b, 0x77, 0x89, 0x3b, 0xae, 0xc7, 0xd4, 0x3d, 0xaf, 0x3e,
0x83, 0x7e, 0x11, 0x4a, 0x3c, 0x2b, 0x98, 0xd3, 0x63, 0xf2, 0x26, 0xb6, 0x33, 0x16, 0x25, 0x62,
0xd1, 0x81, 0x46, 0xf2, 0xfa, 0x25, 0x27, 0x64, 0x29, 0x2e, 0xa8, 0x3a, 0x93, 0x60, 0x46, 0xa3,
0x08, 0x33, 0x1a, 0x9e, 0x29, 0xf3, 0xcd, 0x68, 0xe4, 0xbc, 0x9a, 0x6f, 0x46, 0xa3, 0x47, 0x54,
0x7d, 0x06, 0xfd, 0x9a, 0x06, 0xed, 0xbc, 0x3b, 0x01, 0x94, 0xbb, 0x03, 0x1a, 0x77, 0xb1, 0xd1,
0xf9, 0xca, 0x29, 0xa9, 0x62, 0x5e, 0x3e, 0x85, 0x45, 0x45, 0xe2, 0x18, 0xdd, 0xc9, 0xeb, 0x2f,
0x27, 0xe7, 0xdd, 0xf9, 0xf2, 0xe4, 0x04, 0xf1, 0xd8, 0x3b, 0x50, 0xe2, 0x09, 0xdf, 0x1c, 0x45,
0x49, 0xe6, 0x8f, 0x73, 0x54, 0x2f, 0x95, 0x2f, 0xd6, 0x67, 0x10, 0x86, 0x46, 0x32, 0xfb, 0x9b,
0xa3, 0x29, 0x8a, 0xc4, 0x71, 0xe7, 0xfa, 0x04, 0x98, 0xf1, 0x30, 0x26, 0xc0, 0x30, 0xfb, 0x9a,
0x13, 0x87, 0x46, 0x12, 0xc0, 0x9d, 0xb7, 0x4f, 0xc4, 0x4b, 0x86, 0xe4, 0x44, 0x3e, 0x35, 0x27,
0x26, 0x8d, 0x66, 0x5c, 0x27, 0x38, 0x27, 0x8c, 0xe6, 0xf6, 0x72, 0xce, 0x09, 0xb9, 0x69, 0xc4,
0xce, 0x9d, 0x89, 0xf1, 0xe3, 0xf9, 0x7c, 0x07, 0x5a, 0xd9, 0x5c, 0x68, 0xce, 0xf9, 0x33, 0x27,
0x23, 0xdb, 0xb9, 0x35, 0x21, 0x76, 0x32, 0x56, 0x5d, 0x1e, 0xe5, 0xe9, 0x5b, 0x2e, 0x3d, 0xe0,
0x69, 0xb8, 0x49, 0x66, 0x9d, 0xcc, 0xf8, 0x4d, 0x32, 0xeb, 0x54, 0x7e, 0x4f, 0x06, 0x16, 0x9e,
0x6f, 0xc8, 0x0b, 0x2c, 0xc9, 0xcc, 0x52, 0x4e, 0x0c, 0x48, 0x27, 0x6b, 0xc4, 0xd6, 0x30, 0x9d,
0x35, 0x41, 0xf9, 0x31, 0x7c, 0x24, 0x11, 0x93, 0xb3, 0x35, 0x54, 0xa7, 0x61, 0xf4, 0x99, 0xf5,
0x01, 0x34, 0x76, 0xc2, 0xe0, 0xc5, 0x71, 0x94, 0x47, 0xf8, 0xe9, 0xd8, 0xd7, 0xc6, 0xb7, 0x60,
0xce, 0x8d, 0x71, 0xba, 0x61, 0xdf, 0xde, 0xa8, 0x8b, 0x7c, 0xc6, 0x0e, 0x23, 0xde, 0xd1, 0x7e,
0xe9, 0x5e, 0xd7, 0xa5, 0x07, 0x83, 0x3d, 0xa6, 0xe0, 0x77, 0x04, 0xda, 0x2d, 0x37, 0x90, 0x5f,
0x77, 0x5c, 0x9f, 0xe2, 0xd0, 0xb7, 0xbc, 0x3b, 0x7c, 0x28, 0x09, 0xed, 0xef, 0xfd, 0xa1, 0xa6,
0xed, 0x95, 0x39, 0xe8, 0xde, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x8b, 0x72, 0x0c, 0xe5,
0x49, 0x00, 0x00,
// 4041 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x4d, 0x6f, 0x1c, 0xc9,
0x75, 0xec, 0x19, 0xce, 0xd7, 0x9b, 0x19, 0x72, 0x54, 0xa4, 0xa8, 0xd9, 0xd1, 0x6a, 0x97, 0xea,
0xfd, 0xe2, 0x4a, 0x5e, 0xc9, 0x4b, 0xad, 0x77, 0x9d, 0x5d, 0x27, 0x6b, 0x49, 0xcc, 0x4a, 0xc4,
0x4a, 0x0a, 0xdd, 0x5c, 0xdb, 0x70, 0x16, 0x42, 0xa3, 0xd8, 0x5d, 0x1c, 0x36, 0xd4, 0xd3, 0x3d,
0xee, 0xaa, 0x11, 0xc5, 0x3d, 0x19, 0x70, 0x90, 0x0f, 0x78, 0xb3, 0x46, 0x10, 0x23, 0x1f, 0x87,
0x04, 0x41, 0x3e, 0x0e, 0x41, 0x90, 0x20, 0xb6, 0x83, 0x24, 0xc8, 0x25, 0x39, 0xe4, 0x90, 0x43,
0x80, 0x7c, 0x5c, 0x82, 0x20, 0x97, 0xfc, 0x81, 0xdc, 0x72, 0xcc, 0x21, 0xa8, 0x8f, 0xee, 0xe9,
0xee, 0xa9, 0x1e, 0x0e, 0x77, 0x2c, 0x93, 0xba, 0x4d, 0xbf, 0x7a, 0xaf, 0xea, 0xd5, 0xab, 0x57,
0xaf, 0x5e, 0xbd, 0xf7, 0x6a, 0xa0, 0x35, 0xf0, 0xfc, 0xc7, 0x23, 0x7a, 0x6d, 0x18, 0x85, 0x2c,
0x44, 0x2b, 0xe9, 0xaf, 0x6b, 0xf2, 0xa3, 0xd7, 0x72, 0xc2, 0xc1, 0x20, 0x0c, 0x24, 0xb0, 0xd7,
0xa2, 0xce, 0x01, 0x19, 0x60, 0xf9, 0x65, 0xfe, 0xbe, 0x01, 0xe8, 0x76, 0x44, 0x30, 0x23, 0x37,
0x7d, 0x0f, 0x53, 0x8b, 0x7c, 0x7b, 0x44, 0x28, 0x43, 0x5f, 0x84, 0xc5, 0x3d, 0x4c, 0x49, 0xd7,
0x58, 0x37, 0x36, 0x9a, 0x9b, 0xcf, 0x5f, 0xcb, 0x74, 0xab, 0xba, 0xbb, 0x4f, 0xfb, 0xb7, 0x30,
0x25, 0x96, 0xc0, 0x44, 0x17, 0xa0, 0xe6, 0xee, 0xd9, 0x01, 0x1e, 0x90, 0x6e, 0x69, 0xdd, 0xd8,
0x68, 0x58, 0x55, 0x77, 0xef, 0x01, 0x1e, 0x10, 0xf4, 0x1a, 0x2c, 0x3b, 0xa1, 0xef, 0x13, 0x87,
0x79, 0x61, 0x20, 0x11, 0xca, 0x02, 0x61, 0x69, 0x0c, 0x16, 0x88, 0xab, 0x50, 0xc1, 0x9c, 0x87,
0xee, 0xa2, 0x68, 0x96, 0x1f, 0x26, 0x85, 0xce, 0x56, 0x14, 0x0e, 0x9f, 0x16, 0x77, 0xc9, 0xa0,
0xe5, 0xf4, 0xa0, 0xbf, 0x67, 0xc0, 0xb9, 0x9b, 0x3e, 0x23, 0xd1, 0x19, 0x15, 0xca, 0xef, 0x94,
0xe0, 0x82, 0x5c, 0xb5, 0xdb, 0x09, 0xfa, 0x69, 0x72, 0xb9, 0x06, 0x55, 0xa9, 0x55, 0x82, 0xcd,
0x96, 0xa5, 0xbe, 0xd0, 0x25, 0x00, 0x7a, 0x80, 0x23, 0x97, 0xda, 0xc1, 0x68, 0xd0, 0xad, 0xac,
0x1b, 0x1b, 0x15, 0xab, 0x21, 0x21, 0x0f, 0x46, 0x03, 0x64, 0xc1, 0x39, 0x27, 0x0c, 0xa8, 0x47,
0x19, 0x09, 0x9c, 0x23, 0xdb, 0x27, 0x8f, 0x89, 0xdf, 0xad, 0xae, 0x1b, 0x1b, 0x4b, 0x9b, 0xaf,
0x68, 0xf9, 0xbe, 0x3d, 0xc6, 0xbe, 0xc7, 0x91, 0xad, 0x8e, 0x93, 0x83, 0x98, 0xdf, 0x33, 0xe0,
0x3c, 0x57, 0x98, 0x33, 0x21, 0x18, 0xf3, 0x4f, 0x0d, 0x58, 0xbd, 0x8b, 0xe9, 0xd9, 0x58, 0xa5,
0x4b, 0x00, 0xcc, 0x1b, 0x10, 0x9b, 0x32, 0x3c, 0x18, 0x8a, 0x95, 0x5a, 0xb4, 0x1a, 0x1c, 0xb2,
0xcb, 0x01, 0xe6, 0xb7, 0xa0, 0x75, 0x2b, 0x0c, 0x7d, 0x8b, 0xd0, 0x61, 0x18, 0x50, 0x82, 0x6e,
0x40, 0x95, 0x32, 0xcc, 0x46, 0x54, 0x31, 0x79, 0x51, 0xcb, 0xe4, 0xae, 0x40, 0xb1, 0x14, 0x2a,
0xd7, 0xd7, 0xc7, 0xd8, 0x1f, 0x49, 0x1e, 0xeb, 0x96, 0xfc, 0x30, 0x3f, 0x86, 0xa5, 0x5d, 0x16,
0x79, 0x41, 0xff, 0x27, 0xd8, 0x79, 0x23, 0xee, 0xfc, 0xdf, 0x0d, 0x78, 0x6e, 0x8b, 0x50, 0x27,
0xf2, 0xf6, 0xce, 0xc8, 0x76, 0x30, 0xa1, 0x35, 0x86, 0x6c, 0x6f, 0x09, 0x51, 0x97, 0xad, 0x0c,
0x2c, 0xb7, 0x18, 0x95, 0xfc, 0x62, 0x7c, 0xa7, 0x02, 0x3d, 0xdd, 0xa4, 0xe6, 0x11, 0xdf, 0xcf,
0x26, 0xbb, 0xb4, 0x24, 0x88, 0x72, 0x7b, 0x4c, 0x9d, 0x0b, 0xe3, 0xd1, 0x76, 0x05, 0x20, 0xd9,
0xcc, 0xf9, 0x59, 0x95, 0x35, 0xb3, 0xda, 0x84, 0xf3, 0x8f, 0xbd, 0x88, 0x8d, 0xb0, 0x6f, 0x3b,
0x07, 0x38, 0x08, 0x88, 0x2f, 0xe4, 0xc4, 0xcd, 0x57, 0x79, 0xa3, 0x61, 0xad, 0xa8, 0xc6, 0xdb,
0xb2, 0x8d, 0x0b, 0x8b, 0xa2, 0xb7, 0x60, 0x6d, 0x78, 0x70, 0x44, 0x3d, 0x67, 0x82, 0xa8, 0x22,
0x88, 0x56, 0xe3, 0xd6, 0x0c, 0xd5, 0x55, 0x38, 0xe7, 0x08, 0x0b, 0xe8, 0xda, 0x5c, 0x6a, 0x52,
0x8c, 0x55, 0x21, 0xc6, 0x8e, 0x6a, 0xf8, 0x28, 0x86, 0x73, 0xb6, 0x62, 0xe4, 0x11, 0x73, 0x52,
0x04, 0x35, 0x41, 0xb0, 0xa2, 0x1a, 0xbf, 0xce, 0x9c, 0x31, 0x4d, 0xd6, 0x76, 0xd5, 0xf3, 0xb6,
0xab, 0x0b, 0x35, 0x61, 0x8b, 0x09, 0xed, 0x36, 0x04, 0x9b, 0xf1, 0x27, 0xda, 0x86, 0x65, 0xca,
0x70, 0xc4, 0xec, 0x61, 0x48, 0x3d, 0x2e, 0x17, 0xda, 0x85, 0xf5, 0xf2, 0x46, 0x73, 0x73, 0x5d,
0xbb, 0x48, 0x1f, 0x92, 0xa3, 0x2d, 0xcc, 0xf0, 0x0e, 0xf6, 0x22, 0x6b, 0x49, 0x10, 0xee, 0xc4,
0x74, 0x7a, 0x03, 0xd9, 0x9c, 0xcb, 0x40, 0xea, 0xb4, 0xb8, 0xa5, 0xb5, 0x5d, 0x3f, 0x32, 0xe0,
0xfc, 0xbd, 0x10, 0xbb, 0x67, 0x63, 0x4f, 0xbd, 0x02, 0x4b, 0x11, 0x19, 0xfa, 0x9e, 0x83, 0xf9,
0x7a, 0xec, 0x91, 0x48, 0xec, 0xaa, 0x8a, 0xd5, 0x56, 0xd0, 0x07, 0x02, 0x68, 0x7e, 0x66, 0x40,
0xd7, 0x22, 0x3e, 0xc1, 0xf4, 0x6c, 0xd8, 0x02, 0xf3, 0x07, 0x06, 0xbc, 0x70, 0x87, 0xb0, 0xd4,
0xae, 0x62, 0x98, 0x79, 0x94, 0x79, 0xce, 0x69, 0xfa, 0x15, 0xe6, 0xf7, 0x0d, 0x78, 0xb1, 0x90,
0xad, 0x79, 0x8c, 0xcc, 0x3b, 0x50, 0xe1, 0xbf, 0x68, 0xb7, 0x24, 0x74, 0xfe, 0x72, 0x91, 0xce,
0x7f, 0x83, 0xdb, 0x6e, 0xa1, 0xf4, 0x12, 0xdf, 0xfc, 0x6f, 0x03, 0xd6, 0x76, 0x0f, 0xc2, 0xc3,
0x31, 0x4b, 0x4f, 0x43, 0x40, 0x59, 0xb3, 0x5b, 0xce, 0x99, 0x5d, 0xf4, 0x26, 0x2c, 0xb2, 0xa3,
0x21, 0x11, 0xba, 0xb5, 0xb4, 0x79, 0xe9, 0x9a, 0xc6, 0x9d, 0xbe, 0xc6, 0x99, 0xfc, 0xe8, 0x68,
0x48, 0x2c, 0x81, 0x8a, 0x5e, 0x87, 0x4e, 0x4e, 0xe4, 0xb1, 0xe1, 0x5a, 0xce, 0xca, 0x9c, 0x9a,
0x7f, 0x5b, 0x82, 0x0b, 0x13, 0x53, 0x9c, 0x47, 0xd8, 0xba, 0xb1, 0x4b, 0xda, 0xb1, 0xf9, 0xfe,
0x49, 0xa1, 0x7a, 0x2e, 0xf7, 0x78, 0xcb, 0x1b, 0x65, 0xab, 0x9d, 0xb2, 0xdf, 0x2e, 0x45, 0x6f,
0x00, 0x9a, 0x30, 0xab, 0xd2, 0x7a, 0x2f, 0x5a, 0xe7, 0xf2, 0x76, 0x55, 0xd8, 0x6e, 0xad, 0x61,
0x95, 0x22, 0x58, 0xb4, 0x56, 0x35, 0x96, 0x95, 0xa2, 0x37, 0x61, 0xd5, 0x0b, 0xee, 0x93, 0x41,
0x18, 0x1d, 0xd9, 0x43, 0x12, 0x39, 0x24, 0x60, 0xb8, 0x4f, 0x68, 0xb7, 0x2a, 0x38, 0x5a, 0x89,
0xdb, 0x76, 0xc6, 0x4d, 0xe6, 0x8f, 0x0d, 0x58, 0x93, 0x1e, 0xef, 0x0e, 0x8e, 0x98, 0x77, 0x06,
0xac, 0xd1, 0x30, 0xe6, 0x43, 0xe2, 0x49, 0xff, 0xbc, 0x9d, 0x40, 0xc5, 0x2e, 0xfb, 0xa1, 0x01,
0xab, 0xdc, 0x19, 0x7d, 0x96, 0x78, 0xfe, 0x4b, 0x03, 0x56, 0xee, 0x62, 0xfa, 0x2c, 0xb1, 0xfc,
0x57, 0xea, 0xa4, 0x4a, 0x78, 0x3e, 0xd5, 0x2b, 0xdb, 0x6b, 0xb0, 0x9c, 0x65, 0x3a, 0xf6, 0x7e,
0x96, 0x32, 0x5c, 0x53, 0xf3, 0x6f, 0xc6, 0x67, 0xd5, 0x33, 0xc6, 0xf9, 0xdf, 0x19, 0x70, 0xe9,
0x0e, 0x61, 0x09, 0xd7, 0x67, 0xe2, 0x4c, 0x9b, 0x55, 0x5b, 0x3e, 0x93, 0x27, 0xb2, 0x96, 0xf9,
0x53, 0x39, 0xf9, 0xbe, 0x57, 0x82, 0xf3, 0xfc, 0x58, 0x38, 0x1b, 0x4a, 0x30, 0xcb, 0xe5, 0x45,
0xa3, 0x28, 0x15, 0x9d, 0xa2, 0x24, 0xe7, 0x69, 0x75, 0xe6, 0xf3, 0xd4, 0xfc, 0x51, 0x49, 0xfa,
0x01, 0x69, 0x69, 0xcc, 0xb3, 0x2c, 0x1a, 0x5e, 0x4b, 0x5a, 0x5e, 0x4d, 0x68, 0x25, 0x90, 0xed,
0xad, 0xf8, 0x7c, 0xcc, 0xc0, 0xce, 0xec, 0xf1, 0xf8, 0xa9, 0x01, 0x6b, 0xf1, 0x75, 0x71, 0x97,
0xf4, 0x07, 0x24, 0x60, 0x9f, 0x5f, 0x87, 0xf2, 0x1a, 0x50, 0xd2, 0x68, 0xc0, 0xf3, 0xd0, 0xa0,
0x72, 0x9c, 0xe4, 0x26, 0x38, 0x06, 0x98, 0x7f, 0x6f, 0xc0, 0x85, 0x09, 0x76, 0xe6, 0x59, 0xc4,
0x2e, 0xd4, 0xbc, 0xc0, 0x25, 0x4f, 0x12, 0x6e, 0xe2, 0x4f, 0xde, 0xb2, 0x37, 0xf2, 0x7c, 0x37,
0x61, 0x23, 0xfe, 0x44, 0x97, 0xa1, 0x45, 0x02, 0xbc, 0xe7, 0x13, 0x5b, 0xe0, 0x0a, 0x45, 0xae,
0x5b, 0x4d, 0x09, 0xdb, 0xe6, 0x20, 0x4e, 0xbc, 0xef, 0x11, 0x41, 0x5c, 0x91, 0xc4, 0xea, 0xd3,
0xfc, 0x75, 0x03, 0x56, 0xb8, 0x16, 0x2a, 0xee, 0xe9, 0xd3, 0x95, 0xe6, 0x3a, 0x34, 0x53, 0x6a,
0xa6, 0x26, 0x92, 0x06, 0x99, 0x8f, 0x60, 0x35, 0xcb, 0xce, 0x3c, 0xd2, 0x7c, 0x01, 0x20, 0x59,
0x2b, 0xb9, 0x1b, 0xca, 0x56, 0x0a, 0x62, 0x7e, 0x5a, 0x8a, 0x83, 0xc2, 0x42, 0x4c, 0xa7, 0x1c,
0xb3, 0x12, 0x4b, 0x92, 0xb6, 0xe7, 0x0d, 0x01, 0x11, 0xcd, 0x5b, 0xd0, 0x22, 0x4f, 0x58, 0x84,
0xed, 0x21, 0x8e, 0xf0, 0x40, 0x6e, 0xab, 0x99, 0x4c, 0x6f, 0x53, 0x90, 0xed, 0x08, 0x2a, 0x3e,
0x88, 0x50, 0x11, 0x39, 0x48, 0x55, 0x0e, 0x22, 0x20, 0xe2, 0xc0, 0xf8, 0x27, 0xee, 0xc5, 0x29,
0x6d, 0x3e, 0xeb, 0x02, 0xc9, 0x4e, 0xa5, 0x92, 0x9f, 0xca, 0x9f, 0x18, 0xd0, 0x11, 0x53, 0x90,
0xf3, 0x19, 0xf2, 0x6e, 0x73, 0x34, 0x46, 0x8e, 0x66, 0xca, 0xde, 0xfb, 0x19, 0xa8, 0x2a, 0xb9,
0x97, 0x67, 0x95, 0xbb, 0x22, 0x38, 0x66, 0x1a, 0xe6, 0x1f, 0x1a, 0x70, 0x3e, 0x27, 0xf2, 0x79,
0x14, 0xfe, 0x23, 0x40, 0x72, 0x86, 0xee, 0x78, 0xda, 0xf1, 0x39, 0xfd, 0x8a, 0xf6, 0x50, 0xca,
0x0b, 0xc9, 0x3a, 0xe7, 0xe5, 0x20, 0xd4, 0xfc, 0x57, 0x03, 0x9e, 0xbf, 0x43, 0x98, 0x40, 0xbd,
0xc5, 0x8d, 0xce, 0x4e, 0x14, 0xf6, 0x23, 0x42, 0xe9, 0xb3, 0xab, 0x1f, 0xbf, 0x25, 0x1d, 0x3b,
0xdd, 0x94, 0xe6, 0x91, 0xff, 0x65, 0x68, 0x89, 0x31, 0x88, 0x6b, 0x47, 0xe1, 0x21, 0x55, 0x7a,
0xd4, 0x54, 0x30, 0x2b, 0x3c, 0x14, 0x0a, 0xc1, 0x42, 0x86, 0x7d, 0x89, 0xa0, 0x4e, 0x14, 0x01,
0xe1, 0xcd, 0x62, 0x0f, 0xc6, 0x8c, 0xf1, 0xce, 0xc9, 0xb3, 0x2b, 0xe3, 0x3f, 0x36, 0xe0, 0x7c,
0x6e, 0x2a, 0xf3, 0xc8, 0xf6, 0x4b, 0xd2, 0xed, 0x94, 0x93, 0x59, 0xda, 0x7c, 0x51, 0x4b, 0x93,
0x1a, 0x4c, 0x62, 0xa3, 0x17, 0xa1, 0xb9, 0x8f, 0x3d, 0xdf, 0x8e, 0x08, 0xa6, 0x61, 0xa0, 0x26,
0x0a, 0x1c, 0x64, 0x09, 0x88, 0xf9, 0x8f, 0x86, 0xcc, 0xbc, 0x3d, 0xe3, 0x16, 0xef, 0x8f, 0x4a,
0xd0, 0xde, 0x0e, 0x28, 0x89, 0xd8, 0xd9, 0xbf, 0x9a, 0xa0, 0xf7, 0xa1, 0x29, 0x26, 0x46, 0x6d,
0x17, 0x33, 0xac, 0x4e, 0xb3, 0x17, 0xb4, 0x61, 0xfa, 0x0f, 0x38, 0xde, 0x16, 0x66, 0xd8, 0x92,
0xd2, 0xa1, 0xfc, 0x37, 0xba, 0x08, 0x8d, 0x03, 0x4c, 0x0f, 0xec, 0x47, 0xe4, 0x48, 0xfa, 0x8b,
0x6d, 0xab, 0xce, 0x01, 0x1f, 0x92, 0x23, 0x8a, 0x9e, 0x83, 0x7a, 0x30, 0x1a, 0xc8, 0x0d, 0x56,
0x5b, 0x37, 0x36, 0xda, 0x56, 0x2d, 0x18, 0x0d, 0xc4, 0xf6, 0xfa, 0xe7, 0x12, 0x2c, 0xdd, 0x1f,
0xf1, 0x8b, 0x90, 0x48, 0x32, 0x8c, 0x7c, 0xf6, 0xf9, 0x94, 0xf1, 0x0a, 0x94, 0xa5, 0x4b, 0xc1,
0x29, 0xba, 0x5a, 0xc6, 0xb7, 0xb7, 0xa8, 0xc5, 0x91, 0x44, 0x80, 0x7d, 0xe4, 0x38, 0xca, 0x3b,
0x2b, 0x0b, 0x66, 0x1b, 0x1c, 0x22, 0x7d, 0xb3, 0x8b, 0xd0, 0x20, 0x51, 0x94, 0xf8, 0x6e, 0x62,
0x2a, 0x24, 0x8a, 0x64, 0xa3, 0x09, 0x2d, 0xec, 0x3c, 0x0a, 0xc2, 0x43, 0x9f, 0xb8, 0x7d, 0xe2,
0x8a, 0x65, 0xaf, 0x5b, 0x19, 0x98, 0x54, 0x0c, 0xbe, 0xf0, 0xb6, 0x13, 0x30, 0x71, 0xaa, 0x97,
0xb9, 0x62, 0x70, 0xc8, 0xed, 0x80, 0xf1, 0x66, 0x97, 0xf8, 0x84, 0x11, 0xd1, 0x5c, 0x93, 0xcd,
0x12, 0xa2, 0x9a, 0x47, 0xc3, 0x84, 0xba, 0x2e, 0x9b, 0x25, 0x84, 0x37, 0x3f, 0x0f, 0x8d, 0x71,
0x16, 0xa1, 0x31, 0x0e, 0x23, 0x0a, 0x80, 0xf9, 0x5f, 0x06, 0xb4, 0xb7, 0x44, 0x57, 0xcf, 0x80,
0xd2, 0x21, 0x58, 0x24, 0x4f, 0x86, 0x91, 0xda, 0x3a, 0xe2, 0xf7, 0x54, 0x3d, 0x32, 0x1f, 0x43,
0x67, 0xc7, 0xc7, 0x0e, 0x39, 0x08, 0x7d, 0x97, 0x44, 0xe2, 0x6c, 0x47, 0x1d, 0x28, 0x33, 0xdc,
0x57, 0xce, 0x03, 0xff, 0x89, 0xbe, 0xac, 0xae, 0x7e, 0xd2, 0x2c, 0xbd, 0xac, 0x3d, 0x65, 0x53,
0xdd, 0xa4, 0x22, 0xaa, 0x6b, 0x50, 0x15, 0x99, 0x3d, 0xe9, 0x56, 0xb4, 0x2c, 0xf5, 0x65, 0x3e,
0xcc, 0x8c, 0x7b, 0x27, 0x0a, 0x47, 0x43, 0xb4, 0x0d, 0xad, 0xe1, 0x18, 0xc6, 0x75, 0xb5, 0xf8,
0x4c, 0xcf, 0x33, 0x6d, 0x65, 0x48, 0xcd, 0xff, 0x29, 0x43, 0x7b, 0x97, 0xe0, 0xc8, 0x39, 0x78,
0x16, 0x62, 0x30, 0x5c, 0xe2, 0x2e, 0xf5, 0xd5, 0xaa, 0xf1, 0x9f, 0xe8, 0x2a, 0x9c, 0x4b, 0x4d,
0xc8, 0xee, 0x73, 0x01, 0x09, 0xbd, 0x6f, 0x59, 0x9d, 0x61, 0x5e, 0x70, 0xef, 0x40, 0xdd, 0xa5,
0xbe, 0x2d, 0x96, 0xa8, 0x26, 0x96, 0x48, 0x3f, 0xbf, 0x2d, 0xea, 0x8b, 0xa5, 0xa9, 0xb9, 0xf2,
0x07, 0x7a, 0x09, 0xda, 0xe1, 0x88, 0x0d, 0x47, 0xcc, 0x96, 0x76, 0xa7, 0x5b, 0x17, 0xec, 0xb5,
0x24, 0x50, 0x98, 0x25, 0x8a, 0x3e, 0x80, 0x36, 0x15, 0xa2, 0x8c, 0x1d, 0xf3, 0xc6, 0xac, 0x0e,
0x62, 0x4b, 0xd2, 0x29, 0xcf, 0xfc, 0x75, 0xe8, 0xb0, 0x08, 0x3f, 0x26, 0x7e, 0x2a, 0x67, 0x07,
0x62, 0xb7, 0x2d, 0x4b, 0xf8, 0x38, 0x5f, 0x77, 0x1d, 0x56, 0xfa, 0x23, 0x1c, 0xe1, 0x80, 0x11,
0x92, 0xc2, 0x6e, 0x0a, 0x6c, 0x94, 0x34, 0x25, 0x04, 0xe6, 0x87, 0xb0, 0x78, 0xd7, 0x63, 0x42,
0x90, 0xdc, 0x66, 0x19, 0xe2, 0x1a, 0x24, 0x2c, 0xd3, 0x73, 0x50, 0x8f, 0xc2, 0x43, 0x69, 0x83,
0x4b, 0x42, 0x05, 0x6b, 0x51, 0x78, 0x28, 0x0c, 0xac, 0xa8, 0x74, 0x08, 0x23, 0xa5, 0x9b, 0x25,
0x4b, 0x7d, 0x99, 0x7f, 0x61, 0x8c, 0x95, 0x87, 0x9b, 0x4f, 0xfa, 0xf9, 0xec, 0xe7, 0xfb, 0x50,
0x8b, 0x24, 0xfd, 0xd4, 0x1c, 0x6d, 0x7a, 0x24, 0x71, 0x06, 0xc4, 0x54, 0xb3, 0x27, 0x80, 0x7e,
0xc9, 0x80, 0xd6, 0x07, 0xfe, 0x88, 0x3e, 0x0d, 0x65, 0xd7, 0xa5, 0x25, 0xca, 0xfa, 0x94, 0xc8,
0x6f, 0x94, 0xa0, 0xad, 0xd8, 0x98, 0xc7, 0x09, 0x2a, 0x64, 0x65, 0x17, 0x9a, 0x7c, 0x48, 0x9b,
0x92, 0x7e, 0x1c, 0xd3, 0x69, 0x6e, 0x6e, 0x6a, 0xcd, 0x43, 0x86, 0x0d, 0x91, 0x06, 0xdf, 0x15,
0x44, 0x3f, 0x1f, 0xb0, 0xe8, 0xc8, 0x02, 0x27, 0x01, 0xf4, 0x1e, 0xc2, 0x72, 0xae, 0x99, 0x2b,
0xd1, 0x23, 0x72, 0x14, 0xdb, 0xbf, 0x47, 0xe4, 0x08, 0xbd, 0x95, 0x2e, 0x56, 0x28, 0x3a, 0xc5,
0xef, 0x85, 0x41, 0xff, 0x66, 0x14, 0xe1, 0x23, 0x55, 0xcc, 0xf0, 0x6e, 0xe9, 0xcb, 0x86, 0xf9,
0x0f, 0x25, 0x68, 0x7d, 0x6d, 0x44, 0xa2, 0xa3, 0xd3, 0xb4, 0x43, 0xf1, 0xa9, 0xb0, 0x98, 0x3a,
0x15, 0x26, 0xb6, 0x7e, 0x45, 0xb3, 0xf5, 0x35, 0x06, 0xac, 0xaa, 0x35, 0x60, 0xba, 0xbd, 0x5d,
0x3b, 0xd1, 0xde, 0xae, 0x17, 0xee, 0xed, 0x3f, 0x37, 0x12, 0x11, 0xce, 0xb5, 0x1b, 0x33, 0xee,
0x58, 0xe9, 0xc4, 0xee, 0xd8, 0xcc, 0xbb, 0xf1, 0x87, 0x06, 0x34, 0xbe, 0x41, 0x1c, 0x16, 0x46,
0xdc, 0xfe, 0x68, 0xc8, 0x8c, 0x19, 0x5c, 0xe3, 0x52, 0xde, 0x35, 0xbe, 0x01, 0x75, 0xcf, 0xb5,
0x31, 0xd7, 0x2f, 0x31, 0xee, 0x34, 0x97, 0xac, 0xe6, 0xb9, 0x42, 0x11, 0x67, 0x4f, 0x02, 0xfc,
0xb6, 0x01, 0x2d, 0xc9, 0x33, 0x95, 0x94, 0xef, 0xa5, 0x86, 0x33, 0x74, 0x4a, 0xaf, 0x3e, 0x92,
0x89, 0xde, 0x5d, 0x18, 0x0f, 0x7b, 0x13, 0x80, 0x0b, 0x59, 0x91, 0xcb, 0x3d, 0xb3, 0xae, 0xe5,
0x56, 0x92, 0x0b, 0x81, 0xdf, 0x5d, 0xb0, 0x1a, 0x9c, 0x4a, 0x74, 0x71, 0xab, 0x06, 0x15, 0x41,
0x6d, 0xfe, 0x9f, 0x01, 0x2b, 0xb7, 0xb1, 0xef, 0x6c, 0x79, 0x94, 0xe1, 0xc0, 0x99, 0xc3, 0x09,
0x7b, 0x17, 0x6a, 0xe1, 0xd0, 0xf6, 0xc9, 0x3e, 0x53, 0x2c, 0x5d, 0x9e, 0x32, 0x23, 0x29, 0x06,
0xab, 0x1a, 0x0e, 0xef, 0x91, 0x7d, 0x86, 0xbe, 0x02, 0xf5, 0x70, 0x68, 0x47, 0x5e, 0xff, 0x80,
0x29, 0xe9, 0xcf, 0x40, 0x5c, 0x0b, 0x87, 0x16, 0xa7, 0x48, 0xc5, 0x56, 0x16, 0x4f, 0x18, 0x5b,
0x31, 0xff, 0x6d, 0x62, 0xfa, 0x73, 0xec, 0x81, 0x77, 0xa1, 0xee, 0x05, 0xcc, 0x76, 0x3d, 0x1a,
0x8b, 0xe0, 0x92, 0x5e, 0x87, 0x02, 0x26, 0x66, 0x20, 0xd6, 0x34, 0x60, 0x7c, 0x6c, 0xf4, 0x55,
0x80, 0x7d, 0x3f, 0xc4, 0x8a, 0x5a, 0xca, 0xe0, 0x45, 0xfd, 0xf6, 0xe1, 0x68, 0x31, 0x7d, 0x43,
0x10, 0xf1, 0x1e, 0xc6, 0x4b, 0xfa, 0x2f, 0x06, 0x9c, 0xdf, 0x21, 0x91, 0x2c, 0x65, 0x61, 0x2a,
0x0c, 0xba, 0x1d, 0xec, 0x87, 0xd9, 0x48, 0xb4, 0x91, 0x8b, 0x44, 0xff, 0x64, 0xa2, 0xaf, 0x99,
0x9b, 0x93, 0xcc, 0x87, 0xc4, 0x37, 0xa7, 0x38, 0xeb, 0x23, 0x6f, 0x9e, 0x4b, 0x05, 0xcb, 0xa4,
0xf8, 0x4d, 0x5f, 0xc0, 0xcd, 0xdf, 0x94, 0x15, 0x18, 0xda, 0x49, 0x7d, 0x7e, 0x85, 0x5d, 0x03,
0x65, 0xe9, 0x73, 0x76, 0xff, 0x55, 0xc8, 0xd9, 0x8e, 0x02, 0x43, 0xf4, 0xbb, 0x06, 0xac, 0x17,
0x73, 0x35, 0xcf, 0x11, 0xfd, 0x55, 0xa8, 0x78, 0xc1, 0x7e, 0x18, 0x87, 0xdd, 0xae, 0xe8, 0x5d,
0x74, 0xed, 0xb8, 0x92, 0xd0, 0xfc, 0xeb, 0x12, 0x74, 0x84, 0x51, 0x3f, 0x85, 0xe5, 0x1f, 0x90,
0x81, 0x4d, 0xbd, 0x4f, 0x48, 0xbc, 0xfc, 0x03, 0x32, 0xd8, 0xf5, 0x3e, 0x21, 0x19, 0xcd, 0xa8,
0x64, 0x35, 0x63, 0x7a, 0x54, 0x39, 0x1d, 0x56, 0xad, 0x65, 0xc3, 0xaa, 0x6b, 0x50, 0x0d, 0x42,
0x97, 0x6c, 0x6f, 0xa9, 0x6b, 0xa7, 0xfa, 0x1a, 0xab, 0x5a, 0xe3, 0x84, 0xaa, 0xf6, 0x99, 0x01,
0xbd, 0x3b, 0x84, 0xe5, 0x65, 0x77, 0x7a, 0x5a, 0xf6, 0x7d, 0x03, 0x2e, 0x6a, 0x19, 0x9a, 0x47,
0xc1, 0xde, 0xcb, 0x2a, 0x98, 0xfe, 0x0e, 0x38, 0x31, 0xa4, 0xd2, 0xad, 0x37, 0xa1, 0xb5, 0x35,
0x1a, 0x0c, 0x12, 0x97, 0xeb, 0x32, 0xb4, 0x22, 0xf9, 0x53, 0x5e, 0x91, 0xe4, 0xf9, 0xdb, 0x54,
0x30, 0x7e, 0x11, 0x32, 0xaf, 0x42, 0x5b, 0x91, 0x28, 0xae, 0x7b, 0x50, 0x8f, 0xd4, 0x6f, 0x85,
0x9f, 0x7c, 0x9b, 0xe7, 0x61, 0xc5, 0x22, 0x7d, 0xae, 0xda, 0xd1, 0x3d, 0x2f, 0x78, 0xa4, 0x86,
0x31, 0xbf, 0x6b, 0xc0, 0x6a, 0x16, 0xae, 0xfa, 0x7a, 0x1b, 0x6a, 0xd8, 0x75, 0x23, 0x42, 0xe9,
0xd4, 0x65, 0xb9, 0x29, 0x71, 0xac, 0x18, 0x39, 0x25, 0xb9, 0xd2, 0xcc, 0x92, 0x33, 0x6d, 0x38,
0x77, 0x87, 0xb0, 0xfb, 0x84, 0x45, 0x73, 0x65, 0xf0, 0xbb, 0xfc, 0xf2, 0x22, 0x88, 0x95, 0x5a,
0xc4, 0x9f, 0xe6, 0xa7, 0x06, 0xa0, 0xf4, 0x08, 0xf3, 0x2c, 0x73, 0x5a, 0xca, 0xa5, 0xac, 0x94,
0x65, 0x91, 0xd3, 0x60, 0x18, 0x06, 0x24, 0x60, 0x69, 0x77, 0xab, 0x9d, 0x40, 0x85, 0xfa, 0xfd,
0xd8, 0x00, 0x74, 0x2f, 0xc4, 0xee, 0x2d, 0xec, 0xcf, 0xe7, 0x1e, 0x5c, 0x02, 0xa0, 0x91, 0x63,
0xab, 0xdd, 0x5a, 0x52, 0xd6, 0x27, 0x72, 0x1e, 0xc8, 0x0d, 0xfb, 0x22, 0x34, 0x5d, 0xca, 0x54,
0x73, 0x9c, 0x50, 0x06, 0x97, 0x32, 0xd9, 0x2e, 0x8a, 0x58, 0x29, 0xc1, 0x3e, 0x71, 0xed, 0x54,
0x3e, 0x6e, 0x51, 0xa0, 0x75, 0x64, 0xc3, 0xee, 0x38, 0x2b, 0xf7, 0x10, 0x2e, 0xdc, 0xc7, 0xc1,
0x08, 0xfb, 0xb7, 0xc3, 0xc1, 0x10, 0x67, 0x0a, 0x1b, 0xf3, 0x66, 0xce, 0xd0, 0x98, 0xb9, 0x17,
0x64, 0xe5, 0x9b, 0x74, 0xad, 0x05, 0xaf, 0x8b, 0x56, 0x0a, 0x62, 0x52, 0xe8, 0x4e, 0x76, 0x3f,
0xcf, 0x42, 0x09, 0xa6, 0xe2, 0xae, 0xd2, 0xb6, 0x77, 0x0c, 0x33, 0xdf, 0x87, 0xe7, 0x44, 0x15,
0x62, 0x0c, 0xca, 0x84, 0xf6, 0xf3, 0x1d, 0x18, 0x9a, 0x0e, 0x7e, 0xa5, 0x24, 0x4c, 0xdb, 0x44,
0x0f, 0xf3, 0x30, 0xfe, 0x6e, 0x36, 0xa2, 0xfe, 0x72, 0x41, 0xa5, 0x6d, 0x76, 0x44, 0x15, 0x56,
0xdf, 0x80, 0x65, 0xf2, 0x84, 0x38, 0x23, 0xe6, 0x05, 0xfd, 0x1d, 0x1f, 0x07, 0x0f, 0x42, 0x75,
0xa0, 0xe4, 0xc1, 0xe8, 0x65, 0x68, 0x73, 0xe9, 0x87, 0x23, 0xa6, 0xf0, 0xe4, 0xc9, 0x92, 0x05,
0xf2, 0xfe, 0xf8, 0x7c, 0x7d, 0xc2, 0x88, 0xab, 0xf0, 0xe4, 0x31, 0x93, 0x07, 0x4f, 0x88, 0x92,
0x83, 0xe9, 0x49, 0x44, 0xf9, 0x1f, 0x46, 0x4e, 0x94, 0xaa, 0x87, 0xd3, 0x12, 0xe5, 0x5d, 0x80,
0x01, 0x89, 0xfa, 0x64, 0x5b, 0x18, 0x75, 0x79, 0x73, 0xdf, 0xd0, 0x1a, 0xf5, 0x71, 0x07, 0xf7,
0x63, 0x02, 0x2b, 0x45, 0x6b, 0xde, 0x81, 0x15, 0x0d, 0x0a, 0xb7, 0x57, 0x34, 0x1c, 0x45, 0x0e,
0x89, 0x83, 0x3f, 0xf1, 0x27, 0x3f, 0xdf, 0x18, 0x8e, 0xfa, 0x84, 0x29, 0xa5, 0x55, 0x5f, 0xe6,
0xdb, 0x22, 0x09, 0x25, 0x02, 0x05, 0x19, 0x4d, 0xcd, 0x26, 0xd4, 0x8d, 0x89, 0x84, 0xfa, 0xbe,
0xc8, 0xf8, 0xa4, 0xe9, 0xe6, 0x2c, 0x86, 0xd8, 0xe7, 0x5d, 0x11, 0x57, 0xbd, 0xb2, 0x88, 0x3f,
0xb9, 0x97, 0xdc, 0xde, 0x1e, 0x0c, 0xc3, 0x71, 0xb2, 0x63, 0xe6, 0xab, 0xe4, 0x64, 0xb0, 0xb8,
0xa4, 0x0b, 0x16, 0x5f, 0x84, 0x46, 0x14, 0x1e, 0xda, 0xdc, 0xfa, 0xb9, 0x42, 0xb3, 0xeb, 0x56,
0x3d, 0x0a, 0x0f, 0xb9, 0x4d, 0x74, 0xd1, 0x2a, 0x54, 0xf6, 0x3d, 0x3f, 0xb9, 0x30, 0xca, 0x0f,
0xf4, 0x1e, 0xbf, 0x43, 0xc9, 0x8c, 0xeb, 0xcc, 0xe9, 0xf9, 0x98, 0xc2, 0xfc, 0x18, 0x96, 0xe2,
0x09, 0xcd, 0xf9, 0x72, 0x84, 0x61, 0xfa, 0x28, 0x2e, 0x76, 0x90, 0x1f, 0xe6, 0x55, 0x99, 0x88,
0x13, 0xfd, 0x67, 0xd6, 0x13, 0xc1, 0x22, 0xc7, 0x50, 0xdb, 0x44, 0xfc, 0x36, 0xff, 0xd7, 0x80,
0xb5, 0x3c, 0xf6, 0x3c, 0x2c, 0xbd, 0x9d, 0xdd, 0x1a, 0xfa, 0xc7, 0x01, 0xe9, 0xd1, 0xd4, 0xb6,
0x50, 0x2b, 0xe0, 0x84, 0xa3, 0x80, 0x29, 0xdb, 0xc2, 0x57, 0xe0, 0x36, 0xff, 0x46, 0x17, 0xa0,
0xe6, 0xb9, 0xb6, 0xcf, 0xaf, 0x5b, 0xf2, 0x18, 0xa9, 0x7a, 0xee, 0x3d, 0x7e, 0x15, 0x7b, 0x27,
0x76, 0x8e, 0x66, 0x5e, 0x02, 0xe5, 0x18, 0xfd, 0x40, 0x1e, 0xdd, 0x96, 0xac, 0xb2, 0x7f, 0xca,
0x75, 0x30, 0x1b, 0xd0, 0x39, 0xf4, 0xd8, 0x81, 0x2d, 0x9e, 0x59, 0x88, 0x73, 0x93, 0x2a, 0x25,
0x5b, 0xe2, 0xf0, 0x5d, 0x0e, 0xe6, 0x67, 0x27, 0x35, 0x7f, 0xd5, 0x80, 0x95, 0x0c, 0x5b, 0xf3,
0x2c, 0xc5, 0x57, 0xb8, 0x4b, 0x21, 0x3b, 0x52, 0xce, 0xe3, 0xba, 0xd6, 0xce, 0xa8, 0xd1, 0x84,
0x7d, 0x49, 0x28, 0xcc, 0xff, 0x34, 0xa0, 0x99, 0x6a, 0xe1, 0x37, 0x12, 0xd5, 0x36, 0xbe, 0x91,
0x24, 0x80, 0x99, 0xc4, 0xf0, 0x12, 0x8c, 0x77, 0x5d, 0xaa, 0x54, 0x3b, 0x55, 0x8a, 0xe6, 0x52,
0x74, 0x17, 0x96, 0xa4, 0x98, 0x12, 0xd6, 0xb5, 0x81, 0x82, 0xa4, 0xc8, 0x0e, 0x47, 0xae, 0xe2,
0xd2, 0x6a, 0xd3, 0xd4, 0x97, 0xcc, 0x0b, 0x86, 0x2e, 0x11, 0x23, 0x55, 0xa4, 0x21, 0x14, 0x2e,
0x8b, 0x4b, 0xf9, 0xcd, 0xa1, 0x95, 0x26, 0xe5, 0xde, 0x97, 0x4f, 0xb0, 0x4b, 0xa2, 0x64, 0x6e,
0xc9, 0x37, 0x77, 0x77, 0xe4, 0x6f, 0x9b, 0x7b, 0xa3, 0xca, 0x7e, 0x80, 0x04, 0x71, 0x47, 0x15,
0xbd, 0x0a, 0xcb, 0xee, 0x20, 0xf3, 0xc6, 0x27, 0xf6, 0xcf, 0xdc, 0x41, 0xea, 0x71, 0x4f, 0x86,
0xa1, 0xc5, 0x0c, 0x43, 0x57, 0x2e, 0x43, 0x3d, 0xae, 0x17, 0x44, 0x35, 0x28, 0xdf, 0xf4, 0xfd,
0xce, 0x02, 0x6a, 0x41, 0x7d, 0x5b, 0x15, 0xc5, 0x75, 0x8c, 0x2b, 0x3f, 0x07, 0xcb, 0xb9, 0xbc,
0x12, 0xaa, 0xc3, 0xe2, 0x83, 0x30, 0x20, 0x9d, 0x05, 0xd4, 0x81, 0xd6, 0x2d, 0x2f, 0xc0, 0xd1,
0x91, 0x8c, 0xba, 0x74, 0x5c, 0xb4, 0x0c, 0x4d, 0x11, 0x7d, 0x50, 0x00, 0xb2, 0xf9, 0x67, 0x97,
0xa1, 0x7d, 0x5f, 0x48, 0x6d, 0x97, 0x44, 0x8f, 0x3d, 0x87, 0x20, 0x1b, 0x3a, 0xf9, 0xd7, 0x96,
0xe8, 0x0b, 0xfa, 0x93, 0x48, 0xff, 0x28, 0xb3, 0x37, 0x4d, 0x0d, 0xcd, 0x05, 0xf4, 0x31, 0x2c,
0x65, 0xdf, 0x2c, 0x22, 0xfd, 0xf5, 0x58, 0xfb, 0xb0, 0xf1, 0xb8, 0xce, 0x6d, 0x68, 0x67, 0x9e,
0x20, 0xa2, 0xd7, 0xb5, 0x7d, 0xeb, 0x9e, 0x29, 0xf6, 0xf4, 0xca, 0x94, 0x7e, 0x26, 0x28, 0xb9,
0xcf, 0xbe, 0x13, 0x2a, 0xe0, 0x5e, 0xfb, 0x98, 0xe8, 0x38, 0xee, 0x31, 0x9c, 0x9b, 0x78, 0xcf,
0x83, 0xde, 0x28, 0xd8, 0x9e, 0xfa, 0x77, 0x3f, 0xc7, 0x0d, 0x71, 0x08, 0x68, 0xf2, 0xa9, 0x1d,
0xba, 0xa6, 0x5f, 0x81, 0xa2, 0x87, 0x86, 0xbd, 0xeb, 0x33, 0xe3, 0x27, 0x82, 0xfb, 0x65, 0x03,
0x2e, 0x14, 0x3c, 0xc2, 0x41, 0x37, 0xb4, 0xdd, 0x4d, 0x7f, 0x49, 0xd4, 0x7b, 0xeb, 0x64, 0x44,
0x09, 0x23, 0x01, 0x2c, 0xe7, 0xde, 0xa5, 0xa0, 0xab, 0x85, 0xb5, 0xba, 0x93, 0x0f, 0x74, 0x7a,
0x5f, 0x98, 0x0d, 0x39, 0x19, 0xef, 0x21, 0x2c, 0xe7, 0x1e, 0x73, 0x14, 0x8c, 0xa7, 0x7f, 0xf2,
0x71, 0xdc, 0x82, 0x7e, 0x0b, 0xda, 0x99, 0x57, 0x17, 0x05, 0x1a, 0xaf, 0x7b, 0x99, 0x71, 0x5c,
0xd7, 0x0f, 0xa1, 0x95, 0x7e, 0x1c, 0x81, 0x36, 0x8a, 0xf6, 0xd2, 0x44, 0xc7, 0x27, 0xd9, 0x4a,
0xe3, 0xda, 0xe7, 0x29, 0x5b, 0x69, 0xa2, 0x5c, 0x7c, 0xf6, 0xad, 0x94, 0xea, 0x7f, 0xea, 0x56,
0x3a, 0xf1, 0x10, 0xdf, 0x95, 0x4e, 0x92, 0xa6, 0xb6, 0x1e, 0x6d, 0x16, 0xe9, 0x66, 0xf1, 0x2b,
0x82, 0xde, 0x8d, 0x13, 0xd1, 0x24, 0x52, 0x7c, 0x04, 0x4b, 0xd9, 0x0a, 0xf2, 0x02, 0x29, 0x6a,
0x8b, 0xee, 0x7b, 0x57, 0x67, 0xc2, 0x4d, 0x06, 0xfb, 0x3a, 0x34, 0x53, 0x7f, 0xa0, 0x80, 0x5e,
0x9b, 0xa2, 0xc7, 0xe9, 0x7f, 0x13, 0x38, 0x4e, 0x92, 0x5f, 0x83, 0x46, 0xf2, 0xbf, 0x07, 0xe8,
0x95, 0x42, 0xfd, 0x3d, 0x49, 0x97, 0xbb, 0x00, 0xe3, 0x3f, 0x35, 0x40, 0xaf, 0x6a, 0xfb, 0x9c,
0xf8, 0xd7, 0x83, 0xe3, 0x3a, 0x4d, 0xa6, 0x2f, 0x0b, 0x73, 0xa6, 0x4d, 0x3f, 0x5d, 0x49, 0x76,
0x5c, 0xb7, 0x07, 0xd0, 0xce, 0xd4, 0x7f, 0x16, 0x6d, 0x61, 0x4d, 0x59, 0x6e, 0xef, 0xca, 0x2c,
0xa8, 0xc9, 0xfa, 0x1d, 0x40, 0x3b, 0x53, 0x8d, 0x57, 0x30, 0x92, 0xae, 0xf8, 0xb0, 0x60, 0x24,
0x6d, 0x71, 0x9f, 0xb9, 0x80, 0xbe, 0x93, 0x2a, 0xfc, 0xcb, 0x14, 0x57, 0xa2, 0x37, 0xa7, 0xf6,
0xa3, 0xab, 0x2d, 0xed, 0x6d, 0x9e, 0x84, 0x24, 0x61, 0x41, 0x69, 0x95, 0x14, 0x69, 0xb1, 0x56,
0x9d, 0x64, 0xa5, 0x76, 0xa1, 0x2a, 0xeb, 0xeb, 0x90, 0x59, 0x50, 0x49, 0x9b, 0x2a, 0xbe, 0xeb,
0xbd, 0xa4, 0xc5, 0xc9, 0x96, 0x9e, 0xc9, 0x4e, 0x65, 0xfd, 0x54, 0x41, 0xa7, 0x99, 0xe2, 0xaa,
0x59, 0x3b, 0xb5, 0xa0, 0x2a, 0x0b, 0x27, 0x0a, 0x3a, 0xcd, 0x14, 0xff, 0xf4, 0xa6, 0xe3, 0x88,
0x8c, 0x9a, 0xb9, 0x80, 0x76, 0xa0, 0x22, 0xae, 0xf5, 0xe8, 0xf2, 0xb4, 0x9a, 0x82, 0x69, 0x3d,
0x66, 0xca, 0x0e, 0xcc, 0x05, 0xf4, 0x0b, 0x50, 0x11, 0x41, 0xea, 0x82, 0x1e, 0xd3, 0x85, 0x01,
0xbd, 0xa9, 0x28, 0x31, 0x8b, 0x2e, 0xb4, 0xd2, 0xd9, 0xc0, 0x82, 0x23, 0x4b, 0x93, 0x2f, 0xed,
0xcd, 0x82, 0x19, 0x8f, 0x22, 0xb7, 0xd1, 0x38, 0xc4, 0x51, 0xbc, 0x8d, 0x26, 0xc2, 0x27, 0xc5,
0xdb, 0x68, 0x32, 0x62, 0x62, 0x2e, 0xa0, 0x5f, 0x33, 0xa0, 0x5b, 0x94, 0xa2, 0x42, 0x85, 0x1e,
0xd0, 0xb4, 0x3c, 0x5b, 0xef, 0x4b, 0x27, 0xa4, 0x4a, 0x78, 0xf9, 0x44, 0xdc, 0x42, 0x27, 0x92,
0x52, 0xd7, 0x8b, 0xfa, 0x2b, 0x48, 0xc1, 0xf4, 0xbe, 0x38, 0x3b, 0x41, 0x32, 0xf6, 0x1e, 0x34,
0x53, 0x37, 0xe0, 0x02, 0xcb, 0x3b, 0x79, 0x75, 0x2f, 0x58, 0x55, 0xcd, 0x65, 0x5a, 0xaa, 0xb7,
0xc8, 0x71, 0x14, 0x28, 0x63, 0x3a, 0x65, 0x52, 0xa0, 0xde, 0x99, 0x14, 0x89, 0xb9, 0x80, 0x08,
0xb4, 0xd2, 0x09, 0x8f, 0x02, 0x6d, 0xd4, 0xe4, 0x4a, 0x7a, 0xaf, 0xcf, 0x80, 0x99, 0x0c, 0x63,
0x03, 0x8c, 0x13, 0x0e, 0x05, 0x67, 0xdd, 0x44, 0xce, 0xa3, 0xf7, 0xda, 0xb1, 0x78, 0xe9, 0x63,
0x3f, 0x95, 0x42, 0x28, 0x90, 0xfe, 0x64, 0x92, 0x61, 0x86, 0xbb, 0xc8, 0x64, 0x38, 0xbb, 0xe0,
0x2e, 0x52, 0x18, 0x39, 0xef, 0x5d, 0x9f, 0x19, 0x3f, 0x99, 0xcf, 0xb7, 0xa1, 0x93, 0x0f, 0xff,
0x17, 0xdc, 0x71, 0x0b, 0x92, 0x10, 0xbd, 0x37, 0x66, 0xc4, 0x4e, 0x9f, 0x87, 0x17, 0x27, 0x79,
0xfa, 0xa6, 0xc7, 0x0e, 0x44, 0xe4, 0x79, 0x96, 0x59, 0xa7, 0x83, 0xdc, 0xb3, 0xcc, 0x3a, 0x13,
0xd2, 0x56, 0x87, 0x97, 0x08, 0xb1, 0x15, 0x1d, 0x5e, 0xe9, 0x60, 0x6a, 0xc1, 0x39, 0x93, 0x8d,
0x4f, 0x4a, 0xf7, 0x33, 0x1b, 0x28, 0x44, 0xc5, 0x7e, 0xc2, 0x44, 0xec, 0xb1, 0xc0, 0xfd, 0xd4,
0x47, 0x1e, 0xcd, 0x85, 0xcd, 0x11, 0xb4, 0x76, 0xa2, 0xf0, 0xc9, 0x51, 0x1c, 0xab, 0xf8, 0xe9,
0xec, 0xaf, 0x5b, 0xdf, 0x84, 0x25, 0x2f, 0xc1, 0xe9, 0x47, 0x43, 0xe7, 0x56, 0x53, 0xc6, 0x4c,
0x76, 0x38, 0xf1, 0x8e, 0xf1, 0x8b, 0x37, 0xfa, 0x1e, 0x3b, 0x18, 0xed, 0x71, 0x05, 0xbf, 0x2e,
0xd1, 0xde, 0xf0, 0x42, 0xf5, 0xeb, 0xba, 0x17, 0x30, 0x12, 0x05, 0xd8, 0xbf, 0x2e, 0x86, 0x52,
0xd0, 0xe1, 0xde, 0x1f, 0x18, 0xc6, 0x5e, 0x55, 0x80, 0x6e, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x8a, 0x5f, 0xf0, 0xa5, 0xd8, 0x4c, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -5568,6 +5822,7 @@ type MilvusServiceClient interface {
GetFlushState(ctx context.Context, in *GetFlushStateRequest, opts ...grpc.CallOption) (*GetFlushStateResponse, error)
GetPersistentSegmentInfo(ctx context.Context, in *GetPersistentSegmentInfoRequest, opts ...grpc.CallOption) (*GetPersistentSegmentInfoResponse, error)
GetQuerySegmentInfo(ctx context.Context, in *GetQuerySegmentInfoRequest, opts ...grpc.CallOption) (*GetQuerySegmentInfoResponse, error)
GetReplicas(ctx context.Context, in *GetReplicasRequest, opts ...grpc.CallOption) (*GetReplicasResponse, error)
Dummy(ctx context.Context, in *DummyRequest, opts ...grpc.CallOption) (*DummyResponse, error)
// TODO: remove
RegisterLink(ctx context.Context, in *RegisterLinkRequest, opts ...grpc.CallOption) (*RegisterLinkResponse, error)
@ -5878,6 +6133,15 @@ func (c *milvusServiceClient) GetQuerySegmentInfo(ctx context.Context, in *GetQu
return out, nil
}
func (c *milvusServiceClient) GetReplicas(ctx context.Context, in *GetReplicasRequest, opts ...grpc.CallOption) (*GetReplicasResponse, error) {
out := new(GetReplicasResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/GetReplicas", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *milvusServiceClient) Dummy(ctx context.Context, in *DummyRequest, opts ...grpc.CallOption) (*DummyResponse, error) {
out := new(DummyResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.milvus.MilvusService/Dummy", in, out, opts...)
@ -5993,6 +6257,7 @@ type MilvusServiceServer interface {
GetFlushState(context.Context, *GetFlushStateRequest) (*GetFlushStateResponse, error)
GetPersistentSegmentInfo(context.Context, *GetPersistentSegmentInfoRequest) (*GetPersistentSegmentInfoResponse, error)
GetQuerySegmentInfo(context.Context, *GetQuerySegmentInfoRequest) (*GetQuerySegmentInfoResponse, error)
GetReplicas(context.Context, *GetReplicasRequest) (*GetReplicasResponse, error)
Dummy(context.Context, *DummyRequest) (*DummyResponse, error)
// TODO: remove
RegisterLink(context.Context, *RegisterLinkRequest) (*RegisterLinkResponse, error)
@ -6107,6 +6372,9 @@ func (*UnimplementedMilvusServiceServer) GetPersistentSegmentInfo(ctx context.Co
func (*UnimplementedMilvusServiceServer) GetQuerySegmentInfo(ctx context.Context, req *GetQuerySegmentInfoRequest) (*GetQuerySegmentInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetQuerySegmentInfo not implemented")
}
func (*UnimplementedMilvusServiceServer) GetReplicas(ctx context.Context, req *GetReplicasRequest) (*GetReplicasResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetReplicas not implemented")
}
func (*UnimplementedMilvusServiceServer) Dummy(ctx context.Context, req *DummyRequest) (*DummyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Dummy not implemented")
}
@ -6715,6 +6983,24 @@ func _MilvusService_GetQuerySegmentInfo_Handler(srv interface{}, ctx context.Con
return interceptor(ctx, in, info, handler)
}
func _MilvusService_GetReplicas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetReplicasRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MilvusServiceServer).GetReplicas(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.milvus.MilvusService/GetReplicas",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MilvusServiceServer).GetReplicas(ctx, req.(*GetReplicasRequest))
}
return interceptor(ctx, in, info, handler)
}
func _MilvusService_Dummy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DummyRequest)
if err := dec(in); err != nil {
@ -7009,6 +7295,10 @@ var _MilvusService_serviceDesc = grpc.ServiceDesc{
MethodName: "GetQuerySegmentInfo",
Handler: _MilvusService_GetQuerySegmentInfo_Handler,
},
{
MethodName: "GetReplicas",
Handler: _MilvusService_GetReplicas_Handler,
},
{
MethodName: "Dummy",
Handler: _MilvusService_Dummy_Handler,

View File

@ -32,7 +32,7 @@ service QueryCoord {
rpc GetMetrics(milvus.GetMetricsRequest) returns (milvus.GetMetricsResponse) {}
// https://wiki.lfaidata.foundation/display/MIL/MEP+23+--+Multiple+memory+replication+design
rpc GetReplicas(GetReplicasRequest) returns (GetReplicasResponse) {}
rpc GetReplicas(milvus.GetReplicasRequest) returns (milvus.GetReplicasResponse) {}
rpc GetShardLeaders(GetShardLeadersRequest) returns (GetShardLeadersResponse) {}
}
@ -151,17 +151,6 @@ message GetSegmentInfoResponse {
repeated SegmentInfo infos = 2;
}
message GetReplicasRequest {
common.MsgBase base = 1;
int64 collectionID = 2;
bool with_shard_nodes = 3;
}
message GetReplicasResponse {
common.Status status = 1;
repeated ReplicaInfo replicas = 2;
}
message GetShardLeadersRequest {
common.MsgBase base = 1;
int64 collectionID = 2;
@ -369,23 +358,6 @@ message CollectionInfo {
int32 replica_number = 9;
}
message ReplicaInfo { // ReplicaGroup
int64 replicaID = 1;
int64 collectionID = 2;
repeated int64 partition_ids = 3; // empty indicates to load collection
repeated ShardReplica shard_replicas = 4;
repeated int64 node_ids = 5; // include leaders
}
message ShardReplica {
int64 leaderID = 1;
string leader_addr = 2; // IP:port
string dm_channel_name = 3;
// optional, DO NOT save it in meta, set it only for GetReplicas()
// if with_shard_nodes is true
repeated int64 node_ids = 4;
}
message UnsubscribeChannels {
int64 collectionID = 1;
repeated string channels = 2;

View File

@ -960,108 +960,6 @@ func (m *GetSegmentInfoResponse) GetInfos() []*SegmentInfo {
return nil
}
type GetReplicasRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
WithShardNodes bool `protobuf:"varint,3,opt,name=with_shard_nodes,json=withShardNodes,proto3" json:"with_shard_nodes,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReplicasRequest) Reset() { *m = GetReplicasRequest{} }
func (m *GetReplicasRequest) String() string { return proto.CompactTextString(m) }
func (*GetReplicasRequest) ProtoMessage() {}
func (*GetReplicasRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{14}
}
func (m *GetReplicasRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReplicasRequest.Unmarshal(m, b)
}
func (m *GetReplicasRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReplicasRequest.Marshal(b, m, deterministic)
}
func (m *GetReplicasRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasRequest.Merge(m, src)
}
func (m *GetReplicasRequest) XXX_Size() int {
return xxx_messageInfo_GetReplicasRequest.Size(m)
}
func (m *GetReplicasRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetReplicasRequest proto.InternalMessageInfo
func (m *GetReplicasRequest) GetBase() *commonpb.MsgBase {
if m != nil {
return m.Base
}
return nil
}
func (m *GetReplicasRequest) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *GetReplicasRequest) GetWithShardNodes() bool {
if m != nil {
return m.WithShardNodes
}
return false
}
type GetReplicasResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
Replicas []*ReplicaInfo `protobuf:"bytes,2,rep,name=replicas,proto3" json:"replicas,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetReplicasResponse) Reset() { *m = GetReplicasResponse{} }
func (m *GetReplicasResponse) String() string { return proto.CompactTextString(m) }
func (*GetReplicasResponse) ProtoMessage() {}
func (*GetReplicasResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{15}
}
func (m *GetReplicasResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReplicasResponse.Unmarshal(m, b)
}
func (m *GetReplicasResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetReplicasResponse.Marshal(b, m, deterministic)
}
func (m *GetReplicasResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasResponse.Merge(m, src)
}
func (m *GetReplicasResponse) XXX_Size() int {
return xxx_messageInfo_GetReplicasResponse.Size(m)
}
func (m *GetReplicasResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GetReplicasResponse proto.InternalMessageInfo
func (m *GetReplicasResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *GetReplicasResponse) GetReplicas() []*ReplicaInfo {
if m != nil {
return m.Replicas
}
return nil
}
type GetShardLeadersRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
@ -1074,7 +972,7 @@ func (m *GetShardLeadersRequest) Reset() { *m = GetShardLeadersRequest{}
func (m *GetShardLeadersRequest) String() string { return proto.CompactTextString(m) }
func (*GetShardLeadersRequest) ProtoMessage() {}
func (*GetShardLeadersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{16}
return fileDescriptor_aab7cc9a69ed26e8, []int{14}
}
func (m *GetShardLeadersRequest) XXX_Unmarshal(b []byte) error {
@ -1121,7 +1019,7 @@ func (m *GetShardLeadersResponse) Reset() { *m = GetShardLeadersResponse
func (m *GetShardLeadersResponse) String() string { return proto.CompactTextString(m) }
func (*GetShardLeadersResponse) ProtoMessage() {}
func (*GetShardLeadersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{17}
return fileDescriptor_aab7cc9a69ed26e8, []int{15}
}
func (m *GetShardLeadersResponse) XXX_Unmarshal(b []byte) error {
@ -1169,7 +1067,7 @@ func (m *ShardLeadersList) Reset() { *m = ShardLeadersList{} }
func (m *ShardLeadersList) String() string { return proto.CompactTextString(m) }
func (*ShardLeadersList) ProtoMessage() {}
func (*ShardLeadersList) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{18}
return fileDescriptor_aab7cc9a69ed26e8, []int{16}
}
func (m *ShardLeadersList) XXX_Unmarshal(b []byte) error {
@ -1229,7 +1127,7 @@ func (m *AddQueryChannelRequest) Reset() { *m = AddQueryChannelRequest{}
func (m *AddQueryChannelRequest) String() string { return proto.CompactTextString(m) }
func (*AddQueryChannelRequest) ProtoMessage() {}
func (*AddQueryChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{19}
return fileDescriptor_aab7cc9a69ed26e8, []int{17}
}
func (m *AddQueryChannelRequest) XXX_Unmarshal(b []byte) error {
@ -1314,7 +1212,7 @@ func (m *RemoveQueryChannelRequest) Reset() { *m = RemoveQueryChannelReq
func (m *RemoveQueryChannelRequest) String() string { return proto.CompactTextString(m) }
func (*RemoveQueryChannelRequest) ProtoMessage() {}
func (*RemoveQueryChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{20}
return fileDescriptor_aab7cc9a69ed26e8, []int{18}
}
func (m *RemoveQueryChannelRequest) XXX_Unmarshal(b []byte) error {
@ -1383,7 +1281,7 @@ func (m *LoadMetaInfo) Reset() { *m = LoadMetaInfo{} }
func (m *LoadMetaInfo) String() string { return proto.CompactTextString(m) }
func (*LoadMetaInfo) ProtoMessage() {}
func (*LoadMetaInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{21}
return fileDescriptor_aab7cc9a69ed26e8, []int{19}
}
func (m *LoadMetaInfo) XXX_Unmarshal(b []byte) error {
@ -1443,7 +1341,7 @@ func (m *WatchDmChannelsRequest) Reset() { *m = WatchDmChannelsRequest{}
func (m *WatchDmChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*WatchDmChannelsRequest) ProtoMessage() {}
func (*WatchDmChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{22}
return fileDescriptor_aab7cc9a69ed26e8, []int{20}
}
func (m *WatchDmChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -1535,7 +1433,7 @@ func (m *WatchDeltaChannelsRequest) Reset() { *m = WatchDeltaChannelsReq
func (m *WatchDeltaChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*WatchDeltaChannelsRequest) ProtoMessage() {}
func (*WatchDeltaChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{23}
return fileDescriptor_aab7cc9a69ed26e8, []int{21}
}
func (m *WatchDeltaChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -1613,7 +1511,7 @@ func (m *SegmentLoadInfo) Reset() { *m = SegmentLoadInfo{} }
func (m *SegmentLoadInfo) String() string { return proto.CompactTextString(m) }
func (*SegmentLoadInfo) ProtoMessage() {}
func (*SegmentLoadInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{24}
return fileDescriptor_aab7cc9a69ed26e8, []int{22}
}
func (m *SegmentLoadInfo) XXX_Unmarshal(b []byte) error {
@ -1736,7 +1634,7 @@ func (m *FieldIndexInfo) Reset() { *m = FieldIndexInfo{} }
func (m *FieldIndexInfo) String() string { return proto.CompactTextString(m) }
func (*FieldIndexInfo) ProtoMessage() {}
func (*FieldIndexInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{25}
return fileDescriptor_aab7cc9a69ed26e8, []int{23}
}
func (m *FieldIndexInfo) XXX_Unmarshal(b []byte) error {
@ -1830,7 +1728,7 @@ func (m *LoadSegmentsRequest) Reset() { *m = LoadSegmentsRequest{} }
func (m *LoadSegmentsRequest) String() string { return proto.CompactTextString(m) }
func (*LoadSegmentsRequest) ProtoMessage() {}
func (*LoadSegmentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{26}
return fileDescriptor_aab7cc9a69ed26e8, []int{24}
}
func (m *LoadSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -1917,7 +1815,7 @@ func (m *ReleaseSegmentsRequest) Reset() { *m = ReleaseSegmentsRequest{}
func (m *ReleaseSegmentsRequest) String() string { return proto.CompactTextString(m) }
func (*ReleaseSegmentsRequest) ProtoMessage() {}
func (*ReleaseSegmentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{27}
return fileDescriptor_aab7cc9a69ed26e8, []int{25}
}
func (m *ReleaseSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -1993,7 +1891,7 @@ func (m *SearchRequest) Reset() { *m = SearchRequest{} }
func (m *SearchRequest) String() string { return proto.CompactTextString(m) }
func (*SearchRequest) ProtoMessage() {}
func (*SearchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{28}
return fileDescriptor_aab7cc9a69ed26e8, []int{26}
}
func (m *SearchRequest) XXX_Unmarshal(b []byte) error {
@ -2048,7 +1946,7 @@ func (m *QueryRequest) Reset() { *m = QueryRequest{} }
func (m *QueryRequest) String() string { return proto.CompactTextString(m) }
func (*QueryRequest) ProtoMessage() {}
func (*QueryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{29}
return fileDescriptor_aab7cc9a69ed26e8, []int{27}
}
func (m *QueryRequest) XXX_Unmarshal(b []byte) error {
@ -2103,7 +2001,7 @@ func (m *HandoffSegmentsRequest) Reset() { *m = HandoffSegmentsRequest{}
func (m *HandoffSegmentsRequest) String() string { return proto.CompactTextString(m) }
func (*HandoffSegmentsRequest) ProtoMessage() {}
func (*HandoffSegmentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{30}
return fileDescriptor_aab7cc9a69ed26e8, []int{28}
}
func (m *HandoffSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -2153,7 +2051,7 @@ func (m *LoadBalanceRequest) Reset() { *m = LoadBalanceRequest{} }
func (m *LoadBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*LoadBalanceRequest) ProtoMessage() {}
func (*LoadBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{31}
return fileDescriptor_aab7cc9a69ed26e8, []int{29}
}
func (m *LoadBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -2222,7 +2120,7 @@ func (m *DmChannelWatchInfo) Reset() { *m = DmChannelWatchInfo{} }
func (m *DmChannelWatchInfo) String() string { return proto.CompactTextString(m) }
func (*DmChannelWatchInfo) ProtoMessage() {}
func (*DmChannelWatchInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{32}
return fileDescriptor_aab7cc9a69ed26e8, []int{30}
}
func (m *DmChannelWatchInfo) XXX_Unmarshal(b []byte) error {
@ -2279,7 +2177,7 @@ func (m *QueryChannelInfo) Reset() { *m = QueryChannelInfo{} }
func (m *QueryChannelInfo) String() string { return proto.CompactTextString(m) }
func (*QueryChannelInfo) ProtoMessage() {}
func (*QueryChannelInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{33}
return fileDescriptor_aab7cc9a69ed26e8, []int{31}
}
func (m *QueryChannelInfo) XXX_Unmarshal(b []byte) error {
@ -2348,7 +2246,7 @@ func (m *PartitionStates) Reset() { *m = PartitionStates{} }
func (m *PartitionStates) String() string { return proto.CompactTextString(m) }
func (*PartitionStates) ProtoMessage() {}
func (*PartitionStates) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{34}
return fileDescriptor_aab7cc9a69ed26e8, []int{32}
}
func (m *PartitionStates) XXX_Unmarshal(b []byte) error {
@ -2415,7 +2313,7 @@ func (m *SegmentInfo) Reset() { *m = SegmentInfo{} }
func (m *SegmentInfo) String() string { return proto.CompactTextString(m) }
func (*SegmentInfo) ProtoMessage() {}
func (*SegmentInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{35}
return fileDescriptor_aab7cc9a69ed26e8, []int{33}
}
func (m *SegmentInfo) XXX_Unmarshal(b []byte) error {
@ -2560,7 +2458,7 @@ func (m *CollectionInfo) Reset() { *m = CollectionInfo{} }
func (m *CollectionInfo) String() string { return proto.CompactTextString(m) }
func (*CollectionInfo) ProtoMessage() {}
func (*CollectionInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{36}
return fileDescriptor_aab7cc9a69ed26e8, []int{34}
}
func (m *CollectionInfo) XXX_Unmarshal(b []byte) error {
@ -2644,142 +2542,6 @@ func (m *CollectionInfo) GetReplicaNumber() int32 {
return 0
}
type ReplicaInfo struct {
ReplicaID int64 `protobuf:"varint,1,opt,name=replicaID,proto3" json:"replicaID,omitempty"`
CollectionID int64 `protobuf:"varint,2,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
PartitionIds []int64 `protobuf:"varint,3,rep,packed,name=partition_ids,json=partitionIds,proto3" json:"partition_ids,omitempty"`
ShardReplicas []*ShardReplica `protobuf:"bytes,4,rep,name=shard_replicas,json=shardReplicas,proto3" json:"shard_replicas,omitempty"`
NodeIds []int64 `protobuf:"varint,5,rep,packed,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReplicaInfo) Reset() { *m = ReplicaInfo{} }
func (m *ReplicaInfo) String() string { return proto.CompactTextString(m) }
func (*ReplicaInfo) ProtoMessage() {}
func (*ReplicaInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{37}
}
func (m *ReplicaInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReplicaInfo.Unmarshal(m, b)
}
func (m *ReplicaInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReplicaInfo.Marshal(b, m, deterministic)
}
func (m *ReplicaInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaInfo.Merge(m, src)
}
func (m *ReplicaInfo) XXX_Size() int {
return xxx_messageInfo_ReplicaInfo.Size(m)
}
func (m *ReplicaInfo) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaInfo.DiscardUnknown(m)
}
var xxx_messageInfo_ReplicaInfo proto.InternalMessageInfo
func (m *ReplicaInfo) GetReplicaID() int64 {
if m != nil {
return m.ReplicaID
}
return 0
}
func (m *ReplicaInfo) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *ReplicaInfo) GetPartitionIds() []int64 {
if m != nil {
return m.PartitionIds
}
return nil
}
func (m *ReplicaInfo) GetShardReplicas() []*ShardReplica {
if m != nil {
return m.ShardReplicas
}
return nil
}
func (m *ReplicaInfo) GetNodeIds() []int64 {
if m != nil {
return m.NodeIds
}
return nil
}
type ShardReplica struct {
LeaderID int64 `protobuf:"varint,1,opt,name=leaderID,proto3" json:"leaderID,omitempty"`
LeaderAddr string `protobuf:"bytes,2,opt,name=leader_addr,json=leaderAddr,proto3" json:"leader_addr,omitempty"`
DmChannelName string `protobuf:"bytes,3,opt,name=dm_channel_name,json=dmChannelName,proto3" json:"dm_channel_name,omitempty"`
// optional, DO NOT save it in meta, set it only for GetReplicas()
// if with_shard_nodes is true
NodeIds []int64 `protobuf:"varint,4,rep,packed,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ShardReplica) Reset() { *m = ShardReplica{} }
func (m *ShardReplica) String() string { return proto.CompactTextString(m) }
func (*ShardReplica) ProtoMessage() {}
func (*ShardReplica) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{38}
}
func (m *ShardReplica) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShardReplica.Unmarshal(m, b)
}
func (m *ShardReplica) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ShardReplica.Marshal(b, m, deterministic)
}
func (m *ShardReplica) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardReplica.Merge(m, src)
}
func (m *ShardReplica) XXX_Size() int {
return xxx_messageInfo_ShardReplica.Size(m)
}
func (m *ShardReplica) XXX_DiscardUnknown() {
xxx_messageInfo_ShardReplica.DiscardUnknown(m)
}
var xxx_messageInfo_ShardReplica proto.InternalMessageInfo
func (m *ShardReplica) GetLeaderID() int64 {
if m != nil {
return m.LeaderID
}
return 0
}
func (m *ShardReplica) GetLeaderAddr() string {
if m != nil {
return m.LeaderAddr
}
return ""
}
func (m *ShardReplica) GetDmChannelName() string {
if m != nil {
return m.DmChannelName
}
return ""
}
func (m *ShardReplica) GetNodeIds() []int64 {
if m != nil {
return m.NodeIds
}
return nil
}
type UnsubscribeChannels struct {
CollectionID int64 `protobuf:"varint,1,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
Channels []string `protobuf:"bytes,2,rep,name=channels,proto3" json:"channels,omitempty"`
@ -2792,7 +2554,7 @@ func (m *UnsubscribeChannels) Reset() { *m = UnsubscribeChannels{} }
func (m *UnsubscribeChannels) String() string { return proto.CompactTextString(m) }
func (*UnsubscribeChannels) ProtoMessage() {}
func (*UnsubscribeChannels) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{39}
return fileDescriptor_aab7cc9a69ed26e8, []int{35}
}
func (m *UnsubscribeChannels) XXX_Unmarshal(b []byte) error {
@ -2839,7 +2601,7 @@ func (m *UnsubscribeChannelInfo) Reset() { *m = UnsubscribeChannelInfo{}
func (m *UnsubscribeChannelInfo) String() string { return proto.CompactTextString(m) }
func (*UnsubscribeChannelInfo) ProtoMessage() {}
func (*UnsubscribeChannelInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{40}
return fileDescriptor_aab7cc9a69ed26e8, []int{36}
}
func (m *UnsubscribeChannelInfo) XXX_Unmarshal(b []byte) error {
@ -2889,7 +2651,7 @@ func (m *SegmentChangeInfo) Reset() { *m = SegmentChangeInfo{} }
func (m *SegmentChangeInfo) String() string { return proto.CompactTextString(m) }
func (*SegmentChangeInfo) ProtoMessage() {}
func (*SegmentChangeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{41}
return fileDescriptor_aab7cc9a69ed26e8, []int{37}
}
func (m *SegmentChangeInfo) XXX_Unmarshal(b []byte) error {
@ -2950,7 +2712,7 @@ func (m *SealedSegmentsChangeInfo) Reset() { *m = SealedSegmentsChangeIn
func (m *SealedSegmentsChangeInfo) String() string { return proto.CompactTextString(m) }
func (*SealedSegmentsChangeInfo) ProtoMessage() {}
func (*SealedSegmentsChangeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{42}
return fileDescriptor_aab7cc9a69ed26e8, []int{38}
}
func (m *SealedSegmentsChangeInfo) XXX_Unmarshal(b []byte) error {
@ -3003,8 +2765,6 @@ func init() {
proto.RegisterType((*GetPartitionStatesResponse)(nil), "milvus.proto.query.GetPartitionStatesResponse")
proto.RegisterType((*GetSegmentInfoRequest)(nil), "milvus.proto.query.GetSegmentInfoRequest")
proto.RegisterType((*GetSegmentInfoResponse)(nil), "milvus.proto.query.GetSegmentInfoResponse")
proto.RegisterType((*GetReplicasRequest)(nil), "milvus.proto.query.GetReplicasRequest")
proto.RegisterType((*GetReplicasResponse)(nil), "milvus.proto.query.GetReplicasResponse")
proto.RegisterType((*GetShardLeadersRequest)(nil), "milvus.proto.query.GetShardLeadersRequest")
proto.RegisterType((*GetShardLeadersResponse)(nil), "milvus.proto.query.GetShardLeadersResponse")
proto.RegisterType((*ShardLeadersList)(nil), "milvus.proto.query.ShardLeadersList")
@ -3026,8 +2786,6 @@ func init() {
proto.RegisterType((*PartitionStates)(nil), "milvus.proto.query.PartitionStates")
proto.RegisterType((*SegmentInfo)(nil), "milvus.proto.query.SegmentInfo")
proto.RegisterType((*CollectionInfo)(nil), "milvus.proto.query.CollectionInfo")
proto.RegisterType((*ReplicaInfo)(nil), "milvus.proto.query.ReplicaInfo")
proto.RegisterType((*ShardReplica)(nil), "milvus.proto.query.ShardReplica")
proto.RegisterType((*UnsubscribeChannels)(nil), "milvus.proto.query.UnsubscribeChannels")
proto.RegisterType((*UnsubscribeChannelInfo)(nil), "milvus.proto.query.UnsubscribeChannelInfo")
proto.RegisterType((*SegmentChangeInfo)(nil), "milvus.proto.query.SegmentChangeInfo")
@ -3037,187 +2795,177 @@ func init() {
func init() { proto.RegisterFile("query_coord.proto", fileDescriptor_aab7cc9a69ed26e8) }
var fileDescriptor_aab7cc9a69ed26e8 = []byte{
// 2868 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x1a, 0x4b, 0x6f, 0x24, 0x47,
0xd9, 0x3d, 0x2f, 0xcf, 0x7c, 0xf3, 0xdc, 0xf2, 0xae, 0x33, 0x1e, 0xf2, 0x70, 0x7a, 0xb3, 0x0f,
0x36, 0xc4, 0xbb, 0x38, 0x80, 0x12, 0x05, 0x0e, 0x6b, 0x9b, 0x75, 0x4c, 0x76, 0x1d, 0xa7, 0xed,
0x0d, 0xb0, 0x8a, 0xd4, 0xe9, 0x99, 0x2e, 0x8f, 0x5b, 0xe9, 0xc7, 0x6c, 0x57, 0x4f, 0xbc, 0x5e,
0xae, 0x48, 0x24, 0x3c, 0x85, 0x04, 0xe2, 0x82, 0x38, 0x81, 0x80, 0x43, 0xc4, 0x99, 0x1b, 0x3f,
0x01, 0x89, 0x0b, 0x27, 0xc4, 0x0d, 0xfe, 0x00, 0x47, 0x04, 0xaa, 0x47, 0xf7, 0xf4, 0xa3, 0xda,
0x33, 0xb6, 0xe3, 0xec, 0x0a, 0x71, 0xeb, 0xfa, 0xba, 0xea, 0xfb, 0xbe, 0xfa, 0xbe, 0xaf, 0xbe,
0x57, 0x15, 0x5c, 0x78, 0x38, 0xc6, 0xfe, 0x91, 0x3e, 0xf0, 0x3c, 0xdf, 0x5c, 0x19, 0xf9, 0x5e,
0xe0, 0x21, 0xe4, 0x58, 0xf6, 0x87, 0x63, 0xc2, 0x47, 0x2b, 0xec, 0x7f, 0xaf, 0x31, 0xf0, 0x1c,
0xc7, 0x73, 0x39, 0xac, 0xd7, 0x88, 0xcf, 0xe8, 0xb5, 0x2c, 0x37, 0xc0, 0xbe, 0x6b, 0xd8, 0xe1,
0x5f, 0x32, 0x38, 0xc0, 0x8e, 0x21, 0x46, 0x1d, 0xd3, 0x08, 0x8c, 0x38, 0x7e, 0xf5, 0xbb, 0x0a,
0x2c, 0xee, 0x1e, 0x78, 0x87, 0xeb, 0x9e, 0x6d, 0xe3, 0x41, 0x60, 0x79, 0x2e, 0xd1, 0xf0, 0xc3,
0x31, 0x26, 0x01, 0xba, 0x05, 0xa5, 0xbe, 0x41, 0x70, 0x57, 0x59, 0x56, 0xae, 0xd7, 0x57, 0x9f,
0x5d, 0x49, 0x70, 0x22, 0x58, 0xb8, 0x47, 0x86, 0x6b, 0x06, 0xc1, 0x1a, 0x9b, 0x89, 0x10, 0x94,
0xcc, 0xfe, 0xd6, 0x46, 0xb7, 0xb0, 0xac, 0x5c, 0x2f, 0x6a, 0xec, 0x1b, 0xbd, 0x04, 0xcd, 0x41,
0x84, 0x7b, 0x6b, 0x83, 0x74, 0x8b, 0xcb, 0xc5, 0xeb, 0x45, 0x2d, 0x09, 0x54, 0x7f, 0xab, 0xc0,
0x33, 0x19, 0x36, 0xc8, 0xc8, 0x73, 0x09, 0x46, 0xaf, 0x42, 0x85, 0x04, 0x46, 0x30, 0x26, 0x82,
0x93, 0xcf, 0x49, 0x39, 0xd9, 0x65, 0x53, 0x34, 0x31, 0x35, 0x4b, 0xb6, 0x20, 0x21, 0x8b, 0xbe,
0x08, 0x17, 0x2d, 0xf7, 0x1e, 0x76, 0x3c, 0xff, 0x48, 0x1f, 0x61, 0x7f, 0x80, 0xdd, 0xc0, 0x18,
0xe2, 0x90, 0xc7, 0x85, 0xf0, 0xdf, 0xce, 0xe4, 0x97, 0xfa, 0x1b, 0x05, 0x2e, 0x51, 0x4e, 0x77,
0x0c, 0x3f, 0xb0, 0xce, 0x41, 0x5e, 0x2a, 0x34, 0xe2, 0x3c, 0x76, 0x8b, 0xec, 0x5f, 0x02, 0x46,
0xe7, 0x8c, 0x42, 0xf2, 0x74, 0x6f, 0x25, 0xc6, 0x6e, 0x02, 0xa6, 0xfe, 0x5a, 0x28, 0x36, 0xce,
0xe7, 0x59, 0x04, 0x9a, 0xa6, 0x59, 0xc8, 0xd2, 0x3c, 0x8d, 0x38, 0xff, 0xa1, 0xc0, 0xa5, 0xbb,
0x9e, 0x61, 0x4e, 0x14, 0xff, 0xd9, 0x8b, 0xf3, 0x6b, 0x50, 0xe1, 0xa7, 0xa4, 0x5b, 0x62, 0xb4,
0xae, 0x24, 0x69, 0x89, 0x13, 0x34, 0xe1, 0x70, 0x97, 0x01, 0x34, 0xb1, 0x08, 0x5d, 0x81, 0x96,
0x8f, 0x47, 0xb6, 0x35, 0x30, 0x74, 0x77, 0xec, 0xf4, 0xb1, 0xdf, 0x2d, 0x2f, 0x2b, 0xd7, 0xcb,
0x5a, 0x53, 0x40, 0xb7, 0x19, 0x50, 0xfd, 0xa5, 0x02, 0x5d, 0x0d, 0xdb, 0xd8, 0x20, 0xf8, 0x49,
0x6e, 0x76, 0x11, 0x2a, 0xae, 0x67, 0xe2, 0xad, 0x0d, 0xb6, 0xd9, 0xa2, 0x26, 0x46, 0xea, 0x0f,
0x0a, 0x5c, 0x11, 0x4f, 0xb9, 0x5d, 0xc7, 0x94, 0x55, 0xfe, 0x74, 0x94, 0x55, 0x91, 0x29, 0xeb,
0x4f, 0x13, 0x65, 0x3d, 0xed, 0x02, 0x99, 0x28, 0xb4, 0x9c, 0x50, 0xe8, 0xb7, 0x61, 0x69, 0xdd,
0xc7, 0x46, 0x80, 0xdf, 0xa1, 0x41, 0x63, 0xfd, 0xc0, 0x70, 0x5d, 0x6c, 0x87, 0x5b, 0x48, 0x13,
0x57, 0x24, 0xc4, 0xbb, 0x30, 0x3f, 0xf2, 0xbd, 0x47, 0x47, 0x11, 0xdf, 0xe1, 0x50, 0xfd, 0x9d,
0x02, 0x3d, 0x19, 0xee, 0xb3, 0xf8, 0x97, 0xcb, 0xd0, 0x14, 0xd1, 0x8f, 0x63, 0x63, 0x34, 0x6b,
0x5a, 0xe3, 0x61, 0x8c, 0x02, 0xba, 0x05, 0x17, 0xf9, 0x24, 0x1f, 0x93, 0xb1, 0x1d, 0x44, 0x73,
0x8b, 0x6c, 0x2e, 0x62, 0xff, 0x34, 0xf6, 0x4b, 0xac, 0x50, 0x7f, 0xaf, 0xc0, 0xd2, 0x26, 0x0e,
0x22, 0x25, 0x52, 0xaa, 0xf8, 0x29, 0x75, 0xd9, 0x9f, 0x28, 0xd0, 0x93, 0xf1, 0x7a, 0x16, 0xb1,
0x3e, 0x80, 0xc5, 0x88, 0x86, 0x6e, 0x62, 0x32, 0xf0, 0xad, 0x11, 0x33, 0x66, 0xe6, 0xc0, 0xeb,
0xab, 0x97, 0x57, 0xb2, 0x09, 0xc6, 0x4a, 0x9a, 0x83, 0x4b, 0x11, 0x8a, 0x8d, 0x18, 0x06, 0xf5,
0x47, 0x0a, 0x5c, 0xda, 0xc4, 0xc1, 0x2e, 0x1e, 0x3a, 0xd8, 0x0d, 0xb6, 0xdc, 0x7d, 0xef, 0xf4,
0x72, 0x7d, 0x1e, 0x80, 0x08, 0x3c, 0x51, 0x70, 0x89, 0x41, 0x66, 0x91, 0x31, 0xcb, 0x65, 0xd2,
0xfc, 0x9c, 0x45, 0x76, 0x5f, 0x86, 0xb2, 0xe5, 0xee, 0x7b, 0xa1, 0xa8, 0x5e, 0x90, 0x89, 0x2a,
0x4e, 0x8c, 0xcf, 0x56, 0x7f, 0xa6, 0x00, 0xda, 0xc4, 0x81, 0xc6, 0x1d, 0xca, 0x19, 0x6c, 0x2d,
0xbd, 0xe7, 0x82, 0xc4, 0xae, 0xae, 0x43, 0xe7, 0xd0, 0x0a, 0x0e, 0x74, 0x72, 0x60, 0xf8, 0xa6,
0x4e, 0x8f, 0x3e, 0x61, 0xb2, 0xa9, 0x6a, 0x2d, 0x0a, 0xdf, 0xa5, 0xe0, 0x6d, 0x0a, 0x55, 0xbf,
0xa7, 0xc0, 0x42, 0x82, 0xad, 0xb3, 0x88, 0xe6, 0x0d, 0xa8, 0x0a, 0x87, 0x79, 0xac, 0x74, 0x04,
0x31, 0x26, 0x9d, 0x68, 0x81, 0xea, 0x72, 0x35, 0x51, 0xd6, 0xee, 0x62, 0xc3, 0xc4, 0xfe, 0xf9,
0xca, 0x48, 0xfd, 0xa1, 0x02, 0xcf, 0x64, 0x08, 0x9e, 0x65, 0xf7, 0x5f, 0x85, 0x0a, 0x93, 0x77,
0xb8, 0xf7, 0x97, 0xa4, 0x96, 0x11, 0x23, 0x77, 0xd7, 0x22, 0x81, 0x26, 0xd6, 0xa8, 0x1e, 0x74,
0xd2, 0xff, 0xd0, 0x8b, 0xd0, 0x10, 0xbe, 0x4c, 0x77, 0x0d, 0x87, 0x0b, 0xa0, 0xa6, 0xd5, 0x05,
0x6c, 0xdb, 0x70, 0x30, 0x5a, 0x82, 0x2a, 0x55, 0xaf, 0x6e, 0x99, 0xe1, 0xf9, 0x98, 0x67, 0x9e,
0xde, 0x24, 0xe8, 0x39, 0x00, 0xf6, 0xcb, 0x30, 0x4d, 0x9f, 0x67, 0x5b, 0x35, 0xad, 0x46, 0x21,
0xb7, 0x29, 0x40, 0xfd, 0x77, 0x01, 0x16, 0x6f, 0x9b, 0xa6, 0x2c, 0x0e, 0x9c, 0x5c, 0xe0, 0x93,
0x70, 0x53, 0x88, 0x87, 0x9b, 0x99, 0x9c, 0x60, 0xc6, 0xc7, 0x97, 0x4e, 0xe0, 0xe3, 0xcb, 0x79,
0x3e, 0x1e, 0x6d, 0x42, 0x93, 0x60, 0xfc, 0x81, 0x3e, 0xf2, 0x08, 0x73, 0x52, 0x2c, 0xa4, 0xd7,
0x57, 0xd5, 0xe4, 0x6e, 0xa2, 0xc2, 0xe8, 0x1e, 0x19, 0xee, 0x88, 0x99, 0x5a, 0x83, 0x2e, 0x0c,
0x47, 0xe8, 0x3e, 0x2c, 0x0e, 0x6d, 0xaf, 0x6f, 0xd8, 0x3a, 0xc1, 0x86, 0x8d, 0x4d, 0x5d, 0x38,
0x20, 0xd2, 0x9d, 0x9f, 0xcd, 0x03, 0x5c, 0xe4, 0xcb, 0x77, 0xd9, 0x6a, 0xf1, 0x83, 0xa8, 0x7f,
0x57, 0x60, 0x49, 0xc3, 0x8e, 0xf7, 0x21, 0xfe, 0x5f, 0x55, 0x81, 0xfa, 0x53, 0x05, 0x1a, 0x34,
0x7b, 0xbc, 0x87, 0x03, 0x76, 0xda, 0xd1, 0xeb, 0x50, 0xb3, 0x3d, 0xc3, 0xd4, 0x83, 0xa3, 0x11,
0xdf, 0x5a, 0x2b, 0xbd, 0x35, 0x2e, 0x3d, 0xba, 0x68, 0xef, 0x68, 0x84, 0xb5, 0xaa, 0x2d, 0xbe,
0x66, 0x72, 0x7b, 0xe9, 0x70, 0x5a, 0x94, 0x55, 0x40, 0x45, 0x58, 0xfc, 0xa6, 0x11, 0x0c, 0x0e,
0x36, 0x1c, 0xc1, 0x26, 0x79, 0x32, 0x32, 0x9f, 0x25, 0x8b, 0x8b, 0x62, 0x4d, 0x59, 0x66, 0x69,
0xb4, 0x6c, 0x5f, 0x79, 0x57, 0xa8, 0x21, 0x16, 0x6b, 0x62, 0xd9, 0x70, 0xe5, 0x34, 0xd9, 0xf0,
0x3a, 0x34, 0xf1, 0xa3, 0x81, 0x3d, 0xa6, 0x6e, 0x85, 0x51, 0xe7, 0x76, 0xfe, 0xbc, 0x84, 0x7a,
0xdc, 0xcc, 0x1b, 0x62, 0xd1, 0x96, 0xe0, 0x81, 0xab, 0xda, 0xc1, 0x81, 0xd1, 0xad, 0x32, 0x36,
0x96, 0xf3, 0x54, 0x1d, 0xda, 0x07, 0x57, 0x37, 0x1d, 0xa9, 0xff, 0x51, 0x60, 0x89, 0xab, 0x09,
0xdb, 0x81, 0xf1, 0x64, 0x35, 0x15, 0x69, 0xa1, 0x74, 0x42, 0x2d, 0xc4, 0x24, 0x50, 0x3b, 0xb1,
0x04, 0x7e, 0x51, 0x82, 0xb6, 0x10, 0x2f, 0x9d, 0xc1, 0xce, 0xcf, 0xb3, 0x50, 0x8b, 0xb2, 0x1f,
0x91, 0x9d, 0x4f, 0x00, 0x68, 0x19, 0xea, 0x31, 0xeb, 0x11, 0x1b, 0x8d, 0x83, 0x66, 0xda, 0x6d,
0x98, 0xcb, 0x96, 0x62, 0xb9, 0xec, 0x73, 0x00, 0xfb, 0xf6, 0x98, 0x1c, 0xe8, 0x81, 0xe5, 0x60,
0x51, 0x51, 0xd4, 0x18, 0x64, 0xcf, 0x72, 0x30, 0xba, 0x0d, 0x8d, 0xbe, 0xe5, 0xda, 0xde, 0x50,
0x1f, 0x19, 0xc1, 0x01, 0xe9, 0x56, 0x72, 0xed, 0xe5, 0x8e, 0x85, 0x6d, 0x73, 0x8d, 0xcd, 0xd5,
0xea, 0x7c, 0xcd, 0x0e, 0x5d, 0x82, 0x9e, 0x87, 0xba, 0x3b, 0x76, 0x74, 0x6f, 0x5f, 0xf7, 0xbd,
0x43, 0x6a, 0x71, 0x8c, 0x84, 0x3b, 0x76, 0xde, 0xde, 0xd7, 0xbc, 0x43, 0x1a, 0x5c, 0x6b, 0x34,
0xcc, 0x12, 0xdb, 0x1b, 0x92, 0x6e, 0x75, 0x26, 0xfc, 0x93, 0x05, 0x74, 0xb5, 0x49, 0xed, 0x88,
0xad, 0xae, 0xcd, 0xb6, 0x3a, 0x5a, 0x80, 0xae, 0x42, 0x6b, 0xe0, 0x39, 0x23, 0x83, 0x49, 0xe8,
0x8e, 0xef, 0x39, 0x5d, 0x60, 0x67, 0x35, 0x05, 0x45, 0xeb, 0x50, 0xb7, 0x5c, 0x13, 0x3f, 0x12,
0xa7, 0xa6, 0xce, 0xe8, 0xa8, 0x32, 0x95, 0x33, 0x42, 0x5b, 0x74, 0x2e, 0x53, 0x3a, 0x58, 0xe1,
0x27, 0xa1, 0x31, 0x5f, 0x68, 0x54, 0x27, 0xd6, 0x63, 0xdc, 0x6d, 0x70, 0x2d, 0x0a, 0xd8, 0xae,
0xf5, 0x18, 0xab, 0x7f, 0x28, 0x40, 0x2b, 0x89, 0x81, 0x56, 0x65, 0xfb, 0x0c, 0x12, 0x9a, 0x45,
0x38, 0xa4, 0xf8, 0xb0, 0x6b, 0xf4, 0x6d, 0x7a, 0x96, 0x4d, 0xfc, 0x88, 0x59, 0x45, 0x55, 0xab,
0x73, 0x18, 0x43, 0x40, 0xb5, 0xcb, 0xf9, 0x66, 0x49, 0x06, 0xaf, 0x9a, 0x6a, 0x0c, 0xc2, 0x52,
0x8c, 0x2e, 0xcc, 0x73, 0xfe, 0x42, 0x9b, 0x08, 0x87, 0xf4, 0x4f, 0x7f, 0x6c, 0x31, 0xaa, 0xdc,
0x26, 0xc2, 0x21, 0xda, 0x80, 0x06, 0x47, 0x39, 0x32, 0x7c, 0xc3, 0x09, 0x2d, 0xe2, 0x45, 0xe9,
0x41, 0x7d, 0x0b, 0x1f, 0xbd, 0x6b, 0xd8, 0x63, 0xbc, 0x63, 0x58, 0xbe, 0xc6, 0x25, 0xb8, 0xc3,
0x56, 0xd1, 0x34, 0x96, 0x63, 0xd9, 0xb7, 0x6c, 0x2c, 0x6c, 0x6b, 0x9e, 0xe5, 0x31, 0x2d, 0x06,
0xbf, 0x63, 0xd9, 0x98, 0x9b, 0x4f, 0xb4, 0x05, 0x26, 0xb3, 0x2a, 0xb7, 0x1e, 0x06, 0x61, 0x12,
0xfb, 0x67, 0x01, 0x16, 0xe8, 0x21, 0x0a, 0x83, 0xef, 0xe9, 0xfd, 0xc8, 0x73, 0x00, 0x26, 0x09,
0xf4, 0x84, 0x2f, 0xa9, 0x99, 0x24, 0xd8, 0xe6, 0xee, 0xe4, 0xf5, 0xd0, 0x55, 0x14, 0xf3, 0xeb,
0xa8, 0xd4, 0xa1, 0xce, 0x3a, 0xed, 0x53, 0xf5, 0x9b, 0x2e, 0x43, 0x93, 0x78, 0x63, 0x7f, 0x80,
0xf5, 0x44, 0xdd, 0xdf, 0xe0, 0xc0, 0x6d, 0xb9, 0xb7, 0xab, 0x48, 0xfb, 0x5e, 0x31, 0xb7, 0x35,
0x7f, 0x62, 0xb7, 0xf5, 0x37, 0x05, 0x16, 0x45, 0x8f, 0xe4, 0xec, 0xd2, 0xce, 0xf3, 0xda, 0xa1,
0x8f, 0x2a, 0x1e, 0x53, 0x6f, 0x97, 0x66, 0x88, 0xb9, 0x65, 0x49, 0xcc, 0x4d, 0xd6, 0x9c, 0x95,
0x74, 0xcd, 0xa9, 0x7e, 0xa4, 0x40, 0x73, 0x17, 0x1b, 0xfe, 0xe0, 0x20, 0xdc, 0xd7, 0x57, 0xa0,
0xe8, 0xe3, 0x87, 0x62, 0x5b, 0x2f, 0xe5, 0xe4, 0x97, 0x89, 0x25, 0x1a, 0x5d, 0x80, 0x5e, 0x80,
0xba, 0xe9, 0xd8, 0xa9, 0xd6, 0x06, 0x98, 0x8e, 0x1d, 0x66, 0x5c, 0x49, 0x56, 0x8a, 0x19, 0x56,
0x3e, 0x56, 0xa0, 0xf1, 0x0e, 0x4f, 0xbb, 0x38, 0x27, 0xaf, 0xc5, 0x39, 0xb9, 0x9a, 0xc3, 0x89,
0x86, 0x03, 0xdf, 0xc2, 0x1f, 0xe2, 0x4f, 0x97, 0x97, 0x9f, 0x28, 0xb0, 0xf8, 0xa6, 0xe1, 0x9a,
0xde, 0xfe, 0xfe, 0xd9, 0xf5, 0xbe, 0x1e, 0x39, 0xc1, 0xad, 0x93, 0x94, 0xda, 0x89, 0x45, 0xea,
0x47, 0x05, 0x40, 0xd4, 0x48, 0xd7, 0x0c, 0xdb, 0x70, 0x07, 0xf8, 0xf4, 0xdc, 0x5c, 0x81, 0x56,
0xe2, 0x68, 0x45, 0xd7, 0x06, 0xf1, 0xb3, 0x45, 0xd0, 0x5b, 0xd0, 0xea, 0x73, 0x52, 0xba, 0x8f,
0x0d, 0xe2, 0xb9, 0xcc, 0x3c, 0x5b, 0xf2, 0x3a, 0x70, 0xcf, 0xb7, 0x86, 0x43, 0xec, 0xaf, 0x7b,
0xae, 0xc9, 0x6b, 0x8e, 0x66, 0x3f, 0x64, 0x93, 0x2e, 0x65, 0xfa, 0x88, 0xfc, 0x4c, 0x98, 0x1c,
0x42, 0xe4, 0x68, 0x08, 0x7a, 0x19, 0x2e, 0x24, 0xcb, 0x91, 0x89, 0x3d, 0x77, 0x48, 0xbc, 0xd2,
0xa0, 0xca, 0xf9, 0x0e, 0xa0, 0x28, 0xdd, 0x65, 0x59, 0x15, 0x0b, 0x1a, 0xb3, 0xb4, 0xfb, 0x9e,
0x85, 0x9a, 0x19, 0xae, 0x14, 0x56, 0x31, 0x01, 0x50, 0xa7, 0xc3, 0x39, 0xd4, 0xe9, 0xf9, 0xc7,
0x66, 0x98, 0x50, 0x70, 0xe0, 0x5d, 0x06, 0x53, 0x3f, 0x29, 0x40, 0x27, 0x5e, 0xe2, 0xcc, 0x4c,
0xfb, 0x7c, 0x9a, 0x7f, 0xc7, 0xd4, 0x73, 0xa5, 0x33, 0xd4, 0x73, 0xd9, 0x7a, 0xb3, 0x7c, 0xba,
0x7a, 0x53, 0xfd, 0x95, 0x02, 0xed, 0x54, 0xaf, 0x2d, 0x9d, 0xda, 0x29, 0xd9, 0xd4, 0xee, 0x35,
0x28, 0xd3, 0x7c, 0x07, 0x33, 0x21, 0xb5, 0xe4, 0x69, 0x47, 0x12, 0xab, 0xc6, 0x17, 0xa0, 0x9b,
0xb0, 0x20, 0xb9, 0x9f, 0x11, 0xaa, 0x44, 0xd9, 0xeb, 0x19, 0xf5, 0x8f, 0x25, 0xa8, 0xc7, 0xe4,
0x31, 0x25, 0x2b, 0x9d, 0xa5, 0x70, 0x4b, 0x6d, 0xaf, 0x98, 0xdd, 0x5e, 0xce, 0x05, 0x05, 0x5a,
0x82, 0xaa, 0x83, 0x1d, 0x1e, 0xf6, 0x45, 0x0e, 0xe2, 0x60, 0x87, 0x06, 0x7d, 0xd6, 0x1a, 0x19,
0x3b, 0x3c, 0x9f, 0xe4, 0x81, 0x6e, 0xde, 0x1d, 0x3b, 0x2c, 0x9b, 0x4c, 0x66, 0x3c, 0xf3, 0xc7,
0x64, 0x3c, 0xd5, 0x64, 0xc6, 0x93, 0x38, 0x0e, 0xb5, 0xf4, 0x71, 0x98, 0x35, 0x51, 0xbc, 0x05,
0x0b, 0x03, 0xd6, 0x28, 0x37, 0xd7, 0x8e, 0xd6, 0xa3, 0x5f, 0xdd, 0x3a, 0x4b, 0xcd, 0x64, 0xbf,
0xd0, 0x1d, 0x6a, 0x5c, 0x22, 0x2b, 0x64, 0x5a, 0x6e, 0x30, 0x2d, 0xcb, 0x13, 0x2a, 0xa1, 0x1b,
0xae, 0xe4, 0xd0, 0x27, 0xb2, 0x51, 0x3a, 0x45, 0x6d, 0x9e, 0x2a, 0x45, 0x7d, 0x01, 0xea, 0xe1,
0x6d, 0x89, 0x65, 0x92, 0x6e, 0x8b, 0xfb, 0x26, 0x01, 0xda, 0x32, 0x49, 0xa2, 0x29, 0xd5, 0x4e,
0x34, 0xa5, 0xd4, 0x3f, 0x17, 0xa1, 0x35, 0xc9, 0x61, 0x66, 0x76, 0x05, 0xb3, 0xdc, 0x33, 0x6e,
0x43, 0x67, 0xd2, 0xd4, 0x66, 0x52, 0x3a, 0x36, 0x0d, 0x4b, 0xb7, 0xb3, 0xdb, 0xa3, 0xd4, 0x99,
0x4b, 0x34, 0x2b, 0x4a, 0x27, 0x6a, 0x56, 0x9c, 0xf1, 0x3a, 0xea, 0x55, 0xb8, 0xe4, 0xf3, 0x14,
0xca, 0xd4, 0x13, 0xdb, 0xe6, 0xd9, 0xc8, 0xc5, 0xf0, 0xe7, 0x4e, 0x7c, 0xfb, 0x39, 0xc7, 0x78,
0x3e, 0xef, 0x18, 0xa7, 0xd5, 0x58, 0xcd, 0xa8, 0x31, 0x7b, 0x2b, 0x56, 0x93, 0xdd, 0x8a, 0xfd,
0x55, 0x81, 0x7a, 0xac, 0xa5, 0x4b, 0xcf, 0x48, 0x88, 0x24, 0x72, 0x07, 0x11, 0x60, 0x26, 0x77,
0x70, 0x19, 0x9a, 0x13, 0x4d, 0x52, 0xde, 0x32, 0x8d, 0x1c, 0x93, 0xfa, 0xdb, 0x16, 0x6f, 0x6f,
0x47, 0x2d, 0x67, 0xee, 0xbe, 0x97, 0x73, 0xdb, 0xae, 0x82, 0x49, 0xad, 0x49, 0x62, 0xa3, 0xa4,
0xb5, 0x96, 0x93, 0xd6, 0xfa, 0x63, 0x05, 0x1a, 0xf1, 0xa5, 0xa8, 0x07, 0x55, 0x9b, 0x35, 0x68,
0xa3, 0xad, 0x45, 0x63, 0x2a, 0x4f, 0xfe, 0xcd, 0x3a, 0xae, 0x61, 0x0a, 0xc5, 0x41, 0xb7, 0x4d,
0xd3, 0x47, 0x57, 0xa1, 0x6d, 0x3a, 0x7a, 0xa2, 0xa3, 0xcb, 0xa3, 0x54, 0x33, 0x72, 0x21, 0x99,
0x9e, 0x6e, 0x29, 0xc9, 0xd0, 0x7d, 0x58, 0xb8, 0xef, 0x92, 0x71, 0x9f, 0x0c, 0x7c, 0xab, 0x8f,
0xc3, 0xb6, 0xc8, 0x4c, 0x47, 0xa8, 0x07, 0x55, 0x41, 0x9a, 0x1f, 0x9f, 0x9a, 0x16, 0x8d, 0xd5,
0xef, 0x2b, 0xb0, 0x98, 0xc5, 0xcb, 0xb4, 0x39, 0x71, 0xbc, 0x4a, 0xc2, 0xf1, 0x7e, 0x0b, 0x16,
0x26, 0xe8, 0xf5, 0x04, 0xe6, 0xfa, 0xea, 0x35, 0x99, 0x0e, 0x24, 0x8c, 0x6b, 0x68, 0x82, 0x23,
0x84, 0xa9, 0xff, 0x52, 0xe0, 0x82, 0x70, 0x61, 0x14, 0x36, 0x64, 0x0d, 0x25, 0x6a, 0x13, 0x9e,
0x6b, 0x5b, 0x6e, 0x54, 0xdf, 0x88, 0x3d, 0x72, 0xa0, 0xa8, 0x6f, 0xde, 0x84, 0xb6, 0x98, 0x14,
0xc5, 0xf4, 0x19, 0x53, 0xc7, 0x16, 0x5f, 0x17, 0x45, 0xf3, 0x2b, 0xd0, 0xf2, 0xf6, 0xf7, 0xe3,
0xf4, 0x78, 0x50, 0x6a, 0x0a, 0xa8, 0x20, 0xf8, 0x0d, 0xe8, 0x84, 0xd3, 0x4e, 0x9a, 0x45, 0xb4,
0xc5, 0xc2, 0xa8, 0x21, 0xfc, 0xb1, 0x02, 0xdd, 0x64, 0x4e, 0x11, 0xdb, 0xfe, 0xc9, 0xb3, 0xd6,
0x37, 0x92, 0xf7, 0x54, 0x57, 0x8e, 0xe1, 0x67, 0x42, 0x47, 0x14, 0xa3, 0x37, 0x1e, 0x43, 0x2b,
0xe9, 0x1f, 0x51, 0x03, 0xaa, 0xdb, 0x5e, 0xf0, 0xf5, 0x47, 0x16, 0x09, 0x3a, 0x73, 0xa8, 0x05,
0xb0, 0xed, 0x05, 0x3b, 0x3e, 0x26, 0xd8, 0x0d, 0x3a, 0x0a, 0x02, 0xa8, 0xbc, 0xed, 0x6e, 0x58,
0xe4, 0x83, 0x4e, 0x01, 0x2d, 0x88, 0xf4, 0xc5, 0xb0, 0xb7, 0x84, 0xd3, 0xe9, 0x14, 0xe9, 0xf2,
0x68, 0x54, 0x42, 0x1d, 0x68, 0x44, 0x53, 0x36, 0x77, 0xee, 0x77, 0xca, 0xa8, 0x06, 0x65, 0xfe,
0x59, 0xb9, 0x61, 0x42, 0x27, 0x9d, 0x1d, 0x53, 0x9c, 0xf7, 0xdd, 0xb7, 0x5c, 0xef, 0x30, 0x02,
0x75, 0xe6, 0x50, 0x1d, 0xe6, 0x45, 0xc5, 0xd1, 0x51, 0x50, 0x1b, 0xea, 0xb1, 0x64, 0xbf, 0x53,
0xa0, 0x80, 0x4d, 0x7f, 0x34, 0x10, 0x69, 0x3f, 0x67, 0x81, 0x6a, 0x6d, 0xc3, 0x3b, 0x74, 0x3b,
0xa5, 0x1b, 0x6b, 0x50, 0x0d, 0x1d, 0x37, 0x9d, 0xca, 0xb1, 0xbb, 0x74, 0xd8, 0x99, 0x43, 0x17,
0xa0, 0x99, 0x78, 0xf5, 0xd0, 0x51, 0x10, 0x82, 0x56, 0xf2, 0x45, 0x4a, 0xa7, 0xb0, 0xfa, 0xf3,
0x26, 0x00, 0xcf, 0x6c, 0x3d, 0xcf, 0x37, 0xd1, 0x88, 0xdd, 0xf0, 0xd1, 0xa8, 0xed, 0xb9, 0x61,
0xc4, 0x25, 0xe8, 0x56, 0x4e, 0x02, 0x98, 0x9d, 0x2a, 0x58, 0xed, 0xe5, 0x15, 0x6e, 0xa9, 0xe9,
0xea, 0x1c, 0x72, 0x18, 0xc5, 0x3d, 0xcb, 0xc1, 0x7b, 0xd6, 0xe0, 0x83, 0x28, 0x25, 0xce, 0xa7,
0x98, 0x9a, 0x1a, 0x52, 0x4c, 0x05, 0x48, 0x31, 0xd8, 0x0d, 0x7c, 0xcb, 0x1d, 0x86, 0x97, 0x62,
0xea, 0x1c, 0x7a, 0x08, 0x17, 0x37, 0x31, 0xa3, 0x6e, 0x91, 0xc0, 0x1a, 0x90, 0x90, 0xe0, 0x6a,
0x3e, 0xc1, 0xcc, 0xe4, 0x13, 0x92, 0xb4, 0xa1, 0x9d, 0x7a, 0x01, 0x86, 0x6e, 0xc8, 0x1d, 0xbc,
0xec, 0xb5, 0x5a, 0xef, 0xe5, 0x99, 0xe6, 0x46, 0xd4, 0x2c, 0x68, 0x25, 0x5f, 0x47, 0xa1, 0xcf,
0xe7, 0x21, 0xc8, 0x3c, 0x00, 0xe9, 0xdd, 0x98, 0x65, 0x6a, 0x44, 0xea, 0x01, 0xb7, 0xa7, 0x69,
0xa4, 0xa4, 0x8f, 0x6f, 0x7a, 0xc7, 0xdd, 0x47, 0xaa, 0x73, 0xe8, 0x7d, 0xb8, 0x90, 0x79, 0xa6,
0x82, 0xbe, 0x20, 0xbf, 0x8a, 0x95, 0xbf, 0x66, 0x99, 0x46, 0xe1, 0x41, 0xfa, 0x34, 0xe4, 0x73,
0x9f, 0x79, 0xd6, 0x34, 0x3b, 0xf7, 0x31, 0xf4, 0xc7, 0x71, 0x7f, 0x62, 0x0a, 0x63, 0x40, 0xd9,
0x87, 0x2a, 0xe8, 0x15, 0x19, 0x89, 0xdc, 0xc7, 0x32, 0xbd, 0x95, 0x59, 0xa7, 0x47, 0x2a, 0x1f,
0xb3, 0xd3, 0x9a, 0x2e, 0xed, 0xa4, 0x64, 0x73, 0x1f, 0xa7, 0xc8, 0xc9, 0xe6, 0xbf, 0x0f, 0xe1,
0x46, 0x9d, 0x7c, 0xff, 0x20, 0xd7, 0x95, 0xf4, 0xcd, 0x86, 0xdc, 0xa8, 0xe5, 0xcf, 0x29, 0xd4,
0x39, 0xb4, 0x97, 0x70, 0xc2, 0xe8, 0x6a, 0x9e, 0x4d, 0x24, 0x5b, 0x32, 0xd3, 0xd4, 0xa5, 0x03,
0x6c, 0xe2, 0xe0, 0x1e, 0x0e, 0x7c, 0x6b, 0x40, 0xd2, 0x48, 0xc5, 0x60, 0x32, 0x21, 0x44, 0x7a,
0x6d, 0xea, 0xbc, 0x88, 0xed, 0xf7, 0xa1, 0x1e, 0x7b, 0x03, 0x21, 0x67, 0x3b, 0xfb, 0x76, 0xa3,
0x77, 0x6d, 0xea, 0xbc, 0xb8, 0x1b, 0x4b, 0xbd, 0x35, 0x40, 0xb9, 0x92, 0xcd, 0xbe, 0x80, 0x90,
0xbb, 0xb1, 0x9c, 0xc7, 0x0b, 0xea, 0xdc, 0xea, 0x5f, 0xea, 0x50, 0x63, 0x36, 0x48, 0xe3, 0xdd,
0xff, 0xc3, 0xd2, 0x39, 0x84, 0xa5, 0xf7, 0xa0, 0x9d, 0x7a, 0x3b, 0x21, 0xd7, 0xa7, 0xfc, 0x81,
0xc5, 0x34, 0x83, 0xef, 0x03, 0xca, 0xbe, 0x0c, 0x90, 0x3b, 0x8a, 0xdc, 0x17, 0x04, 0xd3, 0x68,
0xbc, 0x07, 0xed, 0xd4, 0x35, 0xb8, 0x7c, 0x07, 0xf2, 0xbb, 0xf2, 0x19, 0x76, 0x90, 0xbd, 0xbd,
0x95, 0xef, 0x20, 0xf7, 0x96, 0x77, 0x1a, 0x8d, 0x77, 0xf9, 0xe3, 0x82, 0x28, 0x65, 0xbf, 0x96,
0xe7, 0x6d, 0x52, 0xfd, 0xe8, 0x27, 0x1f, 0x7f, 0xce, 0x3f, 0x3e, 0xbf, 0x07, 0xed, 0xd4, 0x25,
0x8c, 0x5c, 0xbb, 0xf2, 0x9b, 0x9a, 0x69, 0xd8, 0x3f, 0xc3, 0x88, 0xb2, 0x0b, 0x15, 0x7e, 0x73,
0x82, 0x5e, 0x94, 0x17, 0x30, 0xb1, 0x5b, 0x95, 0xde, 0xb4, 0xbb, 0x17, 0x32, 0xb6, 0x03, 0xc2,
0x90, 0x96, 0xd9, 0x89, 0x41, 0xd2, 0x5e, 0x41, 0xfc, 0x46, 0xa5, 0x37, 0xfd, 0x12, 0x25, 0x44,
0x7a, 0xde, 0x51, 0x6a, 0xed, 0x4b, 0x0f, 0x56, 0x87, 0x56, 0x70, 0x30, 0xee, 0x53, 0x7d, 0xdc,
0xe4, 0x33, 0x5f, 0xb1, 0x3c, 0xf1, 0x75, 0x33, 0x64, 0xed, 0x26, 0xc3, 0x74, 0x93, 0xed, 0x65,
0xd4, 0xef, 0x57, 0xd8, 0xf0, 0xd5, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x40, 0x04, 0x6c,
0x46, 0x32, 0x00, 0x00,
// 2707 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4b, 0x73, 0x1c, 0x49,
0x11, 0x56, 0xcf, 0x4b, 0x33, 0x39, 0x0f, 0x8d, 0x4b, 0xb6, 0x76, 0x34, 0xec, 0xae, 0xe5, 0xf6,
0x4b, 0x78, 0x59, 0xd9, 0xc8, 0x40, 0xec, 0x06, 0x70, 0xb0, 0x24, 0xac, 0x15, 0xb6, 0xb5, 0xda,
0x96, 0x6c, 0xc0, 0xe1, 0x88, 0xa1, 0x67, 0xba, 0x34, 0xea, 0x70, 0x3f, 0xc6, 0x5d, 0x3d, 0xb6,
0x65, 0xae, 0x1c, 0x76, 0x79, 0x04, 0xc1, 0x69, 0x2f, 0x04, 0x27, 0x08, 0xe0, 0xb0, 0xc1, 0x99,
0x1b, 0x3f, 0x81, 0x08, 0xee, 0x04, 0x37, 0xf8, 0x03, 0x1c, 0x09, 0x88, 0x7a, 0x74, 0x4f, 0x3f,
0xaa, 0x35, 0x2d, 0x69, 0xbd, 0x76, 0x10, 0xdc, 0xba, 0xb2, 0xaa, 0x32, 0xb3, 0x2a, 0xb3, 0x32,
0xbf, 0xaa, 0x6c, 0x38, 0xf3, 0x64, 0x8c, 0xbd, 0xc3, 0xde, 0xc0, 0x75, 0x3d, 0x63, 0x65, 0xe4,
0xb9, 0xbe, 0x8b, 0x90, 0x6d, 0x5a, 0x4f, 0xc7, 0x84, 0xb7, 0x56, 0x58, 0x7f, 0xb7, 0x31, 0x70,
0x6d, 0xdb, 0x75, 0x38, 0xad, 0xdb, 0x88, 0x8e, 0xe8, 0xb6, 0x4c, 0xc7, 0xc7, 0x9e, 0xa3, 0x5b,
0x41, 0x2f, 0x19, 0x1c, 0x60, 0x5b, 0x17, 0xad, 0xb6, 0xa1, 0xfb, 0x7a, 0x94, 0xbf, 0xfa, 0x63,
0x05, 0x16, 0x76, 0x0f, 0xdc, 0x67, 0xeb, 0xae, 0x65, 0xe1, 0x81, 0x6f, 0xba, 0x0e, 0xd1, 0xf0,
0x93, 0x31, 0x26, 0x3e, 0xba, 0x01, 0xa5, 0xbe, 0x4e, 0x70, 0x47, 0x59, 0x52, 0x96, 0xeb, 0xab,
0x6f, 0xae, 0xc4, 0x34, 0x11, 0x2a, 0xdc, 0x23, 0xc3, 0x35, 0x9d, 0x60, 0x8d, 0x8d, 0x44, 0x08,
0x4a, 0x46, 0x7f, 0x6b, 0xa3, 0x53, 0x58, 0x52, 0x96, 0x8b, 0x1a, 0xfb, 0x46, 0x97, 0xa0, 0x39,
0x08, 0x79, 0x6f, 0x6d, 0x90, 0x4e, 0x71, 0xa9, 0xb8, 0x5c, 0xd4, 0xe2, 0x44, 0xf5, 0x77, 0x0a,
0xbc, 0x91, 0x52, 0x83, 0x8c, 0x5c, 0x87, 0x60, 0x74, 0x13, 0x2a, 0xc4, 0xd7, 0xfd, 0x31, 0x11,
0x9a, 0x7c, 0x49, 0xaa, 0xc9, 0x2e, 0x1b, 0xa2, 0x89, 0xa1, 0x69, 0xb1, 0x05, 0x89, 0x58, 0xf4,
0x55, 0x38, 0x6b, 0x3a, 0xf7, 0xb0, 0xed, 0x7a, 0x87, 0xbd, 0x11, 0xf6, 0x06, 0xd8, 0xf1, 0xf5,
0x21, 0x0e, 0x74, 0x9c, 0x0f, 0xfa, 0x76, 0x26, 0x5d, 0xea, 0x6f, 0x15, 0x38, 0x47, 0x35, 0xdd,
0xd1, 0x3d, 0xdf, 0x7c, 0x09, 0xfb, 0xa5, 0x42, 0x23, 0xaa, 0x63, 0xa7, 0xc8, 0xfa, 0x62, 0x34,
0x3a, 0x66, 0x14, 0x88, 0xa7, 0x6b, 0x2b, 0x31, 0x75, 0x63, 0x34, 0xf5, 0x37, 0xc2, 0xb0, 0x51,
0x3d, 0x4f, 0xb3, 0xa1, 0x49, 0x99, 0x85, 0xb4, 0xcc, 0x93, 0x6c, 0xe7, 0x3f, 0x14, 0x38, 0x77,
0xd7, 0xd5, 0x8d, 0x89, 0xe1, 0xbf, 0xf8, 0xed, 0xfc, 0x36, 0x54, 0xf8, 0x29, 0xe9, 0x94, 0x98,
0xac, 0xcb, 0x71, 0x59, 0xe2, 0x04, 0x4d, 0x34, 0xdc, 0x65, 0x04, 0x4d, 0x4c, 0x42, 0x97, 0xa1,
0xe5, 0xe1, 0x91, 0x65, 0x0e, 0xf4, 0x9e, 0x33, 0xb6, 0xfb, 0xd8, 0xeb, 0x94, 0x97, 0x94, 0xe5,
0xb2, 0xd6, 0x14, 0xd4, 0x6d, 0x46, 0x54, 0x7f, 0xa5, 0x40, 0x47, 0xc3, 0x16, 0xd6, 0x09, 0x7e,
0x95, 0x8b, 0x5d, 0x80, 0x8a, 0xe3, 0x1a, 0x78, 0x6b, 0x83, 0x2d, 0xb6, 0xa8, 0x89, 0x96, 0xfa,
0xd3, 0x02, 0x37, 0xc4, 0x6b, 0xee, 0xd7, 0x11, 0x63, 0x95, 0x3f, 0x1f, 0x63, 0x55, 0x64, 0xc6,
0xfa, 0xf3, 0xc4, 0x58, 0xaf, 0xfb, 0x86, 0x4c, 0x0c, 0x5a, 0x8e, 0x19, 0xf4, 0x07, 0xb0, 0xb8,
0xee, 0x61, 0xdd, 0xc7, 0x1f, 0xd1, 0xa4, 0xb1, 0x7e, 0xa0, 0x3b, 0x0e, 0xb6, 0x82, 0x25, 0x24,
0x85, 0x2b, 0x12, 0xe1, 0x1d, 0x98, 0x1d, 0x79, 0xee, 0xf3, 0xc3, 0x50, 0xef, 0xa0, 0xa9, 0xfe,
0x5e, 0x81, 0xae, 0x8c, 0xf7, 0x69, 0xe2, 0xcb, 0x45, 0x68, 0x8a, 0xec, 0xc7, 0xb9, 0x31, 0x99,
0x35, 0xad, 0xf1, 0x24, 0x22, 0x01, 0xdd, 0x80, 0xb3, 0x7c, 0x90, 0x87, 0xc9, 0xd8, 0xf2, 0xc3,
0xb1, 0x45, 0x36, 0x16, 0xb1, 0x3e, 0x8d, 0x75, 0x89, 0x19, 0xea, 0x1f, 0x14, 0x58, 0xdc, 0xc4,
0x7e, 0x68, 0x44, 0x2a, 0x15, 0xbf, 0xa6, 0x21, 0xfb, 0x33, 0x05, 0xba, 0x32, 0x5d, 0x4f, 0xb3,
0xad, 0x0f, 0x61, 0x21, 0x94, 0xd1, 0x33, 0x30, 0x19, 0x78, 0xe6, 0x88, 0x39, 0x33, 0x0b, 0xe0,
0xf5, 0xd5, 0x8b, 0x2b, 0x69, 0x80, 0xb1, 0x92, 0xd4, 0xe0, 0x5c, 0xc8, 0x62, 0x23, 0xc2, 0x41,
0xfd, 0xb9, 0x02, 0xe7, 0x36, 0xb1, 0xbf, 0x8b, 0x87, 0x36, 0x76, 0xfc, 0x2d, 0x67, 0xdf, 0x3d,
0xf9, 0xbe, 0xbe, 0x0d, 0x40, 0x04, 0x9f, 0x30, 0xb9, 0x44, 0x28, 0x79, 0xf6, 0x98, 0x61, 0x99,
0xa4, 0x3e, 0xa7, 0xd9, 0xbb, 0xaf, 0x43, 0xd9, 0x74, 0xf6, 0xdd, 0x60, 0xab, 0xce, 0xcb, 0xb6,
0x2a, 0x2a, 0x8c, 0x8f, 0x56, 0x1d, 0xae, 0xc5, 0x81, 0xee, 0x19, 0x77, 0xb1, 0x6e, 0x60, 0xef,
0x14, 0xee, 0x96, 0x5c, 0x76, 0x41, 0xb2, 0xec, 0x9f, 0x29, 0xf0, 0x46, 0x4a, 0xe0, 0x69, 0xd6,
0xfd, 0x2d, 0xa8, 0x10, 0xca, 0x2c, 0x58, 0xf8, 0x25, 0xe9, 0xc2, 0x23, 0xe2, 0xee, 0x9a, 0xc4,
0xd7, 0xc4, 0x1c, 0xd5, 0x85, 0x76, 0xb2, 0x0f, 0x5d, 0x80, 0x86, 0x38, 0xaa, 0x3d, 0x47, 0xb7,
0xf9, 0x06, 0xd4, 0xb4, 0xba, 0xa0, 0x6d, 0xeb, 0x36, 0x46, 0x8b, 0x50, 0xa5, 0x81, 0xab, 0x67,
0x1a, 0x81, 0xf9, 0x67, 0x59, 0x20, 0x33, 0x08, 0x7a, 0x0b, 0x80, 0x75, 0xe9, 0x86, 0xe1, 0x71,
0x30, 0x51, 0xd3, 0x6a, 0x94, 0x72, 0x8b, 0x12, 0xd4, 0x7f, 0x17, 0x60, 0xe1, 0x96, 0x61, 0xc8,
0xc2, 0xdc, 0xf1, 0x37, 0x7c, 0x12, 0x4d, 0x0b, 0xd1, 0x68, 0x9a, 0xeb, 0x8c, 0xa7, 0x42, 0x58,
0xe9, 0x18, 0x21, 0xac, 0x9c, 0x15, 0xc2, 0xd0, 0x26, 0x34, 0x09, 0xc6, 0x8f, 0x7b, 0x23, 0x97,
0xb0, 0x33, 0xc8, 0x32, 0x56, 0x7d, 0x55, 0x8d, 0xaf, 0x26, 0xc4, 0xfd, 0xf7, 0xc8, 0x70, 0x47,
0x8c, 0xd4, 0x1a, 0x74, 0x62, 0xd0, 0x42, 0xf7, 0x61, 0x61, 0x68, 0xb9, 0x7d, 0xdd, 0xea, 0x11,
0xac, 0x5b, 0xd8, 0xe8, 0x89, 0xf3, 0x45, 0x3a, 0xb3, 0xf9, 0x1c, 0xfc, 0x2c, 0x9f, 0xbe, 0xcb,
0x66, 0x8b, 0x0e, 0xa2, 0xfe, 0x5d, 0x81, 0x45, 0x0d, 0xdb, 0xee, 0x53, 0xfc, 0xbf, 0x6a, 0x02,
0xf5, 0x97, 0x0a, 0x34, 0x28, 0x38, 0xba, 0x87, 0x7d, 0x9d, 0xee, 0x04, 0x7a, 0x1f, 0x6a, 0x96,
0xab, 0x1b, 0x3d, 0xff, 0x70, 0xc4, 0x97, 0xd6, 0x4a, 0x2e, 0x8d, 0xef, 0x1e, 0x9d, 0xb4, 0x77,
0x38, 0xc2, 0x5a, 0xd5, 0x12, 0x5f, 0x79, 0x8e, 0x74, 0x2a, 0x5b, 0x14, 0x65, 0x00, 0xbf, 0x08,
0x0b, 0xdf, 0xd3, 0xfd, 0xc1, 0xc1, 0x86, 0x2d, 0xd4, 0x24, 0xaf, 0x66, 0xcf, 0xf3, 0x80, 0x94,
0x30, 0x94, 0x96, 0x65, 0x9e, 0x46, 0x6f, 0xa5, 0x2b, 0x0f, 0x84, 0x19, 0x22, 0xa1, 0x34, 0x02,
0xf6, 0x2a, 0x27, 0x01, 0x7b, 0xeb, 0xd0, 0xc4, 0xcf, 0x07, 0xd6, 0x98, 0x86, 0x15, 0x26, 0x9d,
0xfb, 0xf9, 0xdb, 0x12, 0xe9, 0x51, 0x37, 0x6f, 0x88, 0x49, 0x5b, 0x42, 0x07, 0x6e, 0x6a, 0x1b,
0xfb, 0x7a, 0xa7, 0xca, 0xd4, 0x58, 0xca, 0x32, 0x75, 0xe0, 0x1f, 0xdc, 0xdc, 0xb4, 0xa5, 0xfe,
0x47, 0x81, 0x45, 0x6e, 0x26, 0x6c, 0xf9, 0xfa, 0xab, 0xb5, 0x54, 0x68, 0x85, 0xd2, 0x31, 0xad,
0x10, 0xd9, 0x81, 0xda, 0xb1, 0x77, 0xe0, 0xd3, 0x12, 0xcc, 0x89, 0xed, 0xa5, 0x23, 0xd8, 0xf9,
0x79, 0x13, 0x6a, 0x61, 0x72, 0x17, 0xe0, 0x73, 0x42, 0x40, 0x4b, 0x50, 0x8f, 0x78, 0x8f, 0x58,
0x68, 0x94, 0x94, 0x6b, 0xb5, 0x01, 0x54, 0x2b, 0x45, 0xa0, 0xda, 0x5b, 0x00, 0xfb, 0xd6, 0x98,
0x1c, 0xf4, 0x7c, 0xd3, 0xc6, 0x02, 0x30, 0xd7, 0x18, 0x65, 0xcf, 0xb4, 0x31, 0xba, 0x05, 0x8d,
0xbe, 0xe9, 0x58, 0xee, 0xb0, 0x37, 0xd2, 0xfd, 0x03, 0xd2, 0xa9, 0x64, 0xfa, 0xcb, 0x6d, 0x13,
0x5b, 0xc6, 0x1a, 0x1b, 0xab, 0xd5, 0xf9, 0x9c, 0x1d, 0x3a, 0x05, 0xbd, 0x0d, 0x75, 0x67, 0x6c,
0xf7, 0xdc, 0xfd, 0x9e, 0xe7, 0x3e, 0xa3, 0x1e, 0xc7, 0x44, 0x38, 0x63, 0xfb, 0xc3, 0x7d, 0xcd,
0x7d, 0x46, 0x93, 0x6b, 0x8d, 0xa6, 0x59, 0x62, 0xb9, 0x43, 0xd2, 0xa9, 0xe6, 0xe2, 0x3f, 0x99,
0x40, 0x67, 0x1b, 0xd4, 0x8f, 0xd8, 0xec, 0x5a, 0xbe, 0xd9, 0xe1, 0x04, 0x74, 0x05, 0x5a, 0x03,
0xd7, 0x1e, 0xe9, 0x6c, 0x87, 0x6e, 0x7b, 0xae, 0xdd, 0x01, 0x76, 0x56, 0x13, 0x54, 0xb4, 0x0e,
0x75, 0xd3, 0x31, 0xf0, 0x73, 0x71, 0x6a, 0xea, 0x4c, 0x8e, 0x2a, 0x33, 0x39, 0x13, 0xb4, 0x45,
0xc7, 0x32, 0xa3, 0x83, 0x19, 0x7c, 0x12, 0x9a, 0xf3, 0x85, 0x45, 0x7b, 0xc4, 0x7c, 0x81, 0x3b,
0x0d, 0x6e, 0x45, 0x41, 0xdb, 0x35, 0x5f, 0x60, 0xf5, 0x8f, 0x05, 0x68, 0xc5, 0x39, 0xd0, 0x4b,
0xc7, 0x3e, 0xa3, 0x04, 0x6e, 0x11, 0x34, 0x29, 0x3f, 0xec, 0xe8, 0x7d, 0x8b, 0x9e, 0x65, 0x03,
0x3f, 0x67, 0x5e, 0x51, 0xd5, 0xea, 0x9c, 0xc6, 0x18, 0x50, 0xeb, 0x72, 0xbd, 0x19, 0xc8, 0xe0,
0x97, 0x82, 0x1a, 0xa3, 0x30, 0x88, 0xd1, 0x81, 0x59, 0xae, 0x5f, 0xe0, 0x13, 0x41, 0x93, 0xf6,
0xf4, 0xc7, 0x26, 0x93, 0xca, 0x7d, 0x22, 0x68, 0xa2, 0x0d, 0x68, 0x70, 0x96, 0x23, 0xdd, 0xd3,
0xed, 0xc0, 0x23, 0x2e, 0x48, 0x0f, 0xea, 0x1d, 0x7c, 0xf8, 0x40, 0xb7, 0xc6, 0x78, 0x47, 0x37,
0x3d, 0x8d, 0xef, 0xe0, 0x0e, 0x9b, 0x85, 0x96, 0xa1, 0xcd, 0xb9, 0xec, 0x9b, 0x16, 0x16, 0xbe,
0x35, 0xcb, 0x70, 0x4c, 0x8b, 0xd1, 0x6f, 0x9b, 0x16, 0xe6, 0xee, 0x13, 0x2e, 0x81, 0xed, 0x59,
0x95, 0x7b, 0x0f, 0xa3, 0xb0, 0x1d, 0xfb, 0x67, 0x01, 0xe6, 0xe9, 0x21, 0x0a, 0x92, 0xef, 0xc9,
0xe3, 0xc8, 0x5b, 0x00, 0x06, 0xf1, 0x7b, 0xb1, 0x58, 0x52, 0x33, 0x88, 0xbf, 0xcd, 0xc3, 0xc9,
0xfb, 0x41, 0xa8, 0x28, 0x66, 0x5f, 0x13, 0x12, 0x87, 0x3a, 0x1d, 0xb4, 0x4f, 0xf4, 0x9c, 0x72,
0x11, 0x9a, 0xc4, 0x1d, 0x7b, 0x03, 0xdc, 0x8b, 0x5d, 0x6b, 0x1b, 0x9c, 0xb8, 0x2d, 0x8f, 0x76,
0x15, 0xe9, 0xb3, 0x4e, 0x24, 0x6c, 0xcd, 0x1e, 0x3b, 0x6c, 0xfd, 0x4d, 0x81, 0x05, 0xf1, 0x04,
0x70, 0xfa, 0xdd, 0xce, 0x8a, 0xda, 0x41, 0x8c, 0x2a, 0x1e, 0x71, 0x9d, 0x2c, 0xe5, 0xc8, 0xb9,
0x65, 0x49, 0xce, 0x8d, 0x5f, 0xa9, 0x2a, 0xc9, 0x2b, 0x95, 0xfa, 0xb1, 0x02, 0xcd, 0x5d, 0xac,
0x7b, 0x83, 0x83, 0x60, 0x5d, 0xdf, 0x80, 0xa2, 0x87, 0x9f, 0x88, 0x65, 0x5d, 0xca, 0xc0, 0x97,
0xb1, 0x29, 0x1a, 0x9d, 0x80, 0xce, 0x43, 0xdd, 0xb0, 0xad, 0xc4, 0xcd, 0x1d, 0x0c, 0xdb, 0x0a,
0x10, 0x57, 0x5c, 0x95, 0x62, 0x4a, 0x95, 0x4f, 0x14, 0x68, 0x7c, 0xc4, 0x61, 0x17, 0xd7, 0xe4,
0xbd, 0xa8, 0x26, 0x57, 0x32, 0x34, 0xd1, 0xb0, 0xef, 0x99, 0xf8, 0x29, 0xfe, 0x7c, 0x75, 0xf9,
0x85, 0x02, 0x0b, 0x1f, 0xe8, 0x8e, 0xe1, 0xee, 0xef, 0x9f, 0xde, 0xee, 0xeb, 0x61, 0x10, 0xdc,
0x3a, 0xce, 0x4d, 0x32, 0x36, 0x49, 0xfd, 0xb8, 0x00, 0x88, 0x3a, 0xe9, 0x9a, 0x6e, 0xe9, 0xce,
0x00, 0x9f, 0x5c, 0x9b, 0xcb, 0xd0, 0x8a, 0x1d, 0xad, 0xf0, 0x55, 0x3c, 0x7a, 0xb6, 0x08, 0xba,
0x03, 0xad, 0x3e, 0x17, 0xd5, 0xf3, 0xb0, 0x4e, 0x5c, 0x87, 0xb9, 0x67, 0x4b, 0x7e, 0x0f, 0xdc,
0xf3, 0xcc, 0xe1, 0x10, 0x7b, 0xeb, 0xae, 0x63, 0xf0, 0x3b, 0x47, 0xb3, 0x1f, 0xa8, 0x49, 0xa7,
0x32, 0x7b, 0x84, 0x71, 0x26, 0x00, 0x87, 0x10, 0x06, 0x1a, 0x82, 0xde, 0x81, 0x33, 0xf1, 0xeb,
0xc8, 0xc4, 0x9f, 0xdb, 0x24, 0x7a, 0xd3, 0xa0, 0xc6, 0xf9, 0x11, 0xa0, 0x10, 0xee, 0x32, 0x54,
0xc5, 0x92, 0x46, 0x9e, 0xd7, 0xac, 0x37, 0xa1, 0x66, 0x04, 0x33, 0x85, 0x57, 0x4c, 0x08, 0x34,
0xe8, 0x70, 0x0d, 0x7b, 0xf4, 0xfc, 0x63, 0x23, 0x00, 0x14, 0x9c, 0x78, 0x97, 0xd1, 0xd4, 0xcf,
0x0a, 0xd0, 0x8e, 0x5e, 0x71, 0x72, 0xcb, 0x7e, 0x39, 0x6f, 0x5b, 0x47, 0xdc, 0xe7, 0x4a, 0xa7,
0xb8, 0xcf, 0xa5, 0xef, 0x9b, 0xe5, 0x93, 0xdd, 0x37, 0xd5, 0x5f, 0x2b, 0x30, 0x97, 0x78, 0x4a,
0x4a, 0x42, 0x3b, 0x25, 0x0d, 0xed, 0xde, 0x83, 0x32, 0xc5, 0x3b, 0x98, 0x6d, 0x52, 0x4b, 0x0e,
0x3b, 0xe2, 0x5c, 0x35, 0x3e, 0x01, 0x5d, 0x87, 0x79, 0x49, 0xf9, 0x41, 0x98, 0x12, 0xa5, 0xab,
0x0f, 0xea, 0x9f, 0x4a, 0x50, 0x8f, 0xec, 0xc7, 0x14, 0x54, 0x9a, 0xe7, 0xe2, 0x96, 0x58, 0x5e,
0x31, 0xbd, 0xbc, 0x8c, 0xf7, 0x77, 0xb4, 0x08, 0x55, 0x1b, 0xdb, 0x3c, 0xed, 0x0b, 0x0c, 0x62,
0x63, 0x9b, 0x26, 0x7d, 0xf6, 0x34, 0x32, 0xb6, 0x39, 0x9e, 0xe4, 0x89, 0x6e, 0xd6, 0x19, 0xdb,
0x0c, 0x4d, 0xc6, 0x11, 0xcf, 0xec, 0x11, 0x88, 0xa7, 0x1a, 0x47, 0x3c, 0xb1, 0xe3, 0x50, 0x4b,
0x1e, 0x87, 0xbc, 0x40, 0xf1, 0x06, 0xcc, 0x0f, 0xd8, 0x3b, 0xb0, 0xb1, 0x76, 0xb8, 0x1e, 0x76,
0x75, 0xea, 0x0c, 0x9a, 0xc9, 0xba, 0xd0, 0x6d, 0xea, 0x5c, 0x02, 0x15, 0x32, 0x2b, 0x37, 0x98,
0x95, 0xe5, 0x80, 0x4a, 0xd8, 0x86, 0x1b, 0x39, 0x88, 0x89, 0xac, 0x95, 0x84, 0xa8, 0xcd, 0x13,
0x41, 0xd4, 0xf3, 0x50, 0x0f, 0x8a, 0x01, 0xa6, 0x41, 0x3a, 0x2d, 0x1e, 0x9b, 0x04, 0x69, 0xcb,
0x20, 0xb1, 0x47, 0xa9, 0xb9, 0xd8, 0xa3, 0x94, 0xfa, 0x97, 0x22, 0xb4, 0x26, 0x18, 0x26, 0x77,
0x28, 0xc8, 0x53, 0x46, 0xdb, 0x86, 0xf6, 0xe4, 0xcd, 0x96, 0xed, 0xd2, 0x91, 0x30, 0x2c, 0xf9,
0x5a, 0x3b, 0x37, 0x4a, 0x9c, 0xb9, 0xd8, 0x63, 0x45, 0xe9, 0x58, 0x8f, 0x15, 0xa7, 0xac, 0xb6,
0xdc, 0x84, 0x73, 0x1e, 0x87, 0x50, 0x46, 0x2f, 0xb6, 0x6c, 0x8e, 0x46, 0xce, 0x06, 0x9d, 0x3b,
0xd1, 0xe5, 0x67, 0x1c, 0xe3, 0xd9, 0xac, 0x63, 0x9c, 0x34, 0x63, 0x35, 0x65, 0xc6, 0x74, 0xd1,
0xa7, 0x26, 0x2b, 0xfa, 0xdc, 0x87, 0xf9, 0xfb, 0x0e, 0x19, 0xf7, 0xc9, 0xc0, 0x33, 0xfb, 0x38,
0xb8, 0xaa, 0xe7, 0x32, 0x6b, 0x17, 0xaa, 0x22, 0x5e, 0x73, 0x93, 0xd6, 0xb4, 0xb0, 0xad, 0xfe,
0x44, 0x81, 0x85, 0x34, 0x5f, 0xe6, 0x31, 0x93, 0x60, 0xa0, 0xc4, 0x82, 0xc1, 0xf7, 0x61, 0x7e,
0xc2, 0xbe, 0x17, 0xe3, 0x5c, 0x5f, 0xbd, 0x2a, 0xb3, 0x9d, 0x44, 0x71, 0x0d, 0x4d, 0x78, 0x04,
0x34, 0xf5, 0x5f, 0x0a, 0x9c, 0x11, 0xc7, 0x8a, 0xd2, 0x86, 0xec, 0x91, 0x83, 0x26, 0x28, 0xd7,
0xb1, 0x4c, 0x27, 0xc4, 0xdc, 0x62, 0x8d, 0x9c, 0x28, 0x30, 0xf7, 0x07, 0x30, 0x27, 0x06, 0x85,
0x79, 0x26, 0x27, 0x9c, 0x69, 0xf1, 0x79, 0x61, 0x86, 0xb9, 0x0c, 0x2d, 0x77, 0x7f, 0x3f, 0x2a,
0x8f, 0x07, 0xca, 0xa6, 0xa0, 0x0a, 0x81, 0xdf, 0x85, 0x76, 0x30, 0xec, 0xb8, 0x99, 0x6d, 0x4e,
0x4c, 0x0c, 0x1f, 0x29, 0x3f, 0x51, 0xa0, 0x13, 0xcf, 0x73, 0x91, 0xe5, 0x1f, 0x1f, 0x49, 0x7d,
0x33, 0x5e, 0x1a, 0xb8, 0x7c, 0x84, 0x3e, 0x13, 0x39, 0xe2, 0x82, 0x74, 0xed, 0x05, 0xb4, 0xe2,
0x67, 0x16, 0x35, 0xa0, 0xba, 0xed, 0xfa, 0xdf, 0x79, 0x6e, 0x12, 0xbf, 0x3d, 0x83, 0x5a, 0x00,
0xdb, 0xae, 0xbf, 0xe3, 0x61, 0x82, 0x1d, 0xbf, 0xad, 0x20, 0x80, 0xca, 0x87, 0xce, 0x86, 0x49,
0x1e, 0xb7, 0x0b, 0x68, 0x5e, 0xa4, 0x54, 0xdd, 0xda, 0x12, 0x07, 0xa1, 0x5d, 0xa4, 0xd3, 0xc3,
0x56, 0x09, 0xb5, 0xa1, 0x11, 0x0e, 0xd9, 0xdc, 0xb9, 0xdf, 0x2e, 0xa3, 0x1a, 0x94, 0xf9, 0x67,
0xe5, 0x9a, 0x01, 0xed, 0x24, 0x62, 0xa3, 0x3c, 0xef, 0x3b, 0x77, 0x1c, 0xf7, 0x59, 0x48, 0x6a,
0xcf, 0xa0, 0x3a, 0xcc, 0x0a, 0x14, 0xdc, 0x56, 0xd0, 0x1c, 0xd4, 0x23, 0x00, 0xb4, 0x5d, 0xa0,
0x84, 0x4d, 0x6f, 0x34, 0x10, 0x50, 0x94, 0xab, 0x40, 0xad, 0xb6, 0xe1, 0x3e, 0x73, 0xda, 0xa5,
0x6b, 0x6b, 0x50, 0x0d, 0x82, 0x09, 0x1d, 0xca, 0xb9, 0x3b, 0xb4, 0xd9, 0x9e, 0x41, 0x67, 0xa0,
0x19, 0x2b, 0x34, 0xb7, 0x15, 0x84, 0xa0, 0x15, 0xff, 0x09, 0xa0, 0x5d, 0x58, 0xfd, 0xb4, 0x09,
0xc0, 0xd1, 0x96, 0xeb, 0x7a, 0x06, 0x1a, 0x01, 0xda, 0xc4, 0x3e, 0xcd, 0x24, 0xae, 0x13, 0x64,
0x01, 0x82, 0x6e, 0x64, 0x80, 0x92, 0xf4, 0x50, 0xa1, 0x6a, 0x37, 0xeb, 0x32, 0x91, 0x18, 0xae,
0xce, 0x20, 0x9b, 0x49, 0xdc, 0x33, 0x6d, 0xbc, 0x67, 0x0e, 0x1e, 0x87, 0x30, 0x2d, 0x5b, 0x62,
0x62, 0x68, 0x20, 0x31, 0x11, 0xb4, 0x45, 0x63, 0xd7, 0xf7, 0x4c, 0x67, 0x18, 0x14, 0x6a, 0xd4,
0x19, 0xf4, 0x04, 0xce, 0x6e, 0x62, 0x26, 0xdd, 0x24, 0xbe, 0x39, 0x20, 0x81, 0xc0, 0xd5, 0x6c,
0x81, 0xa9, 0xc1, 0xc7, 0x14, 0x69, 0xc1, 0x5c, 0xe2, 0xa7, 0x1b, 0x74, 0x4d, 0x5e, 0xeb, 0x91,
0xfd, 0x20, 0xd4, 0x7d, 0x27, 0xd7, 0xd8, 0x50, 0x9a, 0x09, 0xad, 0xf8, 0x0f, 0x29, 0xe8, 0xcb,
0x59, 0x0c, 0x52, 0x35, 0xf7, 0xee, 0xb5, 0x3c, 0x43, 0x43, 0x51, 0x0f, 0xb9, 0x3f, 0x4d, 0x13,
0x25, 0xfd, 0xdf, 0xa1, 0x7b, 0x54, 0x8d, 0x4c, 0x9d, 0x41, 0x3f, 0x84, 0x33, 0xa9, 0x3f, 0x03,
0xd0, 0x57, 0x64, 0xec, 0xb3, 0x7e, 0x20, 0x98, 0x26, 0xe1, 0x61, 0xf2, 0x34, 0x64, 0x6b, 0x9f,
0xfa, 0x93, 0x24, 0xbf, 0xf6, 0x11, 0xf6, 0x47, 0x69, 0x7f, 0x6c, 0x09, 0x63, 0x40, 0xe9, 0x7f,
0x03, 0xd0, 0xbb, 0x32, 0x11, 0x99, 0xff, 0x27, 0x74, 0x57, 0xf2, 0x0e, 0x0f, 0x4d, 0x3e, 0x66,
0xa7, 0x35, 0x79, 0xdd, 0x90, 0x8a, 0xcd, 0xfc, 0x1f, 0x40, 0x2e, 0x36, 0xbb, 0x24, 0xcf, 0x9d,
0x3a, 0x5e, 0x72, 0x96, 0xdb, 0x4a, 0x5a, 0x26, 0x97, 0x3b, 0xb5, 0xbc, 0x82, 0xad, 0xce, 0xa0,
0xbd, 0x58, 0x10, 0x46, 0x57, 0xb2, 0x7c, 0x22, 0xfe, 0x4c, 0x30, 0xcd, 0x5c, 0x3d, 0x80, 0x4d,
0xec, 0xdf, 0xc3, 0xbe, 0x67, 0x0e, 0x48, 0x92, 0xa9, 0x68, 0x4c, 0x06, 0x04, 0x4c, 0xaf, 0x4e,
0x1d, 0x17, 0xaa, 0xdd, 0x87, 0xfa, 0x26, 0xf6, 0x35, 0x8e, 0xb4, 0x08, 0xca, 0x9c, 0x19, 0x8c,
0x08, 0x44, 0x2c, 0x4f, 0x1f, 0x18, 0x0d, 0x64, 0x89, 0x0a, 0x38, 0xca, 0xdc, 0xdb, 0x74, 0x5d,
0x5e, 0x1e, 0xc8, 0x32, 0x4a, 0xea, 0xea, 0xcc, 0xea, 0x5f, 0xeb, 0x50, 0x63, 0x5e, 0x48, 0x33,
0xde, 0xff, 0x13, 0xd3, 0x4b, 0x48, 0x4c, 0x8f, 0x60, 0x2e, 0x51, 0xd1, 0x97, 0xdb, 0x53, 0x5e,
0xf6, 0x9f, 0xe6, 0xf2, 0x7d, 0x40, 0xe9, 0x7a, 0xb5, 0x3c, 0x54, 0x64, 0xd6, 0xb5, 0xa7, 0xc9,
0x78, 0x04, 0x73, 0x89, 0xe2, 0xac, 0x7c, 0x05, 0xf2, 0x0a, 0x6e, 0x8e, 0x15, 0xa4, 0x6b, 0x8a,
0xf2, 0x15, 0x64, 0xd6, 0x1e, 0xa7, 0xc9, 0x78, 0xc0, 0x4b, 0xde, 0x21, 0x68, 0xbf, 0x9a, 0x15,
0x6f, 0x12, 0xaf, 0xa4, 0xaf, 0x3e, 0x03, 0xbd, 0xfc, 0x0c, 0xfd, 0x08, 0xe6, 0x12, 0xa5, 0x01,
0xb9, 0x75, 0xe5, 0xf5, 0x83, 0x69, 0xdc, 0xbf, 0xc0, 0x9c, 0xb2, 0x0b, 0x15, 0xfe, 0x9e, 0x8f,
0x2e, 0xc8, 0xaf, 0x30, 0x91, 0xb7, 0xfe, 0xee, 0xb4, 0x8a, 0x00, 0x19, 0x5b, 0x3e, 0x61, 0x4c,
0xcb, 0xec, 0xc4, 0x20, 0x69, 0xb9, 0x25, 0xfa, 0xce, 0xdf, 0x9d, 0xfe, 0xb4, 0x1f, 0x30, 0x7d,
0xd9, 0x79, 0x6a, 0xed, 0x6b, 0x0f, 0x57, 0x87, 0xa6, 0x7f, 0x30, 0xee, 0x53, 0x7b, 0x5c, 0xe7,
0x23, 0xdf, 0x35, 0x5d, 0xf1, 0x75, 0x3d, 0x50, 0xed, 0x3a, 0xe3, 0x74, 0x9d, 0xad, 0x65, 0xd4,
0xef, 0x57, 0x58, 0xf3, 0xe6, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe5, 0x45, 0x22, 0x53, 0xbb,
0x2f, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3248,7 +2996,7 @@ type QueryCoordClient interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest, opts ...grpc.CallOption) (*milvuspb.GetMetricsResponse, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+23+--+Multiple+memory+replication+design
GetReplicas(ctx context.Context, in *GetReplicasRequest, opts ...grpc.CallOption) (*GetReplicasResponse, error)
GetReplicas(ctx context.Context, in *milvuspb.GetReplicasRequest, opts ...grpc.CallOption) (*milvuspb.GetReplicasResponse, error)
GetShardLeaders(ctx context.Context, in *GetShardLeadersRequest, opts ...grpc.CallOption) (*GetShardLeadersResponse, error)
}
@ -3386,8 +3134,8 @@ func (c *queryCoordClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetri
return out, nil
}
func (c *queryCoordClient) GetReplicas(ctx context.Context, in *GetReplicasRequest, opts ...grpc.CallOption) (*GetReplicasResponse, error) {
out := new(GetReplicasResponse)
func (c *queryCoordClient) GetReplicas(ctx context.Context, in *milvuspb.GetReplicasRequest, opts ...grpc.CallOption) (*milvuspb.GetReplicasResponse, error) {
out := new(milvuspb.GetReplicasResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.query.QueryCoord/GetReplicas", in, out, opts...)
if err != nil {
return nil, err
@ -3422,7 +3170,7 @@ type QueryCoordServer interface {
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
GetMetrics(context.Context, *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
// https://wiki.lfaidata.foundation/display/MIL/MEP+23+--+Multiple+memory+replication+design
GetReplicas(context.Context, *GetReplicasRequest) (*GetReplicasResponse, error)
GetReplicas(context.Context, *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error)
GetShardLeaders(context.Context, *GetShardLeadersRequest) (*GetShardLeadersResponse, error)
}
@ -3472,7 +3220,7 @@ func (*UnimplementedQueryCoordServer) LoadBalance(ctx context.Context, req *Load
func (*UnimplementedQueryCoordServer) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetMetrics not implemented")
}
func (*UnimplementedQueryCoordServer) GetReplicas(ctx context.Context, req *GetReplicasRequest) (*GetReplicasResponse, error) {
func (*UnimplementedQueryCoordServer) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetReplicas not implemented")
}
func (*UnimplementedQueryCoordServer) GetShardLeaders(ctx context.Context, req *GetShardLeadersRequest) (*GetShardLeadersResponse, error) {
@ -3736,7 +3484,7 @@ func _QueryCoord_GetMetrics_Handler(srv interface{}, ctx context.Context, dec fu
}
func _QueryCoord_GetReplicas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetReplicasRequest)
in := new(milvuspb.GetReplicasRequest)
if err := dec(in); err != nil {
return nil, err
}
@ -3748,7 +3496,7 @@ func _QueryCoord_GetReplicas_Handler(srv interface{}, ctx context.Context, dec f
FullMethod: "/milvus.proto.query.QueryCoord/GetReplicas",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryCoordServer).GetReplicas(ctx, req.(*GetReplicasRequest))
return srv.(QueryCoordServer).GetReplicas(ctx, req.(*milvuspb.GetReplicasRequest))
}
return interceptor(ctx, in, info, handler)
}

View File

@ -3932,6 +3932,20 @@ func (node *Proxy) Import(ctx context.Context, req *milvuspb.ImportRequest) (*mi
return resp, err
}
// GetReplicas gets replica info
func (node *Proxy) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
log.Info("received get replicas request")
resp := &milvuspb.GetReplicasResponse{}
if !node.checkHealthy() {
resp.Status = unhealthyStatus()
return resp, nil
}
resp, err := node.queryCoord.GetReplicas(ctx, req)
log.Info("received get replicas response", zap.Any("resp", resp), zap.Error(err))
return resp, err
}
// Check import task state from datanode
func (node *Proxy) GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error) {
log.Info("received get import state request", zap.Int64("taskID", req.GetTask()))

View File

@ -332,9 +332,9 @@ func (coord *QueryCoordMock) GetMetrics(ctx context.Context, req *milvuspb.GetMe
}, nil
}
func (coord *QueryCoordMock) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (coord *QueryCoordMock) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
if !coord.healthy() {
return &querypb.GetReplicasResponse{
return &milvuspb.GetReplicasResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "unhealthy",
@ -342,7 +342,7 @@ func (coord *QueryCoordMock) GetReplicas(ctx context.Context, req *querypb.GetRe
}, nil
}
return &querypb.GetReplicasResponse{
return &milvuspb.GetReplicasResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "not implemented",

View File

@ -76,7 +76,7 @@ type Cluster interface {
allocateSegmentsToQueryNode(ctx context.Context, reqs []*querypb.LoadSegmentsRequest, wait bool, excludeNodeIDs []int64, includeNodeIDs []int64) error
allocateChannelsToQueryNode(ctx context.Context, reqs []*querypb.WatchDmChannelsRequest, wait bool, excludeNodeIDs []int64) error
assignNodesToReplicas(ctx context.Context, replicas []*querypb.ReplicaInfo) error
assignNodesToReplicas(ctx context.Context, replicas []*milvuspb.ReplicaInfo) error
getSessionVersion() int64
@ -704,7 +704,7 @@ func (c *queryNodeCluster) allocateChannelsToQueryNode(ctx context.Context, reqs
return c.channelAllocator(ctx, reqs, c, c.clusterMeta, wait, excludeNodeIDs)
}
func (c *queryNodeCluster) assignNodesToReplicas(ctx context.Context, replicas []*querypb.ReplicaInfo) error {
func (c *queryNodeCluster) assignNodesToReplicas(ctx context.Context, replicas []*milvuspb.ReplicaInfo) error {
nodes := c.onlineNodeIDs()
if len(nodes) < len(replicas) {
return errors.New("no enough nodes to create replicas")

View File

@ -1017,9 +1017,9 @@ func (qc *QueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRe
}
// GetReplicas gets replicas of a certain collection
func (qc *QueryCoord) GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error) {
func (qc *QueryCoord) GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error) {
// TODO: to impl
return &querypb.GetReplicasResponse{
return &milvuspb.GetReplicasResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "Not implemented",

View File

@ -35,6 +35,7 @@ import (
"github.com/milvus-io/milvus/internal/proto/commonpb"
"github.com/milvus-io/milvus/internal/proto/datapb"
"github.com/milvus-io/milvus/internal/proto/internalpb"
"github.com/milvus-io/milvus/internal/proto/milvuspb"
"github.com/milvus-io/milvus/internal/proto/querypb"
"github.com/milvus-io/milvus/internal/proto/schemapb"
"github.com/milvus-io/milvus/internal/util"
@ -92,12 +93,12 @@ type Meta interface {
getWatchedChannelsByNodeID(nodeID int64) *querypb.UnsubscribeChannelInfo
generateReplica(collectionID int64, partitionIds []int64) (*querypb.ReplicaInfo, error)
addReplica(replica *querypb.ReplicaInfo) error
setReplicaInfo(info *querypb.ReplicaInfo) error
getReplicaByID(replicaID int64) (*querypb.ReplicaInfo, error)
getReplicasByCollectionID(collectionID int64) ([]*querypb.ReplicaInfo, error)
getReplicasByNodeID(nodeID int64) ([]*querypb.ReplicaInfo, error)
generateReplica(collectionID int64, partitionIds []int64) (*milvuspb.ReplicaInfo, error)
addReplica(replica *milvuspb.ReplicaInfo) error
setReplicaInfo(info *milvuspb.ReplicaInfo) error
getReplicaByID(replicaID int64) (*milvuspb.ReplicaInfo, error)
getReplicasByCollectionID(collectionID int64) ([]*milvuspb.ReplicaInfo, error)
getReplicasByNodeID(nodeID int64) ([]*milvuspb.ReplicaInfo, error)
}
// MetaReplica records the current load information on all querynodes
@ -1025,22 +1026,22 @@ func (m *MetaReplica) getWatchedChannelsByNodeID(nodeID int64) *querypb.Unsubscr
return unsubscribeChannelInfo
}
func (m *MetaReplica) generateReplica(collectionID int64, partitionIds []int64) (*querypb.ReplicaInfo, error) {
func (m *MetaReplica) generateReplica(collectionID int64, partitionIds []int64) (*milvuspb.ReplicaInfo, error) {
id, err := m.idAllocator()
if err != nil {
return nil, err
}
return &querypb.ReplicaInfo{
return &milvuspb.ReplicaInfo{
ReplicaID: id,
CollectionID: collectionID,
PartitionIds: partitionIds,
ShardReplicas: make([]*querypb.ShardReplica, 0),
ShardReplicas: make([]*milvuspb.ShardReplica, 0),
NodeIds: make([]int64, 0),
}, nil
}
func (m *MetaReplica) addReplica(replica *querypb.ReplicaInfo) error {
func (m *MetaReplica) addReplica(replica *milvuspb.ReplicaInfo) error {
err := saveReplicaInfo(replica, m.client)
if err != nil {
return err
@ -1050,7 +1051,7 @@ func (m *MetaReplica) addReplica(replica *querypb.ReplicaInfo) error {
return nil
}
func (m *MetaReplica) setReplicaInfo(info *querypb.ReplicaInfo) error {
func (m *MetaReplica) setReplicaInfo(info *milvuspb.ReplicaInfo) error {
err := saveReplicaInfo(info, m.client)
if err != nil {
return err
@ -1060,7 +1061,7 @@ func (m *MetaReplica) setReplicaInfo(info *querypb.ReplicaInfo) error {
return nil
}
func (m *MetaReplica) getReplicaByID(replicaID int64) (*querypb.ReplicaInfo, error) {
func (m *MetaReplica) getReplicaByID(replicaID int64) (*milvuspb.ReplicaInfo, error) {
replica, ok := m.replicas.Get(replicaID)
if !ok {
return nil, errors.New("replica not found")
@ -1069,18 +1070,18 @@ func (m *MetaReplica) getReplicaByID(replicaID int64) (*querypb.ReplicaInfo, err
return replica, nil
}
func (m *MetaReplica) getReplicasByNodeID(nodeID int64) ([]*querypb.ReplicaInfo, error) {
func (m *MetaReplica) getReplicasByNodeID(nodeID int64) ([]*milvuspb.ReplicaInfo, error) {
replicas := m.replicas.GetReplicasByNodeID(nodeID)
return replicas, nil
}
func (m *MetaReplica) getReplicasByCollectionID(collectionID int64) ([]*querypb.ReplicaInfo, error) {
func (m *MetaReplica) getReplicasByCollectionID(collectionID int64) ([]*milvuspb.ReplicaInfo, error) {
collection, err := m.getCollectionInfoByID(collectionID)
if err != nil {
return nil, err
}
replicas := make([]*querypb.ReplicaInfo, 0, len(collection.ReplicaIds))
replicas := make([]*milvuspb.ReplicaInfo, 0, len(collection.ReplicaIds))
for _, replicaID := range collection.ReplicaIds {
replica, err := m.getReplicaByID(replicaID)
if err != nil {
@ -1147,7 +1148,7 @@ func saveDmChannelWatchInfos(infos []*querypb.DmChannelWatchInfo, kv kv.MetaKv)
return kv.MultiSave(kvs)
}
func saveReplicaInfo(info *querypb.ReplicaInfo, kv kv.MetaKv) error {
func saveReplicaInfo(info *milvuspb.ReplicaInfo, kv kv.MetaKv) error {
infoBytes, err := proto.Marshal(info)
if err != nil {
return err

View File

@ -19,30 +19,30 @@ package querycoord
import (
"sync"
"github.com/milvus-io/milvus/internal/proto/querypb"
"github.com/milvus-io/milvus/internal/proto/milvuspb"
)
type replicaSlice = []*querypb.ReplicaInfo
type replicaSlice = []*milvuspb.ReplicaInfo
type ReplicaInfos struct {
globalGuard sync.RWMutex // We have to make sure atomically update replicas and index
// Persistent Info
replicas map[UniqueID]*querypb.ReplicaInfo // replica_id -> *ReplicaInfo
replicas map[UniqueID]*milvuspb.ReplicaInfo // replica_id -> *ReplicaInfo
// Non-persistent info
nodeIndex map[UniqueID][]*querypb.ReplicaInfo // node_id -> []*ReplicaInfo
nodeIndex map[UniqueID][]*milvuspb.ReplicaInfo // node_id -> []*ReplicaInfo
}
func NewReplicaInfos() *ReplicaInfos {
return &ReplicaInfos{
globalGuard: sync.RWMutex{},
replicas: make(map[int64]*querypb.ReplicaInfo),
nodeIndex: make(map[int64][]*querypb.ReplicaInfo),
replicas: make(map[int64]*milvuspb.ReplicaInfo),
nodeIndex: make(map[int64][]*milvuspb.ReplicaInfo),
}
}
func (rep *ReplicaInfos) Get(replicaID UniqueID) (*querypb.ReplicaInfo, bool) {
func (rep *ReplicaInfos) Get(replicaID UniqueID) (*milvuspb.ReplicaInfo, bool) {
rep.globalGuard.RLock()
defer rep.globalGuard.RUnlock()
@ -51,7 +51,7 @@ func (rep *ReplicaInfos) Get(replicaID UniqueID) (*querypb.ReplicaInfo, bool) {
}
// Make sure atomically update replica and index
func (rep *ReplicaInfos) Insert(info *querypb.ReplicaInfo) {
func (rep *ReplicaInfos) Insert(info *milvuspb.ReplicaInfo) {
rep.globalGuard.Lock()
defer rep.globalGuard.Unlock()
@ -68,7 +68,7 @@ func (rep *ReplicaInfos) Insert(info *querypb.ReplicaInfo) {
for _, nodeID := range info.NodeIds {
replicas, ok := rep.nodeIndex[nodeID]
if !ok {
replicas = make([]*querypb.ReplicaInfo, 0)
replicas = make([]*milvuspb.ReplicaInfo, 0)
rep.nodeIndex[nodeID] = replicas
}
@ -77,7 +77,7 @@ func (rep *ReplicaInfos) Insert(info *querypb.ReplicaInfo) {
}
}
func (rep *ReplicaInfos) GetReplicasByNodeID(nodeID UniqueID) []*querypb.ReplicaInfo {
func (rep *ReplicaInfos) GetReplicasByNodeID(nodeID UniqueID) []*milvuspb.ReplicaInfo {
rep.globalGuard.RLock()
defer rep.globalGuard.RUnlock()

View File

@ -1100,6 +1100,8 @@ type ProxyComponent interface {
// the `state` in `GetImportStateResponse` return the state of the import task.
// error is always nil
GetImportState(ctx context.Context, req *milvuspb.GetImportStateRequest) (*milvuspb.GetImportStateResponse, error)
GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error)
}
// QueryNode is the interface `querynode` package implements
@ -1170,7 +1172,7 @@ type QueryCoord interface {
GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
GetReplicas(ctx context.Context, req *querypb.GetReplicasRequest) (*querypb.GetReplicasResponse, error)
GetReplicas(ctx context.Context, req *milvuspb.GetReplicasRequest) (*milvuspb.GetReplicasResponse, error)
GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error)
}

View File

@ -90,8 +90,8 @@ func (m *QueryCoordClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetri
return &milvuspb.GetMetricsResponse{}, m.Err
}
func (m *QueryCoordClient) GetReplicas(ctx context.Context, in *querypb.GetReplicasRequest, opts ...grpc.CallOption) (*querypb.GetReplicasResponse, error) {
return &querypb.GetReplicasResponse{}, m.Err
func (m *QueryCoordClient) GetReplicas(ctx context.Context, in *milvuspb.GetReplicasRequest, opts ...grpc.CallOption) (*milvuspb.GetReplicasResponse, error) {
return &milvuspb.GetReplicasResponse{}, m.Err
}
func (m *QueryCoordClient) GetShardLeaders(ctx context.Context, in *querypb.GetShardLeadersRequest, opts ...grpc.CallOption) (*querypb.GetShardLeadersResponse, error) {