Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap | 14250241 | 1106 days ago | IN | 0.005 ETH | 0.00978829 | ||||
Swap | 14250205 | 1106 days ago | IN | 0.001 ETH | 0.0136761 | ||||
Transfer Ownersh... | 14249461 | 1106 days ago | IN | 0 ETH | 0.00203794 | ||||
Send Token | 14075745 | 1133 days ago | IN | 0 ETH | 0.00597135 | ||||
Set Router Addre... | 13968149 | 1149 days ago | IN | 0 ETH | 0.0025753 | ||||
Pay With Permit | 13895611 | 1161 days ago | IN | 0 ETH | 0.02874834 | ||||
Swap | 13861784 | 1166 days ago | IN | 0.1 ETH | 0.01003316 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TopBridge
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-21 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/topbridge.sol pragma solidity 0.8.4; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping(address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } abstract contract SignerRole is Context { using Roles for Roles.Role; event SignerAdded(address indexed account); event SignerRemoved(address indexed account); Roles.Role private _signers; constructor () { _addSigner(_msgSender()); } modifier onlySigner() { require(isSigner(_msgSender()), "SignerRole: caller does not have the Signer role"); _; } function isSigner(address account) public view returns (bool) { return _signers.has(account); } function addSigner(address account) public onlySigner { _addSigner(account); } function renounceSigner() public { _removeSigner(_msgSender()); } function _addSigner(address account) internal { _signers.add(account); emit SignerAdded(account); } function _removeSigner(address account) internal { _signers.remove(account); emit SignerRemoved(account); } } interface IUniswapV2Router { function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); } contract TopBridge is Ownable, SignerRole { using SafeMath for uint256; address stableTokenAddress; uint8 public decimals; address weth; address routerAddress; uint256 fee; uint256 MAX_UINT256 = ~uint256(0); mapping(bytes32 => bool) pays; constructor(address _stableAddr, address _weth, address _router, uint256 _fee) { stableTokenAddress = _stableAddr; decimals = IERC20Metadata(_stableAddr).decimals(); weth = _weth; routerAddress = _router; IERC20(_stableAddr).approve(_router, MAX_UINT256); fee = _fee; } function setFee(uint256 _fee) external onlyOwner { fee = _fee; } function setRouterAddress(address routerAddr) external onlyOwner { routerAddress = routerAddr; } function setStableToken(address tokenAddr) external onlyOwner { stableTokenAddress = tokenAddr; decimals = IERC20Metadata(tokenAddr).decimals(); } event REQ(address indexed _user, address indexed _sourceToken, address indexed _destToken, uint _amount, uint _toChain); event PAY(address indexed _user, address indexed _destToken, uint _amount, bytes32 _txhash, uint _fromChain); function isContract(address addr) internal view returns (bool) { uint size; assembly {size := extcodesize(addr)} return size > 0; } function swap(address[] calldata pairs, address destTokenAddr, uint value, uint toChain) payable external { require(isContract(msg.sender) == false, "Anti Bot"); uint len = pairs.length; address sourceTokenAddr = pairs[0]; require(pairs[len - 1] == stableTokenAddress, "No supported Path"); IERC20 sourceToken = IERC20(sourceTokenAddr); uint256 amount; if (msg.value > 0 && pairs[0] == weth && pairs[len - 1] == stableTokenAddress) { amount = msg.value; uint[] memory amounts = IUniswapV2Router(routerAddress).swapExactETHForTokens{value : amount}(0, pairs, address(this), block.timestamp.add(15 minutes)); emit REQ(msg.sender, weth, destTokenAddr, amounts[amounts.length - 1], toChain); } else { uint256 obalance = sourceToken.balanceOf(address(this)); if (sourceToken.transferFrom(msg.sender, address(this), value)) { amount = sourceToken.balanceOf(address(this)).sub(obalance); } if (sourceTokenAddr == stableTokenAddress) { emit REQ(msg.sender, sourceTokenAddr, destTokenAddr, amount, toChain); } else { sourceToken.approve(routerAddress, amount); uint[] memory amounts = IUniswapV2Router(routerAddress).swapExactTokensForTokens(amount, 0, pairs, address(this), block.timestamp.add(15 minutes)); emit REQ(msg.sender, sourceTokenAddr, destTokenAddr, amounts[1], toChain); } } } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { return keccak256( abi.encodePacked("\x19Ethereum Signed Message:\n32", hash) ); } function withdraw(uint256 amount) external onlyOwner { IERC20(stableTokenAddress).transfer(_msgSender(), amount); } function sendToken(IERC20 token, address to, uint256 amount) external onlyOwner { token.transfer(to, amount); } function sendEther(address payable to, uint256 amount) external onlyOwner { to.transfer(amount); } struct SigData { uint8 v; bytes32 r; bytes32 s; } function _payToAddress(address _user, uint256 amount, address[] calldata pairs) internal returns (uint256){ uint256 last = pairs.length - 1; if (pairs[last] != stableTokenAddress) { // IERC20(stableTokenAddress).approve(routerAddress, amount); if (pairs[last] != weth) { return IUniswapV2Router(routerAddress).swapExactTokensForTokens(amount, 0, pairs, _user, block.timestamp.add(15 minutes))[last]; } else { return IUniswapV2Router(routerAddress).swapExactTokensForETH(amount, 0, pairs, _user, block.timestamp.add(15 minutes))[last]; } } if (IERC20(pairs[last]).transfer(_user, amount)) { return amount; } return 0; } function payWithPermit( address _user, address _sourceToken, address[] calldata pairs, uint _amount, uint8 _decimals, uint256 _fromChain, uint256 _toChain, bytes32 _txhash, SigData calldata sig) external { require(block.chainid == _toChain, "ChainId"); require(isContract(msg.sender) != true, "Anti Bot"); require(pairs[0] == stableTokenAddress, "unsupported pair"); address _destToken = pairs[pairs.length - 1]; bytes32 hash = keccak256(abi.encodePacked(this, _user, _sourceToken, _destToken, _amount, _decimals, _fromChain, _toChain, _txhash)); require(pays[hash] != true, "Already Executed"); require(isSigner(ecrecover(toEthSignedMessageHash(hash), sig.v, sig.r, sig.s)), "Incorrect Signer"); uint256 _fee = 10 ** decimals; // $1 if (msg.sender != _user) { require(isSigner(msg.sender), "Anti Bot"); _fee += fee; } uint256 toSwapAmount = _amount.mul(10 ** decimals).div(10 ** _decimals); toSwapAmount = toSwapAmount.sub(_fee); pays[hash] = true; uint256 amount = _payToAddress(_user, toSwapAmount, pairs); require(amount > 0, "pay error"); emit PAY(_user, _destToken, amount, _txhash, _fromChain); } function getChainId() view public returns (uint256) { return block.chainid; } receive() external payable {} fallback() external payable {} } 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) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { 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) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_stableAddr","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_destToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_txhash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_fromChain","type":"uint256"}],"name":"PAY","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"address","name":"_sourceToken","type":"address"},{"indexed":true,"internalType":"address","name":"_destToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toChain","type":"uint256"}],"name":"REQ","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"SignerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"SignerRemoved","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_sourceToken","type":"address"},{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_fromChain","type":"uint256"},{"internalType":"uint256","name":"_toChain","type":"uint256"},{"internalType":"bytes32","name":"_txhash","type":"bytes32"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct TopBridge.SigData","name":"sig","type":"tuple"}],"name":"payWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"routerAddr","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"name":"setStableToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"pairs","type":"address[]"},{"internalType":"address","name":"destTokenAddr","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"toChain","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000196006553480156200001757600080fd5b5060405162002379380380620023798339810160408190526200003a9162000383565b6200004533620001bb565b62000050336200020b565b600280546001600160a01b0319166001600160a01b0386169081179091556040805163313ce56760e01b8152905163313ce56791600480820192602092909190829003018186803b158015620000a557600080fd5b505afa158015620000ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e09190620003fd565b6002805460ff92909216600160a01b0260ff60a01b19909216919091179055600380546001600160a01b038581166001600160a01b0319928316179092556004805485841692168217815560065460405163095ea7b360e01b81529182019290925260248101919091529085169063095ea7b390604401602060405180830381600087803b1580156200017257600080fd5b505af115801562000187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ad9190620003d4565b506005555062000420915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620002268160016200025d60201b620012ae1790919060201c565b6040516001600160a01b038216907f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2490600090a250565b620002698282620002e1565b15620002bc5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064015b60405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620003465760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401620002b3565b506001600160a01b03166000908152602091909152604090205460ff1690565b80516001600160a01b03811681146200037e57600080fd5b919050565b6000806000806080858703121562000399578384fd5b620003a48562000366565b9350620003b46020860162000366565b9250620003c46040860162000366565b6060959095015193969295505050565b600060208284031215620003e6578081fd5b81518015158114620003f6578182fd5b9392505050565b6000602082840312156200040f578081fd5b815160ff81168114620003f6578182fd5b611f4980620004306000396000f3fe6080604052600436106100eb5760003560e01c80637df73e2711610084578063db1bc87b11610056578063db1bc87b14610287578063e5c8b03d146102a7578063eb12d61e146102bc578063f2fde38b146102dc57005b80637df73e27146101ef5780638da5cb5b1461021f578063b6bb1ab314610247578063c1756a2c1461026757005b806334a68a08116100bd57806334a68a081461018757806341cb87fc1461019a57806369fe0e2d146101ba578063715018a6146101da57005b80632e1a7d4d146100f45780632fdcfbd214610114578063313ce567146101345780633408e4701461016c57005b366100f257005b005b34801561010057600080fd5b506100f261010f366004611beb565b6102fc565b34801561012057600080fd5b506100f261012f366004611bab565b6103c5565b34801561014057600080fd5b5060025461015590600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561017857600080fd5b50604051468152602001610163565b6100f2610195366004611a66565b610477565b3480156101a657600080fd5b506100f26101b5366004611963565b610b03565b3480156101c657600080fd5b506100f26101d5366004611beb565b610b4f565b3480156101e657600080fd5b506100f2610b7e565b3480156101fb57600080fd5b5061020f61020a366004611963565b610bb4565b6040519015158152602001610163565b34801561022b57600080fd5b506000546040516001600160a01b039091168152602001610163565b34801561025357600080fd5b506100f26102623660046119aa565b610bc7565b34801561027357600080fd5b506100f261028236600461197f565b61105b565b34801561029357600080fd5b506100f26102a2366004611963565b6110c0565b3480156102b357600080fd5b506100f2611193565b3480156102c857600080fd5b506100f26102d7366004611963565b61119c565b3480156102e857600080fd5b506100f26102f7366004611963565b611216565b6000546001600160a01b0316331461032f5760405162461bcd60e51b815260040161032690611cf4565b60405180910390fd5b6002546001600160a01b031663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c19190611b8b565b5050565b6000546001600160a01b031633146103ef5760405162461bcd60e51b815260040161032690611cf4565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561043957600080fd5b505af115801561044d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104719190611b8b565b50505050565b333b156104965760405162461bcd60e51b815260040161032690611cd2565b836000868282816104b757634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104cc9190611963565b6002549091506001600160a01b031687876104e8600186611eac565b81811061050557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061051a9190611963565b6001600160a01b0316146105645760405162461bcd60e51b815260206004820152601160248201527009cde40e6eae0e0dee4e8cac840a0c2e8d607b1b6044820152606401610326565b80600034158015906105bc57506003546001600160a01b0316898960008161059c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105b19190611963565b6001600160a01b0316145b801561061957506002546001600160a01b031689896105dc600188611eac565b8181106105f957634e487b7160e01b600052603260045260246000fd5b905060200201602081019061060e9190611963565b6001600160a01b0316145b15610751575060045434906000906001600160a01b0316637ff36ab583838d8d306106464261038461132a565b6040518763ffffffff1660e01b8152600401610666959493929190611c9b565b6000604051808303818588803b15801561067f57600080fd5b505af1158015610693573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526106bc9190810190611acb565b60035481519192506001600160a01b03808b169291169033907f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c90859061070590600190611eac565b8151811061072357634e487b7160e01b600052603260045260246000fd5b60200260200101518a604051610743929190918252602082015260400190565b60405180910390a450610af8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561079357600080fd5b505afa1580156107a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb9190611c03565b6040516323b872dd60e01b8152336004820152306024820152604481018990529091506001600160a01b038416906323b872dd90606401602060405180830381600087803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108549190611b8b565b156108df576040516370a0823160e01b81523060048201526108dc9082906001600160a01b038616906370a082319060240160206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611c03565b90611390565b91505b6002546001600160a01b03858116911614156109455760408051838152602081018890526001600160a01b03808b16929087169133917f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c910160405180910390a4610af6565b6004805460405163095ea7b360e01b81526001600160a01b03918216928101929092526024820184905284169063095ea7b390604401602060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611b8b565b506004546000906001600160a01b03166338ed173984838e8e306109f34261038461132a565b6040518763ffffffff1660e01b8152600401610a1496959493929190611d29565b600060405180830381600087803b158015610a2e57600080fd5b505af1158015610a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a6a9190810190611acb565b9050886001600160a01b0316856001600160a01b0316336001600160a01b03167f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c84600181518110610acc57634e487b7160e01b600052603260045260246000fd5b60200260200101518b604051610aec929190918252602082015260400190565b60405180910390a4505b505b505050505050505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260040161032690611cf4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b795760405162461bcd60e51b815260040161032690611cf4565b600555565b6000546001600160a01b03163314610ba85760405162461bcd60e51b815260040161032690611cf4565b610bb260006113f6565b565b6000610bc1600183611446565b92915050565b824614610c005760405162461bcd60e51b815260206004820152600760248201526610da185a5b925960ca1b6044820152606401610326565b6001333b15151415610c245760405162461bcd60e51b815260040161032690611cd2565b6002546001600160a01b03168888600081610c4f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610c649190611963565b6001600160a01b031614610cad5760405162461bcd60e51b815260206004820152601060248201526f3ab739bab83837b93a32b2103830b4b960811b6044820152606401610326565b60008888610cbc600182611eac565b818110610cd957634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cee9190611963565b6040516bffffffffffffffffffffffff1930606090811b821660208401528e811b821660348401528d811b8216604884015283901b16605c820152607081018990526001600160f81b031960f889901b1660908201526091810187905260b1810186905260d1810185905290915060009060f10160408051601f1981840301815291815281516020928301206000818152600790935291205490915060ff16151560011415610dd25760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48115e1958dd5d195960821b6044820152606401610326565b610e9e6001610e2e836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b610e3b6020870187611c1b565b604080516000815260208181018084529490945260ff9092168282015291870135606082015290860135608082015260a0016020604051602081039080840390855afa158015610e8f573d6000803e3d6000fd5b50505060206040510351610bb4565b610edd5760405162461bcd60e51b815260206004820152601060248201526f24b731b7b93932b1ba1029b4b3b732b960811b6044820152606401610326565b600254600090610ef890600160a01b900460ff16600a611de2565b9050336001600160a01b038e1614610f3f57610f1333610bb4565b610f2f5760405162461bcd60e51b815260040161032690611cd2565b600554610f3c9082611d67565b90505b6000610f78610f4f8a600a611de2565b600254610f7290610f6b90600160a01b900460ff16600a611de2565b8d906114c9565b90611548565b9050610f848183611390565b6000848152600760205260408120805460ff19166001179055909150610fac8f838f8f6115a5565b905060008111610fea5760405162461bcd60e51b81526020600482015260096024820152683830bc9032b93937b960b91b6044820152606401610326565b846001600160a01b03168f6001600160a01b03167f1f5bc37fa3308bd4e8e6dc511400463f90f9b0352307ac8af52ca1a9e0cbcab6838a8d604051611042939291909283526020830191909152604082015260600190565b60405180910390a3505050505050505050505050505050565b6000546001600160a01b031633146110855760405162461bcd60e51b815260040161032690611cf4565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156110bb573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110ea5760405162461bcd60e51b815260040161032690611cf4565b600280546001600160a01b0319166001600160a01b0383169081179091556040805163313ce56760e01b8152905163313ce56791600480820192602092909190829003018186803b15801561113e57600080fd5b505afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611c37565b600260146101000a81548160ff021916908360ff16021790555050565b610bb233611813565b6111a533610bb4565b61120a5760405162461bcd60e51b815260206004820152603060248201527f5369676e6572526f6c653a2063616c6c657220646f6573206e6f74206861766560448201526f20746865205369676e657220726f6c6560801b6064820152608401610326565b61121381611855565b50565b6000546001600160a01b031633146112405760405162461bcd60e51b815260040161032690611cf4565b6001600160a01b0381166112a55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610326565b611213816113f6565b6112b88282611446565b156113055760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610326565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000806113378385611d67565b9050838110156113895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610326565b9392505050565b6000828211156113e25760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610326565b60006113ee8385611eac565b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382166114a95760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610326565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000826114d857506000610bc1565b60006114e48385611e8d565b9050826114f18583611d7f565b146113895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610326565b60008082116115995760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610326565b60006113ee8385611d7f565b6000806115b3600184611eac565b6002549091506001600160a01b03168484838181106115e257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f79190611963565b6001600160a01b031614611740576003546001600160a01b031684848381811061163157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116469190611963565b6001600160a01b03161461171d576004546001600160a01b03166338ed173986600087878b6116774261038461132a565b6040518763ffffffff1660e01b815260040161169896959493929190611d29565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116ee9190810190611acb565b818151811061170d57634e487b7160e01b600052603260045260246000fd5b60200260200101519150506113ee565b6004546001600160a01b03166318cbafe586600087878b6116774261038461132a565b83838281811061176057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117759190611963565b60405163a9059cbb60e01b81526001600160a01b03888116600483015260248201889052919091169063a9059cbb90604401602060405180830381600087803b1580156117c157600080fd5b505af11580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190611b8b565b1561180757849150506113ee565b50600095945050505050565b61181e600182611897565b6040516001600160a01b038216907f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b90600090a250565b6118606001826112ae565b6040516001600160a01b038216907f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2490600090a250565b6118a18282611446565b6118f75760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610326565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008083601f84011261192a578081fd5b50813567ffffffffffffffff811115611941578182fd5b6020830191508360208260051b850101111561195c57600080fd5b9250929050565b600060208284031215611974578081fd5b813561138981611eef565b60008060408385031215611991578081fd5b823561199c81611eef565b946020939093013593505050565b6000806000806000806000806000808a8c036101608112156119ca578687fd5b8b356119d581611eef565b9a5060208c01356119e581611eef565b995060408c013567ffffffffffffffff811115611a00578788fd5b611a0c8e828f01611919565b909a5098505060608c0135965060808c0135611a2781611f04565b955060a08c0135945060c08c0135935060e08c01359250606060ff1982011215611a4f578182fd5b506101008b0190509295989b9194979a5092959850565b600080600080600060808688031215611a7d578081fd5b853567ffffffffffffffff811115611a93578182fd5b611a9f88828901611919565b9096509450506020860135611ab381611eef565b94979396509394604081013594506060013592915050565b60006020808385031215611add578182fd5b825167ffffffffffffffff80821115611af4578384fd5b818501915085601f830112611b07578384fd5b815181811115611b1957611b19611ed9565b8060051b604051601f19603f83011681018181108582111715611b3e57611b3e611ed9565b604052828152858101935084860182860187018a1015611b5c578788fd5b8795505b83861015611b7e578051855260019590950194938601938601611b60565b5098975050505050505050565b600060208284031215611b9c578081fd5b81518015158114611389578182fd5b600080600060608486031215611bbf578283fd5b8335611bca81611eef565b92506020840135611bda81611eef565b929592945050506040919091013590565b600060208284031215611bfc578081fd5b5035919050565b600060208284031215611c14578081fd5b5051919050565b600060208284031215611c2c578081fd5b813561138981611f04565b600060208284031215611c48578081fd5b815161138981611f04565b81835260006020808501945082825b85811015611c90578135611c7581611eef565b6001600160a01b031687529582019590820190600101611c62565b509495945050505050565b858152608060208201526000611cb5608083018688611c53565b6001600160a01b0394909416604083015250606001529392505050565b602080825260089082015267105b9d1a48109bdd60c21b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b86815285602082015260a060408201526000611d4960a083018688611c53565b6001600160a01b039490941660608301525060800152949350505050565b60008219821115611d7a57611d7a611ec3565b500190565b600082611d9a57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611dda578160001904821115611dc057611dc0611ec3565b80851615611dcd57918102915b93841c9390800290611da4565b509250929050565b600061138960ff841683600082611dfb57506001610bc1565b81611e0857506000610bc1565b8160018114611e1e5760028114611e2857611e44565b6001915050610bc1565b60ff841115611e3957611e39611ec3565b50506001821b610bc1565b5060208310610133831016604e8410600b8410161715611e67575081810a610bc1565b611e718383611d9f565b8060001904821115611e8557611e85611ec3565b029392505050565b6000816000190483118215151615611ea757611ea7611ec3565b500290565b600082821015611ebe57611ebe611ec3565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461121357600080fd5b60ff8116811461121357600080fdfea2646970667358221220a6b17f594906ef8658d9a2e535e54399e5a7c2aa42bcb5f99695fdbbf504ffcb64736f6c63430008040033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000004c4b400
Deployed Bytecode
0x6080604052600436106100eb5760003560e01c80637df73e2711610084578063db1bc87b11610056578063db1bc87b14610287578063e5c8b03d146102a7578063eb12d61e146102bc578063f2fde38b146102dc57005b80637df73e27146101ef5780638da5cb5b1461021f578063b6bb1ab314610247578063c1756a2c1461026757005b806334a68a08116100bd57806334a68a081461018757806341cb87fc1461019a57806369fe0e2d146101ba578063715018a6146101da57005b80632e1a7d4d146100f45780632fdcfbd214610114578063313ce567146101345780633408e4701461016c57005b366100f257005b005b34801561010057600080fd5b506100f261010f366004611beb565b6102fc565b34801561012057600080fd5b506100f261012f366004611bab565b6103c5565b34801561014057600080fd5b5060025461015590600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561017857600080fd5b50604051468152602001610163565b6100f2610195366004611a66565b610477565b3480156101a657600080fd5b506100f26101b5366004611963565b610b03565b3480156101c657600080fd5b506100f26101d5366004611beb565b610b4f565b3480156101e657600080fd5b506100f2610b7e565b3480156101fb57600080fd5b5061020f61020a366004611963565b610bb4565b6040519015158152602001610163565b34801561022b57600080fd5b506000546040516001600160a01b039091168152602001610163565b34801561025357600080fd5b506100f26102623660046119aa565b610bc7565b34801561027357600080fd5b506100f261028236600461197f565b61105b565b34801561029357600080fd5b506100f26102a2366004611963565b6110c0565b3480156102b357600080fd5b506100f2611193565b3480156102c857600080fd5b506100f26102d7366004611963565b61119c565b3480156102e857600080fd5b506100f26102f7366004611963565b611216565b6000546001600160a01b0316331461032f5760405162461bcd60e51b815260040161032690611cf4565b60405180910390fd5b6002546001600160a01b031663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561038957600080fd5b505af115801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c19190611b8b565b5050565b6000546001600160a01b031633146103ef5760405162461bcd60e51b815260040161032690611cf4565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561043957600080fd5b505af115801561044d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104719190611b8b565b50505050565b333b156104965760405162461bcd60e51b815260040161032690611cd2565b836000868282816104b757634e487b7160e01b600052603260045260246000fd5b90506020020160208101906104cc9190611963565b6002549091506001600160a01b031687876104e8600186611eac565b81811061050557634e487b7160e01b600052603260045260246000fd5b905060200201602081019061051a9190611963565b6001600160a01b0316146105645760405162461bcd60e51b815260206004820152601160248201527009cde40e6eae0e0dee4e8cac840a0c2e8d607b1b6044820152606401610326565b80600034158015906105bc57506003546001600160a01b0316898960008161059c57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906105b19190611963565b6001600160a01b0316145b801561061957506002546001600160a01b031689896105dc600188611eac565b8181106105f957634e487b7160e01b600052603260045260246000fd5b905060200201602081019061060e9190611963565b6001600160a01b0316145b15610751575060045434906000906001600160a01b0316637ff36ab583838d8d306106464261038461132a565b6040518763ffffffff1660e01b8152600401610666959493929190611c9b565b6000604051808303818588803b15801561067f57600080fd5b505af1158015610693573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526106bc9190810190611acb565b60035481519192506001600160a01b03808b169291169033907f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c90859061070590600190611eac565b8151811061072357634e487b7160e01b600052603260045260246000fd5b60200260200101518a604051610743929190918252602082015260400190565b60405180910390a450610af8565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561079357600080fd5b505afa1580156107a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cb9190611c03565b6040516323b872dd60e01b8152336004820152306024820152604481018990529091506001600160a01b038416906323b872dd90606401602060405180830381600087803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108549190611b8b565b156108df576040516370a0823160e01b81523060048201526108dc9082906001600160a01b038616906370a082319060240160206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611c03565b90611390565b91505b6002546001600160a01b03858116911614156109455760408051838152602081018890526001600160a01b03808b16929087169133917f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c910160405180910390a4610af6565b6004805460405163095ea7b360e01b81526001600160a01b03918216928101929092526024820184905284169063095ea7b390604401602060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109cd9190611b8b565b506004546000906001600160a01b03166338ed173984838e8e306109f34261038461132a565b6040518763ffffffff1660e01b8152600401610a1496959493929190611d29565b600060405180830381600087803b158015610a2e57600080fd5b505af1158015610a42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a6a9190810190611acb565b9050886001600160a01b0316856001600160a01b0316336001600160a01b03167f12ec4dd0f8056f8fd7209640fc26bcdd90f88931164ca962320525d00288719c84600181518110610acc57634e487b7160e01b600052603260045260246000fd5b60200260200101518b604051610aec929190918252602082015260400190565b60405180910390a4505b505b505050505050505050565b6000546001600160a01b03163314610b2d5760405162461bcd60e51b815260040161032690611cf4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610b795760405162461bcd60e51b815260040161032690611cf4565b600555565b6000546001600160a01b03163314610ba85760405162461bcd60e51b815260040161032690611cf4565b610bb260006113f6565b565b6000610bc1600183611446565b92915050565b824614610c005760405162461bcd60e51b815260206004820152600760248201526610da185a5b925960ca1b6044820152606401610326565b6001333b15151415610c245760405162461bcd60e51b815260040161032690611cd2565b6002546001600160a01b03168888600081610c4f57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610c649190611963565b6001600160a01b031614610cad5760405162461bcd60e51b815260206004820152601060248201526f3ab739bab83837b93a32b2103830b4b960811b6044820152606401610326565b60008888610cbc600182611eac565b818110610cd957634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cee9190611963565b6040516bffffffffffffffffffffffff1930606090811b821660208401528e811b821660348401528d811b8216604884015283901b16605c820152607081018990526001600160f81b031960f889901b1660908201526091810187905260b1810186905260d1810185905290915060009060f10160408051601f1981840301815291815281516020928301206000818152600790935291205490915060ff16151560011415610dd25760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48115e1958dd5d195960821b6044820152606401610326565b610e9e6001610e2e836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b610e3b6020870187611c1b565b604080516000815260208181018084529490945260ff9092168282015291870135606082015290860135608082015260a0016020604051602081039080840390855afa158015610e8f573d6000803e3d6000fd5b50505060206040510351610bb4565b610edd5760405162461bcd60e51b815260206004820152601060248201526f24b731b7b93932b1ba1029b4b3b732b960811b6044820152606401610326565b600254600090610ef890600160a01b900460ff16600a611de2565b9050336001600160a01b038e1614610f3f57610f1333610bb4565b610f2f5760405162461bcd60e51b815260040161032690611cd2565b600554610f3c9082611d67565b90505b6000610f78610f4f8a600a611de2565b600254610f7290610f6b90600160a01b900460ff16600a611de2565b8d906114c9565b90611548565b9050610f848183611390565b6000848152600760205260408120805460ff19166001179055909150610fac8f838f8f6115a5565b905060008111610fea5760405162461bcd60e51b81526020600482015260096024820152683830bc9032b93937b960b91b6044820152606401610326565b846001600160a01b03168f6001600160a01b03167f1f5bc37fa3308bd4e8e6dc511400463f90f9b0352307ac8af52ca1a9e0cbcab6838a8d604051611042939291909283526020830191909152604082015260600190565b60405180910390a3505050505050505050505050505050565b6000546001600160a01b031633146110855760405162461bcd60e51b815260040161032690611cf4565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156110bb573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110ea5760405162461bcd60e51b815260040161032690611cf4565b600280546001600160a01b0319166001600160a01b0383169081179091556040805163313ce56760e01b8152905163313ce56791600480820192602092909190829003018186803b15801561113e57600080fd5b505afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190611c37565b600260146101000a81548160ff021916908360ff16021790555050565b610bb233611813565b6111a533610bb4565b61120a5760405162461bcd60e51b815260206004820152603060248201527f5369676e6572526f6c653a2063616c6c657220646f6573206e6f74206861766560448201526f20746865205369676e657220726f6c6560801b6064820152608401610326565b61121381611855565b50565b6000546001600160a01b031633146112405760405162461bcd60e51b815260040161032690611cf4565b6001600160a01b0381166112a55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610326565b611213816113f6565b6112b88282611446565b156113055760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c65006044820152606401610326565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000806113378385611d67565b9050838110156113895760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610326565b9392505050565b6000828211156113e25760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610326565b60006113ee8385611eac565b949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382166114a95760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b6064820152608401610326565b506001600160a01b03166000908152602091909152604090205460ff1690565b6000826114d857506000610bc1565b60006114e48385611e8d565b9050826114f18583611d7f565b146113895760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610326565b60008082116115995760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610326565b60006113ee8385611d7f565b6000806115b3600184611eac565b6002549091506001600160a01b03168484838181106115e257634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f79190611963565b6001600160a01b031614611740576003546001600160a01b031684848381811061163157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116469190611963565b6001600160a01b03161461171d576004546001600160a01b03166338ed173986600087878b6116774261038461132a565b6040518763ffffffff1660e01b815260040161169896959493929190611d29565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116ee9190810190611acb565b818151811061170d57634e487b7160e01b600052603260045260246000fd5b60200260200101519150506113ee565b6004546001600160a01b03166318cbafe586600087878b6116774261038461132a565b83838281811061176057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117759190611963565b60405163a9059cbb60e01b81526001600160a01b03888116600483015260248201889052919091169063a9059cbb90604401602060405180830381600087803b1580156117c157600080fd5b505af11580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190611b8b565b1561180757849150506113ee565b50600095945050505050565b61181e600182611897565b6040516001600160a01b038216907f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b90600090a250565b6118606001826112ae565b6040516001600160a01b038216907f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f2490600090a250565b6118a18282611446565b6118f75760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b6064820152608401610326565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60008083601f84011261192a578081fd5b50813567ffffffffffffffff811115611941578182fd5b6020830191508360208260051b850101111561195c57600080fd5b9250929050565b600060208284031215611974578081fd5b813561138981611eef565b60008060408385031215611991578081fd5b823561199c81611eef565b946020939093013593505050565b6000806000806000806000806000808a8c036101608112156119ca578687fd5b8b356119d581611eef565b9a5060208c01356119e581611eef565b995060408c013567ffffffffffffffff811115611a00578788fd5b611a0c8e828f01611919565b909a5098505060608c0135965060808c0135611a2781611f04565b955060a08c0135945060c08c0135935060e08c01359250606060ff1982011215611a4f578182fd5b506101008b0190509295989b9194979a5092959850565b600080600080600060808688031215611a7d578081fd5b853567ffffffffffffffff811115611a93578182fd5b611a9f88828901611919565b9096509450506020860135611ab381611eef565b94979396509394604081013594506060013592915050565b60006020808385031215611add578182fd5b825167ffffffffffffffff80821115611af4578384fd5b818501915085601f830112611b07578384fd5b815181811115611b1957611b19611ed9565b8060051b604051601f19603f83011681018181108582111715611b3e57611b3e611ed9565b604052828152858101935084860182860187018a1015611b5c578788fd5b8795505b83861015611b7e578051855260019590950194938601938601611b60565b5098975050505050505050565b600060208284031215611b9c578081fd5b81518015158114611389578182fd5b600080600060608486031215611bbf578283fd5b8335611bca81611eef565b92506020840135611bda81611eef565b929592945050506040919091013590565b600060208284031215611bfc578081fd5b5035919050565b600060208284031215611c14578081fd5b5051919050565b600060208284031215611c2c578081fd5b813561138981611f04565b600060208284031215611c48578081fd5b815161138981611f04565b81835260006020808501945082825b85811015611c90578135611c7581611eef565b6001600160a01b031687529582019590820190600101611c62565b509495945050505050565b858152608060208201526000611cb5608083018688611c53565b6001600160a01b0394909416604083015250606001529392505050565b602080825260089082015267105b9d1a48109bdd60c21b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b86815285602082015260a060408201526000611d4960a083018688611c53565b6001600160a01b039490941660608301525060800152949350505050565b60008219821115611d7a57611d7a611ec3565b500190565b600082611d9a57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115611dda578160001904821115611dc057611dc0611ec3565b80851615611dcd57918102915b93841c9390800290611da4565b509250929050565b600061138960ff841683600082611dfb57506001610bc1565b81611e0857506000610bc1565b8160018114611e1e5760028114611e2857611e44565b6001915050610bc1565b60ff841115611e3957611e39611ec3565b50506001821b610bc1565b5060208310610133831016604e8410600b8410161715611e67575081810a610bc1565b611e718383611d9f565b8060001904821115611e8557611e85611ec3565b029392505050565b6000816000190483118215151615611ea757611ea7611ec3565b500290565b600082821015611ebe57611ebe611ec3565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461121357600080fd5b60ff8116811461121357600080fdfea2646970667358221220a6b17f594906ef8658d9a2e535e54399e5a7c2aa42bcb5f99695fdbbf504ffcb64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000000000000000000000000000000000004c4b400
-----Decoded View---------------
Arg [0] : _stableAddr (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [3] : _fee (uint256): 80000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [3] : 0000000000000000000000000000000000000000000000000000000004c4b400
Deployed Bytecode Sourcemap
10237:6037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13446:129;;;;;;;;;;-1:-1:-1;13446:129:0;;;;;:::i;:::-;;:::i;13583:125::-;;;;;;;;;;-1:-1:-1;13583:125:0;;;;;:::i;:::-;;:::i;10354:21::-;;;;;;;;;;-1:-1:-1;10354:21:0;;;;-1:-1:-1;;;10354:21:0;;;;;;;;;17489:4:1;17477:17;;;17459:36;;17447:2;17432:18;10354:21:0;;;;;;;;16103:91;;;;;;;;;;-1:-1:-1;16103:91:0;;16173:13;16090:25:1;;16078:2;16063:18;16103:91:0;16045:76:1;11660:1568:0;;;;;;:::i;:::-;;:::i;10951:110::-;;;;;;;;;;-1:-1:-1;10951:110:0;;;;;:::i;:::-;;:::i;10865:78::-;;;;;;;;;;-1:-1:-1;10865:78:0;;;;;:::i;:::-;;:::i;6237:103::-;;;;;;;;;;;;;:::i;8542:109::-;;;;;;;;;;-1:-1:-1;8542:109:0;;;;;:::i;:::-;;:::i;:::-;;;8761:14:1;;8754:22;8736:41;;8724:2;8709:18;8542:109:0;8691:92:1;5586:87:0;;;;;;;;;;-1:-1:-1;5632:7:0;5659:6;5586:87;;-1:-1:-1;;;;;5659:6:0;;;7875:51:1;;7863:2;7848:18;5586:87:0;7830:102:1;14722:1373:0;;;;;;;;;;-1:-1:-1;14722:1373:0;;;;;:::i;:::-;;:::i;13716:112::-;;;;;;;;;;-1:-1:-1;13716:112:0;;;;;:::i;:::-;;:::i;11069:169::-;;;;;;;;;;-1:-1:-1;11069:169:0;;;;;:::i;:::-;;:::i;8759:79::-;;;;;;;;;;;;;:::i;8659:92::-;;;;;;;;;;-1:-1:-1;8659:92:0;;;;;:::i;:::-;;:::i;6495:201::-;;;;;;;;;;-1:-1:-1;6495:201:0;;;;;:::i;:::-;;:::i;13446:129::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;;;;;;;;;13517:18:::1;::::0;-1:-1:-1;;;;;13517:18:0::1;13510:35;4390:10:::0;13510:57:::1;::::0;-1:-1:-1;;;;;;13510:57:0::1;::::0;;;;;;-1:-1:-1;;;;;8509:32:1;;;13510:57:0::1;::::0;::::1;8491:51:1::0;8558:18;;;8551:34;;;8464:18;;13510:57:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13446:129:::0;:::o;13583:125::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;13674:26:::1;::::0;-1:-1:-1;;;13674:26:0;;-1:-1:-1;;;;;8509:32:1;;;13674:26:0::1;::::0;::::1;8491:51:1::0;8558:18;;;8551:34;;;13674:14:0;::::1;::::0;::::1;::::0;8464:18:1;;13674:26:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13583:125:::0;;;:::o;11660:1568::-;11796:10;11601:17;11636:8;11777:52;;;;-1:-1:-1;;;11777:52:0;;;;;;;:::i;:::-;11851:5;11840:8;11851:5;;11840:8;11900;;;-1:-1:-1;;;11900:8:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11945:18;;11874:34;;-1:-1:-1;;;;;;11945:18:0;11927:5;;11933:7;11945:18;11933:3;:7;:::i;:::-;11927:14;;;;;-1:-1:-1;;;11927:14:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11927:36:0;;11919:66;;;;-1:-1:-1;;;11919:66:0;;10702:2:1;11919:66:0;;;10684:21:1;10741:2;10721:18;;;10714:30;-1:-1:-1;;;10760:18:1;;;10753:47;10817:18;;11919:66:0;10674:167:1;11919:66:0;12024:15;11996:18;12080:9;:13;;;;:33;;-1:-1:-1;12109:4:0;;-1:-1:-1;;;;;12109:4:0;12097:5;;12109:4;12097:8;;;-1:-1:-1;;;12097:8:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12097:16:0;;12080:33;:73;;;;-1:-1:-1;12135:18:0;;-1:-1:-1;;;;;12135:18:0;12117:5;;12123:7;12135:18;12123:3;:7;:::i;:::-;12117:14;;;;;-1:-1:-1;;;12117:14:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12117:36:0;;12080:73;12076:1145;;;-1:-1:-1;12244:13:0;;12179:9;;12203:21;;-1:-1:-1;;;;;12244:13:0;12227:53;12179:9;12203:21;12300:5;;12315:4;12322:31;:15;12342:10;12322:19;:31::i;:::-;12227:127;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12227:127:0;;;;;;;;;;;;:::i;:::-;12390:4;;12419:14;;12203:151;;-1:-1:-1;;;;;;12374:74:0;;;;12390:4;;;12378:10;;12374:74;;12203:151;;12419:18;;12390:4;;12419:18;:::i;:::-;12411:27;;;;;;-1:-1:-1;;;12411:27:0;;;;;;;;;;;;;;;12440:7;12374:74;;;;;;17238:25:1;;;17294:2;17279:18;;17272:34;17226:2;17211:18;;17193:119;12374:74:0;;;;;;;;12076:1145;;;;12500:36;;-1:-1:-1;;;12500:36:0;;12530:4;12500:36;;;7875:51:1;12481:16:0;;-1:-1:-1;;;;;12500:21:0;;;;;7848:18:1;;12500:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12555:58;;-1:-1:-1;;;12555:58:0;;12580:10;12555:58;;;8177:34:1;12600:4:0;8227:18:1;;;8220:43;8279:18;;;8272:34;;;12481:55:0;;-1:-1:-1;;;;;;12555:24:0;;;;;8112:18:1;;12555:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12551:158;;;12643:36;;-1:-1:-1;;;12643:36:0;;12673:4;12643:36;;;7875:51:1;12643:50:0;;12684:8;;-1:-1:-1;;;;;12643:21:0;;;;;7848:18:1;;12643:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;:50::i;:::-;12634:59;;12551:158;12746:18;;-1:-1:-1;;;;;12727:37:0;;;12746:18;;12727:37;12723:487;;;12790:64;;;17238:25:1;;;17294:2;17279:18;;17272:34;;;-1:-1:-1;;;;;12790:64:0;;;;;;;;12794:10;;12790:64;;17211:18:1;12790:64:0;;;;;;;12723:487;;;12915:13;;;12895:42;;-1:-1:-1;;;12895:42:0;;-1:-1:-1;;;;;12915:13:0;;;12895:42;;;8491:51:1;;;;8558:18;;;8551:34;;;12895:19:0;;;;;8464:18:1;;12895:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12997:13:0;;12956:21;;-1:-1:-1;;;;;12997:13:0;12980:56;13037:6;12956:21;13048:5;;13063:4;13070:31;:15;13090:10;13070:19;:31::i;:::-;12980:122;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12980:122:0;;;;;;;;;;;;:::i;:::-;12956:146;;13159:13;-1:-1:-1;;;;;13126:68:0;13142:15;-1:-1:-1;;;;;13126:68:0;13130:10;-1:-1:-1;;;;;13126:68:0;;13174:7;13182:1;13174:10;;;;;;-1:-1:-1;;;13174:10:0;;;;;;;;;;;;;;;13186:7;13126:68;;;;;;17238:25:1;;;17294:2;17279:18;;17272:34;17226:2;17211:18;;17193:119;13126:68:0;;;;;;;;12723:487;;12076:1145;;11660:1568;;;;;;;;;:::o;10951:110::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;11027:13:::1;:26:::0;;-1:-1:-1;;;;;;11027:26:0::1;-1:-1:-1::0;;;;;11027:26:0;;;::::1;::::0;;;::::1;::::0;;10951:110::o;10865:78::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;10925:3:::1;:10:::0;10865:78::o;6237:103::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;6302:30:::1;6329:1;6302:18;:30::i;:::-;6237:103::o:0;8542:109::-;8598:4;8622:21;:8;8635:7;8622:12;:21::i;:::-;8615:28;8542:109;-1:-1:-1;;8542:109:0:o;14722:1373::-;15048:8;15031:13;:25;15023:45;;;;-1:-1:-1;;;15023:45:0;;15811:2:1;15023:45:0;;;15793:21:1;15850:1;15830:18;;;15823:29;-1:-1:-1;;;15868:18:1;;;15861:37;15915:18;;15023:45:0;15783:156:1;15023:45:0;15113:4;15098:10;11601:17;11636:8;;15087:30;;15079:51;;;;-1:-1:-1;;;15079:51:0;;;;;;;:::i;:::-;15161:18;;-1:-1:-1;;;;;15161:18:0;15149:5;;15161:18;15149:8;;;-1:-1:-1;;;15149:8:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15149:30:0;;15141:59;;;;-1:-1:-1;;;15141:59:0;;15466:2:1;15141:59:0;;;15448:21:1;15505:2;15485:18;;;15478:30;-1:-1:-1;;;15524:18:1;;;15517:46;15580:18;;15141:59:0;15438:166:1;15141:59:0;15211:18;15232:5;;15238:16;15253:1;15232:5;15238:16;:::i;:::-;15232:23;;;;;-1:-1:-1;;;15232:23:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15291:106;;-1:-1:-1;;15308:4:0;6903:2:1;6899:15;;;6895:24;;15291:106:0;;;6883:37:1;6954:15;;;6950:24;;6936:12;;;6929:46;7009:15;;;7005:24;;6991:12;;;6984:46;7064:15;;;7060:24;7046:12;;;7039:46;7101:12;;;7094:28;;;-1:-1:-1;;;;;;7179:3:1;7157:16;;;7153:36;7138:13;;;7131:59;7206:13;;;7199:29;;;7244:13;;;7237:29;;;7282:13;;;7275:29;;;15211:44:0;;-1:-1:-1;15266:12:0;;7320:13:1;;15291:106:0;;;-1:-1:-1;;15291:106:0;;;;;;;;;15281:117;;15291:106;15281:117;;;;15417:10;;;;:4;:10;;;;;;15281:117;;-1:-1:-1;15417:10:0;;:18;;:10;:18;;15409:47;;;;-1:-1:-1;;;15409:47:0;;12454:2:1;15409:47:0;;;12436:21:1;12493:2;12473:18;;;12466:30;-1:-1:-1;;;12512:18:1;;;12505:46;12568:18;;15409:47:0;12426:166:1;15409:47:0;15475:70;15484:60;15494:28;15517:4;13361:58;;7586:66:1;13361:58:0;;;7574:79:1;7669:12;;;7662:28;;;13305:7:0;;7706:12:1;;13361:58:0;;;;;;;;;;;;13337:93;;;;;;13330:100;;13236:202;;;;15494:28;15524:5;;;;:3;:5;:::i;:::-;15538;15484:60;;;;;15531:5;15484:60;;;;;;9015:25:1;;;;9088:4;9076:17;;;9056:18;;;9049:45;15531:5:0;;;;9110:18:1;;;9103:34;15538:5:0;;;;9153:18:1;;;9146:34;8987:19;;15484:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:8;:70::i;:::-;15467:99;;;;-1:-1:-1;;;15467:99:0;;14784:2:1;15467:99:0;;;14766:21:1;14823:2;14803:18;;;14796:30;-1:-1:-1;;;14842:18:1;;;14835:46;14898:18;;15467:99:0;14756:166:1;15467:99:0;15598:8;;15577:12;;15592:14;;-1:-1:-1;;;15598:8:0;;;;15592:2;:14;:::i;:::-;15577:29;-1:-1:-1;15636:10:0;-1:-1:-1;;;;;15636:19:0;;;15632:119;;15680:20;15689:10;15680:8;:20::i;:::-;15672:41;;;;-1:-1:-1;;;15672:41:0;;;;;;;:::i;:::-;15736:3;;15728:11;;;;:::i;:::-;;;15632:119;15761:20;15784:48;15816:15;15822:9;15816:2;:15;:::i;:::-;15802:8;;15784:27;;15796:14;;-1:-1:-1;;;15802:8:0;;;;15796:2;:14;:::i;:::-;15784:7;;:11;:27::i;:::-;:31;;:48::i;:::-;15761:71;-1:-1:-1;15858:22:0;15761:71;15875:4;15858:16;:22::i;:::-;15891:10;;;;:4;:10;;;;;:17;;-1:-1:-1;;15891:17:0;15904:4;15891:17;;;15843:37;;-1:-1:-1;15936:41:0;15950:5;15843:37;15971:5;;15936:13;:41::i;:::-;15919:58;;16005:1;15996:6;:10;15988:32;;;;-1:-1:-1;;;15988:32:0;;15129:2:1;15988:32:0;;;15111:21:1;15168:1;15148:18;;;15141:29;-1:-1:-1;;;15186:18:1;;;15179:39;15235:18;;15988:32:0;15101:158:1;15988:32:0;16047:10;-1:-1:-1;;;;;16036:51:0;16040:5;-1:-1:-1;;;;;16036:51:0;;16059:6;16067:7;16076:10;16036:51;;;;;;;16328:25:1;;;16384:2;16369:18;;16362:34;;;;16427:2;16412:18;;16405:34;16316:2;16301:18;;16283:162;16036:51:0;;;;;;;;14722:1373;;;;;;;;;;;;;;;:::o;13716:112::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;13801:19:::1;::::0;-1:-1:-1;;;;;13801:11:0;::::1;::::0;:19;::::1;;;::::0;13813:6;;13801:19:::1;::::0;;;13813:6;13801:11;:19;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13716:112:::0;;:::o;11069:169::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;11142:18:::1;:30:::0;;-1:-1:-1;;;;;;11142:30:0::1;-1:-1:-1::0;;;;;11142:30:0;::::1;::::0;;::::1;::::0;;;11194:36:::1;::::0;;-1:-1:-1;;;11194:36:0;;;;:34:::1;::::0;:36:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;11142:30;11194:36;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11183:8;;:47;;;;;;;;;;;;;;;;;;11069:169:::0;:::o;8759:79::-;8803:27;4390:10;8803:13;:27::i;8659:92::-;8439:22;4390:10;8542:109;:::i;8439:22::-;8431:83;;;;-1:-1:-1;;;8431:83:0;;14367:2:1;8431:83:0;;;14349:21:1;14406:2;14386:18;;;14379:30;14445:34;14425:18;;;14418:62;-1:-1:-1;;;14496:18:1;;;14489:46;14552:19;;8431:83:0;14339:238:1;8431:83:0;8724:19:::1;8735:7;8724:10;:19::i;:::-;8659:92:::0;:::o;6495:201::-;5632:7;5659:6;-1:-1:-1;;;;;5659:6:0;4390:10;5806:23;5798:68;;;;-1:-1:-1;;;5798:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6584:22:0;::::1;6576:73;;;::::0;-1:-1:-1;;;6576:73:0;;10295:2:1;6576:73:0::1;::::0;::::1;10277:21:1::0;10334:2;10314:18;;;10307:30;10373:34;10353:18;;;10346:62;-1:-1:-1;;;10424:18:1;;;10417:36;10470:19;;6576:73:0::1;10267:228:1::0;6576:73:0::1;6660:28;6679:8;6660:18;:28::i;7366:178::-:0;7444:18;7448:4;7454:7;7444:3;:18::i;:::-;7443:19;7435:63;;;;-1:-1:-1;;;7435:63:0;;9935:2:1;7435:63:0;;;9917:21:1;9974:2;9954:18;;;9947:30;10013:33;9993:18;;;9986:61;10064:18;;7435:63:0;9907:181:1;7435:63:0;-1:-1:-1;;;;;7509:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;7509:27:0;7532:4;7509:27;;;7366:178::o;16304:181::-;16362:7;;16394:5;16398:1;16394;:5;:::i;:::-;16382:17;;16423:1;16418;:6;;16410:46;;;;-1:-1:-1;;;16410:46:0;;11048:2:1;16410:46:0;;;11030:21:1;11087:2;11067:18;;;11060:30;11126:29;11106:18;;;11099:57;11173:18;;16410:46:0;11020:177:1;16410:46:0;16476:1;16304:181;-1:-1:-1;;;16304:181:0:o;16493:184::-;16551:7;16584:1;16579;:6;;16571:49;;;;-1:-1:-1;;;16571:49:0;;11740:2:1;16571:49:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:32;11798:18;;;11791:60;11868:18;;16571:49:0;11712:180:1;16571:49:0;16631:9;16643:5;16647:1;16643;:5;:::i;:::-;16631:17;16493:184;-1:-1:-1;;;;16493:184:0:o;6856:191::-;6930:16;6949:6;;-1:-1:-1;;;;;6966:17:0;;;-1:-1:-1;;;;;;6966:17:0;;;;;;6999:40;;6949:6;;;;;;;6999:40;;6930:16;6999:40;6856:191;;:::o;7902:203::-;7974:4;-1:-1:-1;;;;;7999:21:0;;7991:68;;;;-1:-1:-1;;;7991:68:0;;13964:2:1;7991:68:0;;;13946:21:1;14003:2;13983:18;;;13976:30;14042:34;14022:18;;;14015:62;-1:-1:-1;;;14093:18:1;;;14086:32;14135:19;;7991:68:0;13936:224:1;7991:68:0;-1:-1:-1;;;;;;8077:20:0;:11;:20;;;;;;;;;;;;;;;7902:203::o;16685:250::-;16743:7;16767:6;16763:47;;-1:-1:-1;16797:1:0;16790:8;;16763:47;16822:9;16834:5;16838:1;16834;:5;:::i;:::-;16822:17;-1:-1:-1;16867:1:0;16858:5;16862:1;16822:17;16858:5;:::i;:::-;:10;16850:56;;;;-1:-1:-1;;;16850:56:0;;13201:2:1;16850:56:0;;;13183:21:1;13240:2;13220:18;;;13213:30;13279:34;13259:18;;;13252:62;-1:-1:-1;;;13330:18:1;;;13323:31;13371:19;;16850:56:0;13173:223:1;16943:179:0;17001:7;17033:1;17029;:5;17021:44;;;;-1:-1:-1;;;17021:44:0;;12099:2:1;17021:44:0;;;12081:21:1;12138:2;12118:18;;;12111:30;12177:28;12157:18;;;12150:56;12223:18;;17021:44:0;12071:176:1;17021:44:0;17076:9;17088:5;17092:1;17088;:5;:::i;13927:787::-;14025:7;;14059:16;14074:1;14059:5;:16;:::i;:::-;14105:18;;14044:31;;-1:-1:-1;;;;;;14105:18:0;14090:5;;14044:31;14090:11;;;;;-1:-1:-1;;;14090:11:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14090:33:0;;14086:503;;14245:4;;-1:-1:-1;;;;;14245:4:0;14230:5;;14236:4;14230:11;;;;;-1:-1:-1;;;14230:11:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14230:19:0;;14226:352;;14294:13;;-1:-1:-1;;;;;14294:13:0;14277:56;14334:6;14294:13;14345:5;;14352;14359:31;:15;14379:10;14359:19;:31::i;:::-;14277:114;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14277:114:0;;;;;;;;;;;;:::i;:::-;14392:4;14277:120;;;;;;-1:-1:-1;;;14277:120:0;;;;;;;;;;;;;;;14270:127;;;;;14226:352;14462:13;;-1:-1:-1;;;;;14462:13:0;14445:53;14499:6;14462:13;14510:5;;14517;14524:31;:15;14544:10;14524:19;:31::i;14226:352::-;14610:5;;14616:4;14610:11;;;;;-1:-1:-1;;;14610:11:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14603:43;;-1:-1:-1;;;14603:43:0;;-1:-1:-1;;;;;8509:32:1;;;14603:43:0;;;8491:51:1;8558:18;;;8551:34;;;14603:28:0;;;;;;;8464:18:1;;14603:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14599:89;;;14670:6;14663:13;;;;;14599:89;-1:-1:-1;14705:1:0;;13927:787;-1:-1:-1;;;;;13927:787:0:o;8976:130::-;9036:24;:8;9052:7;9036:15;:24::i;:::-;9076:22;;-1:-1:-1;;;;;9076:22:0;;;;;;;;8976:130;:::o;8846:122::-;8903:21;:8;8916:7;8903:12;:21::i;:::-;8940:20;;-1:-1:-1;;;;;8940:20:0;;;;;;;;8846:122;:::o;7624:183::-;7704:18;7708:4;7714:7;7704:3;:18::i;:::-;7696:64;;;;-1:-1:-1;;;7696:64:0;;12799:2:1;7696:64:0;;;12781:21:1;12838:2;12818:18;;;12811:30;12877:34;12857:18;;;12850:62;-1:-1:-1;;;12928:18:1;;;12921:31;12969:19;;7696:64:0;12771:223:1;7696:64:0;-1:-1:-1;;;;;7771:20:0;7794:5;7771:20;;;;;;;;;;;:28;;-1:-1:-1;;7771:28:0;;;7624:183::o;14:391:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;164:6;156;149:22;108:2;-1:-1:-1;192:20:1;;235:18;224:30;;221:2;;;274:8;264;257:26;221:2;318:4;310:6;306:17;294:29;;378:3;371:4;361:6;358:1;354:14;346:6;342:27;338:38;335:47;332:2;;;395:1;392;385:12;332:2;98:307;;;;;:::o;410:257::-;469:6;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;587:9;574:23;606:31;631:5;606:31;:::i;672:333::-;748:6;756;809:2;797:9;788:7;784:23;780:32;777:2;;;830:6;822;815:22;777:2;874:9;861:23;893:31;918:5;893:31;:::i;:::-;943:5;995:2;980:18;;;;967:32;;-1:-1:-1;;;767:238:1:o;1010:1314::-;1192:6;1200;1208;1216;1224;1232;1240;1248;1256;1264;1308:9;1299:7;1295:23;1338:3;1334:2;1330:12;1327:2;;;1360:6;1352;1345:22;1327:2;1404:9;1391:23;1423:31;1448:5;1423:31;:::i;:::-;1473:5;-1:-1:-1;1530:2:1;1515:18;;1502:32;1543:33;1502:32;1543:33;:::i;:::-;1595:7;-1:-1:-1;1653:2:1;1638:18;;1625:32;1680:18;1669:30;;1666:2;;;1717:6;1709;1702:22;1666:2;1761:70;1823:7;1814:6;1803:9;1799:22;1761:70;:::i;:::-;1850:8;;-1:-1:-1;1735:96:1;-1:-1:-1;;1932:2:1;1917:18;;1904:32;;-1:-1:-1;1988:3:1;1973:19;;1960:33;2002:31;1960:33;2002:31;:::i;:::-;2052:7;-1:-1:-1;2106:3:1;2091:19;;2078:33;;-1:-1:-1;2158:3:1;2143:19;;2130:33;;-1:-1:-1;2210:3:1;2195:19;;2182:33;;-1:-1:-1;2250:2:1;-1:-1:-1;;2231:17:1;;2227:26;2224:2;;;2271:6;2263;2256:22;2224:2;;2314:3;2303:9;2299:19;2289:29;;1275:1049;;;;;;;;;;;;;:::o;2329:729::-;2442:6;2450;2458;2466;2474;2527:3;2515:9;2506:7;2502:23;2498:33;2495:2;;;2549:6;2541;2534:22;2495:2;2594:9;2581:23;2627:18;2619:6;2616:30;2613:2;;;2664:6;2656;2649:22;2613:2;2708:70;2770:7;2761:6;2750:9;2746:22;2708:70;:::i;:::-;2797:8;;-1:-1:-1;2682:96:1;-1:-1:-1;;2882:2:1;2867:18;;2854:32;2895:31;2854:32;2895:31;:::i;:::-;2485:573;;;;-1:-1:-1;2945:5:1;;2997:2;2982:18;;2969:32;;-1:-1:-1;3048:2:1;3033:18;3020:32;;2485:573;-1:-1:-1;;2485:573:1:o;3063:1161::-;3158:6;3189:2;3232;3220:9;3211:7;3207:23;3203:32;3200:2;;;3253:6;3245;3238:22;3200:2;3291:9;3285:16;3320:18;3361:2;3353:6;3350:14;3347:2;;;3382:6;3374;3367:22;3347:2;3425:6;3414:9;3410:22;3400:32;;3470:7;3463:4;3459:2;3455:13;3451:27;3441:2;;3497:6;3489;3482:22;3441:2;3531;3525:9;3553:2;3549;3546:10;3543:2;;;3559:18;;:::i;:::-;3605:2;3602:1;3598:10;3637:2;3631:9;3700:2;3696:7;3691:2;3687;3683:11;3679:25;3671:6;3667:38;3755:6;3743:10;3740:22;3735:2;3723:10;3720:18;3717:46;3714:2;;;3766:18;;:::i;:::-;3802:2;3795:22;3852:18;;;3886:15;;;;-1:-1:-1;3921:11:1;;;3951;;;3947:20;;3944:33;-1:-1:-1;3941:2:1;;;3995:6;3987;3980:22;3941:2;4022:6;4013:15;;4037:156;4051:2;4048:1;4045:9;4037:156;;;4108:10;;4096:23;;4069:1;4062:9;;;;;4139:12;;;;4171;;4037:156;;;-1:-1:-1;4212:6:1;3169:1055;-1:-1:-1;;;;;;;;3169:1055:1:o;4229:297::-;4296:6;4349:2;4337:9;4328:7;4324:23;4320:32;4317:2;;;4370:6;4362;4355:22;4317:2;4407:9;4401:16;4460:5;4453:13;4446:21;4439:5;4436:32;4426:2;;4487:6;4479;4472:22;4531:479;4621:6;4629;4637;4690:2;4678:9;4669:7;4665:23;4661:32;4658:2;;;4711:6;4703;4696:22;4658:2;4755:9;4742:23;4774:31;4799:5;4774:31;:::i;:::-;4824:5;-1:-1:-1;4881:2:1;4866:18;;4853:32;4894:33;4853:32;4894:33;:::i;:::-;4648:362;;4946:7;;-1:-1:-1;;;5000:2:1;4985:18;;;;4972:32;;4648:362::o;5015:190::-;5074:6;5127:2;5115:9;5106:7;5102:23;5098:32;5095:2;;;5148:6;5140;5133:22;5095:2;-1:-1:-1;5176:23:1;;5085:120;-1:-1:-1;5085:120:1:o;5210:194::-;5280:6;5333:2;5321:9;5312:7;5308:23;5304:32;5301:2;;;5354:6;5346;5339:22;5301:2;-1:-1:-1;5382:16:1;;5291:113;-1:-1:-1;5291:113:1:o;5409:253::-;5466:6;5519:2;5507:9;5498:7;5494:23;5490:32;5487:2;;;5540:6;5532;5525:22;5487:2;5584:9;5571:23;5603:29;5626:5;5603:29;:::i;5667:257::-;5735:6;5788:2;5776:9;5767:7;5763:23;5759:32;5756:2;;;5809:6;5801;5794:22;5756:2;5846:9;5840:16;5865:29;5888:5;5865:29;:::i;5929:524::-;6029:6;6024:3;6017:19;5999:3;6055:4;6084:2;6079:3;6075:12;6068:19;;6110:5;6133:3;6145:283;6159:6;6156:1;6153:13;6145:283;;;6236:6;6223:20;6256:33;6281:7;6256:33;:::i;:::-;-1:-1:-1;;;;;6314:33:1;6302:46;;6368:12;;;;6403:15;;;;6344:1;6174:9;6145:283;;;-1:-1:-1;6444:3:1;;6007:446;-1:-1:-1;;;;;6007:446:1:o;9191:537::-;9472:6;9461:9;9454:25;9515:3;9510:2;9499:9;9495:18;9488:31;9435:4;9536:74;9605:3;9594:9;9590:19;9582:6;9574;9536:74;:::i;:::-;-1:-1:-1;;;;;9646:32:1;;;;9641:2;9626:18;;9619:60;-1:-1:-1;9710:2:1;9695:18;9688:34;9528:82;9444:284;-1:-1:-1;;;9444:284:1:o;11202:331::-;11404:2;11386:21;;;11443:1;11423:18;;;11416:29;-1:-1:-1;;;11476:2:1;11461:18;;11454:38;11524:2;11509:18;;11376:157::o;13401:356::-;13603:2;13585:21;;;13622:18;;;13615:30;13681:34;13676:2;13661:18;;13654:62;13748:2;13733:18;;13575:182::o;16450:609::-;16759:6;16748:9;16741:25;16802:6;16797:2;16786:9;16782:18;16775:34;16845:3;16840:2;16829:9;16825:18;16818:31;16722:4;16866:74;16935:3;16924:9;16920:19;16912:6;16904;16866:74;:::i;:::-;-1:-1:-1;;;;;16976:32:1;;;;16971:2;16956:18;;16949:60;-1:-1:-1;17040:3:1;17025:19;17018:35;16858:82;16731:328;-1:-1:-1;;;;16731:328:1:o;17506:128::-;17546:3;17577:1;17573:6;17570:1;17567:13;17564:2;;;17583:18;;:::i;:::-;-1:-1:-1;17619:9:1;;17554:80::o;17639:217::-;17679:1;17705;17695:2;;-1:-1:-1;;;17730:31:1;;17784:4;17781:1;17774:15;17812:4;17737:1;17802:15;17695:2;-1:-1:-1;17841:9:1;;17685:171::o;17861:422::-;17950:1;17993:5;17950:1;18007:270;18028:7;18018:8;18015:21;18007:270;;;18087:4;18083:1;18079:6;18075:17;18069:4;18066:27;18063:2;;;18096:18;;:::i;:::-;18146:7;18136:8;18132:22;18129:2;;;18166:16;;;;18129:2;18245:22;;;;18205:15;;;;18007:270;;;18011:3;17925:358;;;;;:::o;18288:140::-;18346:5;18375:47;18416:4;18406:8;18402:19;18396:4;18482:5;18512:8;18502:2;;-1:-1:-1;18553:1:1;18567:5;;18502:2;18601:4;18591:2;;-1:-1:-1;18638:1:1;18652:5;;18591:2;18683:4;18701:1;18696:59;;;;18769:1;18764:130;;;;18676:218;;18696:59;18726:1;18717:10;;18740:5;;;18764:130;18801:3;18791:8;18788:17;18785:2;;;18808:18;;:::i;:::-;-1:-1:-1;;18864:1:1;18850:16;;18879:5;;18676:218;;18978:2;18968:8;18965:16;18959:3;18953:4;18950:13;18946:36;18940:2;18930:8;18927:16;18922:2;18916:4;18913:12;18909:35;18906:77;18903:2;;;-1:-1:-1;19015:19:1;;;19047:5;;18903:2;19094:34;19119:8;19113:4;19094:34;:::i;:::-;19164:6;19160:1;19156:6;19152:19;19143:7;19140:32;19137:2;;;19175:18;;:::i;:::-;19213:20;;18492:747;-1:-1:-1;;;18492:747:1:o;19244:168::-;19284:7;19350:1;19346;19342:6;19338:14;19335:1;19332:21;19327:1;19320:9;19313:17;19309:45;19306:2;;;19357:18;;:::i;:::-;-1:-1:-1;19397:9:1;;19296:116::o;19417:125::-;19457:4;19485:1;19482;19479:8;19476:2;;;19490:18;;:::i;:::-;-1:-1:-1;19527:9:1;;19466:76::o;19547:127::-;19608:10;19603:3;19599:20;19596:1;19589:31;19639:4;19636:1;19629:15;19663:4;19660:1;19653:15;19679:127;19740:10;19735:3;19731:20;19728:1;19721:31;19771:4;19768:1;19761:15;19795:4;19792:1;19785:15;19811:131;-1:-1:-1;;;;;19886:31:1;;19876:42;;19866:2;;19932:1;19929;19922:12;19947:114;20031:4;20024:5;20020:16;20013:5;20010:27;20000:2;;20051:1;20048;20041:12
Swarm Source
ipfs://a6b17f594906ef8658d9a2e535e54399e5a7c2aa42bcb5f99695fdbbf504ffcb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.999856 | 101.4454 | $101.43 |
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.