More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 578 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Staking | 12743686 | 1250 days ago | IN | 0 ETH | 0.0040962 | ||||
Withdraw Staking | 12688712 | 1259 days ago | IN | 0 ETH | 0.00200852 | ||||
Withdraw Staking | 12646667 | 1265 days ago | IN | 0 ETH | 0.00391837 | ||||
Withdraw Staking | 12631531 | 1268 days ago | IN | 0 ETH | 0.00121717 | ||||
Withdraw Staking | 12556307 | 1279 days ago | IN | 0 ETH | 0.00566068 | ||||
Withdraw Staking | 12553085 | 1280 days ago | IN | 0 ETH | 0.00167406 | ||||
Withdraw Staking | 12543534 | 1281 days ago | IN | 0 ETH | 0.00624627 | ||||
Withdraw Staking | 12531993 | 1283 days ago | IN | 0 ETH | 0.00356216 | ||||
Withdraw Staking | 12519917 | 1285 days ago | IN | 0 ETH | 0.00630519 | ||||
Withdraw Staking | 12504488 | 1287 days ago | IN | 0 ETH | 0.0083993 | ||||
Withdraw Staking | 12497647 | 1288 days ago | IN | 0 ETH | 0.00661459 | ||||
Withdraw Staking | 12491207 | 1289 days ago | IN | 0 ETH | 0.034584 | ||||
Withdraw Staking | 12488573 | 1290 days ago | IN | 0 ETH | 0.00724899 | ||||
Withdraw Staking | 12488451 | 1290 days ago | IN | 0 ETH | 0.00450352 | ||||
Withdraw Staking | 12474868 | 1292 days ago | IN | 0 ETH | 0.00596472 | ||||
Withdraw Staking | 12454926 | 1295 days ago | IN | 0 ETH | 0.00935901 | ||||
Withdraw Staking | 12443530 | 1297 days ago | IN | 0 ETH | 0.00980807 | ||||
Withdraw Staking | 12441152 | 1297 days ago | IN | 0 ETH | 0.00648347 | ||||
Withdraw Staking | 12440713 | 1297 days ago | IN | 0 ETH | 0.01017654 | ||||
Withdraw Staking | 12438792 | 1297 days ago | IN | 0 ETH | 0.00162479 | ||||
Withdraw Staking | 12438792 | 1297 days ago | IN | 0 ETH | 0.01211052 | ||||
Withdraw Staking | 12438289 | 1298 days ago | IN | 0 ETH | 0.00779142 | ||||
Withdraw Staking | 12438215 | 1298 days ago | IN | 0 ETH | 0.00754719 | ||||
Withdraw Staking | 12434848 | 1298 days ago | IN | 0 ETH | 0.01431785 | ||||
Withdraw Staking | 12434295 | 1298 days ago | IN | 0 ETH | 0.0261124 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
12743686 | 1250 days ago | 0 ETH | |||||
12743686 | 1250 days ago | 0 ETH | |||||
12688712 | 1259 days ago | 0 ETH | |||||
12688712 | 1259 days ago | 0 ETH | |||||
12646667 | 1265 days ago | 0 ETH | |||||
12646667 | 1265 days ago | 0 ETH | |||||
12631531 | 1268 days ago | 0 ETH | |||||
12631531 | 1268 days ago | 0 ETH | |||||
12556307 | 1279 days ago | 0 ETH | |||||
12556307 | 1279 days ago | 0 ETH | |||||
12553085 | 1280 days ago | 0 ETH | |||||
12553085 | 1280 days ago | 0 ETH | |||||
12543534 | 1281 days ago | 0 ETH | |||||
12543534 | 1281 days ago | 0 ETH | |||||
12531993 | 1283 days ago | 0 ETH | |||||
12531993 | 1283 days ago | 0 ETH | |||||
12519917 | 1285 days ago | 0 ETH | |||||
12519917 | 1285 days ago | 0 ETH | |||||
12504488 | 1287 days ago | 0 ETH | |||||
12504488 | 1287 days ago | 0 ETH | |||||
12497647 | 1288 days ago | 0 ETH | |||||
12497647 | 1288 days ago | 0 ETH | |||||
12491207 | 1289 days ago | 0 ETH | |||||
12491207 | 1289 days ago | 0 ETH | |||||
12488573 | 1290 days ago | 0 ETH |
Loading...
Loading
Contract Name:
StakingPool
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-08 */ /** *Submitted for verification at Etherscan.io on 2021-03-30 */ pragma solidity 0.4.25; /** * token contract functions */ contract Ierc20 { function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success); function transferFrom(address from, address to, uint256 value) external returns (bool); } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function ceil(uint256 a, uint256 m) internal pure returns (uint256) { uint256 c = add(a,m); uint256 d = sub(c,1); return mul(div(d,m),m); } } contract Owned { address public owner; event OwnerChanges(address newOwner); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner external { require(newOwner != address(0), "New owner is the zero address"); owner = newOwner; emit OwnerChanges(newOwner); } } contract StakingPool is Owned { using SafeMath for uint256; Ierc20 public tswap; Ierc20 public rewardToken; uint256 poolDuration; uint256 totalRewards; uint256 rewardsWithdrawn; uint256 poolStartTime; uint256 poolEndTime; uint256 totalStaked; // Represents a single stake for a user. A user may have multiple. struct Stake { uint256 amount; uint256 stakingTime; uint256 lastWithdrawTime; } mapping (address => Stake[]) public userStaking; // Represents total staking of an user struct UserTotals { uint256 totalStaking; uint256 totalStakingTIme; } mapping (address => UserTotals) public userTotalStaking; struct Ris3Rewards { uint256 totalWithdrawn; uint256 lastWithdrawTime; } mapping(address => Ris3Rewards) public userRewardInfo; event OwnerSetReward(uint256 amount); event Staked(address userAddress, uint256 amount); event StakingWithdrawal(address userAddress, uint256 amount); event RewardWithdrawal(address userAddress, uint256 amount); event PoolDurationChange(uint256 poolDuration); /** * Constrctor function */ constructor() public { tswap = Ierc20(0xCC4304A31d09258b0029eA7FE63d032f52e44EFe); rewardToken = Ierc20(0x8D717AB5eaC1016b64C2A7fD04720Fd2D27D1B86); poolDuration = 720 hours; } //Set pool rewards function ownerSetPoolRewards(uint256 _rewardAmount) external onlyOwner { require(poolStartTime == 0, "Pool rewards already set"); require(_rewardAmount > 0, "Cannot create pool with zero amount"); //set total rewards value totalRewards = _rewardAmount; poolStartTime = now; poolEndTime = now + poolDuration; //transfer tokens to contract rewardToken.transferFrom(msg.sender, this, _rewardAmount); emit OwnerSetReward(_rewardAmount); } //Stake function for users to stake SWAP token function stake(uint256 amount) external { require(amount > 0, "Cannot stake 0"); require(now < poolEndTime, "Staking pool is closed"); //staking pool is closed for staking //add value in staking userTotalStaking[msg.sender].totalStaking = userTotalStaking[msg.sender].totalStaking.add(amount); //add new stake Stake memory newStake = Stake(amount, now, 0); userStaking[msg.sender].push(newStake); //add to total staked totalStaked = totalStaked.add(amount); tswap.transferFrom(msg.sender, this, amount); emit Staked(msg.sender, amount); } //compute rewards function computeNewReward(uint256 _rewardAmount, uint256 _stakedAmount, uint256 _stakeTimeSec) private view returns (uint256 _reward) { uint256 rewardPerSecond = totalRewards.mul(1 ether); if (rewardPerSecond != 0 ) { rewardPerSecond = rewardPerSecond.div(poolDuration); } if (rewardPerSecond > 0) { uint256 rewardPerSecForEachTokenStaked = rewardPerSecond.div(totalStaked); uint256 userRewards = rewardPerSecForEachTokenStaked.mul(_stakedAmount).mul(_stakeTimeSec); userRewards = userRewards.div(1 ether); return _rewardAmount.add(userRewards); } else { return 0; } } //calculate your rewards function calculateReward(address _userAddress) public view returns (uint256 _reward) { // all user stakes Stake[] storage accountStakes = userStaking[_userAddress]; // Redeem from most recent stake and go backwards in time. uint256 rewardAmount = 0; uint256 i = accountStakes.length; while (i > 0) { Stake storage userStake = accountStakes[i - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(userStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(userStake.lastWithdrawTime); } } // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, userStake.amount, stakeTimeSec); i--; } return rewardAmount; } //Withdraw staking and rewards function withdrawStaking(uint256 amount) external { require(amount > 0, "Amount can not be zero"); require(userTotalStaking[msg.sender].totalStaking >= amount, "You are trying to withdaw more than your stake"); // 1. User Accounting Stake[] storage accountStakes = userStaking[msg.sender]; // Redeem from most recent stake and go backwards in time. uint256 sharesLeftToBurn = amount; uint256 rewardAmount = 0; while (sharesLeftToBurn > 0) { Stake storage lastStake = accountStakes[accountStakes.length - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(lastStake.stakingTime); if(lastStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(lastStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(lastStake.stakingTime); if(lastStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(lastStake.lastWithdrawTime); } } if (lastStake.amount <= sharesLeftToBurn) { // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, lastStake.amount, stakeTimeSec); sharesLeftToBurn = sharesLeftToBurn.sub(lastStake.amount); accountStakes.length--; } else { // partially redeem a past stake rewardAmount = computeNewReward(rewardAmount, sharesLeftToBurn, stakeTimeSec); lastStake.amount = lastStake.amount.sub(sharesLeftToBurn); lastStake.lastWithdrawTime = now; sharesLeftToBurn = 0; } } //substract value in staking userTotalStaking[msg.sender].totalStaking = userTotalStaking[msg.sender].totalStaking.sub(amount); //substract from total staked totalStaked = totalStaked.sub(amount); //update user rewards info userRewardInfo[msg.sender].totalWithdrawn = userRewardInfo[msg.sender].totalWithdrawn.add(rewardAmount); userRewardInfo[msg.sender].lastWithdrawTime = now; //update total rewards withdrawn rewardsWithdrawn = rewardsWithdrawn.add(rewardAmount); //transfer rewards and tokens rewardToken.transfer(msg.sender, rewardAmount); tswap.transfer(msg.sender, amount); emit RewardWithdrawal(msg.sender, rewardAmount); emit StakingWithdrawal(msg.sender, amount); } //Withdraw rewards function withdrawRewardsOnly() external { uint256 _rwdAmount = calculateReward(msg.sender); require(_rwdAmount > 0, "You do not have enough rewards"); // 1. User Accounting Stake[] storage accountStakes = userStaking[msg.sender]; // Redeem from most recent stake and go backwards in time. uint256 rewardAmount = 0; uint256 i = accountStakes.length; while (i > 0) { Stake storage userStake = accountStakes[i - 1]; uint256 stakeTimeSec; //check if current time is more than pool ending time if (now > poolEndTime) { stakeTimeSec = poolEndTime.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = poolEndTime.sub(userStake.lastWithdrawTime); } } else { stakeTimeSec = now.sub(userStake.stakingTime); if(userStake.lastWithdrawTime != 0){ stakeTimeSec = now.sub(userStake.lastWithdrawTime); } } // fully redeem a past stake rewardAmount = computeNewReward(rewardAmount, userStake.amount, stakeTimeSec); userStake.lastWithdrawTime = now; i--; } //update user rewards info userRewardInfo[msg.sender].totalWithdrawn = userRewardInfo[msg.sender].totalWithdrawn.add(rewardAmount); userRewardInfo[msg.sender].lastWithdrawTime = now; //update total rewards withdrawn rewardsWithdrawn = rewardsWithdrawn.add(rewardAmount); //transfer rewards rewardToken.transfer(msg.sender, rewardAmount); emit RewardWithdrawal(msg.sender, rewardAmount); } //get staking details by user address function getStakingAmount(address _userAddress) external constant returns (uint256 _stakedAmount) { return userTotalStaking[_userAddress].totalStaking; } //get total rewards collected by user function getTotalRewardCollectedByUser(address userAddress) view external returns (uint256 _totalRewardCollected) { return userRewardInfo[userAddress].totalWithdrawn; } //get total SWAP token staked in the contract function getTotalStaked() external constant returns ( uint256 _totalStaked) { return totalStaked; } //get total rewards in the contract function getTotalRewards() external constant returns ( uint256 _totalRewards) { return totalRewards; } //get pool details function getPoolDetails() external view returns (address _baseToken, address _pairedToken, uint256 _totalRewards, uint256 _rewardsWithdrawn, uint256 _poolStartTime, uint256 _poolEndTime) { return (address(tswap),address(rewardToken),totalRewards,rewardsWithdrawn,poolStartTime,poolEndTime); } //get duration of pools function getPoolDuration() external constant returns (uint256 _poolDuration) { return poolDuration; } //set duration of pools by owner in seconds function setPoolDuration(uint256 _poolDuration) external onlyOwner { poolDuration = _poolDuration; poolEndTime = poolStartTime + _poolDuration; emit PoolDurationChange(_poolDuration); } //get SWAP token address function getSwapAddress() external constant returns (address _swapAddress) { return address(tswap); } //set tswap address function setTswapAddress(address _address) external onlyOwner { tswap = Ierc20(_address); } //set reward token address function setRewardTokenAddress(address _address) external onlyOwner { rewardToken = Ierc20(_address); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_poolDuration","type":"uint256"}],"name":"setPoolDuration","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTotalStaked","outputs":[{"name":"_totalStaked","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawRewardsOnly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawStaking","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userRewardInfo","outputs":[{"name":"totalWithdrawn","type":"uint256"},{"name":"lastWithdrawTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"getStakingAmount","outputs":[{"name":"_stakedAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSwapAddress","outputs":[{"name":"_swapAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTotalStaking","outputs":[{"name":"totalStaking","type":"uint256"},{"name":"totalStakingTIme","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userStaking","outputs":[{"name":"amount","type":"uint256"},{"name":"stakingTime","type":"uint256"},{"name":"lastWithdrawTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setRewardTokenAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setTswapAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"}],"name":"getTotalRewardCollectedByUser","outputs":[{"name":"_totalRewardCollected","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPoolDetails","outputs":[{"name":"_baseToken","type":"address"},{"name":"_pairedToken","type":"address"},{"name":"_totalRewards","type":"uint256"},{"name":"_rewardsWithdrawn","type":"uint256"},{"name":"_poolStartTime","type":"uint256"},{"name":"_poolEndTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tswap","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_userAddress","type":"address"}],"name":"calculateReward","outputs":[{"name":"_reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTotalRewards","outputs":[{"name":"_totalRewards","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPoolDuration","outputs":[{"name":"_poolDuration","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rewardAmount","type":"uint256"}],"name":"ownerSetPoolRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"OwnerSetReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"StakingWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"RewardWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"poolDuration","type":"uint256"}],"name":"PoolDurationChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanges","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b5060008054600160a060020a0319908116331790915560018054821673cc4304a31d09258b0029ea7fe63d032f52e44efe17905560028054909116738d717ab5eac1016b64c2a7fd04720fd2d27d1b8617905562278d006003556114db806100796000396000f3006080604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302a01dc2811461012c5780630917e77614610146578063176089691461016d5780632e0b78f614610182578063360b8ed91461019a57806374363daa146101d457806385811fbf146101f55780638da5cb5b146102265780638db6c1191461023b578063908163021461025c5780639a6acf201461029e5780639ebde781146102bf578063a694fc3a146102e0578063a6b240fe146102f8578063aca34c1114610319578063c9e486531461036d578063d82e396214610382578063e627f2db146103a3578063f2fde38b146103b8578063f7c618c1146103d9578063f7d57b81146103ee578063fbc14bfb14610403575b600080fd5b34801561013857600080fd5b5061014460043561041b565b005b34801561015257600080fd5b5061015b610475565b60408051918252519081900360200190f35b34801561017957600080fd5b5061014461047c565b34801561018e57600080fd5b50610144600435610703565b3480156101a657600080fd5b506101bb600160a060020a0360043516610b75565b6040805192835260208301919091528051918290030190f35b3480156101e057600080fd5b5061015b600160a060020a0360043516610b8e565b34801561020157600080fd5b5061020a610ba9565b60408051600160a060020a039092168252519081900360200190f35b34801561023257600080fd5b5061020a610bb8565b34801561024757600080fd5b506101bb600160a060020a0360043516610bc7565b34801561026857600080fd5b50610280600160a060020a0360043516602435610be0565b60408051938452602084019290925282820152519081900360600190f35b3480156102aa57600080fd5b50610144600160a060020a0360043516610c21565b3480156102cb57600080fd5b50610144600160a060020a0360043516610c67565b3480156102ec57600080fd5b50610144600435610cad565b34801561030457600080fd5b5061015b600160a060020a0360043516610ee1565b34801561032557600080fd5b5061032e610efc565b60408051600160a060020a039788168152959096166020860152848601939093526060840191909152608083015260a082015290519081900360c00190f35b34801561037957600080fd5b5061020a610f27565b34801561038e57600080fd5b5061015b600160a060020a0360043516610f36565b3480156103af57600080fd5b5061015b611030565b3480156103c457600080fd5b50610144600160a060020a0360043516611036565b3480156103e557600080fd5b5061020a61110e565b3480156103fa57600080fd5b5061015b61111d565b34801561040f57600080fd5b50610144600435611123565b600054600160a060020a0316331461043257600080fd5b600381905560065481016007556040805182815290517f93202f612f7aeb2a12b92bc5e92cd9600b71bbe0605f654cc7ce95e0025f22709181900360200190a150565b6008545b90565b60008060008060008061048e33610f36565b9550600086116104e8576040805160e560020a62461bcd02815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820726577617264730000604482015290519081900360640190fd5b336000908152600960205260408120805490965090945092505b60008311156105d857846001840381548110151561051c57fe5b9060005260206000209060030201915060075442111561057957600182015460075461054d9163ffffffff6112f716565b6002830154909150156105745760028201546007546105719163ffffffff6112f716565b90505b6105b5565b600182015461058f90429063ffffffff6112f716565b6002830154909150156105b55760028201546105b290429063ffffffff6112f716565b90505b6105c48483600001548361130c565b426002840155935060001990920191610502565b336000908152600b60205260409020546105f8908563ffffffff6113cf16565b336000908152600b6020526040902090815542600190910155600554610624908563ffffffff6113cf16565b600555600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5050604080513381526020810186905281517f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe929181900390910190a1505050505050565b600080808080808611610760576040805160e560020a62461bcd02815260206004820152601660248201527f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b336000908152600a60205260409020548611156107ed576040805160e560020a62461bcd02815260206004820152602e60248201527f596f752061726520747279696e6720746f2077697468646177206d6f7265207460448201527f68616e20796f7572207374616b65000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600960205260408120955086945092505b60008411156109305784548590600019810190811061081f57fe5b9060005260206000209060030201915060075442111561087c5760018201546007546108509163ffffffff6112f716565b6002830154909150156108775760028201546007546108749163ffffffff6112f716565b90505b6108b8565b600182015461089290429063ffffffff6112f716565b6002830154909150156108b85760028201546108b590429063ffffffff6112f716565b90505b815484106108fe576108cf8383600001548361130c565b82549093506108e590859063ffffffff6112f716565b85549094506108f8866000198301611431565b5061092b565b61090983858361130c565b825490935061091e908563ffffffff6112f716565b8255426002830155600093505b610804565b336000908152600a6020526040902054610950908763ffffffff6112f716565b336000908152600a6020526040902055600854610973908763ffffffff6112f716565b600855336000908152600b6020526040902054610996908463ffffffff6113cf16565b336000908152600b60205260409020908155426001909101556005546109c2908463ffffffff6113cf16565b600555600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b505050506040513d6020811015610a5c57600080fd5b5050600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018990529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5050604080513381526020810185905281517f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe929181900390910190a1604080513381526020810188905281517f5322e8325014aeb0f999c341770ee4939af85cc55c4f5e03547373cabe18978a929181900390910190a1505050505050565b600b602052600090815260409020805460019091015482565b600160a060020a03166000908152600a602052604090205490565b600154600160a060020a031690565b600054600160a060020a031681565b600a602052600090815260409020805460019091015482565b600960205281600052604060002081815481101515610bfb57fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b600054600160a060020a03163314610c3857600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610c7e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610cb5611462565b60008211610d0d576040805160e560020a62461bcd02815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b6007544210610d66576040805160e560020a62461bcd02815260206004820152601660248201527f5374616b696e6720706f6f6c20697320636c6f73656400000000000000000000604482015290519081900360640190fd5b336000908152600a6020526040902054610d86908363ffffffff6113cf16565b336000818152600a6020908152604080832094909455835160608101855286815242818301908152818601848152948452600983529483208054600181810183559185529290932081516003909302019182559351918101919091559051600290910155600854909150610e00908363ffffffff6113cf16565b600855600154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015610e7657600080fd5b505af1158015610e8a573d6000803e3d6000fd5b505050506040513d6020811015610ea057600080fd5b5050604080513381526020810184905281517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d929181900390910190a15050565b600160a060020a03166000908152600b602052604090205490565b600154600254600454600554600654600754600160a060020a03958616959490941693909192939495565b600154600160a060020a031681565b600160a060020a03811660009081526009602052604081208054829081805b6000831115611025578460018403815481101515610f6f57fe5b90600052602060002090600302019150600754421115610fcc576001820154600754610fa09163ffffffff6112f716565b600283015490915015610fc7576002820154600754610fc49163ffffffff6112f716565b90505b611008565b6001820154610fe290429063ffffffff6112f716565b60028301549091501561100857600282015461100590429063ffffffff6112f716565b90505b6110178483600001548361130c565b935060001990920191610f55565b509195945050505050565b60045490565b600054600160a060020a0316331461104d57600080fd5b600160a060020a03811615156110ad576040805160e560020a62461bcd02815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fe181e59d45ee426a055928ff3e7e85526d4ef2532db1b20262d9bb5d5263d4549181900360200190a150565b600254600160a060020a031681565b60035490565b600054600160a060020a0316331461113a57600080fd5b60065415611192576040805160e560020a62461bcd02815260206004820152601860248201527f506f6f6c207265776172647320616c7265616479207365740000000000000000604482015290519081900360640190fd5b60008111611210576040805160e560020a62461bcd02815260206004820152602360248201527f43616e6e6f742063726561746520706f6f6c2077697468207a65726f20616d6f60448201527f756e740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600481815542600681905560035401600755600254604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233938101939093523060248401526044830184905251600160a060020a03909116916323b872dd9160648083019260209291908290030181600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b50506040805182815290517f9995276a5cbceb87f6c2a87b816fb85911a01e6eec7c9380558cbaaca1d62bdf9181900360200190a150565b60008282111561130657600080fd5b50900390565b60008060008061132f670de0b6b3a76400006004546113ec90919063ffffffff16565b9250821561134e5760035461134b90849063ffffffff61141a16565b92505b60008311156113c05760085461136b90849063ffffffff61141a16565b915061138d85611381848963ffffffff6113ec16565b9063ffffffff6113ec16565b90506113a781670de0b6b3a764000063ffffffff61141a16565b90506113b9878263ffffffff6113cf16565b93506113c5565b600093505b5050509392505050565b6000828201838110156113e157600080fd5b8091505b5092915050565b6000808315156113ff57600091506113e5565b5082820282848281151561140f57fe5b04146113e157600080fd5b600080828481151561142857fe5b04949350505050565b81548183558181111561145d5760030281600302836000526020600020918201910161145d9190611484565b505050565b6060604051908101604052806000815260200160008152602001600081525090565b61047991905b808211156114ab57600080825560018201819055600282015560030161148a565b50905600a165627a7a723058206df58f27ba58e027253c43b541312eb8c5c4424fcd49cd54fc89b3b8c2be0d7d0029
Deployed Bytecode
0x6080604052600436106101275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302a01dc2811461012c5780630917e77614610146578063176089691461016d5780632e0b78f614610182578063360b8ed91461019a57806374363daa146101d457806385811fbf146101f55780638da5cb5b146102265780638db6c1191461023b578063908163021461025c5780639a6acf201461029e5780639ebde781146102bf578063a694fc3a146102e0578063a6b240fe146102f8578063aca34c1114610319578063c9e486531461036d578063d82e396214610382578063e627f2db146103a3578063f2fde38b146103b8578063f7c618c1146103d9578063f7d57b81146103ee578063fbc14bfb14610403575b600080fd5b34801561013857600080fd5b5061014460043561041b565b005b34801561015257600080fd5b5061015b610475565b60408051918252519081900360200190f35b34801561017957600080fd5b5061014461047c565b34801561018e57600080fd5b50610144600435610703565b3480156101a657600080fd5b506101bb600160a060020a0360043516610b75565b6040805192835260208301919091528051918290030190f35b3480156101e057600080fd5b5061015b600160a060020a0360043516610b8e565b34801561020157600080fd5b5061020a610ba9565b60408051600160a060020a039092168252519081900360200190f35b34801561023257600080fd5b5061020a610bb8565b34801561024757600080fd5b506101bb600160a060020a0360043516610bc7565b34801561026857600080fd5b50610280600160a060020a0360043516602435610be0565b60408051938452602084019290925282820152519081900360600190f35b3480156102aa57600080fd5b50610144600160a060020a0360043516610c21565b3480156102cb57600080fd5b50610144600160a060020a0360043516610c67565b3480156102ec57600080fd5b50610144600435610cad565b34801561030457600080fd5b5061015b600160a060020a0360043516610ee1565b34801561032557600080fd5b5061032e610efc565b60408051600160a060020a039788168152959096166020860152848601939093526060840191909152608083015260a082015290519081900360c00190f35b34801561037957600080fd5b5061020a610f27565b34801561038e57600080fd5b5061015b600160a060020a0360043516610f36565b3480156103af57600080fd5b5061015b611030565b3480156103c457600080fd5b50610144600160a060020a0360043516611036565b3480156103e557600080fd5b5061020a61110e565b3480156103fa57600080fd5b5061015b61111d565b34801561040f57600080fd5b50610144600435611123565b600054600160a060020a0316331461043257600080fd5b600381905560065481016007556040805182815290517f93202f612f7aeb2a12b92bc5e92cd9600b71bbe0605f654cc7ce95e0025f22709181900360200190a150565b6008545b90565b60008060008060008061048e33610f36565b9550600086116104e8576040805160e560020a62461bcd02815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820726577617264730000604482015290519081900360640190fd5b336000908152600960205260408120805490965090945092505b60008311156105d857846001840381548110151561051c57fe5b9060005260206000209060030201915060075442111561057957600182015460075461054d9163ffffffff6112f716565b6002830154909150156105745760028201546007546105719163ffffffff6112f716565b90505b6105b5565b600182015461058f90429063ffffffff6112f716565b6002830154909150156105b55760028201546105b290429063ffffffff6112f716565b90505b6105c48483600001548361130c565b426002840155935060001990920191610502565b336000908152600b60205260409020546105f8908563ffffffff6113cf16565b336000908152600b6020526040902090815542600190910155600554610624908563ffffffff6113cf16565b600555600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5050604080513381526020810186905281517f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe929181900390910190a1505050505050565b600080808080808611610760576040805160e560020a62461bcd02815260206004820152601660248201527f416d6f756e742063616e206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b336000908152600a60205260409020548611156107ed576040805160e560020a62461bcd02815260206004820152602e60248201527f596f752061726520747279696e6720746f2077697468646177206d6f7265207460448201527f68616e20796f7572207374616b65000000000000000000000000000000000000606482015290519081900360840190fd5b336000908152600960205260408120955086945092505b60008411156109305784548590600019810190811061081f57fe5b9060005260206000209060030201915060075442111561087c5760018201546007546108509163ffffffff6112f716565b6002830154909150156108775760028201546007546108749163ffffffff6112f716565b90505b6108b8565b600182015461089290429063ffffffff6112f716565b6002830154909150156108b85760028201546108b590429063ffffffff6112f716565b90505b815484106108fe576108cf8383600001548361130c565b82549093506108e590859063ffffffff6112f716565b85549094506108f8866000198301611431565b5061092b565b61090983858361130c565b825490935061091e908563ffffffff6112f716565b8255426002830155600093505b610804565b336000908152600a6020526040902054610950908763ffffffff6112f716565b336000908152600a6020526040902055600854610973908763ffffffff6112f716565b600855336000908152600b6020526040902054610996908463ffffffff6113cf16565b336000908152600b60205260409020908155426001909101556005546109c2908463ffffffff6113cf16565b600555600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b505050506040513d6020811015610a5c57600080fd5b5050600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018990529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5050604080513381526020810185905281517f5bf73990fdbbb1700fedc6b63f17f15c22d262a16352f0fd668471a1e3548ffe929181900390910190a1604080513381526020810188905281517f5322e8325014aeb0f999c341770ee4939af85cc55c4f5e03547373cabe18978a929181900390910190a1505050505050565b600b602052600090815260409020805460019091015482565b600160a060020a03166000908152600a602052604090205490565b600154600160a060020a031690565b600054600160a060020a031681565b600a602052600090815260409020805460019091015482565b600960205281600052604060002081815481101515610bfb57fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b600054600160a060020a03163314610c3857600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610c7e57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610cb5611462565b60008211610d0d576040805160e560020a62461bcd02815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b6007544210610d66576040805160e560020a62461bcd02815260206004820152601660248201527f5374616b696e6720706f6f6c20697320636c6f73656400000000000000000000604482015290519081900360640190fd5b336000908152600a6020526040902054610d86908363ffffffff6113cf16565b336000818152600a6020908152604080832094909455835160608101855286815242818301908152818601848152948452600983529483208054600181810183559185529290932081516003909302019182559351918101919091559051600290910155600854909150610e00908363ffffffff6113cf16565b600855600154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd916064808201926020929091908290030181600087803b158015610e7657600080fd5b505af1158015610e8a573d6000803e3d6000fd5b505050506040513d6020811015610ea057600080fd5b5050604080513381526020810184905281517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d929181900390910190a15050565b600160a060020a03166000908152600b602052604090205490565b600154600254600454600554600654600754600160a060020a03958616959490941693909192939495565b600154600160a060020a031681565b600160a060020a03811660009081526009602052604081208054829081805b6000831115611025578460018403815481101515610f6f57fe5b90600052602060002090600302019150600754421115610fcc576001820154600754610fa09163ffffffff6112f716565b600283015490915015610fc7576002820154600754610fc49163ffffffff6112f716565b90505b611008565b6001820154610fe290429063ffffffff6112f716565b60028301549091501561100857600282015461100590429063ffffffff6112f716565b90505b6110178483600001548361130c565b935060001990920191610f55565b509195945050505050565b60045490565b600054600160a060020a0316331461104d57600080fd5b600160a060020a03811615156110ad576040805160e560020a62461bcd02815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b60008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fe181e59d45ee426a055928ff3e7e85526d4ef2532db1b20262d9bb5d5263d4549181900360200190a150565b600254600160a060020a031681565b60035490565b600054600160a060020a0316331461113a57600080fd5b60065415611192576040805160e560020a62461bcd02815260206004820152601860248201527f506f6f6c207265776172647320616c7265616479207365740000000000000000604482015290519081900360640190fd5b60008111611210576040805160e560020a62461bcd02815260206004820152602360248201527f43616e6e6f742063726561746520706f6f6c2077697468207a65726f20616d6f60448201527f756e740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600481815542600681905560035401600755600254604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233938101939093523060248401526044830184905251600160a060020a03909116916323b872dd9160648083019260209291908290030181600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b50506040805182815290517f9995276a5cbceb87f6c2a87b816fb85911a01e6eec7c9380558cbaaca1d62bdf9181900360200190a150565b60008282111561130657600080fd5b50900390565b60008060008061132f670de0b6b3a76400006004546113ec90919063ffffffff16565b9250821561134e5760035461134b90849063ffffffff61141a16565b92505b60008311156113c05760085461136b90849063ffffffff61141a16565b915061138d85611381848963ffffffff6113ec16565b9063ffffffff6113ec16565b90506113a781670de0b6b3a764000063ffffffff61141a16565b90506113b9878263ffffffff6113cf16565b93506113c5565b600093505b5050509392505050565b6000828201838110156113e157600080fd5b8091505b5092915050565b6000808315156113ff57600091506113e5565b5082820282848281151561140f57fe5b04146113e157600080fd5b600080828481151561142857fe5b04949350505050565b81548183558181111561145d5760030281600302836000526020600020918201910161145d9190611484565b505050565b6060604051908101604052806000815260200160008152602001600081525090565b61047991905b808211156114ab57600080825560018201819055600282015560030161148a565b50905600a165627a7a723058206df58f27ba58e027253c43b541312eb8c5c4424fcd49cd54fc89b3b8c2be0d7d0029
Deployed Bytecode Sourcemap
1950:11672:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12936:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12936:217:0;;;;;;;12099:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12099:113:0;;;;;;;;;;;;;;;;;;;;9707:1864;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9707:1864:0;;;;6888:2783;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6888:2783:0;;;;;2809:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2809:53:0;-1:-1:-1;;;;;2809:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11626:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11626:167:0;-1:-1:-1;;;;;11626:167:0;;;;;13195:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13195:115:0;;;;;;;;-1:-1:-1;;;;;13195:115:0;;;;;;;;;;;;;;1447:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1447:20:0;;;;2640:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2640:55:0;-1:-1:-1;;;;;2640:55:0;;;;;2438:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2438:47:0;-1:-1:-1;;;;;2438:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13496:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13496:117:0;-1:-1:-1;;;;;13496:117:0;;;;;13347:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13347:105:0;-1:-1:-1;;;;;13347:105:0;;;;;4069:682;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4069:682:0;;;;;11848:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11848:188:0;-1:-1:-1;;;;;11848:188:0;;;;;12417:306;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12417:306:0;;;;;;;;-1:-1:-1;;;;;12417:306:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2026:19:0;;;;5565:1275;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5565:1275:0;-1:-1:-1;;;;;5565:1275:0;;;;;12265:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12265:116:0;;;;1715:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1715:228:0;-1:-1:-1;;;;;1715:228:0;;;;;2052:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2052:25:0;;;;12764:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12764:115:0;;;;3455:550;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3455:550:0;;;;;12936:217;1669:5;;-1:-1:-1;;;;;1669:5:0;1655:10;:19;1647:28;;;;;;13014:12;:28;;;13067:13;;:29;;13053:11;:43;13112:33;;;;;;;;;;;;;;;;;12936:217;:::o;12099:113::-;12193:11;;12099:113;;:::o;9707:1864::-;9758:18;9926:29;10070:20;10105:9;10177:23;10238:20;9779:27;9795:10;9779:15;:27::i;:::-;9758:48;-1:-1:-1;9838:1:0;9825:14;;9817:57;;;;;-1:-1:-1;;;;;9817:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9970:10;9958:23;;;;:11;:23;;;;;10117:20;;9958:23;;-1:-1:-1;9958:23:0;;-1:-1:-1;10117:20:0;-1:-1:-1;10148:927:0;10159:1;10155;:5;10148:927;;;10203:13;10221:1;10217;:5;10203:20;;;;;;;;;;;;;;;;;;;;10177:46;;10364:11;;10358:3;:17;10354:497;;;10427:21;;;;10411:11;;:38;;;:15;:38;:::i;:::-;10471:26;;;;10396:53;;-1:-1:-1;10471:31:0;10468:136;;10557:26;;;;10541:11;;:43;;;:15;:43;:::i;:::-;10526:58;;10468:136;10354:497;;;10667:21;;;;10659:30;;:3;;:30;:7;:30;:::i;:::-;10711:26;;;;10644:45;;-1:-1:-1;10711:31:0;10708:128;;10789:26;;;;10781:35;;:3;;:35;:7;:35;:::i;:::-;10766:50;;10708:128;10936:62;10953:12;10967:9;:16;;;10985:12;10936:16;:62::i;:::-;11042:3;11013:26;;;:32;10921:77;-1:-1:-1;;;11060:3:0;;;;10148:927;;;11190:10;11175:26;;;;:14;:26;;;;;:41;:59;;11221:12;11175:59;:45;:59;:::i;:::-;11146:10;11131:26;;;;:14;:26;;;;;:103;;;11291:3;11245:43;;;;:49;11376:16;;:34;;11397:12;11376:34;:20;:34;:::i;:::-;11357:16;:53;11459:11;;:46;;;;;;11480:10;11459:46;;;;;;;;;;;;-1:-1:-1;;;;;11459:11:0;;;;:20;;:46;;;;;;;;;;;;;;;:11;;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;11459:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11459:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;11521:42:0;;;11538:10;11521:42;;11459:46;11521:42;;;;;;;;;;;;;;;;;;9707:1864;;;;;;:::o;6888:2783::-;7167:29;;;;;6957:10;;;6949:45;;;;;-1:-1:-1;;;;;6949:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7030:10;7013:28;;;;:16;:28;;;;;:41;:51;-1:-1:-1;7013:51:0;7005:110;;;;;-1:-1:-1;;;;;7005:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7211:10;7199:23;;;;:11;:23;;;;;;-1:-1:-1;7338:6:0;;-1:-1:-1;7199:23:0;-1:-1:-1;7390:1413:0;7416:1;7397:16;:20;7390:1413;;;7474:20;;7460:13;;-1:-1:-1;;7474:24:0;;;7460:39;;;;;;;;;;;;;;;;7434:65;;7626:11;;7620:3;:17;7616:497;;;7689:21;;;;7673:11;;:38;;;:15;:38;:::i;:::-;7733:26;;;;7658:53;;-1:-1:-1;7733:31:0;7730:136;;7819:26;;;;7803:11;;:43;;;:15;:43;:::i;:::-;7788:58;;7730:136;7616:497;;;7929:21;;;;7921:30;;:3;;:30;:7;:30;:::i;:::-;7973:26;;;;7906:45;;-1:-1:-1;7973:31:0;7970:128;;8051:26;;;;8043:35;;:3;;:35;:7;:35;:::i;:::-;8028:50;;7970:128;8145:16;;:36;-1:-1:-1;8141:651:0;;8263:62;8280:12;8294:9;:16;;;8312:12;8263:16;:62::i;:::-;8384:16;;8248:77;;-1:-1:-1;8363:38:0;;:16;;:38;:20;:38;:::i;:::-;8420:22;;8344:57;;-1:-1:-1;8420:22:0;:13;-1:-1:-1;;8420:22:0;;;:::i;:::-;;8141:651;;;8548:62;8565:12;8579:16;8597:12;8548:16;:62::i;:::-;8648:16;;8533:77;;-1:-1:-1;8648:38:0;;8669:16;8648:38;:20;:38;:::i;:::-;8629:57;;8734:3;8705:26;;;:32;8629:16;;-1:-1:-1;8141:651:0;7390:1413;;;8922:10;8905:28;;;;:16;:28;;;;;:41;:53;;8951:6;8905:53;:45;:53;:::i;:::-;8878:10;8861:28;;;;:16;:28;;;;;:97;9032:11;;:23;;9048:6;9032:23;:15;:23;:::i;:::-;9018:11;:37;9171:10;9156:26;;;;:14;:26;;;;;:41;:59;;9202:12;9156:59;:45;:59;:::i;:::-;9127:10;9112:26;;;;:14;:26;;;;;:103;;;9272:3;9226:43;;;;:49;9357:16;;:34;;9378:12;9357:34;:20;:34;:::i;:::-;9338:16;:53;9451:11;;:46;;;;;;9472:10;9451:46;;;;;;;;;;;;-1:-1:-1;;;;;9451:11:0;;;;:20;;:46;;;;;;;;;;;;;;;:11;;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;9451:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9451:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;9508:5:0;;:34;;;;;;9523:10;9508:34;;;;;;;;;;;;-1:-1:-1;;;;;9508:5:0;;;;:14;;:34;;;;;9451:46;;9508:34;;;;;;;;:5;;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;9508:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9508:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;9568:42:0;;;9585:10;9568:42;;9508:34;9568:42;;;;;;;;;;;;;;;;;;9626:37;;;9644:10;9626:37;;;;;;;;;;;;;;;;;;;;;6888:2783;;;;;;:::o;2809:53::-;;;;;;;;;;;;;;;;;;;:::o;11626:167::-;-1:-1:-1;;;;;11742:30:0;11701:21;11742:30;;;:16;:30;;;;;:43;;11626:167::o;13195:115::-;13296:5;;-1:-1:-1;;;;;13296:5:0;13195:115;:::o;1447:20::-;;;-1:-1:-1;;;;;1447:20:0;;:::o;2640:55::-;;;;;;;;;;;;;;;;;;;:::o;2438:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2438:47:0;;-1:-1:-1;2438:47:0;:::o;13496:117::-;1669:5;;-1:-1:-1;;;;;1669:5:0;1655:10;:19;1647:28;;;;;;13575:11;:30;;-1:-1:-1;;13575:30:0;-1:-1:-1;;;;;13575:30:0;;;;;;;;;;13496:117::o;13347:105::-;1669:5;;-1:-1:-1;;;;;1669:5:0;1655:10;:19;1647:28;;;;;;13420:5;:24;;-1:-1:-1;;13420:24:0;-1:-1:-1;;;;;13420:24:0;;;;;;;;;;13347:105::o;4069:682::-;4453:21;;:::i;:::-;4137:1;4128:10;;4120:37;;;;;-1:-1:-1;;;;;4120:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:11;;4176:3;:17;4168:52;;;;;-1:-1:-1;;;;;4168:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4371:10;4354:28;;;;:16;:28;;;;;:41;:53;;4400:6;4354:53;:45;:53;:::i;:::-;4327:10;4310:28;;;;:16;:28;;;;;;;;:97;;;;4477:21;;;;;;;;;;4491:3;4477:21;;;;;;;;;;;;4509:23;;;:11;:23;;;;;27:10:-1;;39:1;23:18;;;45:23;;4509:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:11;;4477:21;;-1:-1:-1;4613:23:0;;4483:6;4613:23;:15;:23;:::i;:::-;4599:11;:37;4657:5;;:44;;;;;;4676:10;4657:44;;;;4688:4;4657:44;;;;;;;;;;;;-1:-1:-1;;;;;4657:5:0;;;;:18;;:44;;;;;;;;;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;4657:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4657:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4717:26:0;;;4724:10;4717:26;;4657:44;4717:26;;;;;;;;;;;;;;;;;;4069:682;;:::o;11848:188::-;-1:-1:-1;;;;;11986:27:0;11931:29;11986:27;;;:14;:27;;;;;:42;;11848:188::o;12417:306::-;12631:5;;12646:11;;12659:12;;12672:16;;12689:13;;12703:11;;-1:-1:-1;;;;;12631:5:0;;;;12646:11;;;;;12417:306;;;;;;:::o;2026:19::-;;;-1:-1:-1;;;;;2026:19:0;;:::o;5565:1275::-;-1:-1:-1;;;;;5721:25:0;;5633:15;5721:25;;;:11;:25;;;;;5882:20;;5633:15;;;;5913:880;5924:1;5920;:5;5913:880;;;5968:13;5986:1;5982;:5;5968:20;;;;;;;;;;;;;;;;;;;;5942:46;;6129:11;;6123:3;:17;6119:497;;;6192:21;;;;6176:11;;:38;;;:15;:38;:::i;:::-;6236:26;;;;6161:53;;-1:-1:-1;6236:31:0;6233:136;;6322:26;;;;6306:11;;:43;;;:15;:43;:::i;:::-;6291:58;;6233:136;6119:497;;;6432:21;;;;6424:30;;:3;;:30;:7;:30;:::i;:::-;6476:26;;;;6409:45;;-1:-1:-1;6476:31:0;6473:128;;6554:26;;;;6546:35;;:3;;:35;:7;:35;:::i;:::-;6531:50;;6473:128;6701:62;6718:12;6732:9;:16;;;6750:12;6701:16;:62::i;:::-;6686:77;-1:-1:-1;;;6778:3:0;;;;5913:880;;;-1:-1:-1;6820:12:0;;5565:1275;-1:-1:-1;;;;;5565:1275:0:o;12265:116::-;12361:12;;12265:116;:::o;1715:228::-;1669:5;;-1:-1:-1;;;;;1669:5:0;1655:10;:19;1647:28;;;;;;-1:-1:-1;;;;;1802:22:0;;;;1794:64;;;;;-1:-1:-1;;;;;1794:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:5;:16;;-1:-1:-1;;;;;1873:16:0;;-1:-1:-1;;1873:16:0;;;;;;;;1909:22;;;;;;;;;;;;;;;;1715:228;:::o;2052:25::-;;;-1:-1:-1;;;;;2052:25:0;;:::o;12764:115::-;12859:12;;12764:115;:::o;3455:550::-;1669:5;;-1:-1:-1;;;;;1669:5:0;1655:10;:19;1647:28;;;;;;3545:13;;:18;3537:55;;;;;-1:-1:-1;;;;;3537:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3627:1;3611:17;;3603:65;;;;;-1:-1:-1;;;;;3603:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3724:12;:28;;;3789:3;3773:13;:19;;;3823:12;;3817:18;3803:11;:32;3895:11;;:57;;;;;;3920:10;3895:57;;;;;;;3932:4;3895:57;;;;;;;;;;;-1:-1:-1;;;;;3895:11:0;;;;:24;;:57;;;;;;;;;;;;;;-1:-1:-1;3895:11:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;3895:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3895:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3968:29:0;;;;;;;;;;;;;3895:57;3968:29;;;3455:550;:::o;997:114::-;1055:7;1079:6;;;;1071:15;;;;;;-1:-1:-1;1100:5:0;;;997:114::o;4786:737::-;4903:15;4931:23;5158:38;5246:19;4957:25;4974:7;4957:12;;:16;;:25;;;;:::i;:::-;4931:51;-1:-1:-1;4997:20:0;;4993:105;;5073:12;;5053:33;;:15;;:33;:19;:33;:::i;:::-;5035:51;;4993:105;5140:1;5122:15;:19;5118:398;;;5219:11;;5199:32;;:15;;:32;:19;:32;:::i;:::-;5158:73;-1:-1:-1;5268:68:0;5322:13;5268:49;5158:73;5303:13;5268:49;:34;:49;:::i;:::-;:53;:68;:53;:68;:::i;:::-;5246:90;-1:-1:-1;5373:24:0;5246:90;5389:7;5373:24;:15;:24;:::i;:::-;5359:38;-1:-1:-1;5433:30:0;:13;5359:38;5433:30;:17;:30;:::i;:::-;5426:37;;;;5118:398;5503:1;5496:8;;5118:398;4786:737;;;;;;;;:::o;1117:134::-;1175:7;1203:5;;;1223:6;;;;1215:15;;;;;;1244:1;1237:8;;1117:134;;;;;;:::o;692:181::-;750:7;;770:6;;766:37;;;794:1;787:8;;;;766:37;-1:-1:-1;821:5:0;;;825:1;821;:5;841;;;;;;;;:10;833:19;;;;;879:112;937:7;953:9;969:1;965;:5;;;;;;;;;879:112;-1:-1:-1;;;;879:112:0:o;1950:11672::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://6df58f27ba58e027253c43b541312eb8c5c4424fcd49cd54fc89b3b8c2be0d7d
Loading...
Loading
Loading...
Loading
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.