More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60c06040 | 10593719 | 1559 days ago | IN | 0 ETH | 0.27239714 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion, GNU GPLv2 license, Audited
Contract Source Code (Solidity)Audit Report
/** *Submitted for verification at Etherscan.io on 2020-08-04 */ // SPDX-License-Identifier: agpl-3.0 pragma solidity ^0.6.12; pragma experimental ABIEncoderV2; library SafeMath { function mul(uint a, uint b) internal pure returns (uint) { uint c = a * b; require(a == 0 || c / a == b); return c; } function div(uint a, uint b) internal pure returns (uint) { require(b > 0); uint c = a / b; require(a == b * c + a % b); return c; } function sub(uint a, uint b) internal pure returns (uint) { require(b <= a); return a - b; } function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a); return c; } function max64(uint64 a, uint64 b) internal pure returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal pure returns (uint64) { return a < b ? a : b; } function max256(uint a, uint b) internal pure returns (uint) { return a >= b ? a : b; } function min256(uint a, uint b) internal pure returns (uint) { return a < b ? a : b; } } // NOTE: this interface lacks return values for transfer/transferFrom/approve on purpose, // as we use the SafeERC20 library to check the return value interface GeneralERC20 { function transfer(address to, uint256 amount) external; function transferFrom(address from, address to, uint256 amount) external; function approve(address spender, uint256 amount) external; function balanceOf(address spender) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); } library SafeERC20 { function checkSuccess() private pure returns (bool) { uint256 returnValue = 0; assembly { // check number of bytes returned from last function call switch returndatasize() // no bytes returned: assume success case 0x0 { returnValue := 1 } // 32 bytes returned: check if non-zero case 0x20 { // copy 32 bytes into scratch space returndatacopy(0x0, 0x0, 0x20) // load those bytes into returnValue returnValue := mload(0x0) } // not sure what was returned: don't mark as success default { } } return returnValue != 0; } function transfer(address token, address to, uint256 amount) internal { GeneralERC20(token).transfer(to, amount); require(checkSuccess()); } function transferFrom(address token, address from, address to, uint256 amount) internal { GeneralERC20(token).transferFrom(from, to, amount); require(checkSuccess()); } function approve(address token, address spender, uint256 amount) internal { GeneralERC20(token).approve(spender, amount); require(checkSuccess()); } } // AIP: https://github.com/AdExNetwork/aips/issues/18 // Quick overview: // - it's divided into pools, each pool may represent a validator; it may represent something else too (for example, we may launch staking for publishers to prove their legitimacy) // - the slasherAddr will be a multisig that will be controlled by the AdEx team - and later full control of the multisig will be given to a bridge to Polkadot, where we'll run the full on-chain slashing mechanism // - we will clearly communicate this migration path to our community and stakers // - reward distribution is off-chain: depending on the pool, it may be done either via OUTPACE, via the Polkadot parachain, or via an auxilary contract that implements round-based reward distribution (you check into each round, the SC confirms you have a bond on Staking.sol, and you can withdraw your pro-rata earnings for the round) // - each bond will be slashed relative to the time it bonded/unbonded; e.g. if the pool is slashed 12%, you bonded, then the pool was slashed 2%, then you unbonded, you'd only suffer a 2% slash library BondLibrary { struct Bond { uint amount; bytes32 poolId; uint nonce; } function hash(Bond memory bond, address sender) internal view returns (bytes32) { return keccak256(abi.encode( address(this), sender, bond.amount, bond.poolId, bond.nonce )); } } contract Staking { using SafeMath for uint; using BondLibrary for BondLibrary.Bond; // This fits in a storage slot so we can only use one when saving bond state struct BondState { bool active; // Data type must be larger than MAX_SLASH (2**64 > 10**18) uint64 slashedAtStart; uint64 willUnlock; } // Events event LogSlash(bytes32 indexed poolId, uint newSlashPts, uint time); event LogBond(address indexed owner, uint amount, bytes32 poolId, uint nonce, uint64 slashedAtStart, uint time); event LogUnbondRequested(address indexed owner, bytes32 indexed bondId, uint64 willUnlock, uint time); event LogUnbonded(address indexed owner, bytes32 indexed bondId, uint time); // could be 2**64 too, since we use uint64 uint constant MAX_SLASH = 10 ** 18; uint constant TIME_TO_UNBOND = 30 days; // A non-0x00 address since some ERC20 tokens do not allow sending to 0x00; although we intend to only use this contract with ADX address constant BURN_ADDR = address(0xaDbeEF0000000000000000000000000000000000); address public immutable tokenAddr; address public immutable slasherAddr; // Addressed by poolId mapping (bytes32 => uint) public slashPoints; // Addressed by bondId mapping (bytes32 => BondState) public bonds; constructor(address token, address slasher) public { tokenAddr = token; slasherAddr = slasher; // Tokens to be released early: 69141.8586 // more specifically: // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x5DCB3152072D13dBAaBD68eD85d6192Ca543b04E, 57400000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0xB5c9F8fA537aa674ece4ceb4acb870fd828FD18A, 17132137); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0xB4fA71df2a11d1C3273aDeF06c3F3d0238426301, 163800000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x452d245458e1d58eC64EaD6f36c67C8194b01ACd, 5996000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0xD6EAff0C0Ec0b74f3C753484A6a611FA20B84c72, 113960000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x98725bEA9CaF118e3E31a0fE480B887f81f45BD7, 38210000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x007cBb01a3DD8833Cc5e9e36C49E5Ad343C8F7bc, 130382200); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0xF25ee6b1712A4d3059154703f8F29c4ece479280, 46604399); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x1b22bc5F3e381D2d5Cc51E758af69882CCE1dB9d, 3000000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x75C242995575c786224CE5eF3D9aBFF8b643B62e, 1479000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x6d5f7bEca81976fa363FFAa6D65171D66B5deE65, 1000000); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x6d328B8De10FD9bC0801d396377a6ddd784141Fa, 1358500); // SafeERC20.transfer(0x4470BB87d77b963A013DB939BE332f927f2b992e, 0x3837E2c3Ba88D3706FAb9337B4337a8D0BaEb06c, 111096350); // Total migrated ADX: 5588077005500000000000000 // New staking addr: 0x4846C6837ec670Bbd1f5b485471c8f64ECB9c534 // Bond migration code emit LogBond(0x3893336290926E85aA599F3B5011FA0C07A36b60, 51700080100000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x285Fe4896dCbBd4822a161e99Ac5f41064c3fE27, 149337000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x5B99F191eBa9991AE962257857DE0FF2d3688641, 4710112000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x470578b54b7F95F20380CceF6e64660AF8767645, 1000000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x98565dbFfCD163Fda0C96F972A0C39E9Da161556, 7293059000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x77064b858CF5404C0925C3f6ef76fcdB31B5c0DA, 70000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x0D009696AFA341EdE5c9a1a153000f716e307960, 408295800000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x0935B8fA07f3cEa559065190b0C914ceb0406149, 3822614600000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1a98fF6264E9c1f43b7Eb3b4f8b598013436581A, 4868141300000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x7C471E86cCeD361006376C7c0b0512618b7A7602, 1143000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x9f5ae1592016b05d1a3F8F574AB45eC70a26713E, 1188450000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xe861b6F09dcC93b6bfD5c63e4c55bA909a2Ca52b, 33432000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xBEFf95759FcFbbf66e94658B5f41284b04C07dF8, 14943206000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x27Ff7568440af1257E4c60CFd1e7b4cfe4B2622C, 492700000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x332125E6aCE5cAE8f7DB8aeb081CE0F56f29ffeC, 4373000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x549fBe697ad578BA4ebD2E6bFc434Fa763750747, 90560000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xf381a9F34FCae0fd465B129B856Fea9A8D2ef62d, 7515394200000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x208c5DDE4c1e225E00FA8feA2d808e09E0D0b1d1, 1840110200000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x3c736beA72d7dbE4D73cf1b694464bF45415Cc33, 1647500000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x32Ea173fC904c0AC52Ce3b753244B1c084Be472f, 1215156800000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xe1190a96Db56E6e339124f31bFE8cFD88f6D4076, 1032612000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x2A203Ed9d6CEbdC1505D321b8bb99E71909546F6, 650100000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xC91fd5f8a16009E58735bfA691cd828E9a98a13e, 3082005000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1936F3a3157c5C4D65A6C1E6e6A8F72811022425, 1198493700000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x7b243fD0e10f2660E23e687C0C479AAeeeE0DA7d, 480386600000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x540c14D6519c0f7491487a3C982859f7ab230b58, 277631700000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1845670761CC7898ee1b5594312bBCb3e320E666, 100015000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xCe8B12435D4ECf7959dEb0280F3298A35C0E3F04, 11147460600000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xd77DA8280918Aeb8fCeEf134e844DD68A69063cC, 337190000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x89467096D84AfEB388233cC435a0507cF10ec3cC, 265392600000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x720582196660646AcDD1a2cEd07EBdD84e89868c, 233000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xcB7Fb34e78D124Bde8d89cF2F084810CF783F6fA, 331700000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x3692E531473ed4858ae0fA9B7c7ACa4EAAA89041, 20000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x4Bad56175B944836F09D7B5e8E1de16edb9c2b7C, 49990000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xBA0fC6279427475d15498dbd84E8c4030b9dB75C, 5182000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xad1691a7eE0c7191f56CBe9F95DF69fa110e0343, 35000000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x79FA9DD20f4C37ADfe5fF39A9379AACC94aF3a74, 6235000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x4047f69eE65626a5dcE52e55f0b486Ab663f0C6e, 500000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xA53e1F41489921140dd9CA69615b527Ec3E13Ef7, 40000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1411e896916E9a859Ae60d6DfaBDDDa79f41b61C, 3053050600000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x7F7df742Add41A6aAc9889dF061c42e5Bae9B893, 300000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x3E8fdD007e03019b6173571aA5c85A787E49350F, 993000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xedCF11b5E45Aa7f2b858c370683b81306DfE203A, 6824000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x270CF33c0018eaC22d0E31b13899EF04F88efBc8, 143000000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xB1519c07A4EeC38B463AB2bDD5975e65bd48d769, 193000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x2cEB2f3c30B75fd47af9BDbd344b6741F116873C, 883227500000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xC4a49bBA306C95042ABb2BcAEb3DD5EE99d9fb5b, 4085000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x31E24914a9b29769220FDb8a50b41602D6b7122F, 493000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x42162Fd6dDa5CF66D858E78a1096aa2e711d8505, 4680000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x60fC4e5371b6f7014cF8C9b7778F0e0862a3Ebc2, 100980000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x88e03652A1388fBc52462a6c418AA2be77E14a2a, 1600000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x39c7f73Fa4E9e22A291d85AF7b1b186879572137, 2138862900000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xFB6945388f758DeEB2f03dEFf8B6d8cB7f17fF62, 315000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x11248f883Ef18E9Ff32Bb2bEDD233e0D1Ef4175b, 2730000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xe839F31295806D296ECcB790Df7F4aa3E3102cCd, 25047664400000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xEaAe14Bb884D860d7124b5e1Ae5a68eFcb308233, 103002501000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1961c17E49f37515829469167D20BeD234D38794, 4079783000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x1C6C9a16a4F05781680bAD7637EAc78416544BaB, 9846133000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x7dA2f436F25006C93B80c78759C0fDcc949f0b8e, 712000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x91c6A6E1aFD0C8bf87FF5eA7423BE766D2b2c263, 493000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x4c390f68cE3015acdf51C6eC0cDD31Fe75eC251F, 393000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xbc8d5A8CCBd054FcE3cea8a8F91c2b7dC078CDC5, 13082760000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xDE8f23b0803De267bb0ACBEe5c6d410bD601853d, 10009308800000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x168cc6Fa6a1a705c657C4844ce4E01e97F1e6Fc7, 12000026300000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xeaFbe005aDF3CFD3b092FbE632FF6753516C692D, 16087500000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x93B85901268868ac74B94e750708463bea5296dF, 4680000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xd5D1A515e128b724F28c47b33EeD64F45603f366, 1499990000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x3C3aCb3Fdba4353d267fD7F75440f43A80330c02, 10291000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x86efD89f845E963a6Ab1334C0a8c9Cb00496eC20, 4993000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xDAbf8F8cBBaBaD2553A1d739759b5e22479ED874, 622999100000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xFcB8C538802C166C358687D3A8aC4CAebd058c19, 40582759200000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x6D44Fa2E022a0A36F8534dB4343279D97a646b93, 993000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x85584757219bF801b9d10dD0f22B2aC202dD38Fa, 1107900500000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x8e8E22Bf5A604CB47A58fea3C8C7ae9a5BF3793C, 593030000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0xD93cd8D2127C4981877607eC826204cEaB1168bf, 33000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x69e7B7F2e6FB08D4d25c3b4b0C2047e634eEf30f, 11363000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x9dB1D89836a68F342d76E232ebBeAcf7A084ECb3, 14715867000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); emit LogBond(0x649d5a84A384b2367b4667600250B67CE5E9808D, 1287000000000000000000, 0x2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28, 0, 0, 1596548498); bonds[0x6a7d9487f5488c4b1972e24f2be9d335c9a60ac8d2bae0aa3817aea8b9843857] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x55fb6b0dbafd5648034eec2c6c8d164bc1de360a11a91074c2244d0c6b96afc3] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x3e2f29f8ef72398f0b1d85522329cbe8cbd9f27832aedbc6a6da91a7e625a0ad] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xba2a5915c7ec2bf9f2d3880020d8094efc792bdb8e97dbcedaad0181522010c1] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x118fe75fe3296bbcccac82d34fd110e9bfe894bf45fdd836e78e75dd8b4b90cb] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xf598ca0dd263483022147409e1f07d3bcbf5f67b5c76e4d6fbcdf5ad04bdb2f2] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xf089fff24913784cf7cd26f9e289afd7afbdc8de5a428bb8dd027f6039440cc0] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x74ec2b1999212c994d6d403292b26ecf6b8bbe35633701868be764389548b503] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x23653a2d01844fb12c0af0f5a88ac2d879160987182267a38ad197c85732a6e5] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xc790afb60acac86c1b25370a86bf18b3af73113bc92bab2d8cbacb7a23ecfc82] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xe3375dbef73230f597b7351ab8adc470cbae916fa757e21441b7ad130f04df48] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xdc8463a850d15d94fe9fd5b0afa53141e7a31e3fd1ca8411e779540e0f503b94] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xdc7ecd0eb72915bcb82c5d5b5a5482e7888f3dad4d6f4ea1eeaf2e2dbf508b1f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x23552be7e3dc13cc8d44f609a35e0a1f5d519991cdb0f7e79495f3033214ddcb] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xd59ed9d22804b0666ae47694f8a04bfaf8a8ac813235feaa95fb3a7d8bb1fe4c] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x011d50bf918148cf1b98331bd1b7ca7fbddce4f6b8a76e4ccf4c33b30824eb61] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x0392bc4700a5264466cb628f8d742ec57df72394bdbc535c6dd8cf11ad343b5d] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x3ac8c30df75257f9f2207a72ad949cdf3f130d4b1299cb6cfbabe5734fa17578] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x2e845d41bcc3d7ba62367b7de6d15f527c39f90bf7ff9214e9aac0c830782cc8] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x120698f531bc39cb98155f95c6b19471cc8bd7ff457d4898d9b391b146610392] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x9de14e963a3c3254bb12d1b32e99f10022e4cc9f1e3b8dad209ed8addb4a218d] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfd7a5ca1d1ad00470e326ff94a61fd6c9af4faa58c8edaa86845973db96929ed] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xa6be5081d96d731dc707e8b45a082ef29ea455adadc7db086f745c33b8fa3622] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x0e0ae75b72a2bc1931f0b7aa6e13b504f4813bf1b068f4dae39bbf4357473904] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xce7b825f8151b92f411fa3ac553c1b4d73eac7f0d86da7ea64db75b83fc88763] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x33fda240debf4335cffa698fd64ee1da3119cc466f2a74108bc3461c5c81aac8] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xa2a93d3bebff5fbd48d89bbcf00964155ebe4fa1296527624a6ab9645cfe362a] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x6ee1223e91c6f5ac06a8add79d391db7fb34a872812b121f880c26cfd9a32334] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x3d090800eaa66cb2869ded7da9ab74ad63b72724ec5021662aa08e4e0214a740] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x4466220fb150c6ad8412ea8866c3b87bb498bf4032b5f7558cb9e42e8f6df0d8] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x75cbe02bd749d5ea78a2cdc5095a5ecb1cf24e3e5b148c965cbb9e1036606b7f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x434077499877a9fcf7bb16f14c2d92714bc18a51a7f2efda1846431f4a45e686] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x72769587fee6579cacf8e8545b5cac29e63910fe76633c729bde1b3b753c98d7] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xd51dfec7d7e9de5ee7f66c5e1002a9caa711881b06614adfba4405cc78de53fa] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfc03508462e6f68e3118b1a0efa1b35bb0c300422382dc2bfb43588319c1d1ee] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x3e3ef739d1ee4a2ab28603d5ebcccbee939ddf5e0377360352f1c025d7ac417c] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xe7ca34cabc4b07c519cee31f571fdde836d5ae4c230bf6fc47b5de52219bcd93] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x65d3d696e96131618cdae5ae6fc00de596f8575809c5170365fbe154ded09299] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x9f8f964397b3b3d907e0f9f4576fa7c81006cc331a871f5ebcffa1b01be085b5] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xcf691332554fe4394d3d8537ae03a76035808afd5b9601b023788b82f5986234] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x80b0c7e1929e7dea450fa2cce0f325988b380b71f39db48a7fe79730b478bc3b] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xed130cb9e98fcab5a45ed371d39ed7d73bc0e087259669f8be72afe3ef86fe73] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x737e5c4c12ba13bf20847fa74086f0469ed78d488852c64b6735fd8182cd96dc] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xc8ca855b940dd167c2c9eeebcd5f9ccb966f9ea21bb3278aec91cf67b63cc49e] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xcf47c56376b42d319fbc096f64113956eb957df4c84ecfa3a74bdec81a104616] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfa211d0019e0885373350d1e8d8520f3d1f8c5d754d8d9c858cbbc3cd71b03cb] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfae897dba68d824ffef031def855b4c684ea8ade957379d7679e82f30a0827d7] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x7721797563d26469df854f10e6c65b638e72c7ea770614c6ae77a1eabd4b8474] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x543a1f80a470a14d27c7b26339aae2ad4e9985f0283371cc599d6621c68d5a3c] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x373ace2e17c127e9764de6cf34f34fb3609b9e361bf32989b869244997e34c69] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xbe5be1f0756514313cf5cf90c2810a3043c3251e57115a6dd8f81de2670b189a] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xe1a1339897aec6e66b89003e9ede86460239b6e33a44965360890555e7d3d081] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x1ce35f5ab2012ed0710175663e57995bf937d38092b9b8e6603d7cabb86c3e5a] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xeae1869b532f6e8b161437bdaa8c9ebb3480a1ffcc6dfab28143ce1c57f6eb50] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xb2fac8e3bf25cc1aa98674e9965923670cd3ad17f69f6c9215f2fe77e7bd2e96] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xc688445efc91d629f0af4be1ecc96d8ed18b59bb8e84ca16a1cbe7de846071c7] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x37a637ab47df2715665761587f658ae04f8b5326b48275401357ddac01f7d1b4] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x235e7394316b5669a0ddfaee33d0fcd5bd35846c65a069f8f9773c3ef4736846] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x0340ad87a5a1351878aab2f32cebb1ac60baec0d474164516b183586eb30bfc2] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xa9d2c2bcbe61a7c2a93b584ea7f6cac96ff7f64e051b504c97987ce25e51c2b3] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xd704896afa1f3cb01123ce1dd52708f8d8cf819e920e63f80b0ec76fc037b91a] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x4fbcbbcfa2dce5cc50b7057e93eed2e4bb94626c0ddf5f1a4c3bdb41b955ec6b] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x6ea21b1ddcfc830e81c0674d5454a15f90baf7665fad6e12db9483595bebed85] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xc8344ecf12a5674d02e2c4bee2c0d4373a9732f45e8d9610778acd25cf54416c] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfaf1b4727429d9f67f68675047a4e4f1f904543eb943d13647cd77757fbad96f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xef39d7f9f973c35f241ca8a0897377041f9895c39ef02cd07a25c65ab914f28d] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x91eb760d2a5bb25aa456b8a9ee6c1d9ca38d08c77a2980b999f91bff401a8468] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xfe627b8a976d30a897e03057c79c4a4eed4f7b5072fc2c0255a589a26bb6882c] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xa0f592deed6ead4c3b44137ceb167927a5ec324b9abfe47602d3f734e74bac88] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xc8b78e5f6973607db88dee883e65e1c794d42990749d4761f1bd1a25b11e10be] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x20a2adf8029e27f951a74daa227149e3c3e317f1cee5b9817258c09e0a538089] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x037d4bad3cc090f2a9529a6afd1ff8032117d656333e51a4dc90b49448a9edf7] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xab0d87a8a9e91b116cb0a431326b0c41f00efab856134e40f43aed4234ea753b] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xb90d3a1a42b47fb0214e3277f6b429a7970bfec641dfebafdd3b9d4a880d0aff] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xbd8995c3014fbb334b55d458bbc23a2b3c43f3992c722dc8746c6a76acce493f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xeceded3917d2a1db497f33b3e5812b475e15175c4271b7e01b8cc6f1e82d286f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0xd3782a17328e5cfc6c50a5bd5ee4e999c70280a403cfd6432042b6186b2c0f7e] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); bonds[0x918c391aa022f6691e254498d42e13a54c9b295aa521fa7b1ed851833f49543f] = BondState({ active: true, slashedAtStart: 0, willUnlock: 0 }); // End of bond migrations } function slash(bytes32 poolId, uint pts) external { require(msg.sender == slasherAddr, 'ONLY_SLASHER'); uint newSlashPts = slashPoints[poolId].add(pts); require(newSlashPts <= MAX_SLASH, 'PTS_TOO_HIGH'); slashPoints[poolId] = newSlashPts; emit LogSlash(poolId, newSlashPts, now); } function addBond(BondLibrary.Bond memory bond) public { bytes32 id = bond.hash(msg.sender); require(!bonds[id].active, 'BOND_ALREADY_ACTIVE'); require(slashPoints[bond.poolId] < MAX_SLASH, 'POOL_SLASHED'); bonds[id] = BondState({ active: true, slashedAtStart: uint64(slashPoints[bond.poolId]), willUnlock: 0 }); SafeERC20.transferFrom(tokenAddr, msg.sender, address(this), bond.amount); emit LogBond(msg.sender, bond.amount, bond.poolId, bond.nonce, bonds[id].slashedAtStart, now); } function requestUnbond(BondLibrary.Bond memory bond) public { bytes32 id = bond.hash(msg.sender); BondState storage bondState = bonds[id]; require(bondState.active && bondState.willUnlock == 0, 'BOND_NOT_ACTIVE'); bondState.willUnlock = uint64(now + TIME_TO_UNBOND); emit LogUnbondRequested(msg.sender, id, bondState.willUnlock, now); } function unbondInternal(BondLibrary.Bond memory bond, bytes32 id, BondState storage bondState) internal { uint amount = calcWithdrawAmount(bond, bondState.slashedAtStart); uint toBurn = bond.amount - amount; delete bonds[id]; SafeERC20.transfer(tokenAddr, msg.sender, amount); if (toBurn > 0) SafeERC20.transfer(tokenAddr, BURN_ADDR, toBurn); emit LogUnbonded(msg.sender, id, now); } function unbond(BondLibrary.Bond memory bond) public { bytes32 id = bond.hash(msg.sender); BondState storage bondState = bonds[id]; require(bondState.willUnlock > 0 && now > bondState.willUnlock, 'BOND_NOT_UNLOCKED'); unbondInternal(bond, id, bondState); } function replaceBond(BondLibrary.Bond memory bond, BondLibrary.Bond memory newBond) public { bytes32 id = bond.hash(msg.sender); BondState storage bondState = bonds[id]; // We allow replacing the bond even if it's requested to be unbonded, so that you can re-bond require(bondState.active, 'BOND_NOT_ACTIVE'); require(newBond.poolId == bond.poolId, 'POOL_ID_DIFFERENT'); require(newBond.amount >= calcWithdrawAmount(bond, bondState.slashedAtStart), 'NEW_BOND_SMALLER'); unbondInternal(bond, id, bondState); addBond(newBond); } function getWithdrawAmount(address owner, BondLibrary.Bond memory bond) public view returns (uint) { BondState storage bondState = bonds[bond.hash(owner)]; if (!bondState.active) return 0; return calcWithdrawAmount(bond, bondState.slashedAtStart); } function calcWithdrawAmount(BondLibrary.Bond memory bond, uint64 slashedAtStart) internal view returns (uint) { return bond.amount .mul(MAX_SLASH.sub(slashPoints[bond.poolId])) .div(MAX_SLASH.sub(uint(slashedAtStart))); } }
Contract Security Audit
- G0 group - November 22nd, 2019 - Security Audit Report
[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"slasher","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"slashedAtStart","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogBond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"newSlashPts","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogSlash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"bytes32","name":"bondId","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"willUnlock","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogUnbondRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"bytes32","name":"bondId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"LogUnbonded","type":"event"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"bond","type":"tuple"}],"name":"addBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"bonds","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint64","name":"slashedAtStart","type":"uint64"},{"internalType":"uint64","name":"willUnlock","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"bond","type":"tuple"}],"name":"getWithdrawAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"bond","type":"tuple"},{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"newBond","type":"tuple"}],"name":"replaceBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"bond","type":"tuple"}],"name":"requestUnbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"pts","type":"uint256"}],"name":"slash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"slashPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"slasherAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"internalType":"struct BondLibrary.Bond","name":"bond","type":"tuple"}],"name":"unbond","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200b56f3803806200b56f833981810160405281019062000037919062007765565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050733893336290926e85aa599f3b5011fa0c07a36b6073ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690af2aabdc42f9dd240007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000138959493929190620092b1565b60405180910390a273285fe4896dcbbd4822a161e99ac5f41064c3fe2773ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192691f9f9332a6a9edc400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620001d3959493929190620083cc565b60405180910390a2735b99f191eba9991ae962257857de0ff2d368864173ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926a03e567aee315172f8000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200026f95949392919062008fc9565b60405180910390a273470578b54b7f95f20380ccef6e64660af876764573ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192683635c9adc5dea000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200030995949392919062007ce5565b60405180910390a27398565dbffcd163fda0c96f972a0c39e9da16155673ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269018b5b867837a59380007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620003a4959493929190620095f6565b60405180910390a27377064b858cf5404c0925c3f6ef76fcdb31b5c0da73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926803cb71f51fc55800007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200043e9594939291906200953c565b60405180910390a2730d009696afa341ede5c9a1a153000f716e30796073ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926816223e12db2bef80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620004d895949392919062008e55565b60405180910390a2730935b8fa07f3cea559065190b0c914ceb040614973ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268cf396f2d9eadec80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200057295949392919062008c84565b60405180910390a2731a98ff6264e9c1f43b7eb3b4f8b598013436581a73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690107e7082fd4fc5340007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200060d95949392919062009083565b60405180910390a2737c471e86cced361006376c7c0b0512618b7a760273ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192683df64fbc205f7c00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620006a795949392919062008087565b60405180910390a2739f5ae1592016b05d1a3f8f574ab45ec70a26713e73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268406d0e925270fd00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000741959493929190620080e4565b60405180910390a273e861b6f09dcc93b6bfd5c63e4c55ba909a2ca52b73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926801cff652dea2dc00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620007db95949392919062008b6d565b60405180910390a273beff95759fcfbbf66e94658b5f41284b04c07df873ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269032a12a45c805dd700007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200087695949392919062008429565b60405180910390a27327ff7568440af1257e4c60cfd1e7b4cfe4b2622c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681ab596079042f600007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000910959493929190620090e0565b60405180910390a273332125e6ace5cae8f7db8aeb081ce0f56f29ffec73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268ed0f90eada5f3400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620009aa95949392919062008f0f565b60405180910390a273549fbe697ad578ba4ebd2e6bfc434fa76375074773ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926804e8c5c0314b6000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000a449594939291906200970d565b60405180910390a273f381a9f34fcae0fd465b129b856fea9a8d2ef62d73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690197690bc6a28f0180007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000adf95949392919062009653565b60405180910390a273208c5dde4c1e225e00fa8fea2d808e09e0d0b1d173ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926863c0a8ad940cff80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000b79959493929190620085fa565b60405180910390a2733c736bea72d7dbe4d73cf1b694464bf45415cc3373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268594fa7c92bc00e00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000c139594939291906200859d565b60405180910390a27332ea173fc904c0ac52ce3b753244b1c084be472f73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926841dfb02f6c606400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000cad959493929190620081fb565b60405180910390a273e1190a96db56e6e339124f31bfe8cfd88f6d407673ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926837fa5ec6fcb5aa00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000d4795949392919062007f13565b60405180910390a2732a203ed9d6cebdc1505d321b8bb99e71909546f673ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268233df3299f617200007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000de195949392919062009482565b60405180910390a273c91fd5f8a16009e58735bfa691cd828e9a98a13e73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268a71369525671c880007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000e7b959493929190620089f9565b60405180910390a2731936f3a3157c5c4d65a6c1e6e6a8f7281102242573ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926840f870f6421b9440007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000f1595949392919062008141565b60405180910390a2737b243fd0e10f2660e23e687c0c479aaeeee0da7d73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681a0ab40b80b1aa80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162000faf95949392919062009026565b60405180910390a273540c14d6519c0f7491487a3c982859f7ab230b5873ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192680f0ce9f031b7d140007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001049959493929190620088e2565b60405180910390a2731845670761cc7898ee1b5594312bbcb3e320e66673ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269152dd2f295d1c55c00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620010e495949392919062007d42565b60405180910390a273ce8b12435d4ecf7959deb0280f3298a35c0e3f0473ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269025c4e17c1ec26d780007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200117f95949392919062007fcd565b60405180910390a273d77da8280918aeb8fceef134e844dd68a69063cc73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268124773867da5f700007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200121995949392919062008bca565b60405180910390a27389467096d84afeb388233cc435a0507cf10ec3cc73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192680e630feb96f95580007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620012b395949392919062008828565b60405180910390a273720582196660646acdd1a2ced07ebdd84e89868c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192680ca18649835a0400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200134d9594939291906200876e565b60405180910390a273cb7fb34e78d124bde8d89cf2f084810cf783f6fa73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926811fb432093fd1200007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620013e795949392919062008b10565b60405180910390a2733692e531473ed4858ae0fa9b7c7aca4eaaa8904173ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926801158e460913d000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001481959493929190620086b4565b60405180910390a2734bad56175b944836f09d7b5e8e1de16edb9c2b7c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926802b5c0282441c700007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200151b959493929190620091f7565b60405180910390a273ba0fc6279427475d15498dbd84e8c4030b9db75c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690118eab248965a3800007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620015b69594939291906200930e565b60405180910390a273ad1691a7ee0c7191f56cbe9f95df69fa110e034373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926907695a92c20d6fe000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200165195949392919062008c27565b60405180910390a27379fa9dd20f4c37adfe5ff39a9379aacc94af3a7473ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926901520001c98de08c00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620016ec95949392919062009425565b60405180910390a2734047f69ee65626a5dce52e55f0b486ab663f0c6e73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681b1ae4d6e2ef5000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200178695949392919062009254565b60405180910390a273a53e1f41489921140dd9ca69615b527ec3e13ef773ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268022b1c8c1227a000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200182095949392919062008d3e565b60405180910390a2731411e896916e9a859ae60d6dfabddda79f41b61c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268a58196a0f1d53680007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620018ba9594939291906200899c565b60405180910390a2737f7df742add41a6aac9889df061c42e5bae9b89373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681043561a88293000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620019549594939291906200893f565b60405180910390a2733e8fdd007e03019b6173571aa5c85a787e49350f73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926835d4a4aedc4ae400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620019ee959493929190620097c7565b60405180910390a273edcf11b5e45aa7f2b858c370683b81306dfe203a73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690171ee0624e601a000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001a89959493929190620094df565b60405180910390a273270cf33c0018eac22d0e31b13899ef04f88efbc873ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192691e480ba811875b6000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001b2495949392919062008312565b60405180910390a273b1519c07a4eec38b463ab2bdd5975e65bd48d76973ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192680a7669bd71326400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001bbe95949392919062008657565b60405180910390a2732ceb2f3c30b75fd47af9bdbd344b6741f116873c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192682fe13e6bb5cc52c0007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001c58959493929190620096b0565b60405180910390a273c4a49bba306c95042abb2bcaeb3dd5ee99d9fb5b73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268dd72c360be0eb400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001cf295949392919062008eb2565b60405180910390a27331e24914a9b29769220fdb8a50b41602d6b7122f73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681ab9bfd7f95b9400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001d8c9594939291906200913d565b60405180910390a27342162fd6dda5cf66d858e78a1096aa2e711d850573ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268fdb40c044c1c2000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001e2695949392919062008f6c565b60405180910390a27360fc4e5371b6f7014cf8c9b7778f0e0862a3ebc273ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926805796106fc2af200007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001ec095949392919062007dfc565b60405180910390a27388e03652a1388fbc52462a6c418aa2be77e14a2a73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926856bc75e2d6310000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001f5a959493929190620084e3565b60405180910390a27339c7f73fa4e9e22a291d85af7b1b18687957213773ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926873f2af7b5e61d740007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162001ff495949392919062008711565b60405180910390a273fb6945388f758deeb2f03deff8b6d8cb7f17ff6273ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268111380cf0ef80c00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200208e95949392919062008a56565b60405180910390a27311248f883ef18e9ff32bb2bedd233e0d1ef4175b73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926893fe5c57d7106800007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200212895949392919062008885565b60405180910390a273e839f31295806d296eccb790df7f4aa3e3102ccd73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269054dd62bef961dc100007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620021c3959493929190620087cb565b60405180910390a273eaae14bb884d860d7124b5e1ae5a68efcb30823373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926915cfc6da40dc59a080007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200225e95949392919062007eb6565b60405180910390a2731961c17e49f37515829469167d20bed234d3879473ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268dd2a5cdee21d7d80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620022f895949392919062008df8565b60405180910390a2731c6c9a16a4f05781680bad7637eac78416544bab73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690215c28b64739b3880007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620023939594939291906200976a565b60405180910390a2737da2f436f25006c93b80c78759c0fdcc949f0b8e73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192682698fc23a98e2000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200242d95949392919062009599565b60405180910390a27391c6a6e1afd0c8bf87ff5ea7423be766d2b2c26373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192681ab9bfd7f95b9400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620024c79594939291906200913d565b60405180910390a2734c390f68ce3015acdf51c6ec0cdd31fe75ec251f73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268154df879cbf88400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200256195949392919062008ce1565b60405180910390a273bc8d5a8ccbd054fce3cea8a8f91c2b7dc078cdc573ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926902c537c46891197400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620025fc959493929190620082b5565b60405180910390a273de8f23b0803de267bb0acbee5c6d410bd601853d73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269021e9b104a02576800007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200269795949392919062007d9f565b60405180910390a273168cc6fa6a1a705c657c4844ce4e01e97f1e6fc773ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269028a85d194fc5d17c0007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620027329594939291906200819e565b60405180910390a273eafbe005adf3cfd3b092fbe632ff6753516c692d73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926903681ae94ec5a0ae00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f296592604051620027cd95949392919062008540565b60405180910390a27393b85901268868ac74b94e750708463bea5296df73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19268fdb40c044c1c2000007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200286795949392919062008f6c565b60405180910390a273d5d1a515e128b724f28c47b33eed64f45603f36673ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926851508afdb65e2f00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200290195949392919062008486565b60405180910390a2733c3acb3fdba4353d267fd7f75440f43a80330c0273ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269022de05077f1f8ec00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f2965926040516200299c95949392919062007e59565b60405180910390a27386efd89f845e963a6ab1334c0a8c9cb00496ec2073ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269010eabcb65f3c56400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002a379594939291906200919a565b60405180910390a273dabf8f8cbbabad2553a1d739759b5e22479ed87473ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926821c5d96ca8c80fc0007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002ad1959493929190620093c8565b60405180910390a273fcb8c538802c166c358687d3a8ac4caebd058c1973ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690897feebbbb9ffd200007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002b6c95949392919062008d9b565b60405180910390a2736d44fa2e022a0a36f8534db4343279d97a646b9373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926835d4a4aedc4ae400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002c06959493929190620097c7565b60405180910390a27385584757219bf801b9d10dd0f22b2ac202dd38fa73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192683c0f3542d771a940007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002ca095949392919062007f70565b60405180910390a2738e8e22bf5a604cb47a58fea3c8c7ae9a5bf3793c73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192682025f1cafe0de700007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002d3a9594939291906200936b565b60405180910390a273d93cd8d2127c4981877607ec826204ceab1168bf73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926801c9f78d2893e400007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002dd495949392919062008ab3565b60405180910390a27369e7b7f2e6fb08d4d25c3b4b0c2047e634eef30f73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f192690267fd4d883eebac00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002e6f9594939291906200802a565b60405180910390a2739db1d89836a68f342d76e232ebbeacf7a084ecb373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f19269031dbfadfc7ebd4f80007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002f0a9594939291906200836f565b60405180910390a273649d5a84a384b2367b4667600250b67ce5e9808d73ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1926845c4b6812e87bc00007f2ce0c96383fb229d9776f33846e983a956a7d95844fac57b180ed0071d93bb28600080635f29659260405162002fa495949392919062008258565b60405180910390a26040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f6a7d9487f5488c4b1972e24f2be9d335c9a60ac8d2bae0aa3817aea8b984385760001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f55fb6b0dbafd5648034eec2c6c8d164bc1de360a11a91074c2244d0c6b96afc360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f3e2f29f8ef72398f0b1d85522329cbe8cbd9f27832aedbc6a6da91a7e625a0ad60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fba2a5915c7ec2bf9f2d3880020d8094efc792bdb8e97dbcedaad0181522010c160001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f118fe75fe3296bbcccac82d34fd110e9bfe894bf45fdd836e78e75dd8b4b90cb60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ff598ca0dd263483022147409e1f07d3bcbf5f67b5c76e4d6fbcdf5ad04bdb2f260001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ff089fff24913784cf7cd26f9e289afd7afbdc8de5a428bb8dd027f6039440cc060001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f74ec2b1999212c994d6d403292b26ecf6b8bbe35633701868be764389548b50360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f23653a2d01844fb12c0af0f5a88ac2d879160987182267a38ad197c85732a6e560001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fc790afb60acac86c1b25370a86bf18b3af73113bc92bab2d8cbacb7a23ecfc8260001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fe3375dbef73230f597b7351ab8adc470cbae916fa757e21441b7ad130f04df4860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fdc8463a850d15d94fe9fd5b0afa53141e7a31e3fd1ca8411e779540e0f503b9460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fdc7ecd0eb72915bcb82c5d5b5a5482e7888f3dad4d6f4ea1eeaf2e2dbf508b1f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f23552be7e3dc13cc8d44f609a35e0a1f5d519991cdb0f7e79495f3033214ddcb60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fd59ed9d22804b0666ae47694f8a04bfaf8a8ac813235feaa95fb3a7d8bb1fe4c60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f011d50bf918148cf1b98331bd1b7ca7fbddce4f6b8a76e4ccf4c33b30824eb6160001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f0392bc4700a5264466cb628f8d742ec57df72394bdbc535c6dd8cf11ad343b5d60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f3ac8c30df75257f9f2207a72ad949cdf3f130d4b1299cb6cfbabe5734fa1757860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f2e845d41bcc3d7ba62367b7de6d15f527c39f90bf7ff9214e9aac0c830782cc860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f120698f531bc39cb98155f95c6b19471cc8bd7ff457d4898d9b391b14661039260001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f9de14e963a3c3254bb12d1b32e99f10022e4cc9f1e3b8dad209ed8addb4a218d60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffd7a5ca1d1ad00470e326ff94a61fd6c9af4faa58c8edaa86845973db96929ed60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fa6be5081d96d731dc707e8b45a082ef29ea455adadc7db086f745c33b8fa362260001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f0e0ae75b72a2bc1931f0b7aa6e13b504f4813bf1b068f4dae39bbf435747390460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fce7b825f8151b92f411fa3ac553c1b4d73eac7f0d86da7ea64db75b83fc8876360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f33fda240debf4335cffa698fd64ee1da3119cc466f2a74108bc3461c5c81aac860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fa2a93d3bebff5fbd48d89bbcf00964155ebe4fa1296527624a6ab9645cfe362a60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f6ee1223e91c6f5ac06a8add79d391db7fb34a872812b121f880c26cfd9a3233460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f3d090800eaa66cb2869ded7da9ab74ad63b72724ec5021662aa08e4e0214a74060001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f4466220fb150c6ad8412ea8866c3b87bb498bf4032b5f7558cb9e42e8f6df0d860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f75cbe02bd749d5ea78a2cdc5095a5ecb1cf24e3e5b148c965cbb9e1036606b7f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f434077499877a9fcf7bb16f14c2d92714bc18a51a7f2efda1846431f4a45e68660001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f72769587fee6579cacf8e8545b5cac29e63910fe76633c729bde1b3b753c98d760001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fd51dfec7d7e9de5ee7f66c5e1002a9caa711881b06614adfba4405cc78de53fa60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffc03508462e6f68e3118b1a0efa1b35bb0c300422382dc2bfb43588319c1d1ee60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f3e3ef739d1ee4a2ab28603d5ebcccbee939ddf5e0377360352f1c025d7ac417c60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fe7ca34cabc4b07c519cee31f571fdde836d5ae4c230bf6fc47b5de52219bcd9360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f65d3d696e96131618cdae5ae6fc00de596f8575809c5170365fbe154ded0929960001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f9f8f964397b3b3d907e0f9f4576fa7c81006cc331a871f5ebcffa1b01be085b560001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fcf691332554fe4394d3d8537ae03a76035808afd5b9601b023788b82f598623460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f80b0c7e1929e7dea450fa2cce0f325988b380b71f39db48a7fe79730b478bc3b60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fed130cb9e98fcab5a45ed371d39ed7d73bc0e087259669f8be72afe3ef86fe7360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f737e5c4c12ba13bf20847fa74086f0469ed78d488852c64b6735fd8182cd96dc60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fc8ca855b940dd167c2c9eeebcd5f9ccb966f9ea21bb3278aec91cf67b63cc49e60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fcf47c56376b42d319fbc096f64113956eb957df4c84ecfa3a74bdec81a10461660001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffa211d0019e0885373350d1e8d8520f3d1f8c5d754d8d9c858cbbc3cd71b03cb60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffae897dba68d824ffef031def855b4c684ea8ade957379d7679e82f30a0827d760001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f7721797563d26469df854f10e6c65b638e72c7ea770614c6ae77a1eabd4b847460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f543a1f80a470a14d27c7b26339aae2ad4e9985f0283371cc599d6621c68d5a3c60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f373ace2e17c127e9764de6cf34f34fb3609b9e361bf32989b869244997e34c6960001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fbe5be1f0756514313cf5cf90c2810a3043c3251e57115a6dd8f81de2670b189a60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fe1a1339897aec6e66b89003e9ede86460239b6e33a44965360890555e7d3d08160001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f1ce35f5ab2012ed0710175663e57995bf937d38092b9b8e6603d7cabb86c3e5a60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007feae1869b532f6e8b161437bdaa8c9ebb3480a1ffcc6dfab28143ce1c57f6eb5060001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fb2fac8e3bf25cc1aa98674e9965923670cd3ad17f69f6c9215f2fe77e7bd2e9660001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fc688445efc91d629f0af4be1ecc96d8ed18b59bb8e84ca16a1cbe7de846071c760001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f37a637ab47df2715665761587f658ae04f8b5326b48275401357ddac01f7d1b460001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f235e7394316b5669a0ddfaee33d0fcd5bd35846c65a069f8f9773c3ef473684660001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f0340ad87a5a1351878aab2f32cebb1ac60baec0d474164516b183586eb30bfc260001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fa9d2c2bcbe61a7c2a93b584ea7f6cac96ff7f64e051b504c97987ce25e51c2b360001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fd704896afa1f3cb01123ce1dd52708f8d8cf819e920e63f80b0ec76fc037b91a60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f4fbcbbcfa2dce5cc50b7057e93eed2e4bb94626c0ddf5f1a4c3bdb41b955ec6b60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f6ea21b1ddcfc830e81c0674d5454a15f90baf7665fad6e12db9483595bebed8560001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fc8344ecf12a5674d02e2c4bee2c0d4373a9732f45e8d9610778acd25cf54416c60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffaf1b4727429d9f67f68675047a4e4f1f904543eb943d13647cd77757fbad96f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fef39d7f9f973c35f241ca8a0897377041f9895c39ef02cd07a25c65ab914f28d60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f91eb760d2a5bb25aa456b8a9ee6c1d9ca38d08c77a2980b999f91bff401a846860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007ffe627b8a976d30a897e03057c79c4a4eed4f7b5072fc2c0255a589a26bb6882c60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fa0f592deed6ead4c3b44137ceb167927a5ec324b9abfe47602d3f734e74bac8860001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fc8b78e5f6973607db88dee883e65e1c794d42990749d4761f1bd1a25b11e10be60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f20a2adf8029e27f951a74daa227149e3c3e317f1cee5b9817258c09e0a53808960001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f037d4bad3cc090f2a9529a6afd1ff8032117d656333e51a4dc90b49448a9edf760001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fab0d87a8a9e91b116cb0a431326b0c41f00efab856134e40f43aed4234ea753b60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fb90d3a1a42b47fb0214e3277f6b429a7970bfec641dfebafdd3b9d4a880d0aff60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fbd8995c3014fbb334b55d458bbc23a2b3c43f3992c722dc8746c6a76acce493f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007feceded3917d2a1db497f33b3e5812b475e15175c4271b7e01b8cc6f1e82d286f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007fd3782a17328e5cfc6c50a5bd5ee4e999c70280a403cfd6432042b6186b2c0f7e60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506040518060600160405280600115158152602001600067ffffffffffffffff168152602001600067ffffffffffffffff16815250600160007f918c391aa022f6691e254498d42e13a54c9b295aa521fa7b1ed851833f49543f60001b815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050505062009edd565b6000815190506200775f8162009ec3565b92915050565b600080604083850312156200777957600080fd5b600062007789858286016200774e565b92505060206200779c858286016200774e565b9150509250929050565b620077b18162009880565b82525050565b620077c28162009894565b82525050565b620077d381620098a8565b82525050565b620077e481620098bc565b82525050565b620077f581620098d0565b82525050565b6200780681620098e4565b82525050565b6200781781620098f8565b82525050565b62007828816200990c565b82525050565b620078398162009920565b82525050565b6200784a8162009934565b82525050565b6200785b8162009948565b82525050565b6200786c816200995c565b82525050565b6200787d8162009970565b82525050565b6200788e8162009984565b82525050565b6200789f8162009998565b82525050565b620078b081620099ac565b82525050565b620078c181620099c0565b82525050565b620078d281620099d4565b82525050565b620078e381620099e8565b82525050565b620078f481620099fc565b82525050565b620079058162009a10565b82525050565b620079168162009a24565b82525050565b620079278162009a38565b82525050565b620079388162009a4c565b82525050565b620079498162009a60565b82525050565b6200795a8162009a74565b82525050565b6200796b8162009a88565b82525050565b6200797c8162009a9c565b82525050565b6200798d8162009ab0565b82525050565b6200799e8162009ac4565b82525050565b620079af8162009ad8565b82525050565b620079c08162009aec565b82525050565b620079d18162009b0a565b82525050565b620079e28162009b1e565b82525050565b620079f38162009b32565b82525050565b62007a048162009b46565b82525050565b62007a158162009b5a565b82525050565b62007a268162009b6e565b82525050565b62007a378162009b82565b82525050565b62007a488162009b96565b82525050565b62007a598162009baa565b82525050565b62007a6a8162009bbe565b82525050565b62007a7b8162009bd2565b82525050565b62007a8c8162009be6565b82525050565b62007a9d8162009bfa565b82525050565b62007aae8162009c0e565b82525050565b62007abf8162009c22565b82525050565b62007ad08162009c36565b82525050565b62007ae18162009c4a565b82525050565b62007af28162009c5e565b82525050565b62007b038162009c72565b82525050565b62007b148162009c86565b82525050565b62007b258162009c9a565b82525050565b62007b368162009cae565b82525050565b62007b478162009cc2565b82525050565b62007b588162009cd6565b82525050565b62007b698162009cea565b82525050565b62007b7a8162009cfe565b82525050565b62007b8b8162009d12565b82525050565b62007b9c8162009d26565b82525050565b62007bad8162009d3a565b82525050565b62007bbe8162009d4e565b82525050565b62007bcf8162009d62565b82525050565b62007be08162009d76565b82525050565b62007bf18162009d8a565b82525050565b62007c028162009d9e565b82525050565b62007c138162009db2565b82525050565b62007c248162009dc6565b82525050565b62007c358162009dda565b82525050565b62007c468162009dee565b82525050565b62007c578162009e02565b82525050565b62007c688162009e16565b82525050565b62007c798162009e2a565b82525050565b62007c8a8162009e3e565b82525050565b62007c9b8162009e52565b82525050565b62007cac8162009e66565b82525050565b62007cbd8162009e7a565b82525050565b62007cce8162009e8e565b82525050565b62007cdf8162009ea2565b82525050565b600060a08201905062007cfc6000830188620077c8565b62007d0b6020830187620079b5565b62007d1a6040830186620077a6565b62007d296060830185620077b7565b62007d3860808301846200793e565b9695505050505050565b600060a08201905062007d596000830188620077d9565b62007d686020830187620079b5565b62007d776040830186620077a6565b62007d866060830185620077b7565b62007d9560808301846200793e565b9695505050505050565b600060a08201905062007db66000830188620077ea565b62007dc56020830187620079b5565b62007dd46040830186620077a6565b62007de36060830185620077b7565b62007df260808301846200793e565b9695505050505050565b600060a08201905062007e136000830188620077fb565b62007e226020830187620079b5565b62007e316040830186620077a6565b62007e406060830185620077b7565b62007e4f60808301846200793e565b9695505050505050565b600060a08201905062007e7060008301886200780c565b62007e7f6020830187620079b5565b62007e8e6040830186620077a6565b62007e9d6060830185620077b7565b62007eac60808301846200793e565b9695505050505050565b600060a08201905062007ecd60008301886200781d565b62007edc6020830187620079b5565b62007eeb6040830186620077a6565b62007efa6060830185620077b7565b62007f0960808301846200793e565b9695505050505050565b600060a08201905062007f2a60008301886200782e565b62007f396020830187620079b5565b62007f486040830186620077a6565b62007f576060830185620077b7565b62007f6660808301846200793e565b9695505050505050565b600060a08201905062007f8760008301886200783f565b62007f966020830187620079b5565b62007fa56040830186620077a6565b62007fb46060830185620077b7565b62007fc360808301846200793e565b9695505050505050565b600060a08201905062007fe4600083018862007850565b62007ff36020830187620079b5565b620080026040830186620077a6565b620080116060830185620077b7565b6200802060808301846200793e565b9695505050505050565b600060a08201905062008041600083018862007861565b620080506020830187620079b5565b6200805f6040830186620077a6565b6200806e6060830185620077b7565b6200807d60808301846200793e565b9695505050505050565b600060a0820190506200809e600083018862007872565b620080ad6020830187620079b5565b620080bc6040830186620077a6565b620080cb6060830185620077b7565b620080da60808301846200793e565b9695505050505050565b600060a082019050620080fb600083018862007883565b6200810a6020830187620079b5565b620081196040830186620077a6565b620081286060830185620077b7565b6200813760808301846200793e565b9695505050505050565b600060a08201905062008158600083018862007894565b620081676020830187620079b5565b620081766040830186620077a6565b620081856060830185620077b7565b6200819460808301846200793e565b9695505050505050565b600060a082019050620081b56000830188620078a5565b620081c46020830187620079b5565b620081d36040830186620077a6565b620081e26060830185620077b7565b620081f160808301846200793e565b9695505050505050565b600060a082019050620082126000830188620078b6565b620082216020830187620079b5565b620082306040830186620077a6565b6200823f6060830185620077b7565b6200824e60808301846200793e565b9695505050505050565b600060a0820190506200826f6000830188620078c7565b6200827e6020830187620079b5565b6200828d6040830186620077a6565b6200829c6060830185620077b7565b620082ab60808301846200793e565b9695505050505050565b600060a082019050620082cc6000830188620078d8565b620082db6020830187620079b5565b620082ea6040830186620077a6565b620082f96060830185620077b7565b6200830860808301846200793e565b9695505050505050565b600060a082019050620083296000830188620078e9565b620083386020830187620079b5565b620083476040830186620077a6565b620083566060830185620077b7565b6200836560808301846200793e565b9695505050505050565b600060a082019050620083866000830188620078fa565b620083956020830187620079b5565b620083a46040830186620077a6565b620083b36060830185620077b7565b620083c260808301846200793e565b9695505050505050565b600060a082019050620083e360008301886200790b565b620083f26020830187620079b5565b620084016040830186620077a6565b620084106060830185620077b7565b6200841f60808301846200793e565b9695505050505050565b600060a0820190506200844060008301886200791c565b6200844f6020830187620079b5565b6200845e6040830186620077a6565b6200846d6060830185620077b7565b6200847c60808301846200793e565b9695505050505050565b600060a0820190506200849d60008301886200792d565b620084ac6020830187620079b5565b620084bb6040830186620077a6565b620084ca6060830185620077b7565b620084d960808301846200793e565b9695505050505050565b600060a082019050620084fa60008301886200794f565b620085096020830187620079b5565b620085186040830186620077a6565b620085276060830185620077b7565b6200853660808301846200793e565b9695505050505050565b600060a08201905062008557600083018862007960565b620085666020830187620079b5565b620085756040830186620077a6565b620085846060830185620077b7565b6200859360808301846200793e565b9695505050505050565b600060a082019050620085b4600083018862007971565b620085c36020830187620079b5565b620085d26040830186620077a6565b620085e16060830185620077b7565b620085f060808301846200793e565b9695505050505050565b600060a08201905062008611600083018862007982565b620086206020830187620079b5565b6200862f6040830186620077a6565b6200863e6060830185620077b7565b6200864d60808301846200793e565b9695505050505050565b600060a0820190506200866e600083018862007993565b6200867d6020830187620079b5565b6200868c6040830186620077a6565b6200869b6060830185620077b7565b620086aa60808301846200793e565b9695505050505050565b600060a082019050620086cb6000830188620079a4565b620086da6020830187620079b5565b620086e96040830186620077a6565b620086f86060830185620077b7565b6200870760808301846200793e565b9695505050505050565b600060a082019050620087286000830188620079c6565b620087376020830187620079b5565b620087466040830186620077a6565b620087556060830185620077b7565b6200876460808301846200793e565b9695505050505050565b600060a082019050620087856000830188620079d7565b620087946020830187620079b5565b620087a36040830186620077a6565b620087b26060830185620077b7565b620087c160808301846200793e565b9695505050505050565b600060a082019050620087e26000830188620079e8565b620087f16020830187620079b5565b620088006040830186620077a6565b6200880f6060830185620077b7565b6200881e60808301846200793e565b9695505050505050565b600060a0820190506200883f6000830188620079f9565b6200884e6020830187620079b5565b6200885d6040830186620077a6565b6200886c6060830185620077b7565b6200887b60808301846200793e565b9695505050505050565b600060a0820190506200889c600083018862007a0a565b620088ab6020830187620079b5565b620088ba6040830186620077a6565b620088c96060830185620077b7565b620088d860808301846200793e565b9695505050505050565b600060a082019050620088f9600083018862007a1b565b620089086020830187620079b5565b620089176040830186620077a6565b620089266060830185620077b7565b6200893560808301846200793e565b9695505050505050565b600060a08201905062008956600083018862007a2c565b620089656020830187620079b5565b620089746040830186620077a6565b620089836060830185620077b7565b6200899260808301846200793e565b9695505050505050565b600060a082019050620089b3600083018862007a3d565b620089c26020830187620079b5565b620089d16040830186620077a6565b620089e06060830185620077b7565b620089ef60808301846200793e565b9695505050505050565b600060a08201905062008a10600083018862007a4e565b62008a1f6020830187620079b5565b62008a2e6040830186620077a6565b62008a3d6060830185620077b7565b62008a4c60808301846200793e565b9695505050505050565b600060a08201905062008a6d600083018862007a5f565b62008a7c6020830187620079b5565b62008a8b6040830186620077a6565b62008a9a6060830185620077b7565b62008aa960808301846200793e565b9695505050505050565b600060a08201905062008aca600083018862007a70565b62008ad96020830187620079b5565b62008ae86040830186620077a6565b62008af76060830185620077b7565b62008b0660808301846200793e565b9695505050505050565b600060a08201905062008b27600083018862007a81565b62008b366020830187620079b5565b62008b456040830186620077a6565b62008b546060830185620077b7565b62008b6360808301846200793e565b9695505050505050565b600060a08201905062008b84600083018862007a92565b62008b936020830187620079b5565b62008ba26040830186620077a6565b62008bb16060830185620077b7565b62008bc060808301846200793e565b9695505050505050565b600060a08201905062008be1600083018862007aa3565b62008bf06020830187620079b5565b62008bff6040830186620077a6565b62008c0e6060830185620077b7565b62008c1d60808301846200793e565b9695505050505050565b600060a08201905062008c3e600083018862007ab4565b62008c4d6020830187620079b5565b62008c5c6040830186620077a6565b62008c6b6060830185620077b7565b62008c7a60808301846200793e565b9695505050505050565b600060a08201905062008c9b600083018862007ac5565b62008caa6020830187620079b5565b62008cb96040830186620077a6565b62008cc86060830185620077b7565b62008cd760808301846200793e565b9695505050505050565b600060a08201905062008cf8600083018862007ad6565b62008d076020830187620079b5565b62008d166040830186620077a6565b62008d256060830185620077b7565b62008d3460808301846200793e565b9695505050505050565b600060a08201905062008d55600083018862007ae7565b62008d646020830187620079b5565b62008d736040830186620077a6565b62008d826060830185620077b7565b62008d9160808301846200793e565b9695505050505050565b600060a08201905062008db2600083018862007af8565b62008dc16020830187620079b5565b62008dd06040830186620077a6565b62008ddf6060830185620077b7565b62008dee60808301846200793e565b9695505050505050565b600060a08201905062008e0f600083018862007b09565b62008e1e6020830187620079b5565b62008e2d6040830186620077a6565b62008e3c6060830185620077b7565b62008e4b60808301846200793e565b9695505050505050565b600060a08201905062008e6c600083018862007b1a565b62008e7b6020830187620079b5565b62008e8a6040830186620077a6565b62008e996060830185620077b7565b62008ea860808301846200793e565b9695505050505050565b600060a08201905062008ec9600083018862007b2b565b62008ed86020830187620079b5565b62008ee76040830186620077a6565b62008ef66060830185620077b7565b62008f0560808301846200793e565b9695505050505050565b600060a08201905062008f26600083018862007b3c565b62008f356020830187620079b5565b62008f446040830186620077a6565b62008f536060830185620077b7565b62008f6260808301846200793e565b9695505050505050565b600060a08201905062008f83600083018862007b4d565b62008f926020830187620079b5565b62008fa16040830186620077a6565b62008fb06060830185620077b7565b62008fbf60808301846200793e565b9695505050505050565b600060a08201905062008fe0600083018862007b5e565b62008fef6020830187620079b5565b62008ffe6040830186620077a6565b6200900d6060830185620077b7565b6200901c60808301846200793e565b9695505050505050565b600060a0820190506200903d600083018862007b6f565b6200904c6020830187620079b5565b6200905b6040830186620077a6565b6200906a6060830185620077b7565b6200907960808301846200793e565b9695505050505050565b600060a0820190506200909a600083018862007b80565b620090a96020830187620079b5565b620090b86040830186620077a6565b620090c76060830185620077b7565b620090d660808301846200793e565b9695505050505050565b600060a082019050620090f7600083018862007b91565b620091066020830187620079b5565b620091156040830186620077a6565b620091246060830185620077b7565b6200913360808301846200793e565b9695505050505050565b600060a08201905062009154600083018862007ba2565b620091636020830187620079b5565b620091726040830186620077a6565b620091816060830185620077b7565b6200919060808301846200793e565b9695505050505050565b600060a082019050620091b1600083018862007bb3565b620091c06020830187620079b5565b620091cf6040830186620077a6565b620091de6060830185620077b7565b620091ed60808301846200793e565b9695505050505050565b600060a0820190506200920e600083018862007bc4565b6200921d6020830187620079b5565b6200922c6040830186620077a6565b6200923b6060830185620077b7565b6200924a60808301846200793e565b9695505050505050565b600060a0820190506200926b600083018862007bd5565b6200927a6020830187620079b5565b620092896040830186620077a6565b620092986060830185620077b7565b620092a760808301846200793e565b9695505050505050565b600060a082019050620092c8600083018862007be6565b620092d76020830187620079b5565b620092e66040830186620077a6565b620092f56060830185620077b7565b6200930460808301846200793e565b9695505050505050565b600060a08201905062009325600083018862007bf7565b620093346020830187620079b5565b620093436040830186620077a6565b620093526060830185620077b7565b6200936160808301846200793e565b9695505050505050565b600060a08201905062009382600083018862007c08565b620093916020830187620079b5565b620093a06040830186620077a6565b620093af6060830185620077b7565b620093be60808301846200793e565b9695505050505050565b600060a082019050620093df600083018862007c19565b620093ee6020830187620079b5565b620093fd6040830186620077a6565b6200940c6060830185620077b7565b6200941b60808301846200793e565b9695505050505050565b600060a0820190506200943c600083018862007c2a565b6200944b6020830187620079b5565b6200945a6040830186620077a6565b620094696060830185620077b7565b6200947860808301846200793e565b9695505050505050565b600060a08201905062009499600083018862007c3b565b620094a86020830187620079b5565b620094b76040830186620077a6565b620094c66060830185620077b7565b620094d560808301846200793e565b9695505050505050565b600060a082019050620094f6600083018862007c4c565b620095056020830187620079b5565b620095146040830186620077a6565b620095236060830185620077b7565b6200953260808301846200793e565b9695505050505050565b600060a08201905062009553600083018862007c5d565b620095626020830187620079b5565b620095716040830186620077a6565b620095806060830185620077b7565b6200958f60808301846200793e565b9695505050505050565b600060a082019050620095b0600083018862007c6e565b620095bf6020830187620079b5565b620095ce6040830186620077a6565b620095dd6060830185620077b7565b620095ec60808301846200793e565b9695505050505050565b600060a0820190506200960d600083018862007c7f565b6200961c6020830187620079b5565b6200962b6040830186620077a6565b6200963a6060830185620077b7565b6200964960808301846200793e565b9695505050505050565b600060a0820190506200966a600083018862007c90565b620096796020830187620079b5565b620096886040830186620077a6565b620096976060830185620077b7565b620096a660808301846200793e565b9695505050505050565b600060a082019050620096c7600083018862007ca1565b620096d66020830187620079b5565b620096e56040830186620077a6565b620096f46060830185620077b7565b6200970360808301846200793e565b9695505050505050565b600060a08201905062009724600083018862007cb2565b620097336020830187620079b5565b620097426040830186620077a6565b620097516060830185620077b7565b6200976060808301846200793e565b9695505050505050565b600060a08201905062009781600083018862007cc3565b620097906020830187620079b5565b6200979f6040830186620077a6565b620097ae6060830185620077b7565b620097bd60808301846200793e565b9695505050505050565b600060a082019050620097de600083018862007cd4565b620097ed6020830187620079b5565b620097fc6040830186620077a6565b6200980b6060830185620077b7565b6200981a60808301846200793e565b9695505050505050565b6000620098318262009842565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60006200988d8262009862565b9050919050565b6000620098a1826200986c565b9050919050565b6000620098b58262009862565b9050919050565b6000620098c98262009862565b9050919050565b6000620098dd8262009862565b9050919050565b6000620098f18262009862565b9050919050565b6000620099058262009862565b9050919050565b6000620099198262009862565b9050919050565b60006200992d8262009862565b9050919050565b6000620099418262009862565b9050919050565b6000620099558262009862565b9050919050565b6000620099698262009862565b9050919050565b60006200997d8262009862565b9050919050565b6000620099918262009862565b9050919050565b6000620099a58262009862565b9050919050565b6000620099b98262009862565b9050919050565b6000620099cd8262009862565b9050919050565b6000620099e18262009862565b9050919050565b6000620099f58262009862565b9050919050565b600062009a098262009862565b9050919050565b600062009a1d8262009862565b9050919050565b600062009a318262009862565b9050919050565b600062009a458262009862565b9050919050565b600062009a598262009862565b9050919050565b600062009a6d8262009862565b9050919050565b600062009a818262009862565b9050919050565b600062009a958262009862565b9050919050565b600062009aa98262009862565b9050919050565b600062009abd8262009862565b9050919050565b600062009ad18262009862565b9050919050565b600062009ae58262009862565b9050919050565b600062009b0362009afd8362009838565b62009eb6565b9050919050565b600062009b178262009862565b9050919050565b600062009b2b8262009862565b9050919050565b600062009b3f8262009862565b9050919050565b600062009b538262009862565b9050919050565b600062009b678262009862565b9050919050565b600062009b7b8262009862565b9050919050565b600062009b8f8262009862565b9050919050565b600062009ba38262009862565b9050919050565b600062009bb78262009862565b9050919050565b600062009bcb8262009862565b9050919050565b600062009bdf8262009862565b9050919050565b600062009bf38262009862565b9050919050565b600062009c078262009862565b9050919050565b600062009c1b8262009862565b9050919050565b600062009c2f8262009862565b9050919050565b600062009c438262009862565b9050919050565b600062009c578262009862565b9050919050565b600062009c6b8262009862565b9050919050565b600062009c7f8262009862565b9050919050565b600062009c938262009862565b9050919050565b600062009ca78262009862565b9050919050565b600062009cbb8262009862565b9050919050565b600062009ccf8262009862565b9050919050565b600062009ce38262009862565b9050919050565b600062009cf78262009862565b9050919050565b600062009d0b8262009862565b9050919050565b600062009d1f8262009862565b9050919050565b600062009d338262009862565b9050919050565b600062009d478262009862565b9050919050565b600062009d5b8262009862565b9050919050565b600062009d6f8262009862565b9050919050565b600062009d838262009862565b9050919050565b600062009d978262009862565b9050919050565b600062009dab8262009862565b9050919050565b600062009dbf8262009862565b9050919050565b600062009dd38262009862565b9050919050565b600062009de78262009862565b9050919050565b600062009dfb8262009862565b9050919050565b600062009e0f8262009862565b9050919050565b600062009e238262009862565b9050919050565b600062009e378262009862565b9050919050565b600062009e4b8262009862565b9050919050565b600062009e5f8262009862565b9050919050565b600062009e738262009862565b9050919050565b600062009e878262009862565b9050919050565b600062009e9b8262009862565b9050919050565b600062009eaf8262009862565b9050919050565b60008160001b9050919050565b62009ece8162009824565b811462009eda57600080fd5b50565b60805160601c60a05160601c61165462009f1b600039806101ff5280610a465250806104a252806107df5280610be95280610c1d52506116546000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ae8a269e11610066578063ae8a269e14610159578063b4dca72414610175578063b9ad7ea914610191578063e767ec7e146101c3578063e9d1251a146101df5761009e565b80631c77ff04146100a35780633708659d146100bf5780635fbe4d1d146100db578063649a2790146100f9578063ac20874d14610129575b600080fd5b6100bd60048036038101906100b89190610f84565b6101fd565b005b6100d960048036038101906100d49190610fe9565b610355565b005b6100e36104a0565b6040516100f09190611270565b60405180910390f35b610113600480360381019061010e9190610f1f565b6104c4565b6040516101209190611475565b60405180910390f35b610143600480360381019061013e9190610f5b565b61053a565b6040516101509190611475565b60405180910390f35b610173600480360381019061016e9190610fc0565b610552565b005b61018f600480360381019061018a9190610fc0565b610622565b005b6101ab60048036038101906101a69190610f5b565b61089a565b6040516101ba9392919061133e565b60405180910390f35b6101dd60048036038101906101d89190610fc0565b6108f9565b005b6101e7610a44565b6040516101f49190611270565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461028b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028290611455565b60405180910390fd5b60006102b28260008086815260200190815260200160002054610a6890919063ffffffff16565b9050670de0b6b3a76400008111156102ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f6906113b5565b60405180910390fd5b8060008085815260200190815260200160002081905550827f0740069fc8d861d85bed3b65ac6808125d778ea56d9b8221d41a1203281f62eb82426040516103489291906114e3565b60405180910390a2505050565b600061036a3384610a8790919063ffffffff16565b905060006001600083815260200190815260200160002090508060000160009054906101000a900460ff166103d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cb90611375565b60405180910390fd5b836020015183602001511461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611435565b60405180910390fd5b610440848260000160019054906101000a900467ffffffffffffffff16610acc565b83600001511015610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d906113f5565b60405180910390fd5b610491848383610b53565b61049a83610622565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600160006104de8686610a8790919063ffffffff16565b815260200190815260200160002090508060000160009054906101000a900460ff1661050e576000915050610534565b610530838260000160019054906101000a900467ffffffffffffffff16610acc565b9150505b92915050565b60006020528060005260406000206000915090505481565b60006105673383610a8790919063ffffffff16565b9050600060016000838152602001908152602001600020905060008160000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff161180156105d357508060000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff1642115b610612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060990611395565b60405180910390fd5b61061d838383610b53565b505050565b60006106373383610a8790919063ffffffff16565b90506001600082815260200190815260200160002060000160009054906101000a900460ff161561069d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610694906113d5565b60405180910390fd5b670de0b6b3a76400006000808460200151815260200190815260200160002054106106fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f490611415565b60405180910390fd5b6040518060600160405280600115158152602001600080856020015181526020019081526020016000205467ffffffffffffffff168152602001600067ffffffffffffffff168152506001600083815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505061080a7f000000000000000000000000000000000000000000000000000000000000000033308560000151610cae565b3373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1928360000151846020015185604001516001600087815260200190815260200160002060000160019054906101000a900467ffffffffffffffff164260405161088e959493929190611490565b60405180910390a25050565b60016020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900467ffffffffffffffff16908060000160099054906101000a900467ffffffffffffffff16905083565b600061090e3383610a8790919063ffffffff16565b905060006001600083815260200190815260200160002090508060000160009054906101000a900460ff168015610967575060008160000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff16145b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90611375565b60405180910390fd5b62278d0042018160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550813373ffffffffffffffffffffffffffffffffffffffff167f8a13ed2fab6e07ff3236ef8d7dc89784369012af6ebf994c55a181fabb7bbde28360000160099054906101000a900467ffffffffffffffff1642604051610a3792919061150c565b60405180910390a3505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080828401905083811015610a7d57600080fd5b8091505092915050565b60003082846000015185602001518660400151604051602001610aae9594939291906112c2565b60405160208183030381529060405280519060200120905092915050565b6000610b4b610af68367ffffffffffffffff16670de0b6b3a7640000610d3490919063ffffffff16565b610b3d610b2a6000808860200151815260200190815260200160002054670de0b6b3a7640000610d3490919063ffffffff16565b8660000151610d4e90919063ffffffff16565b610d8090919063ffffffff16565b905092915050565b6000610b77848360000160019054906101000a900467ffffffffffffffff16610acc565b9050600081856000015103905060016000858152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a81549067ffffffffffffffff02191690555050610c0f7f00000000000000000000000000000000000000000000000000000000000000003384610dbf565b6000811115610c5857610c577f000000000000000000000000000000000000000000000000000000000000000073adbeef000000000000000000000000000000000083610dbf565b5b833373ffffffffffffffffffffffffffffffffffffffff167f287be44bba238338787974842dfe3d140232a2f6a08f85b23ea3ff8f17805f9442604051610c9f9190611475565b60405180910390a35050505050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401610ceb9392919061128b565b600060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b50505050610d25610e42565b610d2e57600080fd5b50505050565b600082821115610d4357600080fd5b818303905092915050565b60008082840290506000841480610d6d575082848281610d6a57fe5b04145b610d7657600080fd5b8091505092915050565b6000808211610d8e57600080fd5b6000828481610d9957fe5b049050828481610da557fe5b06818402018414610db557600080fd5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610dfa929190611315565b600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b50505050610e34610e42565b610e3d57600080fd5b505050565b600080600090503d60008114610e5f5760208114610e6857610e74565b60019150610e74565b60206000803e60005191505b50600081141591505090565b600081359050610e8f816115d9565b92915050565b600081359050610ea4816115f0565b92915050565b600060608284031215610ebc57600080fd5b610ec66060611535565b90506000610ed684828501610f0a565b6000830152506020610eea84828501610e95565b6020830152506040610efe84828501610f0a565b60408301525092915050565b600081359050610f1981611607565b92915050565b60008060808385031215610f3257600080fd5b6000610f4085828601610e80565b9250506020610f5185828601610eaa565b9150509250929050565b600060208284031215610f6d57600080fd5b6000610f7b84828501610e95565b91505092915050565b60008060408385031215610f9757600080fd5b6000610fa585828601610e95565b9250506020610fb685828601610f0a565b9150509250929050565b600060608284031215610fd257600080fd5b6000610fe084828501610eaa565b91505092915050565b60008060c08385031215610ffc57600080fd5b600061100a85828601610eaa565b925050606061101b85828601610eaa565b9150509250929050565b61102e81611573565b82525050565b61103d81611585565b82525050565b61104c81611591565b82525050565b600061105f600f83611562565b91507f424f4e445f4e4f545f41435449564500000000000000000000000000000000006000830152602082019050919050565b600061109f601183611562565b91507f424f4e445f4e4f545f554e4c4f434b45440000000000000000000000000000006000830152602082019050919050565b60006110df600c83611562565b91507f5054535f544f4f5f4849474800000000000000000000000000000000000000006000830152602082019050919050565b600061111f601383611562565b91507f424f4e445f414c52454144595f414354495645000000000000000000000000006000830152602082019050919050565b600061115f601083611562565b91507f4e45575f424f4e445f534d414c4c4552000000000000000000000000000000006000830152602082019050919050565b600061119f600c83611562565b91507f504f4f4c5f534c415348454400000000000000000000000000000000000000006000830152602082019050919050565b60006111df601183611562565b91507f504f4f4c5f49445f444946464552454e540000000000000000000000000000006000830152602082019050919050565b600061121f600c83611562565b91507f4f4e4c595f534c415348455200000000000000000000000000000000000000006000830152602082019050919050565b61125b816115bb565b82525050565b61126a816115c5565b82525050565b60006020820190506112856000830184611025565b92915050565b60006060820190506112a06000830186611025565b6112ad6020830185611025565b6112ba6040830184611252565b949350505050565b600060a0820190506112d76000830188611025565b6112e46020830187611025565b6112f16040830186611252565b6112fe6060830185611043565b61130b6080830184611252565b9695505050505050565b600060408201905061132a6000830185611025565b6113376020830184611252565b9392505050565b60006060820190506113536000830186611034565b6113606020830185611261565b61136d6040830184611261565b949350505050565b6000602082019050818103600083015261138e81611052565b9050919050565b600060208201905081810360008301526113ae81611092565b9050919050565b600060208201905081810360008301526113ce816110d2565b9050919050565b600060208201905081810360008301526113ee81611112565b9050919050565b6000602082019050818103600083015261140e81611152565b9050919050565b6000602082019050818103600083015261142e81611192565b9050919050565b6000602082019050818103600083015261144e816111d2565b9050919050565b6000602082019050818103600083015261146e81611212565b9050919050565b600060208201905061148a6000830184611252565b92915050565b600060a0820190506114a56000830188611252565b6114b26020830187611043565b6114bf6040830186611252565b6114cc6060830185611261565b6114d96080830184611252565b9695505050505050565b60006040820190506114f86000830185611252565b6115056020830184611252565b9392505050565b60006040820190506115216000830185611261565b61152e6020830184611252565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561155857600080fd5b8060405250919050565b600082825260208201905092915050565b600061157e8261159b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6115e281611573565b81146115ed57600080fd5b50565b6115f981611591565b811461160457600080fd5b50565b611610816115bb565b811461161b57600080fd5b5056fea2646970667358221220c978cdf33d268bafde03ac71029e39d37df6b57089dad12daad9e54f48cb53f764736f6c634300060c0033000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c300000000000000000000000023c2c34f38ce66ccc10e71e9bb2a06532d52c5e9
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063ae8a269e11610066578063ae8a269e14610159578063b4dca72414610175578063b9ad7ea914610191578063e767ec7e146101c3578063e9d1251a146101df5761009e565b80631c77ff04146100a35780633708659d146100bf5780635fbe4d1d146100db578063649a2790146100f9578063ac20874d14610129575b600080fd5b6100bd60048036038101906100b89190610f84565b6101fd565b005b6100d960048036038101906100d49190610fe9565b610355565b005b6100e36104a0565b6040516100f09190611270565b60405180910390f35b610113600480360381019061010e9190610f1f565b6104c4565b6040516101209190611475565b60405180910390f35b610143600480360381019061013e9190610f5b565b61053a565b6040516101509190611475565b60405180910390f35b610173600480360381019061016e9190610fc0565b610552565b005b61018f600480360381019061018a9190610fc0565b610622565b005b6101ab60048036038101906101a69190610f5b565b61089a565b6040516101ba9392919061133e565b60405180910390f35b6101dd60048036038101906101d89190610fc0565b6108f9565b005b6101e7610a44565b6040516101f49190611270565b60405180910390f35b7f00000000000000000000000023c2c34f38ce66ccc10e71e9bb2a06532d52c5e973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461028b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028290611455565b60405180910390fd5b60006102b28260008086815260200190815260200160002054610a6890919063ffffffff16565b9050670de0b6b3a76400008111156102ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f6906113b5565b60405180910390fd5b8060008085815260200190815260200160002081905550827f0740069fc8d861d85bed3b65ac6808125d778ea56d9b8221d41a1203281f62eb82426040516103489291906114e3565b60405180910390a2505050565b600061036a3384610a8790919063ffffffff16565b905060006001600083815260200190815260200160002090508060000160009054906101000a900460ff166103d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103cb90611375565b60405180910390fd5b836020015183602001511461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041590611435565b60405180910390fd5b610440848260000160019054906101000a900467ffffffffffffffff16610acc565b83600001511015610486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047d906113f5565b60405180910390fd5b610491848383610b53565b61049a83610622565b50505050565b7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c381565b600080600160006104de8686610a8790919063ffffffff16565b815260200190815260200160002090508060000160009054906101000a900460ff1661050e576000915050610534565b610530838260000160019054906101000a900467ffffffffffffffff16610acc565b9150505b92915050565b60006020528060005260406000206000915090505481565b60006105673383610a8790919063ffffffff16565b9050600060016000838152602001908152602001600020905060008160000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff161180156105d357508060000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff1642115b610612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060990611395565b60405180910390fd5b61061d838383610b53565b505050565b60006106373383610a8790919063ffffffff16565b90506001600082815260200190815260200160002060000160009054906101000a900460ff161561069d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610694906113d5565b60405180910390fd5b670de0b6b3a76400006000808460200151815260200190815260200160002054106106fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f490611415565b60405180910390fd5b6040518060600160405280600115158152602001600080856020015181526020019081526020016000205467ffffffffffffffff168152602001600067ffffffffffffffff168152506001600083815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505061080a7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c333308560000151610cae565b3373ffffffffffffffffffffffffffffffffffffffff167f32c3f8c5cea46ce4803829a315e5c219611031759200635880cac3933863f1928360000151846020015185604001516001600087815260200190815260200160002060000160019054906101000a900467ffffffffffffffff164260405161088e959493929190611490565b60405180910390a25050565b60016020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900467ffffffffffffffff16908060000160099054906101000a900467ffffffffffffffff16905083565b600061090e3383610a8790919063ffffffff16565b905060006001600083815260200190815260200160002090508060000160009054906101000a900460ff168015610967575060008160000160099054906101000a900467ffffffffffffffff1667ffffffffffffffff16145b6109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90611375565b60405180910390fd5b62278d0042018160000160096101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550813373ffffffffffffffffffffffffffffffffffffffff167f8a13ed2fab6e07ff3236ef8d7dc89784369012af6ebf994c55a181fabb7bbde28360000160099054906101000a900467ffffffffffffffff1642604051610a3792919061150c565b60405180910390a3505050565b7f00000000000000000000000023c2c34f38ce66ccc10e71e9bb2a06532d52c5e981565b600080828401905083811015610a7d57600080fd5b8091505092915050565b60003082846000015185602001518660400151604051602001610aae9594939291906112c2565b60405160208183030381529060405280519060200120905092915050565b6000610b4b610af68367ffffffffffffffff16670de0b6b3a7640000610d3490919063ffffffff16565b610b3d610b2a6000808860200151815260200190815260200160002054670de0b6b3a7640000610d3490919063ffffffff16565b8660000151610d4e90919063ffffffff16565b610d8090919063ffffffff16565b905092915050565b6000610b77848360000160019054906101000a900467ffffffffffffffff16610acc565b9050600081856000015103905060016000858152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549067ffffffffffffffff02191690556000820160096101000a81549067ffffffffffffffff02191690555050610c0f7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c33384610dbf565b6000811115610c5857610c577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c373adbeef000000000000000000000000000000000083610dbf565b5b833373ffffffffffffffffffffffffffffffffffffffff167f287be44bba238338787974842dfe3d140232a2f6a08f85b23ea3ff8f17805f9442604051610c9f9190611475565b60405180910390a35050505050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401610ceb9392919061128b565b600060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b50505050610d25610e42565b610d2e57600080fd5b50505050565b600082821115610d4357600080fd5b818303905092915050565b60008082840290506000841480610d6d575082848281610d6a57fe5b04145b610d7657600080fd5b8091505092915050565b6000808211610d8e57600080fd5b6000828481610d9957fe5b049050828481610da557fe5b06818402018414610db557600080fd5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610dfa929190611315565b600060405180830381600087803b158015610e1457600080fd5b505af1158015610e28573d6000803e3d6000fd5b50505050610e34610e42565b610e3d57600080fd5b505050565b600080600090503d60008114610e5f5760208114610e6857610e74565b60019150610e74565b60206000803e60005191505b50600081141591505090565b600081359050610e8f816115d9565b92915050565b600081359050610ea4816115f0565b92915050565b600060608284031215610ebc57600080fd5b610ec66060611535565b90506000610ed684828501610f0a565b6000830152506020610eea84828501610e95565b6020830152506040610efe84828501610f0a565b60408301525092915050565b600081359050610f1981611607565b92915050565b60008060808385031215610f3257600080fd5b6000610f4085828601610e80565b9250506020610f5185828601610eaa565b9150509250929050565b600060208284031215610f6d57600080fd5b6000610f7b84828501610e95565b91505092915050565b60008060408385031215610f9757600080fd5b6000610fa585828601610e95565b9250506020610fb685828601610f0a565b9150509250929050565b600060608284031215610fd257600080fd5b6000610fe084828501610eaa565b91505092915050565b60008060c08385031215610ffc57600080fd5b600061100a85828601610eaa565b925050606061101b85828601610eaa565b9150509250929050565b61102e81611573565b82525050565b61103d81611585565b82525050565b61104c81611591565b82525050565b600061105f600f83611562565b91507f424f4e445f4e4f545f41435449564500000000000000000000000000000000006000830152602082019050919050565b600061109f601183611562565b91507f424f4e445f4e4f545f554e4c4f434b45440000000000000000000000000000006000830152602082019050919050565b60006110df600c83611562565b91507f5054535f544f4f5f4849474800000000000000000000000000000000000000006000830152602082019050919050565b600061111f601383611562565b91507f424f4e445f414c52454144595f414354495645000000000000000000000000006000830152602082019050919050565b600061115f601083611562565b91507f4e45575f424f4e445f534d414c4c4552000000000000000000000000000000006000830152602082019050919050565b600061119f600c83611562565b91507f504f4f4c5f534c415348454400000000000000000000000000000000000000006000830152602082019050919050565b60006111df601183611562565b91507f504f4f4c5f49445f444946464552454e540000000000000000000000000000006000830152602082019050919050565b600061121f600c83611562565b91507f4f4e4c595f534c415348455200000000000000000000000000000000000000006000830152602082019050919050565b61125b816115bb565b82525050565b61126a816115c5565b82525050565b60006020820190506112856000830184611025565b92915050565b60006060820190506112a06000830186611025565b6112ad6020830185611025565b6112ba6040830184611252565b949350505050565b600060a0820190506112d76000830188611025565b6112e46020830187611025565b6112f16040830186611252565b6112fe6060830185611043565b61130b6080830184611252565b9695505050505050565b600060408201905061132a6000830185611025565b6113376020830184611252565b9392505050565b60006060820190506113536000830186611034565b6113606020830185611261565b61136d6040830184611261565b949350505050565b6000602082019050818103600083015261138e81611052565b9050919050565b600060208201905081810360008301526113ae81611092565b9050919050565b600060208201905081810360008301526113ce816110d2565b9050919050565b600060208201905081810360008301526113ee81611112565b9050919050565b6000602082019050818103600083015261140e81611152565b9050919050565b6000602082019050818103600083015261142e81611192565b9050919050565b6000602082019050818103600083015261144e816111d2565b9050919050565b6000602082019050818103600083015261146e81611212565b9050919050565b600060208201905061148a6000830184611252565b92915050565b600060a0820190506114a56000830188611252565b6114b26020830187611043565b6114bf6040830186611252565b6114cc6060830185611261565b6114d96080830184611252565b9695505050505050565b60006040820190506114f86000830185611252565b6115056020830184611252565b9392505050565b60006040820190506115216000830185611261565b61152e6020830184611252565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561155857600080fd5b8060405250919050565b600082825260208201905092915050565b600061157e8261159b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6115e281611573565b81146115ed57600080fd5b50565b6115f981611591565b811461160457600080fd5b50565b611610816115bb565b811461161b57600080fd5b5056fea2646970667358221220c978cdf33d268bafde03ac71029e39d37df6b57089dad12daad9e54f48cb53f764736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c300000000000000000000000023c2c34f38ce66ccc10e71e9bb2a06532d52c5e9
-----Decoded View---------------
Arg [0] : token (address): 0xADE00C28244d5CE17D72E40330B1c318cD12B7c3
Arg [1] : slasher (address): 0x23C2c34f38ce66ccC10E71e9bB2A06532D52C5E9
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3
Arg [1] : 00000000000000000000000023c2c34f38ce66ccc10e71e9bb2a06532d52c5e9
Deployed Bytecode Sourcemap
4261:30578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31913:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33780:552;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5313:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34337:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5416:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33505:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32216:518;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5489:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;32739:353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5351:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31913:298;31990:11;31976:25;;:10;:25;;;31968:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;32023:16;32042:28;32066:3;32042:11;:19;32054:6;32042:19;;;;;;;;;;;;:23;;:28;;;;:::i;:::-;32023:47;;5041:8;32083:11;:24;;32075:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;32151:11;32129;:19;32141:6;32129:19;;;;;;;;;;;:33;;;;32181:6;32172:34;32189:11;32202:3;32172:34;;;;;;;:::i;:::-;;;;;;;;31913:298;;;:::o;33780:552::-;33876:10;33889:21;33899:10;33889:4;:9;;:21;;;;:::i;:::-;33876:34;;33915:27;33945:5;:9;33951:2;33945:9;;;;;;;;;;;33915:39;;34064:9;:16;;;;;;;;;;;;34056:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;34131:4;:11;;;34113:7;:14;;;:29;34105:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;34195:50;34214:4;34220:9;:24;;;;;;;;;;;;34195:18;:50::i;:::-;34177:7;:14;;;:68;;34169:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;34271:35;34286:4;34292:2;34296:9;34271:14;:35::i;:::-;34311:16;34319:7;34311;:16::i;:::-;33780:552;;;;:::o;5313:34::-;;;:::o;34337:260::-;34430:4;34441:27;34471:5;:23;34477:16;34487:5;34477:4;:9;;:16;;;;:::i;:::-;34471:23;;;;;;;;;;;34441:53;;34504:9;:16;;;;;;;;;;;;34499:31;;34529:1;34522:8;;;;;34499:31;34542:50;34561:4;34567:9;:24;;;;;;;;;;;;34542:18;:50::i;:::-;34535:57;;;34337:260;;;;;:::o;5416:44::-;;;;;;;;;;;;;;;;;:::o;33505:270::-;33563:10;33576:21;33586:10;33576:4;:9;;:21;;;;:::i;:::-;33563:34;;33602:27;33632:5;:9;33638:2;33632:9;;;;;;;;;;;33602:39;;33677:1;33654:9;:20;;;;;;;;;;;;:24;;;:54;;;;;33688:9;:20;;;;;;;;;;;;33682:26;;:3;:26;33654:54;33646:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;33735:35;33750:4;33756:2;33760:9;33735:14;:35::i;:::-;33505:270;;;:::o;32216:518::-;32275:10;32288:21;32298:10;32288:4;:9;;:21;;;;:::i;:::-;32275:34;;32323:5;:9;32329:2;32323:9;;;;;;;;;;;:16;;;;;;;;;;;;32322:17;32314:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;5041:8;32376:11;:24;32388:4;:11;;;32376:24;;;;;;;;;;;;:36;32368:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;32446:107;;;;;;;;32470:4;32446:107;;;;;;32503:11;:24;32515:4;:11;;;32503:24;;;;;;;;;;;;32446:107;;;;;;32546:1;32446:107;;;;;32434:5;:9;32440:2;32434:9;;;;;;;;;;;:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32558:73;32581:9;32592:10;32612:4;32619;:11;;;32558:22;:73::i;:::-;32649:10;32641:88;;;32661:4;:11;;;32674:4;:11;;;32687:4;:10;;;32699:5;:9;32705:2;32699:9;;;;;;;;;;;:24;;;;;;;;;;;;32725:3;32641:88;;;;;;;;;;:::i;:::-;;;;;;;;32216:518;;:::o;5489:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32739:353::-;32804:10;32817:21;32827:10;32817:4;:9;;:21;;;;:::i;:::-;32804:34;;32843:27;32873:5;:9;32879:2;32873:9;;;;;;;;;;;32843:39;;32895:9;:16;;;;;;;;;;;;:45;;;;;32939:1;32915:9;:20;;;;;;;;;;;;:25;;;32895:45;32887:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5084:7;32995:3;:20;32965:9;:20;;;:51;;;;;;;;;;;;;;;;;;33057:2;33045:10;33026:61;;;33061:9;:20;;;;;;;;;;;;33083:3;33026:61;;;;;;;:::i;:::-;;;;;;;;32739:353;;;:::o;5351:36::-;;;:::o;589:136::-;641:4;658:6;671:1;667;:5;658:14;;696:1;691;:6;;683:15;;;;;;716:1;709:8;;;589:136;;;;:::o;4039:215::-;4119:7;4176:4;4187:6;4199:4;:11;;;4216:4;:11;;;4233:4;:10;;;4152:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4142:107;;;;;;4135:114;;4039:215;;;;:::o;34602:234::-;34706:4;34724:107;34795:35;34814:14;34809:20;;5041:8;34795:13;;:35;;;;:::i;:::-;34724:61;34745:39;34759:11;:24;34771:4;:11;;;34759:24;;;;;;;;;;;;5041:8;34745:13;;:39;;;;:::i;:::-;34724:4;:11;;;:20;;:61;;;;:::i;:::-;:70;;:107;;;;:::i;:::-;34717:114;;34602:234;;;;:::o;33097:403::-;33206:11;33220:50;33239:4;33245:9;:24;;;;;;;;;;;;33220:18;:50::i;:::-;33206:64;;33275:11;33303:6;33289:4;:11;;;:20;33275:34;;33321:5;:9;33327:2;33321:9;;;;;;;;;;;;33314:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33335:49;33354:9;33365:10;33377:6;33335:18;:49::i;:::-;33402:1;33393:6;:10;33389:64;;;33405:48;33424:9;5264:42;33446:6;33405:18;:48::i;:::-;33389:64;33487:2;33475:10;33463:32;;;33491:3;33463:32;;;;;;:::i;:::-;;;;;;;;33097:403;;;;;:::o;2505:176::-;2611:5;2598:32;;;2631:4;2637:2;2641:6;2598:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2661:14;:12;:14::i;:::-;2653:23;;;;;;2505:176;;;;:::o;466:115::-;518:4;548:1;543;:6;;535:15;;;;;;572:1;568;:5;561:12;;466:115;;;;:::o;127:150::-;179:4;196:6;209:1;205;:5;196:14;;234:1;229;:6;:20;;;;248:1;243;239;:5;;;;;;:10;229:20;221:29;;;;;;268:1;261:8;;;127:150;;;;:::o;285:173::-;337:4;366:1;362;:5;354:14;;;;;;379:6;392:1;388;:5;;;;;;379:14;;429:1;425;:5;;;;;;421:1;417;:5;:13;412:1;:18;404:27;;;;;;449:1;442:8;;;285:173;;;;:::o;2352:148::-;2440:5;2427:28;;;2456:2;2460:6;2427:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2480:14;:12;:14::i;:::-;2472:23;;;;;;2352:148;;;:::o;1729:618::-;1784:4;1797:19;1819:1;1797:23;;1911:16;1980:3;1975:38;;;;2069:4;2064:169;;;;1904:404;;1975:38;2006:1;1991:16;;1975:38;;2064:169;2147:4;2142:3;2137;2122:30;2223:3;2217:10;2202:25;;1904:404;;2341:1;2326:11;:16;;2319:23;;;1729:618;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:130::-;;222:6;209:20;200:29;;234:33;261:5;234:33;:::i;:::-;194:78;;;;:::o;309:612::-;;419:4;407:9;402:3;398:19;394:30;391:2;;;437:1;434;427:12;391:2;455:20;470:4;455:20;:::i;:::-;446:29;;527:1;559:49;604:3;595:6;584:9;580:22;559:49;:::i;:::-;552:4;545:5;541:16;534:75;485:135;672:2;705:49;750:3;741:6;730:9;726:22;705:49;:::i;:::-;698:4;691:5;687:16;680:75;630:136;817:2;850:49;895:3;886:6;875:9;871:22;850:49;:::i;:::-;843:4;836:5;832:16;825:75;776:135;385:536;;;;:::o;928:130::-;;1008:6;995:20;986:29;;1020:33;1047:5;1020:33;:::i;:::-;980:78;;;;:::o;1065:409::-;;;1207:3;1195:9;1186:7;1182:23;1178:33;1175:2;;;1224:1;1221;1214:12;1175:2;1259:1;1276:53;1321:7;1312:6;1301:9;1297:22;1276:53;:::i;:::-;1266:63;;1238:97;1366:2;1384:74;1450:7;1441:6;1430:9;1426:22;1384:74;:::i;:::-;1374:84;;1345:119;1169:305;;;;;:::o;1481:241::-;;1585:2;1573:9;1564:7;1560:23;1556:32;1553:2;;;1601:1;1598;1591:12;1553:2;1636:1;1653:53;1698:7;1689:6;1678:9;1674:22;1653:53;:::i;:::-;1643:63;;1615:97;1547:175;;;;:::o;1729:366::-;;;1850:2;1838:9;1829:7;1825:23;1821:32;1818:2;;;1866:1;1863;1856:12;1818:2;1901:1;1918:53;1963:7;1954:6;1943:9;1939:22;1918:53;:::i;:::-;1908:63;;1880:97;2008:2;2026:53;2071:7;2062:6;2051:9;2047:22;2026:53;:::i;:::-;2016:63;;1987:98;1812:283;;;;;:::o;2102:::-;;2227:2;2215:9;2206:7;2202:23;2198:32;2195:2;;;2243:1;2240;2233:12;2195:2;2278:1;2295:74;2361:7;2352:6;2341:9;2337:22;2295:74;:::i;:::-;2285:84;;2257:118;2189:196;;;;:::o;2392:451::-;;;2555:3;2543:9;2534:7;2530:23;2526:33;2523:2;;;2572:1;2569;2562:12;2523:2;2607:1;2624:74;2690:7;2681:6;2670:9;2666:22;2624:74;:::i;:::-;2614:84;;2586:118;2735:2;2753:74;2819:7;2810:6;2799:9;2795:22;2753:74;:::i;:::-;2743:84;;2714:119;2517:326;;;;;:::o;2850:113::-;2933:24;2951:5;2933:24;:::i;:::-;2928:3;2921:37;2915:48;;:::o;2970:104::-;3047:21;3062:5;3047:21;:::i;:::-;3042:3;3035:34;3029:45;;:::o;3081:113::-;3164:24;3182:5;3164:24;:::i;:::-;3159:3;3152:37;3146:48;;:::o;3202:315::-;;3362:67;3426:2;3421:3;3362:67;:::i;:::-;3355:74;;3462:17;3458:1;3453:3;3449:11;3442:38;3508:2;3503:3;3499:12;3492:19;;3348:169;;;:::o;3526:317::-;;3686:67;3750:2;3745:3;3686:67;:::i;:::-;3679:74;;3786:19;3782:1;3777:3;3773:11;3766:40;3834:2;3829:3;3825:12;3818:19;;3672:171;;;:::o;3852:312::-;;4012:67;4076:2;4071:3;4012:67;:::i;:::-;4005:74;;4112:14;4108:1;4103:3;4099:11;4092:35;4155:2;4150:3;4146:12;4139:19;;3998:166;;;:::o;4173:319::-;;4333:67;4397:2;4392:3;4333:67;:::i;:::-;4326:74;;4433:21;4429:1;4424:3;4420:11;4413:42;4483:2;4478:3;4474:12;4467:19;;4319:173;;;:::o;4501:316::-;;4661:67;4725:2;4720:3;4661:67;:::i;:::-;4654:74;;4761:18;4757:1;4752:3;4748:11;4741:39;4808:2;4803:3;4799:12;4792:19;;4647:170;;;:::o;4826:312::-;;4986:67;5050:2;5045:3;4986:67;:::i;:::-;4979:74;;5086:14;5082:1;5077:3;5073:11;5066:35;5129:2;5124:3;5120:12;5113:19;;4972:166;;;:::o;5147:317::-;;5307:67;5371:2;5366:3;5307:67;:::i;:::-;5300:74;;5407:19;5403:1;5398:3;5394:11;5387:40;5455:2;5450:3;5446:12;5439:19;;5293:171;;;:::o;5473:312::-;;5633:67;5697:2;5692:3;5633:67;:::i;:::-;5626:74;;5733:14;5729:1;5724:3;5720:11;5713:35;5776:2;5771:3;5767:12;5760:19;;5619:166;;;:::o;5793:113::-;5876:24;5894:5;5876:24;:::i;:::-;5871:3;5864:37;5858:48;;:::o;5913:110::-;5994:23;6011:5;5994:23;:::i;:::-;5989:3;5982:36;5976:47;;:::o;6030:222::-;;6157:2;6146:9;6142:18;6134:26;;6171:71;6239:1;6228:9;6224:17;6215:6;6171:71;:::i;:::-;6128:124;;;;:::o;6259:444::-;;6442:2;6431:9;6427:18;6419:26;;6456:71;6524:1;6513:9;6509:17;6500:6;6456:71;:::i;:::-;6538:72;6606:2;6595:9;6591:18;6582:6;6538:72;:::i;:::-;6621;6689:2;6678:9;6674:18;6665:6;6621:72;:::i;:::-;6413:290;;;;;;:::o;6710:668::-;;6949:3;6938:9;6934:19;6926:27;;6964:71;7032:1;7021:9;7017:17;7008:6;6964:71;:::i;:::-;7046:72;7114:2;7103:9;7099:18;7090:6;7046:72;:::i;:::-;7129;7197:2;7186:9;7182:18;7173:6;7129:72;:::i;:::-;7212;7280:2;7269:9;7265:18;7256:6;7212:72;:::i;:::-;7295:73;7363:3;7352:9;7348:19;7339:6;7295:73;:::i;:::-;6920:458;;;;;;;;:::o;7385:333::-;;7540:2;7529:9;7525:18;7517:26;;7554:71;7622:1;7611:9;7607:17;7598:6;7554:71;:::i;:::-;7636:72;7704:2;7693:9;7689:18;7680:6;7636:72;:::i;:::-;7511:207;;;;;:::o;7725:424::-;;7898:2;7887:9;7883:18;7875:26;;7912:65;7974:1;7963:9;7959:17;7950:6;7912:65;:::i;:::-;7988:70;8054:2;8043:9;8039:18;8030:6;7988:70;:::i;:::-;8069;8135:2;8124:9;8120:18;8111:6;8069:70;:::i;:::-;7869:280;;;;;;:::o;8156:416::-;;8356:2;8345:9;8341:18;8333:26;;8406:9;8400:4;8396:20;8392:1;8381:9;8377:17;8370:47;8431:131;8557:4;8431:131;:::i;:::-;8423:139;;8327:245;;;:::o;8579:416::-;;8779:2;8768:9;8764:18;8756:26;;8829:9;8823:4;8819:20;8815:1;8804:9;8800:17;8793:47;8854:131;8980:4;8854:131;:::i;:::-;8846:139;;8750:245;;;:::o;9002:416::-;;9202:2;9191:9;9187:18;9179:26;;9252:9;9246:4;9242:20;9238:1;9227:9;9223:17;9216:47;9277:131;9403:4;9277:131;:::i;:::-;9269:139;;9173:245;;;:::o;9425:416::-;;9625:2;9614:9;9610:18;9602:26;;9675:9;9669:4;9665:20;9661:1;9650:9;9646:17;9639:47;9700:131;9826:4;9700:131;:::i;:::-;9692:139;;9596:245;;;:::o;9848:416::-;;10048:2;10037:9;10033:18;10025:26;;10098:9;10092:4;10088:20;10084:1;10073:9;10069:17;10062:47;10123:131;10249:4;10123:131;:::i;:::-;10115:139;;10019:245;;;:::o;10271:416::-;;10471:2;10460:9;10456:18;10448:26;;10521:9;10515:4;10511:20;10507:1;10496:9;10492:17;10485:47;10546:131;10672:4;10546:131;:::i;:::-;10538:139;;10442:245;;;:::o;10694:416::-;;10894:2;10883:9;10879:18;10871:26;;10944:9;10938:4;10934:20;10930:1;10919:9;10915:17;10908:47;10969:131;11095:4;10969:131;:::i;:::-;10961:139;;10865:245;;;:::o;11117:416::-;;11317:2;11306:9;11302:18;11294:26;;11367:9;11361:4;11357:20;11353:1;11342:9;11338:17;11331:47;11392:131;11518:4;11392:131;:::i;:::-;11384:139;;11288:245;;;:::o;11540:222::-;;11667:2;11656:9;11652:18;11644:26;;11681:71;11749:1;11738:9;11734:17;11725:6;11681:71;:::i;:::-;11638:124;;;;:::o;11769:664::-;;12006:3;11995:9;11991:19;11983:27;;12021:71;12089:1;12078:9;12074:17;12065:6;12021:71;:::i;:::-;12103:72;12171:2;12160:9;12156:18;12147:6;12103:72;:::i;:::-;12186;12254:2;12243:9;12239:18;12230:6;12186:72;:::i;:::-;12269:70;12335:2;12324:9;12320:18;12311:6;12269:70;:::i;:::-;12350:73;12418:3;12407:9;12403:19;12394:6;12350:73;:::i;:::-;11977:456;;;;;;;;:::o;12440:333::-;;12595:2;12584:9;12580:18;12572:26;;12609:71;12677:1;12666:9;12662:17;12653:6;12609:71;:::i;:::-;12691:72;12759:2;12748:9;12744:18;12735:6;12691:72;:::i;:::-;12566:207;;;;;:::o;12780:329::-;;12933:2;12922:9;12918:18;12910:26;;12947:69;13013:1;13002:9;12998:17;12989:6;12947:69;:::i;:::-;13027:72;13095:2;13084:9;13080:18;13071:6;13027:72;:::i;:::-;12904:205;;;;;:::o;13116:256::-;;13178:2;13172:9;13162:19;;13216:4;13208:6;13204:17;13315:6;13303:10;13300:22;13279:18;13267:10;13264:34;13261:62;13258:2;;;13336:1;13333;13326:12;13258:2;13356:10;13352:2;13345:22;13156:216;;;;:::o;13380:163::-;;13495:6;13490:3;13483:19;13532:4;13527:3;13523:14;13508:29;;13476:67;;;;:::o;13551:91::-;;13613:24;13631:5;13613:24;:::i;:::-;13602:35;;13596:46;;;:::o;13649:85::-;;13722:5;13715:13;13708:21;13697:32;;13691:43;;;:::o;13741:72::-;;13803:5;13792:16;;13786:27;;;:::o;13820:121::-;;13893:42;13886:5;13882:54;13871:65;;13865:76;;;:::o;13948:72::-;;14010:5;13999:16;;13993:27;;;:::o;14027:96::-;;14099:18;14092:5;14088:30;14077:41;;14071:52;;;:::o;14130:117::-;14199:24;14217:5;14199:24;:::i;:::-;14192:5;14189:35;14179:2;;14238:1;14235;14228:12;14179:2;14173:74;:::o;14254:117::-;14323:24;14341:5;14323:24;:::i;:::-;14316:5;14313:35;14303:2;;14362:1;14359;14352:12;14303:2;14297:74;:::o;14378:117::-;14447:24;14465:5;14447:24;:::i;:::-;14440:5;14437:35;14427:2;;14486:1;14483;14476:12;14427:2;14421:74;:::o
Swarm Source
ipfs://c978cdf33d268bafde03ac71029e39d37df6b57089dad12daad9e54f48cb53f7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.181908 | 36,071,452.1678 | $6,561,685.72 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.