Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
8de1b924
Commit
8de1b924
authored
Oct 20, 2018
by
任硕
Committed by
linj
Nov 26, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
query unfreeze
parent
f9d4465d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
134 additions
and
76 deletions
+134
-76
action.go
executor/action.go
+61
-36
query.go
executor/query.go
+1
-1
unfreeze.proto
proto/unfreeze.proto
+7
-1
unfreeze.pb.go
types/unfreeze.pb.go
+65
-38
No files found.
executor/action.go
View file @
8de1b924
...
...
@@ -81,40 +81,10 @@ func (a *action) UnfreezeWithdraw(withdraw *uf.UnfreezeWithdraw) (*types.Receipt
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
currentTime
:=
time
.
Now
()
.
Unix
()
expectTimes
:=
(
currentTime
+
unfreeze
.
Period
-
unfreeze
.
StartTime
)
/
unfreeze
.
Period
reaTimes
:=
expectTimes
-
int64
(
unfreeze
.
WithdrawTimes
)
if
reaTimes
<=
0
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
types
.
ErrUnfreezeBeforeDue
)
return
nil
,
types
.
ErrUnfreezeBeforeDue
}
if
unfreeze
.
Remaining
<=
0
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
types
.
ErrUnfreezeEmptied
)
return
nil
,
types
.
ErrUnfreezeEmptied
}
var
available
int64
switch
unfreeze
.
Means
{
case
1
:
// 百分比
for
i
:=
int64
(
0
);
i
<
reaTimes
;
i
++
{
if
tmp
:=
unfreeze
.
Remaining
*
unfreeze
.
Amount
/
10000
;
tmp
==
0
{
available
=
unfreeze
.
Remaining
break
}
else
{
available
+=
tmp
}
}
case
2
:
// 固额
for
i
:=
int64
(
0
);
i
<
reaTimes
;
i
++
{
if
unfreeze
.
Remaining
<=
unfreeze
.
Amount
{
available
=
unfreeze
.
Remaining
break
}
available
+=
unfreeze
.
Amount
}
default
:
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
types
.
ErrUnfreezeMeans
)
return
nil
,
types
.
ErrUnfreezeMeans
reaTimes
,
available
,
err
:=
getWithdrawAvailable
(
unfreeze
)
if
err
!=
nil
{
uflog
.
Error
(
"unfreeze withdraw "
,
"execaddr"
,
a
.
execaddr
,
"err"
,
err
)
return
nil
,
err
}
tokenAccDB
,
err
:=
account
.
NewAccountDB
(
"token"
,
unfreeze
.
TokenName
,
a
.
db
)
...
...
@@ -225,8 +195,63 @@ func (a *action) getTerminateLog(unfreeze *uf.Unfreeze) *types.ReceiptLog {
}
//查询可提币状态
func
QueryWithdraw
(
stateDB
dbm
.
KV
,
param
*
uf
.
Query
WithdrawStatus
)
(
types
.
Message
,
error
)
{
func
QueryWithdraw
(
stateDB
dbm
.
KV
,
param
*
uf
.
Query
UnfreezeWithdraw
)
(
types
.
Message
,
error
)
{
//查询提币次数
//计算当前可否提币
return
&
types
.
Reply
{},
nil
unfreezeID
:=
param
.
UnfreezeID
value
,
err
:=
stateDB
.
Get
(
key
(
unfreezeID
))
if
err
!=
nil
{
uflog
.
Error
(
"QueryWithdraw "
,
"unfreezeID"
,
unfreezeID
,
"err"
,
err
)
return
nil
,
err
}
var
unfreeze
uf
.
Unfreeze
err
=
types
.
Decode
(
value
,
&
unfreeze
)
if
err
!=
nil
{
uflog
.
Error
(
"QueryWithdraw "
,
"unfreezeID"
,
unfreezeID
,
"err"
,
err
)
return
nil
,
err
}
reply
:=
&
uf
.
ReplyQueryUnfreezeWithdraw
{
UnfreezeID
:
unfreezeID
}
_
,
available
,
err
:=
getWithdrawAvailable
(
unfreeze
)
if
err
!=
nil
{
reply
.
AvailableAmount
=
0
}
else
{
reply
.
AvailableAmount
=
available
}
return
reply
,
nil
}
func
getWithdrawAvailable
(
unfreeze
uf
.
Unfreeze
)
(
int64
,
int64
,
error
)
{
currentTime
:=
time
.
Now
()
.
Unix
()
expectTimes
:=
(
currentTime
+
unfreeze
.
Period
-
unfreeze
.
StartTime
)
/
unfreeze
.
Period
reaTimes
:=
expectTimes
-
int64
(
unfreeze
.
WithdrawTimes
)
if
reaTimes
<=
0
{
return
0
,
0
,
types
.
ErrUnfreezeBeforeDue
}
if
unfreeze
.
Remaining
<=
0
{
return
0
,
0
,
types
.
ErrUnfreezeEmptied
}
var
available
int64
switch
unfreeze
.
Means
{
case
1
:
// 百分比
for
i
:=
int64
(
0
);
i
<
reaTimes
;
i
++
{
if
tmp
:=
unfreeze
.
Remaining
*
unfreeze
.
Amount
/
10000
;
tmp
==
0
{
available
=
unfreeze
.
Remaining
break
}
else
{
available
+=
tmp
}
}
case
2
:
// 固额
for
i
:=
int64
(
0
);
i
<
reaTimes
;
i
++
{
if
unfreeze
.
Remaining
<=
unfreeze
.
Amount
{
available
=
unfreeze
.
Remaining
break
}
available
+=
unfreeze
.
Amount
}
default
:
return
0
,
0
,
types
.
ErrUnfreezeMeans
}
return
reaTimes
,
available
,
nil
}
executor/query.go
View file @
8de1b924
...
...
@@ -5,6 +5,6 @@ import (
"gitlab.33.cn/chain33/chain33/types"
)
func
(
u
*
Unfreeze
)
Query_QueryWithdraw
(
in
*
uf
.
Query
WithdrawStatus
)
(
types
.
Message
,
error
)
{
func
(
u
*
Unfreeze
)
Query_QueryWithdraw
(
in
*
uf
.
Query
UnfreezeWithdraw
)
(
types
.
Message
,
error
)
{
return
QueryWithdraw
(
u
.
GetStateDB
(),
in
)
}
proto/unfreeze.proto
View file @
8de1b924
...
...
@@ -72,6 +72,11 @@ message ReceiptTerminate {
}
// query
message
Query
WithdrawStatus
{
message
Query
UnfreezeWithdraw
{
string
unfreezeID
=
1
;
}
message
ReplyQueryUnfreezeWithdraw
{
string
unfreezeID
=
1
;
int64
availableAmount
=
2
;
}
\ No newline at end of file
types/unfreeze.pb.go
View file @
8de1b924
...
...
@@ -16,7 +16,8 @@ It has these top-level messages:
ReceiptCreate
ReceiptWithdraw
ReceiptTerminate
QueryWithdrawStatus
QueryUnfreezeWithdraw
ReplyQueryUnfreezeWithdraw
*/
package
types
...
...
@@ -466,22 +467,46 @@ func (m *ReceiptTerminate) GetUnfreezeID() string {
}
// query
type
Query
WithdrawStatus
struct
{
type
Query
UnfreezeWithdraw
struct
{
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
}
func
(
m
*
Query
WithdrawStatus
)
Reset
()
{
*
m
=
QueryWithdrawStatus
{}
}
func
(
m
*
Query
WithdrawStatus
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Query
WithdrawStatus
)
ProtoMessage
()
{}
func
(
*
Query
WithdrawStatus
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
func
(
m
*
Query
UnfreezeWithdraw
)
Reset
()
{
*
m
=
QueryUnfreezeWithdraw
{}
}
func
(
m
*
Query
UnfreezeWithdraw
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Query
UnfreezeWithdraw
)
ProtoMessage
()
{}
func
(
*
Query
UnfreezeWithdraw
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
8
}
}
func
(
m
*
Query
WithdrawStatus
)
GetUnfreezeID
()
string
{
func
(
m
*
Query
UnfreezeWithdraw
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
type
ReplyQueryUnfreezeWithdraw
struct
{
UnfreezeID
string
`protobuf:"bytes,1,opt,name=unfreezeID" json:"unfreezeID,omitempty"`
AvailableAmount
int64
`protobuf:"varint,2,opt,name=availableAmount" json:"availableAmount,omitempty"`
}
func
(
m
*
ReplyQueryUnfreezeWithdraw
)
Reset
()
{
*
m
=
ReplyQueryUnfreezeWithdraw
{}
}
func
(
m
*
ReplyQueryUnfreezeWithdraw
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyQueryUnfreezeWithdraw
)
ProtoMessage
()
{}
func
(
*
ReplyQueryUnfreezeWithdraw
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor0
,
[]
int
{
9
}
}
func
(
m
*
ReplyQueryUnfreezeWithdraw
)
GetUnfreezeID
()
string
{
if
m
!=
nil
{
return
m
.
UnfreezeID
}
return
""
}
func
(
m
*
ReplyQueryUnfreezeWithdraw
)
GetAvailableAmount
()
int64
{
if
m
!=
nil
{
return
m
.
AvailableAmount
}
return
0
}
func
init
()
{
proto
.
RegisterType
((
*
Unfreeze
)(
nil
),
"types.Unfreeze"
)
proto
.
RegisterType
((
*
UnfreezeAction
)(
nil
),
"types.UnfreezeAction"
)
...
...
@@ -491,40 +516,42 @@ func init() {
proto
.
RegisterType
((
*
ReceiptCreate
)(
nil
),
"types.ReceiptCreate"
)
proto
.
RegisterType
((
*
ReceiptWithdraw
)(
nil
),
"types.ReceiptWithdraw"
)
proto
.
RegisterType
((
*
ReceiptTerminate
)(
nil
),
"types.ReceiptTerminate"
)
proto
.
RegisterType
((
*
QueryWithdrawStatus
)(
nil
),
"types.QueryWithdrawStatus"
)
proto
.
RegisterType
((
*
QueryUnfreezeWithdraw
)(
nil
),
"types.QueryUnfreezeWithdraw"
)
proto
.
RegisterType
((
*
ReplyQueryUnfreezeWithdraw
)(
nil
),
"types.ReplyQueryUnfreezeWithdraw"
)
}
func
init
()
{
proto
.
RegisterFile
(
"unfreeze.proto"
,
fileDescriptor0
)
}
var
fileDescriptor0
=
[]
byte
{
// 459 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x8c
,
0x54
,
0x4d
,
0x6f
,
0xd3
,
0x40
,
0x10
,
0x8d
,
0xed
,
0xda
,
0x49
,
0x26
,
0x6a
,
0x80
,
0xe5
,
0x6b
,
0x0f
,
0x08
,
0x45
,
0x16
,
0x87
,
0x9c
,
0x82
,
0x94
,
0xaa
,
0x12
,
0x57
,
0x28
,
0x87
,
0x70
,
0x00
,
0x89
,
0xa5
,
0x08
,
0x71
,
0xdc
,
0xa6
,
0x53
,
0x58
,
0x51
,
0xef
,
0x46
,
0xeb
,
0x31
,
0x95
,
0xf9
,
0x8b
,
0x5c
,
0x38
,
0xf0
,
0x83
,
0xaa
,
0x5d
,
0xdb
,
0x89
,
0xeb
,
0x44
,
0x49
,
0x8f
,
0xfb
,
0xe6
,
0xbd
,
0xf1
,
0xec
,
0x9b
,
0xb7
,
0x86
,
0x71
,
0xa1
,
0xaf
,
0x2c
,
0xe2
,
0x1f
,
0x9c
,
0xad
,
0xac
,
0x21
,
0xc3
,
0x62
,
0x2a
,
0x57
,
0x98
,
0xa7
,
0xff
,
0x42
,
0x18
,
0x7c
,
0xad
,
0x2b
,
0xec
,
0x25
,
0x40
,
0xc3
,
0xfa
,
0xf0
,
0x9e
,
0x07
,
0x93
,
0x60
,
0x3a
,
0x14
,
0x2d
,
0x84
,
0xbd
,
0x80
,
0x61
,
0x4e
,
0xd2
,
0xd2
,
0xb9
,
0xca
,
0x90
,
0x87
,
0x93
,
0x60
,
0x1a
,
0x89
,
0x0d
,
0xe0
,
0xaa
,
0x64
,
0x7e
,
0xa1
,
0xfe
,
0x24
,
0x33
,
0xe4
,
0x91
,
0x17
,
0x6f
,
0x00
,
0xd7
,
0x9b
,
0x0c
,
0xc9
,
0xeb
,
0x33
,
0x53
,
0x68
,
0xe2
,
0x47
,
0x5e
,
0xdc
,
0x42
,
0x9c
,
0x5a
,
0x69
,
0x45
,
0x4a
,
0x92
,
0xb1
,
0x3c
,
0xae
,
0xd4
,
0x6b
,
0x80
,
0x4d
,
0x60
,
0x74
,
0x81
,
0x1a
,
0xaf
,
0xd4
,
0x52
,
0x49
,
0x5b
,
0xf2
,
0xc4
,
0xd7
,
0xdb
,
0x10
,
0x7b
,
0x06
,
0xc9
,
0x0a
,
0xad
,
0x32
,
0x97
,
0xbc
,
0xef
,
0x7b
,
0xd7
,
0x27
,
0xf6
,
0x04
,
0xe2
,
0x0c
,
0xa5
,
0xce
,
0xf9
,
0x60
,
0x12
,
0x4c
,
0x63
,
0x51
,
0x1d
,
0x1c
,
0x5b
,
0x66
,
0x7e
,
0x92
,
0x61
,
0xc5
,
0xae
,
0x4e
,
0xec
,
0x15
,
0x1c
,
0xdf
,
0x28
,
0xfa
,
0x79
,
0x69
,
0xe5
,
0x8d
,
0xbb
,
0x53
,
0xce
,
0xc1
,
0xab
,
0xee
,
0x82
,
0x6e
,
0x56
,
0x8b
,
0x99
,
0x54
,
0x5a
,
0xe9
,
0x1f
,
0x7c
,
0x54
,
0xf9
,
0xb0
,
0x06
,
0xd2
,
0xbf
,
0x01
,
0x8c
,
0x1b
,
0x4b
,
0xdf
,
0x2e
,
0x49
,
0x19
,
0xcd
,
0x5e
,
0x43
,
0xb2
,
0xb4
,
0x28
,
0x09
,
0xbd
,
0xa9
,
0xa3
,
0xf9
,
0xd3
,
0x99
,
0x77
,
0x7f
,
0xd6
,
0xd0
,
0xce
,
0x7c
,
0x71
,
0xd1
,
0x13
,
0x35
,
0x8d
,
0x9d
,
0xc2
,
0xa0
,
0xf9
,
0xa4
,
0x37
,
0x7a
,
0x34
,
0x7f
,
0xde
,
0x91
,
0x7c
,
0xab
,
0xcb
,
0x8b
,
0x9e
,
0x58
,
0x53
,
0xd9
,
0x1b
,
0x18
,
0x12
,
0xda
,
0x4c
,
0x69
,
0xf7
,
0xa9
,
0xc8
,
0xeb
,
0x78
,
0x47
,
0x77
,
0xde
,
0xd4
,
0x17
,
0x3d
,
0xb1
,
0x21
,
0xb3
,
0x31
,
0x84
,
0x54
,
0xfa
,
0xb5
,
0xc4
,
0x22
,
0xa4
,
0xf2
,
0x5d
,
0x1f
,
0xe2
,
0xdf
,
0xf2
,
0xba
,
0xc0
,
0xf4
,
0x7f
,
0xeb
,
0x36
,
0xd5
,
0x98
,
0x77
,
0x63
,
0x10
,
0xec
,
0x8d
,
0x41
,
0xb8
,
0x3f
,
0x06
,
0xd1
,
0x56
,
0x0c
,
0x3a
,
0x8b
,
0x3e
,
0xda
,
0xb7
,
0xe8
,
0x78
,
0xf7
,
0xa2
,
0x93
,
0xdd
,
0x8b
,
0xee
,
0xb7
,
0x17
,
0x9d
,
0xce
,
0xe1
,
0x61
,
0xd7
,
0xc9
,
0x43
,
0xf1
,
0x4f
,
0x4f
,
0xe0
,
0xd1
,
0x96
,
0x8b
,
0x07
,
0x45
,
0x1f
,
0xe1
,
0x58
,
0xe0
,
0x12
,
0xd5
,
0x8a
,
0x6a
,
0xf7
,
0xee
,
0xf1
,
0xc8
,
0x36
,
0x0f
,
0x21
,
0xec
,
0x3c
,
0x84
,
0xf4
,
0x3b
,
0x3c
,
0xa8
,
0xdb
,
0xad
,
0xc7
,
0xde
,
0xca
,
0x6c
,
0xb0
,
0x2b
,
0xb3
,
0x1d
,
0x63
,
0xa3
,
0x2d
,
0x63
,
0x9d
,
0x25
,
0x75
,
0xeb
,
0xfb
,
0xdf
,
0xee
,
0x14
,
0x1e
,
0x7f
,
0x2e
,
0xd0
,
0x96
,
0xcd
,
0x30
,
0x5f
,
0x48
,
0x52
,
0x91
,
0x1f
,
0x92
,
0x5d
,
0x24
,
0xfe
,
0x1f
,
0x74
,
0x72
,
0x1b
,
0x00
,
0x00
,
0xff
,
0xff
,
0xb5
,
0x01
,
0xb3
,
0xc9
,
0x95
,
0x04
,
0x00
,
0x00
,
// 480 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x9c
,
0x54
,
0xc1
,
0x6e
,
0xd3
,
0x40
,
0x10
,
0x8d
,
0xed
,
0xda
,
0x49
,
0x26
,
0x6a
,
0x0a
,
0x2b
,
0x0a
,
0x2b
,
0x84
,
0x50
,
0x64
,
0x71
,
0xc8
,
0x29
,
0x48
,
0xa9
,
0x10
,
0x5c
,
0x4b
,
0x39
,
0x84
,
0x03
,
0x48
,
0xac
,
0x8a
,
0x10
,
0xc7
,
0x4d
,
0x3a
,
0x81
,
0x15
,
0xf6
,
0xda
,
0xda
,
0x4c
,
0x5a
,
0x99
,
0x5f
,
0xe4
,
0xc2
,
0x81
,
0x0f
,
0x42
,
0xde
,
0xb5
,
0x13
,
0xd7
,
0x89
,
0xd2
,
0xc2
,
0x71
,
0xdf
,
0xcc
,
0x1b
,
0xcf
,
0xbe
,
0xf7
,
0xd6
,
0x30
,
0x5c
,
0xeb
,
0xa5
,
0x41
,
0xfc
,
0x89
,
0x93
,
0xdc
,
0x64
,
0x94
,
0xb1
,
0x90
,
0x8a
,
0x1c
,
0x57
,
0xf1
,
0x6f
,
0x1f
,
0x7a
,
0x9f
,
0xab
,
0x0a
,
0x7b
,
0x0e
,
0x50
,
0x77
,
0xbd
,
0x7f
,
0xc7
,
0xbd
,
0x91
,
0x37
,
0xee
,
0x8b
,
0x06
,
0xc2
,
0x9e
,
0x41
,
0x7f
,
0x45
,
0xd2
,
0xd0
,
0xa5
,
0x4a
,
0x91
,
0xfb
,
0x23
,
0x6f
,
0x1c
,
0x88
,
0x2d
,
0x50
,
0x56
,
0x29
,
0xfb
,
0x81
,
0xfa
,
0xa3
,
0x4c
,
0x91
,
0x07
,
0x96
,
0xbc
,
0x05
,
0xca
,
0xd9
,
0x94
,
0x91
,
0x4c
,
0x2e
,
0xb2
,
0xb5
,
0x26
,
0x7e
,
0x64
,
0xc9
,
0x0d
,
0xa4
,
0x64
,
0x2b
,
0xad
,
0x48
,
0x49
,
0xca
,
0x0c
,
0x0f
,
0x1d
,
0x7b
,
0x03
,
0xb0
,
0x11
,
0x0c
,
0xe6
,
0xa8
,
0x71
,
0xa9
,
0x16
,
0x4a
,
0x9a
,
0x82
,
0x47
,
0xb6
,
0xde
,
0x84
,
0xd8
,
0x63
,
0x88
,
0x72
,
0x34
,
0x2a
,
0xbb
,
0xe2
,
0x5d
,
0x3b
,
0xbb
,
0x3a
,
0xb1
,
0x47
,
0x10
,
0xa6
,
0x28
,
0xf5
,
0x8a
,
0xf7
,
0x46
,
0xde
,
0x38
,
0x14
,
0xee
,
0x50
,
0x76
,
0xcb
,
0xd4
,
0x6e
,
0xd2
,
0x77
,
0xdd
,
0xee
,
0xc4
,
0x5e
,
0xc0
,
0xf1
,
0x8d
,
0xa2
,
0xef
,
0x57
,
0x46
,
0xde
,
0x94
,
0x77
,
0x5a
,
0x71
,
0xb0
,
0xac
,
0xdb
,
0x60
,
0xb9
,
0xab
,
0xc1
,
0x54
,
0x2a
,
0xad
,
0xf4
,
0x37
,
0x3e
,
0x70
,
0x3a
,
0x6c
,
0x80
,
0xf8
,
0x97
,
0x07
,
0xc3
,
0x5a
,
0xd2
,
0xf3
,
0x05
,
0xa9
,
0x4c
,
0xb3
,
0x97
,
0x10
,
0x2d
,
0x0c
,
0x4a
,
0x42
,
0x2b
,
0xea
,
0x60
,
0x7a
,
0x3a
,
0xb1
,
0xea
,
0x4f
,
0xea
,
0xb6
,
0x0b
,
0x5b
,
0x9c
,
0x75
,
0x44
,
0xd5
,
0xc6
,
0x5e
,
0x41
,
0xaf
,
0xfe
,
0xa4
,
0x15
,
0x7a
,
0x30
,
0x7d
,
0xd2
,
0xa2
,
0x7c
,
0xa9
,
0xca
,
0xb3
,
0x8e
,
0xd8
,
0xb4
,
0xb2
,
0x37
,
0xd0
,
0x27
,
0x34
,
0xa9
,
0xd2
,
0xe5
,
0xa7
,
0x02
,
0xcb
,
0xe3
,
0x2d
,
0xde
,
0x65
,
0x5d
,
0x9f
,
0x75
,
0xc4
,
0xb6
,
0x99
,
0x0d
,
0xc1
,
0xa7
,
0xc2
,
0xda
,
0x12
,
0x0a
,
0x9f
,
0x8a
,
0xb7
,
0x5d
,
0x08
,
0xaf
,
0x65
,
0xb2
,
0xc6
,
0xf8
,
0x4f
,
0xe3
,
0x36
,
0x6e
,
0xcd
,
0xdb
,
0x31
,
0xf0
,
0x0e
,
0xc6
,
0xc0
,
0x3f
,
0x1c
,
0x83
,
0x60
,
0x27
,
0x06
,
0x2d
,
0xa3
,
0x8f
,
0x0e
,
0x19
,
0x1d
,
0xee
,
0x37
,
0x3a
,
0xda
,
0x6f
,
0x74
,
0xb7
,
0x69
,
0x74
,
0x3c
,
0x85
,
0x07
,
0x6d
,
0x25
,
0xef
,
0x8a
,
0x7f
,
0x7c
,
0x06
,
0x0f
,
0x77
,
0x54
,
0xbc
,
0x93
,
0xf4
,
0x01
,
0x8e
,
0x05
,
0x2e
,
0x50
,
0xe5
,
0x54
,
0xa9
,
0x77
,
0x8f
,
0x47
,
0xb6
,
0x7d
,
0x08
,
0x7e
,
0xeb
,
0x21
,
0xc4
,
0x5f
,
0xe1
,
0xa4
,
0x1a
,
0xb7
,
0x59
,
0x7b
,
0x27
,
0xb3
,
0xde
,
0xbe
,
0xcc
,
0xb6
,
0x84
,
0x0d
,
0x76
,
0x84
,
0x2d
,
0x25
,
0xa9
,
0x46
,
0xdf
,
0xff
,
0x76
,
0xaf
,
0xe1
,
0xf4
,
0xd3
,
0x1a
,
0x4d
,
0xf1
,
0xcf
,
0x5a
,
0x2e
,
0xe1
,
0xa9
,
0xc0
,
0x3c
,
0x29
,
0xfe
,
0x8b
,
0xcd
,
0xc6
,
0x70
,
0x22
,
0xaf
,
0xa5
,
0x4a
,
0xe4
,
0x3c
,
0xc1
,
0x73
,
0x67
,
0xaf
,
0xfb
,
0x1d
,
0xb5
,
0xe1
,
0x79
,
0x64
,
0xff
,
0x76
,
0x67
,
0x7f
,
0x03
,
0x00
,
0x00
,
0xff
,
0xff
,
0xf9
,
0x3c
,
0xaa
,
0xaf
,
0xff
,
0x04
,
0x00
,
0x00
,
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment