More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 69 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 16005866 | 753 days ago | IN | 0 ETH | 0.00163198 | ||||
Stake | 15812177 | 780 days ago | IN | 0.06336205 ETH | 0.01068545 | ||||
Withdraw | 15812080 | 780 days ago | IN | 0 ETH | 0.00260966 | ||||
Stake | 15619684 | 807 days ago | IN | 0.05068964 ETH | 0.00910792 | ||||
Withdraw | 13804854 | 1093 days ago | IN | 0 ETH | 0.01135732 | ||||
Stake | 13442252 | 1150 days ago | IN | 0.89421122 ETH | 0.04567955 | ||||
Withdraw | 13325499 | 1168 days ago | IN | 0 ETH | 0.00912276 | ||||
Stake | 13068176 | 1208 days ago | IN | 0.22986315 ETH | 0.01307706 | ||||
Withdraw | 13067940 | 1208 days ago | IN | 0 ETH | 0.00330109 | ||||
Withdraw | 12972004 | 1223 days ago | IN | 0 ETH | 0.00484632 | ||||
Withdraw | 12971992 | 1223 days ago | IN | 0 ETH | 0.00697824 | ||||
Stake | 12843629 | 1243 days ago | IN | 0.19894422 ETH | 0.01245522 | ||||
Withdraw | 12843583 | 1243 days ago | IN | 0 ETH | 0.0018946 | ||||
Stake | 12748802 | 1258 days ago | IN | 0.01566761 ETH | 0.01698352 | ||||
Stake | 12748623 | 1258 days ago | IN | 0.07739656 ETH | 0.01789091 | ||||
Withdraw | 12731291 | 1261 days ago | IN | 0 ETH | 0.00245727 | ||||
Stake | 12622150 | 1278 days ago | IN | 0.12183421 ETH | 0.00703124 | ||||
Stake | 12533413 | 1291 days ago | IN | 0.19462974 ETH | 0.01306271 | ||||
Withdraw | 12376586 | 1316 days ago | IN | 0 ETH | 0.005565 | ||||
Withdraw | 12376584 | 1316 days ago | IN | 0 ETH | 0.00888741 | ||||
Stake | 12303326 | 1327 days ago | IN | 0.38735223 ETH | 0.03589929 | ||||
Stake | 12180659 | 1346 days ago | IN | 2.0654774 ETH | 0.1592287 | ||||
Stake | 12177298 | 1346 days ago | IN | 1.0327387 ETH | 0.06455544 | ||||
Withdraw | 12172993 | 1347 days ago | IN | 0 ETH | 0.01072917 | ||||
Withdraw | 12089712 | 1360 days ago | IN | 0 ETH | 0.017385 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15812177 | 780 days ago | 0.06336205 ETH | ||||
15619684 | 807 days ago | 0.05068964 ETH | ||||
13442252 | 1150 days ago | 0.89421122 ETH | ||||
13068176 | 1208 days ago | 0.22986315 ETH | ||||
12843629 | 1243 days ago | 0.19894422 ETH | ||||
12748802 | 1258 days ago | 0.01566761 ETH | ||||
12748623 | 1258 days ago | 0.07739656 ETH | ||||
12622150 | 1278 days ago | 0.12183421 ETH | ||||
12533413 | 1291 days ago | 0.19462974 ETH | ||||
12303326 | 1327 days ago | 0.38735223 ETH | ||||
12180659 | 1346 days ago | 2.0654774 ETH | ||||
12177298 | 1346 days ago | 1.0327387 ETH | ||||
11958407 | 1380 days ago | 0.24942702 ETH | ||||
11941113 | 1383 days ago | 1.04556648 ETH | ||||
11910493 | 1387 days ago | 0.3880439 ETH | ||||
11909752 | 1387 days ago | 3.11536709 ETH | ||||
11889655 | 1391 days ago | 0.2740691 ETH | ||||
11858174 | 1395 days ago | 0.95927484 ETH | ||||
11856852 | 1396 days ago | 0.57801032 ETH | ||||
11399744 | 1466 days ago | 1.23870439 ETH | ||||
11399737 | 1466 days ago | 1.23870439 ETH | ||||
11276908 | 1485 days ago | 0.66762239 ETH | ||||
11217872 | 1494 days ago | 2.44590357 ETH | ||||
11205378 | 1496 days ago | 1.13931609 ETH | ||||
11146393 | 1505 days ago | 3.35012638 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xB68FB8B4...85800aC56 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DFOStake
Compiler Version
v0.7.1+commit.f4a555be
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-12 */ pragma solidity ^0.7.1; contract DFOStake { address private constant UNISWAP_V2_FACTORY = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address private constant UNISWAP_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address private WETH_ADDRESS = IUniswapV2Router(UNISWAP_V2_ROUTER).WETH(); address[] private TOKENS; mapping(uint256 => uint256) private _totalPoolAmount; uint256[] private TIME_WINDOWS; uint256[] private REWARD_MULTIPLIERS; uint256[] private REWARD_DIVIDERS; uint256[] private REWARD_SPLIT_TRANCHES; address private _doubleProxy; struct StakeInfo { address sender; uint256 poolPosition; uint256 firstAmount; uint256 secondAmount; uint256 poolAmount; uint256 reward; uint256 endBlock; uint256[] partialRewardBlockTimes; uint256 splittedReward; } uint256 private _startBlock; mapping(uint256 => mapping(uint256 => StakeInfo)) private _stakeInfo; mapping(uint256 => uint256) private _stakeInfoLength; event Staked(address indexed sender, uint256 indexed tier, uint256 indexed poolPosition, uint256 firstAmount, uint256 secondAmount, uint256 poolAmount, uint256 reward, uint256 endBlock, uint256[] partialRewardBlockTimes, uint256 splittedReward); event Withdrawn(address sender, address indexed receiver, uint256 indexed tier, uint256 indexed poolPosition, uint256 firstAmount, uint256 secondAmount, uint256 poolAmount, uint256 reward); event PartialWithdrawn(address sender, address indexed receiver, uint256 indexed tier, uint256 reward); constructor(uint256 startBlock, address doubleProxy, address[] memory tokens, uint256[] memory timeWindows, uint256[] memory rewardMultipliers, uint256[] memory rewardDividers, uint256[] memory rewardSplitTranches) public { _startBlock = startBlock; _doubleProxy = doubleProxy; for(uint256 i = 0; i < tokens.length; i++) { TOKENS.push(tokens[i]); } assert(timeWindows.length == rewardMultipliers.length && rewardMultipliers.length == rewardDividers.length && rewardDividers.length == rewardSplitTranches.length); for(uint256 i = 0; i < timeWindows.length; i++) { TIME_WINDOWS.push(timeWindows[i]); } for(uint256 i = 0; i < rewardMultipliers.length; i++) { REWARD_MULTIPLIERS.push(rewardMultipliers[i]); } for(uint256 i = 0; i < rewardDividers.length; i++) { REWARD_DIVIDERS.push(rewardDividers[i]); } for(uint256 i = 0; i < rewardSplitTranches.length; i++) { REWARD_SPLIT_TRANCHES.push(rewardSplitTranches[i]); } } function doubleProxy() public view returns(address) { return _doubleProxy; } function tokens() public view returns(address[] memory) { return TOKENS; } function tierData() public view returns(uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory) { return (TIME_WINDOWS, REWARD_MULTIPLIERS, REWARD_DIVIDERS, REWARD_SPLIT_TRANCHES); } function startBlock() public view returns(uint256) { return _startBlock; } function totalPoolAmount(uint256 poolPosition) public view returns(uint256) { return _totalPoolAmount[poolPosition]; } function setDoubleProxy(address newDoubleProxy) public { require(IMVDFunctionalitiesManager(IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getMVDFunctionalitiesManagerAddress()).isAuthorizedFunctionality(msg.sender), "Unauthorized Action!"); _doubleProxy = newDoubleProxy; } function emergencyFlush() public { IMVDProxy proxy = IMVDProxy(IDoubleProxy(_doubleProxy).proxy()); require(IMVDFunctionalitiesManager(proxy.getMVDFunctionalitiesManagerAddress()).isAuthorizedFunctionality(msg.sender), "Unauthorized Action!"); address walletAddress = proxy.getMVDWalletAddress(); address tokenAddress = proxy.getToken(); IERC20 token = IERC20(tokenAddress); uint256 balanceOf = token.balanceOf(address(this)); if(balanceOf > 0) { token.transfer(walletAddress, balanceOf); } balanceOf = 0; for(uint256 i = 0; i < TOKENS.length; i++) { token = IERC20(IUniswapV2Factory(UNISWAP_V2_FACTORY).getPair(tokenAddress, TOKENS[i])); balanceOf = token.balanceOf(address(this)); if(balanceOf > 0) { token.transfer(walletAddress, balanceOf); _totalPoolAmount[i] = 0; } balanceOf = 0; } } function stake(uint256 tier, uint256 poolPosition, uint256 originalFirstAmount, uint256 firstAmountMin, uint256 value, uint256 secondAmountMin) public payable { require(block.number >= _startBlock, "Staking is still not available"); require(poolPosition < TOKENS.length, "Unknown Pool"); require(tier < TIME_WINDOWS.length, "Unknown tier"); require(originalFirstAmount > 0, "First amount must be greater than 0"); uint256 originalSecondAmount = TOKENS[poolPosition] == WETH_ADDRESS ? msg.value : value; require(originalSecondAmount > 0, "Second amount must be greater than 0"); IMVDProxy proxy = IMVDProxy(IDoubleProxy(_doubleProxy).proxy()); address tokenAddress = proxy.getToken(); _transferTokensAndCheckAllowance(tokenAddress, originalFirstAmount); _transferTokensAndCheckAllowance(TOKENS[poolPosition], originalSecondAmount); address secondToken = TOKENS[poolPosition]; (uint256 firstAmount, uint256 secondAmount, uint256 poolAmount) = _createPoolToken(originalFirstAmount, firstAmountMin, originalSecondAmount, secondAmountMin, tokenAddress, secondToken); _totalPoolAmount[poolPosition] += poolAmount; (uint256 minCap,, uint256 remainingToStake) = getStakingInfo(tier); require(firstAmount >= minCap, "Amount to stake is less than the current min cap"); require(firstAmount <= remainingToStake, "Amount to stake must be less than the current remaining one"); calculateRewardAndAddStakingPosition(tier, poolPosition, firstAmount, secondAmount, poolAmount, proxy); } function getStakingInfo(uint256 tier) public view returns(uint256 minCap, uint256 hardCap, uint256 remainingToStake) { (minCap, hardCap) = getStakingCap(tier); remainingToStake = hardCap; uint256 length = _stakeInfoLength[tier]; for(uint256 i = 0; i < length; i++) { if(_stakeInfo[tier][i].endBlock > block.number) { remainingToStake -= _stakeInfo[tier][i].firstAmount; } } } function getStakingCap(uint256 tier) public view returns(uint256, uint256) { IStateHolder stateHolder = IStateHolder(IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getStateHolderAddress()); string memory tierString = _toString(tier); string memory addressString = _toLowerCase(_toString(address(this))); return ( stateHolder.getUint256(string(abi.encodePacked("staking.", addressString, ".tiers[", tierString, "].minCap"))), stateHolder.getUint256(string(abi.encodePacked("staking.", addressString, ".tiers[", tierString, "].hardCap"))) ); } function _transferTokensAndCheckAllowance(address tokenAddress, uint256 value) private { if(tokenAddress == WETH_ADDRESS) { return; } IERC20 token = IERC20(tokenAddress); token.transferFrom(msg.sender, address(this), value); if(token.allowance(address(this), UNISWAP_V2_ROUTER) <= value) { token.approve(UNISWAP_V2_ROUTER, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); } } function _createPoolToken(uint256 originalFirstAmount, uint256 firstAmountMin, uint256 originalSecondAmount, uint256 secondAmountMin, address firstToken, address secondToken) private returns(uint256 firstAmount, uint256 secondAmount, uint256 poolAmount) { if(secondToken == WETH_ADDRESS) { (firstAmount, secondAmount, poolAmount) = IUniswapV2Router(UNISWAP_V2_ROUTER).addLiquidityETH{value: originalSecondAmount}( firstToken, originalFirstAmount, firstAmountMin, secondAmountMin, address(this), block.timestamp + 1000 ); } else { (firstAmount, secondAmount, poolAmount) = IUniswapV2Router(UNISWAP_V2_ROUTER).addLiquidity( firstToken, secondToken, originalFirstAmount, originalSecondAmount, firstAmountMin, secondAmountMin, address(this), block.timestamp + 1000 ); } if(firstAmount < originalFirstAmount) { IERC20(firstToken).transfer(msg.sender, originalFirstAmount - firstAmount); } if(secondAmount < originalSecondAmount) { if(secondToken == WETH_ADDRESS) { payable(msg.sender).transfer(originalSecondAmount - secondAmount); } else { IERC20(secondToken).transfer(msg.sender, originalSecondAmount - secondAmount); } } } function calculateRewardAndAddStakingPosition(uint256 tier, uint256 poolPosition, uint256 firstAmount, uint256 secondAmount, uint256 poolAmount, IMVDProxy proxy) private { uint256 partialRewardSingleBlockTime = TIME_WINDOWS[tier] / REWARD_SPLIT_TRANCHES[tier]; uint256[] memory partialRewardBlockTimes = new uint256[](REWARD_SPLIT_TRANCHES[tier]); if(partialRewardBlockTimes.length > 0) { partialRewardBlockTimes[0] = block.number + partialRewardSingleBlockTime; for(uint256 i = 1; i < partialRewardBlockTimes.length; i++) { partialRewardBlockTimes[i] = partialRewardBlockTimes[i - 1] + partialRewardSingleBlockTime; } } uint256 reward = firstAmount * REWARD_MULTIPLIERS[tier] / REWARD_DIVIDERS[tier]; StakeInfo memory stakeInfo = StakeInfo(msg.sender, poolPosition, firstAmount, secondAmount, poolAmount, reward, block.number + TIME_WINDOWS[tier], partialRewardBlockTimes, reward / REWARD_SPLIT_TRANCHES[tier]); _add(tier, stakeInfo); proxy.submit("stakingTransfer", abi.encode(address(0), 0, reward, address(this))); emit Staked(msg.sender, tier, poolPosition, firstAmount, secondAmount, poolAmount, reward, stakeInfo.endBlock, partialRewardBlockTimes, stakeInfo.splittedReward); } function _add(uint256 tier, StakeInfo memory element) private returns(uint256, uint256) { _stakeInfo[tier][_stakeInfoLength[tier]] = element; _stakeInfoLength[tier] = _stakeInfoLength[tier] + 1; return (element.reward, element.endBlock); } function _remove(uint256 tier, uint256 i) private { if(_stakeInfoLength[tier] <= i) { return; } _stakeInfoLength[tier] = _stakeInfoLength[tier] - 1; if(_stakeInfoLength[tier] > i) { _stakeInfo[tier][i] = _stakeInfo[tier][_stakeInfoLength[tier]]; } delete _stakeInfo[tier][_stakeInfoLength[tier]]; } function length(uint256 tier) public view returns(uint256) { return _stakeInfoLength[tier]; } function stakeInfo(uint256 tier, uint256 position) public view returns( address, uint256, uint256, uint256, uint256, uint256, uint256, uint256[] memory, uint256 ) { StakeInfo memory tierStakeInfo = _stakeInfo[tier][position]; return( tierStakeInfo.sender, tierStakeInfo.poolPosition, tierStakeInfo.firstAmount, tierStakeInfo.secondAmount, tierStakeInfo.poolAmount, tierStakeInfo.reward, tierStakeInfo.endBlock, tierStakeInfo.partialRewardBlockTimes, tierStakeInfo.splittedReward ); } function partialReward(uint256 tier, uint256 position) public { StakeInfo memory tierStakeInfo = _stakeInfo[tier][position]; if(block.number >= tierStakeInfo.endBlock) { return withdraw(tier, position); } require(tierStakeInfo.reward > 0, "No more reward for this staking position"); uint256 reward = 0; for(uint256 i = 0; i < tierStakeInfo.partialRewardBlockTimes.length; i++) { if(tierStakeInfo.partialRewardBlockTimes[i] > 0 && block.number >= tierStakeInfo.partialRewardBlockTimes[i]) { reward += tierStakeInfo.splittedReward; tierStakeInfo.partialRewardBlockTimes[i] = 0; } } reward = reward > tierStakeInfo.reward ? tierStakeInfo.reward : reward; require(reward > 0, "No reward to redeem"); IERC20 token = IERC20(IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getToken()); token.transfer(tierStakeInfo.sender, reward); tierStakeInfo.reward = tierStakeInfo.reward - reward; _stakeInfo[tier][position] = tierStakeInfo; emit PartialWithdrawn(msg.sender, tierStakeInfo.sender, tier, reward); } function withdraw(uint256 tier, uint256 position) public { StakeInfo memory tierStakeInfo = _stakeInfo[tier][position]; require(block.number >= tierStakeInfo.endBlock, "Cannot actually withdraw this position"); IERC20 token = IERC20(IMVDProxy(IDoubleProxy(_doubleProxy).proxy()).getToken()); if(tierStakeInfo.reward > 0) { token.transfer(tierStakeInfo.sender, tierStakeInfo.reward); } token = IERC20(IUniswapV2Factory(UNISWAP_V2_FACTORY).getPair(address(token), TOKENS[tierStakeInfo.poolPosition])); token.transfer(tierStakeInfo.sender, tierStakeInfo.poolAmount); _totalPoolAmount[tierStakeInfo.poolPosition] = _totalPoolAmount[tierStakeInfo.poolPosition] - tierStakeInfo.poolAmount; emit Withdrawn(msg.sender, tierStakeInfo.sender, tier, tierStakeInfo.poolPosition, tierStakeInfo.firstAmount, tierStakeInfo.secondAmount, tierStakeInfo.poolAmount, tierStakeInfo.reward); _remove(tier, position); } function _toString(uint _i) private pure returns(string memory) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } function _toString(address _addr) private pure returns(string memory) { bytes32 value = bytes32(uint256(_addr)); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))]; str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))]; } return string(str); } function _toLowerCase(string memory str) private pure returns(string memory) { bytes memory bStr = bytes(str); for (uint i = 0; i < bStr.length; i++) { bStr[i] = bStr[i] >= 0x41 && bStr[i] <= 0x5A ? bytes1(uint8(bStr[i]) + 0x20) : bStr[i]; } return string(bStr); } } interface IMVDProxy { function getToken() external view returns(address); function getStateHolderAddress() external view returns(address); function getMVDWalletAddress() external view returns(address); function getMVDFunctionalitiesManagerAddress() external view returns(address); function submit(string calldata codeName, bytes calldata data) external payable returns(bytes memory returnData); } interface IStateHolder { function setUint256(string calldata name, uint256 value) external returns(uint256); function getUint256(string calldata name) external view returns(uint256); function getBool(string calldata varName) external view returns (bool); function clear(string calldata varName) external returns(string memory oldDataType, bytes memory oldVal); } interface IMVDFunctionalitiesManager { function isAuthorizedFunctionality(address functionality) external view returns(bool); } interface IERC20 { function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); } interface IUniswapV2Router { function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IDoubleProxy { function proxy() external view returns(address); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"address","name":"doubleProxy","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"timeWindows","type":"uint256[]"},{"internalType":"uint256[]","name":"rewardMultipliers","type":"uint256[]"},{"internalType":"uint256[]","name":"rewardDividers","type":"uint256[]"},{"internalType":"uint256[]","name":"rewardSplitTranches","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"tier","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"PartialWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"tier","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"poolPosition","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"firstAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"secondAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endBlock","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"partialRewardBlockTimes","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"splittedReward","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"uint256","name":"tier","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"poolPosition","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"firstAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"secondAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"poolAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"doubleProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyFlush","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"}],"name":"getStakingCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"}],"name":"getStakingInfo","outputs":[{"internalType":"uint256","name":"minCap","type":"uint256"},{"internalType":"uint256","name":"hardCap","type":"uint256"},{"internalType":"uint256","name":"remainingToStake","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"}],"name":"length","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"position","type":"uint256"}],"name":"partialReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDoubleProxy","type":"address"}],"name":"setDoubleProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"poolPosition","type":"uint256"},{"internalType":"uint256","name":"originalFirstAmount","type":"uint256"},{"internalType":"uint256","name":"firstAmountMin","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"secondAmountMin","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"position","type":"uint256"}],"name":"stakeInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tierData","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolPosition","type":"uint256"}],"name":"totalPoolAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tier","type":"uint256"},{"internalType":"uint256","name":"position","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c8063a06dd6dc1161007f578063dd58d9d511610059578063dd58d9d51461046a578063e9c4aa6a146104ad578063f39d3c49146104f5578063fdd5660514610525576100dd565b8063a06dd6dc146103f8578063aa8b99d21461040d578063cbd99d0314610437576100dd565b80634eb9b592116100bb5780634eb9b59214610165578063590c2a8b146101965780635de3326c1461025b5780639d63848a14610393576100dd565b8063167e4781146100e2578063441a3e701461011e57806348cd4cb114610150575b600080fd5b3480156100ee57600080fd5b5061010c6004803603602081101561010557600080fd5b5035610560565b60408051918252519081900360200190f35b34801561012a57600080fd5b5061014e6004803603604081101561014157600080fd5b5080359060200135610575565b005b34801561015c57600080fd5b5061010c6109f1565b34801561017157600080fd5b5061017a6109f7565b604080516001600160a01b039092168252519081900360200190f35b3480156101a257600080fd5b506101c6600480360360408110156101b957600080fd5b5080359060200135610a06565b604051808a6001600160a01b0316815260200189815260200188815260200187815260200186815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561023f578181015183820152602001610227565b505050509050019a505050505050505050505060405180910390f35b34801561026757600080fd5b50610270610b39565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b838110156102bc5781810151838201526020016102a4565b50505050905001858103845288818151815260200191508051906020019060200280838360005b838110156102fb5781810151838201526020016102e3565b50505050905001858103835287818151815260200191508051906020019060200280838360005b8381101561033a578181015183820152602001610322565b50505050905001858103825286818151815260200191508051906020019060200280838360005b83811015610379578181015183820152602001610361565b505050509050019850505050505050505060405180910390f35b34801561039f57600080fd5b506103a8610c9d565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103e45781810151838201526020016103cc565b505050509050019250505060405180910390f35b34801561040457600080fd5b5061014e610cff565b34801561041957600080fd5b5061010c6004803603602081101561043057600080fd5b5035611263565b34801561044357600080fd5b5061014e6004803603602081101561045a57600080fd5b50356001600160a01b0316611275565b34801561047657600080fd5b506104946004803603602081101561048d57600080fd5b503561143b565b6040805192835260208301919091528051918290030190f35b3480156104b957600080fd5b506104d7600480360360208110156104d057600080fd5b50356118d5565b60408051938452602084019290925282820152519081900360600190f35b34801561050157600080fd5b5061014e6004803603604081101561051857600080fd5b508035906020013561195b565b61014e600480360360c081101561053b57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135611dcb565b6000818152600260205260409020545b919050565b61057d613022565b600083815260096020908152604080832085845282529182902082516101208101845281546001600160a01b031681526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007820180548551818602810186019096528086529194929360e0860193929083018282801561063657602002820191906000526020600020905b815481526020019060010190808311610622575b5050505050815260200160088201548152505090508060c0015143101561068e5760405162461bcd60e51b815260040180806020018281038252602681526020018061319c6026913960400191505060405180910390fd5b6007546040805163ec55688960e01b815290516000926001600160a01b03169163ec556889916004808301926020929190829003018186803b1580156106d357600080fd5b505afa1580156106e7573d6000803e3d6000fd5b505050506040513d60208110156106fd57600080fd5b5051604080516321df0da760e01b815290516001600160a01b03909216916321df0da791600480820192602092909190829003018186803b15801561074157600080fd5b505afa158015610755573d6000803e3d6000fd5b505050506040513d602081101561076b57600080fd5b505160a08301519091501561080657806001600160a01b031663a9059cbb83600001518460a001516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b50505b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663e6a4390582600185602001518154811061083b57fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d60208110156108bb57600080fd5b5051825160808401516040805163a9059cbb60e01b81526001600160a01b0393841660048201526024810192909252519293509083169163a9059cbb916044808201926020929091908290030181600087803b15801561091a57600080fd5b505af115801561092e573d6000803e3d6000fd5b505050506040513d602081101561094457600080fd5b50506080808301805160208581018051600090815260028352604080822054835183529181902094909103909355518651838801516060808a0151965160a0808c01518851338152978801949094528688019890985290850152958301959095529151919388936001600160a01b03909116927fec4d7fc8319e44dfa849ab87f565622b9cf848ce9959568c3066615ce9e2ef149281900390910190a46109eb8484612183565b50505050565b60085490565b6007546001600160a01b031690565b600080600080600080600060606000610a1d613022565b60008c81526009602090815260408083208e845282529182902082516101208101845281546001600160a01b031681526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007820180548551818602810186019096528086529194929360e08601939290830182828015610ad657602002820191906000526020600020905b815481526020019060010190808311610ac2575b505050505081526020016008820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e00151886101000151995099509950995099509950995099509950509295985092959850929598565b606080606080600360046005600683805480602002602001604051908101604052809291908181526020018280548015610b9257602002820191906000526020600020905b815481526020019060010190808311610b7e575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610be457602002820191906000526020600020905b815481526020019060010190808311610bd0575b5050505050925081805480602002602001604051908101604052809291908181526020018280548015610c3657602002820191906000526020600020905b815481526020019060010190808311610c22575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610c8857602002820191906000526020600020905b815481526020019060010190808311610c74575b50505050509050935093509350935090919293565b60606001805480602002602001604051908101604052809291908181526020018280548015610cf557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610cd7575b5050505050905090565b6007546040805163ec55688960e01b815290516000926001600160a01b03169163ec556889916004808301926020929190829003018186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d6020811015610d6e57600080fd5b505160408051633380ac3560e11b815290519192506001600160a01b03831691636701586a91600480820192602092909190829003018186803b158015610db457600080fd5b505afa158015610dc8573d6000803e3d6000fd5b505050506040513d6020811015610dde57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b158015610e2857600080fd5b505afa158015610e3c573d6000803e3d6000fd5b505050506040513d6020811015610e5257600080fd5b5051610e9c576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a656420416374696f6e2160601b604482015290519081900360640190fd5b6000816001600160a01b03166331c6903d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed757600080fd5b505afa158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b5051604080516321df0da760e01b815290519192506000916001600160a01b038516916321df0da7916004808301926020929190829003018186803b158015610f4957600080fd5b505afa158015610f5d573d6000803e3d6000fd5b505050506040513d6020811015610f7357600080fd5b5051604080516370a0823160e01b8152306004820152905191925082916000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610fc457600080fd5b505afa158015610fd8573d6000803e3d6000fd5b505050506040513d6020811015610fee57600080fd5b50519050801561107c57816001600160a01b031663a9059cbb85836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561104f57600080fd5b505af1158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b50505b506000805b60015481101561125b57735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663e6a4390585600184815481106110bc57fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d602081101561113c57600080fd5b5051604080516370a0823160e01b815230600482015290519194506001600160a01b038516916370a0823191602480820192602092909190829003018186803b15801561118857600080fd5b505afa15801561119c573d6000803e3d6000fd5b505050506040513d60208110156111b257600080fd5b50519150811561124f57826001600160a01b031663a9059cbb86846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561121357600080fd5b505af1158015611227573d6000803e3d6000fd5b505050506040513d602081101561123d57600080fd5b50506000818152600260205260408120555b60009150600101611081565b505050505050565b6000908152600a602052604090205490565b600760009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156112c357600080fd5b505afa1580156112d7573d6000803e3d6000fd5b505050506040513d60208110156112ed57600080fd5b505160408051633380ac3560e11b815290516001600160a01b0390921691636701586a91600480820192602092909190829003018186803b15801561133157600080fd5b505afa158015611345573d6000803e3d6000fd5b505050506040513d602081101561135b57600080fd5b5051604080516318c8e99960e11b815233600482015290516001600160a01b0390921691633191d33291602480820192602092909190829003018186803b1580156113a557600080fd5b505afa1580156113b9573d6000803e3d6000fd5b505050506040513d60208110156113cf57600080fd5b5051611419576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a656420416374696f6e2160601b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000600760009054906101000a90046001600160a01b03166001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b15801561148e57600080fd5b505afa1580156114a2573d6000803e3d6000fd5b505050506040513d60208110156114b857600080fd5b50516040805163ba83c16f60e01b815290516001600160a01b039092169163ba83c16f91600480820192602092909190829003018186803b1580156114fc57600080fd5b505afa158015611510573d6000803e3d6000fd5b505050506040513d602081101561152657600080fd5b505190506060611535856122cd565b9050606061154a611545306123a5565b612518565b9050826001600160a01b0316630bb687e3828460405160200180806739ba30b5b4b7339760c11b81525060080183805190602001908083835b602083106115a25780518252601f199092019160209182019101611583565b51815160209384036101000a6000190180199092169116179052662e74696572735b60c81b919093019081528451600790910192850191508083835b602083106115fd5780518252601f1990920191602091820191016115de565b6001836020036101000a038019825116818451168082178552505050505050905001806705d2e6d696e4361760c41b815250600801925050506040516020818303038152906040526040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611691578181015183820152602001611679565b50505050905090810190601f1680156116be5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156116db57600080fd5b505afa1580156116ef573d6000803e3d6000fd5b505050506040513d602081101561170557600080fd5b50516040516739ba30b5b4b7339760c11b602082810191825284516001600160a01b03881693630bb687e39387938993919260280191908501908083835b602083106117625780518252601f199092019160209182019101611743565b51815160209384036101000a6000190180199092169116179052662e74696572735b60c81b919093019081528451600790910192850191508083835b602083106117bd5780518252601f19909201916020918201910161179e565b6001836020036101000a038019825116818451168082178552505050505050905001806805d2e686172644361760bc1b815250600901925050506040516020818303038152906040526040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561185257818101518382015260200161183a565b50505050905090810190601f16801561187f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d60208110156118c657600080fd5b50519095509350505050915091565b60008060006118e38461143b565b6000868152600a60205260408120549295509093508392505b8181101561195257600086815260096020908152604080832084845290915290206006015443101561194a576000868152600960209081526040808320848452909152902060020154909203915b6001016118fc565b50509193909250565b611963613022565b600083815260096020908152604080832085845282529182902082516101208101845281546001600160a01b031681526001820154818401526002820154818501526003820154606082015260048201546080820152600582015460a0820152600682015460c08201526007820180548551818602810186019096528086529194929360e08601939290830182828015611a1c57602002820191906000526020600020905b815481526020019060010190808311611a08575b5050505050815260200160088201548152505090508060c001514310611a4c57611a468383610575565b50611dc7565b60008160a0015111611a8f5760405162461bcd60e51b81526004018080602001828103825260288152602001806131746028913960400191505060405180910390fd5b6000805b8260e0015151811015611b145760008360e001518281518110611ab257fe5b6020026020010151118015611ade57508260e001518181518110611ad257fe5b60200260200101514310155b15611b0c578261010001518201915060008360e001518281518110611aff57fe5b6020026020010181815250505b600101611a93565b508160a001518111611b265780611b2c565b8160a001515b905060008111611b79576040805162461bcd60e51b81526020600482015260136024820152724e6f2072657761726420746f2072656465656d60681b604482015290519081900360640190fd5b6007546040805163ec55688960e01b815290516000926001600160a01b03169163ec556889916004808301926020929190829003018186803b158015611bbe57600080fd5b505afa158015611bd2573d6000803e3d6000fd5b505050506040513d6020811015611be857600080fd5b5051604080516321df0da760e01b815290516001600160a01b03909216916321df0da791600480820192602092909190829003018186803b158015611c2c57600080fd5b505afa158015611c40573d6000803e3d6000fd5b505050506040513d6020811015611c5657600080fd5b505183516040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519293509083169163a9059cbb916044808201926020929091908290030181600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b505050506040513d6020811015611cda57600080fd5b505060a08301805183900381526000868152600960209081526040808320888452825291829020865181546001600160a01b0319166001600160a01b0390911617815581870151600182015591860151600283015560608601516003830155608086015160048301559151600582015560c0850151600682015560e085015180518693611d6e926007850192910190613077565b50610100919091015160089091015582516040805133815260208101859052815188936001600160a01b0316927f5777300364834e2d145b85cee28a0d45c4be04f1c7c24116ec72a6b5c839631b928290030190a35050505b5050565b600854431015611e22576040805162461bcd60e51b815260206004820152601e60248201527f5374616b696e67206973207374696c6c206e6f7420617661696c61626c650000604482015290519081900360640190fd5b6001548510611e67576040805162461bcd60e51b815260206004820152600c60248201526b155b9adb9bdddb88141bdbdb60a21b604482015290519081900360640190fd5b6003548610611eac576040805162461bcd60e51b815260206004820152600c60248201526b2ab735b737bbb7103a34b2b960a11b604482015290519081900360640190fd5b60008411611eeb5760405162461bcd60e51b81526004018080602001828103825260238152602001806131c26023913960400191505060405180910390fd5b60008054600180546001600160a01b039092169188908110611f0957fe5b6000918252602090912001546001600160a01b031614611f295782611f2b565b345b905060008111611f6c5760405162461bcd60e51b81526004018080602001828103825260248152602001806132156024913960400191505060405180910390fd5b6007546040805163ec55688960e01b815290516000926001600160a01b03169163ec556889916004808301926020929190829003018186803b158015611fb157600080fd5b505afa158015611fc5573d6000803e3d6000fd5b505050506040513d6020811015611fdb57600080fd5b5051604080516321df0da760e01b815290519192506000916001600160a01b038416916321df0da7916004808301926020929190829003018186803b15801561202357600080fd5b505afa158015612037573d6000803e3d6000fd5b505050506040513d602081101561204d57600080fd5b5051905061205b81886125ea565b6120866001898154811061206b57fe5b6000918252602090912001546001600160a01b0316846125ea565b60006001898154811061209557fe5b60009182526020822001546001600160a01b0316915080806120bb8b8b898b89896127b3565b60008f81526002602052604081208054830190559295509093509150806120e18f6118d5565b9250509150818510156121255760405162461bcd60e51b81526004018080602001828103825260308152602001806131e56030913960400191505060405180910390fd5b808511156121645760405162461bcd60e51b815260040180806020018281038252603b815260200180613139603b913960400191505060405180910390fd5b6121728f8f8787878d612ac8565b505050505050505050505050505050565b6000828152600a6020526040902054811061219d57611dc7565b6000828152600a6020526040902080546000190190819055811015612259576000828152600960209081526040808320600a83528184205484529091528082208383529120815481546001600160a01b0319166001600160a01b039091161781556001808301549082015560028083015490820155600380830154908201556004808301549082015560058083015490820155600680830154908201556007808301805461224e92840191906130c2565b506008918201549101555b6000828152600960209081526040808320600a8352818420548452909152812080546001600160a01b0319168155600181018290556002810182905560038101829055600481018290556005810182905560068101829055906122bf6007830182613102565b600882016000905550505050565b6060816122f257506040805180820190915260018152600360fc1b6020820152610570565b8160005b811561230a57600101600a820491506122f6565b60608167ffffffffffffffff8111801561232357600080fd5b506040519080825280601f01601f19166020018201604052801561234e576020820181803683370190505b50905060001982015b851561239c57600a860660300160f81b8282806001900393508151811061237a57fe5b60200101906001600160f81b031916908160001a905350600a86049550612357565b50949350505050565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b60208201528151602a80825260608281019094526001600160a01b03851692918491602082018180368337019050509050600360fc1b8160008151811061240957fe5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061243257fe5b60200101906001600160f81b031916908160001a90535060005b601481101561239c578260048583600c016020811061246757fe5b1a60f81b6001600160f81b031916901c60f81c60ff168151811061248757fe5b602001015160f81c60f81b8282600202600201815181106124a457fe5b60200101906001600160f81b031916908160001a905350828482600c01602081106124cb57fe5b825191901a600f169081106124dc57fe5b602001015160f81c60f81b8282600202600301815181106124f957fe5b60200101906001600160f81b031916908160001a90535060010161244c565b60608160005b81518110156125e357604160f81b82828151811061253857fe5b01602001516001600160f81b031916108015906125735750605a60f81b82828151811061256157fe5b01602001516001600160f81b03191611155b6125975781818151811061258357fe5b01602001516001600160f81b0319166125b8565b8181815181106125a357fe5b602001015160f81c60f81b60f81c60200160f81b5b8282815181106125c457fe5b60200101906001600160f81b031916908160001a90535060010161251e565b5092915050565b6000546001600160a01b038381169116141561260557611dc7565b604080516323b872dd60e01b815233600482015230602482015260448101839052905183916001600160a01b038316916323b872dd916064808201926020929091908290030181600087803b15801561265d57600080fd5b505af1158015612671573d6000803e3d6000fd5b505050506040513d602081101561268757600080fd5b505060408051636eb1769f60e11b8152306004820152737a250d5630b4cf539739df2c5dacb4c659f2488d6024820152905183916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b1580156126ec57600080fd5b505afa158015612700573d6000803e3d6000fd5b505050506040513d602081101561271657600080fd5b5051116127ae576040805163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152600019602482015290516001600160a01b0383169163095ea7b39160448083019260209291908290030181600087803b15801561278157600080fd5b505af1158015612795573d6000803e3d6000fd5b505050506040513d60208110156127ab57600080fd5b50505b505050565b60008054819081906001600160a01b0385811691161415612897576040805163f305d71960e01b81526001600160a01b0387166004820152602481018b9052604481018a9052606481018890523060848201526103e8420160a48201529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163f305d719918a9160c48082019260609290919082900301818588803b15801561285157600080fd5b505af1158015612865573d6000803e3d6000fd5b50505050506040513d606081101561287c57600080fd5b50805160208201516040909201519094509092509050612968565b6040805162e8e33760e81b81526001600160a01b03878116600483015286166024820152604481018b905260648101899052608481018a905260a481018890523060c48201526103e8420160e48201529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163e8e33700916101048083019260609291908290030181600087803b15801561292757600080fd5b505af115801561293b573d6000803e3d6000fd5b505050506040513d606081101561295157600080fd5b508051602082015160409092015190945090925090505b888310156129ed576040805163a9059cbb60e01b8152336004820152848b03602482015290516001600160a01b0387169163a9059cbb9160448083019260209291908290030181600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b50505b86821015612abc576000546001600160a01b0385811691161415612a3f57604051339083890380156108fc02916000818181858888f19350505050158015612a39573d6000803e3d6000fd5b50612abc565b6040805163a9059cbb60e01b8152336004820152838903602482015290516001600160a01b0386169163a9059cbb9160448083019260209291908290030181600087803b158015612a8f57600080fd5b505af1158015612aa3573d6000803e3d6000fd5b505050506040513d6020811015612ab957600080fd5b50505b96509650969350505050565b600060068781548110612ad757fe5b906000526020600020015460038881548110612aef57fe5b906000526020600020015481612b0157fe5b049050606060068881548110612b1357fe5b906000526020600020015467ffffffffffffffff81118015612b3457600080fd5b50604051908082528060200260200182016040528015612b5e578160200160208202803683370190505b50805190915015612bca5781430181600081518110612b7957fe5b602090810291909101015260015b8151811015612bc85782826001830381518110612ba057fe5b602002602001015101828281518110612bb557fe5b6020908102919091010152600101612b87565b505b600060058981548110612bd957fe5b906000526020600020015460048a81548110612bf157fe5b9060005260206000200154880281612c0557fe5b049050612c10613022565b604051806101200160405280336001600160a01b031681526020018a815260200189815260200188815260200187815260200183815260200160038c81548110612c5657fe5b90600052602060002001544301815260200184815260200160068c81548110612c7b57fe5b90600052602060002001548481612c8e57fe5b0490529050612c9d8a82612f57565b50506040805160006020808301829052828401829052606083018690523060808085019190915284518085038201815260a08501808752639e813f1f60e01b905260a48501958652600f60e48601526e39ba30b5b4b733aa3930b739b332b960891b61010486015260c48501918252805161012486015280516001600160a01b038c1696639e813f1f96929590948594936101440192908701918190849084905b83811015612d56578181015183820152602001612d3e565b50505050905090810190601f168015612d835780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612da357600080fd5b505af1158015612db7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612de057600080fd5b8101908080516040519392919084640100000000821115612e0057600080fd5b908301906020820185811115612e1557600080fd5b8251640100000000811182820188101715612e2f57600080fd5b82525081516020918201929091019080838360005b83811015612e5c578181015183820152602001612e44565b50505050905090810190601f168015612e895780820380516001836020036101000a031916815260200191505b5060405250505050888a336001600160a01b03167f904bffde498b5f8b9c482208599445964bca8e5fe0837abba34df545d09aed428b8b8b888860c001518b8a61010001516040518088815260200187815260200186815260200185815260200184815260200180602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015612f32578181015183820152602001612f1a565b505050509050019850505050505050505060405180910390a450505050505050505050565b6000828152600960209081526040808320600a83528184205484528252808320845181546001600160a01b0319166001600160a01b03909116178155848301516001820155908401516002820155606084015160038201556080840151600482015560a0840151600582015560c0840151600682015560e084015180518493869392612fec9260078501929190910190613077565b50610100919091015160089091015550506000918252600a60205260409091208054600101905560a081015160c0909101519091565b60405180610120016040528060006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001600081525090565b8280548282559060005260206000209081019282156130b2579160200282015b828111156130b2578251825591602001919060010190613097565b506130be929150613123565b5090565b8280548282559060005260206000209081019282156130b25760005260206000209182015b828111156130b25782548255916001019190600101906130e7565b50805460008255906000526020600020908101906131209190613123565b50565b5b808211156130be576000815560010161312456fe416d6f756e7420746f207374616b65206d757374206265206c657373207468616e207468652063757272656e742072656d61696e696e67206f6e654e6f206d6f72652072657761726420666f722074686973207374616b696e6720706f736974696f6e43616e6e6f742061637475616c6c79207769746864726177207468697320706f736974696f6e466972737420616d6f756e74206d7573742062652067726561746572207468616e2030416d6f756e7420746f207374616b65206973206c657373207468616e207468652063757272656e74206d696e206361705365636f6e6420616d6f756e74206d7573742062652067726561746572207468616e2030a264697066735822122005cb8c16848065602012eb1d67f99bf9b88dff18e2ae0a0a8c951f15ca520ef064736f6c63430007010033
Deployed Bytecode Sourcemap
27:15909:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:132;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3304:132:0;;:::i;:::-;;;;;;;;;;;;;;;;13626:1005;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13626:1005:0;;;;;;;:::i;:::-;;3208:88;;;;;;;;;;;;;:::i;2794:90::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2794:90:0;;;;;;;;;;;;;;11694:718;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11694:718:0;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;11694:718:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2988:212;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2892:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3748:1006;;;;;;;;;;;;;:::i;11579:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11579:107:0;;:::i;3444:296::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:296:0;-1:-1:-1;;;;;3444:296:0;;:::i;6892:616::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6892:616:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6416:468;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6416:468:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;12420:1198;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12420:1198:0;;;;;;;:::i;4762:1646::-;;;;;;;;;;;;;;;;-1:-1:-1;4762:1646:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3304:132::-;3371:7;3398:30;;;:16;:30;;;;;;3304:132;;;;:::o;13626:1005::-;13694:30;;:::i;:::-;13727:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;13694:59;;;;;;;;;-1:-1:-1;;;;;13694:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13727:26;;13694:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13788:13;:22;;;13772:12;:38;;13764:89;;;;-1:-1:-1;;;13764:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13909:12;;13896:34;;;-1:-1:-1;;;13896:34:0;;;;13864:12;;-1:-1:-1;;;;;13909:12:0;;13896:32;;:34;;;;;;;;;;;;;;13909:12;13896:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13896:34:0;13886:56;;;-1:-1:-1;;;13886:56:0;;;;-1:-1:-1;;;;;13886:54:0;;;;;;:56;;;;;13896:34;;13886:56;;;;;;;;:54;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13886:56:0;13957:20;;;;13886:56;;-1:-1:-1;13957:24:0;13954:114;;13998:5;-1:-1:-1;;;;;13998:14:0;;14013:13;:20;;;14035:13;:20;;;13998:58;;;;;;;;;;;;;-1:-1:-1;;;;;13998:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13954:114:0;100:42;-1:-1:-1;;;;;14093:45:0;;14147:5;14155:6;14162:13;:26;;;14155:34;;;;;;;;;;;;;;;;;;;14093:97;;;-1:-1:-1;;;;;;14093:97:0;;;;;;;-1:-1:-1;;;;;14093:97:0;;;;;;;14155:34;;;;14093:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14093:97:0;14217:20;;14239:24;;;;14202:62;;;-1:-1:-1;;;14202:62:0;;-1:-1:-1;;;;;14202:62:0;;;;;;;;;;;;;;;14093:97;;-1:-1:-1;14202:14:0;;;;;;:62;;;;;14093:97;;14202:62;;;;;;;;14217:20;14202:14;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14369:24:0;;;;;;14202:62;14339:26;;;;;14322:44;;;;:16;:44;;;;;;;14292:26;;14275:44;;;;;;14322:71;;;;14275:118;;;14459:26;14431:20;;14487:25;;;;14514:26;;;;;14542:24;;14568:20;;;;;14409:180;;14419:10;14409:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14459:26;;14453:4;;-1:-1:-1;;;;;14409:180:0;;;;;;;;;;;;;;14600:23;14608:4;14614:8;14600:7;:23::i;:::-;13626:1005;;;;:::o;3208:88::-;3277:11;;3208:88;:::o;2794:90::-;2864:12;;-1:-1:-1;;;;;2864:12:0;2794:90;:::o;11694:718::-;11775:7;11793;11811;11829;11847;11865;11883;11901:16;11928:7;11954:30;;:::i;:::-;11987:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;11954:59;;;;;;;;;-1:-1:-1;;;;;11954:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11987:26;;11954:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12045:13;:20;;;12080:13;:26;;;12121:13;:25;;;12161:13;:26;;;12202:13;:24;;;12241:13;:20;;;12276:13;:22;;;12313:13;:37;;;12365:13;:28;;;12024:380;;;;;;;;;;;;;;;;;;;11694:718;;;;;;;;;;;:::o;2988:212::-;3028:16;3046;3064;3082;3119:12;3133:18;3153:15;3170:21;3111:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2988:212;;;;:::o;2892:88::-;2930:16;2966:6;2959:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2959:13:0;;;;;;;;;;;;;;;;;;;;;;;2892:88;:::o;3748:1006::-;3833:12;;3820:34;;;-1:-1:-1;;;3820:34:0;;;;3792:15;;-1:-1:-1;;;;;3833:12:0;;3820:32;;:34;;;;;;;;;;;;;;3833:12;3820:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3820:34:0;3901:43;;;-1:-1:-1;;;3901:43:0;;;;3820:34;;-1:-1:-1;;;;;;3901:41:0;;;;;:43;;;;;3820:34;;3901:43;;;;;;;;:41;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3901:43:0;3874:109;;;-1:-1:-1;;;3874:109:0;;3972:10;3874:109;;;;;;-1:-1:-1;;;;;3874:97:0;;;;;;:109;;;;;3901:43;;3874:109;;;;;;;;:97;:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3874:109:0;3866:142;;;;;-1:-1:-1;;;3866:142:0;;;;;;;;;;;;-1:-1:-1;;;3866:142:0;;;;;;;;;;;;;;;4019:21;4043:5;-1:-1:-1;;;;;4043:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4043:27:0;4104:16;;;-1:-1:-1;;;4104:16:0;;;;4043:27;;-1:-1:-1;4081:20:0;;-1:-1:-1;;;;;4104:14:0;;;;;:16;;;;;4043:27;;4104:16;;;;;;;:14;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4104:16:0;4197:30;;;-1:-1:-1;;;4197:30:0;;4221:4;4197:30;;;;;;4104:16;;-1:-1:-1;4104:16:0;;4131:12;;-1:-1:-1;;;;;4197:15:0;;;;;:30;;;;;4104:16;;4197:30;;;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4197:30:0;;-1:-1:-1;4241:13:0;;4238:85;;4271:5;-1:-1:-1;;;;;4271:14:0;;4286:13;4301:9;4271:40;;;;;;;;;;;;;-1:-1:-1;;;;;4271:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4238:85:0;-1:-1:-1;4345:1:0;;4357:390;4380:6;:13;4376:17;;4357:390;;;100:42;-1:-1:-1;;;;;4430:45:0;;4476:12;4490:6;4497:1;4490:9;;;;;;;;;;;;;;;;;;;4430:70;;;-1:-1:-1;;;;;;4430:70:0;;;;;;;-1:-1:-1;;;;;4430:70:0;;;;;;;4490:9;;;;4430:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4430:70:0;4528:30;;;-1:-1:-1;;;4528:30:0;;4552:4;4528:30;;;;;;4430:70;;-1:-1:-1;;;;;;4528:15:0;;;;;:30;;;;;4430:70;;4528:30;;;;;;;;:15;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4528:30:0;;-1:-1:-1;4576:13:0;;4573:135;;4610:5;-1:-1:-1;;;;;4610:14:0;;4625:13;4640:9;4610:40;;;;;;;;;;;;;-1:-1:-1;;;;;4610:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4691:1:0;4669:19;;;:16;4610:40;4669:19;;;;:23;4573:135;4734:1;;-1:-1:-1;4395:3:0;;4357:390;;;;3748:1006;;;;;:::o;11579:107::-;11629:7;11656:22;;;:16;:22;;;;;;;11579:107::o;3444:296::-;3568:12;;;;;;;;;-1:-1:-1;;;;;3568:12:0;-1:-1:-1;;;;;3555:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3555:34:0;3545:83;;;-1:-1:-1;;;3545:83:0;;;;-1:-1:-1;;;;;3545:81:0;;;;;;:83;;;;;3555:34;;3545:83;;;;;;;;:81;:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3545:83:0;3518:149;;;-1:-1:-1;;;3518:149:0;;3656:10;3518:149;;;;;;-1:-1:-1;;;;;3518:137:0;;;;;;:149;;;;;3545:83;;3518:149;;;;;;;;:137;:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3518:149:0;3510:182;;;;;-1:-1:-1;;;3510:182:0;;;;;;;;;;;;-1:-1:-1;;;3510:182:0;;;;;;;;;;;;;;;3703:12;:29;;-1:-1:-1;;;;;;3703:29:0;-1:-1:-1;;;;;3703:29:0;;;;;;;;;;3444:296::o;6892:616::-;6949:7;6958;6978:24;7041:12;;;;;;;;;-1:-1:-1;;;;;7041:12:0;-1:-1:-1;;;;;7028:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7028:34:0;7018:69;;;-1:-1:-1;;;7018:69:0;;;;-1:-1:-1;;;;;7018:67:0;;;;;;:69;;;;;7028:34;;7018:69;;;;;;;;:67;:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7018:69:0;;-1:-1:-1;7099:24:0;7126:15;7136:4;7126:9;:15::i;:::-;7099:42;;7152:27;7182:38;7195:24;7213:4;7195:9;:24::i;:::-;7182:12;:38::i;:::-;7152:68;;7253:11;-1:-1:-1;;;;;7253:22:0;;7312:13;7338:10;7283:78;;;;;;-1:-1:-1;;;7283:78:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7283:78:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7283:78:0;;;;;;;;;;;-1:-1:-1;;;7283:78:0;;;;;;;;;;;;;;;;;-1:-1:-1;7283:78:0;;;;;;;;;;;;;-1:-1:-1;;7283:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7283:78:0;;;;;;;;;;;;;;;;;;;;;7253:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7253:110:0;7408:79;;-1:-1:-1;;;7253:110:0;7408:79;;;;;;;;-1:-1:-1;;;;;7378:22:0;;;;;7437:13;;7463:10;;7408:79;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7408:79:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7408:79:0;;;;;;;;;;;-1:-1:-1;;;7408:79:0;;;;;;;;;;;;;;;;;-1:-1:-1;7408:79:0;;;;;;;;;;;;;-1:-1:-1;;7408:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7408:79:0;;;;;;;;;;;;;;;;;;;;;7378:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7378:111:0;7231:269;;-1:-1:-1;7378:111:0;-1:-1:-1;;;;6892:616:0;;;:::o;6416:468::-;6474:14;6490:15;6507:24;6564:19;6578:4;6564:13;:19::i;:::-;6631:14;6648:22;;;:16;:22;;;;;;6544:39;;-1:-1:-1;6544:39:0;;-1:-1:-1;6544:39:0;;-1:-1:-1;6681:196:0;6704:6;6700:1;:10;6681:196;;;6735:16;;;;:10;:16;;;;;;;;:19;;;;;;;;:28;;;6766:12;-1:-1:-1;6732:134:0;;;6819:16;;;;:10;:16;;;;;;;;:19;;;;;;;;:31;;;6799:51;;;;6732:134;6712:3;;6681:196;;;;6416:468;;;;;;:::o;12420:1198::-;12493:30;;:::i;:::-;12526:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;12493:59;;;;;;;;;-1:-1:-1;;;;;12493:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12526:26;;12493:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:13;:22;;;12566:12;:38;12563:101;;12628:24;12637:4;12643:8;12628;:24::i;:::-;12621:31;;;12563:101;12705:1;12682:13;:20;;;:24;12674:77;;;;-1:-1:-1;;;12674:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12762:14;12795:9;12791:345;12814:13;:37;;;:44;12810:1;:48;12791:345;;;12926:1;12883:13;:37;;;12921:1;12883:40;;;;;;;;;;;;;;:44;:104;;;;;12947:13;:37;;;12985:1;12947:40;;;;;;;;;;;;;;12931:12;:56;;12883:104;12880:245;;;13018:13;:28;;;13008:38;;;;13108:1;13065:13;:37;;;13103:1;13065:40;;;;;;;;;;;;;:44;;;;;12880:245;12860:3;;12791:345;;;;13164:13;:20;;;13155:6;:29;:61;;13210:6;13155:61;;;13187:13;:20;;;13155:61;13146:70;;13244:1;13235:6;:10;13227:42;;;;;-1:-1:-1;;;13227:42:0;;;;;;;;;;;;-1:-1:-1;;;13227:42:0;;;;;;;;;;;;;;;13325:12;;13312:34;;;-1:-1:-1;;;13312:34:0;;;;13280:12;;-1:-1:-1;;;;;13325:12:0;;13312:32;;:34;;;;;;;;;;;;;;13325:12;13312:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13312:34:0;13302:56;;;-1:-1:-1;;;13302:56:0;;;;-1:-1:-1;;;;;13302:54:0;;;;;;:56;;;;;13312:34;;13302:56;;;;;;;;:54;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13302:56:0;13385:20;;13370:44;;;-1:-1:-1;;;13370:44:0;;-1:-1:-1;;;;;13370:44:0;;;;;;;;;;;;;;;13302:56;;-1:-1:-1;13370:14:0;;;;;;:44;;;;;13302:56;;13370:44;;;;;;;;13385:20;13370:14;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13448:20:0;;;;;:29;;;13425:52;;-1:-1:-1;13488:16:0;;;:10;13370:44;13488:16;;;;;;;:26;;;;;;;;;:42;;;;-1:-1:-1;;;;;;13488:42:0;-1:-1:-1;;;;;13488:42:0;;;;;;;;;;-1:-1:-1;13488:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13448:20;;13488:42;;;;;;;;;;:::i;:::-;-1:-1:-1;13488:42:0;;;;;;;;;;;13575:20;;13546:64;;;13563:10;13546:64;;;;;;;;;;13597:4;;-1:-1:-1;;;;;13546:64:0;;;;;;;;;;12420:1198;;;;;;:::o;4762:1646::-;4956:11;;4940:12;:27;;4932:70;;;;;-1:-1:-1;;;4932:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5036:6;:13;5021:28;;5013:53;;;;;-1:-1:-1;;;5013:53:0;;;;;;;;;;;;-1:-1:-1;;;5013:53:0;;;;;;;;;;;;;;;5092:12;:19;5085:26;;5077:51;;;;;-1:-1:-1;;;5077:51:0;;;;;;;;;;;;-1:-1:-1;;;5077:51:0;;;;;;;;;;;;;;;5171:1;5149:19;:23;5141:71;;;;-1:-1:-1;;;5141:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5225:28;5280:12;;;5256:20;;-1:-1:-1;;;;;5280:12:0;;;;5263;;5256:20;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5256:20:0;:36;:56;;5307:5;5256:56;;;5295:9;5256:56;5225:87;;5354:1;5331:20;:24;5323:73;;;;-1:-1:-1;;;5323:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5450:12;;5437:34;;;-1:-1:-1;;;5437:34:0;;;;5409:15;;-1:-1:-1;;;;;5450:12:0;;5437:32;;:34;;;;;;;;;;;;;;5450:12;5437:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5437:34:0;5506:16;;;-1:-1:-1;;;5506:16:0;;;;5437:34;;-1:-1:-1;5483:20:0;;-1:-1:-1;;;;;5506:14:0;;;;;:16;;;;;5437:34;;5506:16;;;;;;;:14;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5506:16:0;;-1:-1:-1;5535:67:0;5506:16;5582:19;5535:32;:67::i;:::-;5613:76;5646:6;5653:12;5646:20;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5646:20:0;5668;5613:32;:76::i;:::-;5702:19;5724:6;5731:12;5724:20;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5724:20:0;;-1:-1:-1;5724:20:0;;5823:119;5840:19;5861:14;5877:20;5899:15;5916:12;5724:20;5823:16;:119::i;:::-;5955:30;;;;:16;:30;;;;;:44;;;;;;5757:185;;-1:-1:-1;5757:185:0;;-1:-1:-1;5757:185:0;-1:-1:-1;5955:30:0;6058:20;6073:4;6058:14;:20::i;:::-;6012:66;;;;;6112:6;6097:11;:21;;6089:82;;;;-1:-1:-1;;;6089:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6205:16;6190:11;:31;;6182:103;;;;-1:-1:-1;;;6182:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6298:102;6335:4;6341:12;6355:11;6368:12;6382:10;6394:5;6298:36;:102::i;:::-;4762:1646;;;;;;;;;;;;;;;:::o;11188:383::-;11252:22;;;;:16;:22;;;;;;:27;-1:-1:-1;11249:65:0;;11296:7;;11249:65;11349:22;;;;:16;:22;;;;;;;-1:-1:-1;;11349:26:0;11324:51;;;;11389:26;-1:-1:-1;11386:120:0;;;11454:16;;;;:10;:16;;;;;;;;11471;:22;;;;;;11454:40;;;;;;;;11432:19;;;;;:62;;;;-1:-1:-1;;;;;;11432:62:0;-1:-1:-1;;;;;11432:62:0;;;;;;-1:-1:-1;11432:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11432:62:0;;;;;;;;11386:120;11523:16;;;;:10;:16;;;;;;;;11540;:22;;;;;;11523:40;;;;;;;11516:47;;-1:-1:-1;;;;;;11516:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11523:40;11516:47;;;;11523:16;11516:47;:::i;:::-;;;;;;;;;11188:383;;:::o;14639:467::-;14688:13;14718:7;14714:50;;-1:-1:-1;14742:10:0;;;;;;;;;;;;-1:-1:-1;;;14742:10:0;;;;;;14714:50;14783:2;14774:6;14815:69;14822:6;;14815:69;;14845:5;;14870:2;14865:7;;;;14815:69;;;14894:17;14924:3;14914:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14914:14:0;-1:-1:-1;14894:34:0;-1:-1:-1;;;14948:7:0;;14966:103;14973:7;;14966:103;;15030:2;15025;:7;15020:2;:12;15009:25;;14997:4;15002:3;;;;;;;14997:9;;;;;;;;;;;:37;-1:-1:-1;;;;;14997:37:0;;;;;;;;-1:-1:-1;15055:2:0;15049:8;;;;14966:103;;;-1:-1:-1;15093:4:0;14639:467;-1:-1:-1;;;;14639:467:0:o;15114:493::-;15245:42;;;;;;;;;;;-1:-1:-1;;;15245:42:0;;;;15319:13;;15329:2;15319:13;;;15169;15319;;;;;;-1:-1:-1;;;;;15219:14:0;;;15245:42;15169:13;;15319;;;;;;;;;;-1:-1:-1;15319:13:0;15300:32;;-1:-1:-1;;;15343:3:0;15347:1;15343:6;;;;;;;;;;;:12;-1:-1:-1;;;;;15343:12:0;;;;;;;;;-1:-1:-1;;;15366:3:0;15370:1;15366:6;;;;;;;;;;;:12;-1:-1:-1;;;;;15366:12:0;;;;;;;;;15394:6;15389:182;15410:2;15406:1;:6;15389:182;;;15447:8;15484:1;15467:5;15473:1;15477:2;15473:6;15467:13;;;;;;;;;;-1:-1:-1;;;;;15467:18:0;;;;15461:25;;15456:31;;15447:41;;;;;;;;;;;;;;;;15434:3;15440:1;15442;15440:3;15438:1;:5;15434:10;;;;;;;;;;;:54;-1:-1:-1;;;;;15434:54:0;;;;;;;;;15516:8;15536:5;15542:1;15546:2;15542:6;15536:13;;;;;;;15516:43;;15536:13;;;15552:4;15530:27;;15516:43;;;;;;;;;;;;;;15503:3;15509:1;15511;15509:3;15507:1;:5;15503:10;;;;;;;;;;;:56;-1:-1:-1;;;;;15503:56:0;;;;;;;;-1:-1:-1;15414:3:0;;15389:182;;15615:318;15677:13;15729:3;15749:6;15744:152;15765:4;:11;15761:1;:15;15744:152;;;15819:4;15808:15;;:4;15813:1;15808:7;;;;;;;;;;;;-1:-1:-1;;;;;;15808:7:0;:15;;;;:34;;;15838:4;15827:15;;:4;15832:1;15827:7;;;;;;;;;;;;-1:-1:-1;;;;;;15827:7:0;:15;;15808:34;:76;;15877:4;15882:1;15877:7;;;;;;;;;;;;-1:-1:-1;;;;;;15877:7:0;15808:76;;;15858:4;15863:1;15858:7;;;;;;;;;;;;;;;;15852:14;;15869:4;15852:21;15845:29;;15808:76;15798:4;15803:1;15798:7;;;;;;;;;;;:86;-1:-1:-1;;;;;15798:86:0;;;;;;;;-1:-1:-1;15778:3:0;;15744:152;;;-1:-1:-1;15920:4:0;15615:318;-1:-1:-1;;15615:318:0:o;7516:480::-;7633:12;;-1:-1:-1;;;;;7617:28:0;;;7633:12;;7617:28;7614:66;;;7662:7;;7614:66;7736:52;;;-1:-1:-1;;;7736:52:0;;7755:10;7736:52;;;;7775:4;7736:52;;;;;;;;;;;;7712:12;;-1:-1:-1;;;;;7736:18:0;;;;;:52;;;;;;;;;;;;;;;7690:12;7736:18;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7802:49:0;;;-1:-1:-1;;;7802:49:0;;7826:4;7802:49;;;;196:42;7802:49;;;;;;7855:5;;-1:-1:-1;;;;;7802:15:0;;;;;:49;;;;;7736:52;;7802:49;;;;;;;;:15;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7802:49:0;:58;7799:190;;7877:100;;;-1:-1:-1;;;7877:100:0;;196:42;7877:100;;;;-1:-1:-1;;7877:100:0;;;;;;-1:-1:-1;;;;;7877:13:0;;;;;:100;;;;;;;;;;;;;;-1:-1:-1;7877:13:0;:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7799:190:0;7516:480;;;:::o;8004:1564::-;8195:19;8287:12;;8195:19;;;;-1:-1:-1;;;;;8272:27:0;;;8287:12;;8272:27;8269:817;;;8358:302;;;-1:-1:-1;;;8358:302:0;;-1:-1:-1;;;;;8358:302:0;;;;;;;;;;;;;;;;;;;;;;;;8599:4;8358:302;;;;8641:4;8623:15;:22;8358:302;;;;;;196:42;;8358:51;;8417:20;;8358:302;;;;;;;;;;;;;;;8417:20;196:42;8358:302;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8358:302:0;;;;;;;;;;;;;-1:-1:-1;8358:302:0;;-1:-1:-1;8358:302:0;-1:-1:-1;8269:817:0;;;8735:339;;;-1:-1:-1;;;8735:339:0;;-1:-1:-1;;;;;8735:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9013:4;8735:339;;;;9055:4;9037:15;:22;8735:339;;;;;;196:42;;8735:48;;:339;;;;;;;;;;;;;;-1:-1:-1;196:42:0;8735:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8735:339:0;;;;;;;;;;;;;-1:-1:-1;8735:339:0;;-1:-1:-1;8735:339:0;-1:-1:-1;8269:817:0;9113:19;9099:11;:33;9096:139;;;9149:74;;;-1:-1:-1;;;9149:74:0;;9177:10;9149:74;;;;9189:33;;;9149:74;;;;;;-1:-1:-1;;;;;9149:27:0;;;;;:74;;;;;;;;;;;;;;-1:-1:-1;9149:27:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9096:139:0;9263:20;9248:12;:35;9245:316;;;9318:12;;-1:-1:-1;;;;;9303:27:0;;;9318:12;;9303:27;9300:250;;;9351:65;;9359:10;;9380:35;;;9351:65;;;;;;;;;9380:35;9359:10;9351:65;;;;;;;;;;;;;;;;;;;;;9300:250;;;9457:77;;;-1:-1:-1;;;9457:77:0;;9486:10;9457:77;;;;9498:35;;;9457:77;;;;;;-1:-1:-1;;;;;9457:28:0;;;;;:77;;;;;;;;;;;;;;-1:-1:-1;9457:28:0;:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9300:250:0;8004:1564;;;;;;;;;;:::o;9576:1325::-;9757:36;9817:21;9839:4;9817:27;;;;;;;;;;;;;;;;9796:12;9809:4;9796:18;;;;;;;;;;;;;;;;:48;;;;;;9757:87;;9855:40;9912:21;9934:4;9912:27;;;;;;;;;;;;;;;;9898:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9898:42:0;-1:-1:-1;9954:30:0;;9855:85;;-1:-1:-1;9954:34:0;9951:337;;10049:28;10034:12;:43;10005:23;10029:1;10005:26;;;;;;;;;;;;;;;;;:72;10108:1;10092:185;10115:23;:30;10111:1;:34;10092:185;;;10233:28;10200:23;10228:1;10224;:5;10200:30;;;;;;;;;;;;;;:61;10171:23;10195:1;10171:26;;;;;;;;;;;;;;;;;:90;10147:3;;10092:185;;;;9951:337;10298:14;10356:15;10372:4;10356:21;;;;;;;;;;;;;;;;10329:18;10348:4;10329:24;;;;;;;;;;;;;;;;10315:11;:38;:62;;;;;;10298:79;;10388:26;;:::i;:::-;10417:180;;;;;;;;10427:10;-1:-1:-1;;;;;10417:180:0;;;;;10439:12;10417:180;;;;10453:11;10417:180;;;;10466:12;10417:180;;;;10480:10;10417:180;;;;10492:6;10417:180;;;;10515:12;10528:4;10515:18;;;;;;;;;;;;;;;;10500:12;:33;10417:180;;;;10535:23;10417:180;;;;10569:21;10591:4;10569:27;;;;;;;;;;;;;;;;10560:6;:36;;;;;;10417:180;;10388:209;-1:-1:-1;10608:21:0;10613:4;10388:209;10608:4;:21::i;:::-;-1:-1:-1;;10672:48:0;;;10691:1;10672:48;;;;;;;;;;;;;;;;;;;10714:4;10672:48;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:81:0;;;;;;;;;;;;;-1:-1:-1;;;10640:81:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10640:12:0;;;;;10672:48;;10640:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10640:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10640:81:0;;;;;;;;;;-1:-1:-1;10640:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10762:12;10756:4;10744:10;-1:-1:-1;;;;;10737:156:0;;10776:11;10789:12;10803:10;10815:6;10823:9;:18;;;10843:23;10868:9;:24;;;10737:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9576:1325;;;;;;;;;;:::o;10909:271::-;10979:7;11008:16;;;:10;:16;;;;;;;;11025;:22;;;;;;11008:40;;;;;;;:50;;;;-1:-1:-1;;;;;;11008:50:0;-1:-1:-1;;;;;11008:50:0;;;;;;;;;;-1:-1:-1;11008:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10979:7;;11008:50;;:40;:50;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11008:50:0;;;;;;;;;;;-1:-1:-1;;11094:22:0;;;;:16;:22;;;;;;;;11119:1;11094:26;11069:51;;11139:14;;;;11155:16;;;;;11139:14;;10909:271::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;
Swarm Source
ipfs://05cb8c16848065602012eb1d67f99bf9b88dff18e2ae0a0a8c951f15ca520ef0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.