Overview
GLMR Balance
GLMR Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,325 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute Meta Tra... | 5679206 | 410 days ago | IN | 0 GLMR | 0.0139265 | ||||
Execute Meta Tra... | 5667513 | 412 days ago | IN | 0 GLMR | 0.05744016 | ||||
Execute Meta Tra... | 5665734 | 412 days ago | IN | 0 GLMR | 0.01821777 | ||||
Execute Meta Tra... | 5613497 | 420 days ago | IN | 0 GLMR | 0.044077 | ||||
Execute Meta Tra... | 5613478 | 420 days ago | IN | 0 GLMR | 0.0398965 | ||||
Execute Meta Tra... | 5554143 | 428 days ago | IN | 0 GLMR | 0.09806464 | ||||
Execute Meta Tra... | 5318662 | 461 days ago | IN | 0 GLMR | 0.03468276 | ||||
Execute Meta Tra... | 5236039 | 473 days ago | IN | 0 GLMR | 0.0341418 | ||||
Execute Meta Tra... | 5230969 | 474 days ago | IN | 0 GLMR | 0.044077 | ||||
Execute Meta Tra... | 5207059 | 477 days ago | IN | 0 GLMR | 0.03277187 | ||||
Execute Meta Tra... | 5200193 | 478 days ago | IN | 0 GLMR | 0.1642132 | ||||
Execute Meta Tra... | 5195147 | 479 days ago | IN | 0 GLMR | 0.15094262 | ||||
Execute Meta Tra... | 5190590 | 480 days ago | IN | 0 GLMR | 0.02152474 | ||||
Execute Meta Tra... | 5186540 | 480 days ago | IN | 0 GLMR | 0.11002258 | ||||
Execute Meta Tra... | 5152608 | 485 days ago | IN | 0 GLMR | 0.23258671 | ||||
Execute Meta Tra... | 5039987 | 501 days ago | IN | 0 GLMR | 0.0079185 | ||||
Execute Meta Tra... | 5039980 | 501 days ago | IN | 0 GLMR | 0.007917 | ||||
Execute Meta Tra... | 5039972 | 501 days ago | IN | 0 GLMR | 0.0079155 | ||||
Execute Meta Tra... | 5039964 | 501 days ago | IN | 0 GLMR | 0.007917 | ||||
Execute Meta Tra... | 5039121 | 501 days ago | IN | 0 GLMR | 0.03303412 | ||||
Execute Meta Tra... | 4956809 | 513 days ago | IN | 0 GLMR | 0.03305843 | ||||
Execute Meta Tra... | 4874236 | 524 days ago | IN | 0 GLMR | 0.03402667 | ||||
Execute Meta Tra... | 4737843 | 543 days ago | IN | 0 GLMR | 0.031058 | ||||
Execute Meta Tra... | 4709475 | 547 days ago | IN | 0 GLMR | 0.04658441 | ||||
Execute Meta Tra... | 4709451 | 547 days ago | IN | 0 GLMR | 0.04727204 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5667513 | 412 days ago | 130.73014458 GLMR | ||||
5667513 | 412 days ago | 4.04320034 GLMR | ||||
5667513 | 412 days ago | 134.77334493 GLMR | ||||
5613497 | 420 days ago | 0.11939154 GLMR | ||||
5613497 | 420 days ago | 0.00369252 GLMR | ||||
5613497 | 420 days ago | 0.12308406 GLMR | ||||
5613478 | 420 days ago | 0.01296435 GLMR | ||||
5613478 | 420 days ago | 0.00040095 GLMR | ||||
5613478 | 420 days ago | 0.01336531 GLMR | ||||
5554143 | 428 days ago | 0.00729397 GLMR | ||||
5554143 | 428 days ago | 0.00022558 GLMR | ||||
5554143 | 428 days ago | 0.00751956 GLMR | ||||
5318662 | 461 days ago | 0.71519231 GLMR | ||||
5318662 | 461 days ago | 0.02211934 GLMR | ||||
5318662 | 461 days ago | 0.73731166 GLMR | ||||
5236039 | 473 days ago | 0.50226595 GLMR | ||||
5236039 | 473 days ago | 0.01553399 GLMR | ||||
5236039 | 473 days ago | 0.51779995 GLMR | ||||
5230969 | 474 days ago | 0.03623438 GLMR | ||||
5230969 | 474 days ago | 0.00112065 GLMR | ||||
5230969 | 474 days ago | 0.03735503 GLMR | ||||
5207059 | 477 days ago | 1.93052213 GLMR | ||||
5207059 | 477 days ago | 0.05970687 GLMR | ||||
5207059 | 477 days ago | 1.990229 GLMR | ||||
5200193 | 478 days ago | 55.58414844 GLMR |
Loading...
Loading
Contract Name:
GasSwap
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at moonbeam.moonscan.io on 2022-01-20 */ // Sources flattened with hardhat v2.7.0 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.0 (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; } } /** * @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); } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract EIP712Base { struct EIP712Domain { string name; string version; address verifyingContract; bytes32 salt; } bytes32 internal constant EIP712_DOMAIN_TYPEHASH = keccak256( bytes( "EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)" ) ); bytes32 internal domainSeparator; constructor(string memory name, string memory version) { domainSeparator = keccak256( abi.encode( EIP712_DOMAIN_TYPEHASH, keccak256(bytes(name)), keccak256(bytes(version)), address(this), bytes32(getChainID()) ) ); } function getChainID() internal view returns (uint256 id) { assembly { id := chainid() } } function getDomainSeparator() private view returns (bytes32) { return domainSeparator; } /** * Accept message hash and returns hash message in EIP712 compatible form * So that it can be used to recover signer from signature signed using EIP712 formatted data * https://eips.ethereum.org/EIPS/eip-712 * "\\x19" makes the encoding deterministic * "\\x01" is the version byte to make it compatible to EIP-191 */ function toTypedMessageHash(bytes32 messageHash) internal view returns (bytes32) { return keccak256( abi.encodePacked("\x19\x01", getDomainSeparator(), messageHash) ); } } contract EIP712MetaTransaction is EIP712Base { bytes32 private constant META_TRANSACTION_TYPEHASH = keccak256( bytes( "MetaTransaction(uint256 nonce,address from,bytes functionSignature)" ) ); event MetaTransactionExecuted( address userAddress, address payable relayerAddress, bytes functionSignature ); mapping(address => uint256) private nonces; /* * Meta transaction structure. * No point of including value field here as if user is doing value transfer then he has the funds to pay for gas * He should call the desired function directly in that case. */ struct MetaTransaction { uint256 nonce; address from; bytes functionSignature; } constructor(string memory name, string memory version) EIP712Base(name, version) {} function convertBytesToBytes4(bytes memory inBytes) internal pure returns (bytes4 outBytes4) { if (inBytes.length == 0) { return 0x0; } assembly { outBytes4 := mload(add(inBytes, 32)) } } function executeMetaTransaction( address userAddress, bytes memory functionSignature, bytes32 sigR, bytes32 sigS, uint8 sigV ) public payable returns (bytes memory) { bytes4 destinationFunctionSig = convertBytesToBytes4(functionSignature); require( destinationFunctionSig != msg.sig, "functionSignature can not be of executeMetaTransaction method" ); MetaTransaction memory metaTx = MetaTransaction({ nonce: nonces[userAddress], from: userAddress, functionSignature: functionSignature }); require( verify(userAddress, metaTx, sigR, sigS, sigV), "Signer and signature do not match" ); nonces[userAddress] += 1; // Append userAddress at the end to extract it from calling context (bool success, bytes memory returnData) = address(this).call( abi.encodePacked(functionSignature, userAddress) ); require(success, "Function call not successful"); emit MetaTransactionExecuted( userAddress, payable(msg.sender), functionSignature ); return returnData; } function hashMetaTransaction(MetaTransaction memory metaTx) internal pure returns (bytes32) { return keccak256( abi.encode( META_TRANSACTION_TYPEHASH, metaTx.nonce, metaTx.from, keccak256(metaTx.functionSignature) ) ); } function getNonce(address user) external view returns (uint256 nonce) { nonce = nonces[user]; } function verify( address user, MetaTransaction memory metaTx, bytes32 sigR, bytes32 sigS, uint8 sigV ) internal view returns (bool) { address signer = ecrecover( toTypedMessageHash(hashMetaTransaction(metaTx)), sigV, sigR, sigS ); require(signer != address(0), "Invalid signature"); return signer == user; } function msgSender() internal view returns (address sender) { if (msg.sender == address(this)) { bytes memory array = msg.data; uint256 index = msg.data.length; assembly { // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those. sender := and( mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff ) } } else { sender = msg.sender; } return sender; } } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut, uint256 fee ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut, uint256 fee ) external pure returns (uint256 amountIn); function getAmountsOut( uint256 amountIn, address[] calldata path, uint256 fee ) external view returns (uint256[] memory amounts); function getAmountsIn( uint256 amountOut, address[] calldata path, uint256 fee ) external view returns (uint256[] memory amounts); function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @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); } /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } interface IToken is IERC20, IERC20Permit {} contract GasSwap is Ownable, EIP712MetaTransaction("GasSwap", "2") { address public immutable WGMLR = 0xAcc15dC74880C9944775448304B263D191c6077F; struct Transformation { uint32 _uint32; bytes _bytes; } IRouter public router; address public feeAddress; uint256 public feePercent = 100; //1% mapping(address => bool) public tokenWhitelist; constructor(address _router) { router = IRouter(_router); } receive() external payable { require(Address.isContract(msgSender()), "REVERT_EOA_DEPOSIT"); } function whitelistToken(address tokenAddress, bool whitelisted) external onlyOwner { require(Address.isContract(tokenAddress), "NO_CONTRACT_AT_ADDRESS"); tokenWhitelist[tokenAddress] = whitelisted; } function changeFeePercent(uint256 newFeePercent) external onlyOwner { require(feePercent >= 0 && feePercent < 10000, "INVALID_FEE_PERCENT"); feePercent = newFeePercent; } function changeFeeAddress(address newFeeAddress) external onlyOwner { feeAddress = newFeeAddress; } function changeRouter(address newTarget) external onlyOwner { require(Address.isContract(newTarget), "NO_CONTRACT_AT_ADDRESS"); router = IRouter(newTarget); } function withdrawToken(IToken token, uint256 amount) external onlyOwner { token.transfer(msg.sender, amount); } // Transfer ETH held by this contract to the sender/owner. function withdrawETH(uint256 amount) external onlyOwner { payable(msg.sender).transfer(amount); } // Swaps ERC20->MOVR tokens function swap(bytes calldata swapCallData) external returns (uint256) { ( uint256 amountIn, uint256 amountOutMin, address[] memory path, , uint256 deadline, uint8 v, bytes32 r, bytes32 s ) = abi.decode( swapCallData, ( uint256, uint256, address[], address, uint256, uint8, bytes32, bytes32 ) ); require(path[path.length - 1] == WGMLR, "INVALID_OUTPUT_TOKEN"); require(tokenWhitelist[path[0]] == true, "INVALID_INPUT_TOKEN"); IToken sellToken = IToken(path[0]); sellToken.permit( msgSender(), address(this), amountIn, deadline, v, r, s ); sellToken.transferFrom(msgSender(), address(this), amountIn); uint256 beforeSwapBalance = address(this).balance; sellToken.approve(address(router), amountIn); router.swapExactTokensForETH( amountIn, amountOutMin, path, address(this), deadline ); uint256 tradeBalance = address(this).balance - beforeSwapBalance; uint256 amount = ((tradeBalance * 10000) - (tradeBalance * feePercent)) / 10000; uint256 fee = tradeBalance - amount; if (feeAddress != address(0)) { payable(feeAddress).transfer(fee); } payable(msgSender()).transfer(amount); return amount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"WGMLR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeAddress","type":"address"}],"name":"changeFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFeePercent","type":"uint256"}],"name":"changeFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTarget","type":"address"}],"name":"changeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"swapCallData","type":"bytes"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"whitelistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IToken","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040527facc15dc74880c9944775448304b263d191c6077f00000000000000000000000060805260646005553480156200003a57600080fd5b50604051620022ae380380620022ae8339810160408190526200005d91620001c4565b604051806040016040528060078152602001660476173537761760cc1b815250604051806040016040528060018152602001601960f91b8152508181620000b3620000ad6200016c60201b60201c565b62000170565b6040518060800160405280604f81526020016200225f604f9139805190602001208280519060200120828051906020012030620000f5620001c060201b60201c565b60408051602081019690965285019390935260608401919091526001600160a01b0316608083015260a082015260c00160408051808303601f1901815291905280516020909101206001555050600380546001600160a01b0319166001600160a01b03949094169390931790925550620001f69050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b4690565b600060208284031215620001d757600080fd5b81516001600160a01b0381168114620001ef57600080fd5b9392505050565b60805160601c6120436200021c600039600081816103ce0152610c3701526120436000f3fe6080604052600436106101125760003560e01c8063715018a6116100a55780639e281a9811610074578063f14210a611610059578063f14210a6146103f0578063f2fde38b14610410578063f887ea401461043057600080fd5b80639e281a981461039c578063a1b0ee98146103bc57600080fd5b8063715018a614610306578063753d75631461031b5780637fd6f15c1461035b5780638da5cb5b1461037157600080fd5b8063340ac20f116100e1578063340ac20f1461025457806334eddf3e146102745780634127535814610294578063627dd56a146102e657600080fd5b80630c53c51c1461019a5780630ffb1d8b146101c3578063285e1406146101e35780632d0335ab1461020357600080fd5b366101955761012861012261045d565b3b151590565b610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5245564552545f454f415f4445504f534954000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b6101ad6101a83660046118e3565b6104c7565b6040516101ba9190611d25565b60405180910390f35b3480156101cf57600080fd5b506101936101de3660046118aa565b6107e7565b3480156101ef57600080fd5b506101936101fe366004611886565b610926565b34801561020f57600080fd5b5061024661021e366004611886565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6040519081526020016101ba565b34801561026057600080fd5b5061019361026f366004611886565b6109ee565b34801561028057600080fd5b5061019361028f366004611b25565b610b1e565b3480156102a057600080fd5b506004546102c19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ba565b3480156102f257600080fd5b50610246610301366004611a87565b610c11565b34801561031257600080fd5b5061019361121d565b34801561032757600080fd5b5061034b610336366004611886565b60066020526000908152604090205460ff1681565b60405190151581526020016101ba565b34801561036757600080fd5b5061024660055481565b34801561037d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c1565b3480156103a857600080fd5b506101936103b7366004611af9565b6112aa565b3480156103c857600080fd5b506102c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fc57600080fd5b5061019361040b366004611b25565b6113d6565b34801561041c57600080fd5b5061019361042b366004611886565b611488565b34801561043c57600080fd5b506003546102c19073ffffffffffffffffffffffffffffffffffffffff1681565b6000333014156104c157600080368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff1691506104c49050565b50335b90565b606060006104d4866115b8565b90506000357fffffffff00000000000000000000000000000000000000000000000000000000908116908216141561058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f64000000606482015260840161018a565b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff8916600081815260026020908152908490205483528201529081018790526105d888828888886115d4565b610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161018a565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812080546001929061069a908490611e36565b9091555050604051600090819030906106b9908b908d90602001611c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106f191611c7d565b6000604051808303816000865af19150503d806000811461072e576040519150601f19603f3d011682016040523d82523d6000602084013e610733565b606091505b50915091508161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015260640161018a565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8a338b6040516107d293929190611ce3565b60405180910390a19998505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b813b6108d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e4f5f434f4e54524143545f41545f4144445245535300000000000000000000604482015260640161018a565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b803b610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e4f5f434f4e54524143545f41545f4144445245535300000000000000000000604482015260640161018a565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b61271060055410610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f4645455f50455243454e5400000000000000000000000000604482015260640161018a565b600555565b600080808080808080610c26898b018b611b3e565b9750975097509750509650965096507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168560018751610c7b9190611ec6565b81518110610c8b57610c8b611f3c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161018a565b6006600086600081518110610d2757610d27611f3c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff161515600114610dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161018a565b600085600081518110610ddb57610ddb611f3c565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663d505accf610e0961045d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018b90526064810188905260ff8716608482015260a4810186905260c4810185905260e401600060405180830381600087803b158015610e9a57600080fd5b505af1158015610eae573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff166323b872dd610ed661045d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018b9052606401602060405180830381600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190611a6a565b506003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a9052479183169063095ea7b390604401602060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f9190611a6a565b506003546040517f18cbafe500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906318cbafe59061108e908c908c908c9030908d90600401611d38565b600060405180830381600087803b1580156110a857600080fd5b505af11580156110bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261110291908101906119cd565b50600061110f8247611ec6565b90506000612710600554836111249190611e89565b61113084612710611e89565b61113a9190611ec6565b6111449190611e4e565b905060006111528284611ec6565b60045490915073ffffffffffffffffffffffffffffffffffffffff16156111bc5760045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f193505050501580156111ba573d6000803e3d6000fd5b505b6111c461045d565b73ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611209573d6000803e3d6000fd5b50909e9d5050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b6112a8600061171b565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb90604401602060405180830381600087803b15801561139957600080fd5b505af11580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d19190611a6a565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b604051339082156108fc029083906000818181858888f19350505050158015611484573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b73ffffffffffffffffffffffffffffffffffffffff81166115ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161018a565b6115b58161171b565b50565b60008151600014156115cc57506000919050565b506020015190565b60008060016115ea6115e588611790565b61181a565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015611638573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015260640161018a565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161491505095945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000604051806080016040528060438152602001611fcb60439139805160209182012083518483015160408087015180519086012090516117fd9501938452602084019290925273ffffffffffffffffffffffffffffffffffffffff166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061182560015490565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526022810191909152604281018390526062016117fd565b803561187081611f9a565b919050565b803560ff8116811461187057600080fd5b60006020828403121561189857600080fd5b81356118a381611f9a565b9392505050565b600080604083850312156118bd57600080fd5b82356118c881611f9a565b915060208301356118d881611fbc565b809150509250929050565b600080600080600060a086880312156118fb57600080fd5b853561190681611f9a565b945060208681013567ffffffffffffffff8082111561192457600080fd5b818901915089601f83011261193857600080fd5b81358181111561194a5761194a611f6b565b61197a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dc3565b91508082528a8482850101111561199057600080fd5b808484018584013760008482840101525080965050505060408601359250606086013591506119c160808701611875565b90509295509295909350565b600060208083850312156119e057600080fd5b825167ffffffffffffffff8111156119f757600080fd5b8301601f81018513611a0857600080fd5b8051611a1b611a1682611e12565b611dc3565b80828252848201915084840188868560051b8701011115611a3b57600080fd5b600094505b83851015611a5e578051835260019490940193918501918501611a40565b50979650505050505050565b600060208284031215611a7c57600080fd5b81516118a381611fbc565b60008060208385031215611a9a57600080fd5b823567ffffffffffffffff80821115611ab257600080fd5b818501915085601f830112611ac657600080fd5b813581811115611ad557600080fd5b866020828501011115611ae757600080fd5b60209290920196919550909350505050565b60008060408385031215611b0c57600080fd5b8235611b1781611f9a565b946020939093013593505050565b600060208284031215611b3757600080fd5b5035919050565b600080600080600080600080610100898b031215611b5b57600080fd5b883597506020808a0135975060408a013567ffffffffffffffff811115611b8157600080fd5b8a01601f81018c13611b9257600080fd5b8035611ba0611a1682611e12565b8082825284820191508484018f868560051b8701011115611bc057600080fd5b600094505b83851015611bec578035611bd881611f9a565b835260019490940193918501918501611bc5565b50809a505050505050611c0160608a01611865565b945060808901359350611c1660a08a01611875565b925060c0890135915060e089013590509295985092959890939650565b60008151808452611c4b816020860160208601611edd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251611c8f818460208701611edd565b9190910192915050565b60008351611cab818460208801611edd565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152611d1c6060830184611c33565b95945050505050565b6020815260006118a36020830184611c33565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d9557845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611d63565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0a57611e0a611f6b565b604052919050565b600067ffffffffffffffff821115611e2c57611e2c611f6b565b5060051b60200190565b60008219821115611e4957611e49611f0d565b500190565b600082611e84577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ec157611ec1611f0d565b500290565b600082821015611ed857611ed8611f0d565b500390565b60005b83811015611ef8578181015183820152602001611ee0565b83811115611f07576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115b557600080fd5b80151581146115b557600080fdfe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a264697066735822122094009e1c1b9ccb49b74d934dd6ada6d729937f2b4d8e27d66f1acf791e60228364736f6c63430008070033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c7429000000000000000000000000d3b02ff30c218c7f7756ba14bca075bf7c2c951e
Deployed Bytecode
0x6080604052600436106101125760003560e01c8063715018a6116100a55780639e281a9811610074578063f14210a611610059578063f14210a6146103f0578063f2fde38b14610410578063f887ea401461043057600080fd5b80639e281a981461039c578063a1b0ee98146103bc57600080fd5b8063715018a614610306578063753d75631461031b5780637fd6f15c1461035b5780638da5cb5b1461037157600080fd5b8063340ac20f116100e1578063340ac20f1461025457806334eddf3e146102745780634127535814610294578063627dd56a146102e657600080fd5b80630c53c51c1461019a5780630ffb1d8b146101c3578063285e1406146101e35780632d0335ab1461020357600080fd5b366101955761012861012261045d565b3b151590565b610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5245564552545f454f415f4445504f534954000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b6101ad6101a83660046118e3565b6104c7565b6040516101ba9190611d25565b60405180910390f35b3480156101cf57600080fd5b506101936101de3660046118aa565b6107e7565b3480156101ef57600080fd5b506101936101fe366004611886565b610926565b34801561020f57600080fd5b5061024661021e366004611886565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b6040519081526020016101ba565b34801561026057600080fd5b5061019361026f366004611886565b6109ee565b34801561028057600080fd5b5061019361028f366004611b25565b610b1e565b3480156102a057600080fd5b506004546102c19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ba565b3480156102f257600080fd5b50610246610301366004611a87565b610c11565b34801561031257600080fd5b5061019361121d565b34801561032757600080fd5b5061034b610336366004611886565b60066020526000908152604090205460ff1681565b60405190151581526020016101ba565b34801561036757600080fd5b5061024660055481565b34801561037d57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c1565b3480156103a857600080fd5b506101936103b7366004611af9565b6112aa565b3480156103c857600080fd5b506102c17f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f81565b3480156103fc57600080fd5b5061019361040b366004611b25565b6113d6565b34801561041c57600080fd5b5061019361042b366004611886565b611488565b34801561043c57600080fd5b506003546102c19073ffffffffffffffffffffffffffffffffffffffff1681565b6000333014156104c157600080368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff1691506104c49050565b50335b90565b606060006104d4866115b8565b90506000357fffffffff00000000000000000000000000000000000000000000000000000000908116908216141561058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f64000000606482015260840161018a565b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff8916600081815260026020908152908490205483528201529081018790526105d888828888886115d4565b610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360448201527f6800000000000000000000000000000000000000000000000000000000000000606482015260840161018a565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260026020526040812080546001929061069a908490611e36565b9091555050604051600090819030906106b9908b908d90602001611c99565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106f191611c7d565b6000604051808303816000865af19150503d806000811461072e576040519150601f19603f3d011682016040523d82523d6000602084013e610733565b606091505b50915091508161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015260640161018a565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8a338b6040516107d293929190611ce3565b60405180910390a19998505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b813b6108d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e4f5f434f4e54524143545f41545f4144445245535300000000000000000000604482015260640161018a565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b803b610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e4f5f434f4e54524143545f41545f4144445245535300000000000000000000604482015260640161018a565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b61271060055410610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f4645455f50455243454e5400000000000000000000000000604482015260640161018a565b600555565b600080808080808080610c26898b018b611b3e565b9750975097509750509650965096507f000000000000000000000000acc15dc74880c9944775448304b263d191c6077f73ffffffffffffffffffffffffffffffffffffffff168560018751610c7b9190611ec6565b81518110610c8b57610c8b611f3c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614610d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161018a565b6006600086600081518110610d2757610d27611f3c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff161515600114610dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161018a565b600085600081518110610ddb57610ddb611f3c565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663d505accf610e0961045d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018b90526064810188905260ff8716608482015260a4810186905260c4810185905260e401600060405180830381600087803b158015610e9a57600080fd5b505af1158015610eae573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff166323b872dd610ed661045d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604481018b9052606401602060405180830381600087803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190611a6a565b506003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a9052479183169063095ea7b390604401602060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f9190611a6a565b506003546040517f18cbafe500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906318cbafe59061108e908c908c908c9030908d90600401611d38565b600060405180830381600087803b1580156110a857600080fd5b505af11580156110bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261110291908101906119cd565b50600061110f8247611ec6565b90506000612710600554836111249190611e89565b61113084612710611e89565b61113a9190611ec6565b6111449190611e4e565b905060006111528284611ec6565b60045490915073ffffffffffffffffffffffffffffffffffffffff16156111bc5760045460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f193505050501580156111ba573d6000803e3d6000fd5b505b6111c461045d565b73ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611209573d6000803e3d6000fd5b50909e9d5050505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b6112a8600061171b565b565b60005473ffffffffffffffffffffffffffffffffffffffff16331461132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905273ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb90604401602060405180830381600087803b15801561139957600080fd5b505af11580156113ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d19190611a6a565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b604051339082156108fc029083906000818181858888f19350505050158015611484573d6000803e3d6000fd5b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018a565b73ffffffffffffffffffffffffffffffffffffffff81166115ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161018a565b6115b58161171b565b50565b60008151600014156115cc57506000919050565b506020015190565b60008060016115ea6115e588611790565b61181a565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015611638573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015260640161018a565b8673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161491505095945050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000604051806080016040528060438152602001611fcb60439139805160209182012083518483015160408087015180519086012090516117fd9501938452602084019290925273ffffffffffffffffffffffffffffffffffffffff166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061182560015490565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201526022810191909152604281018390526062016117fd565b803561187081611f9a565b919050565b803560ff8116811461187057600080fd5b60006020828403121561189857600080fd5b81356118a381611f9a565b9392505050565b600080604083850312156118bd57600080fd5b82356118c881611f9a565b915060208301356118d881611fbc565b809150509250929050565b600080600080600060a086880312156118fb57600080fd5b853561190681611f9a565b945060208681013567ffffffffffffffff8082111561192457600080fd5b818901915089601f83011261193857600080fd5b81358181111561194a5761194a611f6b565b61197a847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dc3565b91508082528a8482850101111561199057600080fd5b808484018584013760008482840101525080965050505060408601359250606086013591506119c160808701611875565b90509295509295909350565b600060208083850312156119e057600080fd5b825167ffffffffffffffff8111156119f757600080fd5b8301601f81018513611a0857600080fd5b8051611a1b611a1682611e12565b611dc3565b80828252848201915084840188868560051b8701011115611a3b57600080fd5b600094505b83851015611a5e578051835260019490940193918501918501611a40565b50979650505050505050565b600060208284031215611a7c57600080fd5b81516118a381611fbc565b60008060208385031215611a9a57600080fd5b823567ffffffffffffffff80821115611ab257600080fd5b818501915085601f830112611ac657600080fd5b813581811115611ad557600080fd5b866020828501011115611ae757600080fd5b60209290920196919550909350505050565b60008060408385031215611b0c57600080fd5b8235611b1781611f9a565b946020939093013593505050565b600060208284031215611b3757600080fd5b5035919050565b600080600080600080600080610100898b031215611b5b57600080fd5b883597506020808a0135975060408a013567ffffffffffffffff811115611b8157600080fd5b8a01601f81018c13611b9257600080fd5b8035611ba0611a1682611e12565b8082825284820191508484018f868560051b8701011115611bc057600080fd5b600094505b83851015611bec578035611bd881611f9a565b835260019490940193918501918501611bc5565b50809a505050505050611c0160608a01611865565b945060808901359350611c1660a08a01611875565b925060c0890135915060e089013590509295985092959890939650565b60008151808452611c4b816020860160208601611edd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008251611c8f818460208701611edd565b9190910192915050565b60008351611cab818460208801611edd565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152611d1c6060830184611c33565b95945050505050565b6020815260006118a36020830184611c33565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d9557845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611d63565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0a57611e0a611f6b565b604052919050565b600067ffffffffffffffff821115611e2c57611e2c611f6b565b5060051b60200190565b60008219821115611e4957611e49611f0d565b500190565b600082611e84577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611ec157611ec1611f0d565b500290565b600082821015611ed857611ed8611f0d565b500390565b60005b83811015611ef8578181015183820152602001611ee0565b83811115611f07576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146115b557600080fd5b80151581146115b557600080fdfe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a264697066735822122094009e1c1b9ccb49b74d934dd6ada6d729937f2b4d8e27d66f1acf791e60228364736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d3b02ff30c218c7f7756ba14bca075bf7c2c951e
-----Decoded View---------------
Arg [0] : _router (address): 0xd3B02Ff30c218c7f7756BA14bcA075Bf7C2C951e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d3b02ff30c218c7f7756ba14bca075bf7c2c951e
Deployed Bytecode Sourcemap
27842:3523:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28373:31;28392:11;:9;:11::i;:::-;4391:20;4439:8;;;4068:387;28373:31;28365:62;;;;;;;14888:2:1;28365:62:0;;;14870:21:1;14927:2;14907:18;;;14900:30;14966:20;14946:18;;;14939:48;15004:18;;28365:62:0;;;;;;;;;27842:3523;;;;;14291:1282;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28443:245;;;;;;;;;;-1:-1:-1;28443:245:0;;;;;:::i;:::-;;:::i;28897:113::-;;;;;;;;;;-1:-1:-1;28897:113:0;;;;;:::i;:::-;;:::i;15999:109::-;;;;;;;;;;-1:-1:-1;15999:109:0;;;;;:::i;:::-;16088:12;;16054:13;16088:12;;;:6;:12;;;;;;;15999:109;;;;15179:25:1;;;15167:2;15152:18;15999:109:0;15033:177:1;29018:181:0;;;;;;;;;;-1:-1:-1;29018:181:0;;;;;:::i;:::-;;:::i;28696:193::-;;;;;;;;;;-1:-1:-1;28696:193:0;;;;;:::i;:::-;;:::i;28114:25::-;;;;;;;;;;-1:-1:-1;28114:25:0;;;;;;;;;;;7561:42:1;7549:55;;;7531:74;;7519:2;7504:18;28114:25:0;7385:226:1;29556:1806:0;;;;;;;;;;-1:-1:-1;29556:1806:0;;;;;:::i;:::-;;:::i;2568:103::-;;;;;;;;;;;;;:::i;28191:46::-;;;;;;;;;;-1:-1:-1;28191:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9643:14:1;;9636:22;9618:41;;9606:2;9591:18;28191:46:0;9478:187:1;28146:31:0;;;;;;;;;;;;;;;;1917:87;;;;;;;;;;-1:-1:-1;1963:7:0;1990:6;;;1917:87;;29207:125;;;;;;;;;;-1:-1:-1;29207:125:0;;;;;:::i;:::-;;:::i;27916:75::-;;;;;;;;;;;;;;;29404:111;;;;;;;;;;-1:-1:-1;29404:111:0;;;;;:::i;:::-;;:::i;2826:201::-;;;;;;;;;;-1:-1:-1;2826:201:0;;;;;:::i;:::-;;:::i;28086:21::-;;;;;;;;;;-1:-1:-1;28086:21:0;;;;;;;;16574:601;16618:14;16649:10;16671:4;16649:27;16645:499;;;16693:18;16714:8;;16693:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;16753:8:0;16964:17;16958:24;17005:42;16932:134;;-1:-1:-1;16645:499:0;;-1:-1:-1;16645:499:0;;-1:-1:-1;17122:10:0;16645:499;16574:601;:::o;14291:1282::-;14492:12;14517:29;14549:39;14570:17;14549:20;:39::i;:::-;14517:71;-1:-1:-1;14647:7:0;;;;;;14621:33;;;;;14599:144;;;;;;;12301:2:1;14599:144:0;;;12283:21:1;12340:2;12320:18;;;12313:30;12379:34;12359:18;;;12352:62;12450:31;12430:18;;;12423:59;12499:19;;14599:144:0;12099:425:1;14599:144:0;14786:152;;;;;;;;14824:19;;;14754:29;14824:19;;;:6;:19;;;;;;;;;14786:152;;;;;;;;;;;14971:45;14831:11;14786:152;14999:4;15005;15011;14971:6;:45::i;:::-;14949:128;;;;;;;14486:2:1;14949:128:0;;;14468:21:1;14525:2;14505:18;;;14498:30;14564:34;14544:18;;;14537:62;14635:3;14615:18;;;14608:31;14656:19;;14949:128:0;14284:397:1;14949:128:0;15088:19;;;;;;;:6;:19;;;;;:24;;15111:1;;15088:19;:24;;15111:1;;15088:24;:::i;:::-;;;;-1:-1:-1;;15275:48:0;;15201:12;;;;15250:4;;15275:48;;15292:17;;15311:11;;15275:48;;;:::i;:::-;;;;;;;;;;;;;;;15242:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15200:134;;;;15355:7;15347:48;;;;;;;11944:2:1;15347:48:0;;;11926:21:1;11983:2;11963:18;;;11956:30;12022;12002:18;;;11995:58;12070:18;;15347:48:0;11742:352:1;15347:48:0;15411:126;15449:11;15483:10;15509:17;15411:126;;;;;;;;:::i;:::-;;;;;;;;15555:10;14291:1282;-1:-1:-1;;;;;;;;;14291:1282:0:o;28443:245::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;4391:20;;28560:67:::1;;;::::0;::::1;::::0;;13774:2:1;28560:67:0::1;::::0;::::1;13756:21:1::0;13813:2;13793:18;;;13786:30;13852:24;13832:18;;;13825:52;13894:18;;28560:67:0::1;13572:346:1::0;28560:67:0::1;28638:28;::::0;;;::::1;;::::0;;;:14:::1;:28;::::0;;;;:42;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;28443:245::o;28897:113::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;28976:10:::1;:26:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;28897:113::o;29018:181::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;4391:20;;29089:64:::1;;;::::0;::::1;::::0;;13774:2:1;29089:64:0::1;::::0;::::1;13756:21:1::0;13813:2;13793:18;;;13786:30;13852:24;13832:18;;;13825:52;13894:18;;29089:64:0::1;13572:346:1::0;29089:64:0::1;29164:6;:27:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;29018:181::o;28696:193::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;28815:5:::1;28802:10;;:18;28775:69;;;::::0;::::1;::::0;;11189:2:1;28775:69:0::1;::::0;::::1;11171:21:1::0;11228:2;11208:18;;;11201:30;11267:21;11247:18;;;11240:49;11306:18;;28775:69:0::1;10987:343:1::0;28775:69:0::1;28855:10;:26:::0;28696:193::o;29556:1806::-;29617:7;;;;;;;;29869:334;;;;29898:12;29869:334;:::i;:::-;29637:566;;;;;;;;;;;;;;;30249:5;30224:30;;:4;30243:1;30229:4;:11;:15;;;;:::i;:::-;30224:21;;;;;;;;:::i;:::-;;;;;;;:30;;;30216:63;;;;;;;13079:2:1;30216:63:0;;;13061:21:1;13118:2;13098:18;;;13091:30;13157:22;13137:18;;;13130:50;13197:18;;30216:63:0;12877:344:1;30216:63:0;30300:14;:23;30315:4;30320:1;30315:7;;;;;;;;:::i;:::-;;;;;;;;;;;;30300:23;;;;;;;;;;;;-1:-1:-1;30300:23:0;;;;:31;;:23;:31;30292:63;;;;;;;12731:2:1;30292:63:0;;;12713:21:1;12770:2;12750:18;;;12743:30;12809:21;12789:18;;;12782:49;12848:18;;30292:63:0;12529:343:1;30292:63:0;30368:16;30394:4;30399:1;30394:7;;;;;;;;:::i;:::-;;;;;;;30368:34;;30415:9;:16;;;30446:11;:9;:11::i;:::-;30415:175;;;;;;;;;;8799:42:1;8868:15;;;30415:175:0;;;8850:34:1;30480:4:0;8900:18:1;;;8893:43;8952:18;;;8945:34;;;8995:18;;;8988:34;;;9071:4;9059:17;;9038:19;;;9031:46;9093:19;;;9086:35;;;9137:19;;;9130:35;;;8761:19;;30415:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30603:9;:22;;;30626:11;:9;:11::i;:::-;30603:60;;;;;;;;;;8287:42:1;8356:15;;;30603:60:0;;;8338:34:1;30647:4:0;8388:18:1;;;8381:43;8440:18;;;8433:34;;;8250:18;;30603:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30764:6:0;;30738:44;;;;;:17;30764:6;;;30738:44;;;9350:74:1;9440:18;;;9433:34;;;30704:21:0;;30738:17;;;;;9323:18:1;;30738:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30795:6:0;;:159;;;;;:6;;;;;:28;;:159;;30838:8;;30861:12;;30888:4;;30915;;30935:8;;30795:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30967:20:0;30990:41;31014:17;30990:21;:41;:::i;:::-;30967:64;;31042:14;31129:5;31114:10;;31099:12;:25;;;;:::i;:::-;31061:20;:12;31076:5;31061:20;:::i;:::-;31060:65;;;;:::i;:::-;31059:75;;;;:::i;:::-;31042:92;-1:-1:-1;31145:11:0;31159:21;31042:92;31159:12;:21;:::i;:::-;31197:10;;31145:35;;-1:-1:-1;31197:24:0;:10;:24;31193:90;;31246:10;;31238:33;;31246:10;;;;;31238:33;;;;;31267:3;;31246:10;31238:33;31246:10;31238:33;31267:3;31246:10;31238:33;;;;;;;;;;;;;;;;;;;;;31193:90;31301:11;:9;:11::i;:::-;31293:29;;:37;31323:6;31293:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31348:6:0;;29556:1806;-1:-1:-1;;;;;;;;;;;;;;29556:1806:0:o;2568:103::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;2633:30:::1;2660:1;2633:18;:30::i;:::-;2568:103::o:0;29207:125::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;29290:34:::1;::::0;;;;29305:10:::1;29290:34;::::0;::::1;9350:74:1::0;9440:18;;;9433:34;;;29290:14:0::1;::::0;::::1;::::0;::::1;::::0;9323:18:1;;29290:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29207:125:::0;;:::o;29404:111::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;29471:36:::1;::::0;29479:10:::1;::::0;29471:36;::::1;;;::::0;29500:6;;29471:36:::1;::::0;;;29500:6;29479:10;29471:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29404:111:::0;:::o;2826:201::-;1963:7;1990:6;2137:23;1990:6;860:10;2137:23;2129:68;;;;;;;14125:2:1;2129:68:0;;;14107:21:1;;;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;14255:18;;2129:68:0;13923:356:1;2129:68:0;2915:22:::1;::::0;::::1;2907:73;;;::::0;::::1;::::0;;11537:2:1;2907:73:0::1;::::0;::::1;11519:21:1::0;11576:2;11556:18;;;11549:30;11615:34;11595:18;;;11588:62;11686:8;11666:18;;;11659:36;11712:19;;2907:73:0::1;11335:402:1::0;2907:73:0::1;2991:28;3010:8;2991:18;:28::i;:::-;2826:201:::0;:::o;13995:288::-;14097:16;14135:7;:14;14153:1;14135:19;14131:62;;;-1:-1:-1;14178:3:0;;13995:288;-1:-1:-1;13995:288:0:o;14131:62::-;-1:-1:-1;14261:2:0;14248:16;14242:23;;13995:288::o;16116:450::-;16292:4;16309:14;16326:139;16350:47;16369:27;16389:6;16369:19;:27::i;:::-;16350:18;:47::i;:::-;16326:139;;;;;;;;;;;;10342:25:1;;;;10415:4;10403:17;;10383:18;;;10376:45;10437:18;;;10430:34;;;10480:18;;;10473:34;;;10314:19;;16326:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16326:139:0;;;;;;-1:-1:-1;;16484:20:0;;;16476:50;;;;;;;13428:2:1;16476:50:0;;;13410:21:1;13467:2;13447:18;;;13440:30;13506:19;13486:18;;;13479:47;13543:18;;16476:50:0;13226:341:1;16476:50:0;16554:4;16544:14;;:6;:14;;;16537:21;;;16116:450;;;;;;;:::o;3187:191::-;3261:16;3280:6;;;3297:17;;;;;;;;;;3330:40;;3280:6;;;;;;;3330:40;;3261:16;3330:40;3250:128;3187:191;:::o;15581:410::-;15691:7;13204:108;;;;;;;;;;;;;;;;;13180:143;;;;;;;15845:12;;15880:11;;;;15924:24;;;;;15914:35;;;;;;15764:204;;;;;9901:25:1;;;9957:2;9942:18;;9935:34;;;;10017:42;10005:55;10000:2;9985:18;;9978:83;10092:2;10077:18;;10070:34;9888:3;9873:19;;9670:440;15764:204:0;;;;;;;;;;;;;15736:247;;;;;;15716:267;;15581:410;;;:::o;12799:258::-;12898:7;13000:20;12407:15;;;12328:102;13000:20;12971:63;;7206:66:1;12971:63:0;;;7194:79:1;7289:11;;;7282:27;;;;7325:12;;;7318:28;;;7362:12;;12971:63:0;6936:444:1;14:142;90:20;;119:31;90:20;119:31;:::i;:::-;14:142;;;:::o;161:156::-;227:20;;287:4;276:16;;266:27;;256:55;;307:1;304;297:12;322:247;381:6;434:2;422:9;413:7;409:23;405:32;402:52;;;450:1;447;440:12;402:52;489:9;476:23;508:31;533:5;508:31;:::i;:::-;558:5;322:247;-1:-1:-1;;;322:247:1:o;574:382::-;639:6;647;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;755:9;742:23;774:31;799:5;774:31;:::i;:::-;824:5;-1:-1:-1;881:2:1;866:18;;853:32;894:30;853:32;894:30;:::i;:::-;943:7;933:17;;;574:382;;;;;:::o;961:1165::-;1063:6;1071;1079;1087;1095;1148:3;1136:9;1127:7;1123:23;1119:33;1116:53;;;1165:1;1162;1155:12;1116:53;1204:9;1191:23;1223:31;1248:5;1223:31;:::i;:::-;1273:5;-1:-1:-1;1297:2:1;1335:18;;;1322:32;1373:18;1403:14;;;1400:34;;;1430:1;1427;1420:12;1400:34;1468:6;1457:9;1453:22;1443:32;;1513:7;1506:4;1502:2;1498:13;1494:27;1484:55;;1535:1;1532;1525:12;1484:55;1571:2;1558:16;1593:2;1589;1586:10;1583:36;;;1599:18;;:::i;:::-;1641:112;1749:2;1680:66;1673:4;1669:2;1665:13;1661:86;1657:95;1641:112;:::i;:::-;1628:125;;1776:2;1769:5;1762:17;1816:7;1811:2;1806;1802;1798:11;1794:20;1791:33;1788:53;;;1837:1;1834;1827:12;1788:53;1892:2;1887;1883;1879:11;1874:2;1867:5;1863:14;1850:45;1936:1;1931:2;1926;1919:5;1915:14;1911:23;1904:34;;1957:5;1947:15;;;;;2009:2;1998:9;1994:18;1981:32;1971:42;;2060:2;2049:9;2045:18;2032:32;2022:42;;2083:37;2115:3;2104:9;2100:19;2083:37;:::i;:::-;2073:47;;961:1165;;;;;;;;:::o;2131:892::-;2226:6;2257:2;2300;2288:9;2279:7;2275:23;2271:32;2268:52;;;2316:1;2313;2306:12;2268:52;2349:9;2343:16;2382:18;2374:6;2371:30;2368:50;;;2414:1;2411;2404:12;2368:50;2437:22;;2490:4;2482:13;;2478:27;-1:-1:-1;2468:55:1;;2519:1;2516;2509:12;2468:55;2548:2;2542:9;2571:60;2587:43;2627:2;2587:43;:::i;:::-;2571:60;:::i;:::-;2653:3;2677:2;2672:3;2665:15;2705:2;2700:3;2696:12;2689:19;;2736:2;2732;2728:11;2784:7;2779:2;2773;2770:1;2766:10;2762:2;2758:19;2754:28;2751:41;2748:61;;;2805:1;2802;2795:12;2748:61;2827:1;2818:10;;2837:156;2851:2;2848:1;2845:9;2837:156;;;2908:10;;2896:23;;2869:1;2862:9;;;;;2939:12;;;;2971;;2837:156;;;-1:-1:-1;3012:5:1;2131:892;-1:-1:-1;;;;;;;2131:892:1:o;3028:245::-;3095:6;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;3196:9;3190:16;3215:28;3237:5;3215:28;:::i;3278:591::-;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3465:9;3452:23;3494:18;3535:2;3527:6;3524:14;3521:34;;;3551:1;3548;3541:12;3521:34;3589:6;3578:9;3574:22;3564:32;;3634:7;3627:4;3623:2;3619:13;3615:27;3605:55;;3656:1;3653;3646:12;3605:55;3696:2;3683:16;3722:2;3714:6;3711:14;3708:34;;;3738:1;3735;3728:12;3708:34;3783:7;3778:2;3769:6;3765:2;3761:15;3757:24;3754:37;3751:57;;;3804:1;3801;3794:12;3751:57;3835:2;3827:11;;;;;3857:6;;-1:-1:-1;3278:591:1;;-1:-1:-1;;;;3278:591:1:o;3874:330::-;3957:6;3965;4018:2;4006:9;3997:7;3993:23;3989:32;3986:52;;;4034:1;4031;4024:12;3986:52;4073:9;4060:23;4092:31;4117:5;4092:31;:::i;:::-;4142:5;4194:2;4179:18;;;;4166:32;;-1:-1:-1;;;3874:330:1:o;4209:180::-;4268:6;4321:2;4309:9;4300:7;4296:23;4292:32;4289:52;;;4337:1;4334;4327:12;4289:52;-1:-1:-1;4360:23:1;;4209:180;-1:-1:-1;4209:180:1:o;4394:1482::-;4547:6;4555;4563;4571;4579;4587;4595;4603;4656:3;4644:9;4635:7;4631:23;4627:33;4624:53;;;4673:1;4670;4663:12;4624:53;4709:9;4696:23;4686:33;;4738:2;4787;4776:9;4772:18;4759:32;4749:42;;4842:2;4831:9;4827:18;4814:32;4869:18;4861:6;4858:30;4855:50;;;4901:1;4898;4891:12;4855:50;4924:22;;4977:4;4969:13;;4965:27;-1:-1:-1;4955:55:1;;5006:1;5003;4996:12;4955:55;5042:2;5029:16;5065:60;5081:43;5121:2;5081:43;:::i;5065:60::-;5147:3;5171:2;5166:3;5159:15;5199:2;5194:3;5190:12;5183:19;;5230:2;5226;5222:11;5278:7;5273:2;5267;5264:1;5260:10;5256:2;5252:19;5248:28;5245:41;5242:61;;;5299:1;5296;5289:12;5242:61;5321:1;5312:10;;5331:238;5345:2;5342:1;5339:9;5331:238;;;5416:3;5403:17;5433:31;5458:5;5433:31;:::i;:::-;5477:18;;5363:1;5356:9;;;;;5515:12;;;;5547;;5331:238;;;5335:3;5588:5;5578:15;;;;;;;5612:46;5654:2;5643:9;5639:18;5612:46;:::i;:::-;5602:56;;5705:3;5694:9;5690:19;5677:33;5667:43;;5729:37;5761:3;5750:9;5746:19;5729:37;:::i;:::-;5719:47;;5813:3;5802:9;5798:19;5785:33;5775:43;;5865:3;5854:9;5850:19;5837:33;5827:43;;4394:1482;;;;;;;;;;;:::o;5881:316::-;5922:3;5960:5;5954:12;5987:6;5982:3;5975:19;6003:63;6059:6;6052:4;6047:3;6043:14;6036:4;6029:5;6025:16;6003:63;:::i;:::-;6111:2;6099:15;6116:66;6095:88;6086:98;;;;6186:4;6082:109;;5881:316;-1:-1:-1;;5881:316:1:o;6202:274::-;6331:3;6369:6;6363:13;6385:53;6431:6;6426:3;6419:4;6411:6;6407:17;6385:53;:::i;:::-;6454:16;;;;;6202:274;-1:-1:-1;;6202:274:1:o;6481:450::-;6638:3;6676:6;6670:13;6692:53;6738:6;6733:3;6726:4;6718:6;6714:17;6692:53;:::i;:::-;6814:2;6810:15;;;;6827:66;6806:88;6767:16;;;;6792:103;;;6922:2;6911:14;;6481:450;-1:-1:-1;;6481:450:1:o;7616:454::-;7798:4;7827:42;7908:2;7900:6;7896:15;7885:9;7878:34;7960:2;7952:6;7948:15;7943:2;7932:9;7928:18;7921:43;;8000:2;7995;7984:9;7980:18;7973:30;8020:44;8060:2;8049:9;8045:18;8037:6;8020:44;:::i;:::-;8012:52;7616:454;-1:-1:-1;;;;;7616:454:1:o;10518:217::-;10665:2;10654:9;10647:21;10628:4;10685:44;10725:2;10714:9;10710:18;10702:6;10685:44;:::i;15215:1018::-;15469:4;15517:3;15506:9;15502:19;15548:6;15537:9;15530:25;15574:2;15612:6;15607:2;15596:9;15592:18;15585:34;15655:3;15650:2;15639:9;15635:18;15628:31;15679:6;15714;15708:13;15745:6;15737;15730:22;15783:3;15772:9;15768:19;15761:26;;15822:2;15814:6;15810:15;15796:29;;15843:1;15853:218;15867:6;15864:1;15861:13;15853:218;;;15932:13;;15947:42;15928:62;15916:75;;16046:15;;;;16011:12;;;;15889:1;15882:9;15853:218;;;-1:-1:-1;;16139:42:1;16127:55;;;;16122:2;16107:18;;16100:83;-1:-1:-1;;;16214:3:1;16199:19;16192:35;16088:3;15215:1018;-1:-1:-1;;;15215:1018:1:o;16238:334::-;16309:2;16303:9;16365:2;16355:13;;16370:66;16351:86;16339:99;;16468:18;16453:34;;16489:22;;;16450:62;16447:88;;;16515:18;;:::i;:::-;16551:2;16544:22;16238:334;;-1:-1:-1;16238:334:1:o;16577:183::-;16637:4;16670:18;16662:6;16659:30;16656:56;;;16692:18;;:::i;:::-;-1:-1:-1;16737:1:1;16733:14;16749:4;16729:25;;16577:183::o;16765:128::-;16805:3;16836:1;16832:6;16829:1;16826:13;16823:39;;;16842:18;;:::i;:::-;-1:-1:-1;16878:9:1;;16765:128::o;16898:274::-;16938:1;16964;16954:189;;16999:77;16996:1;16989:88;17100:4;17097:1;17090:15;17128:4;17125:1;17118:15;16954:189;-1:-1:-1;17157:9:1;;16898:274::o;17177:228::-;17217:7;17343:1;17275:66;17271:74;17268:1;17265:81;17260:1;17253:9;17246:17;17242:105;17239:131;;;17350:18;;:::i;:::-;-1:-1:-1;17390:9:1;;17177:228::o;17410:125::-;17450:4;17478:1;17475;17472:8;17469:34;;;17483:18;;:::i;:::-;-1:-1:-1;17520:9:1;;17410:125::o;17540:258::-;17612:1;17622:113;17636:6;17633:1;17630:13;17622:113;;;17712:11;;;17706:18;17693:11;;;17686:39;17658:2;17651:10;17622:113;;;17753:6;17750:1;17747:13;17744:48;;;17788:1;17779:6;17774:3;17770:16;17763:27;17744:48;;17540:258;;;:::o;17803:184::-;17855:77;17852:1;17845:88;17952:4;17949:1;17942:15;17976:4;17973:1;17966:15;17992:184;18044:77;18041:1;18034:88;18141:4;18138:1;18131:15;18165:4;18162:1;18155:15;18181:184;18233:77;18230:1;18223:88;18330:4;18327:1;18320:15;18354:4;18351:1;18344:15;18370:154;18456:42;18449:5;18445:54;18438:5;18435:65;18425:93;;18514:1;18511;18504:12;18529:118;18615:5;18608:13;18601:21;18594:5;18591:32;18581:60;;18637:1;18634;18627:12
Swarm Source
ipfs://94009e1c1b9ccb49b74d934dd6ada6d729937f2b4d8e27d66f1acf791e602283
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.