Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 508 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Refill Many | 20477070 | 149 days ago | IN | 0 ETH | 0.00030969 | ||||
Refill Many | 20477060 | 149 days ago | IN | 0 ETH | 0.00032341 | ||||
Refill Many | 20477050 | 149 days ago | IN | 0 ETH | 0.00057406 | ||||
Refill Many | 20460718 | 151 days ago | IN | 0 ETH | 0.02456665 | ||||
Refill Many | 20459808 | 151 days ago | IN | 0 ETH | 0.00189007 | ||||
Refill Many | 20459798 | 151 days ago | IN | 0 ETH | 0.00186102 | ||||
Refill Many | 20459788 | 151 days ago | IN | 0 ETH | 0.00174399 | ||||
Refill Many | 20459778 | 151 days ago | IN | 0 ETH | 0.00194847 | ||||
Refill Many | 20459767 | 151 days ago | IN | 0 ETH | 0.00191765 | ||||
Refill Many | 20459757 | 151 days ago | IN | 0 ETH | 0.0018959 | ||||
Refill Many | 20459747 | 151 days ago | IN | 0 ETH | 0.00205191 | ||||
Refill Many | 20459737 | 151 days ago | IN | 0 ETH | 0.00208496 | ||||
Refill Many | 20459726 | 151 days ago | IN | 0 ETH | 0.00237538 | ||||
Refill Many | 20459717 | 151 days ago | IN | 0 ETH | 0.00261087 | ||||
Refill Many | 20459707 | 151 days ago | IN | 0 ETH | 0.00213663 | ||||
Refill Many | 20459698 | 151 days ago | IN | 0 ETH | 0.00217689 | ||||
Refill Many | 20459687 | 151 days ago | IN | 0 ETH | 0.0024008 | ||||
Refill Many | 20459676 | 151 days ago | IN | 0 ETH | 0.00263694 | ||||
Refill Many | 20459666 | 151 days ago | IN | 0 ETH | 0.00265082 | ||||
Refill Many | 20459656 | 151 days ago | IN | 0 ETH | 0.00300866 | ||||
Refill Many | 20459646 | 151 days ago | IN | 0 ETH | 0.00292529 | ||||
Refill Many | 20459636 | 151 days ago | IN | 0 ETH | 0.00320169 | ||||
Refill Many | 20459625 | 151 days ago | IN | 0 ETH | 0.00300012 | ||||
Refill Many | 20459615 | 151 days ago | IN | 0 ETH | 0.00352711 | ||||
Refill Many | 20459605 | 151 days ago | IN | 0 ETH | 0.00394004 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20477050 | 149 days ago | 1 ETH | ||||
20477050 | 149 days ago | 1 ETH | ||||
20460718 | 151 days ago | 6.03729275 ETH | ||||
20460718 | 151 days ago | 6.03729275 ETH | ||||
20460718 | 151 days ago | 11.07254951 ETH | ||||
20460718 | 151 days ago | 11.07254951 ETH | ||||
20460718 | 151 days ago | 11.64172832 ETH | ||||
20460718 | 151 days ago | 11.64172832 ETH | ||||
20460718 | 151 days ago | 12.73032874 ETH | ||||
20460718 | 151 days ago | 12.73032874 ETH | ||||
20460718 | 151 days ago | 7.83829489 ETH | ||||
20460718 | 151 days ago | 7.83829489 ETH | ||||
20459350 | 151 days ago | 6.64376609 ETH | ||||
20459350 | 151 days ago | 6.64376609 ETH | ||||
20459259 | 151 days ago | 10.25550579 ETH | ||||
20459259 | 151 days ago | 10.25550579 ETH | ||||
20459259 | 151 days ago | 5.46157348 ETH | ||||
20459259 | 151 days ago | 5.46157348 ETH | ||||
20459259 | 151 days ago | 10.48812184 ETH | ||||
20459259 | 151 days ago | 10.48812184 ETH | ||||
20459259 | 151 days ago | 9.66124594 ETH | ||||
20459259 | 151 days ago | 9.66124594 ETH | ||||
20459178 | 151 days ago | 6.13668923 ETH | ||||
20459178 | 151 days ago | 6.13668923 ETH | ||||
20459168 | 151 days ago | 5.06443594 ETH |
Loading...
Loading
Contract Name:
BotRefills
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-05-25 */ // SPDX-License-Identifier: MIT pragma solidity =0.7.6; abstract contract IDFSRegistry { function getAddr(bytes32 _id) public view virtual returns (address); function addNewContract( bytes32 _id, address _contractAddr, uint256 _waitPeriod ) public virtual; function startContractChange(bytes32 _id, address _newContractAddr) public virtual; function approveContractChange(bytes32 _id) public virtual; function cancelContractChange(bytes32 _id) public virtual; function changeWaitPeriod(bytes32 _id, uint256 _newWaitPeriod) public virtual; } interface IERC20 { function totalSupply() external view returns (uint256 supply); function balanceOf(address _owner) external view returns (uint256 balance); function transfer(address _to, uint256 _value) external returns (bool success); function transferFrom( address _from, address _to, uint256 _value ) external returns (bool success); function approve(address _spender, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); function decimals() external view returns (uint256 digits); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /// @dev Edited so it always first approves 0 and then the value, because of non standard tokens function safeApprove( IERC20 token, address spender, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } /// @title A stateful contract that holds and can change owner/admin contract AdminVault { address public owner; address public admin; constructor() { owner = msg.sender; admin = 0x25eFA336886C74eA8E282ac466BdCd0199f85BB9; } /// @notice Admin is able to change owner /// @param _owner Address of new owner function changeOwner(address _owner) public { require(admin == msg.sender, "msg.sender not admin"); owner = _owner; } /// @notice Admin is able to set new admin /// @param _admin Address of multisig that becomes new admin function changeAdmin(address _admin) public { require(admin == msg.sender, "msg.sender not admin"); admin = _admin; } } /// @title AdminAuth Handles owner/admin privileges over smart contracts contract AdminAuth { using SafeERC20 for IERC20; AdminVault public constant adminVault = AdminVault(0xCCf3d848e08b94478Ed8f46fFead3008faF581fD); modifier onlyOwner() { require(adminVault.owner() == msg.sender, "msg.sender not owner"); _; } modifier onlyAdmin() { require(adminVault.admin() == msg.sender, "msg.sender not admin"); _; } /// @notice withdraw stuck funds function withdrawStuckFunds(address _token, address _receiver, uint256 _amount) public onlyOwner { if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) { payable(_receiver).transfer(_amount); } else { IERC20(_token).safeTransfer(_receiver, _amount); } } /// @notice Destroy the contract function kill() public onlyAdmin { selfdestruct(payable(msg.sender)); } } abstract contract IUniswapRouter { function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual returns (uint256[] memory amounts); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external virtual returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable virtual returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external virtual returns (uint256 amountA, uint256 amountB); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) public pure virtual returns (uint256 amountB); function getAmountsOut(uint256 amountIn, address[] memory path) public view virtual returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] memory path) public view virtual returns (uint256[] memory amounts); } abstract contract IBotRegistry { function botList(address) public virtual view returns (bool); } abstract contract IWETH { function allowance(address, address) public virtual view returns (uint256); function balanceOf(address) public virtual view returns (uint256); function approve(address, uint256) public virtual; function transfer(address, uint256) public virtual returns (bool); function transferFrom( address, address, uint256 ) public virtual returns (bool); function deposit() public payable virtual; function withdraw(uint256) public virtual; } library TokenUtils { using SafeERC20 for IERC20; address public constant WETH_ADDR = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; address public constant ETH_ADDR = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; function approveToken( address _tokenAddr, address _to, uint256 _amount ) internal { if (_tokenAddr == ETH_ADDR) return; if (IERC20(_tokenAddr).allowance(address(this), _to) < _amount) { IERC20(_tokenAddr).safeApprove(_to, _amount); } } function pullTokensIfNeeded( address _token, address _from, uint256 _amount ) internal returns (uint256) { // handle max uint amount if (_amount == type(uint256).max) { uint256 userAllowance = IERC20(_token).allowance(_from, address(this)); uint256 balance = getBalance(_token, _from); // pull max allowance amount if balance is bigger than allowance _amount = (balance > userAllowance) ? userAllowance : balance; } if (_from != address(0) && _from != address(this) && _token != ETH_ADDR && _amount != 0) { IERC20(_token).safeTransferFrom(_from, address(this), _amount); } return _amount; } function withdrawTokens( address _token, address _to, uint256 _amount ) internal returns (uint256) { if (_amount == type(uint256).max) { _amount = getBalance(_token, address(this)); } if (_to != address(0) && _to != address(this) && _amount != 0) { if (_token != ETH_ADDR) { IERC20(_token).safeTransfer(_to, _amount); } else { payable(_to).transfer(_amount); } } return _amount; } function depositWeth(uint256 _amount) internal { IWETH(WETH_ADDR).deposit{value: _amount}(); } function withdrawWeth(uint256 _amount) internal { IWETH(WETH_ADDR).withdraw(_amount); } function getBalance(address _tokenAddr, address _acc) internal view returns (uint256) { if (_tokenAddr == ETH_ADDR) { return _acc.balance; } else { return IERC20(_tokenAddr).balanceOf(_acc); } } function getTokenDecimals(address _token) internal view returns (uint256) { if (_token == ETH_ADDR) return 18; return IERC20(_token).decimals(); } } /// @title Contract used to refill tx sending bots when they are low on eth contract BotRefills is AdminAuth { using TokenUtils for address; address internal refillCaller = 0x33fDb79aFB4456B604f376A45A546e7ae700e880; address internal feeAddr = 0x76720aC2574631530eC8163e4085d6F98513fb27; address internal constant BOT_REGISTRY_ADDRESS = 0x637726f8b08a7ABE3aE3aCaB01A80E2d8ddeF77B; address internal constant DAI_ADDR = 0x6B175474E89094C44Da98b954EedeAC495271d0F; IUniswapRouter internal router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); mapping(address => bool) public additionalBots; constructor() { additionalBots[0x33fDb79aFB4456B604f376A45A546e7ae700e880] = true; additionalBots[0x7fb85Bab66C4a14eb4c048a34CEf0AB16747778d] = true; additionalBots[0x446aD06C447b26D129C131E893f48b3a518a63c7] = true; } modifier isApprovedBot(address _botAddr) { require( IBotRegistry(BOT_REGISTRY_ADDRESS).botList(_botAddr) || additionalBots[_botAddr], "Not auth bot" ); _; } modifier isRefillCaller { require(msg.sender == refillCaller, "Wrong refill caller"); _; } function refill(uint256 _ethAmount, address _botAddress) public isRefillCaller isApprovedBot(_botAddress) { // check if we have enough weth to send uint256 wethBalance = IERC20(TokenUtils.WETH_ADDR).balanceOf(feeAddr); if (wethBalance >= _ethAmount) { IERC20(TokenUtils.WETH_ADDR).transferFrom(feeAddr, address(this), _ethAmount); TokenUtils.withdrawWeth(_ethAmount); payable(_botAddress).transfer(_ethAmount); } else { address[] memory path = new address[](2); path[0] = DAI_ADDR; path[1] = TokenUtils.WETH_ADDR; // get how much dai we need to convert uint256 daiAmount = getEth2Dai(_ethAmount); IERC20(DAI_ADDR).transferFrom(feeAddr, address(this), daiAmount); DAI_ADDR.approveToken(address(router), daiAmount); // swap and transfer directly to botAddress router.swapExactTokensForETH(daiAmount, 1, path, _botAddress, block.timestamp + 1); } } function refillMany(uint256[] memory _ethAmounts, address[] memory _botAddresses) public { for(uint i = 0; i < _botAddresses.length; ++i) { refill(_ethAmounts[i], _botAddresses[i]); } } /// @dev Returns Dai amount, given eth amount based on uniV2 pool price function getEth2Dai(uint256 _ethAmount) internal view returns (uint256 daiAmount) { address[] memory path = new address[](2); path[0] = TokenUtils.WETH_ADDR; path[1] = DAI_ADDR; daiAmount = router.getAmountsOut(_ethAmount, path)[1]; } function setRefillCaller(address _newBot) public onlyOwner { refillCaller = _newBot; } function setFeeAddr(address _newFeeAddr) public onlyOwner { feeAddr = _newFeeAddr; } function setAdditionalBot(address _botAddr, bool _approved) public onlyOwner { additionalBots[_botAddr] = _approved; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"additionalBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"address","name":"_botAddress","type":"address"}],"name":"refill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ethAmounts","type":"uint256[]"},{"internalType":"address[]","name":"_botAddresses","type":"address[]"}],"name":"refillMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_botAddr","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setAdditionalBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newFeeAddr","type":"address"}],"name":"setFeeAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBot","type":"address"}],"name":"setRefillCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600080546001600160a01b03199081167333fdb79afb4456b604f376a45a546e7ae700e880179091556001805482167376720ac2574631530ec8163e4085d6f98513fb2717905560028054909116737a250d5630b4cf539739df2c5dacb4c659f2488d17905534801561007657600080fd5b5060036020527f8ecce606a27c5df8054e583f7230844cf08d392fc221a0997ec973968f6545c6805460ff1990811660019081179092557f322f723759682452954b70c49b489fa39b89da3c695ab912c6025ba1a450d56c805482168317905573446ad06c447b26d129c131e893f48b3a518a63c76000527fdf26598e323beec8846011e2613bc9dd6c1151036023fc81b9700f45f7286273805490911690911790556115f0806101286000396000f3fe60806040526004361061008a5760003560e01c8063b2855b4f11610059578063b2855b4f14610249578063c579d4901461027c578063d09b62ed146102bf578063f644aa8714610306578063fa35525b1461033957610091565b80633be7c0a81461009657806341c0e1b5146100d357806360a4b036146100e85780638cedca711461021857610091565b3661009157005b600080fd5b3480156100a257600080fd5b506100d1600480360360408110156100b957600080fd5b506001600160a01b0381351690602001351515610372565b005b3480156100df57600080fd5b506100d1610472565b3480156100f457600080fd5b506100d16004803603604081101561010b57600080fd5b810190602081018135600160201b81111561012557600080fd5b82018360208201111561013757600080fd5b803590602001918460208302840111600160201b8311171561015857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a757600080fd5b8201836020820111156101b957600080fd5b803590602001918460208302840111600160201b831117156101da57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061054a945050505050565b34801561022457600080fd5b5061022d610593565b604080516001600160a01b039092168252519081900360200190f35b34801561025557600080fd5b506100d16004803603602081101561026c57600080fd5b50356001600160a01b03166105ab565b34801561028857600080fd5b506100d16004803603606081101561029f57600080fd5b506001600160a01b038135811691602081013590911690604001356106a2565b3480156102cb57600080fd5b506102f2600480360360208110156102e257600080fd5b50356001600160a01b03166107ec565b604080519115158252519081900360200190f35b34801561031257600080fd5b506100d16004803603602081101561032957600080fd5b50356001600160a01b0316610801565b34801561034557600080fd5b506100d16004803603604081101561035c57600080fd5b50803590602001356001600160a01b03166108f8565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c957600080fd5b505afa1580156103dd573d6000803e3d6000fd5b505050506040513d60208110156103f357600080fd5b50516001600160a01b031614610447576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c957600080fd5b505afa1580156104dd573d6000803e3d6000fd5b505050506040513d60208110156104f357600080fd5b50516001600160a01b031614610547576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1030b236b4b760611b604482015290519081900360640190fd5b33ff5b60005b815181101561058e5761058683828151811061056557fe5b602002602001015183838151811061057957fe5b60200260200101516108f8565b60010161054d565b505050565b73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561060257600080fd5b505afa158015610616573d6000803e3d6000fd5b505050506040513d602081101561062c57600080fd5b50516001600160a01b031614610680576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b50516001600160a01b031614610777576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614156107d8576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156107d2573d6000803e3d6000fd5b5061058e565b61058e6001600160a01b0384168383610ead565b60036020526000908152604090205460ff1681565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561085857600080fd5b505afa15801561086c573d6000803e3d6000fd5b505050506040513d602081101561088257600080fd5b50516001600160a01b0316146108d6576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461094d576040805162461bcd60e51b81526020600482015260136024820152722bb937b733903932b334b6361031b0b63632b960691b604482015290519081900360640190fd5b8073637726f8b08a7abe3ae3acab01a80e2d8ddef77b6001600160a01b03166341d6e7da826040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d60208110156109d957600080fd5b5051806109fe57506001600160a01b03811660009081526003602052604090205460ff165b610a3e576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185d5d1a08189bdd60a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b81526001600160a01b0390921660048301525160009173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916370a0823191602480820192602092909190829003018186803b158015610a9f57600080fd5b505afa158015610ab3573d6000803e3d6000fd5b505050506040513d6020811015610ac957600080fd5b50519050838110610bb257600154604080516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482018690525173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916323b872dd9160648083019260209291908290030181600087803b158015610b4057600080fd5b505af1158015610b54573d6000803e3d6000fd5b505050506040513d6020811015610b6a57600080fd5b50610b76905084610eff565b6040516001600160a01b0384169085156108fc029086906000818181858888f19350505050158015610bac573d6000803e3d6000fd5b50610ea7565b604080516002808252606082018352600092602083019080368337019050509050736b175474e89094c44da98b954eedeac495271d0f81600081518110610bf557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610c3757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000610c6286610f74565b600154604080516323b872dd60e01b81526001600160a01b0390921660048301523060248301526044820183905251919250736b175474e89094c44da98b954eedeac495271d0f916323b872dd916064808201926020929091908290030181600087803b158015610cd257600080fd5b505af1158015610ce6573d6000803e3d6000fd5b505050506040513d6020811015610cfc57600080fd5b5050600254610d2a90736b175474e89094c44da98b954eedeac495271d0f906001600160a01b03168361117e565b6002546040516318cbafe560e01b8152600481018381526001602483018190526001600160a01b0389811660648501524282016084850181905260a060448601908152885160a4870152885192909616956318cbafe59588958a948e9493919260c401906020808801910280838360005b83811015610db3578181015183820152602001610d9b565b505050509050019650505050505050600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610e1957600080fd5b8101908080516040519392919084600160201b821115610e3857600080fd5b908301906020820185811115610e4d57600080fd5b82518660208202830111600160201b82111715610e6957600080fd5b82525081516020918201928201910280838360005b83811015610e96578181015183820152602001610e7e565b505050509050016040525050505050505b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261058e90849061123e565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b5050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110610fbb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050736b175474e89094c44da98b954eedeac495271d0f81600181518110610ffd57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651939095169463d06ca61f9489948894929360640191858101910280838360005b8381101561107757818101518382015260200161105f565b50505050905001935050505060006040518083038186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156110d857600080fd5b8101908080516040519392919084600160201b8211156110f757600080fd5b90830190602082018581111561110c57600080fd5b82518660208202830111600160201b8211171561112857600080fd5b82525081516020918201928201910280838360005b8381101561115557818101518382015260200161113d565b5050505090500160405250505060018151811061116e57fe5b6020026020010151915050919050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156111a85761058e565b60408051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529151839286169163dd62ed3e916044808301926020929190829003018186803b1580156111f857600080fd5b505afa15801561120c573d6000803e3d6000fd5b505050506040513d602081101561122257600080fd5b5051101561058e5761058e6001600160a01b03841683836112ef565b6000611293826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113969092919063ffffffff16565b80519091501561058e578080602001905160208110156112b257600080fd5b505161058e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611591602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261134490849061123e565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261058e90849061123e565b60606113a584846000856113ad565b949350505050565b60606113b885611557565b611409576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106114475780518252601f199092019160209182019101611428565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114a9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ae565b606091505b509150915081156114c25791506113a59050565b8051156114d25780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561151c578181015183820152602001611504565b50505050905090810190601f1680156115495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113a557505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212203d3f098b7043e2c8fb32c3844d2169d736e3d18aab74acdb259ea25885d5fad564736f6c63430007060033
Deployed Bytecode
0x60806040526004361061008a5760003560e01c8063b2855b4f11610059578063b2855b4f14610249578063c579d4901461027c578063d09b62ed146102bf578063f644aa8714610306578063fa35525b1461033957610091565b80633be7c0a81461009657806341c0e1b5146100d357806360a4b036146100e85780638cedca711461021857610091565b3661009157005b600080fd5b3480156100a257600080fd5b506100d1600480360360408110156100b957600080fd5b506001600160a01b0381351690602001351515610372565b005b3480156100df57600080fd5b506100d1610472565b3480156100f457600080fd5b506100d16004803603604081101561010b57600080fd5b810190602081018135600160201b81111561012557600080fd5b82018360208201111561013757600080fd5b803590602001918460208302840111600160201b8311171561015857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101a757600080fd5b8201836020820111156101b957600080fd5b803590602001918460208302840111600160201b831117156101da57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061054a945050505050565b34801561022457600080fd5b5061022d610593565b604080516001600160a01b039092168252519081900360200190f35b34801561025557600080fd5b506100d16004803603602081101561026c57600080fd5b50356001600160a01b03166105ab565b34801561028857600080fd5b506100d16004803603606081101561029f57600080fd5b506001600160a01b038135811691602081013590911690604001356106a2565b3480156102cb57600080fd5b506102f2600480360360208110156102e257600080fd5b50356001600160a01b03166107ec565b604080519115158252519081900360200190f35b34801561031257600080fd5b506100d16004803603602081101561032957600080fd5b50356001600160a01b0316610801565b34801561034557600080fd5b506100d16004803603604081101561035c57600080fd5b50803590602001356001600160a01b03166108f8565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c957600080fd5b505afa1580156103dd573d6000803e3d6000fd5b505050506040513d60208110156103f357600080fd5b50516001600160a01b031614610447576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b031663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c957600080fd5b505afa1580156104dd573d6000803e3d6000fd5b505050506040513d60208110156104f357600080fd5b50516001600160a01b031614610547576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1030b236b4b760611b604482015290519081900360640190fd5b33ff5b60005b815181101561058e5761058683828151811061056557fe5b602002602001015183838151811061057957fe5b60200260200101516108f8565b60010161054d565b505050565b73ccf3d848e08b94478ed8f46ffead3008faf581fd81565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561060257600080fd5b505afa158015610616573d6000803e3d6000fd5b505050506040513d602081101561062c57600080fd5b50516001600160a01b031614610680576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b50516001600160a01b031614610777576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03841614156107d8576040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156107d2573d6000803e3d6000fd5b5061058e565b61058e6001600160a01b0384168383610ead565b60036020526000908152604090205460ff1681565b336001600160a01b031673ccf3d848e08b94478ed8f46ffead3008faf581fd6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561085857600080fd5b505afa15801561086c573d6000803e3d6000fd5b505050506040513d602081101561088257600080fd5b50516001600160a01b0316146108d6576040805162461bcd60e51b815260206004820152601460248201527336b9b39739b2b73232b9103737ba1037bbb732b960611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461094d576040805162461bcd60e51b81526020600482015260136024820152722bb937b733903932b334b6361031b0b63632b960691b604482015290519081900360640190fd5b8073637726f8b08a7abe3ae3acab01a80e2d8ddef77b6001600160a01b03166341d6e7da826040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d60208110156109d957600080fd5b5051806109fe57506001600160a01b03811660009081526003602052604090205460ff165b610a3e576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185d5d1a08189bdd60a21b604482015290519081900360640190fd5b600154604080516370a0823160e01b81526001600160a01b0390921660048301525160009173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916370a0823191602480820192602092909190829003018186803b158015610a9f57600080fd5b505afa158015610ab3573d6000803e3d6000fd5b505050506040513d6020811015610ac957600080fd5b50519050838110610bb257600154604080516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482018690525173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2916323b872dd9160648083019260209291908290030181600087803b158015610b4057600080fd5b505af1158015610b54573d6000803e3d6000fd5b505050506040513d6020811015610b6a57600080fd5b50610b76905084610eff565b6040516001600160a01b0384169085156108fc029086906000818181858888f19350505050158015610bac573d6000803e3d6000fd5b50610ea7565b604080516002808252606082018352600092602083019080368337019050509050736b175474e89094c44da98b954eedeac495271d0f81600081518110610bf557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610c3757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000610c6286610f74565b600154604080516323b872dd60e01b81526001600160a01b0390921660048301523060248301526044820183905251919250736b175474e89094c44da98b954eedeac495271d0f916323b872dd916064808201926020929091908290030181600087803b158015610cd257600080fd5b505af1158015610ce6573d6000803e3d6000fd5b505050506040513d6020811015610cfc57600080fd5b5050600254610d2a90736b175474e89094c44da98b954eedeac495271d0f906001600160a01b03168361117e565b6002546040516318cbafe560e01b8152600481018381526001602483018190526001600160a01b0389811660648501524282016084850181905260a060448601908152885160a4870152885192909616956318cbafe59588958a948e9493919260c401906020808801910280838360005b83811015610db3578181015183820152602001610d9b565b505050509050019650505050505050600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610e1957600080fd5b8101908080516040519392919084600160201b821115610e3857600080fd5b908301906020820185811115610e4d57600080fd5b82518660208202830111600160201b82111715610e6957600080fd5b82525081516020918201928201910280838360005b83811015610e96578181015183820152602001610e7e565b505050509050016040525050505050505b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261058e90849061123e565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b5050505050565b6040805160028082526060820183526000928392919060208301908036833701905050905073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600081518110610fbb57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050736b175474e89094c44da98b954eedeac495271d0f81600181518110610ffd57fe5b6001600160a01b039283166020918202929092018101919091526002546040805163d06ca61f60e01b81526004810188815260248201928352865160448301528651939095169463d06ca61f9489948894929360640191858101910280838360005b8381101561107757818101518382015260200161105f565b50505050905001935050505060006040518083038186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156110d857600080fd5b8101908080516040519392919084600160201b8211156110f757600080fd5b90830190602082018581111561110c57600080fd5b82518660208202830111600160201b8211171561112857600080fd5b82525081516020918201928201910280838360005b8381101561115557818101518382015260200161113d565b5050505090500160405250505060018151811061116e57fe5b6020026020010151915050919050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156111a85761058e565b60408051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529151839286169163dd62ed3e916044808301926020929190829003018186803b1580156111f857600080fd5b505afa15801561120c573d6000803e3d6000fd5b505050506040513d602081101561122257600080fd5b5051101561058e5761058e6001600160a01b03841683836112ef565b6000611293826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113969092919063ffffffff16565b80519091501561058e578080602001905160208110156112b257600080fd5b505161058e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611591602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261134490849061123e565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261058e90849061123e565b60606113a584846000856113ad565b949350505050565b60606113b885611557565b611409576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106114475780518252601f199092019160209182019101611428565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114a9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ae565b606091505b509150915081156114c25791506113a59050565b8051156114d25780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561151c578181015183820152602001611504565b50505050905090810190601f1680156115495780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113a557505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212203d3f098b7043e2c8fb32c3844d2169d736e3d18aab74acdb259ea25885d5fad564736f6c63430007060033
Deployed Bytecode Sourcemap
16438:3258:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19524:132;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19524:132:0;;;;;;;;;;:::i;:::-;;10465:85;;;;;;;;;;;;;:::i;18719:221::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18719:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18719:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18719:221:0;;;;;;;;-1:-1:-1;18719:221:0;;-1:-1:-1;;;;;18719:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18719:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18719:221:0;;-1:-1:-1;18719:221:0;;-1:-1:-1;;;;;18719:221:0:i;9712:94::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;9712:94:0;;;;;;;;;;;;;;19418:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19418:98:0;-1:-1:-1;;;;;19418:98:0;;:::i;10103:316::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10103:316:0;;;;;;;;;;;;;;;;;:::i;16960:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16960:46:0;-1:-1:-1;;;;;16960:46:0;;:::i;:::-;;;;;;;;;;;;;;;;;;19310:100;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19310:100:0;-1:-1:-1;;;;;19310:100:0;;:::i;17618:1093::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17618:1093:0;;;;;;-1:-1:-1;;;;;17618:1093:0;;:::i;19524:132::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19612:24:0;;;::::1;;::::0;;;:14:::1;:24;::::0;;;;:36;;-1:-1:-1;;19612:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19524:132::o;10465:85::-;10002:10;-1:-1:-1;;;;;9980:32:0;9763:42;-1:-1:-1;;;;;9980:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9980:18:0;-1:-1:-1;;;;;9980:32:0;;9972:65;;;;;-1:-1:-1;;;9972:65:0;;;;;;;;;;;;-1:-1:-1;;;9972:65:0;;;;;;;;;;;;;;;10530:10:::1;10509:33;18719:221:::0;18823:6;18819:114;18839:13;:20;18835:1;:24;18819:114;;;18881:40;18888:11;18900:1;18888:14;;;;;;;;;;;;;;18904:13;18918:1;18904:16;;;;;;;;;;;;;;18881:6;:40::i;:::-;18861:3;;18819:114;;;;18719:221;;:::o;9712:94::-;9763:42;9712:94;:::o;19418:98::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;19487:7:::1;:21:::0;;-1:-1:-1;;;;;;19487:21:0::1;-1:-1:-1::0;;;;;19487:21:0;;;::::1;::::0;;;::::1;::::0;;19418:98::o;10103:316::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;10225:42:::1;-1:-1:-1::0;;;;;10215:52:0;::::1;;10211:201;;;10284:36;::::0;-1:-1:-1;;;;;10284:27:0;::::1;::::0;:36;::::1;;;::::0;10312:7;;10284:36:::1;::::0;;;10312:7;10284:27;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10211:201;;;10353:47;-1:-1:-1::0;;;;;10353:27:0;::::1;10381:9:::0;10392:7;10353:27:::1;:47::i;16960:46::-:0;;;;;;;;;;;;;;;:::o;19310:100::-;9877:10;-1:-1:-1;;;;;9855:32:0;9763:42;-1:-1:-1;;;;;9855:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9855:18:0;-1:-1:-1;;;;;9855:32:0;;9847:65;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;-1:-1:-1;;;9847:65:0;;;;;;;;;;;;;;;19380:12:::1;:22:::0;;-1:-1:-1;;;;;;19380:22:0::1;-1:-1:-1::0;;;;;19380:22:0;;;::::1;::::0;;;::::1;::::0;;19310:100::o;17618:1093::-;17554:12;;-1:-1:-1;;;;;17554:12:0;17540:10;:26;17532:58;;;;;-1:-1:-1;;;17532:58:0;;;;;;;;;;;;-1:-1:-1;;;17532:58:0;;;;;;;;;;;;;;;17738:11:::1;16723:42;-1:-1:-1::0;;;;;17347:42:0::1;;17390:8;17347:52;;;;;;;;;;;;;-1:-1:-1::0;;;;;17347:52:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17347:52:0;;:80:::1;;-1:-1:-1::0;;;;;;17403:24:0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;::::1;;17347:80;17325:142;;;::::0;;-1:-1:-1;;;17325:142:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17325:142:0;;;;;;;;;;;;;::::1;;17877:7:::2;::::0;17838:47:::2;::::0;;-1:-1:-1;;;17838:47:0;;-1:-1:-1;;;;;17877:7:0;;::::2;17838:47;::::0;::::2;::::0;;-1:-1:-1;;13904:42:0::2;::::0;17838:38:::2;::::0;:47;;;;;::::2;::::0;;;;;;;;;13904:42;17838:47;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;17838:47:0;;-1:-1:-1;17902:25:0;;::::2;17898:806;;17986:7;::::0;17944:77:::2;::::0;;-1:-1:-1;;;17944:77:0;;-1:-1:-1;;;;;17986:7:0;;::::2;17944:77;::::0;::::2;::::0;18003:4:::2;17944:77:::0;;;;;;;;;;;13904:42:::2;::::0;17944:41:::2;::::0;:77;;;;;::::2;::::0;;;;;;;;-1:-1:-1;13904:42:0;17944:77;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;18038:35:0::2;::::0;-1:-1:-1;18062:10:0;18038:23:::2;:35::i;:::-;18088:41;::::0;-1:-1:-1;;;;;18088:29:0;::::2;::::0;:41;::::2;;;::::0;18118:10;;18088:41:::2;::::0;;;18118:10;18088:29;:41;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;17898:806;;;18186:16;::::0;;18200:1:::2;18186:16:::0;;;;;::::2;::::0;;18162:21:::2;::::0;18186:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;18186:16:0::2;18162:40;;16809:42;18217:4;18222:1;18217:7;;;;;;;;;;;;;:18;-1:-1:-1::0;;;;;18217:18:0::2;;;-1:-1:-1::0;;;;;18217:18:0::2;;;::::0;::::2;13904:42;18250:4;18255:1;18250:7;;;;;;;;;;;;;:30;-1:-1:-1::0;;;;;18250:30:0::2;;;-1:-1:-1::0;;;;;18250:30:0::2;;;::::0;::::2;18349:17;18369:22;18380:10;18369;:22::i;:::-;18438:7;::::0;18408:64:::2;::::0;;-1:-1:-1;;;18408:64:0;;-1:-1:-1;;;;;18438:7:0;;::::2;18408:64;::::0;::::2;::::0;18455:4:::2;18408:64:::0;;;;;;;;;;;;;-1:-1:-1;16809:42:0::2;::::0;18408:29:::2;::::0;:64;;;;;::::2;::::0;;;;;;;;;-1:-1:-1;16809:42:0;18408:64;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;18517:6:0::2;::::0;18487:49:::2;::::0;16809:42:::2;::::0;-1:-1:-1;;;;;18517:6:0::2;18526:9:::0;18487:21:::2;:49::i;:::-;18610:6;::::0;:82:::2;::::0;-1:-1:-1;;;18610:82:0;;::::2;::::0;::::2;::::0;;;:6;:82;;;;;;-1:-1:-1;;;;;18610:82:0;;::::2;::::0;;;;18672:15:::2;:19:::0;::::2;18610:82:::0;;;;;;;;;;;;;;;;;;;;;:6;;;::::2;::::0;:28:::2;::::0;18639:9;;18653:4;;18659:11;;18672:19;18610:82;;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;:6:::2;:82;;;;;;;::::0;;::::2;::::0;;;::::2;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;18610:82:0::2;::::0;::::2;;::::0;::::2;::::0;::::2;;;;;::::0;::::2;;;;;;;;;;;;;;;-1:-1:-1::0;;;18610:82:0::2;;;;;;::::0;::::2;;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;;;;;::::0;::::2;;;;;;;;;;;-1:-1:-1::0;;;18610:82:0::2;;;;;;;::::0;::::2;;::::0;;-1:-1:-1;18610:82:0;;::::2;::::0;;::::2;::::0;;::::2;::::0;::::2;::::0;;;::::2;;;;;;;;::::0;;::::2;::::0;;;::::2;::::0;::::2;;;;;;;;;;;;;;::::0;::::2;;;17898:806;;;17480:1;17601::::1;17618:1093:::0;;:::o;6555:211::-;6699:58;;;-1:-1:-1;;;;;6699:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6699:58:0;-1:-1:-1;;;6699:58:0;;;6672:86;;6692:5;;6672:19;:86::i;15798:101::-;13904:42;-1:-1:-1;;;;;15857:25:0;;15883:7;15857:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15798:101;:::o;19025:277::-;19142:16;;;19156:1;19142:16;;;;;;;;19088:17;;;;19142:16;19156:1;19142:16;;;;;;;;;;-1:-1:-1;19142:16:0;19118:40;;13904:42;19169:4;19174:1;19169:7;;;;;;;;;;;;;:30;-1:-1:-1;;;;;19169:30:0;;;-1:-1:-1;;;;;19169:30:0;;;;;16809:42;19210:4;19215:1;19210:7;;;;;;;;-1:-1:-1;;;;;19210:18:0;;;:7;;;;;;;;;;:18;;;;19253:6;;:38;;;-1:-1:-1;;;19253:38:0;;;;;;;;;;;;;;;;;;;;;;:6;;;;;:20;;19274:10;;19286:4;;19253:38;;;;;;;;;;;;;:6;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19253:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19253:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19253:38:0;;;;;;;;;;;;-1:-1:-1;19253:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19292:1;19253:41;;;;;;;;;;;;;;19241:53;;19025:277;;;;:::o;14039:315::-;-1:-1:-1;;;;;14169:22:0;;13988:42;14169:22;14165:35;;;14193:7;;14165:35;14216:48;;;-1:-1:-1;;;14216:48:0;;14253:4;14216:48;;;;-1:-1:-1;;;;;14216:48:0;;;;;;;;;14267:7;;14216:28;;;;;:48;;;;;;;;;;;;;;:28;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14216:48:0;:58;14212:135;;;14291:44;-1:-1:-1;;;;;14291:30:0;;14322:3;14327:7;14291:30;:44::i;8305:468::-;8386:23;8412:106;8454:4;8412:106;;;;;;;;;;;;;;;;;8420:5;-1:-1:-1;;;;;8412:27:0;;;:106;;;;;:::i;:::-;8533:17;;8386:132;;-1:-1:-1;8533:21:0;8529:237;;8688:10;8677:30;;;;;;;;;;;;;;;-1:-1:-1;8677:30:0;8669:85;;;;-1:-1:-1;;;8669:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:316;7317:58;;;-1:-1:-1;;;;;7317:58:0;;;;;;7373:1;7317:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7317:58:0;-1:-1:-1;;;7317:58:0;;;7290:86;;7310:5;;7290:19;:86::i;:::-;7414:62;;;-1:-1:-1;;;;;7414:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7414:62:0;-1:-1:-1;;;7414:62:0;;;7387:90;;7407:5;;7387:19;:90::i;2655:230::-;2792:12;2824:53;2847:6;2855:4;2861:1;2864:12;2824:22;:53::i;:::-;2817:60;2655:230;-1:-1:-1;;;;2655:230:0:o;3541:1020::-;3714:12;3747:18;3758:6;3747:10;:18::i;:::-;3739:60;;;;;-1:-1:-1;;;3739:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3873:12;3887:23;3914:6;-1:-1:-1;;;;;3914:11:0;3933:8;3943:4;3914:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3914:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3872:76;;;;3963:7;3959:595;;;3994:10;-1:-1:-1;3987:17:0;;-1:-1:-1;3987:17:0;3959:595;4108:17;;:21;4104:439;;4371:10;4365:17;4432:15;4419:10;4415:2;4411:19;4404:44;4319:148;4514:12;4507:20;;-1:-1:-1;;;4507:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:641;1480:4;1961:20;;1791:66;2010:23;;;;;;:42;;-1:-1:-1;;2037:15:0;;;2002:51;-1:-1:-1;;1420:641:0:o
Swarm Source
ipfs://3d3f098b7043e2c8fb32c3844d2169d736e3d18aab74acdb259ea25885d5fad5
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.