Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CompoundStrategy
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-20 */ // Sources flattened with hardhat v2.0.11 https://hardhat.org // File contracts/interfaces/IStrategy.sol // License-Identifier: MIT pragma solidity 0.6.12; interface IStrategy { /// @notice Send the assets to the Strategy and call skim to invest them. /// @param amount The amount of tokens to invest. function skim(uint256 amount) external; /// @notice Harvest any profits made converted to the asset and pass them to the caller. /// @param balance The amount of tokens the caller thinks it has invested. /// @param sender The address of the initiator of this transaction. Can be used for reimbursements, etc. /// @return amountAdded The delta (+profit or -loss) that occured in contrast to `balance`. function harvest(uint256 balance, address sender) external returns (int256 amountAdded); /// @notice Withdraw assets. The returned amount can differ from the requested amount due to rounding. /// @dev The `actualAmount` should be very close to the amount. /// The difference should NOT be used to report a loss. That's what harvest is for. /// @param amount The requested amount the caller wants to withdraw. /// @return actualAmount The real amount that is withdrawn. function withdraw(uint256 amount) external returns (uint256 actualAmount); /// @notice Withdraw all assets in the safest way possible. This shouldn't fail. /// @param balance The amount of tokens the caller thinks it has invested. /// @return amountAdded The delta (+profit or -loss) that occured in contrast to `balance`. function exit(uint256 balance) external returns (int256 amountAdded); } // File @boringcrypto/boring-solidity/contracts/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; // Audit on 5-Jan-2021 by Keno and BoringCrypto // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol // Edited by BoringCrypto contract BoringOwnableData { address public owner; address public pendingOwner; } contract BoringOwnable is BoringOwnableData { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @notice `owner` defaults to msg.sender on construction. constructor() public { owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } /// @notice Transfers ownership to `newOwner`. Either directly or claimable by the new pending owner. /// Can only be invoked by the current `owner`. /// @param newOwner Address of the new owner. /// @param direct True if `newOwner` should be set immediately. False if `newOwner` needs to use `claimOwnership`. /// @param renounce Allows the `newOwner` to be `address(0)` if `direct` and `renounce` is True. Has no effect otherwise. function transferOwnership( address newOwner, bool direct, bool renounce ) public onlyOwner { if (direct) { // Checks require(newOwner != address(0) || renounce, "Ownable: zero address"); // Effects emit OwnershipTransferred(owner, newOwner); owner = newOwner; pendingOwner = address(0); } else { // Effects pendingOwner = newOwner; } } /// @notice Needs to be called by `pendingOwner` to claim ownership. function claimOwnership() public { address _pendingOwner = pendingOwner; // Checks require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); // Effects emit OwnershipTransferred(owner, _pendingOwner); owner = _pendingOwner; pendingOwner = address(0); } /// @notice Only allows the `owner` to execute the function. modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } } // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; /// @notice A library for performing overflow-/underflow-safe math, /// updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math). library BoringMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b == 0 || (c = a * b) / b == a, "BoringMath: Mul Overflow"); } function to128(uint256 a) internal pure returns (uint128 c) { require(a <= uint128(-1), "BoringMath: uint128 Overflow"); c = uint128(a); } function to64(uint256 a) internal pure returns (uint64 c) { require(a <= uint64(-1), "BoringMath: uint64 Overflow"); c = uint64(a); } function to32(uint256 a) internal pure returns (uint32 c) { require(a <= uint32(-1), "BoringMath: uint32 Overflow"); c = uint32(a); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint128. library BoringMath128 { function add(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint64. library BoringMath64 { function add(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint64 a, uint64 b) internal pure returns (uint64 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } /// @notice A library for performing overflow-/underflow-safe addition and subtraction on uint32. library BoringMath32 { function add(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a + b) >= b, "BoringMath: Add Overflow"); } function sub(uint32 a, uint32 b) internal pure returns (uint32 c) { require((c = a - b) <= a, "BoringMath: Underflow"); } } // File @boringcrypto/boring-solidity/contracts/interfaces/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); /// @notice EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // License-Identifier: MIT pragma solidity 0.6.12; // solhint-disable avoid-low-level-calls library BoringERC20 { bytes4 private constant SIG_SYMBOL = 0x95d89b41; // symbol() bytes4 private constant SIG_NAME = 0x06fdde03; // name() bytes4 private constant SIG_DECIMALS = 0x313ce567; // decimals() bytes4 private constant SIG_TRANSFER = 0xa9059cbb; // transfer(address,uint256) bytes4 private constant SIG_TRANSFER_FROM = 0x23b872dd; // transferFrom(address,address,uint256) function returnDataToString(bytes memory data) internal pure returns (string memory) { if (data.length >= 64) { return abi.decode(data, (string)); } else if (data.length == 32) { uint8 i = 0; while(i < 32 && data[i] != 0) { i++; } bytes memory bytesArray = new bytes(i); for (i = 0; i < 32 && data[i] != 0; i++) { bytesArray[i] = data[i]; } return string(bytesArray); } else { return "???"; } } /// @notice Provides a safe ERC20.symbol version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token symbol. function safeSymbol(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_SYMBOL)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.name version which returns '???' as fallback string. /// @param token The address of the ERC-20 token contract. /// @return (string) Token name. function safeName(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_NAME)); return success ? returnDataToString(data) : "???"; } /// @notice Provides a safe ERC20.decimals version which returns '18' as fallback value. /// @param token The address of the ERC-20 token contract. /// @return (uint8) Token decimals. function safeDecimals(IERC20 token) internal view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(SIG_DECIMALS)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } /// @notice Provides a safe ERC20.transfer version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransfer( IERC20 token, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed"); } /// @notice Provides a safe ERC20.transferFrom version for different ERC-20 implementations. /// Reverts on a failed transfer. /// @param token The address of the ERC-20 token. /// @param from Transfer tokens from. /// @param to Transfer tokens to. /// @param amount The token amount. function safeTransferFrom( IERC20 token, address from, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(SIG_TRANSFER_FROM, from, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed"); } } // File contracts/strategies/CompoundStrategy.sol // License-Identifier: MIT pragma solidity 0.6.12; // solhint-disable avoid-low-level-calls // solhint-disable not-rely-on-time // solhint-disable no-empty-blocks // solhint-disable avoid-tx-origin interface IFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IPair { function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; } interface IcToken is IERC20 { function mint(uint256 mintAmount) external returns (uint256); function redeem(uint256 redeemTokens) external returns (uint256); function redeemUnderlying(uint256 redeemAmount) external returns (uint256); function balanceOfUnderlying(address account) external returns (uint256); } contract CompoundStrategy is IStrategy, BoringOwnable { using BoringMath for uint256; using BoringERC20 for IERC20; using BoringERC20 for IcToken; address public immutable bentobox; IERC20 public immutable token; IcToken public immutable cToken; IERC20 public immutable compToken; IERC20 public immutable weth; IFactory public immutable factory; bool public exited; constructor( address bentobox_, IFactory factory_, IERC20 token_, IcToken cToken_, IERC20 compToken_, IERC20 weth_ ) public { bentobox = bentobox_; factory = factory_; token = token_; cToken = cToken_; compToken = compToken_; weth = weth_; token_.approve(address(cToken_), type(uint256).max); } modifier onlyBentobox { // Only the bentobox can call harvest on this strategy require(msg.sender == bentobox, "CompoundStrategy: only bento"); require(!exited, "CompoundStrategy: exited"); _; } function _swapAll( IERC20 fromToken, IERC20 toToken, address to ) internal returns (uint256 amountOut) { IPair pair = IPair(factory.getPair(address(fromToken), address(toToken))); require(address(pair) != address(0), "CompoundStrategy: Cannot convert"); uint256 amountIn = fromToken.balanceOf(address(this)); (uint256 reserve0, uint256 reserve1, ) = pair.getReserves(); uint256 amountInWithFee = amountIn.mul(997); IERC20(fromToken).safeTransfer(address(pair), amountIn); if (fromToken < toToken) { amountOut = amountIn.mul(997).mul(reserve1) / reserve0.mul(1000).add(amountInWithFee); pair.swap(0, amountOut, to, new bytes(0)); } else { amountOut = amountIn.mul(997).mul(reserve0) / reserve1.mul(1000).add(amountInWithFee); pair.swap(amountOut, 0, to, new bytes(0)); } } // Send the assets to the Strategy and call skim to invest them /// @inheritdoc IStrategy function skim(uint256 amount) external override onlyBentobox { require(cToken.mint(amount) == 0, "CompoundStrategy: mint error"); } // Harvest any profits made converted to the asset and pass them to the caller /// @inheritdoc IStrategy function harvest(uint256 balance, address sender) external override onlyBentobox returns (int256 amountAdded) { // To prevent anyone from using flash loans to 'steal' part of the profits, only EOA is allowed to call harvest require(sender == tx.origin, "CompoundStrategy: EOA only"); // Get the amount of tokens that the cTokens currently represent uint256 tokenBalance = cToken.balanceOfUnderlying(address(this)); // Convert enough cToken to take out the profit // If the amount is negative due to rounding (near impossible), just revert. Should be positive soon enough. require(cToken.redeemUnderlying(tokenBalance.sub(balance)) == 0, "CompoundStrategy: profit fail"); // Find out how much has been added (+ sitting on the contract from harvestCOMP) uint256 amountAdded_ = token.balanceOf(address(this)); // Transfer the profit to the bentobox, the amountAdded at this point matches the amount transferred token.safeTransfer(bentobox, amountAdded_); return int256(amountAdded_); } function harvestCOMP(uint256 minAmount) public onlyOwner { // To prevent flash loan sandwich attacks to 'steal' the profit, only the owner can harvest the COMP // Swap all COMP to WETH _swapAll(compToken, weth, address(this)); // Swap all WETH to token and leave it on the contract to be swept up in the next harvest require(_swapAll(weth, token, address(this)) >= minAmount, "CompoundStrategy: not enough"); } // Withdraw assets. /// @inheritdoc IStrategy function withdraw(uint256 amount) external override onlyBentobox returns (uint256 actualAmount) { // Convert enough cToken to take out 'amount' tokens require(cToken.redeemUnderlying(amount) == 0, "CompoundStrategy: redeem fail"); // Make sure we send and report the exact same amount of tokens by using balanceOf actualAmount = token.balanceOf(address(this)); token.safeTransfer(bentobox, actualAmount); } // Withdraw all assets in the safest way possible. This shouldn't fail. /// @inheritdoc IStrategy function exit(uint256 balance) external override onlyBentobox returns (int256 amountAdded) { // Get the amount of tokens that the cTokens currently represent uint256 tokenBalance = cToken.balanceOfUnderlying(address(this)); // Get the actual token balance of the cToken contract uint256 available = token.balanceOf(address(cToken)); // Check that the cToken contract has enough balance to pay out in full if (tokenBalance <= available) { // If there are more tokens available than our full position, take all based on cToken balance (continue if unsuccesful) try cToken.redeem(cToken.balanceOf(address(this))) {} catch {} } else { // Otherwise redeem all available and take a loss on the missing amount (continue if unsuccesful) try cToken.redeemUnderlying(available) {} catch {} } // Check balance of token on the contract uint256 amount = token.balanceOf(address(this)); // Calculate tokens added (or lost) amountAdded = int256(amount) - int256(balance); // Transfer all tokens to bentobox token.safeTransfer(bentobox, amount); // Flag as exited, allowing the owner to manually deal with any amounts available later exited = true; } function afterExit( address to, uint256 value, bytes memory data ) public onlyOwner returns (bool success) { // After exited, the owner can perform ANY call. This is to rescue any funds that didn't get released during exit or // got earned afterwards due to vesting or airdrops, etc. require(exited, "CompoundStrategy: Not exited"); (success, ) = to.call{value: value}(data); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"bentobox_","type":"address"},{"internalType":"contract IFactory","name":"factory_","type":"address"},{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"contract IcToken","name":"cToken_","type":"address"},{"internalType":"contract IERC20","name":"compToken_","type":"address"},{"internalType":"contract IERC20","name":"weth_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"afterExit","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bentobox","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cToken","outputs":[{"internalType":"contract IcToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"name":"exit","outputs":[{"internalType":"int256","name":"amountAdded","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"harvest","outputs":[{"internalType":"int256","name":"amountAdded","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"harvestCOMP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"actualAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101406040523480156200001257600080fd5b5060405162002f5038038062002f50833981810160405260c08110156200003857600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38573ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015620002f457600080fd5b505af115801562000309573d6000803e3d6000fd5b505050506040513d60208110156200032057600080fd5b81019080805190602001909291905050505050505050505060805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c612b306200042060003980611e3252806120a952508061065a528061068652806112bc52508061063952806114ba525080610be85280610cb052806110675280611624528061174852806118b452806119b85280611a675280611aa35280611bdf5250806106a75280610de55280610ece52806111885280611271528061197c5280611c945280611d825280612082525080610a015280610eac5280610f21528061124f52806114de528061176e5280611d605280611e0e5250612b306000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636939aaf5116100a2578063b649d03211610071578063b649d032146103a8578063c45a0155146103dc578063d9253c2d14610410578063e30c39781461050b578063fc0c546a1461053f5761010b565b80636939aaf5146102d057806369e527da146102fe5780637f8661a1146103325780638da5cb5b146103745761010b565b80633fc8cef3116100de5780633fc8cef31461023e5780634e71e0c8146102725780635ce6c3271461027c5780636605dfa71461029c5761010b565b8063022444e614610110578063078dfbe71461013e57806318fccc761461019a5780632e1a7d4d146101fc575b600080fd5b61013c6004803603602081101561012657600080fd5b8101908080359060200190929190505050610573565b005b6101986004803603606081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050610743565b005b6101e6600480360360408110156101b057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109fd565b6040518082815260200191505060405180910390f35b6102286004803603602081101561021257600080fd5b8101908080359060200190929190505050610f1d565b6040518082815260200191505060405180910390f35b6102466112ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027a6112de565b005b6102846114a5565b60405180821515815260200191505060405180910390f35b6102a46114b8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b81019080803590602001909291905050506114dc565b005b610306611746565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b810190808035906020019092919050505061176a565b6040518082815260200191505060405180910390f35b61037c611de8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b0611e0c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e4611e30565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f36004803603606081101561042657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561046d57600080fd5b82018360208201111561047f57600080fd5b803590602001918460018302840111640100000000831117156104a157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e54565b60405180821515815260200191505060405180910390f35b61051361205a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610547612080565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610634576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61067f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000306120a4565b50806106cc7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000306120a4565b1015610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206e6f7420656e6f7567680000000081525060200191505060405180910390fd5b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81156109b657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806108435750805b6108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f776e61626c653a207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f8565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f6d706f756e6453747261746567793a20454f41206f6e6c7900000000000081525060200191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c6f57600080fd5b505af1158015610c83573d6000803e3d6000fd5b505050506040513d6020811015610c9957600080fd5b8101908080519060200190929190505050905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663852a12e3610cfd878561275d90919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d6020811015610d5d57600080fd5b810190808051906020019092919050505014610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6d706f756e6453747261746567793a2070726f666974206661696c00000081525060200191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6a57600080fd5b505afa158015610e7e573d6000803e3d6000fd5b505050506040513d6020811015610e9457600080fd5b81019080805190602001909291905050509050610f127f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b809250505092915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615611063576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663852a12e3846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b505050506040513d602081101561110257600080fd5b810190808051906020019092919050505014611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6d706f756e6453747261746567793a2072656465656d206661696c00000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561120d57600080fd5b505afa158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b810190808051906020019092919050505090506112b57f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160149054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561169557600080fd5b505af11580156116a9573d6000803e3d6000fd5b505050506040513d60208110156116bf57600080fd5b810190808051906020019092919050505014611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206d696e74206572726f720000000081525060200191505060405180910390fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b505050506040513d602081101561196557600080fd5b8101908080519060200190929190505050905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a2157600080fd5b505afa158015611a35573d6000803e3d6000fd5b505050506040513d6020811015611a4b57600080fd5b81019080805190602001909291905050509050808211611bdd577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663db006a757f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b2857600080fd5b505afa158015611b3c573d6000803e3d6000fd5b505050506040513d6020811015611b5257600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015611b9957600080fd5b505af1925050508015611bcd57506040513d6020811015611bb957600080fd5b810190808051906020019092919050505060015b611bd657611bd8565b505b611c90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663852a12e3826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015611c5057600080fd5b505af1925050508015611c8457506040513d6020811015611c7057600080fd5b810190808051906020019092919050505060015b611c8d57611c8f565b505b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d1957600080fd5b505afa158015611d2d573d6000803e3d6000fd5b505050506040513d6020811015611d4357600080fd5b810190808051906020019092919050505090508481039350611dc67f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b60018060146101000a81548160ff021916908315150217905550505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160149054906101000a900460ff16611f9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a204e6f74206578697465640000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1683836040518082805190602001908083835b60208310611fe65780518252602082019150602081019050602083039250611fc3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612048576040519150601f19603f3d011682016040523d82523d6000602084013e61204d565b606091505b5050809150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561214c57600080fd5b505afa158015612160573d6000803e3d6000fd5b505050506040513d602081101561217657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f6d706f756e6453747261746567793a2043616e6e6f7420636f6e7665727481525060200191505060405180910390fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229557600080fd5b505afa1580156122a9573d6000803e3d6000fd5b505050506040513d60208110156122bf57600080fd5b810190808051906020019092919050505090506000808373ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d606081101561234557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060006123a66103e5856129e290919063ffffffff16565b90506123d385858b73ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1610156125ae5761242e816124206103e8866129e290919063ffffffff16565b612a7790919063ffffffff16565b612455836124476103e5886129e290919063ffffffff16565b6129e290919063ffffffff16565b8161245c57fe5b0495508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f6000888a600067ffffffffffffffff8111801561249757600080fd5b506040519080825280601f01601f1916602001820160405280156124ca5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612542578082015181840152602081019050612527565b50505050905090810190601f16801561256f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561259157600080fd5b505af11580156125a5573d6000803e3d6000fd5b50505050612751565b6125d5816125c76103e8856129e290919063ffffffff16565b612a7790919063ffffffff16565b6125fc846125ee6103e5886129e290919063ffffffff16565b6129e290919063ffffffff16565b8161260357fe5b0495508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8760008a600067ffffffffffffffff8111801561263e57600080fd5b506040519080825280601f01601f1916602001820160405280156126715781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156126e95780820151818401526020810190506126ce565b50505050905090810190601f1680156127165780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b505050505b50505050509392505050565b60008282840391508111156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f426f72696e674d6174683a20556e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106128c2578051825260208201915060208101905060208303925061289f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612924576040519150601f19603f3d011682016040523d82523d6000602084013e612929565b606091505b50915091508180156129695750600081511480612968575080806020019051602081101561295657600080fd5b81019080805190602001909291905050505b5b6129db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f426f72696e6745524332303a205472616e73666572206661696c65640000000081525060200191505060405180910390fd5b5050505050565b6000808214806129ff57508282838502925082816129fc57fe5b04145b612a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a204d756c204f766572666c6f77000000000000000081525060200191505060405180910390fd5b92915050565b6000818284019150811015612af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a20416464204f766572666c6f77000000000000000081525060200191505060405180910390fd5b9291505056fea2646970667358221220fba71288910f734cf1da8df09e436943eb37bf7bee29e1ce101bb5e45a11df8964736f6c634300060c0033000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f4000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80636939aaf5116100a2578063b649d03211610071578063b649d032146103a8578063c45a0155146103dc578063d9253c2d14610410578063e30c39781461050b578063fc0c546a1461053f5761010b565b80636939aaf5146102d057806369e527da146102fe5780637f8661a1146103325780638da5cb5b146103745761010b565b80633fc8cef3116100de5780633fc8cef31461023e5780634e71e0c8146102725780635ce6c3271461027c5780636605dfa71461029c5761010b565b8063022444e614610110578063078dfbe71461013e57806318fccc761461019a5780632e1a7d4d146101fc575b600080fd5b61013c6004803603602081101561012657600080fd5b8101908080359060200190929190505050610573565b005b6101986004803603606081101561015457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190803515159060200190929190505050610743565b005b6101e6600480360360408110156101b057600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109fd565b6040518082815260200191505060405180910390f35b6102286004803603602081101561021257600080fd5b8101908080359060200190929190505050610f1d565b6040518082815260200191505060405180910390f35b6102466112ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61027a6112de565b005b6102846114a5565b60405180821515815260200191505060405180910390f35b6102a46114b8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102fc600480360360208110156102e657600080fd5b81019080803590602001909291905050506114dc565b005b610306611746565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61035e6004803603602081101561034857600080fd5b810190808035906020019092919050505061176a565b6040518082815260200191505060405180910390f35b61037c611de8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b0611e0c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e4611e30565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104f36004803603606081101561042657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561046d57600080fd5b82018360208201111561047f57600080fd5b803590602001918460018302840111640100000000831117156104a157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611e54565b60405180821515815260200191505060405180910390f35b61051361205a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610547612080565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610634576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61067f7f000000000000000000000000c00e94cb662c3520282e6f5717214004a7f268887f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306120a4565b50806106cc7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc27f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599306120a4565b1015610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206e6f7420656e6f7567680000000081525060200191505060405180910390fd5b50565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81156109b657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415806108435750805b6108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f776e61626c653a207a65726f2061646472657373000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109f8565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b60007f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615610b43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610be4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f6d706f756e6453747261746567793a20454f41206f6e6c7900000000000081525060200191505060405180910390fd5b60007f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610c6f57600080fd5b505af1158015610c83573d6000803e3d6000fd5b505050506040513d6020811015610c9957600080fd5b8101908080519060200190929190505050905060007f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff1663852a12e3610cfd878561275d90919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015610d3357600080fd5b505af1158015610d47573d6000803e3d6000fd5b505050506040513d6020811015610d5d57600080fd5b810190808051906020019092919050505014610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6d706f756e6453747261746567793a2070726f666974206661696c00000081525060200191505060405180910390fd5b60007f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6a57600080fd5b505afa158015610e7e573d6000803e3d6000fd5b505050506040513d6020811015610e9457600080fd5b81019080805190602001909291905050509050610f127f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966827f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b809250505092915050565b60007f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615611063576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff1663852a12e3846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b505050506040513d602081101561110257600080fd5b810190808051906020019092919050505014611186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f6d706f756e6453747261746567793a2072656465656d206661696c00000081525060200191505060405180910390fd5b7f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561120d57600080fd5b505afa158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b810190808051906020019092919050505090506112b57f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966827f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b919050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160149054906101000a900460ff1681565b7f000000000000000000000000c00e94cb662c3520282e6f5717214004a7f2688881565b7f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff1615611620576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff1663a0712d68836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561169557600080fd5b505af11580156116a9573d6000803e3d6000fd5b505050506040513d60208110156116bf57600080fd5b810190808051906020019092919050505014611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206d696e74206572726f720000000081525060200191505060405180910390fd5b50565b7f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f481565b60007f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a206f6e6c792062656e746f0000000081525060200191505060405180910390fd5b600160149054906101000a900460ff16156118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f6d706f756e6453747261746567793a20657869746564000000000000000081525060200191505060405180910390fd5b60007f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff16633af9e669306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b505050506040513d602081101561196557600080fd5b8101908080519060200190929190505050905060007f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f46040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a2157600080fd5b505afa158015611a35573d6000803e3d6000fd5b505050506040513d6020811015611a4b57600080fd5b81019080805190602001909291905050509050808211611bdd577f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff1663db006a757f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b2857600080fd5b505afa158015611b3c573d6000803e3d6000fd5b505050506040513d6020811015611b5257600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015611b9957600080fd5b505af1925050508015611bcd57506040513d6020811015611bb957600080fd5b810190808051906020019092919050505060015b611bd657611bd8565b505b611c90565b7f000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f473ffffffffffffffffffffffffffffffffffffffff1663852a12e3826040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015611c5057600080fd5b505af1925050508015611c8457506040513d6020811015611c7057600080fd5b810190808051906020019092919050505060015b611c8d57611c8f565b505b5b60007f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d1957600080fd5b505afa158015611d2d573d6000803e3d6000fd5b505050506040513d6020811015611d4357600080fd5b810190808051906020019092919050505090508481039350611dc67f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966827f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59973ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b60018060146101000a81548160ff021916908315150217905550505050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd64396681565b7f000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600160149054906101000a900460ff16611f9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6d706f756e6453747261746567793a204e6f74206578697465640000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1683836040518082805190602001908083835b60208310611fe65780518252602082019150602081019050602083039250611fc3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612048576040519150601f19603f3d011682016040523d82523d6000602084013e61204d565b606091505b5050809150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59981565b6000807f000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac73ffffffffffffffffffffffffffffffffffffffff1663e6a4390586866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561214c57600080fd5b505afa158015612160573d6000803e3d6000fd5b505050506040513d602081101561217657600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f6d706f756e6453747261746567793a2043616e6e6f7420636f6e7665727481525060200191505060405180910390fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229557600080fd5b505afa1580156122a9573d6000803e3d6000fd5b505050506040513d60208110156122bf57600080fd5b810190808051906020019092919050505090506000808373ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561231b57600080fd5b505afa15801561232f573d6000803e3d6000fd5b505050506040513d606081101561234557600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060006123a66103e5856129e290919063ffffffff16565b90506123d385858b73ffffffffffffffffffffffffffffffffffffffff166127e09092919063ffffffff16565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1610156125ae5761242e816124206103e8866129e290919063ffffffff16565b612a7790919063ffffffff16565b612455836124476103e5886129e290919063ffffffff16565b6129e290919063ffffffff16565b8161245c57fe5b0495508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f6000888a600067ffffffffffffffff8111801561249757600080fd5b506040519080825280601f01601f1916602001820160405280156124ca5781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612542578082015181840152602081019050612527565b50505050905090810190601f16801561256f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561259157600080fd5b505af11580156125a5573d6000803e3d6000fd5b50505050612751565b6125d5816125c76103e8856129e290919063ffffffff16565b612a7790919063ffffffff16565b6125fc846125ee6103e5886129e290919063ffffffff16565b6129e290919063ffffffff16565b8161260357fe5b0495508473ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8760008a600067ffffffffffffffff8111801561263e57600080fd5b506040519080825280601f01601f1916602001820160405280156126715781602001600182028036833780820191505090505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156126e95780820151818401526020810190506126ce565b50505050905090810190601f1680156127165780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b505050505b50505050509392505050565b60008282840391508111156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f426f72696e674d6174683a20556e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b8585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106128c2578051825260208201915060208101905060208303925061289f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612924576040519150601f19603f3d011682016040523d82523d6000602084013e612929565b606091505b50915091508180156129695750600081511480612968575080806020019051602081101561295657600080fd5b81019080805190602001909291905050505b5b6129db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f426f72696e6745524332303a205472616e73666572206661696c65640000000081525060200191505060405180910390fd5b5050505050565b6000808214806129ff57508282838502925082816129fc57fe5b04145b612a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a204d756c204f766572666c6f77000000000000000081525060200191505060405180910390fd5b92915050565b6000818284019150811015612af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f426f72696e674d6174683a20416464204f766572666c6f77000000000000000081525060200191505060405180910390fd5b9291505056fea2646970667358221220fba71288910f734cf1da8df09e436943eb37bf7bee29e1ce101bb5e45a11df8964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f4000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : bentobox_ (address): 0xF5BCE5077908a1b7370B9ae04AdC565EBd643966
Arg [1] : factory_ (address): 0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac
Arg [2] : token_ (address): 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599
Arg [3] : cToken_ (address): 0xC11b1268C1A384e55C48c2391d8d480264A3A7F4
Arg [4] : compToken_ (address): 0xc00e94Cb662C3520282E6f5717214004A7f26888
Arg [5] : weth_ (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000f5bce5077908a1b7370b9ae04adc565ebd643966
Arg [1] : 000000000000000000000000c0aee478e3658e2610c5f7a4a2e1777ce9e4f2ac
Arg [2] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [3] : 000000000000000000000000c11b1268c1a384e55c48c2391d8d480264a3a7f4
Arg [4] : 000000000000000000000000c00e94cb662c3520282e6f5717214004a7f26888
Arg [5] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
12639:6423:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16164:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2900:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15057:1099;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16688:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12962:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3488:340;;;:::i;:::-;;13037:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12922:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14789:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12884:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17262:1339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2046:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12808:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12997;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18609:450;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2073:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12848:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16164:460;3956:5;;;;;;;;;;3942:19;;:10;:19;;;3934:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16376:40:::1;16385:9;16396:4;16410;16376:8;:40::i;:::-;;16574:9;16534:36;16543:4;16549:5;16564:4;16534:8;:36::i;:::-;:49;;16526:90;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16164:460:::0;:::o;2900:506::-;3956:5;;;;;;;;;;3942:19;;:10;:19;;;3934:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:6:::1;3035:364;;;3113:1;3093:22;;:8;:22;;;;:34;;;;3119:8;3093:34;3085:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;3227:8;3199:37;;3220:5;::::0;::::1;;;;;;;;3199:37;;;;;;;;;;;;3259:8;3251:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;3305:1;3282:12;;:25;;;;;;;;;;;;;;;;;;3035:364;;;3379:8;3364:12;;:23;;;;;;;;;;;;;;;;;;3035:364;2900:506:::0;;;:::o;15057:1099::-;15147:18;13614:8;13600:22;;:10;:22;;;13592:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:6;;;;;;;;;;;13674:7;13666:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15317:9:::1;15307:19;;:6;:19;;;15299:58;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15442:20;15465:6;:26;;;15500:4;15465:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;15442:64;;15754:1;15700:6;:23;;;15724:25;15741:7;15724:12;:16;;:25;;;;:::i;:::-;15700:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:55;15692:97;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15892:20;15915:5;:15;;;15939:4;15915:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;15892:53;;16066:42;16085:8;16095:12;16066:5;:18;;;;:42;;;;;:::i;:::-;16135:12;16121:27;;;;15057:1099:::0;;;;:::o;16688:458::-;16762:20;13614:8;13600:22;;:10;:22;;;13592:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:6;;;;;;;;;;;13674:7;13666:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16900:1:::1;16865:6;:23;;;16889:6;16865:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:36;16857:78;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17055:5;:15;;;17079:4;17055:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17040:45;;17096:42;17115:8;17125:12;17096:5;:18;;;;:42;;;;;:::i;:::-;16688:458:::0;;;:::o;12962:28::-;;;:::o;3488:340::-;3532:21;3556:12;;;;;;;;;;;3532:36;;3622:13;3608:27;;:10;:27;;;3600:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3738:13;3710:42;;3731:5;;;;;;;;;;3710:42;;;;;;;;;;;;3771:13;3763:5;;:21;;;;;;;;;;;;;;;;;;3818:1;3795:12;;:25;;;;;;;;;;;;;;;;;;3488:340;:::o;13037:18::-;;;;;;;;;;;;;:::o;12922:33::-;;;:::o;14789:145::-;13614:8;13600:22;;:10;:22;;;13592:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:6;;;;;;;;;;;13674:7;13666:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14892:1:::1;14869:6;:11;;;14881:6;14869:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:24;14861:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14789:145:::0;:::o;12884:31::-;;;:::o;17262:1339::-;17333:18;13614:8;13600:22;;:10;:22;;;13592:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:6;;;;;;;;;;;13674:7;13666:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17438:20:::1;17461:6;:26;;;17496:4;17461:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17438:64;;17577:17;17597:5;:15;;;17621:6;17597:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17577:52;;17743:9;17727:12;:25;17723:446;;17907:6;:13;;;17921:6;:16;;;17946:4;17921:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17907:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;17903:62;;;;;;;17723:446;;;18112:6;:23;;;18136:9;18112:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;18108:50;;;;;;;17723:446;18232:14;18249:5;:15;;;18273:4;18249:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;18232:47;;18373:7;18356:6;18349:32;18335:46;;18436:36;18455:8;18465:6;18436:5;:18;;;;:36;;;;;:::i;:::-;18589:4;18580:6:::0;::::1;:13;;;;;;;;;;;;;;;;;;13721:1;;;17262:1339:::0;;;:::o;2046:20::-;;;;;;;;;;;;:::o;12808:33::-;;;:::o;12997:::-;;;:::o;18609:450::-;18734:12;3956:5;;;;;;;;;;;3942:19;;:10;:19;;;3934:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18960:6:::1;;;;;;;;;;;18952:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19024:2;:7;;19039:5;19046:4;19024:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19010:41;;;;;18609:450:::0;;;;;:::o;2073:27::-;;;;;;;;;;;;;:::o;12848:29::-;;;:::o;13738:943::-;13854:17;13884:10;13903:7;:15;;;13927:9;13947:7;13903:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13884:73;;14001:1;13976:27;;13984:4;13976:27;;;;13968:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14053:16;14072:9;:19;;;14100:4;14072:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14053:53;;14118:16;14136;14158:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14117:59;;;;;;;;;14187:23;14213:17;14226:3;14213:8;:12;;:17;;;;:::i;:::-;14187:43;;14241:55;14280:4;14287:8;14248:9;14241:30;;;;:55;;;;;:::i;:::-;14323:7;14311:19;;:9;:19;;;14307:367;;;14393:39;14416:15;14393:18;14406:4;14393:8;:12;;:18;;;;:::i;:::-;:22;;:39;;;;:::i;:::-;14359:31;14381:8;14359:17;14372:3;14359:8;:12;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;:73;;;;;;14347:85;;14447:4;:9;;;14457:1;14460:9;14471:2;14485:1;14475:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14447:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14307:367;;;14567:39;14590:15;14567:18;14580:4;14567:8;:12;;:18;;;;:::i;:::-;:22;;:39;;;;:::i;:::-;14533:31;14555:8;14533:17;14546:3;14533:8;:12;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;:73;;;;;;14521:85;;14621:4;:9;;;14631;14642:1;14645:2;14659:1;14649:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14621:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14307:367;13738:943;;;;;;;;;;:::o;4493:138::-;4551:9;4596:1;4590;4586;:5;4582:9;;;4581:16;;4573:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:138;;;;:::o;10243:340::-;10362:12;10376:17;10405:5;10397:19;;7861:10;10440:12;;10454:2;10458:6;10417:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10397:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10361:105;;;;10485:7;:57;;;;;10512:1;10497:4;:11;:16;:44;;;;10528:4;10517:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10497:44;10485:57;10477:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10243:340;;;;;:::o;4639:155::-;4697:9;4732:1;4727;:6;:30;;;;4756:1;4751;4746;4742;:5;4738:9;;;4737:15;;;;;;:20;4727:30;4719:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4639:155;;;;:::o;4344:141::-;4402:9;4447:1;4441;4437;:5;4433:9;;;4432:16;;4424:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4344:141;;;;:::o
Swarm Source
ipfs://fba71288910f734cf1da8df09e436943eb37bf7bee29e1ce101bb5e45a11df89
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.