@keep-network/tbtc-v2 0.1.1-dev.5 → 0.1.1-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/TBTC.json +10 -10
- package/artifacts/TBTCToken.json +10 -10
- package/artifacts/VendingMachine.json +11 -11
- package/artifacts/solcInputs/{d71966212a658480bad5748ad85b1396.json → 58d5b3ee7688835879381470de985d6b.json} +15 -3
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +10 -0
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +214 -55
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/BitcoinTx.sol +104 -0
- package/contracts/bridge/Bridge.sol +252 -83
- package/package.json +2 -1
|
@@ -6,12 +6,6 @@
|
|
|
6
6
|
{
|
|
7
7
|
"anonymous": false,
|
|
8
8
|
"inputs": [
|
|
9
|
-
{
|
|
10
|
-
"indexed": false,
|
|
11
|
-
"internalType": "uint256",
|
|
12
|
-
"name": "depositId",
|
|
13
|
-
"type": "uint256"
|
|
14
|
-
},
|
|
15
9
|
{
|
|
16
10
|
"indexed": false,
|
|
17
11
|
"internalType": "bytes32",
|
|
@@ -32,21 +26,27 @@
|
|
|
32
26
|
},
|
|
33
27
|
{
|
|
34
28
|
"indexed": false,
|
|
35
|
-
"internalType": "
|
|
29
|
+
"internalType": "bytes8",
|
|
36
30
|
"name": "blindingFactor",
|
|
37
|
-
"type": "
|
|
31
|
+
"type": "bytes8"
|
|
38
32
|
},
|
|
39
33
|
{
|
|
40
34
|
"indexed": false,
|
|
41
|
-
"internalType": "
|
|
42
|
-
"name": "
|
|
43
|
-
"type": "
|
|
35
|
+
"internalType": "bytes20",
|
|
36
|
+
"name": "walletPubKeyHash",
|
|
37
|
+
"type": "bytes20"
|
|
44
38
|
},
|
|
45
39
|
{
|
|
46
40
|
"indexed": false,
|
|
47
|
-
"internalType": "
|
|
48
|
-
"name": "
|
|
49
|
-
"type": "
|
|
41
|
+
"internalType": "bytes20",
|
|
42
|
+
"name": "refundPubKeyHash",
|
|
43
|
+
"type": "bytes20"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"indexed": false,
|
|
47
|
+
"internalType": "bytes4",
|
|
48
|
+
"name": "refundLocktime",
|
|
49
|
+
"type": "bytes4"
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
"indexed": false,
|
|
@@ -59,39 +59,78 @@
|
|
|
59
59
|
"type": "event"
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
+
"anonymous": false,
|
|
62
63
|
"inputs": [
|
|
63
64
|
{
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
65
|
+
"indexed": true,
|
|
66
|
+
"internalType": "address",
|
|
67
|
+
"name": "previousOwner",
|
|
68
|
+
"type": "address"
|
|
67
69
|
},
|
|
68
70
|
{
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
|
|
71
|
+
"indexed": true,
|
|
72
|
+
"internalType": "address",
|
|
73
|
+
"name": "newOwner",
|
|
74
|
+
"type": "address"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"name": "OwnershipTransferred",
|
|
78
|
+
"type": "event"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"anonymous": false,
|
|
82
|
+
"inputs": [
|
|
73
83
|
{
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
84
|
+
"indexed": true,
|
|
85
|
+
"internalType": "address",
|
|
86
|
+
"name": "vault",
|
|
87
|
+
"type": "address"
|
|
77
88
|
},
|
|
78
89
|
{
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
|
|
90
|
+
"indexed": false,
|
|
91
|
+
"internalType": "bool",
|
|
92
|
+
"name": "isTrusted",
|
|
93
|
+
"type": "bool"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"name": "VaultStatusUpdated",
|
|
97
|
+
"type": "event"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"inputs": [
|
|
83
101
|
{
|
|
84
|
-
"internalType": "
|
|
85
|
-
"name": "
|
|
86
|
-
"type": "
|
|
87
|
-
}
|
|
102
|
+
"internalType": "address",
|
|
103
|
+
"name": "",
|
|
104
|
+
"type": "address"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"name": "isVaultTrusted",
|
|
108
|
+
"outputs": [
|
|
109
|
+
{
|
|
110
|
+
"internalType": "bool",
|
|
111
|
+
"name": "",
|
|
112
|
+
"type": "bool"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"stateMutability": "view",
|
|
116
|
+
"type": "function"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"inputs": [],
|
|
120
|
+
"name": "owner",
|
|
121
|
+
"outputs": [
|
|
88
122
|
{
|
|
89
123
|
"internalType": "address",
|
|
90
|
-
"name": "
|
|
124
|
+
"name": "",
|
|
91
125
|
"type": "address"
|
|
92
126
|
}
|
|
93
127
|
],
|
|
94
|
-
"
|
|
128
|
+
"stateMutability": "view",
|
|
129
|
+
"type": "function"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"inputs": [],
|
|
133
|
+
"name": "renounceOwnership",
|
|
95
134
|
"outputs": [],
|
|
96
135
|
"stateMutability": "nonpayable",
|
|
97
136
|
"type": "function"
|
|
@@ -99,24 +138,126 @@
|
|
|
99
138
|
{
|
|
100
139
|
"inputs": [
|
|
101
140
|
{
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
|
|
141
|
+
"components": [
|
|
142
|
+
{
|
|
143
|
+
"internalType": "bytes4",
|
|
144
|
+
"name": "version",
|
|
145
|
+
"type": "bytes4"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"internalType": "bytes",
|
|
149
|
+
"name": "inputVector",
|
|
150
|
+
"type": "bytes"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"internalType": "bytes",
|
|
154
|
+
"name": "outputVector",
|
|
155
|
+
"type": "bytes"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"internalType": "bytes4",
|
|
159
|
+
"name": "locktime",
|
|
160
|
+
"type": "bytes4"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"internalType": "struct BitcoinTx.Info",
|
|
164
|
+
"name": "fundingTx",
|
|
165
|
+
"type": "tuple"
|
|
105
166
|
},
|
|
106
167
|
{
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
168
|
+
"components": [
|
|
169
|
+
{
|
|
170
|
+
"internalType": "uint8",
|
|
171
|
+
"name": "fundingOutputIndex",
|
|
172
|
+
"type": "uint8"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"internalType": "address",
|
|
176
|
+
"name": "depositor",
|
|
177
|
+
"type": "address"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"internalType": "bytes8",
|
|
181
|
+
"name": "blindingFactor",
|
|
182
|
+
"type": "bytes8"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"internalType": "bytes20",
|
|
186
|
+
"name": "walletPubKeyHash",
|
|
187
|
+
"type": "bytes20"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"internalType": "bytes20",
|
|
191
|
+
"name": "refundPubKeyHash",
|
|
192
|
+
"type": "bytes20"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"internalType": "bytes4",
|
|
196
|
+
"name": "refundLocktime",
|
|
197
|
+
"type": "bytes4"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"internalType": "address",
|
|
201
|
+
"name": "vault",
|
|
202
|
+
"type": "address"
|
|
203
|
+
}
|
|
204
|
+
],
|
|
205
|
+
"internalType": "struct Bridge.RevealInfo",
|
|
206
|
+
"name": "reveal",
|
|
207
|
+
"type": "tuple"
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"name": "revealDeposit",
|
|
211
|
+
"outputs": [],
|
|
212
|
+
"stateMutability": "nonpayable",
|
|
213
|
+
"type": "function"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"inputs": [
|
|
111
217
|
{
|
|
112
|
-
"internalType": "
|
|
113
|
-
"name": "
|
|
114
|
-
"type": "
|
|
218
|
+
"internalType": "address",
|
|
219
|
+
"name": "vault",
|
|
220
|
+
"type": "address"
|
|
115
221
|
},
|
|
116
222
|
{
|
|
117
|
-
"internalType": "
|
|
118
|
-
"name": "
|
|
119
|
-
"type": "
|
|
223
|
+
"internalType": "bool",
|
|
224
|
+
"name": "isTrusted",
|
|
225
|
+
"type": "bool"
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"name": "setVaultStatus",
|
|
229
|
+
"outputs": [],
|
|
230
|
+
"stateMutability": "nonpayable",
|
|
231
|
+
"type": "function"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"inputs": [
|
|
235
|
+
{
|
|
236
|
+
"components": [
|
|
237
|
+
{
|
|
238
|
+
"internalType": "bytes4",
|
|
239
|
+
"name": "version",
|
|
240
|
+
"type": "bytes4"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"internalType": "bytes",
|
|
244
|
+
"name": "inputVector",
|
|
245
|
+
"type": "bytes"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"internalType": "bytes",
|
|
249
|
+
"name": "outputVector",
|
|
250
|
+
"type": "bytes"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"internalType": "bytes4",
|
|
254
|
+
"name": "locktime",
|
|
255
|
+
"type": "bytes4"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"internalType": "struct BitcoinTx.Info",
|
|
259
|
+
"name": "sweepTx",
|
|
260
|
+
"type": "tuple"
|
|
120
261
|
},
|
|
121
262
|
{
|
|
122
263
|
"internalType": "bytes",
|
|
@@ -139,6 +280,19 @@
|
|
|
139
280
|
"stateMutability": "nonpayable",
|
|
140
281
|
"type": "function"
|
|
141
282
|
},
|
|
283
|
+
{
|
|
284
|
+
"inputs": [
|
|
285
|
+
{
|
|
286
|
+
"internalType": "address",
|
|
287
|
+
"name": "newOwner",
|
|
288
|
+
"type": "address"
|
|
289
|
+
}
|
|
290
|
+
],
|
|
291
|
+
"name": "transferOwnership",
|
|
292
|
+
"outputs": [],
|
|
293
|
+
"stateMutability": "nonpayable",
|
|
294
|
+
"type": "function"
|
|
295
|
+
},
|
|
142
296
|
{
|
|
143
297
|
"inputs": [
|
|
144
298
|
{
|
|
@@ -149,28 +303,33 @@
|
|
|
149
303
|
],
|
|
150
304
|
"name": "unswept",
|
|
151
305
|
"outputs": [
|
|
152
|
-
{
|
|
153
|
-
"internalType": "uint64",
|
|
154
|
-
"name": "amount",
|
|
155
|
-
"type": "uint64"
|
|
156
|
-
},
|
|
157
306
|
{
|
|
158
307
|
"internalType": "address",
|
|
159
|
-
"name": "
|
|
308
|
+
"name": "depositor",
|
|
160
309
|
"type": "address"
|
|
161
310
|
},
|
|
311
|
+
{
|
|
312
|
+
"internalType": "bytes8",
|
|
313
|
+
"name": "amount",
|
|
314
|
+
"type": "bytes8"
|
|
315
|
+
},
|
|
162
316
|
{
|
|
163
317
|
"internalType": "uint32",
|
|
164
318
|
"name": "revealedAt",
|
|
165
319
|
"type": "uint32"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"internalType": "address",
|
|
323
|
+
"name": "vault",
|
|
324
|
+
"type": "address"
|
|
166
325
|
}
|
|
167
326
|
],
|
|
168
327
|
"stateMutability": "view",
|
|
169
328
|
"type": "function"
|
|
170
329
|
}
|
|
171
330
|
],
|
|
172
|
-
"bytecode": "0x608060405234801561001057600080fd5b506109f0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea26469706673582212207d1e61f37f8d0f4d2e819ea92984d0f23b9d069fd850451fb407141395ccff2864736f6c63430008040033",
|
|
173
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea26469706673582212207d1e61f37f8d0f4d2e819ea92984d0f23b9d069fd850451fb407141395ccff2864736f6c63430008040033",
|
|
331
|
+
"bytecode": "0x60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000104565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6131e780620001146000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638d658d4e1161005b5780638d658d4e146101025780638da5cb5b1461011e578063e53c0b551461013c578063f2fde38b1461016c57610088565b806325750db71461008d57806343c6de29146100a957806360d712fc146100dc578063715018a6146100f8575b600080fd5b6100a760048036038101906100a29190611cf5565b610188565b005b6100c360048036038101906100be9190611d4a565b6107b9565b6040516100d39493929190612455565b60405180910390f35b6100f660048036038101906100f19190611b6a565b610846565b005b61010061096b565b005b61011c60048036038101906101179190611c4a565b6109f3565b005b6101266109f9565b604051610133919061243a565b60405180910390f35b61015660048036038101906101519190611b41565b610a22565b604051610163919061249a565b60405180910390f35b61018660048036038101906101819190611b41565b610a42565b005b600073ffffffffffffffffffffffffffffffffffffffff168160c00160208101906101b39190611b41565b73ffffffffffffffffffffffffffffffffffffffff1614806102305750600160008260c00160208101906101e79190611b41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61026f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026690612593565b60405180910390fd5b60008160200160208101906102849190611b41565b8260400160208101906102979190611c21565b8360600160208101906102aa9190611ba6565b8460800160208101906102bd9190611ba6565b8560a00160208101906102d09190611bf8565b6040516020016102e49594939291906122ff565b6040516020818303038152906040529050600061037183600001602081019061030d9190611d73565b60ff168580604001906103209190612693565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610b3a90919063ffffffff16565b9050600061037e82610d7a565b90506014815114156103e7576103938361111c565b805190602001208180519060200120146103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612633565b60405180910390fd5b6104cb565b60208151141561048f5760028360405161040191906122e8565b602060405180830381855afa15801561041e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104419190611bcf565b61044a826111e9565b1461048a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610481906125b3565b60405180910390fd5b6104ca565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c1906125d3565b60405180910390fd5b5b600061053f8660000160208101906104e39190611bf8565b8780602001906104f39190612693565b8980604001906105039190612693565b8b60600160208101906105169190611bf8565b60405160200161052b9695949392919061229e565b60405160208183030381529060405261120c565b90506000600260008388600001602081019061055b9190611d73565b60405160200161056c929190612272565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990612613565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c02179055508660200160208101906106329190611b41565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906106aa9190611b41565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f293519c6fe266b8b9ca154d153e408c6ef03135a5abeb42e9a91781d620ca47b838860000160208101906107219190611d73565b8960200160208101906107349190611b41565b8a60400160208101906107479190611c21565b8b606001602081019061075a9190611ba6565b8c608001602081019061076d9190611ba6565b8d60a00160208101906107809190611bf8565b8e60c00160208101906107939190611b41565b6040516107a79897969594939291906124b5565b60405180910390a15050505050505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61084e6112d2565b73ffffffffffffffffffffffffffffffffffffffff1661086c6109f9565b73ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906125f3565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f8260405161095f919061249a565b60405180910390a25050565b6109736112d2565b73ffffffffffffffffffffffffffffffffffffffff166109916109f9565b73ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de906125f3565b60405180910390fd5b6109f160006112da565b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b610a4a6112d2565b73ffffffffffffffffffffffffffffffffffffffff16610a686109f9565b73ffffffffffffffffffffffffffffffffffffffff1614610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab5906125f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590612533565b60405180910390fd5b610b37816112da565b50565b6060600080610b488561139e565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612553565b60405180910390fd5b808410610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90612653565b60405180910390fd5b6060600080846001610c079190612772565b905060005b87811015610cc657610c3582838b51610c2591906129ca565b8b61149a9092919063ffffffff16565b9350610c4084611560565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90612573565b60405180910390fd5b8282610cb19190612772565b91508080610cbe90612b98565b915050610c0c565b50610ce881828a51610cd891906129ca565b8a61149a9092919063ffffffff16565b9250610cf383611560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90612573565b60405180910390fd5b610d6d81838a61149a9092919063ffffffff16565b9550505050505092915050565b6060600082600881518110610db8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c90508251600982610dd791906127c8565b60ff1614610df75760405180602001604052806000815250915050611117565b600083600981518110610e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610f265760028160ff161015610e6e5760405180602001604052806000815250915050611117565b600083600a81518110610eaa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff169050600282610eca91906129fe565b60ff1681141580610ee9575060208114158015610ee8575060148114155b5b15610f07576040518060200160405280600081525092505050611117565b610f1d600b828661149a9092919063ffffffff16565b92505050611117565b6000610f3f60086003866116449092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce681141561104357601484600b81518110610fa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614158061100557507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d61100260028651610ff091906129ca565b6002876116449092919063ffffffff16565b14155b15611023576040518060200160405280600081525092505050611117565b61103a600c60148661149a9092919063ffffffff16565b92505050611117565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7811415611102576087846001865161107c91906129ca565b815181106110b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16146110e2576040518060200160405280600081525092505050611117565b6110f9600b60148661149a9092919063ffffffff16565b92505050611117565b50604051806020016040528060008152509150505b919050565b6060600360028360405161113091906122e8565b602060405180830381855afa15801561114d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111709190611bcf565b6040516020016111809190612257565b60405160208183030381529060405260405161119c91906122e8565b602060405180830381855afa1580156111b9573d6000803e3d6000fd5b5050506040515160601b6040516020016111d3919061223c565b6040516020818303038152906040529050919050565b600080825114156111ff576000801b9050611207565b602082015190505b919050565b60006002808360405161121f91906122e8565b602060405180830381855afa15801561123c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061125f9190611bcf565b60405160200161126f9190612257565b60405160208183030381529060405260405161128b91906122e8565b602060405180830381855afa1580156112a8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112cb9190611bcf565b9050919050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060006113ac846116b6565b905060008160ff161415611414576000846000815181106113f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff1690509250925050611495565b80600161142191906127c8565b60ff1684511015611459577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60009250925050611495565b600061148461147f61147a60018560ff168961149a9092919063ffffffff16565b6117d6565b61193d565b905081818160ff1691509350935050505b915091565b606060008214156114bc57604051806020016040528060008152509050611559565b600082846114ca9190612772565b905083811180156114dc575080855110155b61151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612673565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b808210156115545781518383015260208201915061153b565b505050505b9392505050565b6000600982511015611594577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061163f565b60006115b860088085516115a891906129ca565b8561149a9092919063ffffffff16565b90506000806115c68361139e565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611621577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff935050505061163f565b8082600961162f9190612772565b6116399190612772565b93505050505b919050565b60008082846116539190612772565b90508381118015611665575080855110155b6116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90612673565b60405180910390fd5b82846020870101209150509392505050565b600060ff826000815181106116f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561171457600890506117d1565b60fe82600081518110611750577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561177057600490506117d1565b60fd826000815181106117ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156117cc57600290506117d1565b600090505b919050565b60606000825167ffffffffffffffff81111561181b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561184d5781602001600182028036833780820191505090505b50905060005b835181101561193357838181518110611895577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516118b091906129ca565b6118ba91906129ca565b815181106118f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061192b90612b98565b915050611853565b5080915050919050565b60008060005b83518110156119f1576001816119599190612772565b845161196591906129ca565b60086119719190612970565b600261197d9190612852565b8482815181106119b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff166119d19190612970565b826119dc9190612772565b915080806119e990612b98565b915050611943565b5080915050919050565b6000611a0e611a098461270f565b6126ea565b905082815260208101848484011115611a2657600080fd5b611a31848285612b25565b509392505050565b600081359050611a48816130f9565b92915050565b600081359050611a5d81613110565b92915050565b600081359050611a7281613127565b92915050565b600081519050611a878161313e565b92915050565b600081359050611a9c81613155565b92915050565b600081359050611ab18161316c565b92915050565b600082601f830112611ac857600080fd5b8135611ad88482602086016119fb565b91505092915050565b600060808284031215611af357600080fd5b81905092915050565b600060e08284031215611b0e57600080fd5b81905092915050565b600081359050611b2681613183565b92915050565b600081359050611b3b8161319a565b92915050565b600060208284031215611b5357600080fd5b6000611b6184828501611a39565b91505092915050565b60008060408385031215611b7d57600080fd5b6000611b8b85828601611a39565b9250506020611b9c85828601611a4e565b9150509250929050565b600060208284031215611bb857600080fd5b6000611bc684828501611a63565b91505092915050565b600060208284031215611be157600080fd5b6000611bef84828501611a78565b91505092915050565b600060208284031215611c0a57600080fd5b6000611c1884828501611a8d565b91505092915050565b600060208284031215611c3357600080fd5b6000611c4184828501611aa2565b91505092915050565b60008060008060808587031215611c6057600080fd5b600085013567ffffffffffffffff811115611c7a57600080fd5b611c8687828801611ae1565b945050602085013567ffffffffffffffff811115611ca357600080fd5b611caf87828801611ab7565b9350506040611cc087828801611b17565b925050606085013567ffffffffffffffff811115611cdd57600080fd5b611ce987828801611ab7565b91505092959194509250565b6000806101008385031215611d0957600080fd5b600083013567ffffffffffffffff811115611d2357600080fd5b611d2f85828601611ae1565b9250506020611d4085828601611afc565b9150509250929050565b600060208284031215611d5c57600080fd5b6000611d6a84828501611b17565b91505092915050565b600060208284031215611d8557600080fd5b6000611d9384828501611b2c565b91505092915050565b611da581612a32565b82525050565b611dbc611db782612a32565b612be1565b82525050565b611dcb81612a44565b82525050565b611dda81612a50565b82525050565b611df1611dec82612a50565b612bf3565b82525050565b611e0081612a7c565b82525050565b611e17611e1282612a7c565b612bfd565b82525050565b611e2681612a86565b82525050565b611e3d611e3882612a86565b612c07565b82525050565b611e4c81612ab2565b82525050565b611e63611e5e82612ab2565b612c11565b82525050565b6000611e75838561274b565b9350611e82838584612b25565b82840190509392505050565b6000611e9982612740565b611ea3818561274b565b9350611eb3818560208601612b34565b80840191505092915050565b6000611ecc600183612767565b9150611ed782612cd5565b600182019050919050565b6000611eef600183612767565b9150611efa82612cfe565b600182019050919050565b6000611f12602683612756565b9150611f1d82612d27565b604082019050919050565b6000611f35600183612767565b9150611f4082612d76565b600182019050919050565b6000611f58600183612767565b9150611f6382612d9f565b600182019050919050565b6000611f7b602283612756565b9150611f8682612dc8565b604082019050919050565b6000611f9e601a83612756565b9150611fa982612e17565b602082019050919050565b6000611fc1600183612767565b9150611fcc82612e40565b600182019050919050565b6000611fe4601483612756565b9150611fef82612e69565b602082019050919050565b6000612007600183612767565b915061201282612e92565b600182019050919050565b600061202a600183612767565b915061203582612ebb565b600182019050919050565b600061204d601983612756565b915061205882612ee4565b602082019050919050565b6000612070601883612756565b915061207b82612f0d565b602082019050919050565b6000612093600183612767565b915061209e82612f36565b600182019050919050565b60006120b6602083612756565b91506120c182612f5f565b602082019050919050565b60006120d9600183612767565b91506120e482612f88565b600182019050919050565b60006120fc600183612767565b915061210782612fb1565b600182019050919050565b600061211f601883612756565b915061212a82612fda565b602082019050919050565b6000612142601983612756565b915061214d82613003565b602082019050919050565b6000612165600183612767565b91506121708261302c565b600182019050919050565b6000612188601183612756565b915061219382613055565b602082019050919050565b60006121ab601383612756565b91506121b68261307e565b602082019050919050565b60006121ce600183612767565b91506121d9826130a7565b600182019050919050565b60006121f1600183612767565b91506121fc826130d0565b600182019050919050565b61221081612b08565b82525050565b61221f81612b18565b82525050565b61223661223182612b18565b612c2d565b82525050565b60006122488284611de0565b60148201915081905092915050565b60006122638284611e06565b60208201915081905092915050565b600061227e8285611e06565b60208201915061228e8284612225565b6001820191508190509392505050565b60006122aa8289611e2c565b6004820191506122bb828789611e69565b91506122c8828587611e69565b91506122d48284611e2c565b600482019150819050979650505050505050565b60006122f48284611e8e565b915081905092915050565b600061230a82611fb4565b91506123168288611dab565b60148201915061232582611f4b565b915061233082612158565b915061233c8287611e52565b60088201915061234b82611f4b565b9150612356826120cc565b915061236182611ffa565b915061236c82611fb4565b91506123788286611de0565b60148201915061238782612086565b915061239282611ebf565b915061239d826121e4565b91506123a882611ee2565b91506123b3826120cc565b91506123be82611ffa565b91506123c982611fb4565b91506123d58285611de0565b6014820191506123e482611f28565b91506123ef826121c1565b91506123fb8284611e2c565b60048201915061240a8261201d565b915061241582611f4b565b9150612420826121e4565b915061242b826120ef565b91508190509695505050505050565b600060208201905061244f6000830184611d9c565b92915050565b600060808201905061246a6000830187611d9c565b6124776020830186611e43565b6124846040830185612207565b6124916060830184611d9c565b95945050505050565b60006020820190506124af6000830184611dc2565b92915050565b6000610100820190506124cb600083018b611df7565b6124d8602083018a612216565b6124e56040830189611d9c565b6124f26060830188611e43565b6124ff6080830187611dd1565b61250c60a0830186611dd1565b61251960c0830185611e1d565b61252660e0830184611d9c565b9998505050505050505050565b6000602082019050818103600083015261254c81611f05565b9050919050565b6000602082019050818103600083015261256c81611f6e565b9050919050565b6000602082019050818103600083015261258c81611f91565b9050919050565b600060208201905081810360008301526125ac81611fd7565b9050919050565b600060208201905081810360008301526125cc81612040565b9050919050565b600060208201905081810360008301526125ec81612063565b9050919050565b6000602082019050818103600083015261260c816120a9565b9050919050565b6000602082019050818103600083015261262c81612112565b9050919050565b6000602082019050818103600083015261264c81612135565b9050919050565b6000602082019050818103600083015261266c8161217b565b9050919050565b6000602082019050818103600083015261268c8161219e565b9050919050565b600080833560016020038436030381126126ac57600080fd5b80840192508235915067ffffffffffffffff8211156126ca57600080fd5b6020830192506001820236038313156126e257600080fd5b509250929050565b60006126f4612705565b90506127008282612b67565b919050565b6000604051905090565b600067ffffffffffffffff82111561272a57612729612c6e565b5b61273382612c9d565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061277d82612afe565b915061278883612afe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127bd576127bc612c3f565b5b828201905092915050565b60006127d382612b18565b91506127de83612b18565b92508260ff038211156127f4576127f3612c3f565b5b828201905092915050565b6000808291508390505b60018511156128495780860481111561282557612824612c3f565b5b60018516156128345780820291505b808102905061284285612cc8565b9450612809565b94509492505050565b600061285d82612afe565b915061286883612afe565b92506128957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461289d565b905092915050565b6000826128ad5760019050612969565b816128bb5760009050612969565b81600181146128d157600281146128db5761290a565b6001915050612969565b60ff8411156128ed576128ec612c3f565b5b8360020a91508482111561290457612903612c3f565b5b50612969565b5060208310610133831016604e8410600b841016171561293f5782820a90508381111561293a57612939612c3f565b5b612969565b61294c84848460016127ff565b9250905081840481111561296357612962612c3f565b5b81810290505b9392505050565b600061297b82612afe565b915061298683612afe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129bf576129be612c3f565b5b828202905092915050565b60006129d582612afe565b91506129e083612afe565b9250828210156129f3576129f2612c3f565b5b828203905092915050565b6000612a0982612b18565b9150612a1483612b18565b925082821015612a2757612a26612c3f565b5b828203905092915050565b6000612a3d82612ade565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612b52578082015181840152602081019050612b37565b83811115612b61576000848401525b50505050565b612b7082612c9d565b810181811067ffffffffffffffff82111715612b8f57612b8e612c6e565b5b80604052505050565b6000612ba382612afe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bd657612bd5612c3f565b5b600182019050919050565b6000612bec82612c1b565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000612c2682612cbb565b9050919050565b6000612c3882612cae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7f5661756c74206973206e6f742074727573746564000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b61310281612a32565b811461310d57600080fd5b50565b61311981612a44565b811461312457600080fd5b50565b61313081612a50565b811461313b57600080fd5b50565b61314781612a7c565b811461315257600080fd5b50565b61315e81612a86565b811461316957600080fd5b50565b61317581612ab2565b811461318057600080fd5b50565b61318c81612afe565b811461319757600080fd5b50565b6131a381612b18565b81146131ae57600080fd5b5056fea264697066735822122079bf88bf7acdd1303b23799e487320e530481f36051202aa20c67e3155e569e564736f6c63430008040033",
|
|
332
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638d658d4e1161005b5780638d658d4e146101025780638da5cb5b1461011e578063e53c0b551461013c578063f2fde38b1461016c57610088565b806325750db71461008d57806343c6de29146100a957806360d712fc146100dc578063715018a6146100f8575b600080fd5b6100a760048036038101906100a29190611cf5565b610188565b005b6100c360048036038101906100be9190611d4a565b6107b9565b6040516100d39493929190612455565b60405180910390f35b6100f660048036038101906100f19190611b6a565b610846565b005b61010061096b565b005b61011c60048036038101906101179190611c4a565b6109f3565b005b6101266109f9565b604051610133919061243a565b60405180910390f35b61015660048036038101906101519190611b41565b610a22565b604051610163919061249a565b60405180910390f35b61018660048036038101906101819190611b41565b610a42565b005b600073ffffffffffffffffffffffffffffffffffffffff168160c00160208101906101b39190611b41565b73ffffffffffffffffffffffffffffffffffffffff1614806102305750600160008260c00160208101906101e79190611b41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61026f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026690612593565b60405180910390fd5b60008160200160208101906102849190611b41565b8260400160208101906102979190611c21565b8360600160208101906102aa9190611ba6565b8460800160208101906102bd9190611ba6565b8560a00160208101906102d09190611bf8565b6040516020016102e49594939291906122ff565b6040516020818303038152906040529050600061037183600001602081019061030d9190611d73565b60ff168580604001906103209190612693565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610b3a90919063ffffffff16565b9050600061037e82610d7a565b90506014815114156103e7576103938361111c565b805190602001208180519060200120146103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612633565b60405180910390fd5b6104cb565b60208151141561048f5760028360405161040191906122e8565b602060405180830381855afa15801561041e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104419190611bcf565b61044a826111e9565b1461048a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610481906125b3565b60405180910390fd5b6104ca565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c1906125d3565b60405180910390fd5b5b600061053f8660000160208101906104e39190611bf8565b8780602001906104f39190612693565b8980604001906105039190612693565b8b60600160208101906105169190611bf8565b60405160200161052b9695949392919061229e565b60405160208183030381529060405261120c565b90506000600260008388600001602081019061055b9190611d73565b60405160200161056c929190612272565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146105f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e990612613565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c02179055508660200160208101906106329190611b41565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906106aa9190611b41565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f293519c6fe266b8b9ca154d153e408c6ef03135a5abeb42e9a91781d620ca47b838860000160208101906107219190611d73565b8960200160208101906107349190611b41565b8a60400160208101906107479190611c21565b8b606001602081019061075a9190611ba6565b8c608001602081019061076d9190611ba6565b8d60a00160208101906107809190611bf8565b8e60c00160208101906107939190611b41565b6040516107a79897969594939291906124b5565b60405180910390a15050505050505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61084e6112d2565b73ffffffffffffffffffffffffffffffffffffffff1661086c6109f9565b73ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906125f3565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f8260405161095f919061249a565b60405180910390a25050565b6109736112d2565b73ffffffffffffffffffffffffffffffffffffffff166109916109f9565b73ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de906125f3565b60405180910390fd5b6109f160006112da565b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b610a4a6112d2565b73ffffffffffffffffffffffffffffffffffffffff16610a686109f9565b73ffffffffffffffffffffffffffffffffffffffff1614610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab5906125f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2590612533565b60405180910390fd5b610b37816112da565b50565b6060600080610b488561139e565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612553565b60405180910390fd5b808410610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90612653565b60405180910390fd5b6060600080846001610c079190612772565b905060005b87811015610cc657610c3582838b51610c2591906129ca565b8b61149a9092919063ffffffff16565b9350610c4084611560565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90612573565b60405180910390fd5b8282610cb19190612772565b91508080610cbe90612b98565b915050610c0c565b50610ce881828a51610cd891906129ca565b8a61149a9092919063ffffffff16565b9250610cf383611560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f90612573565b60405180910390fd5b610d6d81838a61149a9092919063ffffffff16565b9550505050505092915050565b6060600082600881518110610db8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c90508251600982610dd791906127c8565b60ff1614610df75760405180602001604052806000815250915050611117565b600083600981518110610e33577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610f265760028160ff161015610e6e5760405180602001604052806000815250915050611117565b600083600a81518110610eaa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff169050600282610eca91906129fe565b60ff1681141580610ee9575060208114158015610ee8575060148114155b5b15610f07576040518060200160405280600081525092505050611117565b610f1d600b828661149a9092919063ffffffff16565b92505050611117565b6000610f3f60086003866116449092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce681141561104357601484600b81518110610fa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614158061100557507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d61100260028651610ff091906129ca565b6002876116449092919063ffffffff16565b14155b15611023576040518060200160405280600081525092505050611117565b61103a600c60148661149a9092919063ffffffff16565b92505050611117565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7811415611102576087846001865161107c91906129ca565b815181106110b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16146110e2576040518060200160405280600081525092505050611117565b6110f9600b60148661149a9092919063ffffffff16565b92505050611117565b50604051806020016040528060008152509150505b919050565b6060600360028360405161113091906122e8565b602060405180830381855afa15801561114d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111709190611bcf565b6040516020016111809190612257565b60405160208183030381529060405260405161119c91906122e8565b602060405180830381855afa1580156111b9573d6000803e3d6000fd5b5050506040515160601b6040516020016111d3919061223c565b6040516020818303038152906040529050919050565b600080825114156111ff576000801b9050611207565b602082015190505b919050565b60006002808360405161121f91906122e8565b602060405180830381855afa15801561123c573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061125f9190611bcf565b60405160200161126f9190612257565b60405160208183030381529060405260405161128b91906122e8565b602060405180830381855afa1580156112a8573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112cb9190611bcf565b9050919050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060006113ac846116b6565b905060008160ff161415611414576000846000815181106113f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff1690509250925050611495565b80600161142191906127c8565b60ff1684511015611459577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60009250925050611495565b600061148461147f61147a60018560ff168961149a9092919063ffffffff16565b6117d6565b61193d565b905081818160ff1691509350935050505b915091565b606060008214156114bc57604051806020016040528060008152509050611559565b600082846114ca9190612772565b905083811180156114dc575080855110155b61151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612673565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b808210156115545781518383015260208201915061153b565b505050505b9392505050565b6000600982511015611594577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061163f565b60006115b860088085516115a891906129ca565b8561149a9092919063ffffffff16565b90506000806115c68361139e565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611621577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff935050505061163f565b8082600961162f9190612772565b6116399190612772565b93505050505b919050565b60008082846116539190612772565b90508381118015611665575080855110155b6116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90612673565b60405180910390fd5b82846020870101209150509392505050565b600060ff826000815181106116f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561171457600890506117d1565b60fe82600081518110611750577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561177057600490506117d1565b60fd826000815181106117ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156117cc57600290506117d1565b600090505b919050565b60606000825167ffffffffffffffff81111561181b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561184d5781602001600182028036833780820191505090505b50905060005b835181101561193357838181518110611895577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516118b091906129ca565b6118ba91906129ca565b815181106118f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061192b90612b98565b915050611853565b5080915050919050565b60008060005b83518110156119f1576001816119599190612772565b845161196591906129ca565b60086119719190612970565b600261197d9190612852565b8482815181106119b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff166119d19190612970565b826119dc9190612772565b915080806119e990612b98565b915050611943565b5080915050919050565b6000611a0e611a098461270f565b6126ea565b905082815260208101848484011115611a2657600080fd5b611a31848285612b25565b509392505050565b600081359050611a48816130f9565b92915050565b600081359050611a5d81613110565b92915050565b600081359050611a7281613127565b92915050565b600081519050611a878161313e565b92915050565b600081359050611a9c81613155565b92915050565b600081359050611ab18161316c565b92915050565b600082601f830112611ac857600080fd5b8135611ad88482602086016119fb565b91505092915050565b600060808284031215611af357600080fd5b81905092915050565b600060e08284031215611b0e57600080fd5b81905092915050565b600081359050611b2681613183565b92915050565b600081359050611b3b8161319a565b92915050565b600060208284031215611b5357600080fd5b6000611b6184828501611a39565b91505092915050565b60008060408385031215611b7d57600080fd5b6000611b8b85828601611a39565b9250506020611b9c85828601611a4e565b9150509250929050565b600060208284031215611bb857600080fd5b6000611bc684828501611a63565b91505092915050565b600060208284031215611be157600080fd5b6000611bef84828501611a78565b91505092915050565b600060208284031215611c0a57600080fd5b6000611c1884828501611a8d565b91505092915050565b600060208284031215611c3357600080fd5b6000611c4184828501611aa2565b91505092915050565b60008060008060808587031215611c6057600080fd5b600085013567ffffffffffffffff811115611c7a57600080fd5b611c8687828801611ae1565b945050602085013567ffffffffffffffff811115611ca357600080fd5b611caf87828801611ab7565b9350506040611cc087828801611b17565b925050606085013567ffffffffffffffff811115611cdd57600080fd5b611ce987828801611ab7565b91505092959194509250565b6000806101008385031215611d0957600080fd5b600083013567ffffffffffffffff811115611d2357600080fd5b611d2f85828601611ae1565b9250506020611d4085828601611afc565b9150509250929050565b600060208284031215611d5c57600080fd5b6000611d6a84828501611b17565b91505092915050565b600060208284031215611d8557600080fd5b6000611d9384828501611b2c565b91505092915050565b611da581612a32565b82525050565b611dbc611db782612a32565b612be1565b82525050565b611dcb81612a44565b82525050565b611dda81612a50565b82525050565b611df1611dec82612a50565b612bf3565b82525050565b611e0081612a7c565b82525050565b611e17611e1282612a7c565b612bfd565b82525050565b611e2681612a86565b82525050565b611e3d611e3882612a86565b612c07565b82525050565b611e4c81612ab2565b82525050565b611e63611e5e82612ab2565b612c11565b82525050565b6000611e75838561274b565b9350611e82838584612b25565b82840190509392505050565b6000611e9982612740565b611ea3818561274b565b9350611eb3818560208601612b34565b80840191505092915050565b6000611ecc600183612767565b9150611ed782612cd5565b600182019050919050565b6000611eef600183612767565b9150611efa82612cfe565b600182019050919050565b6000611f12602683612756565b9150611f1d82612d27565b604082019050919050565b6000611f35600183612767565b9150611f4082612d76565b600182019050919050565b6000611f58600183612767565b9150611f6382612d9f565b600182019050919050565b6000611f7b602283612756565b9150611f8682612dc8565b604082019050919050565b6000611f9e601a83612756565b9150611fa982612e17565b602082019050919050565b6000611fc1600183612767565b9150611fcc82612e40565b600182019050919050565b6000611fe4601483612756565b9150611fef82612e69565b602082019050919050565b6000612007600183612767565b915061201282612e92565b600182019050919050565b600061202a600183612767565b915061203582612ebb565b600182019050919050565b600061204d601983612756565b915061205882612ee4565b602082019050919050565b6000612070601883612756565b915061207b82612f0d565b602082019050919050565b6000612093600183612767565b915061209e82612f36565b600182019050919050565b60006120b6602083612756565b91506120c182612f5f565b602082019050919050565b60006120d9600183612767565b91506120e482612f88565b600182019050919050565b60006120fc600183612767565b915061210782612fb1565b600182019050919050565b600061211f601883612756565b915061212a82612fda565b602082019050919050565b6000612142601983612756565b915061214d82613003565b602082019050919050565b6000612165600183612767565b91506121708261302c565b600182019050919050565b6000612188601183612756565b915061219382613055565b602082019050919050565b60006121ab601383612756565b91506121b68261307e565b602082019050919050565b60006121ce600183612767565b91506121d9826130a7565b600182019050919050565b60006121f1600183612767565b91506121fc826130d0565b600182019050919050565b61221081612b08565b82525050565b61221f81612b18565b82525050565b61223661223182612b18565b612c2d565b82525050565b60006122488284611de0565b60148201915081905092915050565b60006122638284611e06565b60208201915081905092915050565b600061227e8285611e06565b60208201915061228e8284612225565b6001820191508190509392505050565b60006122aa8289611e2c565b6004820191506122bb828789611e69565b91506122c8828587611e69565b91506122d48284611e2c565b600482019150819050979650505050505050565b60006122f48284611e8e565b915081905092915050565b600061230a82611fb4565b91506123168288611dab565b60148201915061232582611f4b565b915061233082612158565b915061233c8287611e52565b60088201915061234b82611f4b565b9150612356826120cc565b915061236182611ffa565b915061236c82611fb4565b91506123788286611de0565b60148201915061238782612086565b915061239282611ebf565b915061239d826121e4565b91506123a882611ee2565b91506123b3826120cc565b91506123be82611ffa565b91506123c982611fb4565b91506123d58285611de0565b6014820191506123e482611f28565b91506123ef826121c1565b91506123fb8284611e2c565b60048201915061240a8261201d565b915061241582611f4b565b9150612420826121e4565b915061242b826120ef565b91508190509695505050505050565b600060208201905061244f6000830184611d9c565b92915050565b600060808201905061246a6000830187611d9c565b6124776020830186611e43565b6124846040830185612207565b6124916060830184611d9c565b95945050505050565b60006020820190506124af6000830184611dc2565b92915050565b6000610100820190506124cb600083018b611df7565b6124d8602083018a612216565b6124e56040830189611d9c565b6124f26060830188611e43565b6124ff6080830187611dd1565b61250c60a0830186611dd1565b61251960c0830185611e1d565b61252660e0830184611d9c565b9998505050505050505050565b6000602082019050818103600083015261254c81611f05565b9050919050565b6000602082019050818103600083015261256c81611f6e565b9050919050565b6000602082019050818103600083015261258c81611f91565b9050919050565b600060208201905081810360008301526125ac81611fd7565b9050919050565b600060208201905081810360008301526125cc81612040565b9050919050565b600060208201905081810360008301526125ec81612063565b9050919050565b6000602082019050818103600083015261260c816120a9565b9050919050565b6000602082019050818103600083015261262c81612112565b9050919050565b6000602082019050818103600083015261264c81612135565b9050919050565b6000602082019050818103600083015261266c8161217b565b9050919050565b6000602082019050818103600083015261268c8161219e565b9050919050565b600080833560016020038436030381126126ac57600080fd5b80840192508235915067ffffffffffffffff8211156126ca57600080fd5b6020830192506001820236038313156126e257600080fd5b509250929050565b60006126f4612705565b90506127008282612b67565b919050565b6000604051905090565b600067ffffffffffffffff82111561272a57612729612c6e565b5b61273382612c9d565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061277d82612afe565b915061278883612afe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127bd576127bc612c3f565b5b828201905092915050565b60006127d382612b18565b91506127de83612b18565b92508260ff038211156127f4576127f3612c3f565b5b828201905092915050565b6000808291508390505b60018511156128495780860481111561282557612824612c3f565b5b60018516156128345780820291505b808102905061284285612cc8565b9450612809565b94509492505050565b600061285d82612afe565b915061286883612afe565b92506128957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461289d565b905092915050565b6000826128ad5760019050612969565b816128bb5760009050612969565b81600181146128d157600281146128db5761290a565b6001915050612969565b60ff8411156128ed576128ec612c3f565b5b8360020a91508482111561290457612903612c3f565b5b50612969565b5060208310610133831016604e8410600b841016171561293f5782820a90508381111561293a57612939612c3f565b5b612969565b61294c84848460016127ff565b9250905081840481111561296357612962612c3f565b5b81810290505b9392505050565b600061297b82612afe565b915061298683612afe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129bf576129be612c3f565b5b828202905092915050565b60006129d582612afe565b91506129e083612afe565b9250828210156129f3576129f2612c3f565b5b828203905092915050565b6000612a0982612b18565b9150612a1483612b18565b925082821015612a2757612a26612c3f565b5b828203905092915050565b6000612a3d82612ade565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612b52578082015181840152602081019050612b37565b83811115612b61576000848401525b50505050565b612b7082612c9d565b810181811067ffffffffffffffff82111715612b8f57612b8e612c6e565b5b80604052505050565b6000612ba382612afe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612bd657612bd5612c3f565b5b600182019050919050565b6000612bec82612c1b565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000612c2682612cbb565b9050919050565b6000612c3882612cae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7f5661756c74206973206e6f742074727573746564000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b61310281612a32565b811461310d57600080fd5b50565b61311981612a44565b811461312457600080fd5b50565b61313081612a50565b811461313b57600080fd5b50565b61314781612a7c565b811461315257600080fd5b50565b61315e81612a86565b811461316957600080fd5b50565b61317581612ab2565b811461318057600080fd5b50565b61318c81612afe565b811461319757600080fd5b50565b6131a381612b18565b81146131ae57600080fd5b5056fea264697066735822122079bf88bf7acdd1303b23799e487320e530481f36051202aa20c67e3155e569e564736f6c63430008040033",
|
|
174
333
|
"linkReferences": {},
|
|
175
334
|
"deployedLinkReferences": {}
|
|
176
335
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
// ██████████████ ▐████▌ ██████████████
|
|
4
|
+
// ██████████████ ▐████▌ ██████████████
|
|
5
|
+
// ▐████▌ ▐████▌
|
|
6
|
+
// ▐████▌ ▐████▌
|
|
7
|
+
// ██████████████ ▐████▌ ██████████████
|
|
8
|
+
// ██████████████ ▐████▌ ██████████████
|
|
9
|
+
// ▐████▌ ▐████▌
|
|
10
|
+
// ▐████▌ ▐████▌
|
|
11
|
+
// ▐████▌ ▐████▌
|
|
12
|
+
// ▐████▌ ▐████▌
|
|
13
|
+
// ▐████▌ ▐████▌
|
|
14
|
+
// ▐████▌ ▐████▌
|
|
15
|
+
|
|
16
|
+
pragma solidity 0.8.4;
|
|
17
|
+
|
|
18
|
+
/// @title Bitcoin transaction
|
|
19
|
+
/// @notice Allows to reference Bitcoin raw transaction in Solidity.
|
|
20
|
+
/// @dev See https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format
|
|
21
|
+
///
|
|
22
|
+
/// Raw Bitcon transaction data:
|
|
23
|
+
///
|
|
24
|
+
/// | Bytes | Name | BTC type | Description |
|
|
25
|
+
/// |--------|--------------|------------------------|---------------------------|
|
|
26
|
+
/// | 4 | version | int32_t (LE) | TX version number |
|
|
27
|
+
/// | varies | tx_in_count | compactSize uint (LE) | Number of TX inputs |
|
|
28
|
+
/// | varies | tx_in | txIn[] | TX inputs |
|
|
29
|
+
/// | varies | tx_out count | compactSize uint (LE) | Number of TX outputs |
|
|
30
|
+
/// | varies | tx_out | txOut[] | TX outputs |
|
|
31
|
+
/// | 4 | lock_time | uint32_t (LE) | Unix time or block number |
|
|
32
|
+
///
|
|
33
|
+
//
|
|
34
|
+
/// Non-coinbase transaction input (txIn):
|
|
35
|
+
///
|
|
36
|
+
/// | Bytes | Name | BTC type | Description |
|
|
37
|
+
/// |--------|------------------|------------------------|---------------------------------------------|
|
|
38
|
+
/// | 36 | previous_output | outpoint | The previous outpoint being spent |
|
|
39
|
+
/// | varies | script bytes | compactSize uint (LE) | The number of bytes in the signature script |
|
|
40
|
+
/// | varies | signature script | char[] | The signature script, empty for P2WSH |
|
|
41
|
+
/// | 4 | sequence | uint32_t (LE) | Sequence number |
|
|
42
|
+
///
|
|
43
|
+
///
|
|
44
|
+
/// The reference to transaction being spent (outpoint):
|
|
45
|
+
///
|
|
46
|
+
/// | Bytes | Name | BTC type | Description |
|
|
47
|
+
/// |-------|-------|---------------|------------------------------------------|
|
|
48
|
+
/// | 32 | hash | char[32] | Hash of the transaction to spend |
|
|
49
|
+
/// | 4 | index | uint32_t (LE) | Index of the specific output from the TX |
|
|
50
|
+
///
|
|
51
|
+
///
|
|
52
|
+
/// Transaction output (txOut):
|
|
53
|
+
///
|
|
54
|
+
/// | Bytes | Name | BTC type | Description |
|
|
55
|
+
/// |--------|-----------------|-----------------------|--------------------------------------|
|
|
56
|
+
/// | 8 | value | int64_t (LE) | Number of satoshis to spend |
|
|
57
|
+
/// | 1+ | pk_script_bytes | compactSize uint (LE) | Number of bytes in the pubkey script |
|
|
58
|
+
/// | varies | pk_script | char[] | Pubkey script |
|
|
59
|
+
///
|
|
60
|
+
/// compactSize uint format:
|
|
61
|
+
///
|
|
62
|
+
/// | Value | Bytes | Format |
|
|
63
|
+
/// |-----------------------------------------|-------|----------------------------------------------|
|
|
64
|
+
/// | >= 0 && <= 252 | 1 | uint8_t |
|
|
65
|
+
/// | >= 253 && <= 0xffff | 3 | 0xfd followed by the number as uint16_t (LE) |
|
|
66
|
+
/// | >= 0x10000 && <= 0xffffffff | 5 | 0xfe followed by the number as uint32_t (LE) |
|
|
67
|
+
/// | >= 0x100000000 && <= 0xffffffffffffffff | 9 | 0xff followed by the number as uint64_t (LE) |
|
|
68
|
+
///
|
|
69
|
+
/// (*) compactSize uint is often references as VarInt)
|
|
70
|
+
///
|
|
71
|
+
library BitcoinTx {
|
|
72
|
+
/// @notice Represents Bitcoin transaction data for funding BTC deposit
|
|
73
|
+
/// P2(W)SH transaction.
|
|
74
|
+
struct Info {
|
|
75
|
+
/// @notice Bitcoin transaction version
|
|
76
|
+
/// @dev `version` from raw Bitcon transaction data.
|
|
77
|
+
/// Encoded as 4-bytes signed integer, little endian.
|
|
78
|
+
bytes4 version;
|
|
79
|
+
/// @notice All Bitcoin transaction inputs, prepended by the number of
|
|
80
|
+
/// transaction inputs.
|
|
81
|
+
/// @dev `tx_in_count | tx_in` from raw Bitcon transaction data.
|
|
82
|
+
///
|
|
83
|
+
/// The number of transaction inputs encoded as compactSize
|
|
84
|
+
/// unsigned integer, little-endian.
|
|
85
|
+
///
|
|
86
|
+
/// Note that some popular block explorers reverse the order of
|
|
87
|
+
/// bytes from `outpoint`'s `hash` and display it as big-endian.
|
|
88
|
+
/// Solidity code of Bridge expects hashes in little-endian, just
|
|
89
|
+
/// like they are represented in a raw Bitcoin transaction.
|
|
90
|
+
bytes inputVector;
|
|
91
|
+
/// @notice All Bitcoin transaction outputs prepended by the number of
|
|
92
|
+
/// transaction outputs.
|
|
93
|
+
/// @dev `tx_out_count | tx_out` from raw Bitcoin transaction data.
|
|
94
|
+
///
|
|
95
|
+
/// The number of transaction outputs encoded as a compactSize
|
|
96
|
+
/// unsigned integer, little-endian.
|
|
97
|
+
bytes outputVector;
|
|
98
|
+
/// @notice Bitcoin transaction locktime.
|
|
99
|
+
///
|
|
100
|
+
/// @dev `lock_time` from raw Bitcoin transaction data.
|
|
101
|
+
/// Encoded as 4-bytes unsigned integer, little endian.
|
|
102
|
+
bytes4 locktime;
|
|
103
|
+
}
|
|
104
|
+
}
|