h-agent-swap 1.6.5 → 1.7.0
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/package.json +1 -1
- package/src/abi/TokenMarket.json +140 -2
- package/src/agent-swap.js +40 -0
package/package.json
CHANGED
package/src/abi/TokenMarket.json
CHANGED
|
@@ -56,6 +56,31 @@
|
|
|
56
56
|
"name": "BackBuy",
|
|
57
57
|
"type": "event"
|
|
58
58
|
},
|
|
59
|
+
{
|
|
60
|
+
"anonymous": false,
|
|
61
|
+
"inputs": [
|
|
62
|
+
{
|
|
63
|
+
"indexed": false,
|
|
64
|
+
"internalType": "address",
|
|
65
|
+
"name": "sender",
|
|
66
|
+
"type": "address"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"indexed": false,
|
|
70
|
+
"internalType": "address",
|
|
71
|
+
"name": "token",
|
|
72
|
+
"type": "address"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"indexed": false,
|
|
76
|
+
"internalType": "uint256",
|
|
77
|
+
"name": "amount",
|
|
78
|
+
"type": "uint256"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"name": "Burn",
|
|
82
|
+
"type": "event"
|
|
83
|
+
},
|
|
59
84
|
{
|
|
60
85
|
"anonymous": false,
|
|
61
86
|
"inputs": [
|
|
@@ -93,6 +118,31 @@
|
|
|
93
118
|
"name": "Compensate",
|
|
94
119
|
"type": "event"
|
|
95
120
|
},
|
|
121
|
+
{
|
|
122
|
+
"anonymous": false,
|
|
123
|
+
"inputs": [
|
|
124
|
+
{
|
|
125
|
+
"indexed": false,
|
|
126
|
+
"internalType": "address",
|
|
127
|
+
"name": "sender",
|
|
128
|
+
"type": "address"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"indexed": false,
|
|
132
|
+
"internalType": "address",
|
|
133
|
+
"name": "token",
|
|
134
|
+
"type": "address"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"indexed": false,
|
|
138
|
+
"internalType": "uint256",
|
|
139
|
+
"name": "amount",
|
|
140
|
+
"type": "uint256"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"name": "Donate",
|
|
144
|
+
"type": "event"
|
|
145
|
+
},
|
|
96
146
|
{
|
|
97
147
|
"anonymous": false,
|
|
98
148
|
"inputs": [
|
|
@@ -248,6 +298,37 @@
|
|
|
248
298
|
"name": "Reward",
|
|
249
299
|
"type": "event"
|
|
250
300
|
},
|
|
301
|
+
{
|
|
302
|
+
"anonymous": false,
|
|
303
|
+
"inputs": [
|
|
304
|
+
{
|
|
305
|
+
"indexed": false,
|
|
306
|
+
"internalType": "uint256",
|
|
307
|
+
"name": "id",
|
|
308
|
+
"type": "uint256"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"indexed": false,
|
|
312
|
+
"internalType": "address",
|
|
313
|
+
"name": "wallet",
|
|
314
|
+
"type": "address"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"indexed": false,
|
|
318
|
+
"internalType": "address",
|
|
319
|
+
"name": "token",
|
|
320
|
+
"type": "address"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"indexed": false,
|
|
324
|
+
"internalType": "uint256",
|
|
325
|
+
"name": "amount",
|
|
326
|
+
"type": "uint256"
|
|
327
|
+
}
|
|
328
|
+
],
|
|
329
|
+
"name": "Send",
|
|
330
|
+
"type": "event"
|
|
331
|
+
},
|
|
251
332
|
{
|
|
252
333
|
"stateMutability": "payable",
|
|
253
334
|
"type": "fallback"
|
|
@@ -265,6 +346,63 @@
|
|
|
265
346
|
"stateMutability": "view",
|
|
266
347
|
"type": "function"
|
|
267
348
|
},
|
|
349
|
+
{
|
|
350
|
+
"inputs": [
|
|
351
|
+
{
|
|
352
|
+
"internalType": "uint256[]",
|
|
353
|
+
"name": "id",
|
|
354
|
+
"type": "uint256[]"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"internalType": "address[]",
|
|
358
|
+
"name": "wallet",
|
|
359
|
+
"type": "address[]"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"internalType": "address[]",
|
|
363
|
+
"name": "token",
|
|
364
|
+
"type": "address[]"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"internalType": "uint256[]",
|
|
368
|
+
"name": "amount",
|
|
369
|
+
"type": "uint256[]"
|
|
370
|
+
}
|
|
371
|
+
],
|
|
372
|
+
"name": "batchTransfer",
|
|
373
|
+
"outputs": [],
|
|
374
|
+
"stateMutability": "nonpayable",
|
|
375
|
+
"type": "function"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"inputs": [
|
|
379
|
+
{
|
|
380
|
+
"internalType": "address",
|
|
381
|
+
"name": "inToken",
|
|
382
|
+
"type": "address"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"internalType": "address",
|
|
386
|
+
"name": "outToken",
|
|
387
|
+
"type": "address"
|
|
388
|
+
}
|
|
389
|
+
],
|
|
390
|
+
"name": "calibration",
|
|
391
|
+
"outputs": [
|
|
392
|
+
{
|
|
393
|
+
"internalType": "uint256",
|
|
394
|
+
"name": "open",
|
|
395
|
+
"type": "uint256"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"internalType": "address",
|
|
399
|
+
"name": "pricing",
|
|
400
|
+
"type": "address"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"stateMutability": "view",
|
|
404
|
+
"type": "function"
|
|
405
|
+
},
|
|
268
406
|
{
|
|
269
407
|
"inputs": [],
|
|
270
408
|
"name": "close",
|
|
@@ -1246,8 +1384,8 @@
|
|
|
1246
1384
|
"type": "receive"
|
|
1247
1385
|
}
|
|
1248
1386
|
],
|
|
1249
|
-
"bytecode": "0x608060405262015180600a556000600b556305f5e100600d553480156200002557600080fd5b506040516200563b3803806200563b8339810160408190526200004891620001fb565b620000533362000085565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d81620000d5565b505062000258565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200013b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000233565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001f657600080fd5b919050565b600080604083850312156200020f57600080fd5b6200021a83620001de565b91506200022a60208401620001de565b90509250929050565b6000602082840312156200024657600080fd5b6200025182620001de565b9392505050565b6153d380620002686000396000f3fe6080604052600436106101c45760003560e01c80635ff530f2116100f65780639065a9af1161008f578063d738eba111610061578063d738eba114610716578063d96661ef14610736578063f2fde38b14610756578063fe8691b41461077657005b80639065a9af1461065a578063a6a3694a146106cd578063aa5d448f146106e0578063b18019861461070057005b8063744cfdd9116100c8578063744cfdd9146105cd5780637aaa9b02146105ed57806381f3fdc31461060d5780638da5cb5b1461063c57005b80635ff530f21461054757806362a76603146105675780636f151a3814610598578063715018a6146105b857005b806327af9e38116101685780633fc8cef31161013a5780633fc8cef3146104bc57806340216a83146104dc57806343d726d6146105115780635c8181211461052757005b806327af9e38146103425780632926e5de146103585780632bd2c18d1461045157806334e3f92d1461047157005b80630fcc40c4116101a15780630fcc40c41461029d5780631b153401146102ca5780631f8c24de146102ea578063238ac9331461030a57005b8063016eb8a8146101cd578063089afeae146102005780630d83b1e41461028757005b366101cb57005b005b3480156101d957600080fd5b506101ed6101e836600461456f565b6107b5565b6040519081526020015b60405180910390f35b34801561020c57600080fd5b5061025861021b3660046145b6565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b039586168152602081019490945283019190915290911660608201526080016101f7565b34801561029357600080fd5b506101ed600d5481565b3480156102a957600080fd5b506102bd6102b8366004614711565b6107d6565b6040516101f79190614792565b3480156102d657600080fd5b506101cb6102e53660046147a5565b6108a6565b3480156102f657600080fd5b506101cb610305366004614856565b610961565b34801561031657600080fd5b5060025461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016101f7565b34801561034e57600080fd5b506101ed600a5481565b34801561036457600080fd5b506103e76103733660046145b6565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101f7565b34801561045d57600080fd5b506101ed61046c3660046148c3565b6109e1565b34801561047d57600080fd5b506104ac61048c36600461491a565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101f7565b3480156104c857600080fd5b5060045461032a906001600160a01b031681565b3480156104e857600080fd5b506104fc6104f73660046145b6565b610a36565b604080519283526020830191909152016101f7565b34801561051d57600080fd5b506101ed600c5481565b34801561053357600080fd5b506101ed61054236600461495d565b610b82565b34801561055357600080fd5b506101ed610562366004614996565b610bca565b34801561057357600080fd5b506105876105823660046149dd565b610d0e565b6040516101f7959493929190614aef565b3480156105a457600080fd5b506101cb6105b3366004614b24565b610dd6565b3480156105c457600080fd5b506101cb610e3c565b3480156105d957600080fd5b506101ed6105e8366004614996565b610ea2565b3480156105f957600080fd5b506101cb610608366004614bba565b610fcc565b34801561061957600080fd5b5061062d610628366004614cd5565b611288565b6040516101f793929190614d37565b34801561064857600080fd5b506000546001600160a01b031661032a565b34801561066657600080fd5b506106ad6106753660046147a5565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101f7565b6101cb6106db366004614d59565b611658565b3480156106ec57600080fd5b506101cb6106fb366004614b24565b61198d565b34801561070c57600080fd5b506101ed600b5481565b34801561072257600080fd5b506101cb61073136600461456f565b6119f0565b34801561074257600080fd5b5060055461032a906001600160a01b031681565b34801561076257600080fd5b506101cb610771366004614b24565b611a55565b34801561078257600080fd5b506104fc6107913660046145b6565b60066020908152600092835260408084209091529082529020805460019091015482565b600d546000906107cf906107c98585611b34565b90611b46565b9392505050565b805160609060008167ffffffffffffffff8111156107f6576107f66145ef565b60405190808252806020026020018201604052801561081f578160200160208202803683370190505b5090506000825b6001811061089c578561083a600183614ded565b8151811061084a5761084a614e04565b602002602001015183838151811061086457610864614e04565b6001600160a01b03909216602092830291909101909101528161088681614e33565b925050808061089490614e4d565b915050610826565b5090949350505050565b6000546001600160a01b031633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610910838383611b52565b61095c5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016108fc565b505050565b610969611b89565b6109768585858585611be2565b61098285858584611dce565b8142106109d15760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016108fc565b6109da60018055565b5050505050565b60008080848103610a0e576109f68787610bca565b9150610a0484836000610b82565b9150819250610a2c565b610a188787610ea2565b9050610a2684826001610b82565b90508092505b5050949350505050565b6000806000600a54600b5442610a4c9190614e64565b610a569190614e7c565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610b3b578060200151935080606001519250610b79565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610ba057600d54610b999086611e3d565b9050610bb0565b600d54610bad9086611e49565b90505b600d54610bc1906107c98684611b34565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c1a9087908790600401614eb7565b600060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5f9190810190614ed0565b905080610c7760018351611e4990919063ffffffff16565b81518110610c8757610c87614e04565b6020026020010151915060008211610d075760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016108fc565b5092915050565b610d8460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610d998c8c8c8c611e55565b92995090945092509050610daf8c8c8b86612041565b9850610dbf8c8c8b8b868661208b565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610e305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610e3981612328565b50565b6000546001600160a01b03163314610e965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610ea060006123dd565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610ef29087908790600401614eb7565b600060405180830381865afa158015610f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f379190810190614ed0565b905080600081518110610f4c57610f4c614e04565b6020026020010151915060008211610d075760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016108fc565b6000546001600160a01b031633146110265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b60008260600151121561107b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016108fc565b6000826020015112156110d05760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016108fc565b836001600160a01b031681606001516001600160a01b031614806111095750826001600160a01b031681606001516001600160a01b0316145b6111555760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e670000000060448201526064016108fc565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b6112fe60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e9190614f61565b60ff16915061143761143183600a615068565b85610bca565b90506000808285608001511115611489576101208501516080860151600d546114608683614ded565b61146a9190615074565b6114749190614e7c565b61147e9190614e7c565b9050600091506114d2565b84608001518311156114d2576101208501516080860151600d546114ad8287614ded565b6114b79190615074565b6114c19190614e7c565b6114cb9190614e7c565b9050600191505b600081131561164d57608085018390526101408501516101608601518361150a576114fc82615093565b915061150781615093565b90505b6000821261154d57602087015161152184846150cb565b61152b9190615187565b6020880181905260c088015112156115485760c087015160208801525b6115a9565b86602001518760a001518461156185612445565b61156b91906150cb565b6115759190615187565b131561158a5760a087015160208801526115a9565b602087015161159984846150cb565b6115a39190615187565b60208801525b600081126115ee5760608701516115c084836150cb565b6115ca9190615187565b6060880181905261010088015112156115e95761010087015160608801525b61164a565b86606001518760e001518461160284612445565b61160c91906150cb565b6116169190615187565b131561162b5760e0870151606088015261164a565b606087015161163a84836150cb565b6116449190615187565b60608801525b50505b505093509350939050565b611660611b89565b3332146116af5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016108fc565b333b156117235760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016108fc565b8260000361174a576117358587610bca565b935061174381856000610b82565b9350611765565b6117548487610ea2565b945061176281866001610b82565b94505b60008660008151811061177a5761177a614e04565b60200260200101519050600087600189516117959190614ded565b815181106117a5576117a5614e04565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916117e9908490614e64565b925050819055506000604051806040016040528061180685612461565b8152602001846001600160a01b031681525090506000604051806040016040528061183085612461565b81526001600160a01b038516602090910152825190915060030361185f5761185a8433308c61249a565b6118d4565b8834146118d45760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016108fc565b6118e382828b8b8e8c8c61260a565b60006118f085858b6128b3565b905060008061190187878f8e6129f9565b9150915061191087878f612c5b565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a15050505050505061198560018055565b505050505050565b6000546001600160a01b031633146119e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610e3981612f2c565b6000546001600160a01b03163314611a4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b600a91909155600b55565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b6001600160a01b038116611b2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108fc565b610e39816123dd565b60006107cf8284615074565b92915050565b60006107cf8284614e7c565b60006001600160a01b038416611b7457611b6c8383613091565b5060016107cf565b611b7f8484846131aa565b5060019392505050565b600260015403611bdb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108fc565b6002600155565b600381604051611bf2919061522b565b9081526040519081900360200190205460ff1615611c525760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016108fc565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e884015261010480840191909152835180840390910181526101249092019092528051910120600090611d169083613312565b6002549091506001600160a01b03808316911614611d765760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016108fc565b6001600383604051611d88919061522b565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611deb57611de63383613091565b611df6565b611df68333846131aa565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611e2f96959493929190615247565b60405180910390a150505050565b60006107cf8284614e64565b60006107cf8284614ded565b611ecb60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed9190614f61565b60ff16915061200661200083600a615068565b87610bca565b90506000806120158a8a610a36565b6020880182905260608801819052909250905061203287836107b5565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610bc19061207b9085906107b5565b6120858585611e49565b90611e49565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082516080810184528154871681526001808301548287015260028301548286015260039092015487166060820152958916855260068452828520918552925282209081015490549192839283921161211a576121138882602001516107b5565b935061230f565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612151908a90614e64565b106121a6576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546121139190612192908b90614e64565b61219c9190614ded565b82602001516107b5565b60006121b387600a615068565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612215573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223991906152aa565b6122439190615074565b61224d9190614e7c565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061228a908c90614e64565b6122949190614e64565b101561230d576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906122cd908b90614e64565b6122d79190614e64565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461230a9190614ded565b93505b505b6123198885611e49565b91505096509650969350505050565b6001600160a01b0381166123a35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108fc565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561245d5761245882615093565b611b40565b5090565b600060036001600160a01b03831661247b57506001611b40565b6004546001600160a01b0390811690841603611b405750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161252c919061522b565b6000604051808303816000865af19150503d8060008114612569576040519150601f19603f3d011682016040523d82523d6000602084013e61256e565b606091505b509150915081801561259857508051158061259857508080602001905181019061259891906152c3565b6119855760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016108fc565b865160030361262f57602087015160055461262f91906001600160a01b031687613336565b86516003148015612641575085516003145b801561264b575081155b156126ee576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906126a190889088908890309088906004016152e0565b6000604051808303816000875af11580156126c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e89190810190614ed0565b506128aa565b86516003148015612700575085516003145b801561270c5750816001145b15612762576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906126a190879089908890309088906004016152e0565b8651600314801561277f575085516002148061277f575085516001145b801561278b5750816001145b156127e1576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906126a190879089908890309088906004016152e0565b8651600214806127f2575086516001145b80156127ff575085516003145b801561280b5750816001145b156128aa576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb4190879061286190889088903090889060040161531c565b60006040518083038185885af115801561287f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526128a89190810190614ed0565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908161296a8686610a36565b50905061297784826107b5565b92506000604051806040016040528061298f88612461565b81526001600160a01b03881660209091015280519091506003036129d25782516001600160a01b031630146129cd576129cd868460000151866131aa565b6129ef565b82516001600160a01b031630146129ef5782516129ef908561349e565b5050509392505050565b6001600160a01b0380851660009081526008602090815260408083208785168452825280832081516080810183528154861681526001820154938101939093526002810154918301919091526003015490921660608301529081908180612a6289898989613581565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054939950919450925011612aae57612aa78684602001516107b5565b9450612be9565b3360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612ae3908890614e64565b10612b36573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612aa79190612b22908990614e64565b612b2c9190614ded565b84602001516107b5565b6000612b4382600a615068565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015612ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc691906152aa565b612bd09190615074565b612bda9190614e7c565b9050612be7898883613977565b505b612bf38686611e49565b93508415612c0a57612c0a888460000151876131aa565b612c158833866131aa565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290612c48908490614e64565b9250508190555050505094509492505050565b6000600a54600b5442612c6e9190614e64565b612c789190614e7c565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015612d875750600c54155b15612de7576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055612e41565b8151600003612e4157600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b6000612e4e878787613ae0565b6001600160a01b038089166000908152600960209081526040808320938b16835292815282822088835290522054909150612e8c8888848489613cd3565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b038116612fa85760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108fc565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130569190615351565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156130e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108fc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461312e576040519150601f19603f3d011682016040523d82523d6000602084013e613133565b606091505b505090508061095c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108fc565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691613234919061522b565b6000604051808303816000865af19150503d8060008114613271576040519150601f19603f3d011682016040523d82523d6000602084013e613276565b606091505b50915091508180156132a05750805115806132a05750808060200190518101906132a091906152c3565b6109da5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016108fc565b60008060006133218585613f52565b9150915061332e81613f97565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916133c0919061522b565b6000604051808303816000865af19150503d80600081146133fd576040519150601f19603f3d011682016040523d82523d6000602084013e613402565b606091505b509150915081801561342c57508051158061342c57508080602001905181019061342c91906152c3565b6109da5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016108fc565b604080516000808252602082019092526001600160a01b0384169083906040516134c8919061522b565b60006040518083038185875af1925050503d8060008114613505576040519150601f19603f3d011682016040523d82523d6000602084013e61350a565b606091505b505090508061095c5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016108fc565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081908190818061363d8a8a610a36565b9150915061364b87826107b5565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d291906152aa565b10156137465760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016108fc565b600061375288836107b5565b11156137cb5761377083604001513361376b8a856107b5565b6131aa565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516137a18a856107b5565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d851684528252808320815160808101835281548616815260018201549381019390935260028101549183018290526003015490931660608201529161382e908a906107b5565b11156138c05760006138556138478a84604001516107b5565b6138508c6107d6565b6140fc565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c6138888c86604001516107b5565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139229190614f61565b60ff16945061393b61393586600a615068565b8a610bca565b9550600061394989856107b5565b905061396661395c8a84604001516107b5565b6120858b84611e49565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b038716845290915290206001810154905482906139ae908590614e64565b6139b89190614e64565b101561095c573360009081526006602090815260408083206001600160a01b038716845290915281205482906139ef908590614e64565b6139f99190614e64565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613a2a9190614ded565b90508015613a6b573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613a65908490614e64565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611e2f565b6001600160a01b038084166000818152600860209081526040808320878616845282528083208151608081018352815487168152600182015493810193909352600281015491830191909152600301549093166060840181905290929183919003613bca57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba79190614f61565b60ff169050613bc3613bba82600a615068565b610562866107d6565b9250613cca565b81606001516001600160a01b0316856001600160a01b031603613c5c57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c499190614f61565b60ff169050613bc361143182600a615068565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e63790000000000000000000000000000000000000000000000000060648201526084016108fc565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b909301546101608201529091829190613dd15760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016108fc565b60008511613e215760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e2030000000000000000000000060448201526064016108fc565b85851115613e6757610120810151600d548690613e3e8983614ded565b613e489190615074565b613e529190614e7c565b613e5c9190614e7c565b925060009150613ea9565b84861115613ea957610120810151600d548690613e84828a614ded565b613e8e9190615074565b613e989190614e7c565b613ea29190614e7c565b9250600191505b600080613eb88a8a87876141ec565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b8352905220600281018390556003018190559092509050613f03898b87876141ec565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b6000808251604103613f885760208301516040840151606085015160001a613f7c878285856144ae565b94509450505050613f90565b506000905060025b9250929050565b6000816004811115613fab57613fab61536e565b03613fb35750565b6001816004811115613fc757613fc761536e565b036140145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108fc565b60028160048111156140285761402861536e565b036140755760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108fc565b60038160048111156140895761408961536e565b03610e395760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016108fc565b6000808260008151811061411257614112614e04565b602002602001015190506000836001855161412d9190614ded565b8151811061413d5761413d614e04565b602002602001015190506000604051806040016040528061415d85612461565b8152602001846001600160a01b031681525090506000604051806040016040528061418785612461565b8152602001846001600160a01b031681525090506141a58787610bca565b94506141b5612710866000610b82565b945060006141c442600a614e64565b90506141d683838a898b60008761260a565b6141e18433886131aa565b505050505092915050565b6000806000841315614472576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846142445761423682615093565b915061424181615093565b90505b600061424f83612445565b13156142fa5761425f86836150cb565b9350600082126142ca576001600160a01b038089166000908152600760209081526040808320938b16835292905220600601548413156142c5576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614326565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614326565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b600061433182612445565b131561443f576001600160a01b038089166000908152600760209081526040808320938b168352929052206003015461436a87836150cb565b6143749190615187565b9250600081126143df576001600160a01b038089166000908152600760209081526040808320938b16835292905220600801548313156143da576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b61446b565b6001600160a01b038089166000908152600760208181526040808420948c16845293905291902001548312156143da576001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154925061446b565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b50506144a5565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144e557506000905060036144a5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614539573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614562576000600192509250506144a5565b9660009650945050505050565b6000806040838503121561458257600080fd5b50508035926020909101359150565b6001600160a01b0381168114610e3957600080fd5b80356145b181614591565b919050565b600080604083850312156145c957600080fd5b82356145d481614591565b915060208301356145e481614591565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614642576146426145ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614671576146716145ef565b604052919050565b600067ffffffffffffffff821115614693576146936145ef565b5060051b60200190565b600082601f8301126146ae57600080fd5b813560206146c36146be83614679565b614648565b82815260059290921b840181019181810190868411156146e257600080fd5b8286015b848110156147065780356146f981614591565b83529183019183016146e6565b509695505050505050565b60006020828403121561472357600080fd5b813567ffffffffffffffff81111561473a57600080fd5b6147468482850161469d565b949350505050565b600081518084526020808501945080840160005b838110156147875781516001600160a01b031687529582019590820190600101614762565b509495945050505050565b6020815260006107cf602083018461474e565b6000806000606084860312156147ba57600080fd5b83356147c581614591565b925060208401356147d581614591565b929592945050506040919091013590565b600082601f8301126147f757600080fd5b813567ffffffffffffffff811115614811576148116145ef565b6148246020601f19601f84011601614648565b81815284602083860101111561483957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561486e57600080fd5b85359450602086013561488081614591565b93506040860135925060608601359150608086013567ffffffffffffffff8111156148aa57600080fd5b6148b6888289016147e6565b9150509295509295909350565b600080600080608085870312156148d957600080fd5b84359350602085013567ffffffffffffffff8111156148f757600080fd5b6149038782880161469d565b949794965050505060408301359260600135919050565b60006020828403121561492c57600080fd5b813567ffffffffffffffff81111561494357600080fd5b614746848285016147e6565b8015158114610e3957600080fd5b60008060006060848603121561497257600080fd5b8335925060208401359150604084013561498b8161494f565b809150509250925092565b600080604083850312156149a957600080fd5b82359150602083013567ffffffffffffffff8111156149c757600080fd5b6149d38582860161469d565b9150509250929050565b600080600080600060a086880312156149f557600080fd5b8535614a0081614591565b94506020860135614a1081614591565b9350604086013567ffffffffffffffff811115614a2c57600080fd5b614a388882890161469d565b935050606086013591506080860135614a5081614591565b809150509295509295909350565b80516001600160a01b03168252602081015160208301526040810151614a8f60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b6102008101614afe8288614a5e565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b600060208284031215614b3657600080fd5b81356107cf81614591565b600060808284031215614b5357600080fd5b6040516080810181811067ffffffffffffffff82111715614b7657614b766145ef565b6040529050808235614b8781614591565b8082525060208301356020820152604083013560408201526060830135614bad81614591565b6060919091015292915050565b600080600080848603610240811215614bd257600080fd5b8535614bdd81614591565b94506020860135614bed81614591565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201811315614c2157600080fd5b614c2961461e565b9150614c37604088016145a6565b825260608701356020830152614c4f608088016145a6565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614cca866101c08701614b41565b905092959194509250565b600080600060608486031215614cea57600080fd5b8335614cf581614591565b92506020840135614d0581614591565b9150604084013567ffffffffffffffff811115614d2157600080fd5b614d2d8682870161469d565b9150509250925092565b6101c08101614d468286614a5e565b6101808201939093526101a00152919050565b60008060008060008060c08789031215614d7257600080fd5b863567ffffffffffffffff811115614d8957600080fd5b614d9589828a0161469d565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015614dff57614dff614dbe565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198203614e4657614e46614dbe565b5060010190565b600081614e5c57614e5c614dbe565b506000190190565b60008219821115614e7757614e77614dbe565b500190565b600082614eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614746604083018461474e565b60006020808385031215614ee357600080fd5b825167ffffffffffffffff811115614efa57600080fd5b8301601f81018513614f0b57600080fd5b8051614f196146be82614679565b81815260059190911b82018301908381019087831115614f3857600080fd5b928401925b82841015614f5657835182529284019290840190614f3d565b979650505050505050565b600060208284031215614f7357600080fd5b815160ff811681146107cf57600080fd5b600181815b80851115614fbf578160001904821115614fa557614fa5614dbe565b80851615614fb257918102915b93841c9390800290614f89565b509250929050565b600082614fd657506001611b40565b81614fe357506000611b40565b8160018114614ff957600281146150035761501f565b6001915050611b40565b60ff84111561501457615014614dbe565b50506001821b611b40565b5060208310610133831016604e8410600b8410161715615042575081810a611b40565b61504c8383614f84565b806000190482111561506057615060614dbe565b029392505050565b60006107cf8383614fc7565b600081600019048311821515161561508e5761508e614dbe565b500290565b60007f800000000000000000000000000000000000000000000000000000000000000082036150c4576150c4614dbe565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561510c5761510c614dbe565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561514757615147614dbe565b6000871292508782058712848416161561516357615163614dbe565b8785058712818416161561517957615179614dbe565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156151c1576151c1614dbe565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156151f5576151f5614dbe565b50500190565b60005b838110156152165781810151838201526020016151fe565b83811115615225576000848401525b50505050565b6000825161523d8184602087016151fb565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526152918160e08501602087016151fb565b601f01601f19169190910160e001979650505050505050565b6000602082840312156152bc57600080fd5b5051919050565b6000602082840312156152d557600080fd5b81516107cf8161494f565b85815284602082015260a0604082015260006152ff60a083018661474e565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615335608083018661474e565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561536357600080fd5b81516107cf81614591565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122083203b62844b28ccba355c292cfc99a6542ec76014adb5e401619bc356162c7864736f6c634300080e0033",
|
|
1250
|
-
"deployedBytecode": "0x6080604052600436106101c45760003560e01c80635ff530f2116100f65780639065a9af1161008f578063d738eba111610061578063d738eba114610716578063d96661ef14610736578063f2fde38b14610756578063fe8691b41461077657005b80639065a9af1461065a578063a6a3694a146106cd578063aa5d448f146106e0578063b18019861461070057005b8063744cfdd9116100c8578063744cfdd9146105cd5780637aaa9b02146105ed57806381f3fdc31461060d5780638da5cb5b1461063c57005b80635ff530f21461054757806362a76603146105675780636f151a3814610598578063715018a6146105b857005b806327af9e38116101685780633fc8cef31161013a5780633fc8cef3146104bc57806340216a83146104dc57806343d726d6146105115780635c8181211461052757005b806327af9e38146103425780632926e5de146103585780632bd2c18d1461045157806334e3f92d1461047157005b80630fcc40c4116101a15780630fcc40c41461029d5780631b153401146102ca5780631f8c24de146102ea578063238ac9331461030a57005b8063016eb8a8146101cd578063089afeae146102005780630d83b1e41461028757005b366101cb57005b005b3480156101d957600080fd5b506101ed6101e836600461456f565b6107b5565b6040519081526020015b60405180910390f35b34801561020c57600080fd5b5061025861021b3660046145b6565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b039586168152602081019490945283019190915290911660608201526080016101f7565b34801561029357600080fd5b506101ed600d5481565b3480156102a957600080fd5b506102bd6102b8366004614711565b6107d6565b6040516101f79190614792565b3480156102d657600080fd5b506101cb6102e53660046147a5565b6108a6565b3480156102f657600080fd5b506101cb610305366004614856565b610961565b34801561031657600080fd5b5060025461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016101f7565b34801561034e57600080fd5b506101ed600a5481565b34801561036457600080fd5b506103e76103733660046145b6565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101f7565b34801561045d57600080fd5b506101ed61046c3660046148c3565b6109e1565b34801561047d57600080fd5b506104ac61048c36600461491a565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101f7565b3480156104c857600080fd5b5060045461032a906001600160a01b031681565b3480156104e857600080fd5b506104fc6104f73660046145b6565b610a36565b604080519283526020830191909152016101f7565b34801561051d57600080fd5b506101ed600c5481565b34801561053357600080fd5b506101ed61054236600461495d565b610b82565b34801561055357600080fd5b506101ed610562366004614996565b610bca565b34801561057357600080fd5b506105876105823660046149dd565b610d0e565b6040516101f7959493929190614aef565b3480156105a457600080fd5b506101cb6105b3366004614b24565b610dd6565b3480156105c457600080fd5b506101cb610e3c565b3480156105d957600080fd5b506101ed6105e8366004614996565b610ea2565b3480156105f957600080fd5b506101cb610608366004614bba565b610fcc565b34801561061957600080fd5b5061062d610628366004614cd5565b611288565b6040516101f793929190614d37565b34801561064857600080fd5b506000546001600160a01b031661032a565b34801561066657600080fd5b506106ad6106753660046147a5565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101f7565b6101cb6106db366004614d59565b611658565b3480156106ec57600080fd5b506101cb6106fb366004614b24565b61198d565b34801561070c57600080fd5b506101ed600b5481565b34801561072257600080fd5b506101cb61073136600461456f565b6119f0565b34801561074257600080fd5b5060055461032a906001600160a01b031681565b34801561076257600080fd5b506101cb610771366004614b24565b611a55565b34801561078257600080fd5b506104fc6107913660046145b6565b60066020908152600092835260408084209091529082529020805460019091015482565b600d546000906107cf906107c98585611b34565b90611b46565b9392505050565b805160609060008167ffffffffffffffff8111156107f6576107f66145ef565b60405190808252806020026020018201604052801561081f578160200160208202803683370190505b5090506000825b6001811061089c578561083a600183614ded565b8151811061084a5761084a614e04565b602002602001015183838151811061086457610864614e04565b6001600160a01b03909216602092830291909101909101528161088681614e33565b925050808061089490614e4d565b915050610826565b5090949350505050565b6000546001600160a01b031633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610910838383611b52565b61095c5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016108fc565b505050565b610969611b89565b6109768585858585611be2565b61098285858584611dce565b8142106109d15760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016108fc565b6109da60018055565b5050505050565b60008080848103610a0e576109f68787610bca565b9150610a0484836000610b82565b9150819250610a2c565b610a188787610ea2565b9050610a2684826001610b82565b90508092505b5050949350505050565b6000806000600a54600b5442610a4c9190614e64565b610a569190614e7c565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610b3b578060200151935080606001519250610b79565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610ba057600d54610b999086611e3d565b9050610bb0565b600d54610bad9086611e49565b90505b600d54610bc1906107c98684611b34565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c1a9087908790600401614eb7565b600060405180830381865afa158015610c37573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5f9190810190614ed0565b905080610c7760018351611e4990919063ffffffff16565b81518110610c8757610c87614e04565b6020026020010151915060008211610d075760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016108fc565b5092915050565b610d8460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610d998c8c8c8c611e55565b92995090945092509050610daf8c8c8b86612041565b9850610dbf8c8c8b8b868661208b565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610e305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610e3981612328565b50565b6000546001600160a01b03163314610e965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610ea060006123dd565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610ef29087908790600401614eb7565b600060405180830381865afa158015610f0f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f379190810190614ed0565b905080600081518110610f4c57610f4c614e04565b6020026020010151915060008211610d075760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016108fc565b6000546001600160a01b031633146110265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b60008260600151121561107b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016108fc565b6000826020015112156110d05760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016108fc565b836001600160a01b031681606001516001600160a01b031614806111095750826001600160a01b031681606001516001600160a01b0316145b6111555760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e670000000060448201526064016108fc565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b6112fe60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141e9190614f61565b60ff16915061143761143183600a615068565b85610bca565b90506000808285608001511115611489576101208501516080860151600d546114608683614ded565b61146a9190615074565b6114749190614e7c565b61147e9190614e7c565b9050600091506114d2565b84608001518311156114d2576101208501516080860151600d546114ad8287614ded565b6114b79190615074565b6114c19190614e7c565b6114cb9190614e7c565b9050600191505b600081131561164d57608085018390526101408501516101608601518361150a576114fc82615093565b915061150781615093565b90505b6000821261154d57602087015161152184846150cb565b61152b9190615187565b6020880181905260c088015112156115485760c087015160208801525b6115a9565b86602001518760a001518461156185612445565b61156b91906150cb565b6115759190615187565b131561158a5760a087015160208801526115a9565b602087015161159984846150cb565b6115a39190615187565b60208801525b600081126115ee5760608701516115c084836150cb565b6115ca9190615187565b6060880181905261010088015112156115e95761010087015160608801525b61164a565b86606001518760e001518461160284612445565b61160c91906150cb565b6116169190615187565b131561162b5760e0870151606088015261164a565b606087015161163a84836150cb565b6116449190615187565b60608801525b50505b505093509350939050565b611660611b89565b3332146116af5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016108fc565b333b156117235760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016108fc565b8260000361174a576117358587610bca565b935061174381856000610b82565b9350611765565b6117548487610ea2565b945061176281866001610b82565b94505b60008660008151811061177a5761177a614e04565b60200260200101519050600087600189516117959190614ded565b815181106117a5576117a5614e04565b6020908102919091018101513360009081526006835260408082206001600160a01b03871683529093529182206001018054919350899290916117e9908490614e64565b925050819055506000604051806040016040528061180685612461565b8152602001846001600160a01b031681525090506000604051806040016040528061183085612461565b81526001600160a01b038516602090910152825190915060030361185f5761185a8433308c61249a565b6118d4565b8834146118d45760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016108fc565b6118e382828b8b8e8c8c61260a565b60006118f085858b6128b3565b905060008061190187878f8e6129f9565b9150915061191087878f612c5b565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a15050505050505061198560018055565b505050505050565b6000546001600160a01b031633146119e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b610e3981612f2c565b6000546001600160a01b03163314611a4a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b600a91909155600b55565b6000546001600160a01b03163314611aaf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fc565b6001600160a01b038116611b2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108fc565b610e39816123dd565b60006107cf8284615074565b92915050565b60006107cf8284614e7c565b60006001600160a01b038416611b7457611b6c8383613091565b5060016107cf565b611b7f8484846131aa565b5060019392505050565b600260015403611bdb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108fc565b6002600155565b600381604051611bf2919061522b565b9081526040519081900360200190205460ff1615611c525760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016108fc565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e884015261010480840191909152835180840390910181526101249092019092528051910120600090611d169083613312565b6002549091506001600160a01b03808316911614611d765760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016108fc565b6001600383604051611d88919061522b565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b038316611deb57611de63383613091565b611df6565b611df68333846131aa565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611e2f96959493929190615247565b60405180910390a150505050565b60006107cf8284614e64565b60006107cf8284614ded565b611ecb60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611fc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fed9190614f61565b60ff16915061200661200083600a615068565b87610bca565b90506000806120158a8a610a36565b6020880182905260608801819052909250905061203287836107b5565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610bc19061207b9085906107b5565b6120858585611e49565b90611e49565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082516080810184528154871681526001808301548287015260028301548286015260039092015487166060820152958916855260068452828520918552925282209081015490549192839283921161211a576121138882602001516107b5565b935061230f565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054612151908a90614e64565b106121a6576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546121139190612192908b90614e64565b61219c9190614ded565b82602001516107b5565b60006121b387600a615068565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015612215573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223991906152aa565b6122439190615074565b61224d9190614e7c565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061228a908c90614e64565b6122949190614e64565b101561230d576001600160a01b038089166000908152600660209081526040808320938e168352929052205481906122cd908b90614e64565b6122d79190614e64565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461230a9190614ded565b93505b505b6123198885611e49565b91505096509650969350505050565b6001600160a01b0381166123a35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108fc565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082121561245d5761245882615093565b611b40565b5090565b600060036001600160a01b03831661247b57506001611b40565b6004546001600160a01b0390811690841603611b405750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161252c919061522b565b6000604051808303816000865af19150503d8060008114612569576040519150601f19603f3d011682016040523d82523d6000602084013e61256e565b606091505b509150915081801561259857508051158061259857508080602001905181019061259891906152c3565b6119855760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016108fc565b865160030361262f57602087015160055461262f91906001600160a01b031687613336565b86516003148015612641575085516003145b801561264b575081155b156126ee576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906126a190889088908890309088906004016152e0565b6000604051808303816000875af11580156126c0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e89190810190614ed0565b506128aa565b86516003148015612700575085516003145b801561270c5750816001145b15612762576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906126a190879089908890309088906004016152e0565b8651600314801561277f575085516002148061277f575085516001145b801561278b5750816001145b156127e1576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906126a190879089908890309088906004016152e0565b8651600214806127f2575086516001145b80156127ff575085516003145b801561280b5750816001145b156128aa576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb4190879061286190889088903090889060040161531c565b60006040518083038185885af115801561287f573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526128a89190810190614ed0565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b90920154610160830152908161296a8686610a36565b50905061297784826107b5565b92506000604051806040016040528061298f88612461565b81526001600160a01b03881660209091015280519091506003036129d25782516001600160a01b031630146129cd576129cd868460000151866131aa565b6129ef565b82516001600160a01b031630146129ef5782516129ef908561349e565b5050509392505050565b6001600160a01b0380851660009081526008602090815260408083208785168452825280832081516080810183528154861681526001820154938101939093526002810154918301919091526003015490921660608301529081908180612a6289898989613581565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054939950919450925011612aae57612aa78684602001516107b5565b9450612be9565b3360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612ae3908890614e64565b10612b36573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054612aa79190612b22908990614e64565b612b2c9190614ded565b84602001516107b5565b6000612b4382600a615068565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa158015612ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc691906152aa565b612bd09190615074565b612bda9190614e7c565b9050612be7898883613977565b505b612bf38686611e49565b93508415612c0a57612c0a888460000151876131aa565b612c158833866131aa565b3360009081526006602090815260408083206001600160a01b038c16845290915281208054869290612c48908490614e64565b9250508190555050505094509492505050565b6000600a54600b5442612c6e9190614e64565b612c789190614e7c565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015612d875750600c54155b15612de7576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055612e41565b8151600003612e4157600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b6000612e4e878787613ae0565b6001600160a01b038089166000908152600960209081526040808320938b16835292815282822088835290522054909150612e8c8888848489613cd3565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b038116612fa85760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108fc565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613032573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130569190615351565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156130e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108fc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461312e576040519150601f19603f3d011682016040523d82523d6000602084013e613133565b606091505b505090508061095c5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108fc565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691613234919061522b565b6000604051808303816000865af19150503d8060008114613271576040519150601f19603f3d011682016040523d82523d6000602084013e613276565b606091505b50915091508180156132a05750805115806132a05750808060200190518101906132a091906152c3565b6109da5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016108fc565b60008060006133218585613f52565b9150915061332e81613f97565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916133c0919061522b565b6000604051808303816000865af19150503d80600081146133fd576040519150601f19603f3d011682016040523d82523d6000602084013e613402565b606091505b509150915081801561342c57508051158061342c57508080602001905181019061342c91906152c3565b6109da5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016108fc565b604080516000808252602082019092526001600160a01b0384169083906040516134c8919061522b565b60006040518083038185875af1925050503d8060008114613505576040519150601f19603f3d011682016040523d82523d6000602084013e61350a565b606091505b505090508061095c5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016108fc565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081908190818061363d8a8a610a36565b9150915061364b87826107b5565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d291906152aa565b10156137465760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016108fc565b600061375288836107b5565b11156137cb5761377083604001513361376b8a856107b5565b6131aa565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd3384604001516137a18a856107b5565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d851684528252808320815160808101835281548616815260018201549381019390935260028101549183018290526003015490931660608201529161382e908a906107b5565b11156138c05760006138556138478a84604001516107b5565b6138508c6107d6565b6140fc565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c6138888c86604001516107b5565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139229190614f61565b60ff16945061393b61393586600a615068565b8a610bca565b9550600061394989856107b5565b905061396661395c8a84604001516107b5565b6120858b84611e49565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b038716845290915290206001810154905482906139ae908590614e64565b6139b89190614e64565b101561095c573360009081526006602090815260408083206001600160a01b038716845290915281205482906139ef908590614e64565b6139f99190614e64565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613a2a9190614ded565b90508015613a6b573360009081526006602090815260408083206001600160a01b038816845290915281208054839290613a65908490614e64565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a001611e2f565b6001600160a01b038084166000818152600860209081526040808320878616845282528083208151608081018352815487168152600182015493810193909352600281015491830191909152600301549093166060840181905290929183919003613bca57846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba79190614f61565b60ff169050613bc3613bba82600a615068565b610562866107d6565b9250613cca565b81606001516001600160a01b0316856001600160a01b031603613c5c57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c499190614f61565b60ff169050613bc361143182600a615068565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e63790000000000000000000000000000000000000000000000000060648201526084016108fc565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b909301546101608201529091829190613dd15760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016108fc565b60008511613e215760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e2030000000000000000000000060448201526064016108fc565b85851115613e6757610120810151600d548690613e3e8983614ded565b613e489190615074565b613e529190614e7c565b613e5c9190614e7c565b925060009150613ea9565b84861115613ea957610120810151600d548690613e84828a614ded565b613e8e9190615074565b613e989190614e7c565b613ea29190614e7c565b9250600191505b600080613eb88a8a87876141ec565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b8352905220600281018390556003018190559092509050613f03898b87876141ec565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b6000808251604103613f885760208301516040840151606085015160001a613f7c878285856144ae565b94509450505050613f90565b506000905060025b9250929050565b6000816004811115613fab57613fab61536e565b03613fb35750565b6001816004811115613fc757613fc761536e565b036140145760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108fc565b60028160048111156140285761402861536e565b036140755760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108fc565b60038160048111156140895761408961536e565b03610e395760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016108fc565b6000808260008151811061411257614112614e04565b602002602001015190506000836001855161412d9190614ded565b8151811061413d5761413d614e04565b602002602001015190506000604051806040016040528061415d85612461565b8152602001846001600160a01b031681525090506000604051806040016040528061418785612461565b8152602001846001600160a01b031681525090506141a58787610bca565b94506141b5612710866000610b82565b945060006141c442600a614e64565b90506141d683838a898b60008761260a565b6141e18433886131aa565b505050505092915050565b6000806000841315614472576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846142445761423682615093565b915061424181615093565b90505b600061424f83612445565b13156142fa5761425f86836150cb565b9350600082126142ca576001600160a01b038089166000908152600760209081526040808320938b16835292905220600601548413156142c5576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b614326565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101549350614326565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b600061433182612445565b131561443f576001600160a01b038089166000908152600760209081526040808320938b168352929052206003015461436a87836150cb565b6143749190615187565b9250600081126143df576001600160a01b038089166000908152600760209081526040808320938b16835292905220600801548313156143da576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b61446b565b6001600160a01b038089166000908152600760208181526040808420948c16845293905291902001548312156143da576001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154925061446b565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b50506144a5565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144e557506000905060036144a5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614539573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614562576000600192509250506144a5565b9660009650945050505050565b6000806040838503121561458257600080fd5b50508035926020909101359150565b6001600160a01b0381168114610e3957600080fd5b80356145b181614591565b919050565b600080604083850312156145c957600080fd5b82356145d481614591565b915060208301356145e481614591565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614642576146426145ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614671576146716145ef565b604052919050565b600067ffffffffffffffff821115614693576146936145ef565b5060051b60200190565b600082601f8301126146ae57600080fd5b813560206146c36146be83614679565b614648565b82815260059290921b840181019181810190868411156146e257600080fd5b8286015b848110156147065780356146f981614591565b83529183019183016146e6565b509695505050505050565b60006020828403121561472357600080fd5b813567ffffffffffffffff81111561473a57600080fd5b6147468482850161469d565b949350505050565b600081518084526020808501945080840160005b838110156147875781516001600160a01b031687529582019590820190600101614762565b509495945050505050565b6020815260006107cf602083018461474e565b6000806000606084860312156147ba57600080fd5b83356147c581614591565b925060208401356147d581614591565b929592945050506040919091013590565b600082601f8301126147f757600080fd5b813567ffffffffffffffff811115614811576148116145ef565b6148246020601f19601f84011601614648565b81815284602083860101111561483957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561486e57600080fd5b85359450602086013561488081614591565b93506040860135925060608601359150608086013567ffffffffffffffff8111156148aa57600080fd5b6148b6888289016147e6565b9150509295509295909350565b600080600080608085870312156148d957600080fd5b84359350602085013567ffffffffffffffff8111156148f757600080fd5b6149038782880161469d565b949794965050505060408301359260600135919050565b60006020828403121561492c57600080fd5b813567ffffffffffffffff81111561494357600080fd5b614746848285016147e6565b8015158114610e3957600080fd5b60008060006060848603121561497257600080fd5b8335925060208401359150604084013561498b8161494f565b809150509250925092565b600080604083850312156149a957600080fd5b82359150602083013567ffffffffffffffff8111156149c757600080fd5b6149d38582860161469d565b9150509250929050565b600080600080600060a086880312156149f557600080fd5b8535614a0081614591565b94506020860135614a1081614591565b9350604086013567ffffffffffffffff811115614a2c57600080fd5b614a388882890161469d565b935050606086013591506080860135614a5081614591565b809150509295509295909350565b80516001600160a01b03168252602081015160208301526040810151614a8f60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b6102008101614afe8288614a5e565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b600060208284031215614b3657600080fd5b81356107cf81614591565b600060808284031215614b5357600080fd5b6040516080810181811067ffffffffffffffff82111715614b7657614b766145ef565b6040529050808235614b8781614591565b8082525060208301356020820152604083013560408201526060830135614bad81614591565b6060919091015292915050565b600080600080848603610240811215614bd257600080fd5b8535614bdd81614591565b94506020860135614bed81614591565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201811315614c2157600080fd5b614c2961461e565b9150614c37604088016145a6565b825260608701356020830152614c4f608088016145a6565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614cca866101c08701614b41565b905092959194509250565b600080600060608486031215614cea57600080fd5b8335614cf581614591565b92506020840135614d0581614591565b9150604084013567ffffffffffffffff811115614d2157600080fd5b614d2d8682870161469d565b9150509250925092565b6101c08101614d468286614a5e565b6101808201939093526101a00152919050565b60008060008060008060c08789031215614d7257600080fd5b863567ffffffffffffffff811115614d8957600080fd5b614d9589828a0161469d565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015614dff57614dff614dbe565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006000198203614e4657614e46614dbe565b5060010190565b600081614e5c57614e5c614dbe565b506000190190565b60008219821115614e7757614e77614dbe565b500190565b600082614eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614746604083018461474e565b60006020808385031215614ee357600080fd5b825167ffffffffffffffff811115614efa57600080fd5b8301601f81018513614f0b57600080fd5b8051614f196146be82614679565b81815260059190911b82018301908381019087831115614f3857600080fd5b928401925b82841015614f5657835182529284019290840190614f3d565b979650505050505050565b600060208284031215614f7357600080fd5b815160ff811681146107cf57600080fd5b600181815b80851115614fbf578160001904821115614fa557614fa5614dbe565b80851615614fb257918102915b93841c9390800290614f89565b509250929050565b600082614fd657506001611b40565b81614fe357506000611b40565b8160018114614ff957600281146150035761501f565b6001915050611b40565b60ff84111561501457615014614dbe565b50506001821b611b40565b5060208310610133831016604e8410600b8410161715615042575081810a611b40565b61504c8383614f84565b806000190482111561506057615060614dbe565b029392505050565b60006107cf8383614fc7565b600081600019048311821515161561508e5761508e614dbe565b500290565b60007f800000000000000000000000000000000000000000000000000000000000000082036150c4576150c4614dbe565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561510c5761510c614dbe565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561514757615147614dbe565b6000871292508782058712848416161561516357615163614dbe565b8785058712818416161561517957615179614dbe565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156151c1576151c1614dbe565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156151f5576151f5614dbe565b50500190565b60005b838110156152165781810151838201526020016151fe565b83811115615225576000848401525b50505050565b6000825161523d8184602087016151fb565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526152918160e08501602087016151fb565b601f01601f19169190910160e001979650505050505050565b6000602082840312156152bc57600080fd5b5051919050565b6000602082840312156152d557600080fd5b81516107cf8161494f565b85815284602082015260a0604082015260006152ff60a083018661474e565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000615335608083018661474e565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561536357600080fd5b81516107cf81614591565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea264697066735822122083203b62844b28ccba355c292cfc99a6542ec76014adb5e401619bc356162c7864736f6c634300080e0033",
|
|
1387
|
+
"bytecode": "0x608060405262015180600a556000600b556305f5e100600d553480156200002557600080fd5b5060405162005cf138038062005cf18339810160408190526200004891620001fb565b620000533362000085565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007d81620000d5565b505062000258565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200013b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000195573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bb919062000233565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001f657600080fd5b919050565b600080604083850312156200020f57600080fd5b6200021a83620001de565b91506200022a60208401620001de565b90509250929050565b6000602082840312156200024657600080fd5b6200025182620001de565b9392505050565b615a8980620002686000396000f3fe6080604052600436106101e75760003560e01c806362a766031161010e5780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610799578063f2fde38b146107d6578063fe8691b4146107f657005b8063d738eba114610759578063d96661ef1461077957005b80639bad44e8146106f0578063a6a3694a14610710578063aa5d448f14610723578063b18019861461074357005b80637aaa9b02116100e05780637aaa9b021461061057806381f3fdc3146106305780638da5cb5b1461065f5780639065a9af1461067d57005b806362a766031461058a5780636f151a38146105bb578063715018a6146105db578063744cfdd9146105f057005b80632926e5de1161018057806340216a831161015257806340216a83146104ff57806343d726d6146105345780635c8181211461054a5780635ff530f21461056a57005b80632926e5de1461037b5780632bd2c18d1461047457806334e3f92d146104945780633fc8cef3146104df57005b80631b153401116101b95780631b153401146102ed5780631f8c24de1461030d578063238ac9331461032d57806327af9e381461036557005b8063016eb8a8146101f0578063089afeae146102235780630d83b1e4146102aa5780630fcc40c4146102c057005b366101ee57005b005b3480156101fc57600080fd5b5061021061020b366004614b1d565b610835565b6040519081526020015b60405180910390f35b34801561022f57600080fd5b5061027b61023e366004614b64565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161021a565b3480156102b657600080fd5b50610210600d5481565b3480156102cc57600080fd5b506102e06102db366004614cbf565b610856565b60405161021a9190614d40565b3480156102f957600080fd5b506101ee610308366004614d53565b610926565b34801561031957600080fd5b506101ee610328366004614e04565b6109e1565b34801561033957600080fd5b5060025461034d906001600160a01b031681565b6040516001600160a01b03909116815260200161021a565b34801561037157600080fd5b50610210600a5481565b34801561038757600080fd5b5061040a610396366004614b64565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161021a565b34801561048057600080fd5b5061021061048f366004614e71565b610a61565b3480156104a057600080fd5b506104cf6104af366004614ec8565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161021a565b3480156104eb57600080fd5b5060045461034d906001600160a01b031681565b34801561050b57600080fd5b5061051f61051a366004614b64565b610ab6565b6040805192835260208301919091520161021a565b34801561054057600080fd5b50610210600c5481565b34801561055657600080fd5b50610210610565366004614f0b565b610c02565b34801561057657600080fd5b50610210610585366004614f44565b610c4a565b34801561059657600080fd5b506105aa6105a5366004614f8b565b610d8e565b60405161021a95949392919061509d565b3480156105c757600080fd5b506101ee6105d63660046150d2565b610e56565b3480156105e757600080fd5b506101ee610ebc565b3480156105fc57600080fd5b5061021061060b366004614f44565b610f22565b34801561061c57600080fd5b506101ee61062b366004615168565b61104c565b34801561063c57600080fd5b5061065061064b366004615283565b611308565b60405161021a939291906152e5565b34801561066b57600080fd5b506000546001600160a01b031661034d565b34801561068957600080fd5b506106d0610698366004614d53565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161021a565b3480156106fc57600080fd5b506101ee61070b366004615362565b6116d8565b6101ee61071e36600461540f565b61195a565b34801561072f57600080fd5b506101ee61073e3660046150d2565b611c8f565b34801561074f57600080fd5b50610210600b5481565b34801561076557600080fd5b506101ee610774366004614b1d565b611cf2565b34801561078557600080fd5b5060055461034d906001600160a01b031681565b3480156107a557600080fd5b506107b96107b4366004614b64565b611d57565b604080519283526001600160a01b0390911660208301520161021a565b3480156107e257600080fd5b506101ee6107f13660046150d2565b611ee6565b34801561080257600080fd5b5061051f610811366004614b64565b60066020908152600092835260408084209091529082529020805460019091015482565b600d5460009061084f906108498585611fc5565b90611fd7565b9392505050565b805160609060008167ffffffffffffffff81111561087657610876614b9d565b60405190808252806020026020018201604052801561089f578160200160208202803683370190505b5090506000825b6001811061091c57856108ba6001836154a3565b815181106108ca576108ca6154ba565b60200260200101518383815181106108e4576108e46154ba565b6001600160a01b039092166020928302919091019091015281610906816154e9565b925050808061091490615503565b9150506108a6565b5090949350505050565b6000546001600160a01b031633146109855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610990838383611fe3565b6109dc5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c00000000000000000000604482015260640161097c565b505050565b6109e961201a565b6109f68585858585612073565b610a028585858461225f565b814210610a515760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e000000604482015260640161097c565b610a5a60018055565b5050505050565b60008080848103610a8e57610a768787610c4a565b9150610a8484836000610c02565b9150819250610aac565b610a988787610f22565b9050610aa684826001610c02565b90508092505b5050949350505050565b6000806000600a54600b5442610acc919061551a565b610ad69190615532565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610bbb578060200151935080606001519250610bf9565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610c2057600d54610c1990866122ce565b9050610c30565b600d54610c2d90866122da565b90505b600d54610c41906108498684611fc5565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c9a908790879060040161556d565b600060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cdf9190810190615586565b905080610cf7600183516122da90919063ffffffff16565b81518110610d0757610d076154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e20300000000000000000000000000000000000606482015260840161097c565b5092915050565b610e0460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610e198c8c8c8c6122e6565b92995090945092509050610e2f8c8c8b866124d2565b9850610e3f8c8c8b8b868661251c565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb9816127b9565b50565b6000546001600160a01b03163314610f165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610f20600061286e565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610f72908790879060040161556d565b600060405180830381865afa158015610f8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fb79190810190615586565b905080600081518110610fcc57610fcc6154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e2030000000000000000000000000000000000000606482015260840161097c565b6000546001600160a01b031633146110a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6000826060015112156110fb5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d20300000000000000000604482015260640161097c565b6000826020015112156111505760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d203000000000000000604482015260640161097c565b836001600160a01b031681606001516001600160a01b031614806111895750826001600160a01b031681606001516001600160a01b0316145b6111d55760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e6700000000604482015260640161097c565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61137e60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e9190615617565b60ff1691506114b76114b183600a61571e565b85610c4a565b90506000808285608001511115611509576101208501516080860151600d546114e086836154a3565b6114ea919061572a565b6114f49190615532565b6114fe9190615532565b905060009150611552565b8460800151831115611552576101208501516080860151600d5461152d82876154a3565b611537919061572a565b6115419190615532565b61154b9190615532565b9050600191505b60008113156116cd57608085018390526101408501516101608601518361158a5761157c82615749565b915061158781615749565b90505b600082126115cd5760208701516115a18484615781565b6115ab919061583d565b6020880181905260c088015112156115c85760c087015160208801525b611629565b86602001518760a00151846115e1856128d6565b6115eb9190615781565b6115f5919061583d565b131561160a5760a08701516020880152611629565b60208701516116198484615781565b611623919061583d565b60208801525b6000811261166e5760608701516116408483615781565b61164a919061583d565b6060880181905261010088015112156116695761010087015160608801525b6116ca565b86606001518760e0015184611682846128d6565b61168c9190615781565b611696919061583d565b13156116ab5760e087015160608801526116ca565b60608701516116ba8483615781565b6116c4919061583d565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146117325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b82518451146117835760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b81518351146117d45760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b80518251146118255760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b60005b8451811015610a5a57611887838281518110611846576118466154ba565b6020026020010151858381518110611860576118606154ba565b602002602001015184848151811061187a5761187a6154ba565b60200260200101516128f2565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd08582815181106118ba576118ba6154ba565b60200260200101518583815181106118d4576118d46154ba565b60200260200101518584815181106118ee576118ee6154ba565b6020026020010151858581518110611908576119086154ba565b602002602001015160405161194094939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611952816154e9565b915050611828565b61196261201a565b3332146119b15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c65720000000000604482015260640161097c565b333b15611a255760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c7300000000000000000000000000000000000000000000000000000000606482015260840161097c565b82600003611a4c57611a378587610c4a565b9350611a4581856000610c02565b9350611a67565b611a568487610f22565b9450611a6481866001610c02565b94505b600086600081518110611a7c57611a7c6154ba565b6020026020010151905060008760018951611a9791906154a3565b81518110611aa757611aa76154ba565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611aeb90849061551a565b9250508190555060006040518060400160405280611b0885612a5a565b8152602001846001600160a01b0316815250905060006040518060400160405280611b3285612a5a565b81526001600160a01b0385166020909101528251909150600303611b6157611b5c8433308c612a93565b611bd6565b883414611bd65760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f6375726174650000000000000000000000000000000000000000000000000000606482015260840161097c565b611be582828b8b8e8c8c612c03565b6000611bf285858b612eac565b9050600080611c0387878f8e613062565b91509150611c1287878f613371565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611c8760018055565b505050505050565b6000546001600160a01b03163314611ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb981613642565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b600a91909155600b55565b6000806000600a54600b5442611d6d919061551a565b611d779190615532565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611e865750600c54155b15611e975780608001519450611eaf565b8151600003611eaa57600c549450611eaf565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611f405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6001600160a01b038116611fbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161097c565b610eb98161286e565b600061084f828461572a565b92915050565b600061084f8284615532565b60006001600160a01b03841661200557611ffd83836137a7565b50600161084f565b6120108484846128f2565b5060019392505050565b60026001540361206c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161097c565b6002600155565b60038160405161208391906158e1565b9081526040519081900360200190205460ff16156120e35760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a63657274696669636174652065787069726564604482015260640161097c565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906121a790836138c0565b6002549091506001600160a01b038083169116146122075760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c6964206365727469666963617465604482015260640161097c565b600160038360405161221991906158e1565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b03831661227c5761227733836137a7565b612287565b6122878333846128f2565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516122c0969594939291906158fd565b60405180910390a150505050565b600061084f828461551a565b600061084f82846154a3565b61235c60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa15801561245a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247e9190615617565b60ff16915061249761249183600a61571e565b87610c4a565b90506000806124a68a8a610ab6565b602088018290526060880181905290925090506124c38783610835565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610c419061250c908590610835565b61251685856122da565b906122da565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ab576125a4888260200151610835565b93506127a0565b6001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e2908a9061551a565b10612637576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125a49190612623908b9061551a565b61262d91906154a3565b8260200151610835565b600061264487600a61571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615960565b6126d4919061572a565b6126de9190615532565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061271b908c9061551a565b612725919061551a565b101561279e576001600160a01b038089166000908152600660209081526040808320938e1683529290522054819061275e908b9061551a565b612768919061551a565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461279b91906154a3565b93505b505b6127aa88856122da565b91505096509650969350505050565b6001600160a01b0381166128345760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161097c565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128ee576128e982615749565b611fd1565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161297c91906158e1565b6000604051808303816000865af19150503d80600081146129b9576040519150601f19603f3d011682016040523d82523d6000602084013e6129be565b606091505b50915091508180156129e85750805115806129e85750808060200190518101906129e89190615979565b610a5a5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161097c565b600060036001600160a01b038316612a7457506001611fd1565b6004546001600160a01b0390811690841603611fd15750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612b2591906158e1565b6000604051808303816000865af19150503d8060008114612b62576040519150601f19603f3d011682016040523d82523d6000602084013e612b67565b606091505b5091509150818015612b91575080511580612b91575080806020019051810190612b919190615979565b611c875760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c6564000000000000000000000000000000606482015260840161097c565b8651600303612c28576020870151600554612c2891906001600160a01b0316876138e4565b86516003148015612c3a575085516003145b8015612c44575081155b15612ce7576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed173990612c9a9088908890889030908890600401615996565b6000604051808303816000875af1158015612cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce19190810190615586565b50612ea3565b86516003148015612cf9575085516003145b8015612d055750816001145b15612d5b576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee90612c9a9087908990889030908890600401615996565b86516003148015612d785750855160021480612d78575085516001145b8015612d845750816001145b15612dda576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a90612c9a9087908990889030908890600401615996565b865160021480612deb575086516001145b8015612df8575085516003145b8015612e045750816001145b15612ea3576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612e5a9088908890309088906004016159d2565b60006040518083038185885af1158015612e78573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ea19190810190615586565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081612f638686610ab6565b509050612f708482610835565b925060006040518060400160405280612f8888612a5a565b81526001600160a01b038816602090910152805190915060030361303b5782516001600160a01b0316301461303657612fc6868460000151866128f2565b82516001600160a01b03161580612fe7575082516001600160a01b03166001145b1561303657604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b613058565b82516001600160a01b031630146130585782516130589085613a4c565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806130cb89898989613b2f565b3360009081526006602090815260408083206001600160a01b038f16845290915290206001810154905493995091945092501161311757613110868460200151610835565b9450613252565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461314c90889061551a565b1061319f573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054613110919061318b90899061551a565b61319591906154a3565b8460200151610835565b60006131ac82600a61571e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa15801561320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322f9190615960565b613239919061572a565b6132439190615532565b9050613250898883613f25565b505b61325c86866122da565b9350841561332057613273888460000151876128f2565b848360200151600d5487613287919061572a565b6132919190615532565b61329b91906154a3565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906132d190849061551a565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b61332b8833866128f2565b3360009081526006602090815260408083206001600160a01b038c1684529091528120805486929061335e90849061551a565b9250508190555050505094509492505050565b6000600a54600b5442613384919061551a565b61338e9190615532565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b909101546101608201528151929350909115801561349d5750600c54155b156134fd576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613557565b815160000361355757600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061356487878761408e565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506135a28888848489614281565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166136be5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c9190615a07565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156137f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613844576040519150601f19603f3d011682016040523d82523d6000602084013e613849565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097c565b60008060006138cf8585614500565b915091506138dc81614545565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161396e91906158e1565b6000604051808303816000865af19150503d80600081146139ab576040519150601f19603f3d011682016040523d82523d6000602084013e6139b0565b606091505b50915091508180156139da5750805115806139da5750808060200190518101906139da9190615979565b610a5a5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161097c565b604080516000808252602082019092526001600160a01b038416908390604051613a7691906158e1565b60006040518083038185875af1925050503d8060008114613ab3576040519150601f19603f3d011682016040523d82523d6000602084013e613ab8565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c6564000000000000000000000000606482015260840161097c565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613beb8a8a610ab6565b91509150613bf98782610835565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615960565b1015613cf45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e6365000000000000000000000000000000000000606482015260840161097c565b6000613d008883610835565b1115613d7957613d1e836040015133613d198a85610835565b6128f2565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d4f8a85610835565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613ddc908a90610835565b1115613e6e576000613e03613df58a8460400151610835565b613dfe8c610856565b6146aa565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e368c8660400151610835565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed09190615617565b60ff169450613ee9613ee386600a61571e565b8a610c4a565b95506000613ef78985610835565b9050613f14613f0a8a8460400151610835565b6125168b846122da565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f5c90859061551a565b613f66919061551a565b10156109dc573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f9d90859061551a565b613fa7919061551a565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fd891906154a3565b90508015614019573360009081526006602090815260408083206001600160a01b03881684529091528120805483929061401390849061551a565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016122c0565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361417857846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141559190615617565b60ff16905061417161416882600a61571e565b61058586610856565b9250614278565b81606001516001600160a01b0316856001600160a01b03160361420a57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f79190615617565b60ff1690506141716114b182600a61571e565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e637900000000000000000000000000000000000000000000000000606482015260840161097c565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061437f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e2030000000604482015260640161097c565b600085116143cf5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e20300000000000000000000000604482015260640161097c565b8585111561441557610120810151600d5486906143ec89836154a3565b6143f6919061572a565b6144009190615532565b61440a9190615532565b925060009150614457565b8486111561445757610120810151600d548690614432828a6154a3565b61443c919061572a565b6144469190615532565b6144509190615532565b9250600191505b6000806144668a8a878761479a565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506144b1898b878761479a565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036145365760208301516040840151606085015160001a61452a87828585614a5c565b9450945050505061453e565b506000905060025b9250929050565b600081600481111561455957614559615a24565b036145615750565b600181600481111561457557614575615a24565b036145c25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161097c565b60028160048111156145d6576145d6615a24565b036146235760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161097c565b600381600481111561463757614637615a24565b03610eb95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600080826000815181106146c0576146c06154ba565b60200260200101519050600083600185516146db91906154a3565b815181106146eb576146eb6154ba565b602002602001015190506000604051806040016040528061470b85612a5a565b8152602001846001600160a01b031681525090506000604051806040016040528061473585612a5a565b8152602001846001600160a01b031681525090506147538787610c4a565b9450614763612710866000610c02565b9450600061477242600a61551a565b905061478483838a898b600087612c03565b61478f8433886128f2565b505050505092915050565b6000806000841315614a20576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147f2576147e482615749565b91506147ef81615749565b90505b60006147fd836128d6565b13156148a85761480d8683615781565b935060008212614878576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614873576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148df826128d6565b13156149ed576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546149188783615781565b614922919061583d565b92506000811261498d576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614988576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614a19565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614988576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614a19565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a53565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a935750600090506003614a53565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ae7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614b1057600060019250925050614a53565b9660009650945050505050565b60008060408385031215614b3057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610eb957600080fd5b8035614b5f81614b3f565b919050565b60008060408385031215614b7757600080fd5b8235614b8281614b3f565b91506020830135614b9281614b3f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614bf057614bf0614b9d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c1f57614c1f614b9d565b604052919050565b600067ffffffffffffffff821115614c4157614c41614b9d565b5060051b60200190565b600082601f830112614c5c57600080fd5b81356020614c71614c6c83614c27565b614bf6565b82815260059290921b84018101918181019086841115614c9057600080fd5b8286015b84811015614cb4578035614ca781614b3f565b8352918301918301614c94565b509695505050505050565b600060208284031215614cd157600080fd5b813567ffffffffffffffff811115614ce857600080fd5b614cf484828501614c4b565b949350505050565b600081518084526020808501945080840160005b83811015614d355781516001600160a01b031687529582019590820190600101614d10565b509495945050505050565b60208152600061084f6020830184614cfc565b600080600060608486031215614d6857600080fd5b8335614d7381614b3f565b92506020840135614d8381614b3f565b929592945050506040919091013590565b600082601f830112614da557600080fd5b813567ffffffffffffffff811115614dbf57614dbf614b9d565b614dd26020601f19601f84011601614bf6565b818152846020838601011115614de757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614e1c57600080fd5b853594506020860135614e2e81614b3f565b93506040860135925060608601359150608086013567ffffffffffffffff811115614e5857600080fd5b614e6488828901614d94565b9150509295509295909350565b60008060008060808587031215614e8757600080fd5b84359350602085013567ffffffffffffffff811115614ea557600080fd5b614eb187828801614c4b565b949794965050505060408301359260600135919050565b600060208284031215614eda57600080fd5b813567ffffffffffffffff811115614ef157600080fd5b614cf484828501614d94565b8015158114610eb957600080fd5b600080600060608486031215614f2057600080fd5b83359250602084013591506040840135614f3981614efd565b809150509250925092565b60008060408385031215614f5757600080fd5b82359150602083013567ffffffffffffffff811115614f7557600080fd5b614f8185828601614c4b565b9150509250929050565b600080600080600060a08688031215614fa357600080fd5b8535614fae81614b3f565b94506020860135614fbe81614b3f565b9350604086013567ffffffffffffffff811115614fda57600080fd5b614fe688828901614c4b565b935050606086013591506080860135614ffe81614b3f565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161503d60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b61020081016150ac828861500c565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156150e457600080fd5b813561084f81614b3f565b60006080828403121561510157600080fd5b6040516080810181811067ffffffffffffffff8211171561512457615124614b9d565b604052905080823561513581614b3f565b808252506020830135602082015260408301356040820152606083013561515b81614b3f565b6060919091015292915050565b60008060008084860361024081121561518057600080fd5b853561518b81614b3f565b9450602086013561519b81614b3f565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156151cf57600080fd5b6151d7614bcc565b91506151e560408801614b54565b8252606087013560208301526151fd60808801614b54565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615278866101c087016150ef565b905092959194509250565b60008060006060848603121561529857600080fd5b83356152a381614b3f565b925060208401356152b381614b3f565b9150604084013567ffffffffffffffff8111156152cf57600080fd5b6152db86828701614c4b565b9150509250925092565b6101c081016152f4828661500c565b6101808201939093526101a00152919050565b600082601f83011261531857600080fd5b81356020615328614c6c83614c27565b82815260059290921b8401810191818101908684111561534757600080fd5b8286015b84811015614cb4578035835291830191830161534b565b6000806000806080858703121561537857600080fd5b843567ffffffffffffffff8082111561539057600080fd5b61539c88838901615307565b955060208701359150808211156153b257600080fd5b6153be88838901614c4b565b945060408701359150808211156153d457600080fd5b6153e088838901614c4b565b935060608701359150808211156153f657600080fd5b5061540387828801615307565b91505092959194509250565b60008060008060008060c0878903121561542857600080fd5b863567ffffffffffffffff81111561543f57600080fd5b61544b89828a01614c4b565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156154b5576154b5615474565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036154fc576154fc615474565b5060010190565b60008161551257615512615474565b506000190190565b6000821982111561552d5761552d615474565b500190565b600082615568577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614cf46040830184614cfc565b6000602080838503121561559957600080fd5b825167ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b80516155cf614c6c82614c27565b81815260059190911b820183019083810190878311156155ee57600080fd5b928401925b8284101561560c578351825292840192908401906155f3565b979650505050505050565b60006020828403121561562957600080fd5b815160ff8116811461084f57600080fd5b600181815b8085111561567557816000190482111561565b5761565b615474565b8085161561566857918102915b93841c939080029061563f565b509250929050565b60008261568c57506001611fd1565b8161569957506000611fd1565b81600181146156af57600281146156b9576156d5565b6001915050611fd1565b60ff8411156156ca576156ca615474565b50506001821b611fd1565b5060208310610133831016604e8410600b84101617156156f8575081810a611fd1565b615702838361563a565b806000190482111561571657615716615474565b029392505050565b600061084f838361567d565b600081600019048311821515161561574457615744615474565b500290565b60007f8000000000000000000000000000000000000000000000000000000000000000820361577a5761577a615474565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157c2576157c2615474565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157fd576157fd615474565b6000871292508782058712848416161561581957615819615474565b8785058712818416161561582f5761582f615474565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561587757615877615474565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158ab576158ab615474565b50500190565b60005b838110156158cc5781810151838201526020016158b4565b838111156158db576000848401525b50505050565b600082516158f38184602087016158b1565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526159478160e08501602087016158b1565b601f01601f19169190910160e001979650505050505050565b60006020828403121561597257600080fd5b5051919050565b60006020828403121561598b57600080fd5b815161084f81614efd565b85815284602082015260a0604082015260006159b560a0830186614cfc565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006159eb6080830186614cfc565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615a1957600080fd5b815161084f81614b3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbfa871055b908dbb65e31135b9facbd77c08dd19832eb0a6447a122bb36c2ae64736f6c634300080e0033",
|
|
1388
|
+
"deployedBytecode": "0x6080604052600436106101e75760003560e01c806362a766031161010e5780639bad44e8116100a7578063d738eba111610079578063eed8386c11610061578063eed8386c14610799578063f2fde38b146107d6578063fe8691b4146107f657005b8063d738eba114610759578063d96661ef1461077957005b80639bad44e8146106f0578063a6a3694a14610710578063aa5d448f14610723578063b18019861461074357005b80637aaa9b02116100e05780637aaa9b021461061057806381f3fdc3146106305780638da5cb5b1461065f5780639065a9af1461067d57005b806362a766031461058a5780636f151a38146105bb578063715018a6146105db578063744cfdd9146105f057005b80632926e5de1161018057806340216a831161015257806340216a83146104ff57806343d726d6146105345780635c8181211461054a5780635ff530f21461056a57005b80632926e5de1461037b5780632bd2c18d1461047457806334e3f92d146104945780633fc8cef3146104df57005b80631b153401116101b95780631b153401146102ed5780631f8c24de1461030d578063238ac9331461032d57806327af9e381461036557005b8063016eb8a8146101f0578063089afeae146102235780630d83b1e4146102aa5780630fcc40c4146102c057005b366101ee57005b005b3480156101fc57600080fd5b5061021061020b366004614b1d565b610835565b6040519081526020015b60405180910390f35b34801561022f57600080fd5b5061027b61023e366004614b64565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301546001600160a01b039283169391921684565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800161021a565b3480156102b657600080fd5b50610210600d5481565b3480156102cc57600080fd5b506102e06102db366004614cbf565b610856565b60405161021a9190614d40565b3480156102f957600080fd5b506101ee610308366004614d53565b610926565b34801561031957600080fd5b506101ee610328366004614e04565b6109e1565b34801561033957600080fd5b5060025461034d906001600160a01b031681565b6040516001600160a01b03909116815260200161021a565b34801561037157600080fd5b50610210600a5481565b34801561038757600080fd5b5061040a610396366004614b64565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e08501526101008401526101208301526101408201526101608101919091526101800161021a565b34801561048057600080fd5b5061021061048f366004614e71565b610a61565b3480156104a057600080fd5b506104cf6104af366004614ec8565b805160208183018101805160038252928201919093012091525460ff1681565b604051901515815260200161021a565b3480156104eb57600080fd5b5060045461034d906001600160a01b031681565b34801561050b57600080fd5b5061051f61051a366004614b64565b610ab6565b6040805192835260208301919091520161021a565b34801561054057600080fd5b50610210600c5481565b34801561055657600080fd5b50610210610565366004614f0b565b610c02565b34801561057657600080fd5b50610210610585366004614f44565b610c4a565b34801561059657600080fd5b506105aa6105a5366004614f8b565b610d8e565b60405161021a95949392919061509d565b3480156105c757600080fd5b506101ee6105d63660046150d2565b610e56565b3480156105e757600080fd5b506101ee610ebc565b3480156105fc57600080fd5b5061021061060b366004614f44565b610f22565b34801561061c57600080fd5b506101ee61062b366004615168565b61104c565b34801561063c57600080fd5b5061065061064b366004615283565b611308565b60405161021a939291906152e5565b34801561066b57600080fd5b506000546001600160a01b031661034d565b34801561068957600080fd5b506106d0610698366004614d53565b600960209081526000938452604080852082529284528284209052825290208054600182015460028301546003909301549192909184565b60408051948552602085019390935291830152606082015260800161021a565b3480156106fc57600080fd5b506101ee61070b366004615362565b6116d8565b6101ee61071e36600461540f565b61195a565b34801561072f57600080fd5b506101ee61073e3660046150d2565b611c8f565b34801561074f57600080fd5b50610210600b5481565b34801561076557600080fd5b506101ee610774366004614b1d565b611cf2565b34801561078557600080fd5b5060055461034d906001600160a01b031681565b3480156107a557600080fd5b506107b96107b4366004614b64565b611d57565b604080519283526001600160a01b0390911660208301520161021a565b3480156107e257600080fd5b506101ee6107f13660046150d2565b611ee6565b34801561080257600080fd5b5061051f610811366004614b64565b60066020908152600092835260408084209091529082529020805460019091015482565b600d5460009061084f906108498585611fc5565b90611fd7565b9392505050565b805160609060008167ffffffffffffffff81111561087657610876614b9d565b60405190808252806020026020018201604052801561089f578160200160208202803683370190505b5090506000825b6001811061091c57856108ba6001836154a3565b815181106108ca576108ca6154ba565b60200260200101518383815181106108e4576108e46154ba565b6001600160a01b039092166020928302919091019091015281610906816154e9565b925050808061091490615503565b9150506108a6565b5090949350505050565b6000546001600160a01b031633146109855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610990838383611fe3565b6109dc5760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c00000000000000000000604482015260640161097c565b505050565b6109e961201a565b6109f68585858585612073565b610a028585858461225f565b814210610a515760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e000000604482015260640161097c565b610a5a60018055565b5050505050565b60008080848103610a8e57610a768787610c4a565b9150610a8484836000610c02565b9150819250610aac565b610a988787610f22565b9050610aa684826001610c02565b90508092505b5050949350505050565b6000806000600a54600b5442610acc919061551a565b610ad69190615532565b6001600160a01b0380871660008181526007602081815260408084208b87168086529083528185208251610180810184528154891681526001820154818601526002820154909816888401526003810154606089015260048101546080890152600581015460a0890152600681015460c08901529384015460e08801526008840154610100880152600980850154610120890152600a850154610140890152600b909401546101608801529484529181528183209383529283528082208583529092529081205492935090919003610bbb578060200151935080606001519250610bf9565b6001600160a01b0386811660009081526009602090815260408083209389168352928152828220858352905220600281015460039091015490945092505b50509250929050565b600060018215610c2057600d54610c1990866122ce565b9050610c30565b600d54610c2d90866122da565b90505b600d54610c41906108498684611fc5565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f90610c9a908790879060040161556d565b600060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cdf9190810190615586565b905080610cf7600183516122da90919063ffffffff16565b81518110610d0757610d076154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e20300000000000000000000000000000000000606482015260840161097c565b5092915050565b610e0460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610e198c8c8c8c6122e6565b92995090945092509050610e2f8c8c8b866124d2565b9850610e3f8c8c8b8b868661251c565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb9816127b9565b50565b6000546001600160a01b03163314610f165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610f20600061286e565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610f72908790879060040161556d565b600060405180830381865afa158015610f8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fb79190810190615586565b905080600081518110610fcc57610fcc6154ba565b6020026020010151915060008211610d875760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e2030000000000000000000000000000000000000606482015260840161097c565b6000546001600160a01b031633146110a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6000826060015112156110fb5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d20300000000000000000604482015260640161097c565b6000826020015112156111505760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d203000000000000000604482015260640161097c565b836001600160a01b031681606001516001600160a01b031614806111895750826001600160a01b031681606001516001600160a01b0316145b6111d55760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2070726963696e6700000000604482015260640161097c565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a015160028085018054928f16928516929092179091556060808c015160038087019190915560808d0151600487015560a08d0151600587015560c08d0151600687015560e08d0151988601989098556101008c01516008808701919091556101208d015160098701556101408d0151600a870155610160909c0151600b909501949094559787529884528286209986529883529381902086518154908b16908a1617815591860151968201969096559484015192850192909255919091015191018054919093169116179055565b61137e60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa15801561147a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149e9190615617565b60ff1691506114b76114b183600a61571e565b85610c4a565b90506000808285608001511115611509576101208501516080860151600d546114e086836154a3565b6114ea919061572a565b6114f49190615532565b6114fe9190615532565b905060009150611552565b8460800151831115611552576101208501516080860151600d5461152d82876154a3565b611537919061572a565b6115419190615532565b61154b9190615532565b9050600191505b60008113156116cd57608085018390526101408501516101608601518361158a5761157c82615749565b915061158781615749565b90505b600082126115cd5760208701516115a18484615781565b6115ab919061583d565b6020880181905260c088015112156115c85760c087015160208801525b611629565b86602001518760a00151846115e1856128d6565b6115eb9190615781565b6115f5919061583d565b131561160a5760a08701516020880152611629565b60208701516116198484615781565b611623919061583d565b60208801525b6000811261166e5760608701516116408483615781565b61164a919061583d565b6060880181905261010088015112156116695761010087015160608801525b6116ca565b86606001518760e0015184611682846128d6565b61168c9190615781565b611696919061583d565b13156116ab5760e087015160608801526116ca565b60608701516116ba8483615781565b6116c4919061583d565b60608801525b50505b505093509350939050565b6000546001600160a01b031633146117325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b82518451146117835760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b81518351146117d45760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b80518251146118255760405162461bcd60e51b815260206004820152601760248201527f546f6b656e4d61726b65743a3a206c656e67746820213d000000000000000000604482015260640161097c565b60005b8451811015610a5a57611887838281518110611846576118466154ba565b6020026020010151858381518110611860576118606154ba565b602002602001015184848151811061187a5761187a6154ba565b60200260200101516128f2565b7fd854fbf5db341a7d003a14ee8ed089e806c8731c6aca5fb4b89095d0a230ccd08582815181106118ba576118ba6154ba565b60200260200101518583815181106118d4576118d46154ba565b60200260200101518584815181106118ee576118ee6154ba565b6020026020010151858581518110611908576119086154ba565b602002602001015160405161194094939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a180611952816154e9565b915050611828565b61196261201a565b3332146119b15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c65720000000000604482015260640161097c565b333b15611a255760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c7300000000000000000000000000000000000000000000000000000000606482015260840161097c565b82600003611a4c57611a378587610c4a565b9350611a4581856000610c02565b9350611a67565b611a568487610f22565b9450611a6481866001610c02565b94505b600086600081518110611a7c57611a7c6154ba565b6020026020010151905060008760018951611a9791906154a3565b81518110611aa757611aa76154ba565b6020908102919091018101513360009081526006835260408082206001600160a01b0387168352909352918220600101805491935089929091611aeb90849061551a565b9250508190555060006040518060400160405280611b0885612a5a565b8152602001846001600160a01b0316815250905060006040518060400160405280611b3285612a5a565b81526001600160a01b0385166020909101528251909150600303611b6157611b5c8433308c612a93565b611bd6565b883414611bd65760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f6375726174650000000000000000000000000000000000000000000000000000606482015260840161097c565b611be582828b8b8e8c8c612c03565b6000611bf285858b612eac565b9050600080611c0387878f8e613062565b91509150611c1287878f613371565b604080513381526001600160a01b038981166020830152881681830152606081018e90526080810185905260a0810184905260c0810183905290517f38f821c5ea6d48d9d87fc7acd83a6b91f7e510b1e61861bdb0e4377af272d1b49181900360e00190a150505050505050611c8760018055565b505050505050565b6000546001600160a01b03163314611ce95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b610eb981613642565b6000546001600160a01b03163314611d4c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b600a91909155600b55565b6000806000600a54600b5442611d6d919061551a565b611d779190615532565b6001600160a01b0380871660008181526009602081815260408084208b871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b9091015461016082015281519293509091158015611e865750600c54155b15611e975780608001519450611eaf565b8151600003611eaa57600c549450611eaf565b815194505b505050506001600160a01b039283166000908152600860209081526040808320948616835293905291909120600301549092911690565b6000546001600160a01b03163314611f405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097c565b6001600160a01b038116611fbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161097c565b610eb98161286e565b600061084f828461572a565b92915050565b600061084f8284615532565b60006001600160a01b03841661200557611ffd83836137a7565b50600161084f565b6120108484846128f2565b5060019392505050565b60026001540361206c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161097c565b6002600155565b60038160405161208391906158e1565b9081526040519081900360200190205460ff16156120e35760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a63657274696669636174652065787069726564604482015260640161097c565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906121a790836138c0565b6002549091506001600160a01b038083169116146122075760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c6964206365727469666963617465604482015260640161097c565b600160038360405161221991906158e1565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b03831661227c5761227733836137a7565b612287565b6122878333846128f2565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d3385858542866040516122c0969594939291906158fd565b60405180910390a150505050565b600061084f828461551a565b600061084f82846154a3565b61235c60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa15801561245a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247e9190615617565b60ff16915061249761249183600a61571e565b87610c4a565b90506000806124a68a8a610ab6565b602088018290526060880181905290925090506124c38783610835565b94505050945094509450949050565b6001600160a01b038085166000908152600860209081526040808320938716835292905290812060020154610c419061250c908590610835565b61251685856122da565b906122da565b6001600160a01b0386811660009081526008602090815260408083208985168085529083528184208251608081018452815487168152600180830154828701526002830154828601526003909201548716606082015295891685526006845282852091855292528220908101549054919283928392116125ab576125a4888260200151610835565b93506127a0565b6001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125e2908a9061551a565b10612637576001600160a01b038781166000908152600660209081526040808320938d16835292905220600181015490546125a49190612623908b9061551a565b61262d91906154a3565b8260200151610835565b600061264487600a61571e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ca9190615960565b6126d4919061572a565b6126de9190615532565b6001600160a01b038981166000908152600660209081526040808320938f168352929052206001810154905491925090829061271b908c9061551a565b612725919061551a565b101561279e576001600160a01b038089166000908152600660209081526040808320938e1683529290522054819061275e908b9061551a565b612768919061551a565b6001600160a01b03808a166000908152600660209081526040808320938f168352929052206001015461279b91906154a3565b93505b505b6127aa88856122da565b91505096509650969350505050565b6001600160a01b0381166128345760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161097c565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156128ee576128e982615749565b611fd1565b5090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161297c91906158e1565b6000604051808303816000865af19150503d80600081146129b9576040519150601f19603f3d011682016040523d82523d6000602084013e6129be565b606091505b50915091508180156129e85750805115806129e85750808060200190518101906129e89190615979565b610a5a5760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c656400000000000000000000000000000000000000606482015260840161097c565b600060036001600160a01b038316612a7457506001611fd1565b6004546001600160a01b0390811690841603611fd15750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691612b2591906158e1565b6000604051808303816000865af19150503d8060008114612b62576040519150601f19603f3d011682016040523d82523d6000602084013e612b67565b606091505b5091509150818015612b91575080511580612b91575080806020019051810190612b919190615979565b611c875760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c6564000000000000000000000000000000606482015260840161097c565b8651600303612c28576020870151600554612c2891906001600160a01b0316876138e4565b86516003148015612c3a575085516003145b8015612c44575081155b15612ce7576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed173990612c9a9088908890889030908890600401615996565b6000604051808303816000875af1158015612cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ce19190810190615586565b50612ea3565b86516003148015612cf9575085516003145b8015612d055750816001145b15612d5b576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee90612c9a9087908990889030908890600401615996565b86516003148015612d785750855160021480612d78575085516001145b8015612d845750816001145b15612dda576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a90612c9a9087908990889030908890600401615996565b865160021480612deb575086516001145b8015612df8575085516003145b8015612e045750816001145b15612ea3576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612e5a9088908890309088906004016159d2565b60006040518083038185885af1158015612e78573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612ea19190810190615586565b505b50505050505050565b6001600160a01b038084166000908152600760208181526040808420878616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b909201546101608301529081612f638686610ab6565b509050612f708482610835565b925060006040518060400160405280612f8888612a5a565b81526001600160a01b038816602090910152805190915060030361303b5782516001600160a01b0316301461303657612fc6868460000151866128f2565b82516001600160a01b03161580612fe7575082516001600160a01b03166001145b1561303657604080513381526001600160a01b03881660208201529081018590527fbac40739b0d4ca32fa2d82fc91630465ba3eddd1598da6fca393b26fb63b94539060600160405180910390a15b613058565b82516001600160a01b031630146130585782516130589085613a4c565b5050509392505050565b6001600160a01b03808516600090815260086020908152604080832087851684528252808320815160808101835281548616815260018201549381019390935260028101549183019190915260030154909216606083015290819081806130cb89898989613b2f565b3360009081526006602090815260408083206001600160a01b038f16845290915290206001810154905493995091945092501161311757613110868460200151610835565b9450613252565b3360009081526006602090815260408083206001600160a01b038c16845290915290206001810154905461314c90889061551a565b1061319f573360009081526006602090815260408083206001600160a01b038c168452909152902060018101549054613110919061318b90899061551a565b61319591906154a3565b8460200151610835565b60006131ac82600a61571e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038d16906370a0823190602401602060405180830381865afa15801561320b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322f9190615960565b613239919061572a565b6132439190615532565b9050613250898883613f25565b505b61325c86866122da565b9350841561332057613273888460000151876128f2565b848360200151600d5487613287919061572a565b6132919190615532565b61329b91906154a3565b3360009081526006602090815260408083206001600160a01b038d168452909152812060010180549091906132d190849061551a565b9091555050604080513381526001600160a01b038a1660208201529081018690527f88dcaca629d63d86330e97adc358b13dd0ebd703239aea96b7ea2fb331b16f4e9060600160405180910390a15b61332b8833866128f2565b3360009081526006602090815260408083206001600160a01b038c1684529091528120805486929061335e90849061551a565b9250508190555050505094509492505050565b6000600a54600b5442613384919061551a565b61338e9190615532565b6001600160a01b0380861660008181526009602081815260408084208a871680865290835281852088865283528185208251608080820185528254825260018084015483880152600280850154848801526003948501546060808601919091529a8a526007808952878b20968b529588529886902086516101808101885281548d1681529181015497820197909752978601549099169387019390935283015495850195909552600482015495840195909552600581015460a0840152600681015460c08401529283015460e08301526008830154610100830152820154610120820152600a820154610140820152600b909101546101608201528151929350909115801561349d5750600c54155b156134fd576080810180516001600160a01b038089166000818152600960208181526040808420958d168085529582528084208b855282528084209690965595519382528552838120918152908452828120878252909352912055613557565b815160000361355757600c546001600160a01b038088166000818152600960208181526040808420958c168085529582528084208a8552825280842087905594835290815283822092825291825282812087825290915220555b600061356487878761408e565b6001600160a01b038089166000908152600960209081526040808320938b168352928152828220888352905220549091506135a28888848489614281565b50506001600160a01b038881166000818152600960208181526040808420958d168085529582528084208b855282528084206001908101899055958452918152818320938352928352808220898352835290819020909201849055600c84905581518781529081018490527fb9362b96e28efbb7a7e63bb4a97faf9924ec0394635feff8588a6ae2a5f784fe910160405180910390a15050505050505050565b6001600160a01b0381166136be5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c9190615a07565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b804710156137f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161097c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613844576040519150601f19603f3d011682016040523d82523d6000602084013e613849565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161097c565b60008060006138cf8585614500565b915091506138dc81614545565b509392505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161396e91906158e1565b6000604051808303816000865af19150503d80600081146139ab576040519150601f19603f3d011682016040523d82523d6000602084013e6139b0565b606091505b50915091508180156139da5750805115806139da5750808060200190518101906139da9190615979565b610a5a5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c6564000000000000000000000000000000000000000000606482015260840161097c565b604080516000808252602082019092526001600160a01b038416908390604051613a7691906158e1565b60006040518083038185875af1925050503d8060008114613ab3576040519150601f19603f3d011682016040523d82523d6000602084013e613ab8565b606091505b50509050806109dc5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c6564000000000000000000000000606482015260840161097c565b6001600160a01b038085166000908152600760208181526040808420888616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e082015260088301546101008201526009830154610120820152600a830154610140820152600b9092015461016083015290819081908180613beb8a8a610ab6565b91509150613bf98782610835565b60408085015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c809190615960565b1015613cf45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e6365000000000000000000000000000000000000606482015260840161097c565b6000613d008883610835565b1115613d7957613d1e836040015133613d198a85610835565b6128f2565b7f6b053894d8fdbdcc936dd753e21291f0c48e68ef12306eb39a63a374147ba4bd338460400151613d4f8a85610835565b604080516001600160a01b0394851681529390921660208401529082015260600160405180910390a15b6001600160a01b03808b1660009081526008602090815260408083208d8516845282528083208151608081018352815486168152600182015493810193909352600281015491830182905260030154909316606082015291613ddc908a90610835565b1115613e6e576000613e03613df58a8460400151610835565b613dfe8c610856565b6146aa565b90507f340b543910b47fe717183f8972077c5d42343802898948d4dffc9cc82a4f6099338c613e368c8660400151610835565b604080516001600160a01b0394851681529284166020840152820152908e1660608201526080810183905260a00160405180910390a1505b8a6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed09190615617565b60ff169450613ee9613ee386600a61571e565b8a610c4a565b95506000613ef78985610835565b9050613f14613f0a8a8460400151610835565b6125168b846122da565b975050505050509450945094915050565b3360009081526006602090815260408083206001600160a01b03871684529091529020600181015490548290613f5c90859061551a565b613f66919061551a565b10156109dc573360009081526006602090815260408083206001600160a01b03871684529091528120548290613f9d90859061551a565b613fa7919061551a565b3360009081526006602090815260408083206001600160a01b0389168452909152902060010154613fd891906154a3565b90508015614019573360009081526006602090815260408083206001600160a01b03881684529091528120805483929061401390849061551a565b90915550505b3360008181526006602090815260408083206001600160a01b03891680855290835292819020600181015490548251958652928501939093528301849052606083019190915260808201527f4e7e2735528d8c3e943fd545526d432a6f178a48e5e201186f897a1a865336539060a0016122c0565b6001600160a01b03808416600081815260086020908152604080832087861684528252808320815160808101835281548716815260018201549381019390935260028101549183019190915260030154909316606084018190529092918391900361417857846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015614131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141559190615617565b60ff16905061417161416882600a61571e565b61058586610856565b9250614278565b81606001516001600160a01b0316856001600160a01b03160361420a57856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f79190615617565b60ff1690506141716114b182600a61571e565b60405162461bcd60e51b815260206004820152602760248201527f546f6b656e4d61726b65743a3a496c6c6567616c2076616c756174696f6e206360448201527f757272656e637900000000000000000000000000000000000000000000000000606482015260840161097c565b50509392505050565b6001600160a01b038086166000908152600760208181526040808420898616855282528084208151610180810183528154871681526001820154938101939093526002810154909516908201526003840154606082015260048401546080820152600584015460a0820152600684015460c08201529083015460e0820152600883015461010082015260098301546101208201819052600a840154610140830152600b90930154610160820152909182919061437f5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e2030000000604482015260640161097c565b600085116143cf5760405162461bcd60e51b815260206004820152601560248201527f546f6b656e4d61726b65743a3a6f70656e203e20300000000000000000000000604482015260640161097c565b8585111561441557610120810151600d5486906143ec89836154a3565b6143f6919061572a565b6144009190615532565b61440a9190615532565b925060009150614457565b8486111561445757610120810151600d548690614432828a6154a3565b61443c919061572a565b6144469190615532565b6144509190615532565b9250600191505b6000806144668a8a878761479a565b6001600160a01b038c81166000908152600960209081526040808320938f1683529281528282208b83529052206002810183905560030181905590925090506144b1898b878761479a565b6001600160a01b039a8b1660009081526009602090815260408083209e909d1682529c8d528b812098815297909b52989095206002810198909855505060039095019590955550929391925050565b60008082516041036145365760208301516040840151606085015160001a61452a87828585614a5c565b9450945050505061453e565b506000905060025b9250929050565b600081600481111561455957614559615a24565b036145615750565b600181600481111561457557614575615a24565b036145c25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161097c565b60028160048111156145d6576145d6615a24565b036146235760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161097c565b600381600481111561463757614637615a24565b03610eb95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161097c565b600080826000815181106146c0576146c06154ba565b60200260200101519050600083600185516146db91906154a3565b815181106146eb576146eb6154ba565b602002602001015190506000604051806040016040528061470b85612a5a565b8152602001846001600160a01b031681525090506000604051806040016040528061473585612a5a565b8152602001846001600160a01b031681525090506147538787610c4a565b9450614763612710866000610c02565b9450600061477242600a61551a565b905061478483838a898b600087612c03565b61478f8433886128f2565b505050505092915050565b6000806000841315614a20576001600160a01b038681166000908152600760209081526040808320938916835292905220600a810154600b90910154846147f2576147e482615749565b91506147ef81615749565b90505b60006147fd836128d6565b13156148a85761480d8683615781565b935060008212614878576001600160a01b038089166000908152600760209081526040808320938b1683529290522060060154841315614873576001600160a01b038089166000908152600760209081526040808320938b168352929052206006015493505b6148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493506148d4565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206001015493505b60006148df826128d6565b13156149ed576001600160a01b038089166000908152600760209081526040808320938b16835292905220600301546149188783615781565b614922919061583d565b92506000811261498d576001600160a01b038089166000908152600760209081526040808320938b1683529290522060080154831315614988576001600160a01b038089166000908152600760209081526040808320938b168352929052206008015492505b614a19565b6001600160a01b038089166000908152600760208181526040808420948c1684529390529190200154831215614988576001600160a01b038089166000908152600760208181526040808420948c16845293905291902001549250614a19565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015492505b5050614a53565b50506001600160a01b03848116600090815260076020908152604080832093871683529290522060018101546003909101545b94509492505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614a935750600090506003614a53565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ae7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614b1057600060019250925050614a53565b9660009650945050505050565b60008060408385031215614b3057600080fd5b50508035926020909101359150565b6001600160a01b0381168114610eb957600080fd5b8035614b5f81614b3f565b919050565b60008060408385031215614b7757600080fd5b8235614b8281614b3f565b91506020830135614b9281614b3f565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715614bf057614bf0614b9d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c1f57614c1f614b9d565b604052919050565b600067ffffffffffffffff821115614c4157614c41614b9d565b5060051b60200190565b600082601f830112614c5c57600080fd5b81356020614c71614c6c83614c27565b614bf6565b82815260059290921b84018101918181019086841115614c9057600080fd5b8286015b84811015614cb4578035614ca781614b3f565b8352918301918301614c94565b509695505050505050565b600060208284031215614cd157600080fd5b813567ffffffffffffffff811115614ce857600080fd5b614cf484828501614c4b565b949350505050565b600081518084526020808501945080840160005b83811015614d355781516001600160a01b031687529582019590820190600101614d10565b509495945050505050565b60208152600061084f6020830184614cfc565b600080600060608486031215614d6857600080fd5b8335614d7381614b3f565b92506020840135614d8381614b3f565b929592945050506040919091013590565b600082601f830112614da557600080fd5b813567ffffffffffffffff811115614dbf57614dbf614b9d565b614dd26020601f19601f84011601614bf6565b818152846020838601011115614de757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614e1c57600080fd5b853594506020860135614e2e81614b3f565b93506040860135925060608601359150608086013567ffffffffffffffff811115614e5857600080fd5b614e6488828901614d94565b9150509295509295909350565b60008060008060808587031215614e8757600080fd5b84359350602085013567ffffffffffffffff811115614ea557600080fd5b614eb187828801614c4b565b949794965050505060408301359260600135919050565b600060208284031215614eda57600080fd5b813567ffffffffffffffff811115614ef157600080fd5b614cf484828501614d94565b8015158114610eb957600080fd5b600080600060608486031215614f2057600080fd5b83359250602084013591506040840135614f3981614efd565b809150509250925092565b60008060408385031215614f5757600080fd5b82359150602083013567ffffffffffffffff811115614f7557600080fd5b614f8185828601614c4b565b9150509250929050565b600080600080600060a08688031215614fa357600080fd5b8535614fae81614b3f565b94506020860135614fbe81614b3f565b9350604086013567ffffffffffffffff811115614fda57600080fd5b614fe688828901614c4b565b935050606086013591506080860135614ffe81614b3f565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161503d60408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b61020081016150ac828861500c565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000602082840312156150e457600080fd5b813561084f81614b3f565b60006080828403121561510157600080fd5b6040516080810181811067ffffffffffffffff8211171561512457615124614b9d565b604052905080823561513581614b3f565b808252506020830135602082015260408301356040820152606083013561515b81614b3f565b6060919091015292915050565b60008060008084860361024081121561518057600080fd5b853561518b81614b3f565b9450602086013561519b81614b3f565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082018113156151cf57600080fd5b6151d7614bcc565b91506151e560408801614b54565b8252606087013560208301526151fd60808801614b54565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050615278866101c087016150ef565b905092959194509250565b60008060006060848603121561529857600080fd5b83356152a381614b3f565b925060208401356152b381614b3f565b9150604084013567ffffffffffffffff8111156152cf57600080fd5b6152db86828701614c4b565b9150509250925092565b6101c081016152f4828661500c565b6101808201939093526101a00152919050565b600082601f83011261531857600080fd5b81356020615328614c6c83614c27565b82815260059290921b8401810191818101908684111561534757600080fd5b8286015b84811015614cb4578035835291830191830161534b565b6000806000806080858703121561537857600080fd5b843567ffffffffffffffff8082111561539057600080fd5b61539c88838901615307565b955060208701359150808211156153b257600080fd5b6153be88838901614c4b565b945060408701359150808211156153d457600080fd5b6153e088838901614c4b565b935060608701359150808211156153f657600080fd5b5061540387828801615307565b91505092959194509250565b60008060008060008060c0878903121561542857600080fd5b863567ffffffffffffffff81111561543f57600080fd5b61544b89828a01614c4b565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156154b5576154b5615474565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036154fc576154fc615474565b5060010190565b60008161551257615512615474565b506000190190565b6000821982111561552d5761552d615474565b500190565b600082615568577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b828152604060208201526000614cf46040830184614cfc565b6000602080838503121561559957600080fd5b825167ffffffffffffffff8111156155b057600080fd5b8301601f810185136155c157600080fd5b80516155cf614c6c82614c27565b81815260059190911b820183019083810190878311156155ee57600080fd5b928401925b8284101561560c578351825292840192908401906155f3565b979650505050505050565b60006020828403121561562957600080fd5b815160ff8116811461084f57600080fd5b600181815b8085111561567557816000190482111561565b5761565b615474565b8085161561566857918102915b93841c939080029061563f565b509250929050565b60008261568c57506001611fd1565b8161569957506000611fd1565b81600181146156af57600281146156b9576156d5565b6001915050611fd1565b60ff8411156156ca576156ca615474565b50506001821b611fd1565b5060208310610133831016604e8410600b84101617156156f8575081810a611fd1565b615702838361563a565b806000190482111561571657615716615474565b029392505050565b600061084f838361567d565b600081600019048311821515161561574457615744615474565b500290565b60007f8000000000000000000000000000000000000000000000000000000000000000820361577a5761577a615474565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157c2576157c2615474565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157fd576157fd615474565b6000871292508782058712848416161561581957615819615474565b8785058712818416161561582f5761582f615474565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561587757615877615474565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158ab576158ab615474565b50500190565b60005b838110156158cc5781810151838201526020016158b4565b838111156158db576000848401525b50505050565b600082516158f38184602087016158b1565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526159478160e08501602087016158b1565b601f01601f19169190910160e001979650505050505050565b60006020828403121561597257600080fd5b5051919050565b60006020828403121561598b57600080fd5b815161084f81614efd565b85815284602082015260a0604082015260006159b560a0830186614cfc565b6001600160a01b0394909416606083015250608001529392505050565b8481526080602082015260006159eb6080830186614cfc565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215615a1957600080fd5b815161084f81614b3f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dbfa871055b908dbb65e31135b9facbd77c08dd19832eb0a6447a122bb36c2ae64736f6c634300080e0033",
|
|
1251
1389
|
"linkReferences": {},
|
|
1252
1390
|
"deployedLinkReferences": {}
|
|
1253
1391
|
}
|
package/src/agent-swap.js
CHANGED
|
@@ -73,6 +73,38 @@ class AgentSwap extends HI {
|
|
|
73
73
|
return result
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
/*
|
|
77
|
+
|
|
78
|
+
[
|
|
79
|
+
{
|
|
80
|
+
id:1,
|
|
81
|
+
wallet:"",
|
|
82
|
+
token:"",
|
|
83
|
+
amount:""
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
|
|
87
|
+
*/
|
|
88
|
+
async batchTransfer(list = []) {
|
|
89
|
+
let params = [
|
|
90
|
+
[],
|
|
91
|
+
[],
|
|
92
|
+
[],
|
|
93
|
+
[]
|
|
94
|
+
]
|
|
95
|
+
for(let i = 0;i < list.length;i++) {
|
|
96
|
+
let token = new HERC20({ ...this.network, contract: list[i].token })
|
|
97
|
+
let amount = await token.toAmount(list[i].amount)
|
|
98
|
+
params[0].push(list[i].id)
|
|
99
|
+
params[1].push(list[i].wallet)
|
|
100
|
+
params[2].push(list[i].token)
|
|
101
|
+
params[3].push(amount)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let result = await this.manage("batchTransfer", params)
|
|
105
|
+
return result
|
|
106
|
+
}
|
|
107
|
+
|
|
76
108
|
|
|
77
109
|
async tokenSend({ token, amount, recipient }) {
|
|
78
110
|
let inToken = new HERC20({ ...this.network, contract: token })
|
|
@@ -191,6 +223,14 @@ class AgentSwap extends HI {
|
|
|
191
223
|
}
|
|
192
224
|
|
|
193
225
|
|
|
226
|
+
async calibration({ tokenIn,tokenOut }) {
|
|
227
|
+
let result = await this.SC.methods.calibration(tokenIn,tokenOut).call()
|
|
228
|
+
let symbol = new HERC20({ ...this.network, contract: result.pricing })
|
|
229
|
+
result.open = await symbol.fromAmount(result.open)
|
|
230
|
+
return result
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
|
|
194
234
|
|
|
195
235
|
|
|
196
236
|
async approve({ token,amount }) {
|