Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 44 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 13834140 | 1114 days ago | IN | 0 ETH | 0.00355553 | ||||
Redeem | 13789102 | 1121 days ago | IN | 0 ETH | 0.00508665 | ||||
Redeem | 13789094 | 1121 days ago | IN | 0 ETH | 0.00465825 | ||||
Redeem | 13687989 | 1137 days ago | IN | 0 ETH | 0.00686875 | ||||
Redeem | 13687745 | 1137 days ago | IN | 0 ETH | 0.00811612 | ||||
Redeem | 13647849 | 1143 days ago | IN | 0 ETH | 0.01791595 | ||||
Redeem | 13647845 | 1143 days ago | IN | 0 ETH | 0.01671245 | ||||
Redeem | 13612139 | 1149 days ago | IN | 0 ETH | 0.01170386 | ||||
Staking | 13564094 | 1156 days ago | IN | 0 ETH | 0.02428824 | ||||
Redeem | 13458780 | 1173 days ago | IN | 0 ETH | 0.00287444 | ||||
Redeem | 13458780 | 1173 days ago | IN | 0 ETH | 0.00811411 | ||||
Redeem | 13458695 | 1173 days ago | IN | 0 ETH | 0.00810286 | ||||
Redeem | 13458671 | 1173 days ago | IN | 0 ETH | 0.00680927 | ||||
Redeem | 13458661 | 1173 days ago | IN | 0 ETH | 0.00683006 | ||||
Redeem | 13458654 | 1173 days ago | IN | 0 ETH | 0.00644052 | ||||
Staking | 13299329 | 1198 days ago | IN | 0 ETH | 0.01381926 | ||||
Staking | 13281357 | 1201 days ago | IN | 0 ETH | 0.01186125 | ||||
Staking | 13272814 | 1202 days ago | IN | 0 ETH | 0.01351732 | ||||
Staking | 13257467 | 1204 days ago | IN | 0 ETH | 0.00724097 | ||||
Staking | 13257453 | 1204 days ago | IN | 0 ETH | 0.02324253 | ||||
Staking | 13256886 | 1204 days ago | IN | 0 ETH | 0.00778498 | ||||
Staking | 13256279 | 1205 days ago | IN | 0 ETH | 0.00730975 | ||||
Staking | 13254829 | 1205 days ago | IN | 0 ETH | 0.00491937 | ||||
Staking | 13228177 | 1209 days ago | IN | 0 ETH | 0.00582777 | ||||
Staking | 13203053 | 1213 days ago | IN | 0 ETH | 0.0075686 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CompStaking
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.4.25; abstract contract IComp { mapping (uint256 => string) public geneMap; function ownerOf(uint256 tokenId) external view virtual returns (address owner); uint256 public tokenId; } abstract contract IERC20{ function transferFrom(address sender, address recipient, uint256 amount) external virtual returns (bool); function transfer(address recipient, uint256 amount) external virtual returns (bool); function balanceOf(address account) external view virtual returns (uint256); } contract CompStaking { struct PoolInfo{ uint32 startRedeemTokenId; // 2000 address poolTokenContract; // uint32 initStakingRatio; //10 uint32 onceCompReward; //20 address initOwner; uint32 totalPower; } uint32 private _syncTokenId=0; mapping (address => mapping(uint32=>uint256) ) public compStakingMap; mapping (address => PoolInfo ) public pools; uint8[][] public standTemplates= [ [5,9,10,10,1,7,3,0,0], [5,9,10,3,10,1,0,0,0], [5,9,10,3,10,1,0,0,0], [5,8,5,10,3,4,1,0,0], [5,9,10,3,1,0,0,0,0], [5,9,3,10,1,4,0,0,0], [5,9,10,10,1,0,0,0,0], [5,8,5,10,1,3,0,0,0], [5,9,3,10,2,1,0,0,0], [5,9,3,10,5,1,0,0,0], [5,9,10,3,10,1,2,0,0], [5,9,10,10,3,1,0,0,0], [5,9,3,10,1,10,0,0,0], [5,9,10,10,1,10,10,5,0], [5,9,10,10,4,2,1,3,0], [5,9,10,1,3,0,0,0,0], [5,9,3,10,7,1,0,0,0], [5,9,10,10,1,0,0,0,0], [5,9,10,10,6,1,0,0,0], [5,9,10,3,9,1,0,0,0], [5,9,10,10,1,3,7,0,0], [5,9,10,3,1,0,0,0,0], [5,9,10,3,1,4,0,0,0], [5,9,10,1,10,3,7,5,0], [5,9,3,10,10,1,0,0,0], [5,9,10,10,3,1,0,0,0], [5,9,10,4,3,10,9,1,0], [5,9,1,3,0,0,0,0,0], [5,9,10,3,5,1,0,0,0], [5,9,2,3,10,1,0,0,0], [5,9,10,3,1,0,0,0,0], [5,9,1,2,7,3,0,0,0], [5,9,10,1,10,3,0,0,0], [5,9,10,1,3,0,0,0,0], [5,9,10,3,4,1,0,0,0], [5,9,10,10,3,4,1,10,0], [5,9,3,10,1,0,0,0,0], [5,9,10,10,10,1,3,0,0], [5,9,10,7,1,10,0,0,0], [5,9,10,1,10,10,0,0,0], [5,9,10,1,3,0,0,0,0], [5,9,10,1,0,0,0,0,0], [5,9,10,10,3,4,1,0,0], [5,9,10,10,10,3,1,0,0], [5,9,10,1,0,0,0,0,0], [5,9,10,1,7,3,0,0,0], [5,9,3,10,7,1,0,0,0], [5,9,1,3,7,0,0,0,0], [5,9,4,3,1,6,0,0,0], [5,9,10,1,3,0,0,0,0], [5,9,10,1,3,10,7,0,0], [5,9,2,1,3,7,0,0,0], [5,9,10,7,10,1,3,0,0], [5,8,10,10,1,10,0,0,0], [5,9,10,10,7,3,1,2,0], [5,9,10,7,1,3,10,0,0], [5,9,10,1,10,3,7,10,0], [5,9,1,10,10,2,10,0,0], [5,9,10,10,1,0,0,0,0], [5,9,10,10,3,5,1,0,0], [5,9,10,10,1,10,10,10,0], [5,9,10,10,3,1,10,0,0], [5,9,10,1,10,6,0,0,0], [5,9,2,10,10,1,3,0,0], [5,9,10,10,1,0,0,0,0], [5,9,10,10,3,1,0,0,0], [5,9,10,10,3,2,1,0,0], [5,9,10,10,1,0,0,0,0], [1,9,10,10,1,0,0,0,0], [5,9,10,2,4,3,1,10,0], [5,9,10,1,3,7,0,0,0], [5,9,10,1,3,0,0,0,0], [5,9,10,10,2,1,3,4,0], [5,9,10,10,3,10,1,0,0], [5,9,10,10,10,3,1,0,0], [5,9,10,1,10,0,0,0,0], [5,9,10,10,1,10,3,0,0], [5,9,10,10,10,3,1,4,0], [5,9,10,3,1,0,0,0,0], [5,9,10,1,3,10,0,0,0], [5,9,10,3,10,10,1,0,0], [5,9,10,10,3,1,4,10,10], [5,9,10,10,4,10,10,1,0], [5,9,4,10,3,10,1,2,0], [5,9,10,10,3,1,0,0,0], [5,9,10,1,3,0,0,0,0], [5,9,7,1,5,10,3,0,0], [5,9,10,10,3,4,1,0,0], [5,9,4,10,3,1,10,0,0], [5,9,10,1,3,10,0,0,0], [5,9,10,10,3,1,0,0,0], [5,9,10,4,10,1,3,0,0], [5,9,10,10,3,1,0,0,0], [5,9,10,3,1,5,9,0,0], [1,9,10,1,3,9,0,0,0], [5,9,10,2,10,3,10,1,0], [5,9,10,3,4,1,10,0,0], [5,9,1,10,10,3,0,0,0], [5,9,3,10,1,10,0,0,0], [5,9,10,10,7,1,3,0,0] ]; address public compContract= address(0xABa31c041E916e4141036F080B554D40Cdb2BCD0); event Staking(address indexed from,uint32 power,uint256 amount); event Redeem(address indexed to,uint32 compId,uint32 power,uint256 amount); /** * * compPower * * Requirements * - `tokenId` tokenId */ function compPower(uint32 tokenId) public view returns(uint8){ //fetch gene from contract IComp comp = IComp(compContract); string memory gene = comp.geneMap(tokenId); require(bytes(gene).length > 0,'token is not exist'); uint8 power = 0; uint8[] memory geneIntArray = _geneToIntArray(gene); for(uint8 i= 1;i<geneIntArray.length; i++){ if(geneIntArray[i]==99){ //stop flag //sex uint8 sexNum = geneIntArray[i-1]; if(sexNum == 0){ power=power+5; }else if(sexNum==3){ power=power+1; }else{ power=power+3; } break; } //not sex gene and not match add 10 power else if((geneIntArray[i+1] != 99) && (geneIntArray[i] != standTemplates[geneIntArray[0]][i-1] )){ power=power+1; } } return power*10; } /** * * geneToIntArray * * Requirements * - `geneStr` geneStr */ function _geneToIntArray(string memory geneStr) private pure returns(uint8[] memory){ uint8[] memory geneIntArray = new uint8[](12); bytes memory genebytes = bytes (geneStr); uint8 tempValue = 0; uint length=0; for(uint256 i=0;i<genebytes.length;i++){ uint8 c = uint8(genebytes[i]); //is number: 0-9 if(c >= 48 && c <= 57){ tempValue = tempValue*10 + (c - 48); }else{ geneIntArray[length] = tempValue; tempValue = 0; length++; } } geneIntArray[length]=tempValue; geneIntArray[length+1] = 99; //stop flag return geneIntArray; } /** * * staking params * * Requirements * - `compIdList` compIdList * - `poolTokenContract` */ function currentStakingParams(uint32[] memory compIdList,address poolTokenContract) public view returns( uint32, uint256) { uint32 totalPower =0; for(uint8 i=0;i<compIdList.length;i++){ totalPower += compPower(compIdList[i]); } return (totalPower,_currentStakingAmount(totalPower,poolTokenContract)); } /** * * currentStakingAmount * * Requirements * - `power` tokenId list * - `poolTokenContract` */ function _currentStakingAmount(uint32 power,address poolTokenContract) private view returns( uint256) { PoolInfo memory pool = pools[poolTokenContract]; require(pool.initOwner != address(0), "pool is not exist"); uint availableBouns = poolAvailableBouns(poolTokenContract); return pool.totalPower>0? (availableBouns * power / pool.totalPower) : (power*pool.initStakingRatio * 10**uint256(18)); } function poolAvailableBouns(address poolTokenContract) public view returns(uint256){ PoolInfo memory pool = pools[poolTokenContract]; require(pool.initOwner != address(0), "pool is not exist"); IComp comp = IComp(compContract); IERC20 poolBalance = IERC20(poolTokenContract); uint256 totalPower = pool.totalPower; uint256 maxTokenId = comp.tokenId(); uint256 totalBouns = poolBalance.balanceOf(address(this)); if(maxTokenId> pool.startRedeemTokenId && totalPower>0){ //start if(block.number<13600000){ //stop time totalBouns -= (10000-(maxTokenId-1)) * pool.onceCompReward * 10**uint256(18); } }else{ totalBouns = totalPower*pool.initStakingRatio * 10**uint256(18); } return totalBouns; } /** * * staking * * Requirements * - `compIdList` tokenId list * - `poolTokenContract` */ function staking(uint32[] memory compIdList , address poolTokenContract) public returns (bool){ PoolInfo storage poolInfo = pools[poolTokenContract]; require(poolInfo.initOwner != address(0), "pool is not exist"); require(compIdList.length > 0 , "at least one comp"); uint32 stakingPower = 0; for(uint8 i=0;i<compIdList.length;i++){ IComp comp = IComp(compContract); address owner = comp.ownerOf(compIdList[i]); require(owner==msg.sender, "must be owner of token"); require(compStakingMap[poolTokenContract][compIdList[i]]==0,"already staking "); uint32 power = compPower(compIdList[i]); compStakingMap[poolTokenContract][compIdList[i]] = power; stakingPower += power; } uint256 stakingAmount = _currentStakingAmount(stakingPower,poolTokenContract); emit Staking(msg.sender,stakingPower,stakingAmount); IERC20 erc20 = IERC20(poolTokenContract); erc20.transferFrom(msg.sender,address(this), stakingAmount); poolInfo.totalPower += stakingPower; return true; } /** * * redeem staking * * Requirements * - `compId` redeem compId * - `poolTokenContract` */ function redeem(uint32 compId, address poolTokenContract)public returns (bool){ PoolInfo storage poolInfo = pools[poolTokenContract]; require(poolInfo.initOwner != address(0), "pool is not exist"); IComp comp = IComp(compContract); address owner = comp.ownerOf(compId); require(owner==msg.sender, "must be owner of token"); require(compStakingMap[poolTokenContract][compId] !=0 , "not staking"); uint32 power= compPower(compId); require(poolInfo.totalPower>=power, "power error"); uint256 amount = _currentStakingAmount(power,poolTokenContract); poolInfo.totalPower -= power; IERC20 erc20 = IERC20(poolTokenContract); uint256 redeemAmount = poolInfo.totalPower > 0 ? (amount * 99 / 100): amount; erc20.transfer(msg.sender, redeemAmount); //1% fee compStakingMap[poolTokenContract][compId] = 0; emit Redeem(msg.sender, compId,power,redeemAmount); return true; } /** * * add new pool * * Requirements * - `startRedeemTokenId` * - `poolTokenContract` * - `initStakingRatio` * - `onceCompReward` */ function createPool(uint32 startRedeemTokenId,address poolTokenContract, uint32 initStakingRatio,uint32 onceCompReward) public returns (bool){ PoolInfo storage poolInfo = pools[poolTokenContract]; require(poolInfo.initOwner == address(0), "staking has started"); IERC20 erc20 = IERC20(poolTokenContract); erc20.transferFrom(msg.sender,address(this), onceCompReward * 10000 * 10**uint256(18)); poolInfo.startRedeemTokenId = startRedeemTokenId; poolInfo.poolTokenContract = poolTokenContract; poolInfo.initStakingRatio = initStakingRatio; poolInfo.onceCompReward = onceCompReward; poolInfo.initOwner = msg.sender; return true; } }
{ "remappings": [], "optimizer": { "enabled": false, "runs": 200 }, "evmVersion": "london", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint32","name":"compId","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"power","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint32","name":"power","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staking","type":"event"},{"inputs":[],"name":"compContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"tokenId","type":"uint32"}],"name":"compPower","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"compStakingMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"startRedeemTokenId","type":"uint32"},{"internalType":"address","name":"poolTokenContract","type":"address"},{"internalType":"uint32","name":"initStakingRatio","type":"uint32"},{"internalType":"uint32","name":"onceCompReward","type":"uint32"}],"name":"createPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"compIdList","type":"uint32[]"},{"internalType":"address","name":"poolTokenContract","type":"address"}],"name":"currentStakingParams","outputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"poolTokenContract","type":"address"}],"name":"poolAvailableBouns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pools","outputs":[{"internalType":"uint32","name":"startRedeemTokenId","type":"uint32"},{"internalType":"address","name":"poolTokenContract","type":"address"},{"internalType":"uint32","name":"initStakingRatio","type":"uint32"},{"internalType":"uint32","name":"onceCompReward","type":"uint32"},{"internalType":"address","name":"initOwner","type":"address"},{"internalType":"uint32","name":"totalPower","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"compId","type":"uint32"},{"internalType":"address","name":"poolTokenContract","type":"address"}],"name":"redeem","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"compIdList","type":"uint32[]"},{"internalType":"address","name":"poolTokenContract","type":"address"}],"name":"staking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"standTemplates","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260008060006101000a81548163ffffffff021916908363ffffffff16021790555060405180610c800160405280604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600760ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600860ff168152602001600560ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600460ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600860ff168152602001600560ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600260ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600560ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600260ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600a60ff168152602001600560ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600460ff168152602001600260ff168152602001600160ff168152602001600360ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600760ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600660ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600960ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600760ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600460ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600360ff168152602001600760ff168152602001600560ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600460ff168152602001600360ff168152602001600a60ff168152602001600960ff168152602001600160ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600560ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600260ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600160ff168152602001600260ff168152602001600760ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600a60ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600760ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600760ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600760ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600160ff168152602001600360ff168152602001600760ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600460ff168152602001600360ff168152602001600160ff168152602001600660ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600a60ff168152602001600760ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600260ff168152602001600160ff168152602001600360ff168152602001600760ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600760ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600860ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600760ff168152602001600360ff168152602001600160ff168152602001600260ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600760ff168152602001600160ff168152602001600360ff168152602001600a60ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600360ff168152602001600760ff168152602001600a60ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600160ff168152602001600a60ff168152602001600a60ff168152602001600260ff168152602001600a60ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600560ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600a60ff168152602001600a60ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600660ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600260ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600260ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600160ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600260ff168152602001600460ff168152602001600360ff168152602001600160ff168152602001600a60ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600760ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600260ff168152602001600160ff168152602001600360ff168152602001600460ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600460ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600460ff168152602001600a60ff168152602001600a60ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600460ff168152602001600a60ff168152602001600a60ff168152602001600160ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600460ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600260ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600760ff168152602001600160ff168152602001600560ff168152602001600a60ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600460ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600460ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600160ff168152602001600560ff168152602001600960ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600160ff168152602001600960ff168152602001600a60ff168152602001600160ff168152602001600360ff168152602001600960ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600260ff168152602001600a60ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600360ff168152602001600460ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600160ff168152602001600a60ff168152602001600a60ff168152602001600360ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600360ff168152602001600a60ff168152602001600160ff168152602001600a60ff168152602001600060ff168152602001600060ff168152602001600060ff168152508152602001604051806101200160405280600560ff168152602001600960ff168152602001600a60ff168152602001600a60ff168152602001600760ff168152602001600160ff168152602001600360ff168152602001600060ff168152602001600060ff16815250815250600390606462002945929190620029af565b5073aba31c041e916e4141036f080b554d40cdb2bcd0600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620029a857600080fd5b5062002b30565b828054828255906000526020600020908101928215620029fe579160200282015b82811115620029fd57825182906009620029ec92919062002a11565b5091602001919060010190620029d0565b5b50905062002a0d919062002abf565b5090565b82805482825590600052602060002090601f0160209004810192821562002aac5791602002820160005b8382111562002a7b57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262002a3b565b801562002aaa5782816101000a81549060ff021916905560010160208160000104928301926001030262002a7b565b505b50905062002abb919062002ae7565b5090565b5b8082111562002ae3576000818162002ad9919062002b06565b5060010162002ac0565b5090565b5b8082111562002b0257600081600090555060010162002ae8565b5090565b50805460008255601f01602090049060005260206000209081019062002b2d919062002ae7565b50565b612cf88062002b406000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063cc1c17c711610066578063cc1c17c714610199578063d07ad165146101c9578063d329c558146101f9578063d60efe7d14610217578063fb76c71e146102475761009e565b80633cf698cf146100a357806367ba28bd146100d3578063a4063dbc14610103578063bec9392214610138578063cafadbc414610169575b600080fd5b6100bd60048036038101906100b89190611f84565b610277565b6040516100ca9190612457565b60405180910390f35b6100ed60048036038101906100e89190611dab565b610561565b6040516100fa9190612360565b60405180910390f35b61011d60048036038101906101189190611dab565b610974565b60405161012f96959493929190612396565b60405180910390f35b610152600480360381019061014d9190611e45565b610a30565b6040516101609291906123f7565b60405180910390f35b610183600480360381019061017e9190611ff1565b610aa4565b6040516101909190612245565b60405180910390f35b6101b360048036038101906101ae9190611e05565b610d38565b6040516101c09190612360565b60405180910390f35b6101e360048036038101906101de9190611e45565b610d5d565b6040516101f09190612245565b60405180910390f35b61020161129c565b60405161020e91906121ca565b60405180910390f35b610231600480360381019061022c9190611f44565b6112c2565b60405161023e9190612457565b60405180910390f35b610261600480360381019061025c9190611fb1565b611311565b60405161026e9190612245565b60405180910390f35b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663753a509b856040518263ffffffff1660e01b81526004016102da919061237b565b60006040518083038186803b1580156102f257600080fd5b505afa158015610306573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061032f9190611ece565b90506000815111610375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036c90612260565b60405180910390fd5b6000806103818361180a565b90506000600190505b81518160ff161015610548576063828260ff16815181106103ae576103ad612a89565b5b602002602001015160ff161415610444576000826001836103cf91906128a9565b60ff16815181106103e3576103e2612a89565b5b6020026020010151905060008160ff16141561040d576005846104069190612595565b935061043e565b60038160ff16141561042d576001846104269190612595565b935061043d565b60038461043a9190612595565b93505b5b50610548565b6063826001836104549190612595565b60ff168151811061046857610467612a89565b5b602002602001015160ff1614158015610520575060038260008151811061049257610491612a89565b5b602002602001015160ff16815481106104ae576104ad612a89565b5b906000526020600020016001826104c591906128a9565b60ff16815481106104d9576104d8612a89565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16828260ff168151811061051257610511612a89565b5b602002602001015160ff1614155b15610535576001836105329190612595565b92505b808061054090612a01565b91505061038a565b50600a826105569190612806565b945050505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161415610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f906122c0565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600084905060008360a0015163ffffffff16905060008373ffffffffffffffffffffffffffffffffffffffff166317d70f7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107eb57600080fd5b505afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611f17565b905060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161086091906121ca565b60206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611f17565b9050856000015163ffffffff16821180156108cb5750600083115b156109355762cf8500431015610930576012600a6108e99190612650565b866060015163ffffffff166001846109019190612841565b61271061090e9190612841565b610918919061276e565b610922919061276e565b8161092d9190612841565b90505b610966565b6012600a6109439190612650565b866040015163ffffffff1684610959919061276e565b610963919061276e565b90505b809650505050505050919050565b60026020528060005260406000206000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160189054906101000a900463ffffffff169080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900463ffffffff16905086565b6000806000805b85518160ff161015610a8c57610a69868260ff1681518110610a5c57610a5b612a89565b5b6020026020010151610277565b60ff1682610a77919061255b565b91508080610a8490612a01565b915050610a37565b5080610a988286611994565b92509250509250929050565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b72906122a0565b60405180910390fd5b60008590508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306012600a610bac9190612650565b61271089610bba91906127c8565b63ffffffff16610bca919061276e565b6040518463ffffffff1660e01b8152600401610be8939291906121e5565b602060405180830381600087803b158015610c0257600080fd5b505af1158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a9190611ea1565b50868260000160006101000a81548163ffffffff021916908363ffffffff160217905550858260000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848260000160186101000a81548163ffffffff021916908363ffffffff1602179055508382600001601c6101000a81548163ffffffff021916908363ffffffff160217905550338260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600192505050949350505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906122c0565b60405180910390fd5b6000845111610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612320565b60405180910390fd5b6000805b85518160ff161015611159576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e898560ff1681518110610ee457610ee3612a89565b5b60200260200101516040518263ffffffff1660e01b8152600401610f08919061237b565b60206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f589190611dd8565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612300565b60405180910390fd5b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a8660ff168151811061102157611020612a89565b5b602002602001015163ffffffff1663ffffffff1681526020019081526020016000205414611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90612340565b60405180910390fd5b60006110ac898560ff168151811061109f5761109e612a89565b5b6020026020010151610277565b60ff1690508063ffffffff16600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b8760ff168151811061110f5761110e612a89565b5b602002602001015163ffffffff1663ffffffff168152602001908152602001600020819055508085611141919061255b565b9450505050808061115190612a01565b915050610e7d565b5060006111668286611994565b90503373ffffffffffffffffffffffffffffffffffffffff167f1ac00418eb496e6386d33a660690ef39c6552b643171d85d264772e09000e79683836040516111b09291906123f7565b60405180910390a260008590508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016111fa939291906121e5565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611ea1565b50828460010160148282829054906101000a900463ffffffff16611270919061255b565b92506101000a81548163ffffffff021916908363ffffffff160217905550600194505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600382815481106112d257600080fd5b9060005260206000200181815481106112ea57600080fd5b9060005260206000209060209182820401919006915091509054906101000a900460ff1681565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906122c0565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161144b919061237b565b60206040518083038186803b15801561146357600080fd5b505afa158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149b9190611dd8565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612300565b60405180910390fd5b6000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008863ffffffff1663ffffffff1681526020019081526020016000205414156115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906122e0565b60405180910390fd5b60006115b687610277565b60ff1690508063ffffffff168460010160149054906101000a900463ffffffff1663ffffffff16101561161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590612280565b60405180910390fd5b600061162a8288611994565b9050818560010160148282829054906101000a900463ffffffff1661164f9190612875565b92506101000a81548163ffffffff021916908363ffffffff16021790555060008790506000808760010160149054906101000a900463ffffffff1663ffffffff161161169b57826116b5565b60646063846116aa919061276e565b6116b491906125cc565b5b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116f292919061221c565b602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190611ea1565b506000600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c63ffffffff1663ffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff8738d3d3a041b62e600e28a897953c4737d9de7d218adfff1df07e3202c3ff28b86846040516117f193929190612420565b60405180910390a2600197505050505050505092915050565b60606000600c67ffffffffffffffff81111561182957611828612ab8565b5b6040519080825280602002602001820160405280156118575781602001602082028036833780820191505090505b509050600083905060008060005b835181101561192a57600084828151811061188357611882612a89565b5b602001015160f81c60f81b60f81c905060308160ff16101580156118ab575060398160ff1611155b156118db576030816118bd91906128a9565b600a856118ca9190612806565b6118d49190612595565b9350611916565b838684815181106118ef576118ee612a89565b5b602002602001019060ff16908160ff1681525050600093508280611912906129b8565b9350505b508080611922906129b8565b915050611865565b508184828151811061193f5761193e612a89565b5b602002602001019060ff16908160ff16815250506063846001836119639190612505565b8151811061197457611973612a89565b5b602002602001019060ff16908160ff168152505083945050505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161415611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906122c0565b60405180910390fd5b6000611ba684610561565b905060008260a0015163ffffffff1611611bed576012600a611bc89190612650565b826040015186611bd891906127c8565b63ffffffff16611be8919061276e565b611c15565b8160a0015163ffffffff168563ffffffff1682611c0a919061276e565b611c1491906125cc565b5b9250505092915050565b6000611c32611c2d84612497565b612472565b90508083825260208201905082856020860282011115611c5557611c54612aec565b5b60005b85811015611c855781611c6b8882611d96565b845260208401935060208301925050600181019050611c58565b5050509392505050565b6000611ca2611c9d846124c3565b612472565b905082815260208101848484011115611cbe57611cbd612af1565b5b611cc9848285612954565b509392505050565b600081359050611ce081612c66565b92915050565b600081519050611cf581612c66565b92915050565b600082601f830112611d1057611d0f612ae7565b5b8135611d20848260208601611c1f565b91505092915050565b600081519050611d3881612c7d565b92915050565b600082601f830112611d5357611d52612ae7565b5b8151611d63848260208601611c8f565b91505092915050565b600081359050611d7b81612c94565b92915050565b600081519050611d9081612c94565b92915050565b600081359050611da581612cab565b92915050565b600060208284031215611dc157611dc0612afb565b5b6000611dcf84828501611cd1565b91505092915050565b600060208284031215611dee57611ded612afb565b5b6000611dfc84828501611ce6565b91505092915050565b60008060408385031215611e1c57611e1b612afb565b5b6000611e2a85828601611cd1565b9250506020611e3b85828601611d96565b9150509250929050565b60008060408385031215611e5c57611e5b612afb565b5b600083013567ffffffffffffffff811115611e7a57611e79612af6565b5b611e8685828601611cfb565b9250506020611e9785828601611cd1565b9150509250929050565b600060208284031215611eb757611eb6612afb565b5b6000611ec584828501611d29565b91505092915050565b600060208284031215611ee457611ee3612afb565b5b600082015167ffffffffffffffff811115611f0257611f01612af6565b5b611f0e84828501611d3e565b91505092915050565b600060208284031215611f2d57611f2c612afb565b5b6000611f3b84828501611d81565b91505092915050565b60008060408385031215611f5b57611f5a612afb565b5b6000611f6985828601611d6c565b9250506020611f7a85828601611d6c565b9150509250929050565b600060208284031215611f9a57611f99612afb565b5b6000611fa884828501611d96565b91505092915050565b60008060408385031215611fc857611fc7612afb565b5b6000611fd685828601611d96565b9250506020611fe785828601611cd1565b9150509250929050565b6000806000806080858703121561200b5761200a612afb565b5b600061201987828801611d96565b945050602061202a87828801611cd1565b935050604061203b87828801611d96565b925050606061204c87828801611d96565b91505092959194509250565b612061816128dd565b82525050565b612070816128ef565b82525050565b60006120836012836124f4565b915061208e82612b1e565b602082019050919050565b60006120a6600b836124f4565b91506120b182612b47565b602082019050919050565b60006120c96013836124f4565b91506120d482612b70565b602082019050919050565b60006120ec6011836124f4565b91506120f782612b99565b602082019050919050565b600061210f600b836124f4565b915061211a82612bc2565b602082019050919050565b60006121326016836124f4565b915061213d82612beb565b602082019050919050565b60006121556011836124f4565b915061216082612c14565b602082019050919050565b60006121786010836124f4565b915061218382612c3d565b602082019050919050565b6121978161291b565b82525050565b6121a681612942565b82525050565b6121b581612925565b82525050565b6121c481612935565b82525050565b60006020820190506121df6000830184612058565b92915050565b60006060820190506121fa6000830186612058565b6122076020830185612058565b612214604083018461218e565b949350505050565b60006040820190506122316000830185612058565b61223e602083018461218e565b9392505050565b600060208201905061225a6000830184612067565b92915050565b6000602082019050818103600083015261227981612076565b9050919050565b6000602082019050818103600083015261229981612099565b9050919050565b600060208201905081810360008301526122b9816120bc565b9050919050565b600060208201905081810360008301526122d9816120df565b9050919050565b600060208201905081810360008301526122f981612102565b9050919050565b6000602082019050818103600083015261231981612125565b9050919050565b6000602082019050818103600083015261233981612148565b9050919050565b600060208201905081810360008301526123598161216b565b9050919050565b6000602082019050612375600083018461218e565b92915050565b6000602082019050612390600083018461219d565b92915050565b600060c0820190506123ab60008301896121ac565b6123b86020830188612058565b6123c560408301876121ac565b6123d260608301866121ac565b6123df6080830185612058565b6123ec60a08301846121ac565b979650505050505050565b600060408201905061240c60008301856121ac565b612419602083018461218e565b9392505050565b600060608201905061243560008301866121ac565b61244260208301856121ac565b61244f604083018461218e565b949350505050565b600060208201905061246c60008301846121bb565b92915050565b600061247c61248d565b90506124888282612987565b919050565b6000604051905090565b600067ffffffffffffffff8211156124b2576124b1612ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124de576124dd612ab8565b5b6124e782612b00565b9050602081019050919050565b600082825260208201905092915050565b60006125108261291b565b915061251b8361291b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125505761254f612a2b565b5b828201905092915050565b600061256682612925565b915061257183612925565b92508263ffffffff0382111561258a57612589612a2b565b5b828201905092915050565b60006125a082612935565b91506125ab83612935565b92508260ff038211156125c1576125c0612a2b565b5b828201905092915050565b60006125d78261291b565b91506125e28361291b565b9250826125f2576125f1612a5a565b5b828204905092915050565b6000808291508390505b60018511156126475780860481111561262357612622612a2b565b5b60018516156126325780820291505b808102905061264085612b11565b9450612607565b94509492505050565b600061265b8261291b565b91506126668361291b565b92506126937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461269b565b905092915050565b6000826126ab5760019050612767565b816126b95760009050612767565b81600181146126cf57600281146126d957612708565b6001915050612767565b60ff8411156126eb576126ea612a2b565b5b8360020a91508482111561270257612701612a2b565b5b50612767565b5060208310610133831016604e8410600b841016171561273d5782820a90508381111561273857612737612a2b565b5b612767565b61274a84848460016125fd565b9250905081840481111561276157612760612a2b565b5b81810290505b9392505050565b60006127798261291b565b91506127848361291b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127bd576127bc612a2b565b5b828202905092915050565b60006127d382612925565b91506127de83612925565b92508163ffffffff04831182151516156127fb576127fa612a2b565b5b828202905092915050565b600061281182612935565b915061281c83612935565b92508160ff048311821515161561283657612835612a2b565b5b828202905092915050565b600061284c8261291b565b91506128578361291b565b92508282101561286a57612869612a2b565b5b828203905092915050565b600061288082612925565b915061288b83612925565b92508282101561289e5761289d612a2b565b5b828203905092915050565b60006128b482612935565b91506128bf83612935565b9250828210156128d2576128d1612a2b565b5b828203905092915050565b60006128e8826128fb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b600061294d82612925565b9050919050565b60005b83811015612972578082015181840152602081019050612957565b83811115612981576000848401525b50505050565b61299082612b00565b810181811067ffffffffffffffff821117156129af576129ae612ab8565b5b80604052505050565b60006129c38261291b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129f6576129f5612a2b565b5b600182019050919050565b6000612a0c82612935565b915060ff821415612a2057612a1f612a2b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f746f6b656e206973206e6f742065786973740000000000000000000000000000600082015250565b7f706f776572206572726f72000000000000000000000000000000000000000000600082015250565b7f7374616b696e6720686173207374617274656400000000000000000000000000600082015250565b7f706f6f6c206973206e6f74206578697374000000000000000000000000000000600082015250565b7f6e6f74207374616b696e67000000000000000000000000000000000000000000600082015250565b7f6d757374206265206f776e6572206f6620746f6b656e00000000000000000000600082015250565b7f6174206c65617374206f6e6520636f6d70000000000000000000000000000000600082015250565b7f616c7265616479207374616b696e672000000000000000000000000000000000600082015250565b612c6f816128dd565b8114612c7a57600080fd5b50565b612c86816128ef565b8114612c9157600080fd5b50565b612c9d8161291b565b8114612ca857600080fd5b50565b612cb481612925565b8114612cbf57600080fd5b5056fea2646970667358221220da2244b7d25d9c0c335359a191ae8a8287e61535a826289c600fad6db243159e64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063cc1c17c711610066578063cc1c17c714610199578063d07ad165146101c9578063d329c558146101f9578063d60efe7d14610217578063fb76c71e146102475761009e565b80633cf698cf146100a357806367ba28bd146100d3578063a4063dbc14610103578063bec9392214610138578063cafadbc414610169575b600080fd5b6100bd60048036038101906100b89190611f84565b610277565b6040516100ca9190612457565b60405180910390f35b6100ed60048036038101906100e89190611dab565b610561565b6040516100fa9190612360565b60405180910390f35b61011d60048036038101906101189190611dab565b610974565b60405161012f96959493929190612396565b60405180910390f35b610152600480360381019061014d9190611e45565b610a30565b6040516101609291906123f7565b60405180910390f35b610183600480360381019061017e9190611ff1565b610aa4565b6040516101909190612245565b60405180910390f35b6101b360048036038101906101ae9190611e05565b610d38565b6040516101c09190612360565b60405180910390f35b6101e360048036038101906101de9190611e45565b610d5d565b6040516101f09190612245565b60405180910390f35b61020161129c565b60405161020e91906121ca565b60405180910390f35b610231600480360381019061022c9190611f44565b6112c2565b60405161023e9190612457565b60405180910390f35b610261600480360381019061025c9190611fb1565b611311565b60405161026e9190612245565b60405180910390f35b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663753a509b856040518263ffffffff1660e01b81526004016102da919061237b565b60006040518083038186803b1580156102f257600080fd5b505afa158015610306573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061032f9190611ece565b90506000815111610375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036c90612260565b60405180910390fd5b6000806103818361180a565b90506000600190505b81518160ff161015610548576063828260ff16815181106103ae576103ad612a89565b5b602002602001015160ff161415610444576000826001836103cf91906128a9565b60ff16815181106103e3576103e2612a89565b5b6020026020010151905060008160ff16141561040d576005846104069190612595565b935061043e565b60038160ff16141561042d576001846104269190612595565b935061043d565b60038461043a9190612595565b93505b5b50610548565b6063826001836104549190612595565b60ff168151811061046857610467612a89565b5b602002602001015160ff1614158015610520575060038260008151811061049257610491612a89565b5b602002602001015160ff16815481106104ae576104ad612a89565b5b906000526020600020016001826104c591906128a9565b60ff16815481106104d9576104d8612a89565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16828260ff168151811061051257610511612a89565b5b602002602001015160ff1614155b15610535576001836105329190612595565b92505b808061054090612a01565b91505061038a565b50600a826105569190612806565b945050505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161415610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075f906122c0565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600084905060008360a0015163ffffffff16905060008373ffffffffffffffffffffffffffffffffffffffff166317d70f7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107eb57600080fd5b505afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611f17565b905060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161086091906121ca565b60206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611f17565b9050856000015163ffffffff16821180156108cb5750600083115b156109355762cf8500431015610930576012600a6108e99190612650565b866060015163ffffffff166001846109019190612841565b61271061090e9190612841565b610918919061276e565b610922919061276e565b8161092d9190612841565b90505b610966565b6012600a6109439190612650565b866040015163ffffffff1684610959919061276e565b610963919061276e565b90505b809650505050505050919050565b60026020528060005260406000206000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160189054906101000a900463ffffffff169080600001601c9054906101000a900463ffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900463ffffffff16905086565b6000806000805b85518160ff161015610a8c57610a69868260ff1681518110610a5c57610a5b612a89565b5b6020026020010151610277565b60ff1682610a77919061255b565b91508080610a8490612a01565b915050610a37565b5080610a988286611994565b92509250509250929050565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b72906122a0565b60405180910390fd5b60008590508073ffffffffffffffffffffffffffffffffffffffff166323b872dd33306012600a610bac9190612650565b61271089610bba91906127c8565b63ffffffff16610bca919061276e565b6040518463ffffffff1660e01b8152600401610be8939291906121e5565b602060405180830381600087803b158015610c0257600080fd5b505af1158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a9190611ea1565b50868260000160006101000a81548163ffffffff021916908363ffffffff160217905550858260000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848260000160186101000a81548163ffffffff021916908363ffffffff1602179055508382600001601c6101000a81548163ffffffff021916908363ffffffff160217905550338260010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600192505050949350505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906122c0565b60405180910390fd5b6000845111610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612320565b60405180910390fd5b6000805b85518160ff161015611159576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e898560ff1681518110610ee457610ee3612a89565b5b60200260200101516040518263ffffffff1660e01b8152600401610f08919061237b565b60206040518083038186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f589190611dd8565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90612300565b60405180910390fd5b6000600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a8660ff168151811061102157611020612a89565b5b602002602001015163ffffffff1663ffffffff1681526020019081526020016000205414611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90612340565b60405180910390fd5b60006110ac898560ff168151811061109f5761109e612a89565b5b6020026020010151610277565b60ff1690508063ffffffff16600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b8760ff168151811061110f5761110e612a89565b5b602002602001015163ffffffff1663ffffffff168152602001908152602001600020819055508085611141919061255b565b9450505050808061115190612a01565b915050610e7d565b5060006111668286611994565b90503373ffffffffffffffffffffffffffffffffffffffff167f1ac00418eb496e6386d33a660690ef39c6552b643171d85d264772e09000e79683836040516111b09291906123f7565b60405180910390a260008590508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016111fa939291906121e5565b602060405180830381600087803b15801561121457600080fd5b505af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c9190611ea1565b50828460010160148282829054906101000a900463ffffffff16611270919061255b565b92506101000a81548163ffffffff021916908363ffffffff160217905550600194505050505092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600382815481106112d257600080fd5b9060005260206000200181815481106112ea57600080fd5b9060005260206000209060209182820401919006915091509054906101000a900460ff1681565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906122c0565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161144b919061237b565b60206040518083038186803b15801561146357600080fd5b505afa158015611477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149b9190611dd8565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461150b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150290612300565b60405180910390fd5b6000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008863ffffffff1663ffffffff1681526020019081526020016000205414156115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906122e0565b60405180910390fd5b60006115b687610277565b60ff1690508063ffffffff168460010160149054906101000a900463ffffffff1663ffffffff16101561161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590612280565b60405180910390fd5b600061162a8288611994565b9050818560010160148282829054906101000a900463ffffffff1661164f9190612875565b92506101000a81548163ffffffff021916908363ffffffff16021790555060008790506000808760010160149054906101000a900463ffffffff1663ffffffff161161169b57826116b5565b60646063846116aa919061276e565b6116b491906125cc565b5b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016116f292919061221c565b602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190611ea1565b506000600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c63ffffffff1663ffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff8738d3d3a041b62e600e28a897953c4737d9de7d218adfff1df07e3202c3ff28b86846040516117f193929190612420565b60405180910390a2600197505050505050505092915050565b60606000600c67ffffffffffffffff81111561182957611828612ab8565b5b6040519080825280602002602001820160405280156118575781602001602082028036833780820191505090505b509050600083905060008060005b835181101561192a57600084828151811061188357611882612a89565b5b602001015160f81c60f81b60f81c905060308160ff16101580156118ab575060398160ff1611155b156118db576030816118bd91906128a9565b600a856118ca9190612806565b6118d49190612595565b9350611916565b838684815181106118ef576118ee612a89565b5b602002602001019060ff16908160ff1681525050600093508280611912906129b8565b9350505b508080611922906129b8565b915050611865565b508184828151811061193f5761193e612a89565b5b602002602001019060ff16908160ff16815250506063846001836119639190612505565b8151811061197457611973612a89565b5b602002602001019060ff16908160ff168152505083945050505050919050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201601c9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff161415611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906122c0565b60405180910390fd5b6000611ba684610561565b905060008260a0015163ffffffff1611611bed576012600a611bc89190612650565b826040015186611bd891906127c8565b63ffffffff16611be8919061276e565b611c15565b8160a0015163ffffffff168563ffffffff1682611c0a919061276e565b611c1491906125cc565b5b9250505092915050565b6000611c32611c2d84612497565b612472565b90508083825260208201905082856020860282011115611c5557611c54612aec565b5b60005b85811015611c855781611c6b8882611d96565b845260208401935060208301925050600181019050611c58565b5050509392505050565b6000611ca2611c9d846124c3565b612472565b905082815260208101848484011115611cbe57611cbd612af1565b5b611cc9848285612954565b509392505050565b600081359050611ce081612c66565b92915050565b600081519050611cf581612c66565b92915050565b600082601f830112611d1057611d0f612ae7565b5b8135611d20848260208601611c1f565b91505092915050565b600081519050611d3881612c7d565b92915050565b600082601f830112611d5357611d52612ae7565b5b8151611d63848260208601611c8f565b91505092915050565b600081359050611d7b81612c94565b92915050565b600081519050611d9081612c94565b92915050565b600081359050611da581612cab565b92915050565b600060208284031215611dc157611dc0612afb565b5b6000611dcf84828501611cd1565b91505092915050565b600060208284031215611dee57611ded612afb565b5b6000611dfc84828501611ce6565b91505092915050565b60008060408385031215611e1c57611e1b612afb565b5b6000611e2a85828601611cd1565b9250506020611e3b85828601611d96565b9150509250929050565b60008060408385031215611e5c57611e5b612afb565b5b600083013567ffffffffffffffff811115611e7a57611e79612af6565b5b611e8685828601611cfb565b9250506020611e9785828601611cd1565b9150509250929050565b600060208284031215611eb757611eb6612afb565b5b6000611ec584828501611d29565b91505092915050565b600060208284031215611ee457611ee3612afb565b5b600082015167ffffffffffffffff811115611f0257611f01612af6565b5b611f0e84828501611d3e565b91505092915050565b600060208284031215611f2d57611f2c612afb565b5b6000611f3b84828501611d81565b91505092915050565b60008060408385031215611f5b57611f5a612afb565b5b6000611f6985828601611d6c565b9250506020611f7a85828601611d6c565b9150509250929050565b600060208284031215611f9a57611f99612afb565b5b6000611fa884828501611d96565b91505092915050565b60008060408385031215611fc857611fc7612afb565b5b6000611fd685828601611d96565b9250506020611fe785828601611cd1565b9150509250929050565b6000806000806080858703121561200b5761200a612afb565b5b600061201987828801611d96565b945050602061202a87828801611cd1565b935050604061203b87828801611d96565b925050606061204c87828801611d96565b91505092959194509250565b612061816128dd565b82525050565b612070816128ef565b82525050565b60006120836012836124f4565b915061208e82612b1e565b602082019050919050565b60006120a6600b836124f4565b91506120b182612b47565b602082019050919050565b60006120c96013836124f4565b91506120d482612b70565b602082019050919050565b60006120ec6011836124f4565b91506120f782612b99565b602082019050919050565b600061210f600b836124f4565b915061211a82612bc2565b602082019050919050565b60006121326016836124f4565b915061213d82612beb565b602082019050919050565b60006121556011836124f4565b915061216082612c14565b602082019050919050565b60006121786010836124f4565b915061218382612c3d565b602082019050919050565b6121978161291b565b82525050565b6121a681612942565b82525050565b6121b581612925565b82525050565b6121c481612935565b82525050565b60006020820190506121df6000830184612058565b92915050565b60006060820190506121fa6000830186612058565b6122076020830185612058565b612214604083018461218e565b949350505050565b60006040820190506122316000830185612058565b61223e602083018461218e565b9392505050565b600060208201905061225a6000830184612067565b92915050565b6000602082019050818103600083015261227981612076565b9050919050565b6000602082019050818103600083015261229981612099565b9050919050565b600060208201905081810360008301526122b9816120bc565b9050919050565b600060208201905081810360008301526122d9816120df565b9050919050565b600060208201905081810360008301526122f981612102565b9050919050565b6000602082019050818103600083015261231981612125565b9050919050565b6000602082019050818103600083015261233981612148565b9050919050565b600060208201905081810360008301526123598161216b565b9050919050565b6000602082019050612375600083018461218e565b92915050565b6000602082019050612390600083018461219d565b92915050565b600060c0820190506123ab60008301896121ac565b6123b86020830188612058565b6123c560408301876121ac565b6123d260608301866121ac565b6123df6080830185612058565b6123ec60a08301846121ac565b979650505050505050565b600060408201905061240c60008301856121ac565b612419602083018461218e565b9392505050565b600060608201905061243560008301866121ac565b61244260208301856121ac565b61244f604083018461218e565b949350505050565b600060208201905061246c60008301846121bb565b92915050565b600061247c61248d565b90506124888282612987565b919050565b6000604051905090565b600067ffffffffffffffff8211156124b2576124b1612ab8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156124de576124dd612ab8565b5b6124e782612b00565b9050602081019050919050565b600082825260208201905092915050565b60006125108261291b565b915061251b8361291b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125505761254f612a2b565b5b828201905092915050565b600061256682612925565b915061257183612925565b92508263ffffffff0382111561258a57612589612a2b565b5b828201905092915050565b60006125a082612935565b91506125ab83612935565b92508260ff038211156125c1576125c0612a2b565b5b828201905092915050565b60006125d78261291b565b91506125e28361291b565b9250826125f2576125f1612a5a565b5b828204905092915050565b6000808291508390505b60018511156126475780860481111561262357612622612a2b565b5b60018516156126325780820291505b808102905061264085612b11565b9450612607565b94509492505050565b600061265b8261291b565b91506126668361291b565b92506126937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461269b565b905092915050565b6000826126ab5760019050612767565b816126b95760009050612767565b81600181146126cf57600281146126d957612708565b6001915050612767565b60ff8411156126eb576126ea612a2b565b5b8360020a91508482111561270257612701612a2b565b5b50612767565b5060208310610133831016604e8410600b841016171561273d5782820a90508381111561273857612737612a2b565b5b612767565b61274a84848460016125fd565b9250905081840481111561276157612760612a2b565b5b81810290505b9392505050565b60006127798261291b565b91506127848361291b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127bd576127bc612a2b565b5b828202905092915050565b60006127d382612925565b91506127de83612925565b92508163ffffffff04831182151516156127fb576127fa612a2b565b5b828202905092915050565b600061281182612935565b915061281c83612935565b92508160ff048311821515161561283657612835612a2b565b5b828202905092915050565b600061284c8261291b565b91506128578361291b565b92508282101561286a57612869612a2b565b5b828203905092915050565b600061288082612925565b915061288b83612925565b92508282101561289e5761289d612a2b565b5b828203905092915050565b60006128b482612935565b91506128bf83612935565b9250828210156128d2576128d1612a2b565b5b828203905092915050565b60006128e8826128fb565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b600061294d82612925565b9050919050565b60005b83811015612972578082015181840152602081019050612957565b83811115612981576000848401525b50505050565b61299082612b00565b810181811067ffffffffffffffff821117156129af576129ae612ab8565b5b80604052505050565b60006129c38261291b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129f6576129f5612a2b565b5b600182019050919050565b6000612a0c82612935565b915060ff821415612a2057612a1f612a2b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f746f6b656e206973206e6f742065786973740000000000000000000000000000600082015250565b7f706f776572206572726f72000000000000000000000000000000000000000000600082015250565b7f7374616b696e6720686173207374617274656400000000000000000000000000600082015250565b7f706f6f6c206973206e6f74206578697374000000000000000000000000000000600082015250565b7f6e6f74207374616b696e67000000000000000000000000000000000000000000600082015250565b7f6d757374206265206f776e6572206f6620746f6b656e00000000000000000000600082015250565b7f6174206c65617374206f6e6520636f6d70000000000000000000000000000000600082015250565b7f616c7265616479207374616b696e672000000000000000000000000000000000600082015250565b612c6f816128dd565b8114612c7a57600080fd5b50565b612c86816128ef565b8114612c9157600080fd5b50565b612c9d8161291b565b8114612ca857600080fd5b50565b612cb481612925565b8114612cbf57600080fd5b5056fea2646970667358221220da2244b7d25d9c0c335359a191ae8a8287e61535a826289c600fad6db243159e64736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.