Add GetShardLeaders rpc in querycoord proto (#16299)

See also: #16298

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
pull/16296/head
XuanYang-cn 2022-03-31 16:39:29 +08:00 committed by GitHub
parent e20385c817
commit 58addbf9f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 491 additions and 207 deletions

View File

@ -360,6 +360,10 @@ func (m *MockQueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetric
return nil, nil
}
func (m *MockQueryCoord) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
return nil, nil
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type MockDataCoord struct {
MockBase

View File

@ -300,3 +300,17 @@ func (c *Client) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest
}
return ret.(*milvuspb.GetMetricsResponse), err
}
// GetShardLeaders gets the shard leaders of a certain collection.
func (c *Client) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client interface{}) (interface{}, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.(querypb.QueryCoordClient).GetShardLeaders(ctx, req)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*querypb.GetShardLeadersResponse), err
}

View File

@ -107,6 +107,9 @@ func Test_NewClient(t *testing.T) {
r16, err := client.LoadBalance(ctx, nil)
retCheck(retNotNil, r16, err)
r17, err := client.GetShardLeaders(ctx, nil)
retCheck(retNotNil, r17, err)
}
client.grpcClient = &mock.ClientBase{

View File

@ -389,3 +389,8 @@ func (s *Server) LoadBalance(ctx context.Context, req *querypb.LoadBalanceReques
func (s *Server) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
return s.queryCoord.GetMetrics(ctx, req)
}
// GetShardLeaders returns the shard leaders of a certain collection.
func (s *Server) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
return s.queryCoord.GetShardLeaders(ctx, req)
}

View File

