Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 DumGai
Holders
182
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SunDumGaiToken
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-02 */ /** *Submitted for verification at Etherscan.io on 2024-10-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ 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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC-20 standard. */ 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); } /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } /** * @dev Standard ERC-20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC-721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC-1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @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 { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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 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}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * 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 ERC-20 * applications. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 default value returned by this function, unless * it's 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 returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual 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 `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` 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 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Skips emitting an {Approval} event indicating an allowance update. This is not * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. * * 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 `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` 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. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal virtual { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` 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. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * * ```solidity * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } contract SunDumGaiToken is ERC20, Ownable { uint256 public constant MAX_WALLET_PERCENTAGE = 3; uint256 public constant MAX_TX_PERCENTAGE = 3; bool public limitsEnforced = true; mapping(address => bool) excludedFromMaxWallet; mapping(address => bool) excludedFromMaxTxn; error ExceedsMaxWallet(uint256 currentBalance, uint256 maxAllowed); error ExceedsMaxTransaction(uint256 amount, uint256 maxAllowed); constructor () ERC20("SunDumGai", "DumGai") Ownable(msg.sender) { super._mint(msg.sender, 1000000000000000000000000000); excludedFromMaxWallet[msg.sender] = true; excludedFromMaxTxn[msg.sender] = true; } function disableLimits() external onlyOwner { limitsEnforced = false; } function setExcludedFromMaxWallet(address wallet, bool isExcluded) external onlyOwner { excludedFromMaxWallet[wallet] = isExcluded; } function setExcludedFromMaxTxn(address wallet, bool isExcluded) external onlyOwner { excludedFromMaxTxn[wallet] = isExcluded; } function _transfer(address from, address to, uint256 value) internal override { if (limitsEnforced) { uint256 totalSupply = totalSupply(); uint256 maxWalletAmount = totalSupply * MAX_WALLET_PERCENTAGE / 100; uint256 maxTxAmount = totalSupply * MAX_TX_PERCENTAGE / 100; if (!excludedFromMaxWallet[to] && balanceOf(to) + value > maxWalletAmount) { revert ExceedsMaxWallet(balanceOf(to) + value, maxWalletAmount); } if (!excludedFromMaxTxn[from] && value > maxTxAmount) { revert ExceedsMaxTransaction(value, maxTxAmount); } } return super._transfer(from, to, value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAllowed","type":"uint256"}],"name":"ExceedsMaxTransaction","type":"error"},{"inputs":[{"internalType":"uint256","name":"currentBalance","type":"uint256"},{"internalType":"uint256","name":"maxAllowed","type":"uint256"}],"name":"ExceedsMaxWallet","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"MAX_TX_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_WALLET_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"value","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":[],"name":"disableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsEnforced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"setExcludedFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"setExcludedFromMaxWallet","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","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
60806040526001600560146101000a81548160ff0219169083151502179055503480156200002b575f80fd5b50336040518060400160405280600981526020017f53756e44756d47616900000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f44756d47616900000000000000000000000000000000000000000000000000008152508160039081620000aa9190620007e7565b508060049081620000bc9190620007e7565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000132575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200012991906200090e565b60405180910390fd5b62000143816200021260201b60201c565b5062000162336b033b2e3c9fd0803ce8000000620002d560201b60201c565b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009f7565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000348575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200033f91906200090e565b60405180910390fd5b6200035b5f83836200035f60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003b3578060025f828254620003a6919062000956565b9250508190555062000484565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200043f578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200043693929190620009a1565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cd578060025f828254039250508190555062000517565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005769190620009dc565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005ff57607f821691505b602082108103620006155762000614620005ba565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200063c565b6200068586836200063c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006cf620006c9620006c3846200069d565b620006a6565b6200069d565b9050919050565b5f819050919050565b620006ea83620006af565b62000702620006f982620006d6565b84845462000648565b825550505050565b5f90565b620007186200070a565b62000725818484620006df565b505050565b5b818110156200074c57620007405f826200070e565b6001810190506200072b565b5050565b601f8211156200079b5762000765816200061b565b62000770846200062d565b8101602085101562000780578190505b620007986200078f856200062d565b8301826200072a565b50505b505050565b5f82821c905092915050565b5f620007bd5f1984600802620007a0565b1980831691505092915050565b5f620007d78383620007ac565b9150826002028217905092915050565b620007f28262000583565b67ffffffffffffffff8111156200080e576200080d6200058d565b5b6200081a8254620005e7565b6200082782828562000750565b5f60209050601f8311600181146200085d575f841562000848578287015190505b620008548582620007ca565b865550620008c3565b601f1984166200086d866200061b565b5f5b8281101562000896578489015182556001820191506020850194506020810190506200086f565b86831015620008b65784890151620008b2601f891682620007ac565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008f682620008cb565b9050919050565b6200090881620008ea565b82525050565b5f602082019050620009235f830184620008fd565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000962826200069d565b91506200096f836200069d565b92508282019050808211156200098a576200098962000929565b5b92915050565b6200099b816200069d565b82525050565b5f606082019050620009b65f830186620008fd565b620009c5602083018562000990565b620009d4604083018462000990565b949350505050565b5f602082019050620009f15f83018462000990565b92915050565b61155b8062000a055f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806370a08231116100a057806395d89b411161006f57806395d89b41146102bc578063a9059cbb146102da578063dd62ed3e1461030a578063f2fde38b1461033a578063f928364c1461035657610114565b806370a0823114610248578063715018a6146102785780637c587ed1146102825780638da5cb5b1461029e57610114565b806318160ddd116100e757806318160ddd146101a257806323b872dd146101c057806329c6b348146101f0578063313ce5671461020e578063412201041461022c57610114565b8063066471251461011857806306fdde0314610136578063095ea7b3146101545780631774f7c014610184575b5f80fd5b610120610360565b60405161012d9190611035565b60405180910390f35b61013e610365565b60405161014b91906110d8565b60405180910390f35b61016e60048036038101906101699190611180565b6103f5565b60405161017b91906111d8565b60405180910390f35b61018c610417565b6040516101999190611035565b60405180910390f35b6101aa61041c565b6040516101b79190611035565b60405180910390f35b6101da60048036038101906101d591906111f1565b610425565b6040516101e791906111d8565b60405180910390f35b6101f8610453565b60405161020591906111d8565b60405180910390f35b610216610466565b604051610223919061125c565b60405180910390f35b6102466004803603810190610241919061129f565b61046e565b005b610262600480360381019061025d91906112dd565b6104ce565b60405161026f9190611035565b60405180910390f35b610280610513565b005b61029c6004803603810190610297919061129f565b610526565b005b6102a6610586565b6040516102b39190611317565b60405180910390f35b6102c46105ae565b6040516102d191906110d8565b60405180910390f35b6102f460048036038101906102ef9190611180565b61063e565b60405161030191906111d8565b60405180910390f35b610324600480360381019061031f9190611330565b610660565b6040516103319190611035565b60405180910390f35b610354600480360381019061034f91906112dd565b6106e2565b005b61035e610766565b005b600381565b6060600380546103749061139b565b80601f01602080910402602001604051908101604052809291908181526020018280546103a09061139b565b80156103eb5780601f106103c2576101008083540402835291602001916103eb565b820191905f5260205f20905b8154815290600101906020018083116103ce57829003601f168201915b5050505050905090565b5f806103ff61078a565b905061040c818585610791565b600191505092915050565b600381565b5f600254905090565b5f8061042f61078a565b905061043c8582856107a3565b610447858585610835565b60019150509392505050565b600560149054906101000a900460ff1681565b5f6012905090565b6104766109fb565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61051b6109fb565b6105245f610a82565b565b61052e6109fb565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105bd9061139b565b80601f01602080910402602001604051908101604052809291908181526020018280546105e99061139b565b80156106345780601f1061060b57610100808354040283529160200191610634565b820191905f5260205f20905b81548152906001019060200180831161061757829003601f168201915b5050505050905090565b5f8061064861078a565b9050610655818585610835565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106ea6109fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361075a575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107519190611317565b60405180910390fd5b61076381610a82565b50565b61076e6109fb565b5f600560146101000a81548160ff021916908315150217905550565b5f33905090565b61079e8383836001610b45565b505050565b5f6107ae8484610660565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082f5781811015610820578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610817939291906113cb565b60405180910390fd5b61082e84848484035f610b45565b5b50505050565b600560149054906101000a900460ff16156109eb575f61085361041c565b90505f6064600383610865919061142d565b61086f919061149b565b90505f6064600384610881919061142d565b61088b919061149b565b905060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156108f6575081846108ea876104ce565b6108f491906114cb565b115b1561094d5783610905866104ce565b61090f91906114cb565b826040517f3a93861d0000000000000000000000000000000000000000000000000000000081526004016109449291906114fe565b60405180910390fd5b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156109a357508084115b156109e75783816040517fc3516a770000000000000000000000000000000000000000000000000000000081526004016109de9291906114fe565b60405180910390fd5b5050505b6109f6838383610d14565b505050565b610a0361078a565b73ffffffffffffffffffffffffffffffffffffffff16610a21610586565b73ffffffffffffffffffffffffffffffffffffffff1614610a8057610a4461078a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a779190611317565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bb5575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610bac9190611317565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c25575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c1c9190611317565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d0e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d059190611035565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d84575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d7b9190611317565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610df4575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610deb9190611317565b60405180910390fd5b610dff838383610e04565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e54578060025f828254610e4891906114cb565b92505081905550610f22565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610edd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ed4939291906113cb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f69578060025f8282540392505081905550610fb3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110109190611035565b60405180910390a3505050565b5f819050919050565b61102f8161101d565b82525050565b5f6020820190506110485f830184611026565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561108557808201518184015260208101905061106a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6110aa8261104e565b6110b48185611058565b93506110c4818560208601611068565b6110cd81611090565b840191505092915050565b5f6020820190508181035f8301526110f081846110a0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611125826110fc565b9050919050565b6111358161111b565b811461113f575f80fd5b50565b5f813590506111508161112c565b92915050565b61115f8161101d565b8114611169575f80fd5b50565b5f8135905061117a81611156565b92915050565b5f8060408385031215611196576111956110f8565b5b5f6111a385828601611142565b92505060206111b48582860161116c565b9150509250929050565b5f8115159050919050565b6111d2816111be565b82525050565b5f6020820190506111eb5f8301846111c9565b92915050565b5f805f60608486031215611208576112076110f8565b5b5f61121586828701611142565b935050602061122686828701611142565b92505060406112378682870161116c565b9150509250925092565b5f60ff82169050919050565b61125681611241565b82525050565b5f60208201905061126f5f83018461124d565b92915050565b61127e816111be565b8114611288575f80fd5b50565b5f8135905061129981611275565b92915050565b5f80604083850312156112b5576112b46110f8565b5b5f6112c285828601611142565b92505060206112d38582860161128b565b9150509250929050565b5f602082840312156112f2576112f16110f8565b5b5f6112ff84828501611142565b91505092915050565b6113118161111b565b82525050565b5f60208201905061132a5f830184611308565b92915050565b5f8060408385031215611346576113456110f8565b5b5f61135385828601611142565b925050602061136485828601611142565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113b257607f821691505b6020821081036113c5576113c461136e565b5b50919050565b5f6060820190506113de5f830186611308565b6113eb6020830185611026565b6113f86040830184611026565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114378261101d565b91506114428361101d565b92508282026114508161101d565b9150828204841483151761146757611466611400565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6114a58261101d565b91506114b08361101d565b9250826114c0576114bf61146e565b5b828204905092915050565b5f6114d58261101d565b91506114e08361101d565b92508282019050808211156114f8576114f7611400565b5b92915050565b5f6040820190506115115f830185611026565b61151e6020830184611026565b939250505056fea2646970667358221220b67c4aa8c04aca186c786f697e5ff86afa10b2a7b005948ed4369c713cb901a364736f6c63430008140033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610114575f3560e01c806370a08231116100a057806395d89b411161006f57806395d89b41146102bc578063a9059cbb146102da578063dd62ed3e1461030a578063f2fde38b1461033a578063f928364c1461035657610114565b806370a0823114610248578063715018a6146102785780637c587ed1146102825780638da5cb5b1461029e57610114565b806318160ddd116100e757806318160ddd146101a257806323b872dd146101c057806329c6b348146101f0578063313ce5671461020e578063412201041461022c57610114565b8063066471251461011857806306fdde0314610136578063095ea7b3146101545780631774f7c014610184575b5f80fd5b610120610360565b60405161012d9190611035565b60405180910390f35b61013e610365565b60405161014b91906110d8565b60405180910390f35b61016e60048036038101906101699190611180565b6103f5565b60405161017b91906111d8565b60405180910390f35b61018c610417565b6040516101999190611035565b60405180910390f35b6101aa61041c565b6040516101b79190611035565b60405180910390f35b6101da60048036038101906101d591906111f1565b610425565b6040516101e791906111d8565b60405180910390f35b6101f8610453565b60405161020591906111d8565b60405180910390f35b610216610466565b604051610223919061125c565b60405180910390f35b6102466004803603810190610241919061129f565b61046e565b005b610262600480360381019061025d91906112dd565b6104ce565b60405161026f9190611035565b60405180910390f35b610280610513565b005b61029c6004803603810190610297919061129f565b610526565b005b6102a6610586565b6040516102b39190611317565b60405180910390f35b6102c46105ae565b6040516102d191906110d8565b60405180910390f35b6102f460048036038101906102ef9190611180565b61063e565b60405161030191906111d8565b60405180910390f35b610324600480360381019061031f9190611330565b610660565b6040516103319190611035565b60405180910390f35b610354600480360381019061034f91906112dd565b6106e2565b005b61035e610766565b005b600381565b6060600380546103749061139b565b80601f01602080910402602001604051908101604052809291908181526020018280546103a09061139b565b80156103eb5780601f106103c2576101008083540402835291602001916103eb565b820191905f5260205f20905b8154815290600101906020018083116103ce57829003601f168201915b5050505050905090565b5f806103ff61078a565b905061040c818585610791565b600191505092915050565b600381565b5f600254905090565b5f8061042f61078a565b905061043c8582856107a3565b610447858585610835565b60019150509392505050565b600560149054906101000a900460ff1681565b5f6012905090565b6104766109fb565b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61051b6109fb565b6105245f610a82565b565b61052e6109fb565b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105bd9061139b565b80601f01602080910402602001604051908101604052809291908181526020018280546105e99061139b565b80156106345780601f1061060b57610100808354040283529160200191610634565b820191905f5260205f20905b81548152906001019060200180831161061757829003601f168201915b5050505050905090565b5f8061064861078a565b9050610655818585610835565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106ea6109fb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361075a575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016107519190611317565b60405180910390fd5b61076381610a82565b50565b61076e6109fb565b5f600560146101000a81548160ff021916908315150217905550565b5f33905090565b61079e8383836001610b45565b505050565b5f6107ae8484610660565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082f5781811015610820578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610817939291906113cb565b60405180910390fd5b61082e84848484035f610b45565b5b50505050565b600560149054906101000a900460ff16156109eb575f61085361041c565b90505f6064600383610865919061142d565b61086f919061149b565b90505f6064600384610881919061142d565b61088b919061149b565b905060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156108f6575081846108ea876104ce565b6108f491906114cb565b115b1561094d5783610905866104ce565b61090f91906114cb565b826040517f3a93861d0000000000000000000000000000000000000000000000000000000081526004016109449291906114fe565b60405180910390fd5b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156109a357508084115b156109e75783816040517fc3516a770000000000000000000000000000000000000000000000000000000081526004016109de9291906114fe565b60405180910390fd5b5050505b6109f6838383610d14565b505050565b610a0361078a565b73ffffffffffffffffffffffffffffffffffffffff16610a21610586565b73ffffffffffffffffffffffffffffffffffffffff1614610a8057610a4461078a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610a779190611317565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610bb5575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610bac9190611317565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c25575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c1c9190611317565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d0e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d059190611035565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d84575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610d7b9190611317565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610df4575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610deb9190611317565b60405180910390fd5b610dff838383610e04565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e54578060025f828254610e4891906114cb565b92505081905550610f22565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610edd578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ed4939291906113cb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f69578060025f8282540392505081905550610fb3565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110109190611035565b60405180910390a3505050565b5f819050919050565b61102f8161101d565b82525050565b5f6020820190506110485f830184611026565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561108557808201518184015260208101905061106a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6110aa8261104e565b6110b48185611058565b93506110c4818560208601611068565b6110cd81611090565b840191505092915050565b5f6020820190508181035f8301526110f081846110a0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611125826110fc565b9050919050565b6111358161111b565b811461113f575f80fd5b50565b5f813590506111508161112c565b92915050565b61115f8161101d565b8114611169575f80fd5b50565b5f8135905061117a81611156565b92915050565b5f8060408385031215611196576111956110f8565b5b5f6111a385828601611142565b92505060206111b48582860161116c565b9150509250929050565b5f8115159050919050565b6111d2816111be565b82525050565b5f6020820190506111eb5f8301846111c9565b92915050565b5f805f60608486031215611208576112076110f8565b5b5f61121586828701611142565b935050602061122686828701611142565b92505060406112378682870161116c565b9150509250925092565b5f60ff82169050919050565b61125681611241565b82525050565b5f60208201905061126f5f83018461124d565b92915050565b61127e816111be565b8114611288575f80fd5b50565b5f8135905061129981611275565b92915050565b5f80604083850312156112b5576112b46110f8565b5b5f6112c285828601611142565b92505060206112d38582860161128b565b9150509250929050565b5f602082840312156112f2576112f16110f8565b5b5f6112ff84828501611142565b91505092915050565b6113118161111b565b82525050565b5f60208201905061132a5f830184611308565b92915050565b5f8060408385031215611346576113456110f8565b5b5f61135385828601611142565b925050602061136485828601611142565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113b257607f821691505b6020821081036113c5576113c461136e565b5b50919050565b5f6060820190506113de5f830186611308565b6113eb6020830185611026565b6113f86040830184611026565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114378261101d565b91506114428361101d565b92508282026114508161101d565b9150828204841483151761146757611466611400565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6114a58261101d565b91506114b08361101d565b9250826114c0576114bf61146e565b5b828204905092915050565b5f6114d58261101d565b91506114e08361101d565b92508282019050808211156114f8576114f7611400565b5b92915050565b5f6040820190506115115f830185611026565b61151e6020830184611026565b939250505056fea2646970667358221220b67c4aa8c04aca186c786f697e5ff86afa10b2a7b005948ed4369c713cb901a364736f6c63430008140033
Deployed Bytecode Sourcemap
24676:1822:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24727:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15286:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17579:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24783:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16388:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18379:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24835:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16239:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25463:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16550:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12977:103;;;:::i;:::-;;25618:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12302:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15496:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16873:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17118:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13235:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25370:85;;;:::i;:::-;;24727:49;24775:1;24727:49;:::o;15286:91::-;15331:13;15364:5;15357:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15286:91;:::o;17579:190::-;17652:4;17669:13;17685:12;:10;:12::i;:::-;17669:28;;17708:31;17717:5;17724:7;17733:5;17708:8;:31::i;:::-;17757:4;17750:11;;;17579:190;;;;:::o;24783:45::-;24827:1;24783:45;:::o;16388:99::-;16440:7;16467:12;;16460:19;;16388:99;:::o;18379:249::-;18466:4;18483:15;18501:12;:10;:12::i;:::-;18483:30;;18524:37;18540:4;18546:7;18555:5;18524:15;:37::i;:::-;18572:26;18582:4;18588:2;18592:5;18572:9;:26::i;:::-;18616:4;18609:11;;;18379:249;;;;;:::o;24835:33::-;;;;;;;;;;;;;:::o;16239:84::-;16288:5;16313:2;16306:9;;16239:84;:::o;25463:147::-;12188:13;:11;:13::i;:::-;25592:10:::1;25560:21;:29;25582:6;25560:29;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25463:147:::0;;:::o;16550:118::-;16615:7;16642:9;:18;16652:7;16642:18;;;;;;;;;;;;;;;;16635:25;;16550:118;;;:::o;12977:103::-;12188:13;:11;:13::i;:::-;13042:30:::1;13069:1;13042:18;:30::i;:::-;12977:103::o:0;25618:141::-;12188:13;:11;:13::i;:::-;25741:10:::1;25712:18;:26;25731:6;25712:26;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25618:141:::0;;:::o;12302:87::-;12348:7;12375:6;;;;;;;;;;;12368:13;;12302:87;:::o;15496:95::-;15543:13;15576:7;15569:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15496:95;:::o;16873:182::-;16942:4;16959:13;16975:12;:10;:12::i;:::-;16959:28;;16998:27;17008:5;17015:2;17019:5;16998:9;:27::i;:::-;17043:4;17036:11;;;16873:182;;;;:::o;17118:142::-;17198:7;17225:11;:18;17237:5;17225:18;;;;;;;;;;;;;;;:27;17244:7;17225:27;;;;;;;;;;;;;;;;17218:34;;17118:142;;;;:::o;13235:220::-;12188:13;:11;:13::i;:::-;13340:1:::1;13320:22;;:8;:22;;::::0;13316:93:::1;;13394:1;13366:31;;;;;;;;;;;:::i;:::-;;;;;;;;13316:93;13419:28;13438:8;13419:18;:28::i;:::-;13235:220:::0;:::o;25370:85::-;12188:13;:11;:13::i;:::-;25442:5:::1;25425:14;;:22;;;;;;;;;;;;;;;;;;25370:85::o:0;3911:98::-;3964:7;3991:10;3984:17;;3911:98;:::o;22446:130::-;22531:37;22540:5;22547:7;22556:5;22563:4;22531:8;:37::i;:::-;22446:130;;;:::o;24178:487::-;24278:24;24305:25;24315:5;24322:7;24305:9;:25::i;:::-;24278:52;;24365:17;24345:16;:37;24341:317;;24422:5;24403:16;:24;24399:132;;;24482:7;24491:16;24509:5;24455:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;24399:132;24574:57;24583:5;24590:7;24618:5;24599:16;:24;24625:5;24574:8;:57::i;:::-;24341:317;24267:398;24178:487;;;:::o;25767:728::-;25860:14;;;;;;;;;;;25856:580;;;25891:19;25913:13;:11;:13::i;:::-;25891:35;;25941:23;26005:3;24775:1;25967:11;:35;;;;:::i;:::-;:41;;;;:::i;:::-;25941:67;;26023:19;26079:3;24827:1;26045:11;:31;;;;:::i;:::-;:37;;;;:::i;:::-;26023:59;;26104:21;:25;26126:2;26104:25;;;;;;;;;;;;;;;;;;;;;;;;;26103:26;:69;;;;;26157:15;26149:5;26133:13;26143:2;26133:9;:13::i;:::-;:21;;;;:::i;:::-;:39;26103:69;26099:173;;;26233:5;26217:13;26227:2;26217:9;:13::i;:::-;:21;;;;:::i;:::-;26240:15;26200:56;;;;;;;;;;;;:::i;:::-;;;;;;;;26099:173;26293:18;:24;26312:4;26293:24;;;;;;;;;;;;;;;;;;;;;;;;;26292:25;:48;;;;;26329:11;26321:5;:19;26292:48;26288:137;;;26390:5;26397:11;26368:41;;;;;;;;;;;;:::i;:::-;;;;;;;;26288:137;25876:560;;;25856:580;26455:32;26471:4;26477:2;26481:5;26455:15;:32::i;:::-;25767:728;;;:::o;12467:166::-;12538:12;:10;:12::i;:::-;12527:23;;:7;:5;:7::i;:::-;:23;;;12523:103;;12601:12;:10;:12::i;:::-;12574:40;;;;;;;;;;;:::i;:::-;;;;;;;;12523:103;12467:166::o;13615:191::-;13689:16;13708:6;;;;;;;;;;;13689:25;;13734:8;13725:6;;:17;;;;;;;;;;;;;;;;;;13789:8;13758:40;;13779:8;13758:40;;;;;;;;;;;;13678:128;13615:191;:::o;23443:443::-;23573:1;23556:19;;:5;:19;;;23552:91;;23628:1;23599:32;;;;;;;;;;;:::i;:::-;;;;;;;;23552:91;23676:1;23657:21;;:7;:21;;;23653:92;;23730:1;23702:31;;;;;;;;;;;:::i;:::-;;;;;;;;23653:92;23785:5;23755:11;:18;23767:5;23755:18;;;;;;;;;;;;;;;:27;23774:7;23755:27;;;;;;;;;;;;;;;:35;;;;23805:9;23801:78;;;23852:7;23836:31;;23845:5;23836:31;;;23861:5;23836:31;;;;;;:::i;:::-;;;;;;;;23801:78;23443:443;;;;:::o;19013:316::-;19121:1;19105:18;;:4;:18;;;19101:88;;19174:1;19147:30;;;;;;;;;;;:::i;:::-;;;;;;;;19101:88;19217:1;19203:16;;:2;:16;;;19199:88;;19272:1;19243:32;;;;;;;;;;;:::i;:::-;;;;;;;;19199:88;19297:24;19305:4;19311:2;19315:5;19297:7;:24::i;:::-;19013:316;;;:::o;19653:1135::-;19759:1;19743:18;;:4;:18;;;19739:552;;19897:5;19881:12;;:21;;;;;;;:::i;:::-;;;;;;;;19739:552;;;19935:19;19957:9;:15;19967:4;19957:15;;;;;;;;;;;;;;;;19935:37;;20005:5;19991:11;:19;19987:117;;;20063:4;20069:11;20082:5;20038:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;19987:117;20259:5;20245:11;:19;20227:9;:15;20237:4;20227:15;;;;;;;;;;;;;;;:37;;;;19920:371;19739:552;20321:1;20307:16;;:2;:16;;;20303:435;;20489:5;20473:12;;:21;;;;;;;;;;;20303:435;;;20706:5;20689:9;:13;20699:2;20689:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;20303:435;20770:2;20755:25;;20764:4;20755:25;;;20774:5;20755:25;;;;;;:::i;:::-;;;;;;;;19653:1135;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:116::-;4923:21;4938:5;4923:21;:::i;:::-;4916:5;4913:32;4903:60;;4959:1;4956;4949:12;4903:60;4853:116;:::o;4975:133::-;5018:5;5056:6;5043:20;5034:29;;5072:30;5096:5;5072:30;:::i;:::-;4975:133;;;;:::o;5114:468::-;5179:6;5187;5236:2;5224:9;5215:7;5211:23;5207:32;5204:119;;;5242:79;;:::i;:::-;5204:119;5362:1;5387:53;5432:7;5423:6;5412:9;5408:22;5387:53;:::i;:::-;5377:63;;5333:117;5489:2;5515:50;5557:7;5548:6;5537:9;5533:22;5515:50;:::i;:::-;5505:60;;5460:115;5114:468;;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:320;6985:6;7022:1;7016:4;7012:12;7002:22;;7069:1;7063:4;7059:12;7090:18;7080:81;;7146:4;7138:6;7134:17;7124:27;;7080:81;7208:2;7200:6;7197:14;7177:18;7174:38;7171:84;;7227:18;;:::i;:::-;7171:84;6992:269;6941:320;;;:::o;7267:442::-;7416:4;7454:2;7443:9;7439:18;7431:26;;7467:71;7535:1;7524:9;7520:17;7511:6;7467:71;:::i;:::-;7548:72;7616:2;7605:9;7601:18;7592:6;7548:72;:::i;:::-;7630;7698:2;7687:9;7683:18;7674:6;7630:72;:::i;:::-;7267:442;;;;;;:::o;7715:180::-;7763:77;7760:1;7753:88;7860:4;7857:1;7850:15;7884:4;7881:1;7874:15;7901:410;7941:7;7964:20;7982:1;7964:20;:::i;:::-;7959:25;;7998:20;8016:1;7998:20;:::i;:::-;7993:25;;8053:1;8050;8046:9;8075:30;8093:11;8075:30;:::i;:::-;8064:41;;8254:1;8245:7;8241:15;8238:1;8235:22;8215:1;8208:9;8188:83;8165:139;;8284:18;;:::i;:::-;8165:139;7949:362;7901:410;;;;:::o;8317:180::-;8365:77;8362:1;8355:88;8462:4;8459:1;8452:15;8486:4;8483:1;8476:15;8503:185;8543:1;8560:20;8578:1;8560:20;:::i;:::-;8555:25;;8594:20;8612:1;8594:20;:::i;:::-;8589:25;;8633:1;8623:35;;8638:18;;:::i;:::-;8623:35;8680:1;8677;8673:9;8668:14;;8503:185;;;;:::o;8694:191::-;8734:3;8753:20;8771:1;8753:20;:::i;:::-;8748:25;;8787:20;8805:1;8787:20;:::i;:::-;8782:25;;8830:1;8827;8823:9;8816:16;;8851:3;8848:1;8845:10;8842:36;;;8858:18;;:::i;:::-;8842:36;8694:191;;;;:::o;8891:332::-;9012:4;9050:2;9039:9;9035:18;9027:26;;9063:71;9131:1;9120:9;9116:17;9107:6;9063:71;:::i;:::-;9144:72;9212:2;9201:9;9197:18;9188:6;9144:72;:::i;:::-;8891:332;;;;;:::o
Swarm Source
ipfs://b67c4aa8c04aca186c786f697e5ff86afa10b2a7b005948ed4369c713cb901a3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.