More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 794 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20932379 | 71 days ago | IN | 0 ETH | 0.00043752 | ||||
Approve | 20880049 | 78 days ago | IN | 0 ETH | 0.00104812 | ||||
Approve | 20286726 | 161 days ago | IN | 0 ETH | 0.00015792 | ||||
Approve | 20188117 | 175 days ago | IN | 0 ETH | 0.00018225 | ||||
Approve | 19384337 | 287 days ago | IN | 0 ETH | 0.00409399 | ||||
Approve | 19378160 | 288 days ago | IN | 0 ETH | 0.00377876 | ||||
Approve | 17498490 | 552 days ago | IN | 0 ETH | 0.0007879 | ||||
Approve | 17498485 | 552 days ago | IN | 0 ETH | 0.00044474 | ||||
Approve | 16979587 | 625 days ago | IN | 0 ETH | 0.00182966 | ||||
Approve | 16979546 | 625 days ago | IN | 0 ETH | 0.00200778 | ||||
Approve | 16979503 | 625 days ago | IN | 0 ETH | 0.00195816 | ||||
Approve | 16979477 | 625 days ago | IN | 0 ETH | 0.00182329 | ||||
Approve | 16978002 | 625 days ago | IN | 0 ETH | 0.00176543 | ||||
Approve | 16976247 | 625 days ago | IN | 0 ETH | 0.00159581 | ||||
Approve | 16973447 | 626 days ago | IN | 0 ETH | 0.00113447 | ||||
Approve | 16973400 | 626 days ago | IN | 0 ETH | 0.00114747 | ||||
Approve | 16972345 | 626 days ago | IN | 0 ETH | 0.0013615 | ||||
Approve | 16971611 | 626 days ago | IN | 0 ETH | 0.00164954 | ||||
Approve | 16922886 | 633 days ago | IN | 0 ETH | 0.00120966 | ||||
Approve | 16763016 | 655 days ago | IN | 0 ETH | 0.00151095 | ||||
Approve | 16738433 | 659 days ago | IN | 0 ETH | 0.00161828 | ||||
Approve | 16404051 | 706 days ago | IN | 0 ETH | 0.00091126 | ||||
Approve | 16328029 | 716 days ago | IN | 0 ETH | 0.00095175 | ||||
Approve | 16297419 | 720 days ago | IN | 0 ETH | 0.00066869 | ||||
Transfer | 16134263 | 743 days ago | IN | 0 ETH | 0.00116154 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MemeCoin
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-11 */ // SPDX-License-Identifier: MIT /* * HELLO MISSOOORS! * MISSED THE LATEST TREND TOKEN BEING SHILLED BY UR FAVORITE INFLUENZAS? * $MEME IS THE FINAL MEMECOIN, MISSOOORS UNITE! * 0% TAX * LP BURNED * 100% MEME * 8=========================================D<<< * Website: https://BESTMEMECOIN.cash * Twitter: https://twitter.com/BESTMEMECOIN * Telegram: https://t.me/BESTMEMECOINEVER * Medium: https://medium.com/@MEME_MEISTER * * HE WHO CONTROLS THE MEMES CONTROLS THE UNIVERSE $MEME $MEME $MEME $MEME * * ___________________________ *⠀⠘⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀ *⠀⠀⠀⠑⡀⠀⠀⠀⠀⠀ $MEME⠀⠀⠀⠀⠀⠀⠀⠀⡔⠁⠀⠀⠀ *⠀⠀⠀⠀⠈⠢⢄⠀⠀⠀ MISSOOOR⠀⠀⠀⠀⣀⠴⠊⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⢀⣀⣀⣀⣀⣀⡀⠤⠄⠒⠈⠀⠀⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⠘⣀⠄⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠔⠒⠒⠒⠒⠒⠢⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⡰⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⢄⡀⠀⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠙⠄⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⢀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⢠⠂⠀⠀⠘⡄⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠈⢤⡀⢂⠀⢨⠀⢀⡠⠈⢣⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⢀⢀⡖⠒⠶⠤⠭⢽⣟⣗⠲⠖⠺⣖⣴⣆⡤⠤⠤⠼⡄⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠘⡈⠃⠀⠀⠀⠘⣺⡟⢻⠻⡆⠀⡏⠀⡸⣿⢿⢞⠄⡇⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⢣⡀⠤⡀⡀⡔⠉⣏⡿⠛⠓⠊⠁⠀⢎⠛⡗⡗⢳⡏⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⢱⠀⠨⡇⠃⠀⢻⠁⡔⢡⠒⢀⠀⠀⡅⢹⣿⢨⠇⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⢸⠀⠠⢼⠀⠀⡎⡜⠒⢀⠭⡖⡤⢭⣱⢸⢙⠆⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠸⢁⡀⠿⠈⠂⣿⣿⣿⣿⣿⡏⡍⡏⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠀⠀⠸⢢⣫⢀⠘⣿⣿⡿⠏⣼⡏⠀⠀⠀⠀⠀⠀⠀ *⠀⠀⠀⠀⣀⣠⠊⠀⣀⠎⠁⠀⠀⠀⠙⠳⢴⡦⡴⢶⣞⣁⣀⣀⡀⠀⠀⠀⠀⠀ *⠀⠐⠒⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⢀⠤⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀ */ // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // 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/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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: MEME.sol pragma solidity ^0.8.4; contract MemeCoin is ERC20, Ownable { using SafeMath for uint256; mapping(address => bool) private pair; bool public tradingOpen; uint256 public _maxWalletSize = 1000000 * 10 ** decimals(); uint256 private _totalSupply = 100000000 * 10 ** decimals(); constructor() ERC20("MEME COIN", "MEME") { _mint(msg.sender, 100000000 * 10 ** decimals()); } function addPair(address toPair) public onlyOwner { require(!pair[toPair], "This pair is already excluded"); pair[toPair] = true; } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function removeLimits() public onlyOwner{ _maxWalletSize = _totalSupply; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } //buy if(from != owner() && to != owner() && pair[from]) { require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Amount exceeds maximum wallet size"); } // transfer if(from != owner() && to != owner() && !(pair[to]) && !(pair[from])) { require(balanceOf(to) + amount <= _maxWalletSize, "TOKEN: Balance exceeds max wallet size!"); } } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toPair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052620000146200017b60201b60201c565b600a620000229190620005c5565b620f424062000032919062000702565b600855620000456200017b60201b60201c565b600a620000539190620005c5565b6305f5e10062000064919062000702565b6009553480156200007457600080fd5b506040518060400160405280600981526020017f4d454d4520434f494e00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d454d45000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f9929190620003d5565b50806004908051906020019062000112929190620003d5565b50505062000135620001296200018460201b60201c565b6200018c60201b60201c565b62000175336200014a6200017b60201b60201c565b600a620001589190620005c5565b6305f5e10062000169919062000702565b6200025260201b60201c565b62000844565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002bc90620004bd565b60405180910390fd5b620002d960008383620003cb60201b60201c565b8060026000828254620002ed91906200050d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200034491906200050d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003ab9190620004df565b60405180910390a3620003c760008383620003d060201b60201c565b5050565b505050565b505050565b828054620003e3906200077a565b90600052602060002090601f01602090048101928262000407576000855562000453565b82601f106200042257805160ff191683800117855562000453565b8280016001018555821562000453579182015b828111156200045257825182559160200191906001019062000435565b5b50905062000462919062000466565b5090565b5b808211156200048157600081600090555060010162000467565b5090565b600062000494601f83620004fc565b9150620004a1826200081b565b602082019050919050565b620004b78162000763565b82525050565b60006020820190508181036000830152620004d88162000485565b9050919050565b6000602082019050620004f66000830184620004ac565b92915050565b600082825260208201905092915050565b60006200051a8262000763565b9150620005278362000763565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200055f576200055e620007b0565b5b828201905092915050565b6000808291508390505b6001851115620005bc57808604811115620005945762000593620007b0565b5b6001851615620005a45780820291505b8081029050620005b4856200080e565b945062000574565b94509492505050565b6000620005d28262000763565b9150620005df836200076d565b92506200060e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000616565b905092915050565b600082620006285760019050620006fb565b81620006385760009050620006fb565b81600181146200065157600281146200065c5762000692565b6001915050620006fb565b60ff841115620006715762000670620007b0565b5b8360020a9150848211156200068b576200068a620007b0565b5b50620006fb565b5060208310610133831016604e8410600b8410161715620006cc5782820a905083811115620006c657620006c5620007b0565b5b620006fb565b620006db84848460016200056a565b92509050818404811115620006f557620006f4620007b0565b5b81810290505b9392505050565b60006200070f8262000763565b91506200071c8362000763565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007585762000757620007b0565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200079357607f821691505b60208210811415620007aa57620007a9620007df565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61204980620008546000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638f70ccf7116100ad578063c2b7bbb611610071578063c2b7bbb614610335578063dd62ed3e14610351578063ea1644d514610381578063f2fde38b1461039d578063ffb54a99146103b95761012c565b80638f70ccf71461027d5780638f9a55c01461029957806395d89b41146102b7578063a457c2d7146102d5578063a9059cbb146103055761012c565b806339509351116100f457806339509351146101eb57806370a082311461021b578063715018a61461024b578063751039fc146102555780638da5cb5b1461025f5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103d7565b604051610146919061183b565b60405180910390f35b61016960048036038101906101649190611518565b610469565b6040516101769190611820565b60405180910390f35b61018761048c565b6040516101949190611a1d565b60405180910390f35b6101b760048036038101906101b291906114c9565b610496565b6040516101c49190611820565b60405180910390f35b6101d56104c5565b6040516101e29190611a38565b60405180910390f35b61020560048036038101906102009190611518565b6104ce565b6040516102129190611820565b60405180910390f35b61023560048036038101906102309190611464565b610505565b6040516102429190611a1d565b60405180910390f35b61025361054d565b005b61025d610561565b005b610267610574565b6040516102749190611805565b60405180910390f35b61029760048036038101906102929190611554565b61059e565b005b6102a16105c3565b6040516102ae9190611a1d565b60405180910390f35b6102bf6105c9565b6040516102cc919061183b565b60405180910390f35b6102ef60048036038101906102ea9190611518565b61065b565b6040516102fc9190611820565b60405180910390f35b61031f600480360381019061031a9190611518565b6106d2565b60405161032c9190611820565b60405180910390f35b61034f600480360381019061034a9190611464565b6106f5565b005b61036b6004803603810190610366919061148d565b6107e5565b6040516103789190611a1d565b60405180910390f35b61039b6004803603810190610396919061157d565b61086c565b005b6103b760048036038101906103b29190611464565b61087e565b005b6103c1610902565b6040516103ce9190611820565b60405180910390f35b6060600380546103e690611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461041290611b4d565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600080610474610915565b905061048181858561091d565b600191505092915050565b6000600254905090565b6000806104a1610915565b90506104ae858285610ae8565b6104b9858585610b74565b60019150509392505050565b60006012905090565b6000806104d9610915565b90506104fa8185856104eb85896107e5565b6104f59190611a6f565b61091d565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610555611056565b61055f60006110d4565b565b610569611056565b600954600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a6611056565b80600760006101000a81548160ff02191690831515021790555050565b60085481565b6060600480546105d890611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461060490611b4d565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600080610666610915565b9050600061067482866107e5565b9050838110156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906119fd565b60405180910390fd5b6106c6828686840361091d565b60019250505092915050565b6000806106dd610915565b90506106ea818585610b74565b600191505092915050565b6106fd611056565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061187d565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610874611056565b8060088190555050565b610886611056565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed906118bd565b60405180910390fd5b6108ff816110d4565b50565b600760009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906119dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f4906118dd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610adb9190611a1d565b60405180910390a3505050565b6000610af484846107e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6e5781811015610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061191d565b60405180910390fd5b610b6d848484840361091d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b9061185d565b60405180910390fd5b60008111610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e9061199d565b60405180910390fd5b610c9f610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d0d5750610cdd610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561104657600760009054906101000a900460ff16610d9c57610d2e610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d929061189d565b60405180910390fd5b5b610da4610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e125750610de2610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610e675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ec55760085481610e7984610505565b610e839190611a6f565b1115610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061195d565b60405180910390fd5b5b610ecd610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f3b5750610f0b610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f915750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fe75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110455760085481610ff984610505565b6110039190611a6f565b1115611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906118fd565b60405180910390fd5b5b5b61105183838361119a565b505050565b61105e610915565b73ffffffffffffffffffffffffffffffffffffffff1661107c610574565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c99061197d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611201906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112719061185d565b60405180910390fd5b61128583838361141b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561130b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113029061193d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139e9190611a6f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114029190611a1d565b60405180910390a3611415848484611420565b50505050565b505050565b505050565b60008135905061143481611fce565b92915050565b60008135905061144981611fe5565b92915050565b60008135905061145e81611ffc565b92915050565b60006020828403121561147657600080fd5b600061148484828501611425565b91505092915050565b600080604083850312156114a057600080fd5b60006114ae85828601611425565b92505060206114bf85828601611425565b9150509250929050565b6000806000606084860312156114de57600080fd5b60006114ec86828701611425565b93505060206114fd86828701611425565b925050604061150e8682870161144f565b9150509250925092565b6000806040838503121561152b57600080fd5b600061153985828601611425565b925050602061154a8582860161144f565b9150509250929050565b60006020828403121561156657600080fd5b60006115748482850161143a565b91505092915050565b60006020828403121561158f57600080fd5b600061159d8482850161144f565b91505092915050565b6115af81611ac5565b82525050565b6115be81611ad7565b82525050565b60006115cf82611a53565b6115d98185611a5e565b93506115e9818560208601611b1a565b6115f281611bdd565b840191505092915050565b600061160a602383611a5e565b915061161582611bee565b604082019050919050565b600061162d601d83611a5e565b915061163882611c3d565b602082019050919050565b6000611650603f83611a5e565b915061165b82611c66565b604082019050919050565b6000611673602683611a5e565b915061167e82611cb5565b604082019050919050565b6000611696602283611a5e565b91506116a182611d04565b604082019050919050565b60006116b9602783611a5e565b91506116c482611d53565b604082019050919050565b60006116dc601d83611a5e565b91506116e782611da2565b602082019050919050565b60006116ff602683611a5e565b915061170a82611dcb565b604082019050919050565b6000611722602983611a5e565b915061172d82611e1a565b604082019050919050565b6000611745602083611a5e565b915061175082611e69565b602082019050919050565b6000611768602983611a5e565b915061177382611e92565b604082019050919050565b600061178b602583611a5e565b915061179682611ee1565b604082019050919050565b60006117ae602483611a5e565b91506117b982611f30565b604082019050919050565b60006117d1602583611a5e565b91506117dc82611f7f565b604082019050919050565b6117f081611b03565b82525050565b6117ff81611b0d565b82525050565b600060208201905061181a60008301846115a6565b92915050565b600060208201905061183560008301846115b5565b92915050565b6000602082019050818103600083015261185581846115c4565b905092915050565b60006020820190508181036000830152611876816115fd565b9050919050565b6000602082019050818103600083015261189681611620565b9050919050565b600060208201905081810360008301526118b681611643565b9050919050565b600060208201905081810360008301526118d681611666565b9050919050565b600060208201905081810360008301526118f681611689565b9050919050565b60006020820190508181036000830152611916816116ac565b9050919050565b60006020820190508181036000830152611936816116cf565b9050919050565b60006020820190508181036000830152611956816116f2565b9050919050565b6000602082019050818103600083015261197681611715565b9050919050565b6000602082019050818103600083015261199681611738565b9050919050565b600060208201905081810360008301526119b68161175b565b9050919050565b600060208201905081810360008301526119d68161177e565b9050919050565b600060208201905081810360008301526119f6816117a1565b9050919050565b60006020820190508181036000830152611a16816117c4565b9050919050565b6000602082019050611a3260008301846117e7565b92915050565b6000602082019050611a4d60008301846117f6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a7a82611b03565b9150611a8583611b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aba57611ab9611b7f565b5b828201905092915050565b6000611ad082611ae3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b38578082015181840152602081019050611b1d565b83811115611b47576000848401525b50505050565b60006002820490506001821680611b6557607f821691505b60208210811415611b7957611b78611bae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c6560008201527f742073697a652100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d20776160008201527f6c6c65742073697a650000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd781611ac5565b8114611fe257600080fd5b50565b611fee81611ad7565b8114611ff957600080fd5b50565b61200581611b03565b811461201057600080fd5b5056fea264697066735822122001ec6d10012cb5ced63c778c6076828a7651ebf762accff095dde08ade8b7f8464736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638f70ccf7116100ad578063c2b7bbb611610071578063c2b7bbb614610335578063dd62ed3e14610351578063ea1644d514610381578063f2fde38b1461039d578063ffb54a99146103b95761012c565b80638f70ccf71461027d5780638f9a55c01461029957806395d89b41146102b7578063a457c2d7146102d5578063a9059cbb146103055761012c565b806339509351116100f457806339509351146101eb57806370a082311461021b578063715018a61461024b578063751039fc146102555780638da5cb5b1461025f5761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103d7565b604051610146919061183b565b60405180910390f35b61016960048036038101906101649190611518565b610469565b6040516101769190611820565b60405180910390f35b61018761048c565b6040516101949190611a1d565b60405180910390f35b6101b760048036038101906101b291906114c9565b610496565b6040516101c49190611820565b60405180910390f35b6101d56104c5565b6040516101e29190611a38565b60405180910390f35b61020560048036038101906102009190611518565b6104ce565b6040516102129190611820565b60405180910390f35b61023560048036038101906102309190611464565b610505565b6040516102429190611a1d565b60405180910390f35b61025361054d565b005b61025d610561565b005b610267610574565b6040516102749190611805565b60405180910390f35b61029760048036038101906102929190611554565b61059e565b005b6102a16105c3565b6040516102ae9190611a1d565b60405180910390f35b6102bf6105c9565b6040516102cc919061183b565b60405180910390f35b6102ef60048036038101906102ea9190611518565b61065b565b6040516102fc9190611820565b60405180910390f35b61031f600480360381019061031a9190611518565b6106d2565b60405161032c9190611820565b60405180910390f35b61034f600480360381019061034a9190611464565b6106f5565b005b61036b6004803603810190610366919061148d565b6107e5565b6040516103789190611a1d565b60405180910390f35b61039b6004803603810190610396919061157d565b61086c565b005b6103b760048036038101906103b29190611464565b61087e565b005b6103c1610902565b6040516103ce9190611820565b60405180910390f35b6060600380546103e690611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461041290611b4d565b801561045f5780601f106104345761010080835404028352916020019161045f565b820191906000526020600020905b81548152906001019060200180831161044257829003601f168201915b5050505050905090565b600080610474610915565b905061048181858561091d565b600191505092915050565b6000600254905090565b6000806104a1610915565b90506104ae858285610ae8565b6104b9858585610b74565b60019150509392505050565b60006012905090565b6000806104d9610915565b90506104fa8185856104eb85896107e5565b6104f59190611a6f565b61091d565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610555611056565b61055f60006110d4565b565b610569611056565b600954600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a6611056565b80600760006101000a81548160ff02191690831515021790555050565b60085481565b6060600480546105d890611b4d565b80601f016020809104026020016040519081016040528092919081815260200182805461060490611b4d565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600080610666610915565b9050600061067482866107e5565b9050838110156106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906119fd565b60405180910390fd5b6106c6828686840361091d565b60019250505092915050565b6000806106dd610915565b90506106ea818585610b74565b600191505092915050565b6106fd611056565b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561078a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107819061187d565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610874611056565b8060088190555050565b610886611056565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed906118bd565b60405180910390fd5b6108ff816110d4565b50565b600760009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610984906119dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f4906118dd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610adb9190611a1d565b60405180910390a3505050565b6000610af484846107e5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b6e5781811015610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061191d565b60405180910390fd5b610b6d848484840361091d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610be4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdb906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b9061185d565b60405180910390fd5b60008111610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e9061199d565b60405180910390fd5b610c9f610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d0d5750610cdd610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561104657600760009054906101000a900460ff16610d9c57610d2e610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d929061189d565b60405180910390fd5b5b610da4610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e125750610de2610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610e675750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ec55760085481610e7984610505565b610e839190611a6f565b1115610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061195d565b60405180910390fd5b5b610ecd610574565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f3b5750610f0b610574565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610f915750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015610fe75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156110455760085481610ff984610505565b6110039190611a6f565b1115611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103b906118fd565b60405180910390fd5b5b5b61105183838361119a565b505050565b61105e610915565b73ffffffffffffffffffffffffffffffffffffffff1661107c610574565b73ffffffffffffffffffffffffffffffffffffffff16146110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c99061197d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611201906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561127a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112719061185d565b60405180910390fd5b61128583838361141b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561130b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113029061193d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461139e9190611a6f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114029190611a1d565b60405180910390a3611415848484611420565b50505050565b505050565b505050565b60008135905061143481611fce565b92915050565b60008135905061144981611fe5565b92915050565b60008135905061145e81611ffc565b92915050565b60006020828403121561147657600080fd5b600061148484828501611425565b91505092915050565b600080604083850312156114a057600080fd5b60006114ae85828601611425565b92505060206114bf85828601611425565b9150509250929050565b6000806000606084860312156114de57600080fd5b60006114ec86828701611425565b93505060206114fd86828701611425565b925050604061150e8682870161144f565b9150509250925092565b6000806040838503121561152b57600080fd5b600061153985828601611425565b925050602061154a8582860161144f565b9150509250929050565b60006020828403121561156657600080fd5b60006115748482850161143a565b91505092915050565b60006020828403121561158f57600080fd5b600061159d8482850161144f565b91505092915050565b6115af81611ac5565b82525050565b6115be81611ad7565b82525050565b60006115cf82611a53565b6115d98185611a5e565b93506115e9818560208601611b1a565b6115f281611bdd565b840191505092915050565b600061160a602383611a5e565b915061161582611bee565b604082019050919050565b600061162d601d83611a5e565b915061163882611c3d565b602082019050919050565b6000611650603f83611a5e565b915061165b82611c66565b604082019050919050565b6000611673602683611a5e565b915061167e82611cb5565b604082019050919050565b6000611696602283611a5e565b91506116a182611d04565b604082019050919050565b60006116b9602783611a5e565b91506116c482611d53565b604082019050919050565b60006116dc601d83611a5e565b91506116e782611da2565b602082019050919050565b60006116ff602683611a5e565b915061170a82611dcb565b604082019050919050565b6000611722602983611a5e565b915061172d82611e1a565b604082019050919050565b6000611745602083611a5e565b915061175082611e69565b602082019050919050565b6000611768602983611a5e565b915061177382611e92565b604082019050919050565b600061178b602583611a5e565b915061179682611ee1565b604082019050919050565b60006117ae602483611a5e565b91506117b982611f30565b604082019050919050565b60006117d1602583611a5e565b91506117dc82611f7f565b604082019050919050565b6117f081611b03565b82525050565b6117ff81611b0d565b82525050565b600060208201905061181a60008301846115a6565b92915050565b600060208201905061183560008301846115b5565b92915050565b6000602082019050818103600083015261185581846115c4565b905092915050565b60006020820190508181036000830152611876816115fd565b9050919050565b6000602082019050818103600083015261189681611620565b9050919050565b600060208201905081810360008301526118b681611643565b9050919050565b600060208201905081810360008301526118d681611666565b9050919050565b600060208201905081810360008301526118f681611689565b9050919050565b60006020820190508181036000830152611916816116ac565b9050919050565b60006020820190508181036000830152611936816116cf565b9050919050565b60006020820190508181036000830152611956816116f2565b9050919050565b6000602082019050818103600083015261197681611715565b9050919050565b6000602082019050818103600083015261199681611738565b9050919050565b600060208201905081810360008301526119b68161175b565b9050919050565b600060208201905081810360008301526119d68161177e565b9050919050565b600060208201905081810360008301526119f6816117a1565b9050919050565b60006020820190508181036000830152611a16816117c4565b9050919050565b6000602082019050611a3260008301846117e7565b92915050565b6000602082019050611a4d60008301846117f6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a7a82611b03565b9150611a8583611b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aba57611ab9611b7f565b5b828201905092915050565b6000611ad082611ae3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b38578082015181840152602081019050611b1d565b83811115611b47576000848401525b50505050565b60006002820490506001821680611b6557607f821691505b60208210811415611b7957611b78611bae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973207061697220697320616c7265616479206578636c75646564000000600082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e63652065786365656473206d61782077616c6c6560008201527f742073697a652100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20416d6f756e742065786365656473206d6178696d756d20776160008201527f6c6c65742073697a650000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fd781611ac5565b8114611fe257600080fd5b50565b611fee81611ad7565b8114611ff957600080fd5b50565b61200581611b03565b811461201057600080fd5b5056fea264697066735822122001ec6d10012cb5ced63c778c6076828a7651ebf762accff095dde08ade8b7f8464736f6c63430008040033
Deployed Bytecode Sourcemap
29597:2070:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16061:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18412:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17181:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19193:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17023:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19897:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17352:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28730:103;;;:::i;:::-;;30405:88;;;:::i;:::-;;28082:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30173:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29751:58;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20638:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17685:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30011:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17941:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30282:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28988:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29721:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16061:100;16115:13;16148:5;16141:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16061:100;:::o;18412:201::-;18495:4;18512:13;18528:12;:10;:12::i;:::-;18512:28;;18551:32;18560:5;18567:7;18576:6;18551:8;:32::i;:::-;18601:4;18594:11;;;18412:201;;;;:::o;17181:108::-;17242:7;17269:12;;17262:19;;17181:108;:::o;19193:295::-;19324:4;19341:15;19359:12;:10;:12::i;:::-;19341:30;;19382:38;19398:4;19404:7;19413:6;19382:15;:38::i;:::-;19431:27;19441:4;19447:2;19451:6;19431:9;:27::i;:::-;19476:4;19469:11;;;19193:295;;;;;:::o;17023:93::-;17081:5;17106:2;17099:9;;17023:93;:::o;19897:238::-;19985:4;20002:13;20018:12;:10;:12::i;:::-;20002:28;;20041:64;20050:5;20057:7;20094:10;20066:25;20076:5;20083:7;20066:9;:25::i;:::-;:38;;;;:::i;:::-;20041:8;:64::i;:::-;20123:4;20116:11;;;19897:238;;;;:::o;17352:127::-;17426:7;17453:9;:18;17463:7;17453:18;;;;;;;;;;;;;;;;17446:25;;17352:127;;;:::o;28730:103::-;27968:13;:11;:13::i;:::-;28795:30:::1;28822:1;28795:18;:30::i;:::-;28730:103::o:0;30405:88::-;27968:13;:11;:13::i;:::-;30473:12:::1;;30456:14;:29;;;;30405:88::o:0;28082:87::-;28128:7;28155:6;;;;;;;;;;;28148:13;;28082:87;:::o;30173:101::-;27968:13;:11;:13::i;:::-;30254:12:::1;30240:11;;:26;;;;;;;;;;;;;;;;;;30173:101:::0;:::o;29751:58::-;;;;:::o;16280:104::-;16336:13;16369:7;16362:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16280:104;:::o;20638:436::-;20731:4;20748:13;20764:12;:10;:12::i;:::-;20748:28;;20787:24;20814:25;20824:5;20831:7;20814:9;:25::i;:::-;20787:52;;20878:15;20858:16;:35;;20850:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20971:60;20980:5;20987:7;21015:15;20996:16;:34;20971:8;:60::i;:::-;21062:4;21055:11;;;;20638:436;;;;:::o;17685:193::-;17764:4;17781:13;17797:12;:10;:12::i;:::-;17781:28;;17820;17830:5;17837:2;17841:6;17820:9;:28::i;:::-;17866:4;17859:11;;;17685:193;;;;:::o;30011:154::-;27968:13;:11;:13::i;:::-;30081:4:::1;:12;30086:6;30081:12;;;;;;;;;;;;;;;;;;;;;;;;;30080:13;30072:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;30153:4;30138;:12;30143:6;30138:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;30011:154:::0;:::o;17941:151::-;18030:7;18057:11;:18;18069:5;18057:18;;;;;;;;;;;;;;;:27;18076:7;18057:27;;;;;;;;;;;;;;;;18050:34;;17941:151;;;;:::o;30282:115::-;27968:13;:11;:13::i;:::-;30376::::1;30359:14;:30;;;;30282:115:::0;:::o;28988:201::-;27968:13;:11;:13::i;:::-;29097:1:::1;29077:22;;:8;:22;;;;29069:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29153:28;29172:8;29153:18;:28::i;:::-;28988:201:::0;:::o;29721:23::-;;;;;;;;;;;;;:::o;13701:98::-;13754:7;13781:10;13774:17;;13701:98;:::o;24263:380::-;24416:1;24399:19;;:5;:19;;;;24391:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24497:1;24478:21;;:7;:21;;;;24470:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24581:6;24551:11;:18;24563:5;24551:18;;;;;;;;;;;;;;;:27;24570:7;24551:27;;;;;;;;;;;;;;;:36;;;;24619:7;24603:32;;24612:5;24603:32;;;24628:6;24603:32;;;;;;:::i;:::-;;;;;;;;24263:380;;;:::o;24934:453::-;25069:24;25096:25;25106:5;25113:7;25096:9;:25::i;:::-;25069:52;;25156:17;25136:16;:37;25132:248;;25218:6;25198:16;:26;;25190:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25302:51;25311:5;25318:7;25346:6;25327:16;:25;25302:8;:51::i;:::-;25132:248;24934:453;;;;:::o;30501:1161::-;30649:1;30633:18;;:4;:18;;;;30625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30726:1;30712:16;;:2;:16;;;;30704:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30796:1;30787:6;:10;30779:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30866:7;:5;:7::i;:::-;30858:15;;:4;:15;;;;:32;;;;;30883:7;:5;:7::i;:::-;30877:13;;:2;:13;;;;30858:32;30855:753;;;30947:11;;;;;;;;;;;30942:144;;30995:7;:5;:7::i;:::-;30987:15;;:4;:15;;;30979:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30942:144;31147:7;:5;:7::i;:::-;31139:15;;:4;:15;;;;:32;;;;;31164:7;:5;:7::i;:::-;31158:13;;:2;:13;;;;31139:32;:46;;;;;31175:4;:10;31180:4;31175:10;;;;;;;;;;;;;;;;;;;;;;;;;31139:46;31136:198;;;31240:14;;31230:6;31214:13;31224:2;31214:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;31206:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;31136:198;31411:7;:5;:7::i;:::-;31403:15;;:4;:15;;;;:32;;;;;31428:7;:5;:7::i;:::-;31422:13;;:2;:13;;;;31403:32;:47;;;;;31441:4;:8;31446:2;31441:8;;;;;;;;;;;;;;;;;;;;;;;;;31439:11;31403:47;:64;;;;;31456:4;:10;31461:4;31456:10;;;;;;;;;;;;;;;;;;;;;;;;;31454:13;31403:64;31400:196;;;31522:14;;31512:6;31496:13;31506:2;31496:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;31488:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;31400:196;30855:753;31619:33;31635:4;31641:2;31645:6;31619:15;:33::i;:::-;30501:1161;;;:::o;28247:132::-;28322:12;:10;:12::i;:::-;28311:23;;:7;:5;:7::i;:::-;:23;;;28303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28247:132::o;29349:191::-;29423:16;29442:6;;;;;;;;;;;29423:25;;29468:8;29459:6;;:17;;;;;;;;;;;;;;;;;;29523:8;29492:40;;29513:8;29492:40;;;;;;;;;;;;29349:191;;:::o;21544:671::-;21691:1;21675:18;;:4;:18;;;;21667:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21768:1;21754:16;;:2;:16;;;;21746:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21823:38;21844:4;21850:2;21854:6;21823:20;:38::i;:::-;21874:19;21896:9;:15;21906:4;21896:15;;;;;;;;;;;;;;;;21874:37;;21945:6;21930:11;:21;;21922:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;22062:6;22048:11;:20;22030:9;:15;22040:4;22030:15;;;;;;;;;;;;;;;:38;;;;22107:6;22090:9;:13;22100:2;22090:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;22146:2;22131:26;;22140:4;22131:26;;;22150:6;22131:26;;;;;;:::i;:::-;;;;;;;;22170:37;22190:4;22196:2;22200:6;22170:19;:37::i;:::-;21544:671;;;;:::o;25987:125::-;;;;:::o;26716:124::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;195:5;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:139::-;337:5;375:6;362:20;353:29;;391:33;418:5;391:33;:::i;:::-;343:87;;;;:::o;436:262::-;495:6;544:2;532:9;523:7;519:23;515:32;512:2;;;560:1;557;550:12;512:2;603:1;628:53;673:7;664:6;653:9;649:22;628:53;:::i;:::-;618:63;;574:117;502:196;;;;:::o;704:407::-;772:6;780;829:2;817:9;808:7;804:23;800:32;797:2;;;845:1;842;835:12;797:2;888:1;913:53;958:7;949:6;938:9;934:22;913:53;:::i;:::-;903:63;;859:117;1015:2;1041:53;1086:7;1077:6;1066:9;1062:22;1041:53;:::i;:::-;1031:63;;986:118;787:324;;;;;:::o;1117:552::-;1194:6;1202;1210;1259:2;1247:9;1238:7;1234:23;1230:32;1227:2;;;1275:1;1272;1265:12;1227:2;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1573:2;1599:53;1644:7;1635:6;1624:9;1620:22;1599:53;:::i;:::-;1589:63;;1544:118;1217:452;;;;;:::o;1675:407::-;1743:6;1751;1800:2;1788:9;1779:7;1775:23;1771:32;1768:2;;;1816:1;1813;1806:12;1768:2;1859:1;1884:53;1929:7;1920:6;1909:9;1905:22;1884:53;:::i;:::-;1874:63;;1830:117;1986:2;2012:53;2057:7;2048:6;2037:9;2033:22;2012:53;:::i;:::-;2002:63;;1957:118;1758:324;;;;;:::o;2088:256::-;2144:6;2193:2;2181:9;2172:7;2168:23;2164:32;2161:2;;;2209:1;2206;2199:12;2161:2;2252:1;2277:50;2319:7;2310:6;2299:9;2295:22;2277:50;:::i;:::-;2267:60;;2223:114;2151:193;;;;:::o;2350:262::-;2409:6;2458:2;2446:9;2437:7;2433:23;2429:32;2426:2;;;2474:1;2471;2464:12;2426:2;2517:1;2542:53;2587:7;2578:6;2567:9;2563:22;2542:53;:::i;:::-;2532:63;;2488:117;2416:196;;;;:::o;2618:118::-;2705:24;2723:5;2705:24;:::i;:::-;2700:3;2693:37;2683:53;;:::o;2742:109::-;2823:21;2838:5;2823:21;:::i;:::-;2818:3;2811:34;2801:50;;:::o;2857:364::-;2945:3;2973:39;3006:5;2973:39;:::i;:::-;3028:71;3092:6;3087:3;3028:71;:::i;:::-;3021:78;;3108:52;3153:6;3148:3;3141:4;3134:5;3130:16;3108:52;:::i;:::-;3185:29;3207:6;3185:29;:::i;:::-;3180:3;3176:39;3169:46;;2949:272;;;;;:::o;3227:366::-;3369:3;3390:67;3454:2;3449:3;3390:67;:::i;:::-;3383:74;;3466:93;3555:3;3466:93;:::i;:::-;3584:2;3579:3;3575:12;3568:19;;3373:220;;;:::o;3599:366::-;3741:3;3762:67;3826:2;3821:3;3762:67;:::i;:::-;3755:74;;3838:93;3927:3;3838:93;:::i;:::-;3956:2;3951:3;3947:12;3940:19;;3745:220;;;:::o;3971:366::-;4113:3;4134:67;4198:2;4193:3;4134:67;:::i;:::-;4127:74;;4210:93;4299:3;4210:93;:::i;:::-;4328:2;4323:3;4319:12;4312:19;;4117:220;;;:::o;4343:366::-;4485:3;4506:67;4570:2;4565:3;4506:67;:::i;:::-;4499:74;;4582:93;4671:3;4582:93;:::i;:::-;4700:2;4695:3;4691:12;4684:19;;4489:220;;;:::o;4715:366::-;4857:3;4878:67;4942:2;4937:3;4878:67;:::i;:::-;4871:74;;4954:93;5043:3;4954:93;:::i;:::-;5072:2;5067:3;5063:12;5056:19;;4861:220;;;:::o;5087:366::-;5229:3;5250:67;5314:2;5309:3;5250:67;:::i;:::-;5243:74;;5326:93;5415:3;5326:93;:::i;:::-;5444:2;5439:3;5435:12;5428:19;;5233:220;;;:::o;5459:366::-;5601:3;5622:67;5686:2;5681:3;5622:67;:::i;:::-;5615:74;;5698:93;5787:3;5698:93;:::i;:::-;5816:2;5811:3;5807:12;5800:19;;5605:220;;;:::o;5831:366::-;5973:3;5994:67;6058:2;6053:3;5994:67;:::i;:::-;5987:74;;6070:93;6159:3;6070:93;:::i;:::-;6188:2;6183:3;6179:12;6172:19;;5977:220;;;:::o;6203:366::-;6345:3;6366:67;6430:2;6425:3;6366:67;:::i;:::-;6359:74;;6442:93;6531:3;6442:93;:::i;:::-;6560:2;6555:3;6551:12;6544:19;;6349:220;;;:::o;6575:366::-;6717:3;6738:67;6802:2;6797:3;6738:67;:::i;:::-;6731:74;;6814:93;6903:3;6814:93;:::i;:::-;6932:2;6927:3;6923:12;6916:19;;6721:220;;;:::o;6947:366::-;7089:3;7110:67;7174:2;7169:3;7110:67;:::i;:::-;7103:74;;7186:93;7275:3;7186:93;:::i;:::-;7304:2;7299:3;7295:12;7288:19;;7093:220;;;:::o;7319:366::-;7461:3;7482:67;7546:2;7541:3;7482:67;:::i;:::-;7475:74;;7558:93;7647:3;7558:93;:::i;:::-;7676:2;7671:3;7667:12;7660:19;;7465:220;;;:::o;7691:366::-;7833:3;7854:67;7918:2;7913:3;7854:67;:::i;:::-;7847:74;;7930:93;8019:3;7930:93;:::i;:::-;8048:2;8043:3;8039:12;8032:19;;7837:220;;;:::o;8063:366::-;8205:3;8226:67;8290:2;8285:3;8226:67;:::i;:::-;8219:74;;8302:93;8391:3;8302:93;:::i;:::-;8420:2;8415:3;8411:12;8404:19;;8209:220;;;:::o;8435:118::-;8522:24;8540:5;8522:24;:::i;:::-;8517:3;8510:37;8500:53;;:::o;8559:112::-;8642:22;8658:5;8642:22;:::i;:::-;8637:3;8630:35;8620:51;;:::o;8677:222::-;8770:4;8808:2;8797:9;8793:18;8785:26;;8821:71;8889:1;8878:9;8874:17;8865:6;8821:71;:::i;:::-;8775:124;;;;:::o;8905:210::-;8992:4;9030:2;9019:9;9015:18;9007:26;;9043:65;9105:1;9094:9;9090:17;9081:6;9043:65;:::i;:::-;8997:118;;;;:::o;9121:313::-;9234:4;9272:2;9261:9;9257:18;9249:26;;9321:9;9315:4;9311:20;9307:1;9296:9;9292:17;9285:47;9349:78;9422:4;9413:6;9349:78;:::i;:::-;9341:86;;9239:195;;;;:::o;9440:419::-;9606:4;9644:2;9633:9;9629:18;9621:26;;9693:9;9687:4;9683:20;9679:1;9668:9;9664:17;9657:47;9721:131;9847:4;9721:131;:::i;:::-;9713:139;;9611:248;;;:::o;9865:419::-;10031:4;10069:2;10058:9;10054:18;10046:26;;10118:9;10112:4;10108:20;10104:1;10093:9;10089:17;10082:47;10146:131;10272:4;10146:131;:::i;:::-;10138:139;;10036:248;;;:::o;10290:419::-;10456:4;10494:2;10483:9;10479:18;10471:26;;10543:9;10537:4;10533:20;10529:1;10518:9;10514:17;10507:47;10571:131;10697:4;10571:131;:::i;:::-;10563:139;;10461:248;;;:::o;10715:419::-;10881:4;10919:2;10908:9;10904:18;10896:26;;10968:9;10962:4;10958:20;10954:1;10943:9;10939:17;10932:47;10996:131;11122:4;10996:131;:::i;:::-;10988:139;;10886:248;;;:::o;11140:419::-;11306:4;11344:2;11333:9;11329:18;11321:26;;11393:9;11387:4;11383:20;11379:1;11368:9;11364:17;11357:47;11421:131;11547:4;11421:131;:::i;:::-;11413:139;;11311:248;;;:::o;11565:419::-;11731:4;11769:2;11758:9;11754:18;11746:26;;11818:9;11812:4;11808:20;11804:1;11793:9;11789:17;11782:47;11846:131;11972:4;11846:131;:::i;:::-;11838:139;;11736:248;;;:::o;11990:419::-;12156:4;12194:2;12183:9;12179:18;12171:26;;12243:9;12237:4;12233:20;12229:1;12218:9;12214:17;12207:47;12271:131;12397:4;12271:131;:::i;:::-;12263:139;;12161:248;;;:::o;12415:419::-;12581:4;12619:2;12608:9;12604:18;12596:26;;12668:9;12662:4;12658:20;12654:1;12643:9;12639:17;12632:47;12696:131;12822:4;12696:131;:::i;:::-;12688:139;;12586:248;;;:::o;12840:419::-;13006:4;13044:2;13033:9;13029:18;13021:26;;13093:9;13087:4;13083:20;13079:1;13068:9;13064:17;13057:47;13121:131;13247:4;13121:131;:::i;:::-;13113:139;;13011:248;;;:::o;13265:419::-;13431:4;13469:2;13458:9;13454:18;13446:26;;13518:9;13512:4;13508:20;13504:1;13493:9;13489:17;13482:47;13546:131;13672:4;13546:131;:::i;:::-;13538:139;;13436:248;;;:::o;13690:419::-;13856:4;13894:2;13883:9;13879:18;13871:26;;13943:9;13937:4;13933:20;13929:1;13918:9;13914:17;13907:47;13971:131;14097:4;13971:131;:::i;:::-;13963:139;;13861:248;;;:::o;14115:419::-;14281:4;14319:2;14308:9;14304:18;14296:26;;14368:9;14362:4;14358:20;14354:1;14343:9;14339:17;14332:47;14396:131;14522:4;14396:131;:::i;:::-;14388:139;;14286:248;;;:::o;14540:419::-;14706:4;14744:2;14733:9;14729:18;14721:26;;14793:9;14787:4;14783:20;14779:1;14768:9;14764:17;14757:47;14821:131;14947:4;14821:131;:::i;:::-;14813:139;;14711:248;;;:::o;14965:419::-;15131:4;15169:2;15158:9;15154:18;15146:26;;15218:9;15212:4;15208:20;15204:1;15193:9;15189:17;15182:47;15246:131;15372:4;15246:131;:::i;:::-;15238:139;;15136:248;;;:::o;15390:222::-;15483:4;15521:2;15510:9;15506:18;15498:26;;15534:71;15602:1;15591:9;15587:17;15578:6;15534:71;:::i;:::-;15488:124;;;;:::o;15618:214::-;15707:4;15745:2;15734:9;15730:18;15722:26;;15758:67;15822:1;15811:9;15807:17;15798:6;15758:67;:::i;:::-;15712:120;;;;:::o;15838:99::-;15890:6;15924:5;15918:12;15908:22;;15897:40;;;:::o;15943:169::-;16027:11;16061:6;16056:3;16049:19;16101:4;16096:3;16092:14;16077:29;;16039:73;;;;:::o;16118:305::-;16158:3;16177:20;16195:1;16177:20;:::i;:::-;16172:25;;16211:20;16229:1;16211:20;:::i;:::-;16206:25;;16365:1;16297:66;16293:74;16290:1;16287:81;16284:2;;;16371:18;;:::i;:::-;16284:2;16415:1;16412;16408:9;16401:16;;16162:261;;;;:::o;16429:96::-;16466:7;16495:24;16513:5;16495:24;:::i;:::-;16484:35;;16474:51;;;:::o;16531:90::-;16565:7;16608:5;16601:13;16594:21;16583:32;;16573:48;;;:::o;16627:126::-;16664:7;16704:42;16697:5;16693:54;16682:65;;16672:81;;;:::o;16759:77::-;16796:7;16825:5;16814:16;;16804:32;;;:::o;16842:86::-;16877:7;16917:4;16910:5;16906:16;16895:27;;16885:43;;;:::o;16934:307::-;17002:1;17012:113;17026:6;17023:1;17020:13;17012:113;;;17111:1;17106:3;17102:11;17096:18;17092:1;17087:3;17083:11;17076:39;17048:2;17045:1;17041:10;17036:15;;17012:113;;;17143:6;17140:1;17137:13;17134:2;;;17223:1;17214:6;17209:3;17205:16;17198:27;17134:2;16983:258;;;;:::o;17247:320::-;17291:6;17328:1;17322:4;17318:12;17308:22;;17375:1;17369:4;17365:12;17396:18;17386:2;;17452:4;17444:6;17440:17;17430:27;;17386:2;17514;17506:6;17503:14;17483:18;17480:38;17477:2;;;17533:18;;:::i;:::-;17477:2;17298:269;;;;:::o;17573:180::-;17621:77;17618:1;17611:88;17718:4;17715:1;17708:15;17742:4;17739:1;17732:15;17759:180;17807:77;17804:1;17797:88;17904:4;17901:1;17894:15;17928:4;17925:1;17918:15;17945:102;17986:6;18037:2;18033:7;18028:2;18021:5;18017:14;18013:28;18003:38;;17993:54;;;:::o;18053:222::-;18193:34;18189:1;18181:6;18177:14;18170:58;18262:5;18257:2;18249:6;18245:15;18238:30;18159:116;:::o;18281:179::-;18421:31;18417:1;18409:6;18405:14;18398:55;18387:73;:::o;18466:250::-;18606:34;18602:1;18594:6;18590:14;18583:58;18675:33;18670:2;18662:6;18658:15;18651:58;18572:144;:::o;18722:225::-;18862:34;18858:1;18850:6;18846:14;18839:58;18931:8;18926:2;18918:6;18914:15;18907:33;18828:119;:::o;18953:221::-;19093:34;19089:1;19081:6;19077:14;19070:58;19162:4;19157:2;19149:6;19145:15;19138:29;19059:115;:::o;19180:226::-;19320:34;19316:1;19308:6;19304:14;19297:58;19389:9;19384:2;19376:6;19372:15;19365:34;19286:120;:::o;19412:179::-;19552:31;19548:1;19540:6;19536:14;19529:55;19518:73;:::o;19597:225::-;19737:34;19733:1;19725:6;19721:14;19714:58;19806:8;19801:2;19793:6;19789:15;19782:33;19703:119;:::o;19828:228::-;19968:34;19964:1;19956:6;19952:14;19945:58;20037:11;20032:2;20024:6;20020:15;20013:36;19934:122;:::o;20062:182::-;20202:34;20198:1;20190:6;20186:14;20179:58;20168:76;:::o;20250:228::-;20390:34;20386:1;20378:6;20374:14;20367:58;20459:11;20454:2;20446:6;20442:15;20435:36;20356:122;:::o;20484:224::-;20624:34;20620:1;20612:6;20608:14;20601:58;20693:7;20688:2;20680:6;20676:15;20669:32;20590:118;:::o;20714:223::-;20854:34;20850:1;20842:6;20838:14;20831:58;20923:6;20918:2;20910:6;20906:15;20899:31;20820:117;:::o;20943:224::-;21083:34;21079:1;21071:6;21067:14;21060:58;21152:7;21147:2;21139:6;21135:15;21128:32;21049:118;:::o;21173:122::-;21246:24;21264:5;21246:24;:::i;:::-;21239:5;21236:35;21226:2;;21285:1;21282;21275:12;21226:2;21216:79;:::o;21301:116::-;21371:21;21386:5;21371:21;:::i;:::-;21364:5;21361:32;21351:2;;21407:1;21404;21397:12;21351:2;21341:76;:::o;21423:122::-;21496:24;21514:5;21496:24;:::i;:::-;21489:5;21486:35;21476:2;;21535:1;21532;21525:12;21476:2;21466:79;:::o
Swarm Source
ipfs://01ec6d10012cb5ced63c778c6076828a7651ebf762accff095dde08ade8b7f84
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.