@ -34,20 +34,21 @@ import (
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type MockQueryCoord struct {
states *internalpb.ComponentStates
status *commonpb.Status
err error
initErr error
startErr error
stopErr error
regErr error
strResp *milvuspb.StringResponse
showcolResp *querypb.ShowCollectionsResponse
showpartResp *querypb.ShowPartitionsResponse
partResp *querypb.GetPartitionStatesResponse
channelResp *querypb.CreateQueryChannelResponse
infoResp *querypb.GetSegmentInfoResponse
metricResp *milvuspb.GetMetricsResponse
states *internalpb.ComponentStates
status *commonpb.Status
err error
initErr error
startErr error
stopErr error
regErr error
strResp *milvuspb.StringResponse
showcolResp *querypb.ShowCollectionsResponse
showpartResp *querypb.ShowPartitionsResponse
partResp *querypb.GetPartitionStatesResponse
channelResp *querypb.CreateQueryChannelResponse
infoResp *querypb.GetSegmentInfoResponse
metricResp *milvuspb.GetMetricsResponse
shardLeadersResp *querypb.GetShardLeadersResponse
}
func (m *MockQueryCoord) Init() error {
@ -142,6 +143,10 @@ func (m *MockQueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetric
return m.metricResp, m.err
}
func (m *MockQueryCoord) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
return m.shardLeadersResp, m.err
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type MockRootCoord struct {
types.RootCoord

View File

@ -30,6 +30,9 @@ service QueryCoord {
// https://wiki.lfaidata.foundation/display/MIL/MEP+8+--+Add+metrics+for+proxy
rpc GetMetrics(milvus.GetMetricsRequest) returns (milvus.GetMetricsResponse) {}
// https://wiki.lfaidata.foundation/display/MIL/MEP+23+--+Multiple+memory+replication+design
rpc GetShardLeaders(GetShardLeadersRequest) returns (GetShardLeadersResponse) {}
}
service QueryNode {
@ -147,6 +150,22 @@ message GetSegmentInfoResponse {
repeated SegmentInfo infos = 2;
}
message GetShardLeadersRequest {
common.MsgBase base = 1;
int64 collectionID = 2;
}
message GetShardLeadersResponse {
common.Status status= 1 ;
repeated ShardLeaderList list = 2;
}
message ShardLeaderList {
string channel_name = 1;
int64 nodeID = 2;
string address = 3; // 127.0.0.1:9000
}
//-----------------query node grpc request and response proto----------------
message AddQueryChannelRequest {
common.MsgBase base = 1;
@ -169,7 +188,7 @@ message RemoveQueryChannelRequest {
message LoadMetaInfo {
LoadType load_type = 1;
int64 collectionID = 2;
repeated int64 partitionIDs = 3;
repeated int64 partitionIDs = 3;
}
message WatchDmChannelsRequest {

View File

@ -960,6 +960,155 @@ func (m *GetSegmentInfoResponse) GetInfos() []*SegmentInfo {
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"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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{14}
}
func (m *GetShardLeadersRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetShardLeadersRequest.Unmarshal(m, b)
}
func (m *GetShardLeadersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetShardLeadersRequest.Marshal(b, m, deterministic)
}
func (m *GetShardLeadersRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetShardLeadersRequest.Merge(m, src)
}
func (m *GetShardLeadersRequest) XXX_Size() int {
return xxx_messageInfo_GetShardLeadersRequest.Size(m)
}
func (m *GetShardLeadersRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetShardLeadersRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetShardLeadersRequest proto.InternalMessageInfo
func (m *GetShardLeadersRequest) GetBase() *commonpb.MsgBase {
if m != nil {
return m.Base
}
return nil
}
func (m *GetShardLeadersRequest) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
type GetShardLeadersResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
List []*ShardLeaderList `protobuf:"bytes,2,rep,name=list,proto3" json:"list,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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{15}
}
func (m *GetShardLeadersResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetShardLeadersResponse.Unmarshal(m, b)
}
func (m *GetShardLeadersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetShardLeadersResponse.Marshal(b, m, deterministic)
}
func (m *GetShardLeadersResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetShardLeadersResponse.Merge(m, src)
}
func (m *GetShardLeadersResponse) XXX_Size() int {
return xxx_messageInfo_GetShardLeadersResponse.Size(m)
}
func (m *GetShardLeadersResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetShardLeadersResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GetShardLeadersResponse proto.InternalMessageInfo
func (m *GetShardLeadersResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *GetShardLeadersResponse) GetList() []*ShardLeaderList {
if m != nil {
return m.List
}
return nil
}
type ShardLeaderList struct {
ChannelName string `protobuf:"bytes,1,opt,name=channel_name,json=channelName,proto3" json:"channel_name,omitempty"`
NodeID int64 `protobuf:"varint,2,opt,name=nodeID,proto3" json:"nodeID,omitempty"`
Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ShardLeaderList) Reset() { *m = ShardLeaderList{} }
func (m *ShardLeaderList) String() string { return proto.CompactTextString(m) }
func (*ShardLeaderList) ProtoMessage() {}
func (*ShardLeaderList) Descriptor() ([]byte, []int) {
return fileDescriptor_aab7cc9a69ed26e8, []int{16}
}
func (m *ShardLeaderList) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShardLeaderList.Unmarshal(m, b)
}
func (m *ShardLeaderList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ShardLeaderList.Marshal(b, m, deterministic)
}
func (m *ShardLeaderList) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardLeaderList.Merge(m, src)
}
func (m *ShardLeaderList) XXX_Size() int {
return xxx_messageInfo_ShardLeaderList.Size(m)
}
func (m *ShardLeaderList) XXX_DiscardUnknown() {
xxx_messageInfo_ShardLeaderList.DiscardUnknown(m)
}
var xxx_messageInfo_ShardLeaderList proto.InternalMessageInfo
func (m *ShardLeaderList) GetChannelName() string {
if m != nil {
return m.ChannelName
}
return ""
}
func (m *ShardLeaderList) GetNodeID() int64 {
if m != nil {
return m.NodeID
}
return 0
}
func (m *ShardLeaderList) GetAddress() string {
if m != nil {
return m.Address
}
return ""
}
//-----------------query node grpc request and response proto----------------
type AddQueryChannelRequest struct {
Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
@ -978,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{14}
return fileDescriptor_aab7cc9a69ed26e8, []int{17}
}
func (m *AddQueryChannelRequest) XXX_Unmarshal(b []byte) error {
@ -1063,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{15}
return fileDescriptor_aab7cc9a69ed26e8, []int{18}
}
func (m *RemoveQueryChannelRequest) XXX_Unmarshal(b []byte) error {
@ -1132,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{16}
return fileDescriptor_aab7cc9a69ed26e8, []int{19}
}
func (m *LoadMetaInfo) XXX_Unmarshal(b []byte) error {
@ -1192,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{17}
return fileDescriptor_aab7cc9a69ed26e8, []int{20}
}
func (m *WatchDmChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -1284,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{18}
return fileDescriptor_aab7cc9a69ed26e8, []int{21}
}
func (m *WatchDeltaChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -1362,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{19}
return fileDescriptor_aab7cc9a69ed26e8, []int{22}
}
func (m *SegmentLoadInfo) XXX_Unmarshal(b []byte) error {
@ -1485,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{20}
return fileDescriptor_aab7cc9a69ed26e8, []int{23}
}
func (m *FieldIndexInfo) XXX_Unmarshal(b []byte) error {
@ -1579,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{21}
return fileDescriptor_aab7cc9a69ed26e8, []int{24}
}
func (m *LoadSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -1666,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{22}
return fileDescriptor_aab7cc9a69ed26e8, []int{25}
}
func (m *ReleaseSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -1742,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{23}
return fileDescriptor_aab7cc9a69ed26e8, []int{26}
}
func (m *SearchRequest) XXX_Unmarshal(b []byte) error {
@ -1797,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{24}
return fileDescriptor_aab7cc9a69ed26e8, []int{27}
}
func (m *QueryRequest) XXX_Unmarshal(b []byte) error {
@ -1852,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{25}
return fileDescriptor_aab7cc9a69ed26e8, []int{28}
}
func (m *HandoffSegmentsRequest) XXX_Unmarshal(b []byte) error {
@ -1902,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{26}
return fileDescriptor_aab7cc9a69ed26e8, []int{29}
}
func (m *LoadBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -1971,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{27}
return fileDescriptor_aab7cc9a69ed26e8, []int{30}
}
func (m *DmChannelWatchInfo) XXX_Unmarshal(b []byte) error {
@ -2028,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{28}
return fileDescriptor_aab7cc9a69ed26e8, []int{31}
}
func (m *QueryChannelInfo) XXX_Unmarshal(b []byte) error {
@ -2097,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{29}
return fileDescriptor_aab7cc9a69ed26e8, []int{32}
}
func (m *PartitionStates) XXX_Unmarshal(b []byte) error {
@ -2164,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{30}
return fileDescriptor_aab7cc9a69ed26e8, []int{33}
}
func (m *SegmentInfo) XXX_Unmarshal(b []byte) error {
@ -2308,7 +2457,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{31}
return fileDescriptor_aab7cc9a69ed26e8, []int{34}
}
func (m *CollectionInfo) XXX_Unmarshal(b []byte) error {
@ -2397,7 +2546,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{32}
return fileDescriptor_aab7cc9a69ed26e8, []int{35}
}
func (m *UnsubscribeChannels) XXX_Unmarshal(b []byte) error {
@ -2444,7 +2593,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{33}
return fileDescriptor_aab7cc9a69ed26e8, []int{36}
}
func (m *UnsubscribeChannelInfo) XXX_Unmarshal(b []byte) error {
@ -2494,7 +2643,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{34}
return fileDescriptor_aab7cc9a69ed26e8, []int{37}
}
func (m *SegmentChangeInfo) XXX_Unmarshal(b []byte) error {
@ -2555,7 +2704,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{35}
return fileDescriptor_aab7cc9a69ed26e8, []int{38}
}
func (m *SealedSegmentsChangeInfo) XXX_Unmarshal(b []byte) error {
@ -2605,7 +2754,7 @@ 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{36}
return fileDescriptor_aab7cc9a69ed26e8, []int{39}
}
func (m *ReplicaInfo) XXX_Unmarshal(b []byte) error {
@ -2673,7 +2822,7 @@ 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{37}
return fileDescriptor_aab7cc9a69ed26e8, []int{40}
}
func (m *ShardReplica) XXX_Unmarshal(b []byte) error {
@ -2726,6 +2875,9 @@ 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((*GetShardLeadersRequest)(nil), "milvus.proto.query.GetShardLeadersRequest")
proto.RegisterType((*GetShardLeadersResponse)(nil), "milvus.proto.query.GetShardLeadersResponse")
proto.RegisterType((*ShardLeaderList)(nil), "milvus.proto.query.ShardLeaderList")
proto.RegisterType((*AddQueryChannelRequest)(nil), "milvus.proto.query.AddQueryChannelRequest")
proto.RegisterType((*RemoveQueryChannelRequest)(nil), "milvus.proto.query.RemoveQueryChannelRequest")
proto.RegisterType((*LoadMetaInfo)(nil), "milvus.proto.query.LoadMetaInfo")
@ -2755,174 +2907,180 @@ func init() {
func init() { proto.RegisterFile("query_coord.proto", fileDescriptor_aab7cc9a69ed26e8) }
var fileDescriptor_aab7cc9a69ed26e8 = []byte{
// 2664 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x1a, 0x4d, 0x6f, 0x1c, 0x49,
0xd5, 0x3d, 0x5f, 0xf6, 0xbc, 0xf9, 0x4c, 0x39, 0x31, 0x93, 0x61, 0x77, 0xe3, 0x74, 0x36, 0x1f,
0x64, 0x59, 0x27, 0x38, 0x8b, 0xc4, 0x0a, 0x38, 0xac, 0x6d, 0xe2, 0x35, 0xd9, 0x78, 0x9d, 0xb6,
0x13, 0x20, 0x8a, 0x34, 0xf4, 0x4c, 0x97, 0xc7, 0xad, 0xf4, 0xc7, 0xa4, 0xab, 0x67, 0x13, 0x87,
0xeb, 0x0a, 0xf1, 0x21, 0x84, 0x38, 0x71, 0x41, 0x9c, 0x40, 0xb0, 0x87, 0x15, 0x67, 0x6e, 0x5c,
0xb8, 0xf1, 0x0b, 0x38, 0x20, 0x6e, 0xf0, 0x07, 0x38, 0x22, 0x50, 0x7d, 0xf5, 0x74, 0xf7, 0x54,
0xdb, 0x3d, 0xf6, 0x66, 0x13, 0x21, 0x6e, 0x53, 0xaf, 0x5f, 0xbd, 0xf7, 0xea, 0x7d, 0x57, 0xbd,
0x81, 0x33, 0x4f, 0xc6, 0x38, 0x38, 0xec, 0x0d, 0x7c, 0x3f, 0xb0, 0x56, 0x46, 0x81, 0x1f, 0xfa,
0x08, 0xb9, 0xb6, 0xf3, 0xd1, 0x98, 0xf0, 0xd5, 0x0a, 0xfb, 0xde, 0xad, 0x0f, 0x7c, 0xd7, 0xf5,
0x3d, 0x0e, 0xeb, 0xd6, 0xe3, 0x18, 0xdd, 0xa6, 0xed, 0x85, 0x38, 0xf0, 0x4c, 0x47, 0x7e, 0x25,
0x83, 0x03, 0xec, 0x9a, 0x62, 0xd5, 0xb6, 0xcc, 0xd0, 0x8c, 0xd3, 0xd7, 0x3f, 0xd6, 0x60, 0x69,
0xf7, 0xc0, 0x7f, 0xba, 0xee, 0x3b, 0x0e, 0x1e, 0x84, 0xb6, 0xef, 0x11, 0x03, 0x3f, 0x19, 0x63,
0x12, 0xa2, 0x9b, 0x50, 0xea, 0x9b, 0x04, 0x77, 0xb4, 0x65, 0xed, 0x5a, 0x6d, 0xf5, 0xb5, 0x95,
0x84, 0x24, 0x42, 0x84, 0xbb, 0x64, 0xb8, 0x66, 0x12, 0x6c, 0x30, 0x4c, 0x84, 0xa0, 0x64, 0xf5,
0xb7, 0x36, 0x3a, 0x85, 0x65, 0xed, 0x5a, 0xd1, 0x60, 0xbf, 0xd1, 0x9b, 0xd0, 0x18, 0x44, 0xb4,
0xb7, 0x36, 0x48, 0xa7, 0xb8, 0x5c, 0xbc, 0x56, 0x34, 0x92, 0x40, 0xfd, 0x77, 0x1a, 0x7c, 0x61,
0x4a, 0x0c, 0x32, 0xf2, 0x3d, 0x82, 0xd1, 0x2d, 0xa8, 0x90, 0xd0, 0x0c, 0xc7, 0x44, 0x48, 0xf2,
0x45, 0xa5, 0x24, 0xbb, 0x0c, 0xc5, 0x10, 0xa8, 0xd3, 0x6c, 0x0b, 0x0a, 0xb6, 0xe8, 0x2b, 0x70,
0xd6, 0xf6, 0xee, 0x62, 0xd7, 0x0f, 0x0e, 0x7b, 0x23, 0x1c, 0x0c, 0xb0, 0x17, 0x9a, 0x43, 0x2c,
0x65, 0x5c, 0x94, 0xdf, 0x76, 0x26, 0x9f, 0xf4, 0xdf, 0x6a, 0x70, 0x8e, 0x4a, 0xba, 0x63, 0x06,
0xa1, 0xfd, 0x02, 0xf4, 0xa5, 0x43, 0x3d, 0x2e, 0x63, 0xa7, 0xc8, 0xbe, 0x25, 0x60, 0x14, 0x67,
0x24, 0xd9, 0xd3, 0xb3, 0x95, 0x98, 0xb8, 0x09, 0x98, 0xfe, 0x1b, 0x61, 0xd8, 0xb8, 0x9c, 0xa7,
0x51, 0x68, 0x9a, 0x67, 0x61, 0x9a, 0xe7, 0x49, 0xd4, 0xf9, 0x0f, 0x0d, 0xce, 0x7d, 0xe0, 0x9b,
0xd6, 0xc4, 0xf0, 0x9f, 0xbf, 0x3a, 0xbf, 0x09, 0x15, 0x1e, 0x25, 0x9d, 0x12, 0xe3, 0x75, 0x39,
0xc9, 0x4b, 0x44, 0xd0, 0x44, 0xc2, 0x5d, 0x06, 0x30, 0xc4, 0x26, 0x74, 0x19, 0x9a, 0x01, 0x1e,
0x39, 0xf6, 0xc0, 0xec, 0x79, 0x63, 0xb7, 0x8f, 0x83, 0x4e, 0x79, 0x59, 0xbb, 0x56, 0x36, 0x1a,
0x02, 0xba, 0xcd, 0x80, 0xfa, 0xaf, 0x34, 0xe8, 0x18, 0xd8, 0xc1, 0x26, 0xc1, 0x2f, 0xf3, 0xb0,
0x4b, 0x50, 0xf1, 0x7c, 0x0b, 0x6f, 0x6d, 0xb0, 0xc3, 0x16, 0x0d, 0xb1, 0xd2, 0x7f, 0x5a, 0xe0,
0x86, 0x78, 0xc5, 0xfd, 0x3a, 0x66, 0xac, 0xf2, 0x67, 0x63, 0xac, 0x8a, 0xca, 0x58, 0x7f, 0x9a,
0x18, 0xeb, 0x55, 0x57, 0xc8, 0xc4, 0xa0, 0xe5, 0x84, 0x41, 0xbf, 0x07, 0xe7, 0xd7, 0x03, 0x6c,
0x86, 0xf8, 0x1e, 0x2d, 0x1a, 0xeb, 0x07, 0xa6, 0xe7, 0x61, 0x47, 0x1e, 0x21, 0xcd, 0x5c, 0x53,
0x30, 0xef, 0xc0, 0xfc, 0x28, 0xf0, 0x9f, 0x1d, 0x46, 0x72, 0xcb, 0xa5, 0xfe, 0x7b, 0x0d, 0xba,
0x2a, 0xda, 0xa7, 0xc9, 0x2f, 0x97, 0xa0, 0x21, 0xaa, 0x1f, 0xa7, 0xc6, 0x78, 0x56, 0x8d, 0xfa,
0x93, 0x18, 0x07, 0x74, 0x13, 0xce, 0x72, 0xa4, 0x00, 0x93, 0xb1, 0x13, 0x46, 0xb8, 0x45, 0x86,
0x8b, 0xd8, 0x37, 0x83, 0x7d, 0x12, 0x3b, 0xf4, 0x4f, 0x34, 0x38, 0xbf, 0x89, 0xc3, 0xc8, 0x88,
0x94, 0x2b, 0x7e, 0x45, 0x53, 0xf6, 0xa7, 0x1a, 0x74, 0x55, 0xb2, 0x9e, 0x46, 0xad, 0x0f, 0x61,
0x29, 0xe2, 0xd1, 0xb3, 0x30, 0x19, 0x04, 0xf6, 0x88, 0x39, 0x33, 0x4b, 0xe0, 0xb5, 0xd5, 0x4b,
0x2b, 0xd3, 0x0d, 0xc6, 0x4a, 0x5a, 0x82, 0x73, 0x11, 0x89, 0x8d, 0x18, 0x05, 0xfd, 0x67, 0x1a,
0x9c, 0xdb, 0xc4, 0xe1, 0x2e, 0x1e, 0xba, 0xd8, 0x0b, 0xb7, 0xbc, 0x7d, 0xff, 0xe4, 0x7a, 0x7d,
0x03, 0x80, 0x08, 0x3a, 0x51, 0x71, 0x89, 0x41, 0xf2, 0xe8, 0x98, 0xf5, 0x32, 0x69, 0x79, 0x4e,
0xa3, 0xbb, 0xaf, 0x42, 0xd9, 0xf6, 0xf6, 0x7d, 0xa9, 0xaa, 0x0b, 0x2a, 0x55, 0xc5, 0x99, 0x71,
0x6c, 0xfd, 0xdf, 0x05, 0x58, 0x7a, 0xcf, 0xb2, 0x54, 0x61, 0x37, 0xbb, 0x5e, 0x26, 0xd1, 0x5d,
0x88, 0x47, 0x77, 0x2e, 0x9f, 0x9b, 0x0a, 0xa9, 0xd2, 0x0c, 0x21, 0x55, 0xce, 0x0a, 0x29, 0xb4,
0x09, 0x0d, 0x82, 0xf1, 0xe3, 0xde, 0xc8, 0x27, 0xcc, 0x27, 0x58, 0x06, 0xad, 0xad, 0xea, 0xc9,
0xd3, 0x44, 0x7d, 0xe8, 0x5d, 0x32, 0xdc, 0x11, 0x98, 0x46, 0x9d, 0x6e, 0x94, 0x2b, 0x74, 0x1f,
0x96, 0x86, 0x8e, 0xdf, 0x37, 0x9d, 0x1e, 0xc1, 0xa6, 0x83, 0xad, 0x9e, 0xb0, 0x37, 0xe9, 0xcc,
0xe7, 0x53, 0xf8, 0x59, 0xbe, 0x7d, 0x97, 0xed, 0x16, 0x1f, 0x88, 0xfe, 0x77, 0x0d, 0xce, 0x1b,
0xd8, 0xf5, 0x3f, 0xc2, 0xff, 0xab, 0x26, 0xd0, 0x7f, 0xa1, 0x41, 0x9d, 0x16, 0xeb, 0xbb, 0x38,
0x34, 0xa9, 0x26, 0xd0, 0xbb, 0x50, 0x75, 0x7c, 0xd3, 0xea, 0x85, 0x87, 0x23, 0x7e, 0xb4, 0x66,
0xfa, 0x68, 0x5c, 0x7b, 0x74, 0xd3, 0xde, 0xe1, 0x08, 0x1b, 0x0b, 0x8e, 0xf8, 0x35, 0x75, 0x8c,
0x42, 0x8e, 0xec, 0x55, 0x54, 0x35, 0x9c, 0x45, 0x58, 0xfa, 0x8e, 0x19, 0x0e, 0x0e, 0x36, 0x5c,
0x21, 0x26, 0x79, 0x39, 0x3a, 0xcf, 0x53, 0x34, 0xa3, 0xd0, 0x2e, 0xab, 0x3c, 0x8d, 0xde, 0x92,
0x56, 0x1e, 0x08, 0x33, 0xc4, 0x42, 0x3b, 0xd6, 0x7c, 0x54, 0x4e, 0xd2, 0x7c, 0xac, 0x43, 0x03,
0x3f, 0x1b, 0x38, 0x63, 0x0b, 0xf7, 0x38, 0x77, 0xee, 0xe7, 0x6f, 0x28, 0xb8, 0xc7, 0xdd, 0xbc,
0x2e, 0x36, 0x6d, 0x09, 0x19, 0xb8, 0xa9, 0x5d, 0x1c, 0x9a, 0x9d, 0x05, 0x26, 0xc6, 0x72, 0x96,
0xa9, 0xa5, 0x7f, 0x70, 0x73, 0xd3, 0x95, 0xfe, 0x1f, 0x0d, 0xce, 0x73, 0x33, 0x61, 0x27, 0x34,
0x5f, 0xae, 0xa5, 0x22, 0x2b, 0x94, 0x66, 0xb4, 0x42, 0x4c, 0x03, 0xd5, 0x99, 0x35, 0xf0, 0xcb,
0x12, 0xb4, 0x84, 0x7a, 0x29, 0x06, 0x8b, 0x9f, 0xd7, 0xa0, 0x1a, 0x15, 0x1b, 0xd1, 0x0c, 0x4d,
0x00, 0x68, 0x19, 0x6a, 0x31, 0xef, 0x11, 0x07, 0x8d, 0x83, 0x72, 0x9d, 0x56, 0xb6, 0x0e, 0xa5,
0x58, 0xeb, 0xf0, 0x3a, 0xc0, 0xbe, 0x33, 0x26, 0x07, 0xbd, 0xd0, 0x76, 0xb1, 0x68, 0xe0, 0xaa,
0x0c, 0xb2, 0x67, 0xbb, 0x18, 0xbd, 0x07, 0xf5, 0xbe, 0xed, 0x39, 0xfe, 0xb0, 0x37, 0x32, 0xc3,
0x03, 0xd2, 0xa9, 0x64, 0xfa, 0xcb, 0x6d, 0x1b, 0x3b, 0xd6, 0x1a, 0xc3, 0x35, 0x6a, 0x7c, 0xcf,
0x0e, 0xdd, 0x82, 0xde, 0x80, 0x9a, 0x37, 0x76, 0x7b, 0xfe, 0x7e, 0x2f, 0xf0, 0x9f, 0x52, 0x8f,
0x63, 0x2c, 0xbc, 0xb1, 0xfb, 0xe1, 0xbe, 0xe1, 0x3f, 0x25, 0xe8, 0x1b, 0x50, 0xa5, 0xe5, 0x8e,
0x38, 0xfe, 0x90, 0x74, 0x16, 0x72, 0xd1, 0x9f, 0x6c, 0xa0, 0xbb, 0x2d, 0xea, 0x47, 0x6c, 0x77,
0x35, 0xdf, 0xee, 0x68, 0x03, 0xba, 0x02, 0xcd, 0x81, 0xef, 0x8e, 0x4c, 0xa6, 0xa1, 0xdb, 0x81,
0xef, 0x76, 0x80, 0xc5, 0x6a, 0x0a, 0x8a, 0xd6, 0xa1, 0x66, 0x7b, 0x16, 0x7e, 0x26, 0xa2, 0xa6,
0xc6, 0xf8, 0xe8, 0x2a, 0x93, 0x33, 0x46, 0x5b, 0x14, 0x97, 0x19, 0x1d, 0x6c, 0xf9, 0x93, 0xa0,
0x8b, 0x50, 0x17, 0x16, 0xed, 0x11, 0xfb, 0x39, 0xee, 0xd4, 0xb9, 0x15, 0x05, 0x6c, 0xd7, 0x7e,
0x8e, 0xf5, 0x3f, 0x14, 0xa0, 0x99, 0xa4, 0x40, 0x9b, 0xe0, 0x7d, 0x06, 0x91, 0x6e, 0x21, 0x97,
0x94, 0x1e, 0xf6, 0xcc, 0xbe, 0x43, 0x63, 0xd9, 0xc2, 0xcf, 0x98, 0x57, 0x2c, 0x18, 0x35, 0x0e,
0x63, 0x04, 0xa8, 0x75, 0xb9, 0xdc, 0x9e, 0xe9, 0x62, 0xd1, 0xa4, 0x56, 0x19, 0x64, 0xdb, 0x74,
0x31, 0xa5, 0xcd, 0xe5, 0x93, 0x3e, 0x21, 0x97, 0xf4, 0x4b, 0x7f, 0x6c, 0x33, 0xae, 0xdc, 0x27,
0xe4, 0x12, 0x6d, 0x40, 0x9d, 0x93, 0x1c, 0x99, 0x81, 0xe9, 0x4a, 0x8f, 0xb8, 0xa8, 0x0c, 0xd4,
0x3b, 0xf8, 0xf0, 0x81, 0xe9, 0x8c, 0xf1, 0x8e, 0x69, 0x07, 0x06, 0xd7, 0xe0, 0x0e, 0xdb, 0x85,
0xae, 0x41, 0x9b, 0x53, 0xd9, 0xb7, 0x1d, 0x2c, 0x7c, 0x8b, 0xe6, 0xa2, 0xaa, 0xd1, 0x64, 0xf0,
0xdb, 0xb6, 0x83, 0xb9, 0xfb, 0x44, 0x47, 0x60, 0x3a, 0x5b, 0xe0, 0xde, 0xc3, 0x20, 0x4c, 0x63,
0xff, 0x2c, 0xc0, 0x22, 0x0d, 0x22, 0x59, 0x7c, 0x4f, 0x9e, 0x47, 0x5e, 0x07, 0xb0, 0x48, 0xd8,
0x4b, 0xe4, 0x92, 0xaa, 0x45, 0xc2, 0x6d, 0x9e, 0x4e, 0xde, 0x95, 0xa9, 0xa2, 0x98, 0xdd, 0xb6,
0xa6, 0x82, 0x7a, 0x3a, 0x69, 0x9f, 0xe8, 0x7a, 0x7f, 0x09, 0x1a, 0xc4, 0x1f, 0x07, 0x03, 0xdc,
0x4b, 0x5c, 0xb3, 0xea, 0x1c, 0xb8, 0xad, 0xce, 0x76, 0x15, 0xe5, 0x33, 0x43, 0x2c, 0x6d, 0xcd,
0xcf, 0x9c, 0xb6, 0xfe, 0xa6, 0xc1, 0x92, 0xb8, 0x92, 0x9e, 0x5e, 0xdb, 0x59, 0x59, 0x5b, 0xe6,
0xa8, 0xe2, 0x11, 0xd7, 0x9b, 0x52, 0x8e, 0x9a, 0x5b, 0x56, 0xd4, 0xdc, 0x64, 0x8b, 0x5f, 0x49,
0xb7, 0xf8, 0xfa, 0x0f, 0x35, 0x68, 0xec, 0x62, 0x33, 0x18, 0x1c, 0xc8, 0x73, 0xbd, 0x03, 0xc5,
0x00, 0x3f, 0x11, 0xc7, 0x4a, 0xc5, 0xbb, 0x58, 0x24, 0x36, 0x18, 0x14, 0x1d, 0x5d, 0x80, 0x9a,
0xe5, 0x3a, 0xa9, 0x7b, 0x24, 0x58, 0xae, 0x23, 0xfb, 0xad, 0xa4, 0x20, 0xc5, 0x29, 0x41, 0x3e,
0xd6, 0xa0, 0x7e, 0x8f, 0x37, 0x5d, 0x5c, 0x8e, 0x5b, 0x71, 0x39, 0x2e, 0x2a, 0xe5, 0x88, 0xe3,
0x7f, 0x46, 0x62, 0xfc, 0x5c, 0x83, 0xa5, 0xf7, 0x4d, 0xcf, 0xf2, 0xf7, 0xf7, 0x4f, 0x6f, 0xf0,
0xf5, 0x28, 0xfb, 0x6d, 0xcd, 0x72, 0xa5, 0x49, 0x6c, 0xd2, 0x7f, 0x54, 0x00, 0x44, 0xbd, 0x73,
0xcd, 0x74, 0x4c, 0x6f, 0x80, 0x4f, 0x2e, 0xcd, 0x65, 0x68, 0x26, 0x62, 0x2a, 0x7a, 0x9e, 0x8d,
0x07, 0x15, 0x41, 0x77, 0xa0, 0xd9, 0xe7, 0xac, 0x7a, 0x01, 0x36, 0x89, 0xef, 0x31, 0xbf, 0x6c,
0xae, 0xbe, 0xa9, 0x12, 0x7b, 0x2f, 0xb0, 0x87, 0x43, 0x1c, 0xac, 0xfb, 0x9e, 0xc5, 0x2f, 0x1b,
0x8d, 0xbe, 0x14, 0x93, 0x6e, 0x65, 0xf6, 0x88, 0x12, 0x8c, 0xec, 0x0a, 0x21, 0xca, 0x30, 0x04,
0xbd, 0x05, 0x67, 0x92, 0xf7, 0x90, 0x89, 0x23, 0xb7, 0x49, 0xfc, 0x8a, 0x41, 0x8d, 0xf3, 0x03,
0x40, 0x51, 0x9f, 0xcb, 0xda, 0x29, 0x56, 0x2d, 0xf2, 0x3c, 0xab, 0xbc, 0x06, 0x55, 0x4b, 0xee,
0x14, 0x5e, 0x31, 0x01, 0xd0, 0x6c, 0xc3, 0x25, 0xec, 0xd1, 0xc0, 0xc7, 0x96, 0xec, 0x24, 0x38,
0xf0, 0x03, 0x06, 0xd3, 0x3f, 0x2d, 0x40, 0x3b, 0x7e, 0xb7, 0xc9, 0xcd, 0xfb, 0xc5, 0x3c, 0xb2,
0x1c, 0x71, 0x91, 0x2b, 0x9d, 0xe2, 0x22, 0x37, 0x7d, 0xd1, 0x2c, 0x9f, 0xec, 0xa2, 0xa9, 0xff,
0x5a, 0x83, 0x56, 0xea, 0x4d, 0x23, 0xdd, 0xd3, 0x69, 0xd3, 0x3d, 0xdd, 0xd7, 0xa0, 0x4c, 0x1b,
0x1d, 0xcc, 0x94, 0xd4, 0x54, 0xf7, 0x1b, 0x49, 0xaa, 0x06, 0xdf, 0x80, 0x6e, 0xc0, 0xa2, 0xe2,
0x1d, 0x5c, 0x98, 0x12, 0x4d, 0x3f, 0x83, 0xeb, 0x7f, 0x2c, 0x41, 0x2d, 0xa6, 0x8f, 0x63, 0xda,
0xd1, 0x3c, 0x37, 0xb6, 0xd4, 0xf1, 0x8a, 0xd3, 0xc7, 0xcb, 0x78, 0x08, 0x46, 0xe7, 0x61, 0xc1,
0xc5, 0x2e, 0xaf, 0xf7, 0xa2, 0xf9, 0x70, 0xb1, 0x4b, 0xab, 0x3d, 0xfd, 0x44, 0x7b, 0x49, 0xd6,
0x48, 0xf2, 0x0a, 0x37, 0xef, 0x8d, 0x5d, 0xd6, 0x46, 0x26, 0x5b, 0x9d, 0xf9, 0x23, 0x5a, 0x9d,
0x85, 0x64, 0xab, 0x93, 0x08, 0x87, 0x6a, 0x3a, 0x1c, 0xf2, 0x76, 0x88, 0x37, 0x61, 0x71, 0xc0,
0x1e, 0x24, 0xad, 0xb5, 0xc3, 0xf5, 0xe8, 0x53, 0xa7, 0xc6, 0x7a, 0x32, 0xd5, 0x27, 0x74, 0x9b,
0x3a, 0x97, 0x68, 0x07, 0x99, 0x95, 0xeb, 0xcc, 0xca, 0xea, 0x4e, 0x4a, 0xd8, 0x86, 0x1b, 0x59,
0xe6, 0x44, 0xb6, 0x4a, 0xf7, 0xa6, 0x8d, 0x13, 0xf5, 0xa6, 0x17, 0xa0, 0x26, 0x5f, 0xa5, 0x6d,
0x8b, 0x74, 0x9a, 0x3c, 0x37, 0x09, 0xd0, 0x96, 0x45, 0x98, 0xe6, 0x7d, 0x7a, 0x6d, 0xb4, 0x48,
0xa7, 0xc5, 0xbe, 0xce, 0x33, 0x73, 0x59, 0x44, 0xff, 0xa4, 0x08, 0xcd, 0x49, 0xf3, 0x92, 0x3b,
0x15, 0xe4, 0x99, 0xe7, 0x6c, 0x43, 0x7b, 0xf2, 0x78, 0xc8, 0xb4, 0x74, 0x64, 0xff, 0x95, 0x7e,
0x36, 0x6c, 0x8d, 0x52, 0x31, 0x97, 0x78, 0xa5, 0x28, 0xcd, 0xf4, 0x4a, 0x71, 0xca, 0x67, 0xff,
0x5b, 0x70, 0x2e, 0xe0, 0xbd, 0x93, 0xd5, 0x4b, 0x1c, 0x9b, 0xb7, 0x21, 0x67, 0xe5, 0xc7, 0x9d,
0xf8, 0xf1, 0x33, 0xc2, 0x78, 0x3e, 0x2b, 0x8c, 0xd3, 0x66, 0x5c, 0x48, 0x9b, 0x51, 0xbf, 0x0f,
0x8b, 0xf7, 0x3d, 0x32, 0xee, 0x93, 0x41, 0x60, 0xf7, 0xb1, 0xbc, 0x7c, 0xe7, 0xb2, 0x57, 0x17,
0x16, 0x44, 0x22, 0xe6, 0xb6, 0xaa, 0x1a, 0xd1, 0x5a, 0xff, 0x89, 0x06, 0x4b, 0xd3, 0x74, 0x99,
0x2b, 0x4c, 0xa2, 0x5c, 0x4b, 0x44, 0xf9, 0x77, 0x61, 0x71, 0x42, 0xbe, 0x97, 0xa0, 0x5c, 0x5b,
0xbd, 0xaa, 0x32, 0x8a, 0x42, 0x70, 0x03, 0x4d, 0x68, 0x48, 0x98, 0xfe, 0x2f, 0x0d, 0xce, 0x88,
0x78, 0xa1, 0xb0, 0x21, 0x7b, 0xb6, 0xa0, 0x95, 0xc7, 0xf7, 0x1c, 0xdb, 0x8b, 0xba, 0x68, 0x71,
0x46, 0x0e, 0x14, 0x5d, 0xf4, 0xfb, 0xd0, 0x12, 0x48, 0x51, 0x01, 0xc9, 0xd9, 0xa7, 0x34, 0xf9,
0xbe, 0xa8, 0x74, 0x5c, 0x86, 0xa6, 0xbf, 0xbf, 0x1f, 0xe7, 0xc7, 0x33, 0x60, 0x43, 0x40, 0x05,
0xc3, 0x6f, 0x43, 0x5b, 0xa2, 0xcd, 0x5a, 0xb2, 0x5a, 0x62, 0x63, 0xf4, 0xec, 0xf8, 0x63, 0x0d,
0x3a, 0xc9, 0x02, 0x16, 0x3b, 0xfe, 0xec, 0x2d, 0xd2, 0xd7, 0x93, 0x8f, 0xcf, 0x97, 0x8f, 0x90,
0x67, 0xc2, 0x47, 0x3e, 0x41, 0xff, 0x55, 0x83, 0x9a, 0x21, 0xdc, 0x8e, 0xb2, 0x7f, 0x1d, 0x60,
0xe2, 0x98, 0xb2, 0xa0, 0x44, 0x7e, 0x49, 0x8d, 0x13, 0x73, 0x06, 0xdb, 0x52, 0x54, 0x14, 0x86,
0x34, 0x49, 0x06, 0xd4, 0xbd, 0xa7, 0x1e, 0x01, 0x2d, 0x5a, 0xb2, 0x9b, 0xe4, 0xc0, 0x0c, 0xac,
0x9e, 0x20, 0x2e, 0xd5, 0xa9, 0xbc, 0xe8, 0xec, 0x52, 0x4c, 0x21, 0xa6, 0xd1, 0x20, 0xb1, 0x55,
0x32, 0xe1, 0x95, 0x93, 0x09, 0x6f, 0x1b, 0xea, 0xf1, 0x9d, 0xd4, 0xc5, 0x1d, 0x6c, 0x5a, 0x38,
0x90, 0x2e, 0xce, 0x57, 0xe8, 0x0a, 0xb4, 0x2c, 0x57, 0xba, 0x36, 0xaf, 0x4b, 0xbc, 0xdd, 0x69,
0x44, 0xf5, 0x85, 0xd6, 0xa6, 0xeb, 0xcf, 0xa1, 0x99, 0xcc, 0x5c, 0xa8, 0x0e, 0x0b, 0xdb, 0x7e,
0xf8, 0xad, 0x67, 0x36, 0x09, 0xdb, 0x73, 0xa8, 0x09, 0xb0, 0xed, 0x87, 0x3b, 0x01, 0x26, 0xd8,
0x0b, 0xdb, 0x1a, 0x02, 0xa8, 0x7c, 0xe8, 0x6d, 0xd8, 0xe4, 0x71, 0xbb, 0x80, 0x16, 0x45, 0x63,
0x61, 0x3a, 0x5b, 0x22, 0x1d, 0xb4, 0x8b, 0x74, 0x7b, 0xb4, 0x2a, 0xa1, 0x36, 0xd4, 0x23, 0x94,
0xcd, 0x9d, 0xfb, 0xed, 0x32, 0xaa, 0x42, 0x99, 0xff, 0xac, 0x5c, 0xb7, 0xa0, 0x9d, 0xee, 0x5b,
0x29, 0xcd, 0xfb, 0xde, 0x1d, 0xcf, 0x7f, 0x1a, 0x81, 0xda, 0x73, 0xa8, 0x06, 0xf3, 0xe2, 0x2e,
0xd0, 0xd6, 0x50, 0x0b, 0x6a, 0xb1, 0x36, 0xbc, 0x5d, 0xa0, 0x80, 0xcd, 0x60, 0x34, 0x10, 0x0d,
0x39, 0x17, 0x81, 0xba, 0xf8, 0x86, 0xff, 0xd4, 0x6b, 0x97, 0xae, 0xaf, 0xc1, 0x82, 0x4c, 0xa9,
0x14, 0x95, 0x53, 0xf7, 0xe8, 0xb2, 0x3d, 0x87, 0xce, 0x40, 0x23, 0x31, 0xf7, 0x6d, 0x6b, 0x08,
0x41, 0x33, 0x39, 0x93, 0x6f, 0x17, 0x56, 0xff, 0x5c, 0x03, 0xe0, 0x3d, 0xa7, 0xef, 0x07, 0x16,
0x1a, 0x01, 0xda, 0xc4, 0x21, 0xad, 0xa7, 0xbe, 0x27, 0x6b, 0x21, 0x41, 0x37, 0x33, 0x5a, 0xb3,
0x69, 0x54, 0x21, 0x6a, 0xf7, 0x4a, 0xc6, 0x8e, 0x14, 0xba, 0x3e, 0x87, 0x5c, 0xc6, 0x71, 0xcf,
0x76, 0xf1, 0x9e, 0x3d, 0x78, 0x1c, 0x35, 0xab, 0xd9, 0x1c, 0x53, 0xa8, 0x92, 0xe3, 0x25, 0xf5,
0x3d, 0x32, 0x0c, 0x6c, 0x6f, 0x28, 0xe7, 0x45, 0xfa, 0x1c, 0x7a, 0x02, 0x67, 0x37, 0x31, 0xe3,
0x6e, 0x93, 0xd0, 0x1e, 0x10, 0xc9, 0x70, 0x35, 0x9b, 0xe1, 0x14, 0xf2, 0x8c, 0x2c, 0x1d, 0x68,
0xa5, 0xfe, 0x03, 0x83, 0xae, 0xab, 0xe3, 0x46, 0xf5, 0x7f, 0x9d, 0xee, 0x5b, 0xb9, 0x70, 0x23,
0x6e, 0x36, 0x34, 0x93, 0xff, 0x0f, 0x41, 0x5f, 0xca, 0x22, 0x30, 0x35, 0x02, 0xef, 0x5e, 0xcf,
0x83, 0x1a, 0xb1, 0x7a, 0xc8, 0xfd, 0xe9, 0x38, 0x56, 0xca, 0xbf, 0x1f, 0x74, 0x8f, 0x1a, 0xd5,
0xe9, 0x73, 0xe8, 0xfb, 0x70, 0x66, 0x6a, 0x50, 0x8f, 0xbe, 0xac, 0x22, 0x9f, 0x35, 0xcf, 0x3f,
0x8e, 0xc3, 0xc3, 0x74, 0x34, 0x64, 0x4b, 0x3f, 0xf5, 0xc7, 0x8e, 0xfc, 0xd2, 0xc7, 0xc8, 0x1f,
0x25, 0xfd, 0xcc, 0x1c, 0xc6, 0x80, 0xa6, 0x47, 0xf5, 0xe8, 0x6d, 0x15, 0x8b, 0xcc, 0xbf, 0x0b,
0x74, 0x57, 0xf2, 0xa2, 0x47, 0x26, 0x1f, 0xb3, 0x68, 0x4d, 0x5f, 0xba, 0x94, 0x6c, 0x33, 0xc7,
0xf3, 0x6a, 0xb6, 0xd9, 0x13, 0x72, 0xee, 0xd4, 0xc9, 0x09, 0xb0, 0xda, 0x56, 0xca, 0xa9, 0xb5,
0xda, 0xa9, 0xd5, 0x03, 0x65, 0x7d, 0x0e, 0xed, 0x25, 0x92, 0x30, 0xba, 0x92, 0xe5, 0x13, 0xc9,
0xc7, 0x92, 0xe3, 0xcc, 0xd5, 0x03, 0xd8, 0xc4, 0xe1, 0x5d, 0x1c, 0x06, 0xf6, 0x80, 0xa4, 0x89,
0x8a, 0xc5, 0x04, 0x41, 0x12, 0xbd, 0x7a, 0x2c, 0x9e, 0x14, 0x7b, 0xf5, 0x2f, 0x35, 0xa8, 0x32,
0x9b, 0xd1, 0xfa, 0xf0, 0xff, 0x34, 0xfe, 0x02, 0xd2, 0xf8, 0x23, 0x68, 0xa5, 0xc6, 0xff, 0xea,
0x34, 0xae, 0xfe, 0x8f, 0xc0, 0x71, 0x0e, 0xd2, 0x07, 0x34, 0x3d, 0xdc, 0x56, 0x07, 0x56, 0xe6,
0x10, 0xfc, 0x38, 0x1e, 0x8f, 0xa0, 0x95, 0x9a, 0xe4, 0xaa, 0x4f, 0xa0, 0x1e, 0xf7, 0xe6, 0x38,
0xc1, 0xf4, 0x00, 0x52, 0x7d, 0x82, 0xcc, 0x41, 0xe5, 0x71, 0x3c, 0x1e, 0xf0, 0xf9, 0x78, 0x74,
0x1f, 0xb8, 0x9a, 0x15, 0x9d, 0xa9, 0x97, 0xd5, 0x97, 0x9f, 0xaf, 0x5f, 0x7c, 0x3d, 0x7b, 0x04,
0xad, 0xd4, 0x1c, 0x41, 0x6d, 0x5d, 0xf5, 0xb0, 0xe1, 0x38, 0xea, 0x9f, 0x63, 0x06, 0xbe, 0x07,
0x15, 0xfe, 0xfc, 0x8f, 0x2e, 0xaa, 0x6f, 0x47, 0xb1, 0xd1, 0x40, 0xf7, 0xe8, 0xf1, 0x01, 0x19,
0x3b, 0x21, 0x95, 0x7e, 0x1b, 0xca, 0x2c, 0x5e, 0x90, 0xf2, 0xc2, 0x12, 0x7f, 0xe4, 0xef, 0x1e,
0x39, 0x07, 0x90, 0xf4, 0x5e, 0x74, 0x3a, 0x5f, 0x7b, 0xe7, 0xe1, 0xea, 0xd0, 0x0e, 0x0f, 0xc6,
0x7d, 0x6a, 0x88, 0x1b, 0x1c, 0xf3, 0x6d, 0xdb, 0x17, 0xbf, 0x6e, 0xc8, 0xbc, 0x76, 0x83, 0x51,
0xba, 0xc1, 0x8e, 0x31, 0xea, 0xf7, 0x2b, 0x6c, 0x79, 0xeb, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
0xa5, 0x1e, 0x78, 0x64, 0x71, 0x2e, 0x00, 0x00,
// 2760 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3a, 0x4b, 0x6f, 0x1c, 0x59,
0xd5, 0xae, 0x7e, 0xd9, 0x7d, 0xfa, 0x99, 0xeb, 0xc4, 0xd3, 0xe9, 0x6f, 0x92, 0x38, 0x95, 0xc9,
0xe3, 0xcb, 0x30, 0x4e, 0x70, 0x06, 0xc1, 0x08, 0x58, 0x8c, 0x6d, 0xe2, 0x31, 0x49, 0x3c, 0x4e,
0xd9, 0x09, 0x10, 0x45, 0x2a, 0xaa, 0xbb, 0x6e, 0xb7, 0x4b, 0xa9, 0x47, 0xa7, 0x6e, 0xf5, 0x24,
0x0e, 0xdb, 0x11, 0x4f, 0x21, 0xc4, 0x8a, 0x0d, 0x62, 0x05, 0x82, 0x59, 0x8c, 0x58, 0xb0, 0x62,
0xc7, 0x0f, 0xe0, 0x17, 0xb0, 0x40, 0xec, 0xe0, 0x0f, 0xb0, 0x44, 0xa0, 0xfb, 0xa8, 0xea, 0x7a,
0xdc, 0xb2, 0xbb, 0xed, 0xc9, 0x24, 0x42, 0xec, 0xea, 0x9e, 0x3a, 0xf7, 0x9c, 0x73, 0xcf, 0xfb,
0x3e, 0xe0, 0xd4, 0xd3, 0x31, 0xf6, 0x0f, 0xf4, 0xbe, 0xe7, 0xf9, 0xe6, 0xca, 0xc8, 0xf7, 0x02,
0x0f, 0x21, 0xc7, 0xb2, 0x3f, 0x1a, 0x13, 0x3e, 0x5a, 0x61, 0xff, 0xbb, 0xf5, 0xbe, 0xe7, 0x38,
0x9e, 0xcb, 0x61, 0xdd, 0x7a, 0x1c, 0xa3, 0xdb, 0xb4, 0xdc, 0x00, 0xfb, 0xae, 0x61, 0x87, 0x7f,
0x49, 0x7f, 0x1f, 0x3b, 0x86, 0x18, 0xb5, 0x4d, 0x23, 0x30, 0xe2, 0xf4, 0xd5, 0x8f, 0x15, 0x58,
0xda, 0xdd, 0xf7, 0x9e, 0xad, 0x7b, 0xb6, 0x8d, 0xfb, 0x81, 0xe5, 0xb9, 0x44, 0xc3, 0x4f, 0xc7,
0x98, 0x04, 0xe8, 0x26, 0x94, 0x7a, 0x06, 0xc1, 0x1d, 0x65, 0x59, 0xb9, 0x56, 0x5b, 0x7d, 0x73,
0x25, 0x21, 0x89, 0x10, 0xe1, 0x1e, 0x19, 0xae, 0x19, 0x04, 0x6b, 0x0c, 0x13, 0x21, 0x28, 0x99,
0xbd, 0xad, 0x8d, 0x4e, 0x61, 0x59, 0xb9, 0x56, 0xd4, 0xd8, 0x37, 0x7a, 0x0b, 0x1a, 0xfd, 0x88,
0xf6, 0xd6, 0x06, 0xe9, 0x14, 0x97, 0x8b, 0xd7, 0x8a, 0x5a, 0x12, 0xa8, 0xfe, 0x56, 0x81, 0x37,
0x32, 0x62, 0x90, 0x91, 0xe7, 0x12, 0x8c, 0x6e, 0x41, 0x85, 0x04, 0x46, 0x30, 0x26, 0x42, 0x92,
0xff, 0x93, 0x4a, 0xb2, 0xcb, 0x50, 0x34, 0x81, 0x9a, 0x65, 0x5b, 0x90, 0xb0, 0x45, 0x5f, 0x84,
0xd3, 0x96, 0x7b, 0x0f, 0x3b, 0x9e, 0x7f, 0xa0, 0x8f, 0xb0, 0xdf, 0xc7, 0x6e, 0x60, 0x0c, 0x71,
0x28, 0xe3, 0x62, 0xf8, 0x6f, 0x67, 0xf2, 0x4b, 0xfd, 0x8d, 0x02, 0x67, 0xa8, 0xa4, 0x3b, 0x86,
0x1f, 0x58, 0x2f, 0x41, 0x5f, 0x2a, 0xd4, 0xe3, 0x32, 0x76, 0x8a, 0xec, 0x5f, 0x02, 0x46, 0x71,
0x46, 0x21, 0x7b, 0xba, 0xb6, 0x12, 0x13, 0x37, 0x01, 0x53, 0x7f, 0x2d, 0x0c, 0x1b, 0x97, 0xf3,
0x24, 0x0a, 0x4d, 0xf3, 0x2c, 0x64, 0x79, 0x1e, 0x47, 0x9d, 0x7f, 0x57, 0xe0, 0xcc, 0x5d, 0xcf,
0x30, 0x27, 0x86, 0xff, 0xfc, 0xd5, 0xf9, 0x75, 0xa8, 0xf0, 0x28, 0xe9, 0x94, 0x18, 0xaf, 0xcb,
0x49, 0x5e, 0x22, 0x82, 0x26, 0x12, 0xee, 0x32, 0x80, 0x26, 0x26, 0xa1, 0xcb, 0xd0, 0xf4, 0xf1,
0xc8, 0xb6, 0xfa, 0x86, 0xee, 0x8e, 0x9d, 0x1e, 0xf6, 0x3b, 0xe5, 0x65, 0xe5, 0x5a, 0x59, 0x6b,
0x08, 0xe8, 0x36, 0x03, 0xaa, 0xbf, 0x54, 0xa0, 0xa3, 0x61, 0x1b, 0x1b, 0x04, 0xbf, 0xca, 0xc5,
0x2e, 0x41, 0xc5, 0xf5, 0x4c, 0xbc, 0xb5, 0xc1, 0x16, 0x5b, 0xd4, 0xc4, 0x48, 0xfd, 0x49, 0x81,
0x1b, 0xe2, 0x35, 0xf7, 0xeb, 0x98, 0xb1, 0xca, 0x9f, 0x8d, 0xb1, 0x2a, 0x32, 0x63, 0xfd, 0x69,
0x62, 0xac, 0xd7, 0x5d, 0x21, 0x13, 0x83, 0x96, 0x13, 0x06, 0xfd, 0x0e, 0x9c, 0x5d, 0xf7, 0xb1,
0x11, 0xe0, 0xfb, 0xb4, 0x68, 0xac, 0xef, 0x1b, 0xae, 0x8b, 0xed, 0x70, 0x09, 0x69, 0xe6, 0x8a,
0x84, 0x79, 0x07, 0xe6, 0x47, 0xbe, 0xf7, 0xfc, 0x20, 0x92, 0x3b, 0x1c, 0xaa, 0xbf, 0x53, 0xa0,
0x2b, 0xa3, 0x7d, 0x92, 0xfc, 0x72, 0x09, 0x1a, 0xa2, 0xfa, 0x71, 0x6a, 0x8c, 0x67, 0x55, 0xab,
0x3f, 0x8d, 0x71, 0x40, 0x37, 0xe1, 0x34, 0x47, 0xf2, 0x31, 0x19, 0xdb, 0x41, 0x84, 0x5b, 0x64,
0xb8, 0x88, 0xfd, 0xd3, 0xd8, 0x2f, 0x31, 0x43, 0xfd, 0x44, 0x81, 0xb3, 0x9b, 0x38, 0x88, 0x8c,
0x48, 0xb9, 0xe2, 0xd7, 0x34, 0x65, 0x7f, 0xaa, 0x40, 0x57, 0x26, 0xeb, 0x49, 0xd4, 0xfa, 0x08,
0x96, 0x22, 0x1e, 0xba, 0x89, 0x49, 0xdf, 0xb7, 0x46, 0xcc, 0x99, 0x59, 0x02, 0xaf, 0xad, 0x5e,
0x5a, 0xc9, 0x36, 0x18, 0x2b, 0x69, 0x09, 0xce, 0x44, 0x24, 0x36, 0x62, 0x14, 0xd4, 0x9f, 0x2a,
0x70, 0x66, 0x13, 0x07, 0xbb, 0x78, 0xe8, 0x60, 0x37, 0xd8, 0x72, 0x07, 0xde, 0xf1, 0xf5, 0x7a,
0x1e, 0x80, 0x08, 0x3a, 0x51, 0x71, 0x89, 0x41, 0xa6, 0xd1, 0x31, 0xeb, 0x65, 0xd2, 0xf2, 0x9c,
0x44, 0x77, 0x5f, 0x82, 0xb2, 0xe5, 0x0e, 0xbc, 0x50, 0x55, 0x17, 0x64, 0xaa, 0x8a, 0x33, 0xe3,
0xd8, 0xaa, 0xcb, 0xa5, 0xd8, 0x37, 0x7c, 0xf3, 0x2e, 0x36, 0x4c, 0xec, 0x9f, 0xc0, 0xdd, 0xd2,
0xcb, 0x2e, 0x48, 0x96, 0xfd, 0x03, 0x05, 0xde, 0xc8, 0x30, 0x3c, 0xc9, 0xba, 0xbf, 0x0c, 0x25,
0xdb, 0x22, 0xc1, 0x61, 0x1e, 0x12, 0x63, 0x76, 0xd7, 0x22, 0x81, 0xc6, 0x26, 0xa8, 0x03, 0x68,
0xa5, 0x7e, 0xa0, 0x8b, 0x50, 0x17, 0x41, 0xaa, 0xbb, 0x86, 0xc3, 0x97, 0x5e, 0xd5, 0x6a, 0x02,
0xb6, 0x6d, 0x38, 0x38, 0x96, 0xc0, 0x0a, 0xf1, 0x04, 0x46, 0xf3, 0x8f, 0x61, 0x9a, 0x3e, 0x26,
0x44, 0xc4, 0x77, 0x38, 0x54, 0xff, 0x55, 0x80, 0xa5, 0xf7, 0x4d, 0x53, 0x96, 0xd8, 0x66, 0x57,
0x71, 0x1e, 0xfb, 0x69, 0xa2, 0x3a, 0x93, 0xb4, 0x4a, 0x33, 0x24, 0xad, 0x72, 0x5e, 0xd2, 0x42,
0x9b, 0xd0, 0x20, 0x18, 0x3f, 0xd1, 0x47, 0x1e, 0x61, 0x51, 0xc7, 0x6a, 0x54, 0x6d, 0x55, 0x4d,
0xae, 0x26, 0xea, 0xf4, 0xef, 0x91, 0xe1, 0x8e, 0xc0, 0xd4, 0xea, 0x74, 0x62, 0x38, 0x42, 0x0f,
0x60, 0x69, 0x68, 0x7b, 0x3d, 0xc3, 0xd6, 0x09, 0x36, 0x6c, 0x6c, 0xea, 0x22, 0xa2, 0x48, 0x67,
0x7e, 0x3a, 0x97, 0x3e, 0xcd, 0xa7, 0xef, 0xb2, 0xd9, 0xe2, 0x07, 0x51, 0xff, 0xa6, 0xc0, 0x59,
0x0d, 0x3b, 0xde, 0x47, 0xf8, 0xbf, 0xd5, 0x04, 0xea, 0xcf, 0x15, 0xa8, 0xd3, 0x76, 0xe8, 0x1e,
0x0e, 0x0c, 0xaa, 0x09, 0xf4, 0x1e, 0x54, 0x6d, 0xcf, 0x30, 0xf5, 0xe0, 0x60, 0xc4, 0x97, 0xd6,
0x4c, 0x2f, 0x8d, 0x6b, 0x8f, 0x4e, 0xda, 0x3b, 0x18, 0x61, 0x6d, 0xc1, 0x16, 0x5f, 0xd3, 0x04,
0x71, 0xa6, 0x3e, 0x14, 0x65, 0x2d, 0x7d, 0x11, 0x96, 0xbe, 0x65, 0x04, 0xfd, 0xfd, 0x0d, 0x47,
0x88, 0x49, 0x5e, 0x8d, 0xce, 0xa7, 0x69, 0x4b, 0xa2, 0xe4, 0x59, 0x96, 0x79, 0x1a, 0xdd, 0x87,
0xae, 0x3c, 0x14, 0x66, 0x88, 0x25, 0xcf, 0x58, 0x7b, 0x57, 0x39, 0x4e, 0x7b, 0xb7, 0x0e, 0x0d,
0xfc, 0xbc, 0x6f, 0x8f, 0x4d, 0xac, 0x73, 0xee, 0xdc, 0xcf, 0xcf, 0x4b, 0xb8, 0xc7, 0xdd, 0xbc,
0x2e, 0x26, 0x6d, 0x09, 0x19, 0xb8, 0xa9, 0x1d, 0x1c, 0x18, 0x9d, 0x05, 0x26, 0xc6, 0x72, 0x9e,
0xa9, 0x43, 0xff, 0xe0, 0xe6, 0xa6, 0x23, 0xf5, 0xdf, 0x0a, 0x9c, 0xe5, 0x66, 0xc2, 0x76, 0x60,
0xbc, 0x5a, 0x4b, 0x45, 0x56, 0x28, 0xcd, 0x68, 0x85, 0x98, 0x06, 0xaa, 0x33, 0x6b, 0xe0, 0x17,
0x25, 0x68, 0x09, 0xf5, 0x52, 0x0c, 0x16, 0x3f, 0x6f, 0x42, 0x35, 0x2a, 0xe7, 0xa2, 0xdd, 0x9c,
0x00, 0xd0, 0x32, 0xd4, 0x62, 0xde, 0x23, 0x16, 0x1a, 0x07, 0x4d, 0xb5, 0xda, 0xb0, 0x39, 0x2b,
0xc5, 0x9a, 0xb3, 0x73, 0x00, 0x03, 0x7b, 0x4c, 0xf6, 0xf5, 0xc0, 0x72, 0xb0, 0x68, 0x91, 0xab,
0x0c, 0xb2, 0x67, 0x39, 0x18, 0xbd, 0x0f, 0xf5, 0x9e, 0xe5, 0xda, 0xde, 0x50, 0x1f, 0x19, 0xc1,
0x3e, 0xe9, 0x54, 0x72, 0xfd, 0xe5, 0xb6, 0x85, 0x6d, 0x73, 0x8d, 0xe1, 0x6a, 0x35, 0x3e, 0x67,
0x87, 0x4e, 0x41, 0xe7, 0xa1, 0xe6, 0x8e, 0x1d, 0xdd, 0x1b, 0xe8, 0xbe, 0xf7, 0x8c, 0x7a, 0x1c,
0x63, 0xe1, 0x8e, 0x9d, 0x0f, 0x07, 0x9a, 0xf7, 0x8c, 0xa0, 0xaf, 0x41, 0x95, 0x16, 0x56, 0x62,
0x7b, 0x43, 0xd2, 0x59, 0x98, 0x8a, 0xfe, 0x64, 0x02, 0x9d, 0x6d, 0x52, 0x3f, 0x62, 0xb3, 0xab,
0xd3, 0xcd, 0x8e, 0x26, 0xa0, 0x2b, 0xd0, 0xec, 0x7b, 0xce, 0xc8, 0x60, 0x1a, 0xba, 0xed, 0x7b,
0x4e, 0x07, 0x58, 0xac, 0xa6, 0xa0, 0x68, 0x1d, 0x6a, 0x96, 0x6b, 0xe2, 0xe7, 0x22, 0x6a, 0x6a,
0x8c, 0x8f, 0x2a, 0x33, 0x39, 0x63, 0xb4, 0x45, 0x71, 0x99, 0xd1, 0xc1, 0x0a, 0x3f, 0x09, 0xad,
0xf5, 0xc2, 0xa2, 0x3a, 0xb1, 0x5e, 0xe0, 0x4e, 0x9d, 0x5b, 0x51, 0xc0, 0x76, 0xad, 0x17, 0x58,
0xfd, 0x7d, 0x01, 0x9a, 0x49, 0x0a, 0xb4, 0xcc, 0x0f, 0x18, 0x24, 0x74, 0x8b, 0x70, 0x48, 0xe9,
0x61, 0xd7, 0xe8, 0xd9, 0x34, 0x96, 0x4d, 0xfc, 0x9c, 0x79, 0xc5, 0x82, 0x56, 0xe3, 0x30, 0x46,
0x80, 0x5a, 0x97, 0xcb, 0xcd, 0x9a, 0x0b, 0xde, 0x26, 0x54, 0x19, 0x84, 0xb5, 0x16, 0x1d, 0x98,
0xe7, 0xf2, 0x85, 0x3e, 0x11, 0x0e, 0xe9, 0x9f, 0xde, 0xd8, 0x62, 0x5c, 0xb9, 0x4f, 0x84, 0x43,
0xb4, 0x01, 0x75, 0x4e, 0x72, 0x64, 0xf8, 0x86, 0x13, 0x7a, 0xc4, 0x45, 0x69, 0xa0, 0xde, 0xc1,
0x07, 0x0f, 0x0d, 0x7b, 0x8c, 0x77, 0x0c, 0xcb, 0xd7, 0xb8, 0x06, 0x77, 0xd8, 0x2c, 0x74, 0x0d,
0xda, 0x9c, 0xca, 0xc0, 0xb2, 0xb1, 0xf0, 0x2d, 0x9a, 0x8b, 0xaa, 0x5a, 0x93, 0xc1, 0x6f, 0x5b,
0x36, 0xe6, 0xee, 0x13, 0x2d, 0x81, 0xe9, 0x6c, 0x81, 0x7b, 0x0f, 0x83, 0x30, 0x8d, 0xfd, 0xa3,
0x00, 0x8b, 0x34, 0x88, 0xc2, 0xe2, 0x7b, 0xfc, 0x3c, 0x72, 0x0e, 0xc0, 0x24, 0x81, 0x9e, 0xc8,
0x25, 0x55, 0x93, 0x04, 0xdb, 0x3c, 0x9d, 0xbc, 0x17, 0xa6, 0x8a, 0xe2, 0x21, 0x6d, 0x5f, 0x32,
0xa8, 0xb3, 0x49, 0xfb, 0x58, 0x07, 0x28, 0x97, 0xa0, 0x41, 0xbc, 0xb1, 0xdf, 0xc7, 0x7a, 0x62,
0x23, 0x5b, 0xe7, 0xc0, 0x6d, 0x79, 0xb6, 0xab, 0x48, 0x0f, 0x72, 0x62, 0x69, 0x6b, 0x7e, 0xe6,
0xb4, 0xf5, 0x57, 0x05, 0x96, 0xc4, 0xa6, 0xff, 0xe4, 0xda, 0xce, 0xcb, 0xda, 0x61, 0x8e, 0x2a,
0x1e, 0xb2, 0x81, 0x2c, 0x4d, 0x51, 0x73, 0xcb, 0x92, 0x9a, 0x9b, 0xdc, 0x44, 0x55, 0xd2, 0x9b,
0x28, 0xf5, 0xfb, 0x0a, 0x34, 0x76, 0xb1, 0xe1, 0xf7, 0xf7, 0xc3, 0x75, 0xbd, 0x0b, 0x45, 0x1f,
0x3f, 0x15, 0xcb, 0x4a, 0xc5, 0xbb, 0x18, 0x24, 0x26, 0x68, 0x14, 0x1d, 0x5d, 0x80, 0x9a, 0xe9,
0xd8, 0xa9, 0x9d, 0x3a, 0x98, 0x8e, 0x1d, 0xf6, 0x5b, 0x49, 0x41, 0x8a, 0x19, 0x41, 0x3e, 0x56,
0xa0, 0x7e, 0x9f, 0x37, 0x5d, 0x5c, 0x8e, 0x5b, 0x71, 0x39, 0x2e, 0x4a, 0xe5, 0x88, 0xe3, 0x7f,
0x46, 0x62, 0xfc, 0x4c, 0x81, 0xa5, 0x0f, 0x0c, 0xd7, 0xf4, 0x06, 0x83, 0x93, 0x1b, 0x7c, 0x3d,
0xca, 0x7e, 0x5b, 0xb3, 0x6c, 0x1a, 0x13, 0x93, 0xd4, 0x1f, 0x16, 0x00, 0x51, 0xef, 0x5c, 0x33,
0x6c, 0xc3, 0xed, 0xe3, 0xe3, 0x4b, 0x73, 0x19, 0x9a, 0x89, 0x98, 0x8a, 0x0e, 0xc0, 0xe3, 0x41,
0x45, 0xd0, 0x1d, 0x68, 0xf6, 0x38, 0x2b, 0xdd, 0xc7, 0x06, 0xf1, 0x5c, 0xe6, 0x97, 0xcd, 0xd5,
0xb7, 0x64, 0x62, 0xef, 0xf9, 0xd6, 0x70, 0x88, 0xfd, 0x75, 0xcf, 0x35, 0xf9, 0x66, 0xa3, 0xd1,
0x0b, 0xc5, 0xa4, 0x53, 0x99, 0x3d, 0xa2, 0x04, 0x13, 0x76, 0x85, 0x10, 0x65, 0x18, 0x82, 0xde,
0x86, 0x53, 0xc9, 0x7d, 0xc8, 0xc4, 0x91, 0xdb, 0x24, 0xbe, 0xc5, 0xa0, 0xc6, 0xf9, 0x1e, 0xa0,
0xa8, 0xcf, 0x65, 0xed, 0x14, 0xab, 0x16, 0xd3, 0x1c, 0x5c, 0xbd, 0x09, 0x55, 0x33, 0x9c, 0x29,
0xbc, 0x62, 0x02, 0xa0, 0xd9, 0x86, 0x4b, 0xa8, 0xd3, 0xc0, 0xc7, 0x66, 0xd8, 0x49, 0x70, 0xe0,
0x5d, 0x06, 0x53, 0x3f, 0x2d, 0x40, 0x3b, 0xbe, 0xb7, 0x99, 0x9a, 0xf7, 0xcb, 0x39, 0xc6, 0x3a,
0x64, 0x23, 0x57, 0x3a, 0xc1, 0x46, 0x2e, 0xbb, 0xd1, 0x2c, 0x1f, 0x6f, 0xa3, 0xa9, 0xfe, 0x4a,
0x81, 0x56, 0xea, 0xd4, 0x28, 0xdd, 0xd3, 0x29, 0xd9, 0x9e, 0xee, 0x2b, 0x50, 0xa6, 0x8d, 0x0e,
0x66, 0x4a, 0x6a, 0xca, 0xfb, 0x8d, 0x24, 0x55, 0x8d, 0x4f, 0x40, 0x37, 0x60, 0x51, 0x72, 0xd3,
0x20, 0x4c, 0x89, 0xb2, 0x17, 0x0d, 0xea, 0x1f, 0x4b, 0x50, 0x8b, 0xe9, 0xe3, 0x88, 0x76, 0x74,
0x9a, 0x1d, 0x5b, 0x6a, 0x79, 0xc5, 0xec, 0xf2, 0x72, 0x8e, 0xda, 0xd1, 0x59, 0x58, 0x70, 0xb0,
0xc3, 0xeb, 0xbd, 0x68, 0x3e, 0x1c, 0xec, 0xd0, 0x6a, 0x4f, 0x7f, 0xd1, 0x5e, 0x92, 0x35, 0x92,
0xbc, 0xc2, 0xcd, 0xbb, 0x63, 0x87, 0xb5, 0x91, 0xc9, 0x56, 0x67, 0xfe, 0x90, 0x56, 0x67, 0x21,
0xd9, 0xea, 0x24, 0xc2, 0xa1, 0x9a, 0x0e, 0x87, 0x69, 0x3b, 0xc4, 0x9b, 0xb0, 0xd8, 0x67, 0x47,
0xbe, 0xe6, 0xda, 0xc1, 0x7a, 0xf4, 0xab, 0x53, 0x63, 0x3d, 0x99, 0xec, 0x17, 0xba, 0x4d, 0x9d,
0x4b, 0xb4, 0x83, 0xcc, 0xca, 0x75, 0x66, 0x65, 0x79, 0x27, 0x25, 0x6c, 0xc3, 0x8d, 0x1c, 0xe6,
0x44, 0x36, 0x4a, 0xf7, 0xa6, 0x8d, 0x63, 0xf5, 0xa6, 0x17, 0xa0, 0x16, 0x9e, 0xfb, 0x5b, 0x26,
0xe9, 0x34, 0x79, 0x6e, 0x12, 0xa0, 0x2d, 0x93, 0x30, 0xcd, 0x7b, 0x74, 0xdb, 0x68, 0x92, 0x4e,
0x8b, 0xfd, 0x9d, 0x67, 0xe6, 0x32, 0x89, 0xfa, 0x49, 0x11, 0x9a, 0x93, 0xe6, 0x65, 0xea, 0x54,
0x30, 0xcd, 0x8d, 0xd9, 0x36, 0xb4, 0x27, 0xc7, 0xb3, 0x4c, 0x4b, 0x87, 0xf6, 0x5f, 0xe9, 0x83,
0xd9, 0xd6, 0x28, 0x15, 0x73, 0x89, 0x53, 0x8a, 0xd2, 0x4c, 0xa7, 0x14, 0x27, 0xbc, 0x58, 0xb9,
0x05, 0x67, 0x7c, 0xde, 0x3b, 0x99, 0x7a, 0x62, 0xd9, 0xbc, 0x0d, 0x39, 0x1d, 0xfe, 0xdc, 0x89,
0x2f, 0x3f, 0x27, 0x8c, 0xe7, 0xf3, 0xc2, 0x38, 0x6d, 0xc6, 0x85, 0xb4, 0x19, 0xd5, 0x07, 0xb0,
0xf8, 0xc0, 0x25, 0xe3, 0x1e, 0xe9, 0xfb, 0x56, 0x0f, 0x87, 0x9b, 0xef, 0xa9, 0xec, 0xd5, 0x85,
0x05, 0x91, 0x88, 0xb9, 0xad, 0xaa, 0x5a, 0x34, 0x56, 0x7f, 0xac, 0xc0, 0x52, 0x96, 0x2e, 0x73,
0x85, 0x49, 0x94, 0x2b, 0x89, 0x28, 0xff, 0x36, 0x2c, 0x4e, 0xc8, 0xeb, 0x09, 0xca, 0xb5, 0xd5,
0xab, 0x32, 0xa3, 0x48, 0x04, 0xd7, 0xd0, 0x84, 0x46, 0x08, 0x53, 0xff, 0xa9, 0xc0, 0x29, 0x11,
0x2f, 0x14, 0x36, 0x64, 0xc7, 0x16, 0xb4, 0xf2, 0x78, 0xae, 0x6d, 0xb9, 0x51, 0x17, 0x2d, 0xd6,
0xc8, 0x81, 0xa2, 0x8b, 0xfe, 0x00, 0x5a, 0x02, 0x29, 0x2a, 0x20, 0x53, 0xf6, 0x29, 0x4d, 0x3e,
0x2f, 0x2a, 0x1d, 0x97, 0xa1, 0xe9, 0x0d, 0x06, 0x71, 0x7e, 0x3c, 0x03, 0x36, 0x04, 0x54, 0x30,
0xfc, 0x26, 0xb4, 0x43, 0xb4, 0x59, 0x4b, 0x56, 0x4b, 0x4c, 0x8c, 0x8e, 0x1d, 0x7f, 0xa4, 0x40,
0x27, 0x59, 0xc0, 0x62, 0xcb, 0x9f, 0xbd, 0x45, 0xfa, 0x6a, 0xf2, 0x78, 0xff, 0xf2, 0x21, 0xf2,
0x4c, 0xf8, 0x84, 0x87, 0xfc, 0x7f, 0x51, 0xa0, 0xa6, 0x09, 0xb7, 0xa3, 0xec, 0xcf, 0x01, 0x4c,
0x1c, 0x33, 0x2c, 0x28, 0x91, 0x5f, 0x52, 0xe3, 0xc4, 0x9c, 0xc1, 0x32, 0x25, 0x15, 0x85, 0x21,
0x4d, 0x92, 0x01, 0x75, 0xef, 0xcc, 0x21, 0xa0, 0x49, 0x4b, 0x76, 0x93, 0xec, 0x1b, 0xbe, 0xa9,
0x0b, 0xe2, 0xa1, 0x3a, 0x97, 0x73, 0x8f, 0xe9, 0x85, 0x98, 0x5a, 0x83, 0xc4, 0x46, 0xc9, 0x84,
0x57, 0x4e, 0x26, 0xbc, 0x6d, 0xa8, 0xc7, 0x67, 0x52, 0x17, 0xb7, 0xd9, 0x91, 0x7e, 0xe8, 0xe2,
0x7c, 0x84, 0xae, 0x40, 0xcb, 0x74, 0xf4, 0xc4, 0xf9, 0x3e, 0x6f, 0x77, 0x1a, 0x51, 0x7d, 0xa1,
0xb5, 0xe9, 0xfa, 0x0b, 0x68, 0x26, 0x33, 0x17, 0xaa, 0xc3, 0xc2, 0xb6, 0x17, 0x7c, 0xe3, 0xb9,
0x45, 0x82, 0xf6, 0x1c, 0x6a, 0x02, 0x6c, 0x7b, 0xc1, 0x8e, 0x8f, 0x09, 0x76, 0x83, 0xb6, 0x82,
0x00, 0x2a, 0x1f, 0xba, 0x1b, 0x16, 0x79, 0xd2, 0x2e, 0xa0, 0x45, 0xd1, 0x58, 0x18, 0xf6, 0x96,
0x48, 0x07, 0xed, 0x22, 0x9d, 0x1e, 0x8d, 0x4a, 0xa8, 0x0d, 0xf5, 0x08, 0x65, 0x73, 0xe7, 0x41,
0xbb, 0x8c, 0xaa, 0x50, 0xe6, 0x9f, 0x95, 0xeb, 0x26, 0xb4, 0xd3, 0x7d, 0x2b, 0xa5, 0xf9, 0xc0,
0xbd, 0xe3, 0x7a, 0xcf, 0x22, 0x50, 0x7b, 0x0e, 0xd5, 0x60, 0x5e, 0xec, 0x05, 0xda, 0x0a, 0x6a,
0x41, 0x2d, 0xd6, 0x86, 0xb7, 0x0b, 0x14, 0xb0, 0xe9, 0x8f, 0xfa, 0xa2, 0x21, 0xe7, 0x22, 0x50,
0x17, 0xdf, 0xf0, 0x9e, 0xb9, 0xed, 0xd2, 0xf5, 0x35, 0x58, 0x08, 0x53, 0x2a, 0x45, 0xe5, 0xd4,
0x5d, 0x3a, 0x6c, 0xcf, 0xa1, 0x53, 0xd0, 0x48, 0xdc, 0xac, 0xb7, 0x15, 0x84, 0xa0, 0x99, 0x7c,
0xf5, 0xd0, 0x2e, 0xac, 0xfe, 0xa1, 0x0e, 0xc0, 0x7b, 0x4e, 0xcf, 0xf3, 0x4d, 0x34, 0x02, 0xb4,
0x89, 0x03, 0x5a, 0x4f, 0x3d, 0x37, 0xac, 0x85, 0x04, 0xdd, 0xcc, 0x69, 0xcd, 0xb2, 0xa8, 0x42,
0xd4, 0xee, 0x95, 0x9c, 0x19, 0x29, 0x74, 0x75, 0x0e, 0x39, 0x8c, 0xe3, 0x9e, 0xe5, 0xe0, 0x3d,
0xab, 0xff, 0x24, 0x6a, 0x56, 0xf3, 0x39, 0xa6, 0x50, 0x43, 0x8e, 0x97, 0xe4, 0xfb, 0xc8, 0xc0,
0xb7, 0xdc, 0x61, 0x78, 0x33, 0xa5, 0xce, 0xa1, 0xa7, 0x70, 0x7a, 0x13, 0x33, 0xee, 0x16, 0x09,
0xac, 0x3e, 0x09, 0x19, 0xae, 0xe6, 0x33, 0xcc, 0x20, 0xcf, 0xc8, 0xd2, 0x86, 0x56, 0xea, 0x95,
0x11, 0xba, 0x2e, 0x8f, 0x1b, 0xd9, 0x8b, 0xa8, 0xee, 0xdb, 0x53, 0xe1, 0x46, 0xdc, 0x2c, 0x68,
0x26, 0x5f, 0xe0, 0xa0, 0xff, 0xcf, 0x23, 0x90, 0x79, 0x64, 0xd0, 0xbd, 0x3e, 0x0d, 0x6a, 0xc4,
0xea, 0x11, 0xf7, 0xa7, 0xa3, 0x58, 0x49, 0x1f, 0x78, 0x74, 0x0f, 0xbb, 0x14, 0x54, 0xe7, 0xd0,
0x77, 0xe1, 0x54, 0xe6, 0x29, 0x04, 0xfa, 0x82, 0x8c, 0x7c, 0xde, 0x8b, 0x89, 0xa3, 0x38, 0x3c,
0x4a, 0x47, 0x43, 0xbe, 0xf4, 0x99, 0xa7, 0x33, 0xd3, 0x4b, 0x1f, 0x23, 0x7f, 0x98, 0xf4, 0x33,
0x73, 0x18, 0x03, 0xca, 0x3e, 0x86, 0x40, 0xef, 0xc8, 0x58, 0xe4, 0x3e, 0xc8, 0xe8, 0xae, 0x4c,
0x8b, 0x1e, 0x99, 0x7c, 0xcc, 0xa2, 0x35, 0xbd, 0xe9, 0x92, 0xb2, 0xcd, 0x7d, 0x00, 0x21, 0x67,
0x9b, 0xff, 0x06, 0x81, 0x3b, 0x75, 0xf2, 0x8e, 0x5d, 0x6e, 0x2b, 0xe9, 0xbb, 0x00, 0xb9, 0x53,
0xcb, 0xaf, 0xec, 0xd5, 0x39, 0xb4, 0x97, 0x48, 0xc2, 0xe8, 0x4a, 0x9e, 0x4f, 0x24, 0x0f, 0x4b,
0x8e, 0x32, 0x97, 0x0e, 0xb0, 0x89, 0x83, 0x7b, 0x38, 0xf0, 0xad, 0x3e, 0x49, 0x13, 0x15, 0x83,
0x09, 0x42, 0x48, 0xf4, 0xea, 0x91, 0x78, 0xf1, 0x24, 0x93, 0xba, 0x8e, 0x47, 0xb9, 0xeb, 0xce,
0x3e, 0x12, 0x90, 0x27, 0x99, 0x9c, 0xfb, 0x7d, 0x75, 0x6e, 0xf5, 0xcf, 0x35, 0xa8, 0x32, 0x0f,
0xa1, 0xd5, 0xe8, 0x7f, 0x45, 0xe3, 0x25, 0x14, 0x8d, 0xc7, 0xd0, 0x4a, 0x3d, 0x36, 0x90, 0xdb,
0x53, 0xfe, 0x22, 0xe1, 0x28, 0x77, 0xec, 0x01, 0xca, 0x5e, 0xa5, 0xcb, 0xc3, 0x38, 0xf7, 0xca,
0xfd, 0x28, 0x1e, 0x8f, 0xa1, 0x95, 0xba, 0x37, 0x96, 0xaf, 0x40, 0x7e, 0xb9, 0x3c, 0xc5, 0x0a,
0xb2, 0xd7, 0x9d, 0xf2, 0x15, 0xe4, 0x5e, 0x8b, 0x1e, 0xc5, 0xe3, 0x21, 0xbf, 0x8d, 0x8f, 0x76,
0x1f, 0x57, 0xf3, 0x72, 0x41, 0xea, 0x1c, 0xf7, 0xd5, 0x57, 0x87, 0x97, 0x5f, 0x3d, 0x1f, 0x43,
0x2b, 0x75, 0x6b, 0x21, 0xb7, 0xae, 0xfc, 0x6a, 0xe3, 0x28, 0xea, 0x9f, 0x63, 0xbe, 0xbf, 0x0f,
0x15, 0x7e, 0xd9, 0x80, 0x2e, 0xca, 0xf7, 0x62, 0xb1, 0x8b, 0x88, 0xee, 0xe1, 0x97, 0x15, 0x64,
0x6c, 0x07, 0x54, 0xfa, 0x6d, 0x28, 0xb3, 0x78, 0x41, 0xd2, 0xed, 0x51, 0xfc, 0x4a, 0xa1, 0x7b,
0xe8, 0xad, 0x43, 0x48, 0xef, 0x65, 0x17, 0x8f, 0xb5, 0x77, 0x1f, 0xad, 0x0e, 0xad, 0x60, 0x7f,
0xdc, 0xa3, 0x86, 0xb8, 0xc1, 0x31, 0xdf, 0xb1, 0x3c, 0xf1, 0x75, 0x23, 0xcc, 0x6b, 0x37, 0x18,
0xa5, 0x1b, 0x6c, 0x19, 0xa3, 0x5e, 0xaf, 0xc2, 0x86, 0xb7, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff,
0x78, 0x6f, 0x0c, 0x8d, 0x41, 0x30, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -2952,6 +3110,8 @@ type QueryCoordClient interface {
LoadBalance(ctx context.Context, in *LoadBalanceRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
// 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
GetShardLeaders(ctx context.Context, in *GetShardLeadersRequest, opts ...grpc.CallOption) (*GetShardLeadersResponse, error)
}
type queryCoordClient struct {
@ -3088,6 +3248,15 @@ func (c *queryCoordClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetri
return out, nil
}
func (c *queryCoordClient) GetShardLeaders(ctx context.Context, in *GetShardLeadersRequest, opts ...grpc.CallOption) (*GetShardLeadersResponse, error) {
out := new(GetShardLeadersResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.query.QueryCoord/GetShardLeaders", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// QueryCoordServer is the server API for QueryCoord service.
type QueryCoordServer interface {
GetComponentStates(context.Context, *internalpb.GetComponentStatesRequest) (*internalpb.ComponentStates, error)
@ -3105,6 +3274,8 @@ type QueryCoordServer interface {
LoadBalance(context.Context, *LoadBalanceRequest) (*commonpb.Status, error)
// 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
GetShardLeaders(context.Context, *GetShardLeadersRequest) (*GetShardLeadersResponse, error)
}
// UnimplementedQueryCoordServer can be embedded to have forward compatible implementations.
@ -3153,6 +3324,9 @@ 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) GetShardLeaders(ctx context.Context, req *GetShardLeadersRequest) (*GetShardLeadersResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetShardLeaders not implemented")
}
func RegisterQueryCoordServer(s *grpc.Server, srv QueryCoordServer) {
s.RegisterService(&_QueryCoord_serviceDesc, srv)
@ -3410,6 +3584,24 @@ func _QueryCoord_GetMetrics_Handler(srv interface{}, ctx context.Context, dec fu
return interceptor(ctx, in, info, handler)
}
func _QueryCoord_GetShardLeaders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetShardLeadersRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(QueryCoordServer).GetShardLeaders(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.query.QueryCoord/GetShardLeaders",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(QueryCoordServer).GetShardLeaders(ctx, req.(*GetShardLeadersRequest))
}
return interceptor(ctx, in, info, handler)
}
var _QueryCoord_serviceDesc = grpc.ServiceDesc{
ServiceName: "milvus.proto.query.QueryCoord",
HandlerType: (*QueryCoordServer)(nil),
@ -3470,6 +3662,10 @@ var _QueryCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "GetMetrics",
Handler: _QueryCoord_GetMetrics_Handler,
},
{
MethodName: "GetShardLeaders",
Handler: _QueryCoord_GetShardLeaders_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "query_coord.proto",

View File

@ -332,6 +332,24 @@ func (coord *QueryCoordMock) GetMetrics(ctx context.Context, req *milvuspb.GetMe
}, nil
}
func (coord *QueryCoordMock) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
if !coord.healthy() {
return &querypb.GetShardLeadersResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "unhealthy",
},
}, nil
}
return &querypb.GetShardLeadersResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "not implemented",
},
}, nil
}
func NewQueryCoordMock(opts ...QueryCoordMockOption) *QueryCoordMock {
coord := &QueryCoordMock{
nodeID: UniqueID(uniquegenerator.GetUniqueIntGeneratorIns().GetInt()),

View File

@ -1015,3 +1015,14 @@ func (qc *QueryCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRe
return getMetricsResponse, nil
}
// GetShardLeaders gets shard leaders of a certain collection
func (qc *QueryCoord) GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error) {
// TODO: to impl
return &querypb.GetShardLeadersResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "Not implemented",
},
}, nil
}

View File

@ -1168,6 +1168,8 @@ type QueryCoord interface {
LoadBalance(ctx context.Context, req *querypb.LoadBalanceRequest) (*commonpb.Status, error)
GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)
GetShardLeaders(ctx context.Context, req *querypb.GetShardLeadersRequest) (*querypb.GetShardLeadersResponse, error)
}
// QueryCoordComponent is used by grpc server of QueryCoord

View File

@ -27,6 +27,9 @@ import (
"github.com/milvus-io/milvus/internal/proto/querypb"
)
// Check if QueryCoordClient implements proto.QueryCoordClient
var _ querypb.QueryCoordClient = &QueryCoordClient{}
type QueryCoordClient struct {
Err error
}
@ -86,3 +89,7 @@ func (m *QueryCoordClient) LoadBalance(ctx context.Context, in *querypb.LoadBala
func (m *QueryCoordClient) GetMetrics(ctx context.Context, in *milvuspb.GetMetricsRequest, opts ...grpc.CallOption) (*milvuspb.GetMetricsResponse, error) {
return &milvuspb.GetMetricsResponse{}, m.Err
}
func (m *QueryCoordClient) GetShardLeaders(ctx context.Context, in *querypb.GetShardLeadersRequest, opts ...grpc.CallOption) (*querypb.GetShardLeadersResponse, error) {
return &querypb.GetShardLeadersResponse{}, m.Err
}