ETH Price: $2,519.69 (+2.90%)

Token

GalacticGuardians (GALACTICGUARDIANS)
 

Overview

Max Total Supply

415 GALACTICGUARDIANS

Holders

114

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 GALACTICGUARDIANS
0x49b968bb3ee23671c66b3382f4d8ab0239903adb
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GalacticGuardians

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : GalacticGuardians.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@rari-capital/solmate/src/utils/ReentrancyGuard.sol";
import "@rari-capital/solmate/src/tokens/ERC721.sol";

contract GalacticGuardians is ReentrancyGuard, Ownable, ERC721 {
    uint256 public totalSupply;

    uint256 public constant MINT_PRICE = 0.008 ether;
    uint256 public constant MAX_SUPPLY = 8888;

    uint256 public constant MAX_PER_WALLET = 10;
    uint256 public constant MAX_FREE_PER_WALLET = 2;

    uint256 public constant MAX_PER_TX = 2;
    uint256 public constant MAX_FREE_PER_TX = 2;

    mapping(address => uint256) addressToPayableMintCount;
    mapping(address => uint256) addressToFreeMintCount;

    string internal _baseURI;

    constructor(string memory _uri)
        ERC721("GalacticGuardians", "GALACTICGUARDIANS")
    {
        _baseURI = _uri;

        address[] memory team = new address[](5);
        // Commander Gayamede
        team[0] = 0xC0Ac177CCFD53001182169568747fCCAAFD5c98B;
        // Commander Vesta
        team[1] = 0x21F8016F77040afF5402a34fB80b691305535803;
        // Commander Orion
        team[2] = 0x06039a2C535558E5B256CEAcD728E264F9f295bd;
        // Commander Ariel
        team[3] = 0xC0Ac177CCFD53001182169568747fCCAAFD5c98B;
        // dev
        team[4] = 0xDead879244402f85AE13EE1d1f1B8dE540D57843;
        address[] memory gayamede = new address[](1);
        gayamede[0] = 0xC0Ac177CCFD53001182169568747fCCAAFD5c98B;
        // airdrop for the team
        airdrop(team, 5);

        airdrop(gayamede, 25);

        transferOwnership(gayamede[0]);
    }

    function _mint() internal {
        _safeMint(msg.sender, totalSupply);
        totalSupply++;
    }

    function freeMint(uint256 _amount) external nonReentrant {
        require(totalSupply + _amount <= 1050, "FREE_MINT_OUT");
        require(
            _amount > 0 && _amount <= MAX_FREE_PER_TX,
            "EXCEEDS_MAX_FREE_PER_TX"
        );
        // require(
        //     addressToFreeMintCount[msg.sender] + _amount <= MAX_FREE_PER_WALLET,
        //     "EXCEEDS_MAX_FREE_PER_WALLET"
        // );
        for (uint256 i; i < _amount; i++) {
            _mint();
            addressToFreeMintCount[msg.sender]++;
        }
    }

    function mint(uint256 _amount) external payable nonReentrant {
        // require(totalSupply + _amount >= 1000, "FREE_MINT_IS_STILL_ACTIVE");

        require(totalSupply + _amount < MAX_SUPPLY, "EXCEEDS_SUPPLY");

        require(msg.value >= MINT_PRICE * _amount, "NOT_ENOUGH_ETHER");

        require(_amount > 0 && _amount <= MAX_PER_TX, "EXCEEDS_MAX_PER_TX");

        require(
            addressToPayableMintCount[msg.sender] + _amount <= MAX_PER_WALLET,
            "EXCEEDS_MAX_PER_WALLET"
        );

        for (uint256 i; i < _amount; i++) {
            _mint();
            addressToPayableMintCount[msg.sender]++;
        }
    }

    function airdrop(address[] memory _addresses, uint256 _count)
        public
        onlyOwner
    {
        for (uint256 i = 0; i < _addresses.length; i++) {
            for (uint256 x = 0; x < _count; x++) {
                _safeMint(_addresses[i], totalSupply);
                totalSupply++;
            }
        }
    }

    function setBaseURI(string memory _uri) public onlyOwner {
        _baseURI = _uri;
    }

    function withdraw() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721)
        returns (string memory)
    {
        require(_ownerOf[tokenId] != address(0), "NOT_EXISTS");
        return string(abi.encodePacked(_baseURI, Strings.toString(tokenId)));
    }
}

File 2 of 6 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

File 3 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 6 : ReentrancyGuard.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Gas optimized reentrancy protection for smart contracts.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol)
/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol)
abstract contract ReentrancyGuard {
    uint256 private locked = 1;

    modifier nonReentrant() virtual {
        require(locked == 1, "REENTRANCY");

        locked = 2;

        _;

        locked = 1;
    }
}

File 5 of 6 : ERC721.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*//////////////////////////////////////////////////////////////
                         METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_FREE_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FREE_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260016000553480156200001657600080fd5b5060405162004cb538038062004cb583398181016040528101906200003c919062000c95565b6040518060400160405280601181526020017f47616c6163746963477561726469616e730000000000000000000000000000008152506040518060400160405280601181526020017f47414c4143544943475541524449414e53000000000000000000000000000000815250620000c8620000bc6200046660201b60201c565b6200046e60201b60201c565b8160029081620000d9919062000f31565b508060039081620000eb919062000f31565b50505080600b9081620000ff919062000f31565b506000600567ffffffffffffffff81111562000120576200011f62000b27565b5b6040519080825280602002602001820160405280156200014f5781602001602082028036833780820191505090505b50905073c0ac177ccfd53001182169568747fccaafd5c98b816000815181106200017e576200017d62001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507321f8016f77040aff5402a34fb80b69130553580381600181518110620001e457620001e362001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507306039a2c535558e5b256ceacd728e264f9f295bd816002815181106200024a576200024962001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c0ac177ccfd53001182169568747fccaafd5c98b81600381518110620002b057620002af62001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073dead879244402f85ae13ee1d1f1b8de540d578438160048151811062000316576200031562001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff81111562000370576200036f62000b27565b5b6040519080825280602002602001820160405280156200039f5781602001602082028036833780820191505090505b50905073c0ac177ccfd53001182169568747fccaafd5c98b81600081518110620003ce57620003cd62001018565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506200041b8260056200053460201b60201c565b6200042e8160196200053460201b60201c565b6200045d8160008151811062000449576200044862001018565b5b60200260200101516200065960201b60201c565b505050620014a6565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005446200046660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200056a6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ba90620010a8565b60405180910390fd5b60005b8251811015620006545760005b828110156200063d576200060d848381518110620005f657620005f562001018565b5b60200260200101516008546200079860201b60201c565b600860008154809291906200062290620010f9565b919050555080806200063490620010f9565b915050620005d3565b5080806200064b90620010f9565b915050620005c6565b505050565b620006696200046660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200068f6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006df90620010a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200075190620011bc565b60405180910390fd5b6200076b816200046e60201b60201c565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007aa8282620008e060201b60201c565b60008273ffffffffffffffffffffffffffffffffffffffff163b14806200089a575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b815260040162000833939291906200126f565b6020604051808303816000875af115801562000853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200087991906200131e565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b620008dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d390620013a0565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009499062001412565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ee9062001484565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000b618262000b16565b810181811067ffffffffffffffff8211171562000b835762000b8262000b27565b5b80604052505050565b600062000b9862000af8565b905062000ba6828262000b56565b919050565b600067ffffffffffffffff82111562000bc95762000bc862000b27565b5b62000bd48262000b16565b9050602081019050919050565b60005b8381101562000c0157808201518184015260208101905062000be4565b8381111562000c11576000848401525b50505050565b600062000c2e62000c288462000bab565b62000b8c565b90508281526020810184848401111562000c4d5762000c4c62000b11565b5b62000c5a84828562000be1565b509392505050565b600082601f83011262000c7a5762000c7962000b0c565b5b815162000c8c84826020860162000c17565b91505092915050565b60006020828403121562000cae5762000cad62000b02565b5b600082015167ffffffffffffffff81111562000ccf5762000cce62000b07565b5b62000cdd8482850162000c62565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d3957607f821691505b60208210810362000d4f5762000d4e62000cf1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000db97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d7a565b62000dc5868362000d7a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e1262000e0c62000e068462000ddd565b62000de7565b62000ddd565b9050919050565b6000819050919050565b62000e2e8362000df1565b62000e4662000e3d8262000e19565b84845462000d87565b825550505050565b600090565b62000e5d62000e4e565b62000e6a81848462000e23565b505050565b5b8181101562000e925762000e8660008262000e53565b60018101905062000e70565b5050565b601f82111562000ee15762000eab8162000d55565b62000eb68462000d6a565b8101602085101562000ec6578190505b62000ede62000ed58562000d6a565b83018262000e6f565b50505b505050565b600082821c905092915050565b600062000f066000198460080262000ee6565b1980831691505092915050565b600062000f21838362000ef3565b9150826002028217905092915050565b62000f3c8262000ce6565b67ffffffffffffffff81111562000f585762000f5762000b27565b5b62000f64825462000d20565b62000f7182828562000e96565b600060209050601f83116001811462000fa9576000841562000f94578287015190505b62000fa0858262000f13565b86555062001010565b601f19841662000fb98662000d55565b60005b8281101562000fe35784890151825560018201915060208501945060208101905062000fbc565b8683101562001003578489015162000fff601f89168262000ef3565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200109060208362001047565b91506200109d8262001058565b602082019050919050565b60006020820190508181036000830152620010c38162001081565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011068262000ddd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200113b576200113a620010ca565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620011a460268362001047565b9150620011b18262001146565b604082019050919050565b60006020820190508181036000830152620011d78162001195565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200120b82620011de565b9050919050565b6200121d81620011fe565b82525050565b6200122e8162000ddd565b82525050565b600082825260208201905092915050565b50565b60006200125760008362001234565b9150620012648262001245565b600082019050919050565b600060808201905062001286600083018662001212565b62001295602083018562001212565b620012a4604083018462001223565b8181036060830152620012b78162001248565b9050949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620012f881620012c1565b81146200130457600080fd5b50565b6000815190506200131881620012ed565b92915050565b60006020828403121562001337576200133662000b02565b5b6000620013478482850162001307565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b60006200138860108362001047565b9150620013958262001350565b602082019050919050565b60006020820190508181036000830152620013bb8162001379565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b6000620013fa60118362001047565b91506200140782620013c2565b602082019050919050565b600060208201905081810360008301526200142d81620013eb565b9050919050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b60006200146c600e8362001047565b9150620014798262001434565b602082019050919050565b600060208201905081810360008301526200149f816200145d565b9050919050565b6137ff80620014b66000396000f3fe6080604052600436106101b75760003560e01c80637c928fe9116100ec578063c002d23d1161008a578063ccb22f0911610064578063ccb22f09146105d7578063e985e9c514610602578063f2fde38b1461063f578063f43a22dc14610668576101b7565b8063c002d23d14610546578063c204642c14610571578063c87b56dd1461059a576101b7565b806398710d1e116100c657806398710d1e146104ad578063a0712d68146104d8578063a22cb465146104f4578063b88d4fde1461051d576101b7565b80637c928fe91461042e5780638da5cb5b1461045757806395d89b4114610482576101b7565b806332cb6b0c1161015957806355f804b31161013357806355f804b3146103745780636352211e1461039d57806370a08231146103da578063715018a614610417576101b7565b806332cb6b0c146103095780633ccfd60b1461033457806342842e0e1461034b576101b7565b8063095ea7b311610195578063095ea7b3146102615780630f2cdd6c1461028a57806318160ddd146102b557806323b872dd146102e0576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612239565b610693565b6040516101f09190612281565b60405180910390f35b34801561020557600080fd5b5061020e610725565b60405161021b9190612335565b60405180910390f35b34801561023057600080fd5b5061024b6004803603810190610246919061238d565b6107b3565b60405161025891906123fb565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612442565b6107e6565b005b34801561029657600080fd5b5061029f6109cf565b6040516102ac9190612491565b60405180910390f35b3480156102c157600080fd5b506102ca6109d4565b6040516102d79190612491565b60405180910390f35b3480156102ec57600080fd5b50610307600480360381019061030291906124ac565b6109da565b005b34801561031557600080fd5b5061031e610dd9565b60405161032b9190612491565b60405180910390f35b34801561034057600080fd5b50610349610ddf565b005b34801561035757600080fd5b50610372600480360381019061036d91906124ac565b610eab565b005b34801561038057600080fd5b5061039b60048036038101906103969190612634565b610fe3565b005b3480156103a957600080fd5b506103c460048036038101906103bf919061238d565b611072565b6040516103d191906123fb565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc919061267d565b61111d565b60405161040e9190612491565b60405180910390f35b34801561042357600080fd5b5061042c6111d4565b005b34801561043a57600080fd5b506104556004803603810190610450919061238d565b61125c565b005b34801561046357600080fd5b5061046c6113d2565b60405161047991906123fb565b60405180910390f35b34801561048e57600080fd5b506104976113fc565b6040516104a49190612335565b60405180910390f35b3480156104b957600080fd5b506104c261148a565b6040516104cf9190612491565b60405180910390f35b6104f260048036038101906104ed919061238d565b61148f565b005b34801561050057600080fd5b5061051b600480360381019061051691906126d6565b6116e7565b005b34801561052957600080fd5b50610544600480360381019061053f9190612776565b6117e4565b005b34801561055257600080fd5b5061055b611922565b6040516105689190612491565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906128c1565b61192d565b005b3480156105a657600080fd5b506105c160048036038101906105bc919061238d565b611a2a565b6040516105ce9190612335565b60405180910390f35b3480156105e357600080fd5b506105ec611b00565b6040516105f99190612491565b60405180910390f35b34801561060e57600080fd5b506106296004803603810190610624919061291d565b611b05565b6040516106369190612281565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061267d565b611b34565b005b34801561067457600080fd5b5061067d611c2b565b60405161068a9190612491565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ee57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061071e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600280546107329061298c565b80601f016020809104026020016040519081016040528092919081815260200182805461075e9061298c565b80156107ab5780601f10610780576101008083540402835291602001916107ab565b820191906000526020600020905b81548152906001019060200180831161078e57829003601f168201915b505050505081565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108de5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490612a09565b60405180910390fd5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600a81565b60085481565b6004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612a75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190612ae1565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610baa5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610c1357506006600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612a09565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6122b881565b610de7611c30565b73ffffffffffffffffffffffffffffffffffffffff16610e056113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290612b4d565b60405180910390fd5b610e636113d2565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ea8573d6000803e3d6000fd5b50565b610eb68383836109da565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610f9f575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610f3b93929190612ba4565b6020604051808303816000875af1158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7e9190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590612c7c565b60405180910390fd5b505050565b610feb611c30565b73ffffffffffffffffffffffffffffffffffffffff166110096113d2565b73ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690612b4d565b60405180910390fd5b80600b908161106e9190612e48565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612f66565b60405180910390fd5b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490612fd2565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111dc611c30565b73ffffffffffffffffffffffffffffffffffffffff166111fa6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612b4d565b60405180910390fd5b61125a6000611c38565b565b6001600054146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061303e565b60405180910390fd5b600260008190555061041a816008546112ba919061308d565b11156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29061312f565b60405180910390fd5b60008111801561130c575060028111155b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113429061319b565b60405180910390fd5b60005b818110156113c65761135e611cfe565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906113ae906131bb565b919050555080806113be906131bb565b91505061134e565b50600160008190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600380546114099061298c565b80601f01602080910402602001604051908101604052809291908181526020018280546114359061298c565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b505050505081565b600281565b6001600054146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb9061303e565b60405180910390fd5b60026000819055506122b8816008546114ed919061308d565b1061152d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115249061324f565b60405180910390fd5b80661c6bf526340000611540919061326f565b341015611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990613315565b60405180910390fd5b600081118015611593575060028111155b6115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990613381565b60405180910390fd5b600a81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161f919061308d565b1115611660576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611657906133ed565b60405180910390fd5b60005b818110156116db57611673611cfe565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906116c3906131bb565b919050555080806116d3906131bb565b915050611663565b50600160008190555050565b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d89190612281565b60405180910390a35050565b6117ef8585856109da565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806118dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161187895949392919061343a565b6020604051808303816000875af1158015611897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bb9190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290612c7c565b60405180910390fd5b5050505050565b661c6bf52634000081565b611935611c30565b73ffffffffffffffffffffffffffffffffffffffff166119536113d2565b73ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090612b4d565b60405180910390fd5b60005b8251811015611a255760005b82811015611a11576119e68483815181106119d6576119d5613488565b5b6020026020010151600854611d24565b600860008154809291906119f9906131bb565b91905055508080611a09906131bb565b9150506119b8565b508080611a1d906131bb565b9150506119ac565b505050565b6060600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613503565b60405180910390fd5b600b611ad983611e5b565b604051602001611aea9291906135e2565b6040516020818303038152906040529050919050565b600281565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b611b3c611c30565b73ffffffffffffffffffffffffffffffffffffffff16611b5a6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790612b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613678565b60405180910390fd5b611c2881611c38565b50565b600281565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d0a33600854611d24565b60086000815480929190611d1d906131bb565b9190505550565b611d2e8282611fbb565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611e18575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b8152600401611db493929190612ba4565b6020604051808303816000875af1158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90612c7c565b60405180910390fd5b5050565b606060008203611ea2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611fb6565b600082905060005b60008214611ed4578080611ebd906131bb565b915050600a82611ecd91906136c7565b9150611eaa565b60008167ffffffffffffffff811115611ef057611eef612509565b5b6040519080825280601f01601f191660200182016040528015611f225781602001600182028036833780820191505090505b5090505b60008514611faf57600182611f3b91906136f8565b9150600a85611f4a919061372c565b6030611f56919061308d565b60f81b818381518110611f6c57611f6b613488565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fa891906136c7565b9450611f26565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361202a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202190612ae1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c3906137a9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612216816121e1565b811461222157600080fd5b50565b6000813590506122338161220d565b92915050565b60006020828403121561224f5761224e6121d7565b5b600061225d84828501612224565b91505092915050565b60008115159050919050565b61227b81612266565b82525050565b60006020820190506122966000830184612272565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d65780820151818401526020810190506122bb565b838111156122e5576000848401525b50505050565b6000601f19601f8301169050919050565b60006123078261229c565b61231181856122a7565b93506123218185602086016122b8565b61232a816122eb565b840191505092915050565b6000602082019050818103600083015261234f81846122fc565b905092915050565b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a26121d7565b5b60006123b184828501612378565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123e5826123ba565b9050919050565b6123f5816123da565b82525050565b600060208201905061241060008301846123ec565b92915050565b61241f816123da565b811461242a57600080fd5b50565b60008135905061243c81612416565b92915050565b60008060408385031215612459576124586121d7565b5b60006124678582860161242d565b925050602061247885828601612378565b9150509250929050565b61248b81612357565b82525050565b60006020820190506124a66000830184612482565b92915050565b6000806000606084860312156124c5576124c46121d7565b5b60006124d38682870161242d565b93505060206124e48682870161242d565b92505060406124f586828701612378565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612541826122eb565b810181811067ffffffffffffffff821117156125605761255f612509565b5b80604052505050565b60006125736121cd565b905061257f8282612538565b919050565b600067ffffffffffffffff82111561259f5761259e612509565b5b6125a8826122eb565b9050602081019050919050565b82818337600083830152505050565b60006125d76125d284612584565b612569565b9050828152602081018484840111156125f3576125f2612504565b5b6125fe8482856125b5565b509392505050565b600082601f83011261261b5761261a6124ff565b5b813561262b8482602086016125c4565b91505092915050565b60006020828403121561264a576126496121d7565b5b600082013567ffffffffffffffff811115612668576126676121dc565b5b61267484828501612606565b91505092915050565b600060208284031215612693576126926121d7565b5b60006126a18482850161242d565b91505092915050565b6126b381612266565b81146126be57600080fd5b50565b6000813590506126d0816126aa565b92915050565b600080604083850312156126ed576126ec6121d7565b5b60006126fb8582860161242d565b925050602061270c858286016126c1565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612736576127356124ff565b5b8235905067ffffffffffffffff81111561275357612752612716565b5b60208301915083600182028301111561276f5761276e61271b565b5b9250929050565b600080600080600060808688031215612792576127916121d7565b5b60006127a08882890161242d565b95505060206127b18882890161242d565b94505060406127c288828901612378565b935050606086013567ffffffffffffffff8111156127e3576127e26121dc565b5b6127ef88828901612720565b92509250509295509295909350565b600067ffffffffffffffff82111561281957612818612509565b5b602082029050602081019050919050565b600061283d612838846127fe565b612569565b905080838252602082019050602084028301858111156128605761285f61271b565b5b835b818110156128895780612875888261242d565b845260208401935050602081019050612862565b5050509392505050565b600082601f8301126128a8576128a76124ff565b5b81356128b884826020860161282a565b91505092915050565b600080604083850312156128d8576128d76121d7565b5b600083013567ffffffffffffffff8111156128f6576128f56121dc565b5b61290285828601612893565b925050602061291385828601612378565b9150509250929050565b60008060408385031215612934576129336121d7565b5b60006129428582860161242d565b92505060206129538582860161242d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129a457607f821691505b6020821081036129b7576129b661295d565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006129f3600e836122a7565b91506129fe826129bd565b602082019050919050565b60006020820190508181036000830152612a22816129e6565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000612a5f600a836122a7565b9150612a6a82612a29565b602082019050919050565b60006020820190508181036000830152612a8e81612a52565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b6000612acb6011836122a7565b9150612ad682612a95565b602082019050919050565b60006020820190508181036000830152612afa81612abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b376020836122a7565b9150612b4282612b01565b602082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b600082825260208201905092915050565b50565b6000612b8e600083612b6d565b9150612b9982612b7e565b600082019050919050565b6000608082019050612bb960008301866123ec565b612bc660208301856123ec565b612bd36040830184612482565b8181036060830152612be481612b81565b9050949350505050565b600081519050612bfd8161220d565b92915050565b600060208284031215612c1957612c186121d7565b5b6000612c2784828501612bee565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b6000612c666010836122a7565b9150612c7182612c30565b602082019050919050565b60006020820190508181036000830152612c9581612c59565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cc1565b612d088683612cc1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d45612d40612d3b84612357565b612d20565b612357565b9050919050565b6000819050919050565b612d5f83612d2a565b612d73612d6b82612d4c565b848454612cce565b825550505050565b600090565b612d88612d7b565b612d93818484612d56565b505050565b5b81811015612db757612dac600082612d80565b600181019050612d99565b5050565b601f821115612dfc57612dcd81612c9c565b612dd684612cb1565b81016020851015612de5578190505b612df9612df185612cb1565b830182612d98565b50505b505050565b600082821c905092915050565b6000612e1f60001984600802612e01565b1980831691505092915050565b6000612e388383612e0e565b9150826002028217905092915050565b612e518261229c565b67ffffffffffffffff811115612e6a57612e69612509565b5b612e74825461298c565b612e7f828285612dbb565b600060209050601f831160018114612eb25760008415612ea0578287015190505b612eaa8582612e2c565b865550612f12565b601f198416612ec086612c9c565b60005b82811015612ee857848901518255600182019150602085019450602081019050612ec3565b86831015612f055784890151612f01601f891682612e0e565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b6000612f50600a836122a7565b9150612f5b82612f1a565b602082019050919050565b60006020820190508181036000830152612f7f81612f43565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b6000612fbc600c836122a7565b9150612fc782612f86565b602082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f5245454e5452414e435900000000000000000000000000000000000000000000600082015250565b6000613028600a836122a7565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309882612357565b91506130a383612357565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130d8576130d761305e565b5b828201905092915050565b7f465245455f4d494e545f4f555400000000000000000000000000000000000000600082015250565b6000613119600d836122a7565b9150613124826130e3565b602082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f455843454544535f4d41585f465245455f5045525f5458000000000000000000600082015250565b60006131856017836122a7565b91506131908261314f565b602082019050919050565b600060208201905081810360008301526131b481613178565b9050919050565b60006131c682612357565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131f8576131f761305e565b5b600182019050919050565b7f455843454544535f535550504c59000000000000000000000000000000000000600082015250565b6000613239600e836122a7565b915061324482613203565b602082019050919050565b600060208201905081810360008301526132688161322c565b9050919050565b600061327a82612357565b915061328583612357565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132be576132bd61305e565b5b828202905092915050565b7f4e4f545f454e4f5547485f455448455200000000000000000000000000000000600082015250565b60006132ff6010836122a7565b915061330a826132c9565b602082019050919050565b6000602082019050818103600083015261332e816132f2565b9050919050565b7f455843454544535f4d41585f5045525f54580000000000000000000000000000600082015250565b600061336b6012836122a7565b915061337682613335565b602082019050919050565b6000602082019050818103600083015261339a8161335e565b9050919050565b7f455843454544535f4d41585f5045525f57414c4c455400000000000000000000600082015250565b60006133d76016836122a7565b91506133e2826133a1565b602082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b60006134198385612b6d565b93506134268385846125b5565b61342f836122eb565b840190509392505050565b600060808201905061344f60008301886123ec565b61345c60208301876123ec565b6134696040830186612482565b818103606083015261347c81848661340d565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e4f545f45584953545300000000000000000000000000000000000000000000600082015250565b60006134ed600a836122a7565b91506134f8826134b7565b602082019050919050565b6000602082019050818103600083015261351c816134e0565b9050919050565b600081905092915050565b6000815461353b8161298c565b6135458186613523565b945060018216600081146135605760018114613575576135a8565b60ff19831686528115158202860193506135a8565b61357e85612c9c565b60005b838110156135a057815481890152600182019150602081019050613581565b838801955050505b50505092915050565b60006135bc8261229c565b6135c68185613523565b93506135d68185602086016122b8565b80840191505092915050565b60006135ee828561352e565b91506135fa82846135b1565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136626026836122a7565b915061366d82613606565b604082019050919050565b6000602082019050818103600083015261369181613655565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136d282612357565b91506136dd83612357565b9250826136ed576136ec613698565b5b828204905092915050565b600061370382612357565b915061370e83612357565b9250828210156137215761372061305e565b5b828203905092915050565b600061373782612357565b915061374283612357565b92508261375257613751613698565b5b828206905092915050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b6000613793600e836122a7565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b905091905056fea264697066735822122056124aa6c35bc396de3a5e3013dcae7671861c51644c40f8f19c5f51d705d49564736f6c634300080f00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6456334d7447427064756b67666538566558385666487447677448666b6d6b707445325a76376835514a4a6423000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101b75760003560e01c80637c928fe9116100ec578063c002d23d1161008a578063ccb22f0911610064578063ccb22f09146105d7578063e985e9c514610602578063f2fde38b1461063f578063f43a22dc14610668576101b7565b8063c002d23d14610546578063c204642c14610571578063c87b56dd1461059a576101b7565b806398710d1e116100c657806398710d1e146104ad578063a0712d68146104d8578063a22cb465146104f4578063b88d4fde1461051d576101b7565b80637c928fe91461042e5780638da5cb5b1461045757806395d89b4114610482576101b7565b806332cb6b0c1161015957806355f804b31161013357806355f804b3146103745780636352211e1461039d57806370a08231146103da578063715018a614610417576101b7565b806332cb6b0c146103095780633ccfd60b1461033457806342842e0e1461034b576101b7565b8063095ea7b311610195578063095ea7b3146102615780630f2cdd6c1461028a57806318160ddd146102b557806323b872dd146102e0576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612239565b610693565b6040516101f09190612281565b60405180910390f35b34801561020557600080fd5b5061020e610725565b60405161021b9190612335565b60405180910390f35b34801561023057600080fd5b5061024b6004803603810190610246919061238d565b6107b3565b60405161025891906123fb565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612442565b6107e6565b005b34801561029657600080fd5b5061029f6109cf565b6040516102ac9190612491565b60405180910390f35b3480156102c157600080fd5b506102ca6109d4565b6040516102d79190612491565b60405180910390f35b3480156102ec57600080fd5b50610307600480360381019061030291906124ac565b6109da565b005b34801561031557600080fd5b5061031e610dd9565b60405161032b9190612491565b60405180910390f35b34801561034057600080fd5b50610349610ddf565b005b34801561035757600080fd5b50610372600480360381019061036d91906124ac565b610eab565b005b34801561038057600080fd5b5061039b60048036038101906103969190612634565b610fe3565b005b3480156103a957600080fd5b506103c460048036038101906103bf919061238d565b611072565b6040516103d191906123fb565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc919061267d565b61111d565b60405161040e9190612491565b60405180910390f35b34801561042357600080fd5b5061042c6111d4565b005b34801561043a57600080fd5b506104556004803603810190610450919061238d565b61125c565b005b34801561046357600080fd5b5061046c6113d2565b60405161047991906123fb565b60405180910390f35b34801561048e57600080fd5b506104976113fc565b6040516104a49190612335565b60405180910390f35b3480156104b957600080fd5b506104c261148a565b6040516104cf9190612491565b60405180910390f35b6104f260048036038101906104ed919061238d565b61148f565b005b34801561050057600080fd5b5061051b600480360381019061051691906126d6565b6116e7565b005b34801561052957600080fd5b50610544600480360381019061053f9190612776565b6117e4565b005b34801561055257600080fd5b5061055b611922565b6040516105689190612491565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906128c1565b61192d565b005b3480156105a657600080fd5b506105c160048036038101906105bc919061238d565b611a2a565b6040516105ce9190612335565b60405180910390f35b3480156105e357600080fd5b506105ec611b00565b6040516105f99190612491565b60405180910390f35b34801561060e57600080fd5b506106296004803603810190610624919061291d565b611b05565b6040516106369190612281565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061267d565b611b34565b005b34801561067457600080fd5b5061067d611c2b565b60405161068a9190612491565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ee57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061071e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600280546107329061298c565b80601f016020809104026020016040519081016040528092919081815260200182805461075e9061298c565b80156107ab5780601f10610780576101008083540402835291602001916107ab565b820191906000526020600020905b81548152906001019060200180831161078e57829003601f168201915b505050505081565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108de5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61091d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091490612a09565b60405180910390fd5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600a81565b60085481565b6004600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612a75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190612ae1565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610baa5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610c1357506006600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612a09565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6122b881565b610de7611c30565b73ffffffffffffffffffffffffffffffffffffffff16610e056113d2565b73ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5290612b4d565b60405180910390fd5b610e636113d2565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ea8573d6000803e3d6000fd5b50565b610eb68383836109da565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480610f9f575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610f3b93929190612ba4565b6020604051808303816000875af1158015610f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7e9190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590612c7c565b60405180910390fd5b505050565b610feb611c30565b73ffffffffffffffffffffffffffffffffffffffff166110096113d2565b73ffffffffffffffffffffffffffffffffffffffff161461105f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105690612b4d565b60405180910390fd5b80600b908161106e9190612e48565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1603611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612f66565b60405180910390fd5b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490612fd2565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111dc611c30565b73ffffffffffffffffffffffffffffffffffffffff166111fa6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612b4d565b60405180910390fd5b61125a6000611c38565b565b6001600054146112a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112989061303e565b60405180910390fd5b600260008190555061041a816008546112ba919061308d565b11156112fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f29061312f565b60405180910390fd5b60008111801561130c575060028111155b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113429061319b565b60405180910390fd5b60005b818110156113c65761135e611cfe565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906113ae906131bb565b919050555080806113be906131bb565b91505061134e565b50600160008190555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600380546114099061298c565b80601f01602080910402602001604051908101604052809291908181526020018280546114359061298c565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b505050505081565b600281565b6001600054146114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb9061303e565b60405180910390fd5b60026000819055506122b8816008546114ed919061308d565b1061152d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115249061324f565b60405180910390fd5b80661c6bf526340000611540919061326f565b341015611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990613315565b60405180910390fd5b600081118015611593575060028111155b6115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c990613381565b60405180910390fd5b600a81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161f919061308d565b1115611660576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611657906133ed565b60405180910390fd5b60005b818110156116db57611673611cfe565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906116c3906131bb565b919050555080806116d3906131bb565b915050611663565b50600160008190555050565b80600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d89190612281565b60405180910390a35050565b6117ef8585856109da565b60008473ffffffffffffffffffffffffffffffffffffffff163b14806118dc575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b815260040161187895949392919061343a565b6020604051808303816000875af1158015611897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bb9190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b61191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290612c7c565b60405180910390fd5b5050505050565b661c6bf52634000081565b611935611c30565b73ffffffffffffffffffffffffffffffffffffffff166119536113d2565b73ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a090612b4d565b60405180910390fd5b60005b8251811015611a255760005b82811015611a11576119e68483815181106119d6576119d5613488565b5b6020026020010151600854611d24565b600860008154809291906119f9906131bb565b91905055508080611a09906131bb565b9150506119b8565b508080611a1d906131bb565b9150506119ac565b505050565b6060600073ffffffffffffffffffffffffffffffffffffffff166004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590613503565b60405180910390fd5b600b611ad983611e5b565b604051602001611aea9291906135e2565b6040516020818303038152906040529050919050565b600281565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b611b3c611c30565b73ffffffffffffffffffffffffffffffffffffffff16611b5a6113d2565b73ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790612b4d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690613678565b60405180910390fd5b611c2881611c38565b50565b600281565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d0a33600854611d24565b60086000815480929190611d1d906131bb565b9190505550565b611d2e8282611fbb565b60008273ffffffffffffffffffffffffffffffffffffffff163b1480611e18575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000856040518463ffffffff1660e01b8152600401611db493929190612ba4565b6020604051808303816000875af1158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612c03565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90612c7c565b60405180910390fd5b5050565b606060008203611ea2576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611fb6565b600082905060005b60008214611ed4578080611ebd906131bb565b915050600a82611ecd91906136c7565b9150611eaa565b60008167ffffffffffffffff811115611ef057611eef612509565b5b6040519080825280601f01601f191660200182016040528015611f225781602001600182028036833780820191505090505b5090505b60008514611faf57600182611f3b91906136f8565b9150600a85611f4a919061372c565b6030611f56919061308d565b60f81b818381518110611f6c57611f6b613488565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fa891906136c7565b9450611f26565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361202a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202190612ae1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c3906137a9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612216816121e1565b811461222157600080fd5b50565b6000813590506122338161220d565b92915050565b60006020828403121561224f5761224e6121d7565b5b600061225d84828501612224565b91505092915050565b60008115159050919050565b61227b81612266565b82525050565b60006020820190506122966000830184612272565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d65780820151818401526020810190506122bb565b838111156122e5576000848401525b50505050565b6000601f19601f8301169050919050565b60006123078261229c565b61231181856122a7565b93506123218185602086016122b8565b61232a816122eb565b840191505092915050565b6000602082019050818103600083015261234f81846122fc565b905092915050565b6000819050919050565b61236a81612357565b811461237557600080fd5b50565b60008135905061238781612361565b92915050565b6000602082840312156123a3576123a26121d7565b5b60006123b184828501612378565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123e5826123ba565b9050919050565b6123f5816123da565b82525050565b600060208201905061241060008301846123ec565b92915050565b61241f816123da565b811461242a57600080fd5b50565b60008135905061243c81612416565b92915050565b60008060408385031215612459576124586121d7565b5b60006124678582860161242d565b925050602061247885828601612378565b9150509250929050565b61248b81612357565b82525050565b60006020820190506124a66000830184612482565b92915050565b6000806000606084860312156124c5576124c46121d7565b5b60006124d38682870161242d565b93505060206124e48682870161242d565b92505060406124f586828701612378565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612541826122eb565b810181811067ffffffffffffffff821117156125605761255f612509565b5b80604052505050565b60006125736121cd565b905061257f8282612538565b919050565b600067ffffffffffffffff82111561259f5761259e612509565b5b6125a8826122eb565b9050602081019050919050565b82818337600083830152505050565b60006125d76125d284612584565b612569565b9050828152602081018484840111156125f3576125f2612504565b5b6125fe8482856125b5565b509392505050565b600082601f83011261261b5761261a6124ff565b5b813561262b8482602086016125c4565b91505092915050565b60006020828403121561264a576126496121d7565b5b600082013567ffffffffffffffff811115612668576126676121dc565b5b61267484828501612606565b91505092915050565b600060208284031215612693576126926121d7565b5b60006126a18482850161242d565b91505092915050565b6126b381612266565b81146126be57600080fd5b50565b6000813590506126d0816126aa565b92915050565b600080604083850312156126ed576126ec6121d7565b5b60006126fb8582860161242d565b925050602061270c858286016126c1565b9150509250929050565b600080fd5b600080fd5b60008083601f840112612736576127356124ff565b5b8235905067ffffffffffffffff81111561275357612752612716565b5b60208301915083600182028301111561276f5761276e61271b565b5b9250929050565b600080600080600060808688031215612792576127916121d7565b5b60006127a08882890161242d565b95505060206127b18882890161242d565b94505060406127c288828901612378565b935050606086013567ffffffffffffffff8111156127e3576127e26121dc565b5b6127ef88828901612720565b92509250509295509295909350565b600067ffffffffffffffff82111561281957612818612509565b5b602082029050602081019050919050565b600061283d612838846127fe565b612569565b905080838252602082019050602084028301858111156128605761285f61271b565b5b835b818110156128895780612875888261242d565b845260208401935050602081019050612862565b5050509392505050565b600082601f8301126128a8576128a76124ff565b5b81356128b884826020860161282a565b91505092915050565b600080604083850312156128d8576128d76121d7565b5b600083013567ffffffffffffffff8111156128f6576128f56121dc565b5b61290285828601612893565b925050602061291385828601612378565b9150509250929050565b60008060408385031215612934576129336121d7565b5b60006129428582860161242d565b92505060206129538582860161242d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129a457607f821691505b6020821081036129b7576129b661295d565b5b50919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006129f3600e836122a7565b91506129fe826129bd565b602082019050919050565b60006020820190508181036000830152612a22816129e6565b9050919050565b7f57524f4e475f46524f4d00000000000000000000000000000000000000000000600082015250565b6000612a5f600a836122a7565b9150612a6a82612a29565b602082019050919050565b60006020820190508181036000830152612a8e81612a52565b9050919050565b7f494e56414c49445f524543495049454e54000000000000000000000000000000600082015250565b6000612acb6011836122a7565b9150612ad682612a95565b602082019050919050565b60006020820190508181036000830152612afa81612abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612b376020836122a7565b9150612b4282612b01565b602082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b600082825260208201905092915050565b50565b6000612b8e600083612b6d565b9150612b9982612b7e565b600082019050919050565b6000608082019050612bb960008301866123ec565b612bc660208301856123ec565b612bd36040830184612482565b8181036060830152612be481612b81565b9050949350505050565b600081519050612bfd8161220d565b92915050565b600060208284031215612c1957612c186121d7565b5b6000612c2784828501612bee565b91505092915050565b7f554e534146455f524543495049454e5400000000000000000000000000000000600082015250565b6000612c666010836122a7565b9150612c7182612c30565b602082019050919050565b60006020820190508181036000830152612c9581612c59565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cc1565b612d088683612cc1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d45612d40612d3b84612357565b612d20565b612357565b9050919050565b6000819050919050565b612d5f83612d2a565b612d73612d6b82612d4c565b848454612cce565b825550505050565b600090565b612d88612d7b565b612d93818484612d56565b505050565b5b81811015612db757612dac600082612d80565b600181019050612d99565b5050565b601f821115612dfc57612dcd81612c9c565b612dd684612cb1565b81016020851015612de5578190505b612df9612df185612cb1565b830182612d98565b50505b505050565b600082821c905092915050565b6000612e1f60001984600802612e01565b1980831691505092915050565b6000612e388383612e0e565b9150826002028217905092915050565b612e518261229c565b67ffffffffffffffff811115612e6a57612e69612509565b5b612e74825461298c565b612e7f828285612dbb565b600060209050601f831160018114612eb25760008415612ea0578287015190505b612eaa8582612e2c565b865550612f12565b601f198416612ec086612c9c565b60005b82811015612ee857848901518255600182019150602085019450602081019050612ec3565b86831015612f055784890151612f01601f891682612e0e565b8355505b6001600288020188555050505b505050505050565b7f4e4f545f4d494e54454400000000000000000000000000000000000000000000600082015250565b6000612f50600a836122a7565b9150612f5b82612f1a565b602082019050919050565b60006020820190508181036000830152612f7f81612f43565b9050919050565b7f5a45524f5f414444524553530000000000000000000000000000000000000000600082015250565b6000612fbc600c836122a7565b9150612fc782612f86565b602082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f5245454e5452414e435900000000000000000000000000000000000000000000600082015250565b6000613028600a836122a7565b915061303382612ff2565b602082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309882612357565b91506130a383612357565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130d8576130d761305e565b5b828201905092915050565b7f465245455f4d494e545f4f555400000000000000000000000000000000000000600082015250565b6000613119600d836122a7565b9150613124826130e3565b602082019050919050565b600060208201905081810360008301526131488161310c565b9050919050565b7f455843454544535f4d41585f465245455f5045525f5458000000000000000000600082015250565b60006131856017836122a7565b91506131908261314f565b602082019050919050565b600060208201905081810360008301526131b481613178565b9050919050565b60006131c682612357565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131f8576131f761305e565b5b600182019050919050565b7f455843454544535f535550504c59000000000000000000000000000000000000600082015250565b6000613239600e836122a7565b915061324482613203565b602082019050919050565b600060208201905081810360008301526132688161322c565b9050919050565b600061327a82612357565b915061328583612357565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132be576132bd61305e565b5b828202905092915050565b7f4e4f545f454e4f5547485f455448455200000000000000000000000000000000600082015250565b60006132ff6010836122a7565b915061330a826132c9565b602082019050919050565b6000602082019050818103600083015261332e816132f2565b9050919050565b7f455843454544535f4d41585f5045525f54580000000000000000000000000000600082015250565b600061336b6012836122a7565b915061337682613335565b602082019050919050565b6000602082019050818103600083015261339a8161335e565b9050919050565b7f455843454544535f4d41585f5045525f57414c4c455400000000000000000000600082015250565b60006133d76016836122a7565b91506133e2826133a1565b602082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b60006134198385612b6d565b93506134268385846125b5565b61342f836122eb565b840190509392505050565b600060808201905061344f60008301886123ec565b61345c60208301876123ec565b6134696040830186612482565b818103606083015261347c81848661340d565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e4f545f45584953545300000000000000000000000000000000000000000000600082015250565b60006134ed600a836122a7565b91506134f8826134b7565b602082019050919050565b6000602082019050818103600083015261351c816134e0565b9050919050565b600081905092915050565b6000815461353b8161298c565b6135458186613523565b945060018216600081146135605760018114613575576135a8565b60ff19831686528115158202860193506135a8565b61357e85612c9c565b60005b838110156135a057815481890152600182019150602081019050613581565b838801955050505b50505092915050565b60006135bc8261229c565b6135c68185613523565b93506135d68185602086016122b8565b80840191505092915050565b60006135ee828561352e565b91506135fa82846135b1565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136626026836122a7565b915061366d82613606565b604082019050919050565b6000602082019050818103600083015261369181613655565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136d282612357565b91506136dd83612357565b9250826136ed576136ec613698565b5b828204905092915050565b600061370382612357565b915061370e83612357565b9250828210156137215761372061305e565b5b828203905092915050565b600061373782612357565b915061374283612357565b92508261375257613751613698565b5b828206905092915050565b7f414c52454144595f4d494e544544000000000000000000000000000000000000600082015250565b6000613793600e836122a7565b915061379e8261375d565b602082019050919050565b600060208201905081810360008301526137c281613786565b905091905056fea264697066735822122056124aa6c35bc396de3a5e3013dcae7671861c51644c40f8f19c5f51d705d49564736f6c634300080f0033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d6456334d7447427064756b67666538566558385666487447677448666b6d6b707445325a76376835514a4a6423000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _uri (string): https://gateway.pinata.cloud/ipfs/QmdV3MtGBpdukgfe8VeX8VfHtGgtHfkmkptE2Zv7h5QJJd#

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [2] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [3] : 732f516d6456334d7447427064756b6766653856655838566648744767744866
Arg [4] : 6b6d6b707445325a76376835514a4a6423000000000000000000000000000000


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.