@keep-network/tbtc-v2 0.1.1-dev.7 → 0.1.1-dev.8
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 +3 -3
- package/artifacts/TBTCToken.json +3 -3
- package/artifacts/VendingMachine.json +10 -10
- package/artifacts/solcInputs/{25bea07ad744b8c97e466495ad2abf97.json → 4cf328e09411ac69d75a3c381680bc2c.json} +7 -7
- 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 +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +116 -2
- 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/Bridge.sol +49 -7
- package/package.json +1 -1
|
@@ -47,11 +47,94 @@
|
|
|
47
47
|
"internalType": "bytes4",
|
|
48
48
|
"name": "refundLocktime",
|
|
49
49
|
"type": "bytes4"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"indexed": false,
|
|
53
|
+
"internalType": "address",
|
|
54
|
+
"name": "vault",
|
|
55
|
+
"type": "address"
|
|
50
56
|
}
|
|
51
57
|
],
|
|
52
58
|
"name": "DepositRevealed",
|
|
53
59
|
"type": "event"
|
|
54
60
|
},
|
|
61
|
+
{
|
|
62
|
+
"anonymous": false,
|
|
63
|
+
"inputs": [
|
|
64
|
+
{
|
|
65
|
+
"indexed": true,
|
|
66
|
+
"internalType": "address",
|
|
67
|
+
"name": "previousOwner",
|
|
68
|
+
"type": "address"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
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": [
|
|
83
|
+
{
|
|
84
|
+
"indexed": true,
|
|
85
|
+
"internalType": "address",
|
|
86
|
+
"name": "vault",
|
|
87
|
+
"type": "address"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"indexed": false,
|
|
91
|
+
"internalType": "bool",
|
|
92
|
+
"name": "isTrusted",
|
|
93
|
+
"type": "bool"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"name": "VaultStatusUpdated",
|
|
97
|
+
"type": "event"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"inputs": [
|
|
101
|
+
{
|
|
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": [
|
|
122
|
+
{
|
|
123
|
+
"internalType": "address",
|
|
124
|
+
"name": "",
|
|
125
|
+
"type": "address"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"stateMutability": "view",
|
|
129
|
+
"type": "function"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"inputs": [],
|
|
133
|
+
"name": "renounceOwnership",
|
|
134
|
+
"outputs": [],
|
|
135
|
+
"stateMutability": "nonpayable",
|
|
136
|
+
"type": "function"
|
|
137
|
+
},
|
|
55
138
|
{
|
|
56
139
|
"inputs": [
|
|
57
140
|
{
|
|
@@ -129,6 +212,24 @@
|
|
|
129
212
|
"stateMutability": "nonpayable",
|
|
130
213
|
"type": "function"
|
|
131
214
|
},
|
|
215
|
+
{
|
|
216
|
+
"inputs": [
|
|
217
|
+
{
|
|
218
|
+
"internalType": "address",
|
|
219
|
+
"name": "vault",
|
|
220
|
+
"type": "address"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"internalType": "bool",
|
|
224
|
+
"name": "isTrusted",
|
|
225
|
+
"type": "bool"
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"name": "setVaultStatus",
|
|
229
|
+
"outputs": [],
|
|
230
|
+
"stateMutability": "nonpayable",
|
|
231
|
+
"type": "function"
|
|
232
|
+
},
|
|
132
233
|
{
|
|
133
234
|
"inputs": [
|
|
134
235
|
{
|
|
@@ -179,6 +280,19 @@
|
|
|
179
280
|
"stateMutability": "nonpayable",
|
|
180
281
|
"type": "function"
|
|
181
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
|
+
},
|
|
182
296
|
{
|
|
183
297
|
"inputs": [
|
|
184
298
|
{
|
|
@@ -214,8 +328,8 @@
|
|
|
214
328
|
"type": "function"
|
|
215
329
|
}
|
|
216
330
|
],
|
|
217
|
-
"bytecode": "0x608060405234801561001057600080fd5b506129e1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806325750db71461004657806343c6de29146100625780638d658d4e14610095575b600080fd5b610060600480360381019061005b91906116d0565b6100b1565b005b61007c60048036038101906100779190611725565b61059f565b60405161008c9493929190611d9d565b60405180910390f35b6100af60048036038101906100aa9190611625565b61062c565b005b60008160200160208101906100c69190611558565b8260400160208101906100d991906115fc565b8360600160208101906100ec9190611581565b8460800160208101906100ff9190611581565b8560a001602081019061011291906115d3565b604051602001610126959493929190611c62565b604051602081830303815290604052905060006101b383600001602081019061014f919061174e565b60ff168580604001906101629190611f51565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061063290919063ffffffff16565b905060006101c082610872565b9050601481511415610229576101d583610c14565b80519060200120818051906020012014610224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021b90611ef1565b60405180910390fd5b6102c6565b60208151141561028a5761023c83610ce1565b61024582610da7565b14610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c90611e91565b60405180910390fd5b6102c5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611eb1565b60405180910390fd5b5b600061033a8660000160208101906102de91906115d3565b8780602001906102ee9190611f51565b8980604001906102fe9190611f51565b8b606001602081019061031191906115d3565b60405160200161032696959493929190611c01565b604051602081830303815290604052610ce1565b9050600080600083886000016020810190610355919061174e565b604051602001610366929190611bd5565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146103ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e390611ed1565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c021790555086602001602081019061042c9190611558565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906104a49190611558565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa62fd60993aa217b6f00fbb6f377e73a7bbf09f76e730ca9c99f9d54edddc7e88388600001602081019061051b919061174e565b89602001602081019061052e9190611558565b8a604001602081019061054191906115fc565b8b60600160208101906105549190611581565b8c60800160208101906105679190611581565b8d60a001602081019061057a91906115d3565b60405161058d9796959493929190611de2565b60405180910390a15050505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b50505050565b606060008061064085610dca565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290611e51565b60405180910390fd5b8084106106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e490611f11565b60405180910390fd5b60606000808460016106ff9190612030565b905060005b878110156107be5761072d82838b5161071d9190612288565b8b610ec69092919063ffffffff16565b935061073884610f8c565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490611e71565b60405180910390fd5b82826107a99190612030565b915080806107b69061244a565b915050610704565b506107e081828a516107d09190612288565b8a610ec69092919063ffffffff16565b92506107eb83610f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790611e71565b60405180910390fd5b61086581838a610ec69092919063ffffffff16565b9550505050505092915050565b60606000826008815181106108b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c905082516009826108cf9190612086565b60ff16146108ef5760405180602001604052806000815250915050610c0f565b60008360098151811061092b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610a1e5760028160ff1610156109665760405180602001604052806000815250915050610c0f565b600083600a815181106109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1690506002826109c291906122bc565b60ff16811415806109e15750602081141580156109e0575060148114155b5b156109ff576040518060200160405280600081525092505050610c0f565b610a15600b8286610ec69092919063ffffffff16565b92505050610c0f565b6000610a3760086003866110709092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6811415610b3b57601484600b81518110610a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141580610afd57507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d610afa60028651610ae89190612288565b6002876110709092919063ffffffff16565b14155b15610b1b576040518060200160405280600081525092505050610c0f565b610b32600c601486610ec69092919063ffffffff16565b92505050610c0f565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7811415610bfa5760878460018651610b749190612288565b81518110610bab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614610bda576040518060200160405280600081525092505050610c0f565b610bf1600b601486610ec69092919063ffffffff16565b92505050610c0f565b50604051806020016040528060008152509150505b919050565b60606003600283604051610c289190611c4b565b602060405180830381855afa158015610c45573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6891906115aa565b604051602001610c789190611bba565b604051602081830303815290604052604051610c949190611c4b565b602060405180830381855afa158015610cb1573d6000803e3d6000fd5b5050506040515160601b604051602001610ccb9190611b9f565b6040516020818303038152906040529050919050565b600060028083604051610cf49190611c4b565b602060405180830381855afa158015610d11573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d3491906115aa565b604051602001610d449190611bba565b604051602081830303815290604052604051610d609190611c4b565b602060405180830381855afa158015610d7d573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610da091906115aa565b9050919050565b60008082511415610dbd576000801b9050610dc5565b602082015190505b919050565b6000806000610dd8846110e2565b905060008160ff161415610e4057600084600081518110610e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff1690509250925050610ec1565b806001610e4d9190612086565b60ff1684511015610e85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60009250925050610ec1565b6000610eb0610eab610ea660018560ff1689610ec69092919063ffffffff16565b611202565b611369565b905081818160ff1691509350935050505b915091565b60606000821415610ee857604051806020016040528060008152509050610f85565b60008284610ef69190612030565b90508381118015610f08575080855110155b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90611f31565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b80821015610f8057815183830152602082019150610f67565b505050505b9392505050565b6000600982511015610fc0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061106b565b6000610fe46008808551610fd49190612288565b85610ec69092919063ffffffff16565b9050600080610ff283610dca565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff935050505061106b565b8082600961105b9190612030565b6110659190612030565b93505050505b919050565b600080828461107f9190612030565b90508381118015611091575080855110155b6110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790611f31565b60405180910390fd5b82846020870101209150509392505050565b600060ff82600081518110611120577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561114057600890506111fd565b60fe8260008151811061117c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561119c57600490506111fd565b60fd826000815181106111d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156111f857600290506111fd565b600090505b919050565b60606000825167ffffffffffffffff811115611247577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156112795781602001600182028036833780820191505090505b50905060005b835181101561135f578381815181106112c1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516112dc9190612288565b6112e69190612288565b8151811061131d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806113579061244a565b91505061127f565b5080915050919050565b60008060005b835181101561141d576001816113859190612030565b84516113919190612288565b600861139d919061222e565b60026113a99190612110565b8482815181106113e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff166113fd919061222e565b826114089190612030565b915080806114159061244a565b91505061136f565b5080915050919050565b600061143a61143584611fcd565b611fa8565b90508281526020810184848401111561145257600080fd5b61145d8482856123d7565b509392505050565b6000813590506114748161290a565b92915050565b60008135905061148981612921565b92915050565b60008151905061149e81612938565b92915050565b6000813590506114b38161294f565b92915050565b6000813590506114c881612966565b92915050565b600082601f8301126114df57600080fd5b81356114ef848260208601611427565b91505092915050565b60006080828403121561150a57600080fd5b81905092915050565b600060e0828403121561152557600080fd5b81905092915050565b60008135905061153d8161297d565b92915050565b60008135905061155281612994565b92915050565b60006020828403121561156a57600080fd5b600061157884828501611465565b91505092915050565b60006020828403121561159357600080fd5b60006115a18482850161147a565b91505092915050565b6000602082840312156115bc57600080fd5b60006115ca8482850161148f565b91505092915050565b6000602082840312156115e557600080fd5b60006115f3848285016114a4565b91505092915050565b60006020828403121561160e57600080fd5b600061161c848285016114b9565b91505092915050565b6000806000806080858703121561163b57600080fd5b600085013567ffffffffffffffff81111561165557600080fd5b611661878288016114f8565b945050602085013567ffffffffffffffff81111561167e57600080fd5b61168a878288016114ce565b935050604061169b8782880161152e565b925050606085013567ffffffffffffffff8111156116b857600080fd5b6116c4878288016114ce565b91505092959194509250565b60008061010083850312156116e457600080fd5b600083013567ffffffffffffffff8111156116fe57600080fd5b61170a858286016114f8565b925050602061171b85828601611513565b9150509250929050565b60006020828403121561173757600080fd5b60006117458482850161152e565b91505092915050565b60006020828403121561176057600080fd5b600061176e84828501611543565b91505092915050565b611780816122f0565b82525050565b611797611792826122f0565b612493565b82525050565b6117a681612302565b82525050565b6117bd6117b882612302565b6124a5565b82525050565b6117cc8161232e565b82525050565b6117e36117de8261232e565b6124af565b82525050565b6117f281612338565b82525050565b61180961180482612338565b6124b9565b82525050565b61181881612364565b82525050565b61182f61182a82612364565b6124c3565b82525050565b60006118418385612009565b935061184e8385846123d7565b82840190509392505050565b600061186582611ffe565b61186f8185612009565b935061187f8185602086016123e6565b80840191505092915050565b6000611898600183612025565b91506118a382612587565b600182019050919050565b60006118bb600183612025565b91506118c6826125b0565b600182019050919050565b60006118de600183612025565b91506118e9826125d9565b600182019050919050565b6000611901600183612025565b915061190c82612602565b600182019050919050565b6000611924602283612014565b915061192f8261262b565b604082019050919050565b6000611947601a83612014565b91506119528261267a565b602082019050919050565b600061196a600183612025565b9150611975826126a3565b600182019050919050565b600061198d600183612025565b9150611998826126cc565b600182019050919050565b60006119b0600183612025565b91506119bb826126f5565b600182019050919050565b60006119d3601983612014565b91506119de8261271e565b602082019050919050565b60006119f6601883612014565b9150611a0182612747565b602082019050919050565b6000611a19600183612025565b9150611a2482612770565b600182019050919050565b6000611a3c600183612025565b9150611a4782612799565b600182019050919050565b6000611a5f600183612025565b9150611a6a826127c2565b600182019050919050565b6000611a82601883612014565b9150611a8d826127eb565b602082019050919050565b6000611aa5601983612014565b9150611ab082612814565b602082019050919050565b6000611ac8600183612025565b9150611ad38261283d565b600182019050919050565b6000611aeb601183612014565b9150611af682612866565b602082019050919050565b6000611b0e601383612014565b9150611b198261288f565b602082019050919050565b6000611b31600183612025565b9150611b3c826128b8565b600182019050919050565b6000611b54600183612025565b9150611b5f826128e1565b600182019050919050565b611b73816123ba565b82525050565b611b82816123ca565b82525050565b611b99611b94826123ca565b6124df565b82525050565b6000611bab82846117ac565b60148201915081905092915050565b6000611bc682846117d2565b60208201915081905092915050565b6000611be182856117d2565b602082019150611bf18284611b88565b6001820191508190509392505050565b6000611c0d82896117f8565b600482019150611c1e828789611835565b9150611c2b828587611835565b9150611c3782846117f8565b600482019150819050979650505050505050565b6000611c57828461185a565b915081905092915050565b6000611c6d8261195d565b9150611c798288611786565b601482019150611c88826118f4565b9150611c9382611abb565b9150611c9f828761181e565b600882019150611cae826118f4565b9150611cb982611a2f565b9150611cc482611980565b9150611ccf8261195d565b9150611cdb82866117ac565b601482019150611cea82611a0c565b9150611cf58261188b565b9150611d0082611b47565b9150611d0b826118ae565b9150611d1682611a2f565b9150611d2182611980565b9150611d2c8261195d565b9150611d3882856117ac565b601482019150611d47826118d1565b9150611d5282611b24565b9150611d5e82846117f8565b600482019150611d6d826119a3565b9150611d78826118f4565b9150611d8382611b47565b9150611d8e82611a52565b91508190509695505050505050565b6000608082019050611db26000830187611777565b611dbf602083018661180f565b611dcc6040830185611b6a565b611dd96060830184611777565b95945050505050565b600060e082019050611df7600083018a6117c3565b611e046020830189611b79565b611e116040830188611777565b611e1e606083018761180f565b611e2b608083018661179d565b611e3860a083018561179d565b611e4560c08301846117e9565b98975050505050505050565b60006020820190508181036000830152611e6a81611917565b9050919050565b60006020820190508181036000830152611e8a8161193a565b9050919050565b60006020820190508181036000830152611eaa816119c6565b9050919050565b60006020820190508181036000830152611eca816119e9565b9050919050565b60006020820190508181036000830152611eea81611a75565b9050919050565b60006020820190508181036000830152611f0a81611a98565b9050919050565b60006020820190508181036000830152611f2a81611ade565b9050919050565b60006020820190508181036000830152611f4a81611b01565b9050919050565b60008083356001602003843603038112611f6a57600080fd5b80840192508235915067ffffffffffffffff821115611f8857600080fd5b602083019250600182023603831315611fa057600080fd5b509250929050565b6000611fb2611fc3565b9050611fbe8282612419565b919050565b6000604051905090565b600067ffffffffffffffff821115611fe857611fe7612520565b5b611ff18261254f565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061203b826123b0565b9150612046836123b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207b5761207a6124f1565b5b828201905092915050565b6000612091826123ca565b915061209c836123ca565b92508260ff038211156120b2576120b16124f1565b5b828201905092915050565b6000808291508390505b6001851115612107578086048111156120e3576120e26124f1565b5b60018516156120f25780820291505b80810290506121008561257a565b94506120c7565b94509492505050565b600061211b826123b0565b9150612126836123b0565b92506121537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461215b565b905092915050565b60008261216b5760019050612227565b816121795760009050612227565b816001811461218f5760028114612199576121c8565b6001915050612227565b60ff8411156121ab576121aa6124f1565b5b8360020a9150848211156121c2576121c16124f1565b5b50612227565b5060208310610133831016604e8410600b84101617156121fd5782820a9050838111156121f8576121f76124f1565b5b612227565b61220a84848460016120bd565b92509050818404811115612221576122206124f1565b5b81810290505b9392505050565b6000612239826123b0565b9150612244836123b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561227d5761227c6124f1565b5b828202905092915050565b6000612293826123b0565b915061229e836123b0565b9250828210156122b1576122b06124f1565b5b828203905092915050565b60006122c7826123ca565b91506122d2836123ca565b9250828210156122e5576122e46124f1565b5b828203905092915050565b60006122fb82612390565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156124045780820151818401526020810190506123e9565b83811115612413576000848401525b50505050565b6124228261254f565b810181811067ffffffffffffffff8211171561244157612440612520565b5b80604052505050565b6000612455826123b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612488576124876124f1565b5b600182019050919050565b600061249e826124cd565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b60006124d88261256d565b9050919050565b60006124ea82612560565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b612913816122f0565b811461291e57600080fd5b50565b61292a81612302565b811461293557600080fd5b50565b6129418161232e565b811461294c57600080fd5b50565b61295881612338565b811461296357600080fd5b50565b61296f81612364565b811461297a57600080fd5b50565b612986816123b0565b811461299157600080fd5b50565b61299d816123ca565b81146129a857600080fd5b5056fea26469706673582212208ee8759d3087139de74e849409c59faaa977baa9abb4bc4a6e2534070ac731a464736f6c63430008040033",
|
|
218
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806325750db71461004657806343c6de29146100625780638d658d4e14610095575b600080fd5b610060600480360381019061005b91906116d0565b6100b1565b005b61007c60048036038101906100779190611725565b61059f565b60405161008c9493929190611d9d565b60405180910390f35b6100af60048036038101906100aa9190611625565b61062c565b005b60008160200160208101906100c69190611558565b8260400160208101906100d991906115fc565b8360600160208101906100ec9190611581565b8460800160208101906100ff9190611581565b8560a001602081019061011291906115d3565b604051602001610126959493929190611c62565b604051602081830303815290604052905060006101b383600001602081019061014f919061174e565b60ff168580604001906101629190611f51565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061063290919063ffffffff16565b905060006101c082610872565b9050601481511415610229576101d583610c14565b80519060200120818051906020012014610224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021b90611ef1565b60405180910390fd5b6102c6565b60208151141561028a5761023c83610ce1565b61024582610da7565b14610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027c90611e91565b60405180910390fd5b6102c5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102bc90611eb1565b60405180910390fd5b5b600061033a8660000160208101906102de91906115d3565b8780602001906102ee9190611f51565b8980604001906102fe9190611f51565b8b606001602081019061031191906115d3565b60405160200161032696959493929190611c01565b604051602081830303815290604052610ce1565b9050600080600083886000016020810190610355919061174e565b604051602001610366929190611bd5565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146103ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e390611ed1565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c021790555086602001602081019061042c9190611558565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906104a49190611558565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa62fd60993aa217b6f00fbb6f377e73a7bbf09f76e730ca9c99f9d54edddc7e88388600001602081019061051b919061174e565b89602001602081019061052e9190611558565b8a604001602081019061054191906115fc565b8b60600160208101906105549190611581565b8c60800160208101906105679190611581565b8d60a001602081019061057a91906115d3565b60405161058d9796959493929190611de2565b60405180910390a15050505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b50505050565b606060008061064085610dca565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290611e51565b60405180910390fd5b8084106106ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e490611f11565b60405180910390fd5b60606000808460016106ff9190612030565b905060005b878110156107be5761072d82838b5161071d9190612288565b8b610ec69092919063ffffffff16565b935061073884610f8c565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561079d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079490611e71565b60405180910390fd5b82826107a99190612030565b915080806107b69061244a565b915050610704565b506107e081828a516107d09190612288565b8a610ec69092919063ffffffff16565b92506107eb83610f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790611e71565b60405180910390fd5b61086581838a610ec69092919063ffffffff16565b9550505050505092915050565b60606000826008815181106108b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c905082516009826108cf9190612086565b60ff16146108ef5760405180602001604052806000815250915050610c0f565b60008360098151811061092b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610a1e5760028160ff1610156109665760405180602001604052806000815250915050610c0f565b600083600a815181106109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1690506002826109c291906122bc565b60ff16811415806109e15750602081141580156109e0575060148114155b5b156109ff576040518060200160405280600081525092505050610c0f565b610a15600b8286610ec69092919063ffffffff16565b92505050610c0f565b6000610a3760086003866110709092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6811415610b3b57601484600b81518110610a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141580610afd57507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d610afa60028651610ae89190612288565b6002876110709092919063ffffffff16565b14155b15610b1b576040518060200160405280600081525092505050610c0f565b610b32600c601486610ec69092919063ffffffff16565b92505050610c0f565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d7811415610bfa5760878460018651610b749190612288565b81518110610bab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614610bda576040518060200160405280600081525092505050610c0f565b610bf1600b601486610ec69092919063ffffffff16565b92505050610c0f565b50604051806020016040528060008152509150505b919050565b60606003600283604051610c289190611c4b565b602060405180830381855afa158015610c45573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6891906115aa565b604051602001610c789190611bba565b604051602081830303815290604052604051610c949190611c4b565b602060405180830381855afa158015610cb1573d6000803e3d6000fd5b5050506040515160601b604051602001610ccb9190611b9f565b6040516020818303038152906040529050919050565b600060028083604051610cf49190611c4b565b602060405180830381855afa158015610d11573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610d3491906115aa565b604051602001610d449190611bba565b604051602081830303815290604052604051610d609190611c4b565b602060405180830381855afa158015610d7d573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610da091906115aa565b9050919050565b60008082511415610dbd576000801b9050610dc5565b602082015190505b919050565b6000806000610dd8846110e2565b905060008160ff161415610e4057600084600081518110610e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff1690509250925050610ec1565b806001610e4d9190612086565b60ff1684511015610e85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60009250925050610ec1565b6000610eb0610eab610ea660018560ff1689610ec69092919063ffffffff16565b611202565b611369565b905081818160ff1691509350935050505b915091565b60606000821415610ee857604051806020016040528060008152509050610f85565b60008284610ef69190612030565b90508381118015610f08575080855110155b610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90611f31565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b80821015610f8057815183830152602082019150610f67565b505050505b9392505050565b6000600982511015610fc0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061106b565b6000610fe46008808551610fd49190612288565b85610ec69092919063ffffffff16565b9050600080610ff283610dca565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561104d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff935050505061106b565b8082600961105b9190612030565b6110659190612030565b93505050505b919050565b600080828461107f9190612030565b90508381118015611091575080855110155b6110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c790611f31565b60405180910390fd5b82846020870101209150509392505050565b600060ff82600081518110611120577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561114057600890506111fd565b60fe8260008151811061117c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141561119c57600490506111fd565b60fd826000815181106111d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156111f857600290506111fd565b600090505b919050565b60606000825167ffffffffffffffff811115611247577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156112795781602001600182028036833780820191505090505b50905060005b835181101561135f578381815181106112c1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516112dc9190612288565b6112e69190612288565b8151811061131d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806113579061244a565b91505061127f565b5080915050919050565b60008060005b835181101561141d576001816113859190612030565b84516113919190612288565b600861139d919061222e565b60026113a99190612110565b8482815181106113e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff166113fd919061222e565b826114089190612030565b915080806114159061244a565b91505061136f565b5080915050919050565b600061143a61143584611fcd565b611fa8565b90508281526020810184848401111561145257600080fd5b61145d8482856123d7565b509392505050565b6000813590506114748161290a565b92915050565b60008135905061148981612921565b92915050565b60008151905061149e81612938565b92915050565b6000813590506114b38161294f565b92915050565b6000813590506114c881612966565b92915050565b600082601f8301126114df57600080fd5b81356114ef848260208601611427565b91505092915050565b60006080828403121561150a57600080fd5b81905092915050565b600060e0828403121561152557600080fd5b81905092915050565b60008135905061153d8161297d565b92915050565b60008135905061155281612994565b92915050565b60006020828403121561156a57600080fd5b600061157884828501611465565b91505092915050565b60006020828403121561159357600080fd5b60006115a18482850161147a565b91505092915050565b6000602082840312156115bc57600080fd5b60006115ca8482850161148f565b91505092915050565b6000602082840312156115e557600080fd5b60006115f3848285016114a4565b91505092915050565b60006020828403121561160e57600080fd5b600061161c848285016114b9565b91505092915050565b6000806000806080858703121561163b57600080fd5b600085013567ffffffffffffffff81111561165557600080fd5b611661878288016114f8565b945050602085013567ffffffffffffffff81111561167e57600080fd5b61168a878288016114ce565b935050604061169b8782880161152e565b925050606085013567ffffffffffffffff8111156116b857600080fd5b6116c4878288016114ce565b91505092959194509250565b60008061010083850312156116e457600080fd5b600083013567ffffffffffffffff8111156116fe57600080fd5b61170a858286016114f8565b925050602061171b85828601611513565b9150509250929050565b60006020828403121561173757600080fd5b60006117458482850161152e565b91505092915050565b60006020828403121561176057600080fd5b600061176e84828501611543565b91505092915050565b611780816122f0565b82525050565b611797611792826122f0565b612493565b82525050565b6117a681612302565b82525050565b6117bd6117b882612302565b6124a5565b82525050565b6117cc8161232e565b82525050565b6117e36117de8261232e565b6124af565b82525050565b6117f281612338565b82525050565b61180961180482612338565b6124b9565b82525050565b61181881612364565b82525050565b61182f61182a82612364565b6124c3565b82525050565b60006118418385612009565b935061184e8385846123d7565b82840190509392505050565b600061186582611ffe565b61186f8185612009565b935061187f8185602086016123e6565b80840191505092915050565b6000611898600183612025565b91506118a382612587565b600182019050919050565b60006118bb600183612025565b91506118c6826125b0565b600182019050919050565b60006118de600183612025565b91506118e9826125d9565b600182019050919050565b6000611901600183612025565b915061190c82612602565b600182019050919050565b6000611924602283612014565b915061192f8261262b565b604082019050919050565b6000611947601a83612014565b91506119528261267a565b602082019050919050565b600061196a600183612025565b9150611975826126a3565b600182019050919050565b600061198d600183612025565b9150611998826126cc565b600182019050919050565b60006119b0600183612025565b91506119bb826126f5565b600182019050919050565b60006119d3601983612014565b91506119de8261271e565b602082019050919050565b60006119f6601883612014565b9150611a0182612747565b602082019050919050565b6000611a19600183612025565b9150611a2482612770565b600182019050919050565b6000611a3c600183612025565b9150611a4782612799565b600182019050919050565b6000611a5f600183612025565b9150611a6a826127c2565b600182019050919050565b6000611a82601883612014565b9150611a8d826127eb565b602082019050919050565b6000611aa5601983612014565b9150611ab082612814565b602082019050919050565b6000611ac8600183612025565b9150611ad38261283d565b600182019050919050565b6000611aeb601183612014565b9150611af682612866565b602082019050919050565b6000611b0e601383612014565b9150611b198261288f565b602082019050919050565b6000611b31600183612025565b9150611b3c826128b8565b600182019050919050565b6000611b54600183612025565b9150611b5f826128e1565b600182019050919050565b611b73816123ba565b82525050565b611b82816123ca565b82525050565b611b99611b94826123ca565b6124df565b82525050565b6000611bab82846117ac565b60148201915081905092915050565b6000611bc682846117d2565b60208201915081905092915050565b6000611be182856117d2565b602082019150611bf18284611b88565b6001820191508190509392505050565b6000611c0d82896117f8565b600482019150611c1e828789611835565b9150611c2b828587611835565b9150611c3782846117f8565b600482019150819050979650505050505050565b6000611c57828461185a565b915081905092915050565b6000611c6d8261195d565b9150611c798288611786565b601482019150611c88826118f4565b9150611c9382611abb565b9150611c9f828761181e565b600882019150611cae826118f4565b9150611cb982611a2f565b9150611cc482611980565b9150611ccf8261195d565b9150611cdb82866117ac565b601482019150611cea82611a0c565b9150611cf58261188b565b9150611d0082611b47565b9150611d0b826118ae565b9150611d1682611a2f565b9150611d2182611980565b9150611d2c8261195d565b9150611d3882856117ac565b601482019150611d47826118d1565b9150611d5282611b24565b9150611d5e82846117f8565b600482019150611d6d826119a3565b9150611d78826118f4565b9150611d8382611b47565b9150611d8e82611a52565b91508190509695505050505050565b6000608082019050611db26000830187611777565b611dbf602083018661180f565b611dcc6040830185611b6a565b611dd96060830184611777565b95945050505050565b600060e082019050611df7600083018a6117c3565b611e046020830189611b79565b611e116040830188611777565b611e1e606083018761180f565b611e2b608083018661179d565b611e3860a083018561179d565b611e4560c08301846117e9565b98975050505050505050565b60006020820190508181036000830152611e6a81611917565b9050919050565b60006020820190508181036000830152611e8a8161193a565b9050919050565b60006020820190508181036000830152611eaa816119c6565b9050919050565b60006020820190508181036000830152611eca816119e9565b9050919050565b60006020820190508181036000830152611eea81611a75565b9050919050565b60006020820190508181036000830152611f0a81611a98565b9050919050565b60006020820190508181036000830152611f2a81611ade565b9050919050565b60006020820190508181036000830152611f4a81611b01565b9050919050565b60008083356001602003843603038112611f6a57600080fd5b80840192508235915067ffffffffffffffff821115611f8857600080fd5b602083019250600182023603831315611fa057600080fd5b509250929050565b6000611fb2611fc3565b9050611fbe8282612419565b919050565b6000604051905090565b600067ffffffffffffffff821115611fe857611fe7612520565b5b611ff18261254f565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061203b826123b0565b9150612046836123b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561207b5761207a6124f1565b5b828201905092915050565b6000612091826123ca565b915061209c836123ca565b92508260ff038211156120b2576120b16124f1565b5b828201905092915050565b6000808291508390505b6001851115612107578086048111156120e3576120e26124f1565b5b60018516156120f25780820291505b80810290506121008561257a565b94506120c7565b94509492505050565b600061211b826123b0565b9150612126836123b0565b92506121537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461215b565b905092915050565b60008261216b5760019050612227565b816121795760009050612227565b816001811461218f5760028114612199576121c8565b6001915050612227565b60ff8411156121ab576121aa6124f1565b5b8360020a9150848211156121c2576121c16124f1565b5b50612227565b5060208310610133831016604e8410600b84101617156121fd5782820a9050838111156121f8576121f76124f1565b5b612227565b61220a84848460016120bd565b92509050818404811115612221576122206124f1565b5b81810290505b9392505050565b6000612239826123b0565b9150612244836123b0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561227d5761227c6124f1565b5b828202905092915050565b6000612293826123b0565b915061229e836123b0565b9250828210156122b1576122b06124f1565b5b828203905092915050565b60006122c7826123ca565b91506122d2836123ca565b9250828210156122e5576122e46124f1565b5b828203905092915050565b60006122fb82612390565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156124045780820151818401526020810190506123e9565b83811115612413576000848401525b50505050565b6124228261254f565b810181811067ffffffffffffffff8211171561244157612440612520565b5b80604052505050565b6000612455826123b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612488576124876124f1565b5b600182019050919050565b600061249e826124cd565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b60006124d88261256d565b9050919050565b60006124ea82612560565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b612913816122f0565b811461291e57600080fd5b50565b61292a81612302565b811461293557600080fd5b50565b6129418161232e565b811461294c57600080fd5b50565b61295881612338565b811461296357600080fd5b50565b61296f81612364565b811461297a57600080fd5b50565b612986816123b0565b811461299157600080fd5b50565b61299d816123ca565b81146129a857600080fd5b5056fea26469706673582212208ee8759d3087139de74e849409c59faaa977baa9abb4bc4a6e2534070ac731a464736f6c63430008040033",
|
|
331
|
+
"bytecode": "0x60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000104565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6131a080620001146000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638d658d4e1161005b5780638d658d4e146101025780638da5cb5b1461011e578063e53c0b551461013c578063f2fde38b1461016c57610088565b806325750db71461008d57806343c6de29146100a957806360d712fc146100dc578063715018a6146100f8575b600080fd5b6100a760048036038101906100a29190611cae565b610188565b005b6100c360048036038101906100be9190611d03565b610772565b6040516100d3949392919061240e565b60405180910390f35b6100f660048036038101906100f19190611b23565b6107ff565b005b610100610924565b005b61011c60048036038101906101179190611c03565b6109ac565b005b6101266109b2565b60405161013391906123f3565b60405180910390f35b61015660048036038101906101519190611afa565b6109db565b6040516101639190612453565b60405180910390f35b61018660048036038101906101819190611afa565b6109fb565b005b600073ffffffffffffffffffffffffffffffffffffffff168160c00160208101906101b39190611afa565b73ffffffffffffffffffffffffffffffffffffffff1614806102305750600160008260c00160208101906101e79190611afa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102669061254c565b60405180910390fd5b60008160200160208101906102849190611afa565b8260400160208101906102979190611bda565b8360600160208101906102aa9190611b5f565b8460800160208101906102bd9190611b5f565b8560a00160208101906102d09190611bb1565b6040516020016102e49594939291906122b8565b6040516020818303038152906040529050600061037183600001602081019061030d9190611d2c565b60ff16858060400190610320919061264c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610af390919063ffffffff16565b9050600061037e82610d33565b90506014815114156103e757610393836110d5565b805190602001208180519060200120146103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d9906125ec565b60405180910390fd5b610484565b602081511415610448576103fa836111a2565b61040382611268565b14610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043a9061256c565b60405180910390fd5b610483565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a9061258c565b60405180910390fd5b5b60006104f886600001602081019061049c9190611bb1565b8780602001906104ac919061264c565b8980604001906104bc919061264c565b8b60600160208101906104cf9190611bb1565b6040516020016104e496959493929190612257565b6040516020818303038152906040526111a2565b9050600060026000838860000160208101906105149190611d2c565b60405160200161052592919061222b565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a2906125cc565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c02179055508660200160208101906105eb9190611afa565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906106639190611afa565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f293519c6fe266b8b9ca154d153e408c6ef03135a5abeb42e9a91781d620ca47b838860000160208101906106da9190611d2c565b8960200160208101906106ed9190611afa565b8a60400160208101906107009190611bda565b8b60600160208101906107139190611b5f565b8c60800160208101906107269190611b5f565b8d60a00160208101906107399190611bb1565b8e60c001602081019061074c9190611afa565b60405161076098979695949392919061246e565b60405180910390a15050505050505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61080761128b565b73ffffffffffffffffffffffffffffffffffffffff166108256109b2565b73ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610872906125ac565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f826040516109189190612453565b60405180910390a25050565b61092c61128b565b73ffffffffffffffffffffffffffffffffffffffff1661094a6109b2565b73ffffffffffffffffffffffffffffffffffffffff16146109a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610997906125ac565b60405180910390fd5b6109aa6000611293565b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b610a0361128b565b73ffffffffffffffffffffffffffffffffffffffff16610a216109b2565b73ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906125ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906124ec565b60405180910390fd5b610af081611293565b50565b6060600080610b0185611357565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b639061250c565b60405180910390fd5b808410610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba59061260c565b60405180910390fd5b6060600080846001610bc0919061272b565b905060005b87811015610c7f57610bee82838b51610bde9190612983565b8b6114539092919063ffffffff16565b9350610bf984611519565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061252c565b60405180910390fd5b8282610c6a919061272b565b91508080610c7790612b51565b915050610bc5565b50610ca181828a51610c919190612983565b8a6114539092919063ffffffff16565b9250610cac83611519565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d089061252c565b60405180910390fd5b610d2681838a6114539092919063ffffffff16565b9550505050505092915050565b6060600082600881518110610d71577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c90508251600982610d909190612781565b60ff1614610db057604051806020016040528060008152509150506110d0565b600083600981518110610dec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610edf5760028160ff161015610e2757604051806020016040528060008152509150506110d0565b600083600a81518110610e63577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff169050600282610e8391906129b7565b60ff1681141580610ea2575060208114158015610ea1575060148114155b5b15610ec05760405180602001604052806000815250925050506110d0565b610ed6600b82866114539092919063ffffffff16565b925050506110d0565b6000610ef860086003866115fd9092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6811415610ffc57601484600b81518110610f5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141580610fbe57507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d610fbb60028651610fa99190612983565b6002876115fd9092919063ffffffff16565b14155b15610fdc5760405180602001604052806000815250925050506110d0565b610ff3600c6014866114539092919063ffffffff16565b925050506110d0565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d78114156110bb57608784600186516110359190612983565b8151811061106c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161461109b5760405180602001604052806000815250925050506110d0565b6110b2600b6014866114539092919063ffffffff16565b925050506110d0565b50604051806020016040528060008152509150505b919050565b606060036002836040516110e991906122a1565b602060405180830381855afa158015611106573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111299190611b88565b6040516020016111399190612210565b60405160208183030381529060405260405161115591906122a1565b602060405180830381855afa158015611172573d6000803e3d6000fd5b5050506040515160601b60405160200161118c91906121f5565b6040516020818303038152906040529050919050565b6000600280836040516111b591906122a1565b602060405180830381855afa1580156111d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111f59190611b88565b6040516020016112059190612210565b60405160208183030381529060405260405161122191906122a1565b602060405180830381855afa15801561123e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112619190611b88565b9050919050565b6000808251141561127e576000801b9050611286565b602082015190505b919050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060006113658461166f565b905060008160ff1614156113cd576000846000815181106113af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff169050925092505061144e565b8060016113da9190612781565b60ff1684511015611412577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000925092505061144e565b600061143d61143861143360018560ff16896114539092919063ffffffff16565b61178f565b6118f6565b905081818160ff1691509350935050505b915091565b6060600082141561147557604051806020016040528060008152509050611512565b60008284611483919061272b565b90508381118015611495575080855110155b6114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb9061262c565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b8082101561150d578151838301526020820191506114f4565b505050505b9392505050565b600060098251101561154d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506115f8565b600061157160088085516115619190612983565b856114539092919063ffffffff16565b905060008061157f83611357565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156115da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93505050506115f8565b808260096115e8919061272b565b6115f2919061272b565b93505050505b919050565b600080828461160c919061272b565b9050838111801561161e575080855110155b61165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061262c565b60405180910390fd5b82846020870101209150509392505050565b600060ff826000815181106116ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156116cd576008905061178a565b60fe82600081518110611709577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415611729576004905061178a565b60fd82600081518110611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415611785576002905061178a565b600090505b919050565b60606000825167ffffffffffffffff8111156117d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156118065781602001600182028036833780820191505090505b50905060005b83518110156118ec5783818151811061184e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516118699190612983565b6118739190612983565b815181106118aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e490612b51565b91505061180c565b5080915050919050565b60008060005b83518110156119aa57600181611912919061272b565b845161191e9190612983565b600861192a9190612929565b6002611936919061280b565b84828151811061196f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1661198a9190612929565b82611995919061272b565b915080806119a290612b51565b9150506118fc565b5080915050919050565b60006119c76119c2846126c8565b6126a3565b9050828152602081018484840111156119df57600080fd5b6119ea848285612ade565b509392505050565b600081359050611a01816130b2565b92915050565b600081359050611a16816130c9565b92915050565b600081359050611a2b816130e0565b92915050565b600081519050611a40816130f7565b92915050565b600081359050611a558161310e565b92915050565b600081359050611a6a81613125565b92915050565b600082601f830112611a8157600080fd5b8135611a918482602086016119b4565b91505092915050565b600060808284031215611aac57600080fd5b81905092915050565b600060e08284031215611ac757600080fd5b81905092915050565b600081359050611adf8161313c565b92915050565b600081359050611af481613153565b92915050565b600060208284031215611b0c57600080fd5b6000611b1a848285016119f2565b91505092915050565b60008060408385031215611b3657600080fd5b6000611b44858286016119f2565b9250506020611b5585828601611a07565b9150509250929050565b600060208284031215611b7157600080fd5b6000611b7f84828501611a1c565b91505092915050565b600060208284031215611b9a57600080fd5b6000611ba884828501611a31565b91505092915050565b600060208284031215611bc357600080fd5b6000611bd184828501611a46565b91505092915050565b600060208284031215611bec57600080fd5b6000611bfa84828501611a5b565b91505092915050565b60008060008060808587031215611c1957600080fd5b600085013567ffffffffffffffff811115611c3357600080fd5b611c3f87828801611a9a565b945050602085013567ffffffffffffffff811115611c5c57600080fd5b611c6887828801611a70565b9350506040611c7987828801611ad0565b925050606085013567ffffffffffffffff811115611c9657600080fd5b611ca287828801611a70565b91505092959194509250565b6000806101008385031215611cc257600080fd5b600083013567ffffffffffffffff811115611cdc57600080fd5b611ce885828601611a9a565b9250506020611cf985828601611ab5565b9150509250929050565b600060208284031215611d1557600080fd5b6000611d2384828501611ad0565b91505092915050565b600060208284031215611d3e57600080fd5b6000611d4c84828501611ae5565b91505092915050565b611d5e816129eb565b82525050565b611d75611d70826129eb565b612b9a565b82525050565b611d84816129fd565b82525050565b611d9381612a09565b82525050565b611daa611da582612a09565b612bac565b82525050565b611db981612a35565b82525050565b611dd0611dcb82612a35565b612bb6565b82525050565b611ddf81612a3f565b82525050565b611df6611df182612a3f565b612bc0565b82525050565b611e0581612a6b565b82525050565b611e1c611e1782612a6b565b612bca565b82525050565b6000611e2e8385612704565b9350611e3b838584612ade565b82840190509392505050565b6000611e52826126f9565b611e5c8185612704565b9350611e6c818560208601612aed565b80840191505092915050565b6000611e85600183612720565b9150611e9082612c8e565b600182019050919050565b6000611ea8600183612720565b9150611eb382612cb7565b600182019050919050565b6000611ecb60268361270f565b9150611ed682612ce0565b604082019050919050565b6000611eee600183612720565b9150611ef982612d2f565b600182019050919050565b6000611f11600183612720565b9150611f1c82612d58565b600182019050919050565b6000611f3460228361270f565b9150611f3f82612d81565b604082019050919050565b6000611f57601a8361270f565b9150611f6282612dd0565b602082019050919050565b6000611f7a600183612720565b9150611f8582612df9565b600182019050919050565b6000611f9d60148361270f565b9150611fa882612e22565b602082019050919050565b6000611fc0600183612720565b9150611fcb82612e4b565b600182019050919050565b6000611fe3600183612720565b9150611fee82612e74565b600182019050919050565b600061200660198361270f565b915061201182612e9d565b602082019050919050565b600061202960188361270f565b915061203482612ec6565b602082019050919050565b600061204c600183612720565b915061205782612eef565b600182019050919050565b600061206f60208361270f565b915061207a82612f18565b602082019050919050565b6000612092600183612720565b915061209d82612f41565b600182019050919050565b60006120b5600183612720565b91506120c082612f6a565b600182019050919050565b60006120d860188361270f565b91506120e382612f93565b602082019050919050565b60006120fb60198361270f565b915061210682612fbc565b602082019050919050565b600061211e600183612720565b915061212982612fe5565b600182019050919050565b600061214160118361270f565b915061214c8261300e565b602082019050919050565b600061216460138361270f565b915061216f82613037565b602082019050919050565b6000612187600183612720565b915061219282613060565b600182019050919050565b60006121aa600183612720565b91506121b582613089565b600182019050919050565b6121c981612ac1565b82525050565b6121d881612ad1565b82525050565b6121ef6121ea82612ad1565b612be6565b82525050565b60006122018284611d99565b60148201915081905092915050565b600061221c8284611dbf565b60208201915081905092915050565b60006122378285611dbf565b60208201915061224782846121de565b6001820191508190509392505050565b60006122638289611de5565b600482019150612274828789611e22565b9150612281828587611e22565b915061228d8284611de5565b600482019150819050979650505050505050565b60006122ad8284611e47565b915081905092915050565b60006122c382611f6d565b91506122cf8288611d64565b6014820191506122de82611f04565b91506122e982612111565b91506122f58287611e0b565b60088201915061230482611f04565b915061230f82612085565b915061231a82611fb3565b915061232582611f6d565b91506123318286611d99565b6014820191506123408261203f565b915061234b82611e78565b91506123568261219d565b915061236182611e9b565b915061236c82612085565b915061237782611fb3565b915061238282611f6d565b915061238e8285611d99565b60148201915061239d82611ee1565b91506123a88261217a565b91506123b48284611de5565b6004820191506123c382611fd6565b91506123ce82611f04565b91506123d98261219d565b91506123e4826120a8565b91508190509695505050505050565b60006020820190506124086000830184611d55565b92915050565b60006080820190506124236000830187611d55565b6124306020830186611dfc565b61243d60408301856121c0565b61244a6060830184611d55565b95945050505050565b60006020820190506124686000830184611d7b565b92915050565b600061010082019050612484600083018b611db0565b612491602083018a6121cf565b61249e6040830189611d55565b6124ab6060830188611dfc565b6124b86080830187611d8a565b6124c560a0830186611d8a565b6124d260c0830185611dd6565b6124df60e0830184611d55565b9998505050505050505050565b6000602082019050818103600083015261250581611ebe565b9050919050565b6000602082019050818103600083015261252581611f27565b9050919050565b6000602082019050818103600083015261254581611f4a565b9050919050565b6000602082019050818103600083015261256581611f90565b9050919050565b6000602082019050818103600083015261258581611ff9565b9050919050565b600060208201905081810360008301526125a58161201c565b9050919050565b600060208201905081810360008301526125c581612062565b9050919050565b600060208201905081810360008301526125e5816120cb565b9050919050565b60006020820190508181036000830152612605816120ee565b9050919050565b6000602082019050818103600083015261262581612134565b9050919050565b6000602082019050818103600083015261264581612157565b9050919050565b6000808335600160200384360303811261266557600080fd5b80840192508235915067ffffffffffffffff82111561268357600080fd5b60208301925060018202360383131561269b57600080fd5b509250929050565b60006126ad6126be565b90506126b98282612b20565b919050565b6000604051905090565b600067ffffffffffffffff8211156126e3576126e2612c27565b5b6126ec82612c56565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061273682612ab7565b915061274183612ab7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561277657612775612bf8565b5b828201905092915050565b600061278c82612ad1565b915061279783612ad1565b92508260ff038211156127ad576127ac612bf8565b5b828201905092915050565b6000808291508390505b6001851115612802578086048111156127de576127dd612bf8565b5b60018516156127ed5780820291505b80810290506127fb85612c81565b94506127c2565b94509492505050565b600061281682612ab7565b915061282183612ab7565b925061284e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612856565b905092915050565b6000826128665760019050612922565b816128745760009050612922565b816001811461288a5760028114612894576128c3565b6001915050612922565b60ff8411156128a6576128a5612bf8565b5b8360020a9150848211156128bd576128bc612bf8565b5b50612922565b5060208310610133831016604e8410600b84101617156128f85782820a9050838111156128f3576128f2612bf8565b5b612922565b61290584848460016127b8565b9250905081840481111561291c5761291b612bf8565b5b81810290505b9392505050565b600061293482612ab7565b915061293f83612ab7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561297857612977612bf8565b5b828202905092915050565b600061298e82612ab7565b915061299983612ab7565b9250828210156129ac576129ab612bf8565b5b828203905092915050565b60006129c282612ad1565b91506129cd83612ad1565b9250828210156129e0576129df612bf8565b5b828203905092915050565b60006129f682612a97565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612b0b578082015181840152602081019050612af0565b83811115612b1a576000848401525b50505050565b612b2982612c56565b810181811067ffffffffffffffff82111715612b4857612b47612c27565b5b80604052505050565b6000612b5c82612ab7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b8f57612b8e612bf8565b5b600182019050919050565b6000612ba582612bd4565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000612bdf82612c74565b9050919050565b6000612bf182612c67565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7f5661756c74206973206e6f742074727573746564000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b6130bb816129eb565b81146130c657600080fd5b50565b6130d2816129fd565b81146130dd57600080fd5b50565b6130e981612a09565b81146130f457600080fd5b50565b61310081612a35565b811461310b57600080fd5b50565b61311781612a3f565b811461312257600080fd5b50565b61312e81612a6b565b811461313957600080fd5b50565b61314581612ab7565b811461315057600080fd5b50565b61315c81612ad1565b811461316757600080fd5b5056fea2646970667358221220295f3b4ea195fd7fba9f5296085182facf835e59f603d9d4791d500bcbfc014564736f6c63430008040033",
|
|
332
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638d658d4e1161005b5780638d658d4e146101025780638da5cb5b1461011e578063e53c0b551461013c578063f2fde38b1461016c57610088565b806325750db71461008d57806343c6de29146100a957806360d712fc146100dc578063715018a6146100f8575b600080fd5b6100a760048036038101906100a29190611cae565b610188565b005b6100c360048036038101906100be9190611d03565b610772565b6040516100d3949392919061240e565b60405180910390f35b6100f660048036038101906100f19190611b23565b6107ff565b005b610100610924565b005b61011c60048036038101906101179190611c03565b6109ac565b005b6101266109b2565b60405161013391906123f3565b60405180910390f35b61015660048036038101906101519190611afa565b6109db565b6040516101639190612453565b60405180910390f35b61018660048036038101906101819190611afa565b6109fb565b005b600073ffffffffffffffffffffffffffffffffffffffff168160c00160208101906101b39190611afa565b73ffffffffffffffffffffffffffffffffffffffff1614806102305750600160008260c00160208101906101e79190611afa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61026f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102669061254c565b60405180910390fd5b60008160200160208101906102849190611afa565b8260400160208101906102979190611bda565b8360600160208101906102aa9190611b5f565b8460800160208101906102bd9190611b5f565b8560a00160208101906102d09190611bb1565b6040516020016102e49594939291906122b8565b6040516020818303038152906040529050600061037183600001602081019061030d9190611d2c565b60ff16858060400190610320919061264c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610af390919063ffffffff16565b9050600061037e82610d33565b90506014815114156103e757610393836110d5565b805190602001208180519060200120146103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d9906125ec565b60405180910390fd5b610484565b602081511415610448576103fa836111a2565b61040382611268565b14610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043a9061256c565b60405180910390fd5b610483565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a9061258c565b60405180910390fd5b5b60006104f886600001602081019061049c9190611bb1565b8780602001906104ac919061264c565b8980604001906104bc919061264c565b8b60600160208101906104cf9190611bb1565b6040516020016104e496959493929190612257565b6040516020818303038152906040526111a2565b9050600060026000838860000160208101906105149190611d2c565b60405160200161052592919061222b565b6040516020818303038152906040528051906020012060001c81526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff16146105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a2906125cc565b60405180910390fd5b600060208501519050808260000160146101000a81548167ffffffffffffffff021916908360c01c02179055508660200160208101906105eb9190611afa565b8260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504282600001601c6101000a81548163ffffffff021916908363ffffffff1602179055508660c00160208101906106639190611afa565b8260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f293519c6fe266b8b9ca154d153e408c6ef03135a5abeb42e9a91781d620ca47b838860000160208101906106da9190611d2c565b8960200160208101906106ed9190611afa565b8a60400160208101906107009190611bda565b8b60600160208101906107139190611b5f565b8c60800160208101906107269190611b5f565b8d60a00160208101906107399190611bb1565b8e60c001602081019061074c9190611afa565b60405161076098979695949392919061246e565b60405180910390a15050505050505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460c01b9080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61080761128b565b73ffffffffffffffffffffffffffffffffffffffff166108256109b2565b73ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610872906125ac565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f826040516109189190612453565b60405180910390a25050565b61092c61128b565b73ffffffffffffffffffffffffffffffffffffffff1661094a6109b2565b73ffffffffffffffffffffffffffffffffffffffff16146109a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610997906125ac565b60405180910390fd5b6109aa6000611293565b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b610a0361128b565b73ffffffffffffffffffffffffffffffffffffffff16610a216109b2565b73ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e906125ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade906124ec565b60405180910390fd5b610af081611293565b50565b6060600080610b0185611357565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b639061250c565b60405180910390fd5b808410610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba59061260c565b60405180910390fd5b6060600080846001610bc0919061272b565b905060005b87811015610c7f57610bee82838b51610bde9190612983565b8b6114539092919063ffffffff16565b9350610bf984611519565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c559061252c565b60405180910390fd5b8282610c6a919061272b565b91508080610c7790612b51565b915050610bc5565b50610ca181828a51610c919190612983565b8a6114539092919063ffffffff16565b9250610cac83611519565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d089061252c565b60405180910390fd5b610d2681838a6114539092919063ffffffff16565b9550505050505092915050565b6060600082600881518110610d71577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c90508251600982610d909190612781565b60ff1614610db057604051806020016040528060008152509150506110d0565b600083600981518110610dec577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415610edf5760028160ff161015610e2757604051806020016040528060008152509150506110d0565b600083600a81518110610e63577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff169050600282610e8391906129b7565b60ff1681141580610ea2575060208114158015610ea1575060148114155b5b15610ec05760405180602001604052806000815250925050506110d0565b610ed6600b82866114539092919063ffffffff16565b925050506110d0565b6000610ef860086003866115fd9092919063ffffffff16565b90507fe1683aec1a10d43657f3f2c82e683d8e19e8a3f320ce9d3bf22c6ca6ab4cbce6811415610ffc57601484600b81518110610f5e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff16141580610fbe57507f3b50b2715f5a28d2a7eeb517f17ec797e8536bd425bf31fc4f6bf7ce1e34b77d610fbb60028651610fa99190612983565b6002876115fd9092919063ffffffff16565b14155b15610fdc5760405180602001604052806000815250925050506110d0565b610ff3600c6014866114539092919063ffffffff16565b925050506110d0565b7fa0916ee0b243ee20fb4ce56170744d86b54d7ae03a418a7a12156f40dedcf7d78114156110bb57608784600186516110359190612983565b8151811061106c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161461109b5760405180602001604052806000815250925050506110d0565b6110b2600b6014866114539092919063ffffffff16565b925050506110d0565b50604051806020016040528060008152509150505b919050565b606060036002836040516110e991906122a1565b602060405180830381855afa158015611106573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111299190611b88565b6040516020016111399190612210565b60405160208183030381529060405260405161115591906122a1565b602060405180830381855afa158015611172573d6000803e3d6000fd5b5050506040515160601b60405160200161118c91906121f5565b6040516020818303038152906040529050919050565b6000600280836040516111b591906122a1565b602060405180830381855afa1580156111d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111f59190611b88565b6040516020016112059190612210565b60405160208183030381529060405260405161122191906122a1565b602060405180830381855afa15801561123e573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112619190611b88565b9050919050565b6000808251141561127e576000801b9050611286565b602082015190505b919050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060006113658461166f565b905060008160ff1614156113cd576000846000815181106113af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c8060ff169050925092505061144e565b8060016113da9190612781565b60ff1684511015611412577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000925092505061144e565b600061143d61143861143360018560ff16896114539092919063ffffffff16565b61178f565b6118f6565b905081818160ff1691509350935050505b915091565b6060600082141561147557604051806020016040528060008152509050611512565b60008284611483919061272b565b90508381118015611495575080855110155b6114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb9061262c565b60405180910390fd5b604051915082604083010160405282825283850182038460208701018481015b8082101561150d578151838301526020820191506114f4565b505050505b9392505050565b600060098251101561154d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506115f8565b600061157160088085516115619190612983565b856114539092919063ffffffff16565b905060008061157f83611357565b80925081935050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156115da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff93505050506115f8565b808260096115e8919061272b565b6115f2919061272b565b93505050505b919050565b600080828461160c919061272b565b9050838111801561161e575080855110155b61165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061262c565b60405180910390fd5b82846020870101209150509392505050565b600060ff826000815181106116ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1614156116cd576008905061178a565b60fe82600081518110611709577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415611729576004905061178a565b60fd82600081518110611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff161415611785576002905061178a565b600090505b919050565b60606000825167ffffffffffffffff8111156117d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156118065781602001600182028036833780820191505090505b50905060005b83518110156118ec5783818151811061184e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b8260018387516118699190612983565b6118739190612983565b815181106118aa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806118e490612b51565b91505061180c565b5080915050919050565b60008060005b83518110156119aa57600181611912919061272b565b845161191e9190612983565b600861192a9190612929565b6002611936919061280b565b84828151811061196f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b60f81c60ff1661198a9190612929565b82611995919061272b565b915080806119a290612b51565b9150506118fc565b5080915050919050565b60006119c76119c2846126c8565b6126a3565b9050828152602081018484840111156119df57600080fd5b6119ea848285612ade565b509392505050565b600081359050611a01816130b2565b92915050565b600081359050611a16816130c9565b92915050565b600081359050611a2b816130e0565b92915050565b600081519050611a40816130f7565b92915050565b600081359050611a558161310e565b92915050565b600081359050611a6a81613125565b92915050565b600082601f830112611a8157600080fd5b8135611a918482602086016119b4565b91505092915050565b600060808284031215611aac57600080fd5b81905092915050565b600060e08284031215611ac757600080fd5b81905092915050565b600081359050611adf8161313c565b92915050565b600081359050611af481613153565b92915050565b600060208284031215611b0c57600080fd5b6000611b1a848285016119f2565b91505092915050565b60008060408385031215611b3657600080fd5b6000611b44858286016119f2565b9250506020611b5585828601611a07565b9150509250929050565b600060208284031215611b7157600080fd5b6000611b7f84828501611a1c565b91505092915050565b600060208284031215611b9a57600080fd5b6000611ba884828501611a31565b91505092915050565b600060208284031215611bc357600080fd5b6000611bd184828501611a46565b91505092915050565b600060208284031215611bec57600080fd5b6000611bfa84828501611a5b565b91505092915050565b60008060008060808587031215611c1957600080fd5b600085013567ffffffffffffffff811115611c3357600080fd5b611c3f87828801611a9a565b945050602085013567ffffffffffffffff811115611c5c57600080fd5b611c6887828801611a70565b9350506040611c7987828801611ad0565b925050606085013567ffffffffffffffff811115611c9657600080fd5b611ca287828801611a70565b91505092959194509250565b6000806101008385031215611cc257600080fd5b600083013567ffffffffffffffff811115611cdc57600080fd5b611ce885828601611a9a565b9250506020611cf985828601611ab5565b9150509250929050565b600060208284031215611d1557600080fd5b6000611d2384828501611ad0565b91505092915050565b600060208284031215611d3e57600080fd5b6000611d4c84828501611ae5565b91505092915050565b611d5e816129eb565b82525050565b611d75611d70826129eb565b612b9a565b82525050565b611d84816129fd565b82525050565b611d9381612a09565b82525050565b611daa611da582612a09565b612bac565b82525050565b611db981612a35565b82525050565b611dd0611dcb82612a35565b612bb6565b82525050565b611ddf81612a3f565b82525050565b611df6611df182612a3f565b612bc0565b82525050565b611e0581612a6b565b82525050565b611e1c611e1782612a6b565b612bca565b82525050565b6000611e2e8385612704565b9350611e3b838584612ade565b82840190509392505050565b6000611e52826126f9565b611e5c8185612704565b9350611e6c818560208601612aed565b80840191505092915050565b6000611e85600183612720565b9150611e9082612c8e565b600182019050919050565b6000611ea8600183612720565b9150611eb382612cb7565b600182019050919050565b6000611ecb60268361270f565b9150611ed682612ce0565b604082019050919050565b6000611eee600183612720565b9150611ef982612d2f565b600182019050919050565b6000611f11600183612720565b9150611f1c82612d58565b600182019050919050565b6000611f3460228361270f565b9150611f3f82612d81565b604082019050919050565b6000611f57601a8361270f565b9150611f6282612dd0565b602082019050919050565b6000611f7a600183612720565b9150611f8582612df9565b600182019050919050565b6000611f9d60148361270f565b9150611fa882612e22565b602082019050919050565b6000611fc0600183612720565b9150611fcb82612e4b565b600182019050919050565b6000611fe3600183612720565b9150611fee82612e74565b600182019050919050565b600061200660198361270f565b915061201182612e9d565b602082019050919050565b600061202960188361270f565b915061203482612ec6565b602082019050919050565b600061204c600183612720565b915061205782612eef565b600182019050919050565b600061206f60208361270f565b915061207a82612f18565b602082019050919050565b6000612092600183612720565b915061209d82612f41565b600182019050919050565b60006120b5600183612720565b91506120c082612f6a565b600182019050919050565b60006120d860188361270f565b91506120e382612f93565b602082019050919050565b60006120fb60198361270f565b915061210682612fbc565b602082019050919050565b600061211e600183612720565b915061212982612fe5565b600182019050919050565b600061214160118361270f565b915061214c8261300e565b602082019050919050565b600061216460138361270f565b915061216f82613037565b602082019050919050565b6000612187600183612720565b915061219282613060565b600182019050919050565b60006121aa600183612720565b91506121b582613089565b600182019050919050565b6121c981612ac1565b82525050565b6121d881612ad1565b82525050565b6121ef6121ea82612ad1565b612be6565b82525050565b60006122018284611d99565b60148201915081905092915050565b600061221c8284611dbf565b60208201915081905092915050565b60006122378285611dbf565b60208201915061224782846121de565b6001820191508190509392505050565b60006122638289611de5565b600482019150612274828789611e22565b9150612281828587611e22565b915061228d8284611de5565b600482019150819050979650505050505050565b60006122ad8284611e47565b915081905092915050565b60006122c382611f6d565b91506122cf8288611d64565b6014820191506122de82611f04565b91506122e982612111565b91506122f58287611e0b565b60088201915061230482611f04565b915061230f82612085565b915061231a82611fb3565b915061232582611f6d565b91506123318286611d99565b6014820191506123408261203f565b915061234b82611e78565b91506123568261219d565b915061236182611e9b565b915061236c82612085565b915061237782611fb3565b915061238282611f6d565b915061238e8285611d99565b60148201915061239d82611ee1565b91506123a88261217a565b91506123b48284611de5565b6004820191506123c382611fd6565b91506123ce82611f04565b91506123d98261219d565b91506123e4826120a8565b91508190509695505050505050565b60006020820190506124086000830184611d55565b92915050565b60006080820190506124236000830187611d55565b6124306020830186611dfc565b61243d60408301856121c0565b61244a6060830184611d55565b95945050505050565b60006020820190506124686000830184611d7b565b92915050565b600061010082019050612484600083018b611db0565b612491602083018a6121cf565b61249e6040830189611d55565b6124ab6060830188611dfc565b6124b86080830187611d8a565b6124c560a0830186611d8a565b6124d260c0830185611dd6565b6124df60e0830184611d55565b9998505050505050505050565b6000602082019050818103600083015261250581611ebe565b9050919050565b6000602082019050818103600083015261252581611f27565b9050919050565b6000602082019050818103600083015261254581611f4a565b9050919050565b6000602082019050818103600083015261256581611f90565b9050919050565b6000602082019050818103600083015261258581611ff9565b9050919050565b600060208201905081810360008301526125a58161201c565b9050919050565b600060208201905081810360008301526125c581612062565b9050919050565b600060208201905081810360008301526125e5816120cb565b9050919050565b60006020820190508181036000830152612605816120ee565b9050919050565b6000602082019050818103600083015261262581612134565b9050919050565b6000602082019050818103600083015261264581612157565b9050919050565b6000808335600160200384360303811261266557600080fd5b80840192508235915067ffffffffffffffff82111561268357600080fd5b60208301925060018202360383131561269b57600080fd5b509250929050565b60006126ad6126be565b90506126b98282612b20565b919050565b6000604051905090565b600067ffffffffffffffff8211156126e3576126e2612c27565b5b6126ec82612c56565b9050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061273682612ab7565b915061274183612ab7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561277657612775612bf8565b5b828201905092915050565b600061278c82612ad1565b915061279783612ad1565b92508260ff038211156127ad576127ac612bf8565b5b828201905092915050565b6000808291508390505b6001851115612802578086048111156127de576127dd612bf8565b5b60018516156127ed5780820291505b80810290506127fb85612c81565b94506127c2565b94509492505050565b600061281682612ab7565b915061282183612ab7565b925061284e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612856565b905092915050565b6000826128665760019050612922565b816128745760009050612922565b816001811461288a5760028114612894576128c3565b6001915050612922565b60ff8411156128a6576128a5612bf8565b5b8360020a9150848211156128bd576128bc612bf8565b5b50612922565b5060208310610133831016604e8410600b84101617156128f85782820a9050838111156128f3576128f2612bf8565b5b612922565b61290584848460016127b8565b9250905081840481111561291c5761291b612bf8565b5b81810290505b9392505050565b600061293482612ab7565b915061293f83612ab7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561297857612977612bf8565b5b828202905092915050565b600061298e82612ab7565b915061299983612ab7565b9250828210156129ac576129ab612bf8565b5b828203905092915050565b60006129c282612ad1565b91506129cd83612ad1565b9250828210156129e0576129df612bf8565b5b828203905092915050565b60006129f682612a97565b9050919050565b60008115159050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffffffffffffff00000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612b0b578082015181840152602081019050612af0565b83811115612b1a576000848401525b50505050565b612b2982612c56565b810181811067ffffffffffffffff82111715612b4857612b47612c27565b5b80604052505050565b6000612b5c82612ab7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b8f57612b8e612bf8565b5b600182019050919050565b6000612ba582612bd4565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000612bdf82612c74565b9050919050565b6000612bf182612c67565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60008160011c9050919050565b7f6300000000000000000000000000000000000000000000000000000000000000600082015250565b7f6700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f8800000000000000000000000000000000000000000000000000000000000000600082015250565b7f7500000000000000000000000000000000000000000000000000000000000000600082015250565b7f52656164206f76657272756e20647572696e6720566172496e7420706172736960008201527f6e67000000000000000000000000000000000000000000000000000000000000602082015250565b7f42616420566172496e7420696e207363726970745075626b6579000000000000600082015250565b7f1400000000000000000000000000000000000000000000000000000000000000600082015250565b7f5661756c74206973206e6f742074727573746564000000000000000000000000600082015250565b7fa900000000000000000000000000000000000000000000000000000000000000600082015250565b7fb100000000000000000000000000000000000000000000000000000000000000600082015250565b7f57726f6e672033322d6279746520736372697074206861736800000000000000600082015250565b7f57726f6e67207363726970742068617368206c656e6774680000000000000000600082015250565b7f8700000000000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f7600000000000000000000000000000000000000000000000000000000000000600082015250565b7f6800000000000000000000000000000000000000000000000000000000000000600082015250565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b7f57726f6e672032302d6279746520736372697074206861736800000000000000600082015250565b7f0800000000000000000000000000000000000000000000000000000000000000600082015250565b7f566f75742072656164206f76657272756e000000000000000000000000000000600082015250565b7f536c696365206f7574206f6620626f756e647300000000000000000000000000600082015250565b7f0400000000000000000000000000000000000000000000000000000000000000600082015250565b7fac00000000000000000000000000000000000000000000000000000000000000600082015250565b6130bb816129eb565b81146130c657600080fd5b50565b6130d2816129fd565b81146130dd57600080fd5b50565b6130e981612a09565b81146130f457600080fd5b50565b61310081612a35565b811461310b57600080fd5b50565b61311781612a3f565b811461312257600080fd5b50565b61312e81612a6b565b811461313957600080fd5b50565b61314581612ab7565b811461315057600080fd5b50565b61315c81612ad1565b811461316757600080fd5b5056fea2646970667358221220295f3b4ea195fd7fba9f5296085182facf835e59f603d9d4791d500bcbfc014564736f6c63430008040033",
|
|
219
333
|
"linkReferences": {},
|
|
220
334
|
"deployedLinkReferences": {}
|
|
221
335
|
}
|
|
@@ -15,11 +15,13 @@
|
|
|
15
15
|
|
|
16
16
|
pragma solidity 0.8.4;
|
|
17
17
|
|
|
18
|
-
import "
|
|
18
|
+
import "@openzeppelin/contracts/access/Ownable.sol";
|
|
19
19
|
|
|
20
20
|
import {BTCUtils} from "@keep-network/bitcoin-spv-sol/contracts/BTCUtils.sol";
|
|
21
21
|
import {BytesLib} from "@keep-network/bitcoin-spv-sol/contracts/BytesLib.sol";
|
|
22
22
|
|
|
23
|
+
import "./BitcoinTx.sol";
|
|
24
|
+
|
|
23
25
|
/// @title Bitcoin Bridge
|
|
24
26
|
/// @notice Bridge manages BTC deposit and redemption flow and is increasing and
|
|
25
27
|
/// decreasing balances in the Bank as a result of BTC deposit and
|
|
@@ -39,7 +41,7 @@ import {BytesLib} from "@keep-network/bitcoin-spv-sol/contracts/BytesLib.sol";
|
|
|
39
41
|
/// wallet informs the Bridge about the sweep increasing appropriate
|
|
40
42
|
/// balances in the Bank.
|
|
41
43
|
/// @dev Bridge is an upgradeable component of the Bank.
|
|
42
|
-
contract Bridge {
|
|
44
|
+
contract Bridge is Ownable {
|
|
43
45
|
using BTCUtils for bytes;
|
|
44
46
|
using BytesLib for bytes;
|
|
45
47
|
|
|
@@ -66,7 +68,8 @@ contract Bridge {
|
|
|
66
68
|
// and used with OP_CHECKLOCKTIMEVERIFY opcode as described in:
|
|
67
69
|
// https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki
|
|
68
70
|
bytes4 refundLocktime;
|
|
69
|
-
// Address of the
|
|
71
|
+
// Address of the Bank vault to which the deposit is routed to.
|
|
72
|
+
// Optional, can be 0x0. The vault must be trusted by the Bridge.
|
|
70
73
|
address vault;
|
|
71
74
|
}
|
|
72
75
|
|
|
@@ -79,10 +82,20 @@ contract Bridge {
|
|
|
79
82
|
bytes8 amount;
|
|
80
83
|
// UNIX timestamp the deposit was revealed at.
|
|
81
84
|
uint32 revealedAt;
|
|
82
|
-
// Address of the
|
|
85
|
+
// Address of the Bank vault the deposit is routed to.
|
|
86
|
+
// Optional, can be 0x0.
|
|
83
87
|
address vault;
|
|
84
88
|
}
|
|
85
89
|
|
|
90
|
+
/// @notice Indicates if the vault with the given address is trusted or not.
|
|
91
|
+
/// Depositors can route their revealed deposits only to trusted
|
|
92
|
+
/// vaults and have trusted vaults notified about new deposits as
|
|
93
|
+
/// soon as these deposits get swept. Vaults not trusted by the
|
|
94
|
+
/// Bridge can still be used by Bank balance owners on their own
|
|
95
|
+
/// responsibility - anyone can approve their Bank balance to any
|
|
96
|
+
/// address.
|
|
97
|
+
mapping(address => bool) public isVaultTrusted;
|
|
98
|
+
|
|
86
99
|
/// @notice Collection of all unswept deposits indexed by
|
|
87
100
|
/// keccak256(fundingTxHash | fundingOutputIndex).
|
|
88
101
|
/// The fundingTxHash is LE bytes32 and fundingOutputIndex an uint8.
|
|
@@ -100,9 +113,29 @@ contract Bridge {
|
|
|
100
113
|
bytes8 blindingFactor,
|
|
101
114
|
bytes20 walletPubKeyHash,
|
|
102
115
|
bytes20 refundPubKeyHash,
|
|
103
|
-
bytes4 refundLocktime
|
|
116
|
+
bytes4 refundLocktime,
|
|
117
|
+
address vault
|
|
104
118
|
);
|
|
105
119
|
|
|
120
|
+
event VaultStatusUpdated(address indexed vault, bool isTrusted);
|
|
121
|
+
|
|
122
|
+
/// @notice Allows the Governance to mark the given vault address as trusted
|
|
123
|
+
/// or no longer trusted. Vaults are not trusted by default.
|
|
124
|
+
/// Trusted vault must meet the following criteria:
|
|
125
|
+
/// - `IVault.onBalanceIncreased` must have a known, low gas cost.
|
|
126
|
+
/// - `IVault.onBalanceIncreased` must never revert.
|
|
127
|
+
/// @dev Without restricting reveal only to trusted vaults, malicious
|
|
128
|
+
/// vaults not meeting the criteria would be able to nuke sweep proof
|
|
129
|
+
/// transactions executed by ECDSA wallet with deposits routed to
|
|
130
|
+
/// them.
|
|
131
|
+
/// @param vault The address of the vault
|
|
132
|
+
/// @param isTrusted flag indicating whether the vault is trusted or not
|
|
133
|
+
/// @dev Can only be called by the Governance.
|
|
134
|
+
function setVaultStatus(address vault, bool isTrusted) external onlyOwner {
|
|
135
|
+
isVaultTrusted[vault] = isTrusted;
|
|
136
|
+
emit VaultStatusUpdated(vault, isTrusted);
|
|
137
|
+
}
|
|
138
|
+
|
|
106
139
|
/// @notice Used by the depositor to reveal information about their P2(W)SH
|
|
107
140
|
/// Bitcoin deposit to the Bridge on Ethereum chain. The off-chain
|
|
108
141
|
/// wallet listens for revealed deposit events and may decide to
|
|
@@ -111,10 +144,13 @@ contract Bridge {
|
|
|
111
144
|
/// after the Bitcoin transaction with P2(W)SH deposit is mined on
|
|
112
145
|
/// the Bitcoin chain. Worth noting, the gas cost of this function
|
|
113
146
|
/// scales with the number of P2(W)SH transaction inputs and
|
|
114
|
-
/// outputs.
|
|
147
|
+
/// outputs. The deposit may be routed to one of the trusted vaults.
|
|
148
|
+
/// When a deposit is routed to a vault, vault gets notified when
|
|
149
|
+
/// the deposit gets swept and it may execute the appropriate action.
|
|
115
150
|
/// @param fundingTx Bitcoin funding transaction data, see `BitcoinTx.Info`
|
|
116
151
|
/// @param reveal Deposit reveal data, see `RevealInfo struct
|
|
117
152
|
/// @dev Requirements:
|
|
153
|
+
/// - `reveal.vault` must be 0x0 or point to a trusted vault
|
|
118
154
|
/// - `reveal.fundingOutputIndex` must point to the actual P2(W)SH
|
|
119
155
|
/// output of the BTC deposit transaction
|
|
120
156
|
/// - `reveal.depositor` must be the Ethereum address used in the
|
|
@@ -137,6 +173,11 @@ contract Bridge {
|
|
|
137
173
|
BitcoinTx.Info calldata fundingTx,
|
|
138
174
|
RevealInfo calldata reveal
|
|
139
175
|
) external {
|
|
176
|
+
require(
|
|
177
|
+
reveal.vault == address(0) || isVaultTrusted[reveal.vault],
|
|
178
|
+
"Vault is not trusted"
|
|
179
|
+
);
|
|
180
|
+
|
|
140
181
|
bytes memory expectedScript =
|
|
141
182
|
abi.encodePacked(
|
|
142
183
|
hex"14", // Byte length of depositor Ethereum address.
|
|
@@ -248,7 +289,8 @@ contract Bridge {
|
|
|
248
289
|
reveal.blindingFactor,
|
|
249
290
|
reveal.walletPubKeyHash,
|
|
250
291
|
reveal.refundPubKeyHash,
|
|
251
|
-
reveal.refundLocktime
|
|
292
|
+
reveal.refundLocktime,
|
|
293
|
+
reveal.vault
|
|
252
294
|
);
|
|
253
295
|
}
|
|
254
296
|
|