Commit f947ef51 authored by pengjun's avatar pengjun

#627 add query index

parent 491ce6b8
...@@ -983,7 +983,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -983,7 +983,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
return nil, pty.ErrPriceInvalid return nil, pty.ErrPriceInvalid
} }
ids, err := queryCollateralizeByStatus(action.localDB, pty.CollateralizeStatusCreated) ids, err := queryCollateralizeByStatus(action.localDB, pty.CollateralizeStatusCreated, 0)
if err != nil { if err != nil {
clog.Error("CollateralizePriceFeed", "get collateralize record error", err) clog.Error("CollateralizePriceFeed", "get collateralize record error", err)
return nil, err return nil, err
...@@ -1095,8 +1095,14 @@ func queryCollateralizeByID(db dbm.KV, collateralizeID string) (*pty.Collaterali ...@@ -1095,8 +1095,14 @@ func queryCollateralizeByID(db dbm.KV, collateralizeID string) (*pty.Collaterali
return &coll, nil return &coll, nil
} }
func queryCollateralizeByStatus(localdb dbm.Lister, status int32) ([]string, error) { func queryCollateralizeByStatus(localdb dbm.Lister, status int32, index int64) ([]string, error) {
data, err := localdb.List(calcCollateralizeStatusPrefix(status), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeStatusPrefix(status), calcCollateralizeStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeStatusPrefix(status), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Debug("queryCollateralizesByStatus", "error", err) clog.Debug("queryCollateralizesByStatus", "error", err)
return nil, err return nil, err
...@@ -1116,8 +1122,14 @@ func queryCollateralizeByStatus(localdb dbm.Lister, status int32) ([]string, err ...@@ -1116,8 +1122,14 @@ func queryCollateralizeByStatus(localdb dbm.Lister, status int32) ([]string, err
return ids, nil return ids, nil
} }
func queryCollateralizeByAddr(localdb dbm.Lister, addr string) ([]string, error) { func queryCollateralizeByAddr(localdb dbm.Lister, addr string, index int64) ([]string, error) {
data, err := localdb.List(calcCollateralizeAddrPrefix(addr), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeAddrPrefix(addr), calcCollateralizeAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Debug("queryCollateralizesByAddr", "error", err) clog.Debug("queryCollateralizesByAddr", "error", err)
return nil, err return nil, err
...@@ -1160,8 +1172,14 @@ func queryCollateralizeRecordByID(db dbm.KV, collateralizeID string, recordID st ...@@ -1160,8 +1172,14 @@ func queryCollateralizeRecordByID(db dbm.KV, collateralizeID string, recordID st
return nil, types.ErrNotFound return nil, types.ErrNotFound
} }
func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string) ([]*pty.BorrowRecord, error) { func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string, index int64) ([]*pty.BorrowRecord, error) {
data, err := localdb.List(calcCollateralizeRecordAddrPrefix(addr), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeRecordAddrPrefix(addr), calcCollateralizeRecordAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Debug("queryCollateralizeRecordByAddr", "error", err) clog.Debug("queryCollateralizeRecordByAddr", "error", err)
return nil, err return nil, err
...@@ -1187,7 +1205,7 @@ func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string) ...@@ -1187,7 +1205,7 @@ func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string)
return records, nil return records, nil
} }
func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int32) ([]*pty.BorrowRecord, error) { func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int32, index int64) ([]*pty.BorrowRecord, error) {
var statusKey string var statusKey string
if status == 0 { if status == 0 {
statusKey = "" statusKey = ""
...@@ -1195,7 +1213,13 @@ func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int3 ...@@ -1195,7 +1213,13 @@ func queryCollateralizeRecordByStatus(db dbm.KV, localdb dbm.Lister, status int3
statusKey = fmt.Sprintf("%d", status) statusKey = fmt.Sprintf("%d", status)
} }
data, err := localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), calcCollateralizeRecordStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcCollateralizeRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Debug("queryCollateralizeRecordByStatus", "error", err) clog.Debug("queryCollateralizeRecordByStatus", "error", err)
return nil, err return nil, err
......
...@@ -52,7 +52,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn ...@@ -52,7 +52,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn
func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByStatus) (types.Message, error) { func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByStatus) (types.Message, error) {
ids := &pty.RepCollateralizeIDs{} ids := &pty.RepCollateralizeIDs{}
collIDRecords, err := queryCollateralizeByStatus(c.GetLocalDB(), req.Status) collIDRecords, err := queryCollateralizeByStatus(c.GetLocalDB(), req.Status, req.Index)
if err != nil { if err != nil {
clog.Error("Query_CollateralizeByStatus", "get collateralize record error", err) clog.Error("Query_CollateralizeByStatus", "get collateralize record error", err)
return nil, err return nil, err
...@@ -64,7 +64,7 @@ func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByS ...@@ -64,7 +64,7 @@ func (c *Collateralize) Query_CollateralizeByStatus(req *pty.ReqCollateralizeByS
func (c *Collateralize) Query_CollateralizeByAddr(req *pty.ReqCollateralizeByAddr) (types.Message, error) { func (c *Collateralize) Query_CollateralizeByAddr(req *pty.ReqCollateralizeByAddr) (types.Message, error) {
ids := &pty.RepCollateralizeIDs{} ids := &pty.RepCollateralizeIDs{}
collIDRecords, err := queryCollateralizeByAddr(c.GetLocalDB(), req.Addr) collIDRecords, err := queryCollateralizeByAddr(c.GetLocalDB(), req.Addr, req.Index)
if err != nil { if err != nil {
clog.Error("Query_CollateralizeByAddr", "get collateralize record error", err) clog.Error("Query_CollateralizeByAddr", "get collateralize record error", err)
return nil, err return nil, err
...@@ -88,7 +88,7 @@ func (c *Collateralize) Query_CollateralizeRecordByID(req *pty.ReqCollateralizeR ...@@ -88,7 +88,7 @@ func (c *Collateralize) Query_CollateralizeRecordByID(req *pty.ReqCollateralizeR
func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) { func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{} ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr) records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Index)
if err != nil { if err != nil {
clog.Error("Query_CollateralizeRecordByAddr", "get collateralize record error", err) clog.Error("Query_CollateralizeRecordByAddr", "get collateralize record error", err)
return nil, err return nil, err
...@@ -100,7 +100,7 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz ...@@ -100,7 +100,7 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz
func (c *Collateralize) Query_CollateralizeRecordByStatus(req *pty.ReqCollateralizeRecordByStatus) (types.Message, error) { func (c *Collateralize) Query_CollateralizeRecordByStatus(req *pty.ReqCollateralizeRecordByStatus) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{} ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status) records, err := queryCollateralizeRecordByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status, req.Index)
if err != nil { if err != nil {
clog.Error("Query_CollateralizeRecordByStatus", "get collateralize record error", err) clog.Error("Query_CollateralizeRecordByStatus", "get collateralize record error", err)
return nil, err return nil, err
......
...@@ -160,11 +160,13 @@ message RepCollateralizeCurrentInfos { ...@@ -160,11 +160,13 @@ message RepCollateralizeCurrentInfos {
// 根据借贷状态查询 // 根据借贷状态查询
message ReqCollateralizeByStatus { message ReqCollateralizeByStatus {
int32 status = 1; int32 status = 1;
int64 index = 2;
} }
// 根据用户地址查询 // 根据用户地址查询
message ReqCollateralizeByAddr { message ReqCollateralizeByAddr {
string addr = 1; string addr = 1;
int64 index = 2;
} }
// 返回借贷ID列表 // 返回借贷ID列表
...@@ -176,12 +178,14 @@ message RepCollateralizeIDs { ...@@ -176,12 +178,14 @@ message RepCollateralizeIDs {
message ReqCollateralizeRecordByAddr { message ReqCollateralizeRecordByAddr {
string collateralizeId = 1; string collateralizeId = 1;
string addr = 2; string addr = 2;
int64 index = 3;
} }
// 根据状态和借贷ID混合查询具体借贷记录 // 根据状态和借贷ID混合查询具体借贷记录
message ReqCollateralizeRecordByStatus { message ReqCollateralizeRecordByStatus {
string collateralizeId = 1; string collateralizeId = 1;
int32 status = 2; int32 status = 2;
int64 index = 3;
} }
// 返回借贷记录 // 返回借贷记录
......
...@@ -1337,6 +1337,7 @@ func (m *RepCollateralizeCurrentInfos) GetInfos() []*RepCollateralizeCurrentInfo ...@@ -1337,6 +1337,7 @@ func (m *RepCollateralizeCurrentInfos) GetInfos() []*RepCollateralizeCurrentInfo
// 根据借贷状态查询 // 根据借贷状态查询
type ReqCollateralizeByStatus struct { type ReqCollateralizeByStatus struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1374,9 +1375,17 @@ func (m *ReqCollateralizeByStatus) GetStatus() int32 { ...@@ -1374,9 +1375,17 @@ func (m *ReqCollateralizeByStatus) GetStatus() int32 {
return 0 return 0
} }
func (m *ReqCollateralizeByStatus) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 根据用户地址查询 // 根据用户地址查询
type ReqCollateralizeByAddr struct { type ReqCollateralizeByAddr struct {
Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1414,6 +1423,13 @@ func (m *ReqCollateralizeByAddr) GetAddr() string { ...@@ -1414,6 +1423,13 @@ func (m *ReqCollateralizeByAddr) GetAddr() string {
return "" return ""
} }
func (m *ReqCollateralizeByAddr) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 返回借贷ID列表 // 返回借贷ID列表
type RepCollateralizeIDs struct { type RepCollateralizeIDs struct {
IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"` IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"`
...@@ -1458,6 +1474,7 @@ func (m *RepCollateralizeIDs) GetIDs() []string { ...@@ -1458,6 +1474,7 @@ func (m *RepCollateralizeIDs) GetIDs() []string {
type ReqCollateralizeRecordByAddr struct { type ReqCollateralizeRecordByAddr struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Index int64 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1502,10 +1519,18 @@ func (m *ReqCollateralizeRecordByAddr) GetAddr() string { ...@@ -1502,10 +1519,18 @@ func (m *ReqCollateralizeRecordByAddr) GetAddr() string {
return "" return ""
} }
func (m *ReqCollateralizeRecordByAddr) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 根据状态和借贷ID混合查询具体借贷记录 // 根据状态和借贷ID混合查询具体借贷记录
type ReqCollateralizeRecordByStatus struct { type ReqCollateralizeRecordByStatus struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1550,6 +1575,13 @@ func (m *ReqCollateralizeRecordByStatus) GetStatus() int32 { ...@@ -1550,6 +1575,13 @@ func (m *ReqCollateralizeRecordByStatus) GetStatus() int32 {
return 0 return 0
} }
func (m *ReqCollateralizeRecordByStatus) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 返回借贷记录 // 返回借贷记录
type RepCollateralizeRecords struct { type RepCollateralizeRecords struct {
Records []*BorrowRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` Records []*BorrowRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
...@@ -1711,76 +1743,77 @@ func init() { ...@@ -1711,76 +1743,77 @@ func init() {
func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) } func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) }
var fileDescriptor_a988fb4a61381972 = []byte{ var fileDescriptor_a988fb4a61381972 = []byte{
// 1127 bytes of a gzipped FileDescriptorProto // 1140 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xef, 0x6e, 0xdc, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xdd, 0x6e, 0xdc, 0x44,
0x10, 0xaf, 0xed, 0xfb, 0x93, 0x9b, 0xcb, 0xb5, 0xe9, 0x26, 0x04, 0x13, 0xa2, 0xe8, 0xb4, 0x42, 0x14, 0xae, 0xed, 0xfd, 0xc9, 0x9e, 0x4d, 0xda, 0x74, 0x12, 0x82, 0x09, 0x51, 0xb4, 0xb2, 0x90,
0xe2, 0x04, 0x25, 0x12, 0xd7, 0x0a, 0x51, 0x21, 0x21, 0x92, 0x6b, 0xab, 0x9c, 0x54, 0xa4, 0xca, 0x58, 0xf1, 0x13, 0x89, 0xb4, 0x42, 0x54, 0x48, 0x88, 0x64, 0xdb, 0x2a, 0x2b, 0x15, 0xa9, 0x32,
0x14, 0x84, 0x10, 0x20, 0xf9, 0xec, 0x4d, 0xb1, 0xe4, 0xd8, 0x8e, 0xbd, 0x17, 0x7a, 0x7c, 0xa7, 0x05, 0x21, 0x24, 0x90, 0xbc, 0xf6, 0xa4, 0x58, 0x72, 0x6c, 0x67, 0x3c, 0x1b, 0xb2, 0xdc, 0xd3,
0x5f, 0x79, 0x01, 0x5e, 0x80, 0x17, 0xe0, 0x3d, 0x78, 0x23, 0xb4, 0xb3, 0xeb, 0x7f, 0xeb, 0x73, 0x5b, 0x5e, 0x80, 0x17, 0xe0, 0x05, 0x78, 0x0f, 0xde, 0x08, 0xcd, 0x99, 0xf1, 0xdf, 0xd8, 0x8e,
0x74, 0x07, 0x7c, 0xe2, 0x4b, 0x94, 0x9d, 0xfd, 0xcd, 0x7a, 0xe6, 0x37, 0xbf, 0x9d, 0xd9, 0x83, 0x76, 0x81, 0x2b, 0x6e, 0x56, 0x3b, 0x67, 0xbe, 0x33, 0x73, 0xe6, 0x3b, 0xdf, 0x9c, 0x33, 0x86,
0x7d, 0x2f, 0x0e, 0x43, 0x97, 0xb3, 0xd4, 0x0d, 0x83, 0x5f, 0xd8, 0x69, 0x92, 0xc6, 0x3c, 0x26, 0x3d, 0x3f, 0x89, 0x22, 0x8f, 0x53, 0xe6, 0x45, 0xe1, 0x2f, 0xf4, 0x24, 0x65, 0x09, 0x4f, 0x48,
0x5d, 0xbe, 0x4a, 0x58, 0x46, 0xff, 0xea, 0xc0, 0x68, 0x56, 0xdd, 0x26, 0x13, 0xb8, 0x57, 0xc3, 0x9f, 0xaf, 0x52, 0x9a, 0x39, 0x7f, 0xf5, 0x60, 0x67, 0x56, 0x9d, 0x26, 0x53, 0x78, 0x50, 0xc3,
0xcf, 0x7d, 0xdb, 0x18, 0x1b, 0x93, 0x81, 0xa3, 0x9b, 0x09, 0x85, 0x5d, 0x1e, 0x73, 0x37, 0x3c, 0xcf, 0x03, 0xdb, 0x98, 0x18, 0xd3, 0x91, 0xab, 0x9b, 0x89, 0x03, 0xdb, 0x3c, 0xe1, 0x5e, 0x74,
0x77, 0x43, 0x37, 0xf2, 0x98, 0x6d, 0x8e, 0x8d, 0x89, 0xe5, 0xd4, 0x6c, 0x64, 0x0c, 0x43, 0x9f, 0xee, 0x45, 0x5e, 0xec, 0x53, 0xdb, 0x9c, 0x18, 0x53, 0xcb, 0xad, 0xd9, 0xc8, 0x04, 0xc6, 0x01,
0x2d, 0xf8, 0x8c, 0x05, 0x61, 0x10, 0xbd, 0xb2, 0x2d, 0x84, 0x54, 0x4d, 0xe4, 0x03, 0xd8, 0x0b, 0x5d, 0xf0, 0x19, 0x0d, 0xa3, 0x30, 0x7e, 0x6d, 0x5b, 0x08, 0xa9, 0x9a, 0xc8, 0x07, 0xb0, 0x1b,
0x83, 0xeb, 0x65, 0xe0, 0xbb, 0x3c, 0x88, 0x23, 0x47, 0xfc, 0xb5, 0x3b, 0x63, 0x63, 0x62, 0x3a, 0x85, 0xd7, 0xcb, 0x30, 0xf0, 0x78, 0x98, 0xc4, 0xae, 0xf8, 0xb5, 0x7b, 0x13, 0x63, 0x6a, 0xba,
0x0d, 0x3b, 0x79, 0x00, 0xf7, 0x33, 0xee, 0x2e, 0x82, 0x30, 0xe0, 0xab, 0x67, 0x8c, 0x49, 0x70, 0x0d, 0x3b, 0xf9, 0x08, 0x1e, 0x66, 0xdc, 0x5b, 0x84, 0x51, 0xc8, 0x57, 0xcf, 0x29, 0x95, 0xe0,
0x17, 0xc1, 0xcd, 0x0d, 0x72, 0x02, 0xe0, 0xa5, 0xcc, 0xe5, 0xec, 0xcc, 0xf7, 0x53, 0xbb, 0x87, 0x3e, 0x82, 0x9b, 0x13, 0xe4, 0x18, 0xc0, 0x67, 0xd4, 0xe3, 0xf4, 0x2c, 0x08, 0x98, 0x3d, 0xc0,
0x49, 0x54, 0x2c, 0xc4, 0x86, 0xfe, 0x42, 0x85, 0xde, 0xc7, 0xb8, 0xf2, 0x25, 0x79, 0x0c, 0xa3, 0x43, 0x54, 0x2c, 0xc4, 0x86, 0xe1, 0x42, 0x85, 0x3e, 0xc4, 0xb8, 0xf2, 0x21, 0x79, 0x02, 0x3b,
0x45, 0x9c, 0xa6, 0xf1, 0xcf, 0x0e, 0xf3, 0xe2, 0xd4, 0xcf, 0xec, 0x9d, 0xb1, 0x35, 0x19, 0x4e, 0x8b, 0x84, 0xb1, 0xe4, 0x67, 0x97, 0xfa, 0x09, 0x0b, 0x32, 0x7b, 0x6b, 0x62, 0x4d, 0xc7, 0xa7,
0xf7, 0x4f, 0x91, 0xb4, 0xd3, 0xf3, 0xca, 0x9e, 0x53, 0x47, 0x92, 0xcf, 0xe0, 0xee, 0x3c, 0xba, 0x7b, 0x27, 0x48, 0xda, 0xc9, 0x79, 0x65, 0xce, 0xad, 0x23, 0xc9, 0xe7, 0x70, 0x7f, 0x1e, 0xdf,
0x71, 0xc3, 0xc0, 0xcf, 0x7d, 0x07, 0xed, 0xbe, 0x1a, 0x94, 0x1c, 0x42, 0x2f, 0xe3, 0x2e, 0x5f, 0x78, 0x51, 0x18, 0xe4, 0xbe, 0xa3, 0x6e, 0x5f, 0x0d, 0x4a, 0x0e, 0x60, 0x90, 0x71, 0x8f, 0x2f,
0x66, 0x36, 0x8c, 0x8d, 0x49, 0xd7, 0x51, 0x2b, 0xf2, 0x09, 0x1c, 0x0a, 0xe6, 0x33, 0xfe, 0xbc, 0x33, 0x1b, 0x26, 0xc6, 0xb4, 0xef, 0xaa, 0x11, 0xf9, 0x14, 0x0e, 0x04, 0xf3, 0x19, 0x7f, 0x51,
0x64, 0xe4, 0x45, 0x1a, 0x78, 0xcc, 0x1e, 0x62, 0xf2, 0x2d, 0xbb, 0xe2, 0xbc, 0x84, 0xa5, 0x41, 0x32, 0xf2, 0x92, 0x85, 0x3e, 0xb5, 0xc7, 0x78, 0xf8, 0x8e, 0x59, 0xb1, 0x5e, 0x4a, 0x59, 0x98,
0xec, 0xdb, 0xbb, 0x98, 0xa0, 0x5a, 0x21, 0xe7, 0xe8, 0xf1, 0xf4, 0x75, 0x12, 0xa4, 0xec, 0x65, 0x04, 0xf6, 0x36, 0x1e, 0x50, 0x8d, 0x90, 0x73, 0xf4, 0x78, 0x76, 0x9b, 0x86, 0x8c, 0xbe, 0x0a,
0x70, 0xc5, 0xec, 0x11, 0x22, 0x1a, 0x76, 0x72, 0x00, 0xdd, 0x20, 0xf2, 0xd9, 0x6b, 0xfb, 0x2e, 0xaf, 0xa8, 0xbd, 0x83, 0x88, 0x86, 0x9d, 0xec, 0x43, 0x3f, 0x8c, 0x03, 0x7a, 0x6b, 0xdf, 0x47,
0x02, 0xe4, 0x82, 0x1c, 0xc1, 0x4e, 0x92, 0xb2, 0x39, 0x6e, 0xdc, 0xc3, 0x8d, 0x62, 0x4d, 0xff, 0x80, 0x1c, 0x90, 0x43, 0xd8, 0x4a, 0x19, 0x9d, 0xe3, 0xc4, 0x03, 0x9c, 0x28, 0xc6, 0xce, 0x9f,
0xb4, 0x60, 0xb7, 0x9a, 0xa6, 0x10, 0x81, 0xeb, 0x79, 0xf1, 0x32, 0xe2, 0x58, 0x09, 0x29, 0xa7, 0x16, 0x6c, 0x57, 0x8f, 0x29, 0x44, 0xe0, 0xf9, 0x7e, 0xb2, 0x8c, 0x39, 0x66, 0x42, 0xca, 0xa9,
0xaa, 0x89, 0x1c, 0xc3, 0x20, 0xe3, 0x6e, 0xca, 0x31, 0x12, 0xa9, 0xa3, 0xd2, 0x50, 0x97, 0xe4, 0x6a, 0x22, 0x47, 0x30, 0xca, 0xb8, 0xc7, 0x38, 0x46, 0x22, 0x75, 0x54, 0x1a, 0xea, 0x92, 0xfc,
0x37, 0x6e, 0xb8, 0x64, 0x4a, 0x48, 0xba, 0xb9, 0x8e, 0x94, 0x0c, 0x49, 0x2d, 0xe9, 0x66, 0xf1, 0xd6, 0x8b, 0x96, 0x54, 0x09, 0x49, 0x37, 0xd7, 0x91, 0x92, 0x21, 0xa9, 0x25, 0xdd, 0x2c, 0x76,
0x45, 0xa1, 0x42, 0x79, 0x5a, 0x57, 0x7e, 0xb1, 0x30, 0x68, 0xa2, 0x94, 0x07, 0xf5, 0x1a, 0xa2, 0x14, 0x2a, 0x94, 0xab, 0xf5, 0xe5, 0x8e, 0x85, 0x41, 0x13, 0xa5, 0x5c, 0x68, 0xd0, 0x10, 0x65,
0x2c, 0x48, 0x56, 0x45, 0xeb, 0xd7, 0x8a, 0xf6, 0x1e, 0x8c, 0x72, 0xac, 0x64, 0x78, 0x07, 0xbf, 0x41, 0xb2, 0x4a, 0xda, 0xb0, 0x96, 0xb4, 0xf7, 0x60, 0x27, 0xc7, 0x4a, 0x86, 0xb7, 0x70, 0x97,
0x52, 0x37, 0x0a, 0x91, 0xb2, 0xb2, 0x08, 0x03, 0x84, 0x54, 0x2c, 0x22, 0xce, 0x24, 0x65, 0x5f, 0xba, 0x51, 0x88, 0x94, 0x96, 0x49, 0x18, 0x21, 0xa4, 0x62, 0x11, 0x71, 0xa6, 0x8c, 0x7e, 0x5d,
0x55, 0x55, 0x51, 0x1a, 0x44, 0x19, 0x52, 0xe4, 0x78, 0xee, 0xa3, 0x14, 0x06, 0x4e, 0xb1, 0x2e, 0x55, 0x45, 0x69, 0x10, 0x69, 0x60, 0xc8, 0xf1, 0x3c, 0x40, 0x29, 0x8c, 0xdc, 0x62, 0x5c, 0x26,
0x0b, 0xb7, 0xdb, 0x56, 0xb8, 0x91, 0x56, 0xb8, 0x37, 0x06, 0xec, 0x9d, 0x65, 0x19, 0xe3, 0x98, 0x6e, 0xbb, 0x2b, 0x71, 0x3b, 0x5a, 0xe2, 0xde, 0x18, 0xb0, 0x7b, 0x96, 0x65, 0x94, 0xe3, 0xc1,
0x98, 0x2a, 0xde, 0x09, 0x80, 0x3c, 0x12, 0x03, 0x34, 0x64, 0x80, 0xa5, 0x45, 0x1c, 0xb8, 0xe0, 0x54, 0xf2, 0x8e, 0x01, 0xe4, 0x92, 0x18, 0xa0, 0x21, 0x03, 0x2c, 0x2d, 0x62, 0xc1, 0x05, 0x5f,
0x2b, 0x49, 0x91, 0x89, 0x14, 0x15, 0x6b, 0xb9, 0xe7, 0xc9, 0x3d, 0x2b, 0xdf, 0xf3, 0x8a, 0x3d, 0x49, 0x8a, 0x4c, 0xa4, 0xa8, 0x18, 0xcb, 0x39, 0x5f, 0xce, 0x59, 0xf9, 0x9c, 0x5f, 0xcc, 0x51,
0xc6, 0x7f, 0xaa, 0xd6, 0xa8, 0x58, 0xd3, 0xdf, 0x2d, 0xd8, 0xaf, 0x75, 0xa5, 0x33, 0x4f, 0xf0, 0xfe, 0x53, 0x35, 0x47, 0xc5, 0xd8, 0xf9, 0xdd, 0x82, 0xbd, 0x5a, 0x55, 0x3a, 0xf3, 0x05, 0xdf,
0x4d, 0x1e, 0x41, 0x4f, 0xde, 0x5f, 0x8c, 0x63, 0x38, 0x3d, 0x52, 0x97, 0xaa, 0x86, 0x9d, 0x21, 0xe4, 0x31, 0x0c, 0xe4, 0xfd, 0xc5, 0x38, 0xc6, 0xa7, 0x87, 0xea, 0x52, 0xd5, 0xb0, 0x33, 0x44,
0xe2, 0xe2, 0x8e, 0xa3, 0xb0, 0xc2, 0x4b, 0xde, 0x51, 0x8c, 0xaf, 0xc5, 0x4b, 0x0a, 0x56, 0x78, 0x5c, 0xdc, 0x73, 0x15, 0x56, 0x78, 0xc9, 0x3b, 0x8a, 0xf1, 0x75, 0x78, 0x49, 0xc1, 0x0a, 0x2f,
0x49, 0x2c, 0xf9, 0x18, 0xba, 0x29, 0x4b, 0xdc, 0x15, 0x06, 0x3e, 0x9c, 0xbe, 0xb3, 0xce, 0xc9, 0x89, 0x25, 0x9f, 0x40, 0x9f, 0xd1, 0xd4, 0x5b, 0x61, 0xe0, 0xe3, 0xd3, 0x77, 0xda, 0x9c, 0x5c,
0x11, 0x80, 0x8b, 0x3b, 0x8e, 0x44, 0x8a, 0x0f, 0xb9, 0x49, 0xc2, 0x22, 0x1f, 0x13, 0x6a, 0xf9, 0x01, 0xb8, 0xb8, 0xe7, 0x4a, 0xa4, 0xd8, 0xc8, 0x4b, 0x53, 0x1a, 0x07, 0x78, 0xa0, 0x8e, 0x8d,
0xd0, 0x19, 0x22, 0xc4, 0x87, 0x24, 0x96, 0x9c, 0x42, 0xe7, 0x92, 0x31, 0x1f, 0x45, 0x38, 0x9c, 0xce, 0x10, 0x21, 0x36, 0x92, 0x58, 0x72, 0x02, 0xbd, 0x4b, 0x4a, 0x03, 0x14, 0xe1, 0xf8, 0xd4,
0xda, 0xeb, 0x7c, 0x9e, 0x31, 0x26, 0x3c, 0x10, 0x27, 0x02, 0xf3, 0xc2, 0x38, 0x93, 0x82, 0x6c, 0x6e, 0xf3, 0x79, 0x4e, 0xa9, 0xf0, 0x40, 0x9c, 0x08, 0xcc, 0x8f, 0x92, 0x4c, 0x0a, 0xb2, 0x23,
0x09, 0x6c, 0x26, 0x00, 0x22, 0x30, 0x44, 0x8a, 0xc0, 0xae, 0xdc, 0xc8, 0x7d, 0x25, 0x1b, 0x5d, 0xb0, 0x99, 0x00, 0x88, 0xc0, 0x10, 0x29, 0x02, 0xbb, 0xf2, 0x62, 0xef, 0xb5, 0x2c, 0x74, 0x1d,
0x4b, 0x60, 0x5f, 0x22, 0x42, 0x04, 0x26, 0xb1, 0xe4, 0x2e, 0x98, 0x7c, 0xa5, 0x34, 0x67, 0xf2, 0x81, 0x7d, 0x85, 0x08, 0x11, 0x98, 0xc4, 0x92, 0xfb, 0x60, 0xf2, 0x95, 0xd2, 0x9c, 0xc9, 0x57,
0xd5, 0x79, 0x1f, 0xba, 0x37, 0xe2, 0x76, 0xd0, 0x3f, 0x0c, 0xad, 0x3c, 0xd2, 0x55, 0x6f, 0xf6, 0xe7, 0x43, 0xe8, 0xdf, 0x88, 0xdb, 0xe1, 0xfc, 0x61, 0x68, 0xe9, 0x91, 0xae, 0x7a, 0xb1, 0x37,
0xc6, 0x66, 0xcd, 0xde, 0xdc, 0xa6, 0xd9, 0x5b, 0x6d, 0xcd, 0xbe, 0x6c, 0x75, 0x9d, 0x6a, 0xab, 0xd6, 0x2b, 0xf6, 0xe6, 0x26, 0xc5, 0xde, 0xea, 0x2a, 0xf6, 0x65, 0xa9, 0xeb, 0x55, 0x4b, 0x9d,
0xa3, 0x0f, 0xe1, 0x7e, 0x9d, 0x7e, 0xd1, 0x6e, 0x4e, 0x00, 0xb2, 0x65, 0xc2, 0x52, 0xb1, 0xc8, 0xf3, 0x08, 0x1e, 0xd6, 0xe9, 0x17, 0xe5, 0xe6, 0x18, 0x20, 0x5b, 0xa6, 0x94, 0x89, 0x41, 0x66,
0x6c, 0x63, 0x6c, 0x89, 0xc9, 0x50, 0x5a, 0xe8, 0x63, 0x2d, 0x3f, 0x29, 0xa9, 0xc6, 0xc0, 0x33, 0x1b, 0x13, 0x4b, 0x74, 0x86, 0xd2, 0xe2, 0x3c, 0xd1, 0xce, 0x27, 0x25, 0xd5, 0x68, 0x78, 0x46,
0x9a, 0x03, 0x8f, 0x7e, 0xad, 0xb9, 0x4a, 0x5d, 0x6d, 0x31, 0x55, 0x0f, 0x14, 0xcb, 0xaa, 0x0d, 0xb3, 0xe1, 0x39, 0xdf, 0x68, 0xae, 0x52, 0x57, 0x1b, 0x74, 0xd5, 0x7d, 0xc5, 0xb2, 0x2a, 0x83,
0x2a, 0xca, 0xbf, 0x03, 0xd2, 0x54, 0xde, 0x16, 0xa7, 0x56, 0x1b, 0x85, 0x59, 0x6f, 0x14, 0xf4, 0x8a, 0xf2, 0xef, 0x81, 0x34, 0x95, 0xb7, 0xc1, 0xaa, 0xd5, 0x42, 0x61, 0xd6, 0x0b, 0x85, 0xf3,
0x57, 0xbd, 0x9c, 0x52, 0xa2, 0xff, 0xcd, 0xe9, 0x9b, 0x37, 0x6f, 0xfa, 0x83, 0x56, 0x2a, 0xa1, 0xab, 0x9e, 0x4e, 0x29, 0xd1, 0xff, 0x66, 0xf5, 0xf5, 0x8b, 0xb7, 0xf3, 0x83, 0x96, 0x2a, 0xa1,
0x7a, 0x71, 0xb4, 0xc0, 0xbd, 0x5c, 0x25, 0x92, 0xef, 0xae, 0x53, 0xac, 0x05, 0x55, 0x89, 0xea, 0x7a, 0xb1, 0xb4, 0xc0, 0xbd, 0x5a, 0xa5, 0x92, 0xef, 0xbe, 0x5b, 0x8c, 0x05, 0x55, 0xa9, 0xaa,
0x3b, 0xd6, 0xc4, 0x74, 0xe4, 0x42, 0x28, 0xe1, 0x26, 0x0e, 0x97, 0x57, 0xe2, 0x3b, 0x96, 0x50, 0x3b, 0xd6, 0xd4, 0x74, 0xe5, 0x40, 0x28, 0xe1, 0x26, 0x89, 0x96, 0x57, 0x62, 0x1f, 0x4b, 0x28,
0x82, 0x5c, 0xd1, 0xcf, 0x35, 0x0a, 0xf1, 0x8e, 0x6c, 0x9e, 0x24, 0x7d, 0x63, 0xc2, 0x81, 0xc3, 0x41, 0x8e, 0x9c, 0x2f, 0x34, 0x0a, 0xf1, 0x8e, 0xac, 0x7f, 0x48, 0xe7, 0x8d, 0x09, 0xfb, 0x2e,
0x3c, 0x16, 0x24, 0xfc, 0x9f, 0xbe, 0x98, 0xea, 0x2f, 0x12, 0xb3, 0xf1, 0x22, 0xd1, 0x06, 0xa5, 0xf5, 0x69, 0x98, 0xf2, 0x7f, 0xfa, 0x62, 0xaa, 0xbf, 0x48, 0xcc, 0xc6, 0x8b, 0x44, 0x6b, 0x94,
0xd5, 0x1c, 0x94, 0x55, 0xa6, 0x3b, 0x1a, 0xd3, 0xe5, 0x20, 0xea, 0xd6, 0x06, 0xd1, 0x31, 0x0c, 0x56, 0xb3, 0x51, 0x56, 0x99, 0xee, 0x69, 0x4c, 0x97, 0x8d, 0xa8, 0x5f, 0x6b, 0x44, 0x47, 0x30,
0x5e, 0x14, 0x23, 0xa4, 0x27, 0x47, 0x48, 0x61, 0x28, 0xc7, 0x44, 0xbf, 0x6d, 0x4c, 0xec, 0x68, 0x7a, 0x59, 0xb4, 0x90, 0x81, 0x6c, 0x21, 0x85, 0xa1, 0x6c, 0x13, 0xc3, 0xae, 0x36, 0xb1, 0xa5,
0x63, 0xa2, 0xa1, 0x17, 0x35, 0x29, 0x36, 0xe7, 0x81, 0x40, 0xc7, 0x2d, 0x19, 0xc0, 0xff, 0x6b, 0xb5, 0x89, 0x86, 0x5e, 0x54, 0xa7, 0x58, 0x9f, 0x07, 0x02, 0x3d, 0xaf, 0x64, 0x00, 0xff, 0xd7,
0x99, 0x59, 0x6d, 0xa3, 0xac, 0x53, 0x89, 0x91, 0x3e, 0x87, 0x83, 0x35, 0x61, 0x64, 0xe4, 0x11, 0x4e, 0x66, 0x75, 0xb5, 0xb2, 0x5e, 0x25, 0x46, 0xe7, 0x05, 0xec, 0xb7, 0x84, 0x91, 0x91, 0xc7,
0xf4, 0x53, 0xf5, 0xf6, 0x32, 0xf0, 0xed, 0x75, 0xb4, 0xbe, 0x77, 0xe3, 0x13, 0x2c, 0x87, 0xd2, 0x30, 0x64, 0xea, 0xed, 0x65, 0xe0, 0xdb, 0xeb, 0xb0, 0xbd, 0x76, 0xe3, 0x13, 0x2c, 0x87, 0x3a,
0x2f, 0x44, 0x75, 0xaf, 0x6b, 0x90, 0x79, 0x74, 0x19, 0x6f, 0x21, 0x90, 0xdf, 0x4c, 0x78, 0xd7, 0x5f, 0x8a, 0xec, 0x5e, 0xd7, 0x20, 0xf3, 0xf8, 0x32, 0xd9, 0x40, 0x20, 0xbf, 0x99, 0xf0, 0xae,
0x61, 0x49, 0x5d, 0x64, 0xcb, 0x34, 0x65, 0x11, 0xc7, 0x93, 0xca, 0xfa, 0x18, 0xb5, 0xfa, 0xfc, 0x4b, 0xd3, 0xba, 0xc8, 0x96, 0x8c, 0xd1, 0x98, 0xe3, 0x4a, 0x65, 0x7e, 0x8c, 0x5a, 0x7e, 0xfe,
0x6f, 0xdf, 0xd1, 0x74, 0x06, 0x6f, 0xad, 0xe3, 0x34, 0x13, 0xc1, 0x6a, 0xec, 0xe5, 0x6d, 0xb8, 0xb7, 0xef, 0x68, 0x67, 0x06, 0x6f, 0xb5, 0x71, 0x9a, 0x89, 0x60, 0x35, 0xf6, 0xf2, 0x32, 0xdc,
0x61, 0xa7, 0xdf, 0xc2, 0xf1, 0x2d, 0xac, 0x66, 0xe4, 0x53, 0x21, 0x8e, 0xcb, 0x38, 0x2f, 0x36, 0xb0, 0x3b, 0xdf, 0xc1, 0xd1, 0x1d, 0xac, 0x66, 0xe4, 0x33, 0x21, 0x8e, 0xcb, 0x24, 0x4f, 0xb6,
0x55, 0xc5, 0xbe, 0xc5, 0xc7, 0x91, 0x0e, 0x74, 0x0a, 0xb6, 0x1e, 0xde, 0xf9, 0x4a, 0x5d, 0x8b, 0xa3, 0x92, 0x7d, 0x87, 0x8f, 0x2b, 0x1d, 0x9c, 0x0b, 0xb0, 0xf5, 0xf0, 0xce, 0x57, 0xea, 0x5a,
0x96, 0x62, 0xd1, 0x07, 0x70, 0xd8, 0xf4, 0x41, 0x1a, 0x72, 0x51, 0x1b, 0xa5, 0xa8, 0xe9, 0xfb, 0x74, 0x25, 0xab, 0x90, 0xa2, 0x59, 0x95, 0xe2, 0x39, 0x1c, 0x34, 0x57, 0x42, 0x72, 0x72, 0xa9,
0xb0, 0xaf, 0xc7, 0x31, 0x7f, 0x92, 0x91, 0x3d, 0xb0, 0xe6, 0x4f, 0xf2, 0x8c, 0xc5, 0xbf, 0xf4, 0x1b, 0x15, 0xa9, 0xb7, 0xaf, 0xf1, 0x3e, 0xec, 0xe9, 0x31, 0xcf, 0x9f, 0x66, 0x64, 0x17, 0xac,
0x7b, 0x91, 0xe4, 0xf5, 0x1a, 0x81, 0xaa, 0xc3, 0xff, 0xd5, 0xdd, 0xa2, 0x0b, 0x38, 0x69, 0x3b, 0xf9, 0xd3, 0x9c, 0x1d, 0xf1, 0xd7, 0x61, 0x82, 0x90, 0xeb, 0x16, 0x31, 0xab, 0x2d, 0xff, 0xdd,
0x5d, 0xa5, 0xbb, 0xf9, 0xf9, 0x25, 0x31, 0x66, 0x8d, 0x98, 0x0b, 0x78, 0x5b, 0x4f, 0x35, 0xbf, 0x3d, 0x2c, 0x82, 0xb3, 0xaa, 0xc1, 0xdd, 0xc2, 0x71, 0xd7, 0x9e, 0x8a, 0xb0, 0xf5, 0x77, 0x2d,
0x90, 0x1f, 0xe9, 0x17, 0x72, 0xed, 0x8f, 0xa1, 0xe2, 0x26, 0xfe, 0xd8, 0xa4, 0x78, 0xeb, 0x0e, 0xa9, 0x35, 0xdb, 0xa9, 0xad, 0xed, 0x7c, 0x01, 0x6f, 0xeb, 0xb4, 0xe4, 0x17, 0xfd, 0x63, 0xfd,
0x73, 0xdb, 0xbc, 0x7b, 0x2a, 0xce, 0x5f, 0x17, 0x29, 0xf9, 0x10, 0x7a, 0x12, 0xa5, 0xde, 0x97, 0xa2, 0xb7, 0x7e, 0x64, 0x15, 0x37, 0xfc, 0xc7, 0x66, 0x92, 0x36, 0xae, 0x5c, 0x77, 0xf5, 0xd1,
0x6b, 0xe3, 0x54, 0x90, 0x45, 0x0f, 0x7f, 0x48, 0x3f, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x61, 0x67, 0x62, 0xfd, 0xb6, 0x48, 0xc9, 0x87, 0x30, 0x90, 0x28, 0xf5, 0x6e, 0x6d, 0x8d, 0x53, 0x41,
0x4f, 0x4b, 0xb2, 0x5f, 0x0f, 0x00, 0x00, 0x16, 0x03, 0xfc, 0x40, 0x7f, 0xf4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x1f, 0x4b, 0x7d,
0xb7, 0x0f, 0x00, 0x00,
} }
...@@ -864,7 +864,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro ...@@ -864,7 +864,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro
return nil, pty.ErrPriceInvalid return nil, pty.ErrPriceInvalid
} }
ids, err := queryIssuanceByStatus(action.localDB, pty.IssuanceStatusCreated) ids, err := queryIssuanceByStatus(action.localDB, pty.IssuanceStatusCreated, 0)
if err != nil { if err != nil {
clog.Error("IssuancePriceFeed", "get issuance record error", err) clog.Error("IssuancePriceFeed", "get issuance record error", err)
return nil, err return nil, err
...@@ -981,8 +981,14 @@ func queryIssuanceByID(db dbm.KV, issuanceID string) (*pty.Issuance, error) { ...@@ -981,8 +981,14 @@ func queryIssuanceByID(db dbm.KV, issuanceID string) (*pty.Issuance, error) {
} }
// 根据发行状态查找发行ID // 根据发行状态查找发行ID
func queryIssuanceByStatus(localdb dbm.Lister, status int32) ([]string, error) { func queryIssuanceByStatus(localdb dbm.Lister, status int32, index int64) ([]string, error) {
data, err := localdb.List(calcIssuanceStatusPrefix(status), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceStatusPrefix(status), calcIssuanceStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceStatusPrefix(status), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Debug("queryIssuancesByStatus", "error", err) clog.Debug("queryIssuancesByStatus", "error", err)
return nil, err return nil, err
...@@ -1026,7 +1032,7 @@ func queryIssuanceRecordByID(db dbm.KV, issuanceID string, debtID string) (*pty. ...@@ -1026,7 +1032,7 @@ func queryIssuanceRecordByID(db dbm.KV, issuanceID string, debtID string) (*pty.
} }
// 根据发行状态查找 // 根据发行状态查找
func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) ([]*pty.DebtRecord, error) { func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32, index int64) ([]*pty.DebtRecord, error) {
var statusKey string var statusKey string
if status == 0 { if status == 0 {
statusKey = "" statusKey = ""
...@@ -1034,7 +1040,13 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) ( ...@@ -1034,7 +1040,13 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) (
statusKey = fmt.Sprintf("%d", status) statusKey = fmt.Sprintf("%d", status)
} }
data, err := localdb.List(calcIssuanceRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceRecordStatusPrefix(statusKey), calcIssuanceRecordStatusKey(status, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceRecordStatusPrefix(statusKey), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Error("queryIssuanceRecordsByStatus", "error", err) clog.Error("queryIssuanceRecordsByStatus", "error", err)
return nil, err return nil, err
...@@ -1061,8 +1073,14 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) ( ...@@ -1061,8 +1073,14 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.Lister, status int32) (
} }
// 根据用户地址查找 // 根据用户地址查找
func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string) ([]*pty.DebtRecord, error) { func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.Lister, addr string, index int64) ([]*pty.DebtRecord, error) {
data, err := localdb.List(calcIssuanceRecordAddrPrefix(addr), nil, DefultCount, ListDESC) var data [][]byte
var err error
if index != 0 {
data, err = localdb.List(calcIssuanceRecordAddrPrefix(addr), calcIssuanceRecordAddrKey(addr, index), DefultCount, ListDESC)
} else {
data, err = localdb.List(calcIssuanceRecordAddrPrefix(addr), nil, DefultCount, ListDESC)
}
if err != nil { if err != nil {
clog.Error("queryIssuanceRecordByAddr", "error", err) clog.Error("queryIssuanceRecordByAddr", "error", err)
return nil, err return nil, err
......
...@@ -52,7 +52,7 @@ func (c *Issuance) Query_IssuanceInfoByIDs(req *pty.ReqIssuanceInfos) (types.Mes ...@@ -52,7 +52,7 @@ func (c *Issuance) Query_IssuanceInfoByIDs(req *pty.ReqIssuanceInfos) (types.Mes
func (c *Issuance) Query_IssuanceByStatus(req *pty.ReqIssuanceByStatus) (types.Message, error) { func (c *Issuance) Query_IssuanceByStatus(req *pty.ReqIssuanceByStatus) (types.Message, error) {
ids := &pty.RepIssuanceIDs{} ids := &pty.RepIssuanceIDs{}
issuIDRecords, err := queryIssuanceByStatus(c.GetLocalDB(), req.Status) issuIDRecords, err := queryIssuanceByStatus(c.GetLocalDB(), req.Status, req.Index)
if err != nil { if err != nil {
clog.Error("Query_IssuanceByStatus", "get issuance error", err) clog.Error("Query_IssuanceByStatus", "get issuance error", err)
return nil, err return nil, err
...@@ -76,7 +76,7 @@ func (c *Issuance) Query_IssuanceRecordByID(req *pty.ReqIssuanceDebtInfo) (types ...@@ -76,7 +76,7 @@ func (c *Issuance) Query_IssuanceRecordByID(req *pty.ReqIssuanceDebtInfo) (types
func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr) (types.Message, error) { func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr) (types.Message, error) {
ret := &pty.RepIssuanceRecords{} ret := &pty.RepIssuanceRecords{}
records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr) records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Index)
if err != nil { if err != nil {
clog.Error("Query_IssuanceDebtInfoByAddr", "get issuance record error", err) clog.Error("Query_IssuanceDebtInfoByAddr", "get issuance record error", err)
return nil, err return nil, err
...@@ -88,7 +88,7 @@ func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr ...@@ -88,7 +88,7 @@ func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr
func (c *Issuance) Query_IssuanceRecordsByStatus(req *pty.ReqIssuanceRecordsByStatus) (types.Message, error) { func (c *Issuance) Query_IssuanceRecordsByStatus(req *pty.ReqIssuanceRecordsByStatus) (types.Message, error) {
ret := &pty.RepIssuanceRecords{} ret := &pty.RepIssuanceRecords{}
records, err := queryIssuanceRecordsByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status) records, err := queryIssuanceRecordsByStatus(c.GetStateDB(), c.GetLocalDB(), req.Status, req.Index)
if err != nil { if err != nil {
clog.Error("Query_IssuanceDebtInfoByStatus", "get issuance record error", err) clog.Error("Query_IssuanceDebtInfoByStatus", "get issuance record error", err)
return nil, err return nil, err
......
...@@ -150,6 +150,7 @@ message RepIssuanceCurrentInfos { ...@@ -150,6 +150,7 @@ message RepIssuanceCurrentInfos {
// 根据发行状态查询 // 根据发行状态查询
message ReqIssuanceByStatus { message ReqIssuanceByStatus {
int32 status = 1; int32 status = 1;
int64 index = 2;
} }
// 返回借贷ID列表 // 返回借贷ID列表
...@@ -161,12 +162,14 @@ message RepIssuanceIDs { ...@@ -161,12 +162,14 @@ message RepIssuanceIDs {
message ReqIssuanceRecordsByAddr { message ReqIssuanceRecordsByAddr {
string issuanceId = 1; string issuanceId = 1;
string addr = 2; string addr = 2;
int64 index = 3;
} }
// 根据状态查询发行记录 // 根据状态查询发行记录
message ReqIssuanceRecordsByStatus { message ReqIssuanceRecordsByStatus {
string issuanceId = 1; string issuanceId = 1;
int32 status = 2; int32 status = 2;
int64 index = 3;
} }
// 返回记录列表 // 返回记录列表
......
...@@ -1235,6 +1235,7 @@ func (m *RepIssuanceCurrentInfos) GetInfos() []*RepIssuanceCurrentInfo { ...@@ -1235,6 +1235,7 @@ func (m *RepIssuanceCurrentInfos) GetInfos() []*RepIssuanceCurrentInfo {
// 根据发行状态查询 // 根据发行状态查询
type ReqIssuanceByStatus struct { type ReqIssuanceByStatus struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1272,6 +1273,13 @@ func (m *ReqIssuanceByStatus) GetStatus() int32 { ...@@ -1272,6 +1273,13 @@ func (m *ReqIssuanceByStatus) GetStatus() int32 {
return 0 return 0
} }
func (m *ReqIssuanceByStatus) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 返回借贷ID列表 // 返回借贷ID列表
type RepIssuanceIDs struct { type RepIssuanceIDs struct {
IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"` IDs []string `protobuf:"bytes,1,rep,name=IDs,proto3" json:"IDs,omitempty"`
...@@ -1316,6 +1324,7 @@ func (m *RepIssuanceIDs) GetIDs() []string { ...@@ -1316,6 +1324,7 @@ func (m *RepIssuanceIDs) GetIDs() []string {
type ReqIssuanceRecordsByAddr struct { type ReqIssuanceRecordsByAddr struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"` Addr string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Index int64 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1360,10 +1369,18 @@ func (m *ReqIssuanceRecordsByAddr) GetAddr() string { ...@@ -1360,10 +1369,18 @@ func (m *ReqIssuanceRecordsByAddr) GetAddr() string {
return "" return ""
} }
func (m *ReqIssuanceRecordsByAddr) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 根据状态查询发行记录 // 根据状态查询发行记录
type ReqIssuanceRecordsByStatus struct { type ReqIssuanceRecordsByStatus struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -1408,6 +1425,13 @@ func (m *ReqIssuanceRecordsByStatus) GetStatus() int32 { ...@@ -1408,6 +1425,13 @@ func (m *ReqIssuanceRecordsByStatus) GetStatus() int32 {
return 0 return 0
} }
func (m *ReqIssuanceRecordsByStatus) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
// 返回记录列表 // 返回记录列表
type RepIssuanceRecords struct { type RepIssuanceRecords struct {
Records []*DebtRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"` Records []*DebtRecord `protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
...@@ -1566,72 +1590,72 @@ func init() { ...@@ -1566,72 +1590,72 @@ func init() {
func init() { proto.RegisterFile("issuance.proto", fileDescriptor_7110f4228953d675) } func init() { proto.RegisterFile("issuance.proto", fileDescriptor_7110f4228953d675) }
var fileDescriptor_7110f4228953d675 = []byte{ var fileDescriptor_7110f4228953d675 = []byte{
// 1060 bytes of a gzipped FileDescriptorProto // 1069 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6e, 0xdb, 0x46, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xdd, 0x6e, 0xe3, 0x44,
0x10, 0x36, 0x49, 0x51, 0xb2, 0x46, 0xb6, 0xec, 0x6c, 0x1c, 0x97, 0x08, 0xda, 0x40, 0x58, 0xf4, 0x14, 0xae, 0xed, 0x38, 0x3f, 0x27, 0x6d, 0xda, 0x9d, 0xed, 0x16, 0x6b, 0x05, 0xab, 0xc8, 0xe2,
0xa0, 0xf4, 0xc7, 0x6e, 0xed, 0xa2, 0x40, 0x6f, 0xf5, 0x4f, 0x5b, 0x0b, 0x68, 0x82, 0x82, 0x35, 0x22, 0x0b, 0xa8, 0x85, 0x16, 0x21, 0x71, 0x47, 0xd3, 0x02, 0x8d, 0xc4, 0x22, 0x64, 0x56, 0x2b,
0x82, 0x5e, 0x69, 0x72, 0x1d, 0x10, 0xa0, 0x45, 0x86, 0x5c, 0x19, 0xd1, 0xbd, 0xf7, 0xde, 0xfb, 0x6e, 0x5d, 0x7b, 0xba, 0x32, 0x72, 0x63, 0xaf, 0x3d, 0xa9, 0x36, 0xf7, 0xdc, 0x73, 0xcf, 0x53,
0x14, 0x7d, 0x81, 0xbe, 0x55, 0x1f, 0xa0, 0x98, 0xd9, 0x25, 0x97, 0x3f, 0x52, 0x24, 0xf4, 0xd0, 0xf0, 0x02, 0xbc, 0x15, 0x0f, 0x80, 0xce, 0x99, 0xb1, 0xc7, 0x7f, 0x69, 0x22, 0x2e, 0xf6, 0xa6,
0x8b, 0xa1, 0x9d, 0xfd, 0x38, 0x3b, 0x33, 0xdf, 0xc7, 0x8f, 0x6b, 0x18, 0xc7, 0x45, 0xb1, 0x08, 0xca, 0x9c, 0xf9, 0xe6, 0xfc, 0x7e, 0xf3, 0x79, 0x0a, 0x93, 0x28, 0xcf, 0x57, 0xfe, 0x32, 0xe0,
0xe6, 0xa1, 0x38, 0xc9, 0xf2, 0x54, 0xa6, 0xcc, 0x95, 0xcb, 0x4c, 0x14, 0xfc, 0x9f, 0x1e, 0xec, 0xa7, 0x69, 0x96, 0x88, 0x84, 0xd9, 0x62, 0x9d, 0xf2, 0xdc, 0xfd, 0xb7, 0x07, 0xc3, 0x85, 0xda,
0xce, 0xf4, 0x0e, 0x7b, 0x01, 0x50, 0xa2, 0x66, 0x91, 0x67, 0x4d, 0xac, 0xe9, 0xd0, 0xaf, 0x45, 0x61, 0x2f, 0x00, 0x0a, 0xd4, 0x22, 0x74, 0x8c, 0xa9, 0x31, 0x1b, 0x79, 0x15, 0x0b, 0x73, 0x61,
0x18, 0x87, 0x3d, 0x99, 0xca, 0x20, 0xb9, 0x0c, 0x12, 0x8c, 0x78, 0xf6, 0xc4, 0x9a, 0x3a, 0x7e, 0x5f, 0x24, 0xc2, 0x8f, 0xe7, 0x7e, 0x8c, 0x16, 0xc7, 0x9c, 0x1a, 0x33, 0xcb, 0xab, 0xd9, 0xd8,
0x23, 0xc6, 0x26, 0x30, 0x8a, 0xc4, 0x9d, 0xbc, 0x12, 0x71, 0x12, 0xcf, 0xdf, 0x7a, 0x0e, 0x41, 0x14, 0xc6, 0x21, 0xbf, 0x15, 0x57, 0x3c, 0x8a, 0xa3, 0xe5, 0x5b, 0xc7, 0x22, 0x48, 0xd5, 0xc4,
0xea, 0x21, 0xf6, 0x19, 0x1c, 0x26, 0xf1, 0xbb, 0x45, 0x1c, 0x05, 0x32, 0x4e, 0xe7, 0x3e, 0xfe, 0x3e, 0x83, 0xa3, 0x38, 0x7a, 0xb7, 0x8a, 0x42, 0x5f, 0x44, 0xc9, 0xd2, 0xc3, 0xbf, 0x4e, 0x6f,
0xf5, 0x7a, 0x13, 0x6b, 0x6a, 0xfb, 0x9d, 0x38, 0x9b, 0xc2, 0x41, 0x98, 0x26, 0x49, 0x20, 0x45, 0x6a, 0xcc, 0x4c, 0xaf, 0x65, 0x67, 0x33, 0x38, 0x0c, 0x92, 0x38, 0xf6, 0x05, 0xcf, 0xfc, 0xf8,
0x1e, 0x24, 0x6f, 0x82, 0x64, 0x21, 0x3c, 0x97, 0x32, 0xb6, 0xc3, 0xec, 0x63, 0x18, 0xe2, 0x21, 0x8d, 0x1f, 0xaf, 0xb8, 0x63, 0x93, 0xc7, 0xa6, 0x99, 0x7d, 0x0c, 0x23, 0x0c, 0x22, 0x31, 0x7d,
0x0a, 0xd3, 0x27, 0x8c, 0x09, 0xb0, 0x73, 0x55, 0x95, 0x2f, 0xc2, 0x34, 0x8f, 0x0a, 0x6f, 0x30, 0xc2, 0x68, 0x03, 0xbb, 0x90, 0x59, 0x79, 0x3c, 0x48, 0xb2, 0x30, 0x77, 0x06, 0x53, 0x6b, 0x36,
0x71, 0xa6, 0xa3, 0xb3, 0x27, 0x27, 0x34, 0x83, 0x93, 0xeb, 0x6a, 0xc7, 0xaf, 0xa3, 0xd8, 0x77, 0x3e, 0x7f, 0x72, 0x4a, 0x3d, 0x38, 0xbd, 0x2e, 0x77, 0xbc, 0x2a, 0x8a, 0x7d, 0x0b, 0x93, 0x68,
0x30, 0x8e, 0xe7, 0x8f, 0x41, 0x12, 0x47, 0xe5, 0x73, 0xbb, 0xeb, 0x9e, 0x6b, 0x01, 0xd9, 0x31, 0xf9, 0xe0, 0xc7, 0x51, 0x58, 0x9c, 0x1b, 0x6e, 0x3a, 0xd7, 0x00, 0xb2, 0x13, 0xe8, 0xe7, 0xc2,
0xf4, 0x0b, 0x19, 0xc8, 0x45, 0xe1, 0x0d, 0x27, 0xd6, 0xd4, 0xf5, 0xf5, 0x8a, 0x7d, 0x0b, 0xc7, 0x17, 0xab, 0xdc, 0x19, 0x4d, 0x8d, 0x99, 0xed, 0xa9, 0x15, 0xfb, 0x06, 0x4e, 0x30, 0xeb, 0x5c,
0x58, 0x75, 0x21, 0x7f, 0x36, 0x9d, 0xfe, 0x92, 0xc7, 0xa1, 0xf0, 0x80, 0x26, 0xb0, 0x66, 0x17, 0xfc, 0xa4, 0x2b, 0xfd, 0x25, 0x8b, 0x02, 0xee, 0x00, 0x75, 0x60, 0xc3, 0x2e, 0xfa, 0x4b, 0x79,
0xf3, 0x65, 0x22, 0x8f, 0xd3, 0xc8, 0x1b, 0x51, 0x6b, 0x7a, 0x45, 0xb3, 0xa4, 0x27, 0x7e, 0x78, 0x16, 0x25, 0xa1, 0x33, 0xa6, 0xd2, 0xd4, 0x8a, 0x7a, 0x49, 0x27, 0xbe, 0x7f, 0x9f, 0x46, 0x19,
0x9f, 0xc5, 0xb9, 0xb8, 0x8d, 0x1f, 0x84, 0xb7, 0x47, 0x88, 0x4e, 0x1c, 0xd9, 0x0d, 0x73, 0x11, 0x7f, 0x1d, 0xdd, 0x73, 0x67, 0x9f, 0x10, 0x2d, 0x3b, 0x4e, 0x37, 0xc8, 0xb8, 0x2f, 0x24, 0xea,
0x48, 0x85, 0xda, 0x27, 0x54, 0x2d, 0xc2, 0x3c, 0x18, 0xdc, 0x69, 0x62, 0xc7, 0xb4, 0x59, 0x2e, 0x80, 0x50, 0x15, 0x0b, 0x73, 0x60, 0x70, 0xab, 0x06, 0x3b, 0xa1, 0xcd, 0x62, 0x59, 0xf0, 0x82,
0x4b, 0x5d, 0x88, 0xfc, 0x22, 0x8a, 0x72, 0xef, 0xc0, 0xe8, 0x42, 0x45, 0xd8, 0x11, 0xb8, 0xf1, 0x67, 0x97, 0x61, 0x98, 0x39, 0x87, 0x9a, 0x17, 0xd2, 0xc2, 0x8e, 0xc1, 0x8e, 0x96, 0x21, 0x7f,
0x3c, 0x12, 0xef, 0xbd, 0x43, 0x7a, 0x4e, 0x2d, 0xd8, 0x73, 0xd8, 0xcd, 0x72, 0x31, 0xa3, 0x8d, 0xef, 0x1c, 0xd1, 0x39, 0xb9, 0x60, 0xcf, 0x61, 0x98, 0x66, 0x7c, 0x41, 0x1b, 0x4f, 0x68, 0xa3,
0x27, 0xb4, 0x51, 0xad, 0xf9, 0x5f, 0x0e, 0x80, 0x19, 0x1f, 0x8a, 0x26, 0x08, 0xc3, 0x74, 0x31, 0x5c, 0xbb, 0x7f, 0x5b, 0x00, 0xba, 0x7d, 0x48, 0x1a, 0x3f, 0x08, 0x92, 0xd5, 0x52, 0x50, 0x04,
0x97, 0x74, 0x82, 0x52, 0x5e, 0x3d, 0x84, 0xf4, 0x16, 0x32, 0xc8, 0x25, 0xd5, 0xae, 0x74, 0x67, 0xc9, 0xbc, 0xaa, 0x09, 0xc7, 0x9b, 0x0b, 0x3f, 0x13, 0x94, 0xbb, 0xe4, 0x9d, 0x36, 0x74, 0xd1,
0x02, 0xab, 0x64, 0xe2, 0xac, 0x96, 0x49, 0x03, 0xa9, 0x26, 0xaf, 0xb4, 0xd7, 0x0e, 0x37, 0x05, 0xc4, 0xea, 0xa6, 0x49, 0x0d, 0x29, 0x3b, 0x2f, 0xb9, 0xd7, 0x34, 0xd7, 0x09, 0x65, 0x37, 0x09,
0xe5, 0xb6, 0x05, 0xd5, 0x14, 0xb1, 0x4a, 0xd4, 0xef, 0x88, 0xb8, 0x22, 0x4f, 0x8b, 0x61, 0xd0, 0x55, 0x27, 0xb1, 0x74, 0xd4, 0x6f, 0x91, 0xb8, 0x1c, 0x9e, 0x22, 0xc3, 0xa0, 0x46, 0x86, 0x4f,
0x10, 0xc3, 0xa7, 0xb0, 0x5f, 0x62, 0x15, 0x27, 0xbb, 0x74, 0x4a, 0x33, 0x88, 0xc3, 0x17, 0x86, 0xe1, 0xa0, 0xc0, 0xca, 0x99, 0x0c, 0x29, 0x4a, 0xdd, 0x88, 0xcd, 0xe7, 0x7a, 0xb8, 0x23, 0x39,
0xdc, 0xa1, 0xa2, 0xcd, 0x44, 0xb0, 0xce, 0x2c, 0x17, 0xbf, 0xaa, 0x03, 0x80, 0x0e, 0x30, 0x01, 0x36, 0x6d, 0xc1, 0x3c, 0xd3, 0x8c, 0xff, 0x2a, 0x03, 0x00, 0x05, 0xd0, 0x06, 0x8c, 0x8d, 0x49,
0x3c, 0x1b, 0x8b, 0x9e, 0x29, 0xe1, 0x0c, 0x7d, 0xbd, 0x32, 0x94, 0xed, 0xad, 0xa3, 0x6c, 0xbf, 0x2f, 0x24, 0x71, 0x46, 0x9e, 0x5a, 0xe9, 0x91, 0xed, 0x6f, 0x1a, 0xd9, 0x41, 0x63, 0x64, 0x6f,
0x45, 0xd9, 0x1b, 0xf0, 0x4a, 0xa3, 0xb8, 0x28, 0x0a, 0x21, 0xa9, 0x37, 0xcd, 0xdf, 0x0b, 0x80, 0xc0, 0x29, 0x84, 0xe2, 0x32, 0xcf, 0xb9, 0xa0, 0xda, 0xd4, 0xfc, 0x5e, 0x00, 0x64, 0xf4, 0x8b,
0x9c, 0x7e, 0x51, 0x8d, 0x96, 0xaa, 0xd1, 0x44, 0x30, 0xef, 0x9d, 0x5c, 0xaa, 0x29, 0xd9, 0x34, 0x72, 0x34, 0x64, 0x8e, 0xda, 0x82, 0x7e, 0x6f, 0xc5, 0x5a, 0x76, 0xc9, 0xa4, 0x2e, 0x95, 0x6b,
0xa5, 0x6a, 0xcd, 0xff, 0xb6, 0x61, 0x5c, 0x25, 0x0e, 0x71, 0x6a, 0xec, 0x14, 0xfa, 0x4a, 0x97, 0xf7, 0x1f, 0x13, 0x26, 0xa5, 0xe3, 0x00, 0xbb, 0xc6, 0xce, 0xa0, 0x2f, 0x79, 0x49, 0xae, 0xc6,
0x94, 0x6a, 0x74, 0xf6, 0x4c, 0xbf, 0x70, 0x25, 0xec, 0x8a, 0x36, 0x6f, 0x76, 0x7c, 0x0d, 0x63, 0xe7, 0xcf, 0xd4, 0x85, 0x2b, 0x60, 0x57, 0xb4, 0x79, 0xb3, 0xe7, 0x29, 0x18, 0x7b, 0x09, 0x3d,
0x2f, 0xa1, 0x87, 0x7d, 0x51, 0xee, 0xd1, 0xd9, 0xd3, 0x16, 0x1c, 0x85, 0x76, 0xb3, 0xe3, 0x13, 0xac, 0x8b, 0x7c, 0x8f, 0xcf, 0x9f, 0x36, 0xe0, 0x48, 0xb4, 0x9b, 0x3d, 0x8f, 0x20, 0xec, 0x0b,
0x84, 0x7d, 0x01, 0x6e, 0x2e, 0xb2, 0x60, 0x49, 0x02, 0x19, 0x9d, 0x1d, 0xb5, 0xb0, 0x3e, 0xee, 0xb0, 0x33, 0x9e, 0xfa, 0x6b, 0x22, 0xc8, 0xf8, 0xfc, 0xb8, 0x81, 0xf5, 0x70, 0xef, 0x66, 0xcf,
0xdd, 0xec, 0xf8, 0x0a, 0x84, 0x89, 0xef, 0x85, 0x88, 0x48, 0x23, 0xdd, 0xc4, 0x3f, 0x0a, 0x11, 0x93, 0x20, 0x74, 0x7c, 0xc7, 0x79, 0x48, 0x1c, 0x69, 0x3b, 0xfe, 0x81, 0xf3, 0x10, 0x1d, 0x23,
0x61, 0x62, 0x84, 0x60, 0xe2, 0x30, 0x49, 0x0b, 0xa5, 0x95, 0x6e, 0xe2, 0x2b, 0xdc, 0xc3, 0xc4, 0x04, 0x1d, 0x07, 0x71, 0x92, 0x4b, 0xae, 0xb4, 0x1d, 0x5f, 0xe1, 0x1e, 0x3a, 0x26, 0x10, 0x96,
0x04, 0xc2, 0x16, 0x1f, 0x82, 0x79, 0xf0, 0x56, 0xa9, 0xa6, 0xdb, 0xe2, 0x2b, 0xda, 0xc4, 0x16, 0x78, 0xef, 0x2f, 0xfd, 0xb7, 0x92, 0x35, 0xed, 0x12, 0x5f, 0xd1, 0x26, 0x96, 0x28, 0x61, 0x6c,
0x15, 0x8c, 0x8d, 0xc1, 0x96, 0x4b, 0xcd, 0xaf, 0x2d, 0x97, 0x97, 0x03, 0x70, 0x1f, 0x51, 0x89, 0x02, 0xa6, 0x58, 0xab, 0xf9, 0x9a, 0x62, 0x3d, 0x1f, 0x80, 0xfd, 0x80, 0x4c, 0x74, 0xbf, 0xd4,
0xfc, 0x2b, 0x33, 0x3e, 0xf5, 0x10, 0xb2, 0x51, 0x2c, 0x32, 0xf5, 0x6e, 0x16, 0x9e, 0x35, 0x71, 0xed, 0x93, 0x87, 0x70, 0x1a, 0xf9, 0x2a, 0x95, 0x77, 0x33, 0x77, 0x8c, 0xa9, 0x85, 0xd7, 0x55,
0xf0, 0x75, 0x35, 0x11, 0xfe, 0xa7, 0x65, 0x1e, 0x51, 0xa3, 0xec, 0x38, 0xbb, 0xb5, 0xd9, 0xd9, 0x5b, 0xdc, 0xbf, 0x0c, 0x7d, 0x44, 0xb6, 0xb2, 0xa5, 0xec, 0xc6, 0x76, 0x65, 0x37, 0x77, 0x53,
0xed, 0xed, 0x9c, 0xdd, 0x59, 0xe3, 0xec, 0xc6, 0xd1, 0x7a, 0x75, 0x47, 0xe3, 0xd7, 0xb0, 0x57, 0x76, 0x6b, 0x83, 0xb2, 0x6b, 0x45, 0xeb, 0x55, 0x15, 0xcd, 0xbd, 0x86, 0xfd, 0xea, 0xdc, 0xb6,
0xe7, 0x6d, 0xe3, 0x37, 0xe9, 0x48, 0xcf, 0x41, 0xd7, 0xa3, 0x87, 0xf2, 0x13, 0xec, 0x37, 0x18, 0x7e, 0x93, 0x8e, 0x55, 0x1f, 0x54, 0x3e, 0xaa, 0x29, 0x3f, 0xc2, 0x41, 0x6d, 0xa2, 0x5b, 0xdd,
0xdd, 0x98, 0xc6, 0xbc, 0x27, 0x76, 0xfd, 0x3d, 0xe1, 0xbf, 0x99, 0x72, 0x90, 0x6d, 0x54, 0x32, 0xe8, 0x7b, 0x62, 0x56, 0xef, 0x89, 0xfb, 0x9b, 0x4e, 0x07, 0xa7, 0x8d, 0x4c, 0x46, 0xa1, 0x78,
0x1a, 0xc5, 0xed, 0x32, 0x53, 0x43, 0x72, 0xfd, 0x6a, 0x8d, 0xa5, 0x64, 0x5a, 0xe2, 0xce, 0xd4, 0xbd, 0x4e, 0x65, 0x93, 0x6c, 0xaf, 0x5c, 0x63, 0x2a, 0xa9, 0xa2, 0xb8, 0x35, 0x33, 0x3d, 0xb9,
0xf6, 0xd5, 0x02, 0x33, 0x3f, 0xa6, 0xc9, 0xe2, 0x01, 0x2d, 0xc9, 0xc1, 0x46, 0xd5, 0x8a, 0x9f, 0x40, 0xcf, 0x0f, 0x49, 0xbc, 0xba, 0x47, 0x49, 0xb2, 0xb0, 0x50, 0xb9, 0x72, 0xcf, 0x74, 0x8a,
0x9a, 0x12, 0x49, 0x1b, 0x9b, 0x4a, 0xe4, 0x7f, 0xd8, 0x70, 0xe0, 0x8b, 0x50, 0xc4, 0x99, 0xdc, 0xc4, 0x8d, 0x6d, 0x29, 0xba, 0x7f, 0x9a, 0x70, 0xe8, 0xf1, 0x80, 0x47, 0xa9, 0xd8, 0xf9, 0x8b,
0xfa, 0x8b, 0xdd, 0x32, 0x56, 0xbb, 0x6b, 0xac, 0xa6, 0x71, 0xa7, 0x61, 0x10, 0xc6, 0xb4, 0x7a, 0xdd, 0x10, 0x56, 0xb3, 0x2d, 0xac, 0xba, 0x70, 0xab, 0x26, 0x10, 0x5a, 0xb4, 0x7a, 0x35, 0xd1,
0x0d, 0xd3, 0x6a, 0xd8, 0x8d, 0xdb, 0xb6, 0x9b, 0xca, 0x56, 0xfa, 0xeb, 0x6c, 0x65, 0xd0, 0xb4, 0xaa, 0xc9, 0x8d, 0xdd, 0x94, 0x9b, 0x52, 0x56, 0xfa, 0x9b, 0x64, 0x65, 0x50, 0x97, 0x95, 0x86,
0x95, 0x96, 0x75, 0xec, 0x7e, 0xd0, 0x3a, 0x86, 0x2d, 0xeb, 0xc8, 0x8d, 0x8e, 0x8d, 0x11, 0x7d, 0x74, 0x0c, 0x1f, 0x95, 0x8e, 0x51, 0x43, 0x3a, 0x32, 0xcd, 0x63, 0x2d, 0x44, 0x8f, 0xf6, 0x83,
0x70, 0x1e, 0x0c, 0x7a, 0x81, 0x19, 0x04, 0xfd, 0x5e, 0x3b, 0x81, 0xaa, 0x97, 0x5e, 0xad, 0x17, 0x41, 0xcf, 0xd7, 0x8d, 0xa0, 0xdf, 0x1b, 0x3b, 0x50, 0xd6, 0xd2, 0xab, 0xd4, 0xe2, 0xce, 0xe1,
0x7e, 0x09, 0x07, 0xcd, 0x33, 0x0b, 0x76, 0x0a, 0x83, 0x5c, 0x5f, 0x10, 0x2c, 0xba, 0x20, 0x3c, 0xb0, 0x1e, 0x33, 0x67, 0x67, 0x30, 0xc8, 0xd4, 0x03, 0xc1, 0xa0, 0x07, 0xc2, 0xb3, 0x96, 0xa8,
0xeb, 0x98, 0x0a, 0x5d, 0x12, 0x4a, 0x14, 0xff, 0x1a, 0x89, 0x7c, 0x57, 0xee, 0xce, 0xe6, 0xf7, 0xd0, 0x23, 0xa1, 0x40, 0xb9, 0x5f, 0xe1, 0x20, 0xdf, 0x15, 0xbb, 0x8b, 0xe5, 0x5d, 0xb2, 0x75,
0xe9, 0x46, 0xf2, 0x7f, 0xb7, 0xe1, 0xd8, 0x17, 0x59, 0xa5, 0x98, 0x45, 0x9e, 0x8b, 0xb9, 0xa4, 0xf8, 0x7f, 0x98, 0x70, 0xe2, 0xf1, 0xb4, 0x64, 0xcc, 0x2a, 0xcb, 0xf8, 0x52, 0xd0, 0x51, 0x3d,
0x47, 0x0d, 0x53, 0x56, 0x83, 0xa9, 0xff, 0xff, 0xb6, 0x56, 0xbb, 0x41, 0xb8, 0xcd, 0x1b, 0xc4, 0x29, 0xa3, 0x36, 0xa9, 0x0f, 0xff, 0x5a, 0xab, 0xbc, 0x20, 0xec, 0xfa, 0x0b, 0xa2, 0xe3, 0x03,
0x8a, 0x0f, 0x74, 0x7f, 0x8b, 0x7b, 0xdc, 0xa0, 0xf5, 0xd9, 0xe5, 0xdf, 0xc0, 0x61, 0x6b, 0x72, 0xdd, 0xdf, 0xe1, 0x1d, 0x37, 0x68, 0x7c, 0x76, 0xdd, 0xaf, 0xe1, 0xa8, 0xd1, 0xb9, 0x1c, 0x6b,
0x05, 0xf6, 0x60, 0x06, 0x55, 0xfa, 0x5d, 0x3d, 0xc4, 0x5f, 0xc3, 0x47, 0xab, 0x67, 0x57, 0xb0, 0xd0, 0x8d, 0x2a, 0xf4, 0xae, 0x6a, 0x72, 0x7f, 0x86, 0x8f, 0xba, 0x7b, 0x97, 0xb3, 0x0b, 0x1c,
0x73, 0x24, 0xf9, 0x3e, 0x2d, 0x99, 0xfb, 0x44, 0x33, 0xb7, 0x1a, 0xee, 0x2b, 0x2c, 0xff, 0x12, 0xf2, 0x5d, 0x52, 0x4c, 0xee, 0x13, 0x35, 0xb9, 0x6e, 0xb8, 0x27, 0xb1, 0xee, 0x15, 0x3c, 0xad,
0x9e, 0xd6, 0xaa, 0xb8, 0x5c, 0x9a, 0x6f, 0xed, 0x2a, 0x22, 0x38, 0x87, 0x71, 0x2d, 0xdf, 0xec, 0x64, 0x31, 0x5f, 0xeb, 0x6f, 0x6d, 0xe7, 0x20, 0x4a, 0x22, 0x99, 0x55, 0x22, 0xb9, 0x30, 0xa9,
0xba, 0x60, 0x87, 0xe0, 0xcc, 0xae, 0xcb, 0x52, 0xf1, 0x27, 0x7f, 0x0d, 0x5e, 0x2d, 0xa5, 0x56, 0x44, 0x59, 0x5c, 0xe7, 0xec, 0x08, 0xac, 0xc5, 0x75, 0x51, 0x00, 0xfe, 0x74, 0x43, 0x70, 0x2a,
0xd6, 0xe5, 0x92, 0x5e, 0xd1, 0xff, 0x20, 0x6a, 0x7e, 0x0b, 0xcf, 0x57, 0xe5, 0xd3, 0x95, 0x6e, 0x81, 0x14, 0xdf, 0xe6, 0x6b, 0xba, 0xb8, 0xff, 0x87, 0xea, 0x65, 0x26, 0x56, 0x35, 0x93, 0xdf,
0xe1, 0x86, 0xba, 0x13, 0xbb, 0xd1, 0xc9, 0x05, 0xb0, 0x5a, 0x27, 0xa5, 0xfe, 0x3f, 0x6f, 0xeb, 0xe1, 0x79, 0x57, 0x14, 0x55, 0xd5, 0x0e, 0xca, 0xa9, 0xaa, 0x36, 0xbb, 0xab, 0xae, 0xc5, 0xba,
0x7f, 0xc5, 0x05, 0xb9, 0xd2, 0xfe, 0xab, 0xc6, 0xec, 0x10, 0xb1, 0x8d, 0xfe, 0xd7, 0xfa, 0xf3, 0x04, 0x56, 0xa9, 0xba, 0xb8, 0x41, 0x9f, 0x37, 0x6f, 0x50, 0xc7, 0x13, 0xbb, 0xbc, 0x3d, 0xaf,
0xf7, 0x98, 0x2e, 0xeb, 0xa4, 0x7b, 0x09, 0x7d, 0x75, 0xa0, 0xbe, 0x41, 0xac, 0xa8, 0x48, 0x03, 0x6a, 0xdd, 0x47, 0xc4, 0x2e, 0x37, 0x68, 0xa3, 0xc2, 0x7f, 0x87, 0xee, 0xd2, 0x96, 0xbb, 0x97,
0xee, 0xfa, 0xf4, 0xff, 0xd0, 0xf9, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xba, 0x69, 0x9e, 0x9a, 0xd0, 0x97, 0x01, 0xd5, 0x1b, 0xa4, 0x23, 0x23, 0x05, 0xb8, 0xed, 0xd3, 0x7f, 0x54, 0x17, 0xff,
0x21, 0x0d, 0x00, 0x00, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x46, 0x96, 0x6b, 0x63, 0x0d, 0x00, 0x00,
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment