ETH Price: $3,595.07 (+0.46%)

Token

The Americans (TAs)
 

Overview

Max Total Supply

10,000 TAs

Holders

2,193

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 TAs
0x004415153db5dd414f5a2c5147750351588f8118
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Americans NFT is a 10,000-pieces NFT collection on Opensea.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TheAmericans

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-14
*/

// SPDX-License-Identifier: MIT
/**
 * @title TheAmericans
 * @author DevAmerican
 * @dev Used for Ethereum projects compatible with OpenSea
 */
pragma solidity ^0.8.0;
pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
pragma solidity ^0.8.0;
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
pragma solidity ^0.8.0;
interface IERC721 is IERC165 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );
    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
pragma solidity ^0.8.0;
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
pragma solidity ^0.8.0;
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
pragma solidity ^0.8.1;
library Address {
    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _setOwner(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        // 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);
    }
    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);
    }
    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);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
    // word because each write operation emits an extra SLOAD to first read the
    // back. This is the compiler's defense against contract upgrades and

    // but in exchange the refund on every call to nonReentrant will be lower in
    // transaction's gas, it is best to keep them low in cases like this one, to
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;

        _;
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 private currentIndex = 0;

    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;
    string private _name;
    string private _symbol;
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) private _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(
        string memory name_,
        string memory symbol_,
        uint256 maxBatchSize_,
        uint256 collectionSize_
    ) {
        require(
            collectionSize_ > 0,
            "ERC721A: collection must have a nonzero supply"
        );
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }

        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory baseURI = _baseURI();
        return
            bytes(baseURI).length > 0
                ? string(abi.encodePacked(baseURI, tokenId.toString()))
                : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721A: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);
        _approve(address(0), tokenId, prevOwnership.addr);

        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    uint256 public nextOwnerToExplicitlySet = 0;
    function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
        require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

pragma solidity ^0.8.0;
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

contract TheAmericans is Ownable, ERC721A, ReentrancyGuard {

    bool public publicSale = false;
    bool public whitelistSale = false;

    uint256 public maxPerTx = 20;
    uint256 public maxPerAddress = 20;
    uint256 public maxToken = 10000;
    uint256 public price = 0.03 ether;

    string private _baseTokenURI = "";

    bytes32 root;

    constructor(string memory _NAME, string memory _SYMBOL)
        ERC721A(_NAME, _SYMBOL, 1000, maxToken)
    {}

    modifier callerIsUser() {
        require(tx.origin == msg.sender, "The caller is another contract");
        _;
    }

    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }

    function getOwnershipData(uint256 tokenId)
        external
        view
        returns (TokenOwnership memory)
    {
        return ownershipOf(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory _tokenURI = super.tokenURI(tokenId);
        return
            bytes(_tokenURI).length > 0
                ? string(abi.encodePacked(_tokenURI, ".json"))
                : "";
    }

    function verify(bytes32[] memory proof) internal view returns (bool) {
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        return MerkleProof.verify(proof, root, leaf);
    }

    function mint(uint256 quantity, bytes32[] memory proof) external payable callerIsUser {
        require(whitelistSale || publicSale, "SALE_HAS_NOT_STARTED_YET");
        require(numberMinted(msg.sender) + quantity <= maxPerAddress, "PER_WALLET_LIMIT_REACHED");
        require(quantity > 0, "INVALID_QUANTITY");
        require(quantity <= maxPerTx, "CANNOT_MINT_THAT_MANY");
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_MINT_DESIRED_AMOUNT");
        if(whitelistSale){
            require(verify(proof), "ADDRESS_NOT_WHITELISTED");
        }
        if(numberMinted(msg.sender) > 0){
            require(msg.value >= price * quantity, "INVALID_ETH");
        }else{
            require(msg.value >= (price * quantity) - price, "INVALID_ETH");
        }
        _safeMint(msg.sender, quantity);
    }

    function teamAllocationMint(address _address, uint256 quantity) external onlyOwner {
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_GIVEAWAY_DESIRED_AMOUNT");
        _safeMint(_address, quantity);
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }

    function setPrice(uint256 _PriceInWEI) external onlyOwner {
        price = _PriceInWEI;
    }

    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }

    function flipPublicSaleState() external onlyOwner {
        publicSale = !publicSale;
    }

    function flipWhitelistState() external onlyOwner {
        whitelistSale = !whitelistSale;
    }

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_NAME","type":"string"},{"internalType":"string","name":"_SYMBOL","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":[],"name":"flipPublicSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipWhitelistState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"tokenId","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":"tokenId","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PriceInWEI","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","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":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"teamAllocationMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tokenId","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":"whitelistSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506014600b556014600c55612710600d55666a94d74f430000600e5560405180602001604052806000815250600f90805190602001906200008692919062000290565b503480156200009457600080fd5b5060405162005716380380620057168339818101604052810190620000ba9190620003b2565b81816103e8600d54620000e2620000d6620001c460201b60201c565b620001cc60201b60201c565b6000811162000128576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011f9062000495565b60405180910390fd5b600082116200016e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001659062000473565b60405180910390fd5b83600290805190602001906200018692919062000290565b5082600390805190602001906200019f92919062000290565b508160a0818152505080608081815250505050505060016009819055505050620006d6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200029e906200055d565b90600052602060002090601f016020900481019282620002c257600085556200030e565b82601f10620002dd57805160ff19168380011785556200030e565b828001600101855582156200030e579182015b828111156200030d578251825591602001919060010190620002f0565b5b5090506200031d919062000321565b5090565b5b808211156200033c57600081600090555060010162000322565b5090565b6000620003576200035184620004e0565b620004b7565b9050828152602081018484840111156200037057600080fd5b6200037d84828562000527565b509392505050565b600082601f8301126200039757600080fd5b8151620003a984826020860162000340565b91505092915050565b60008060408385031215620003c657600080fd5b600083015167ffffffffffffffff811115620003e157600080fd5b620003ef8582860162000385565b925050602083015167ffffffffffffffff8111156200040d57600080fd5b6200041b8582860162000385565b9150509250929050565b60006200043460278362000516565b9150620004418262000638565b604082019050919050565b60006200045b602e8362000516565b9150620004688262000687565b604082019050919050565b600060208201905081810360008301526200048e8162000425565b9050919050565b60006020820190508181036000830152620004b0816200044c565b9050919050565b6000620004c3620004d6565b9050620004d1828262000593565b919050565b6000604051905090565b600067ffffffffffffffff821115620004fe57620004fd620005f8565b5b620005098262000627565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620005475780820151818401526020810190506200052a565b8381111562000557576000848401525b50505050565b600060028204905060018216806200057657607f821691505b602082108114156200058d576200058c620005c9565b5b50919050565b6200059e8262000627565b810181811067ffffffffffffffff82111715620005c057620005bf620005f8565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a05161500f6200070760003960008181612449015281816124720152612ae601526000505061500f6000f3fe60806040526004361061020f5760003560e01c80638da5cb5b11610118578063c87b56dd116100a0578063dc33e6811161006f578063dc33e6811461077c578063e985e9c5146107b9578063f2fde38b146107f6578063f6fa26ab1461081f578063f968adbe146108365761020f565b8063c87b56dd146106c0578063ca69e323146106fd578063d7224ba014610728578063dab5f340146107535761020f565b8063a035b1fe116100e7578063a035b1fe14610610578063a10866ef1461063b578063a22cb46514610652578063b88d4fde1461067b578063ba41b0c6146106a45761020f565b80638da5cb5b1461055457806391b7f5ed1461057f5780639231ab2a146105a857806395d89b41146105e55761020f565b806333bc1c5c1161019b57806355f804b31161016a57806355f804b31461046f5780636352211e14610498578063639814e0146104d557806370a0823114610500578063715018a61461053d5761020f565b806333bc1c5c146103c75780633ccfd60b146103f257806342842e0e146104095780634f6ccce7146104325761020f565b80630aada278116101e25780630aada278146102e257806318160ddd1461030b57806323b872dd146103365780632f745c591461035f57806331ffd6f11461039c5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906136ae565b610861565b6040516102489190613dfb565b60405180910390f35b34801561025d57600080fd5b506102666109ab565b6040516102739190613e16565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613745565b610a3d565b6040516102b09190613d94565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190613649565b610ac2565b005b3480156102ee57600080fd5b5061030960048036038101906103049190613649565b610bdb565b005b34801561031757600080fd5b50610320610cbc565b60405161032d9190614213565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613543565b610cc6565b005b34801561036b57600080fd5b5061038660048036038101906103819190613649565b610cd6565b6040516103939190614213565b60405180910390f35b3480156103a857600080fd5b506103b1610ed4565b6040516103be9190613dfb565b60405180910390f35b3480156103d357600080fd5b506103dc610ee7565b6040516103e99190613dfb565b60405180910390f35b3480156103fe57600080fd5b50610407610efa565b005b34801561041557600080fd5b50610430600480360381019061042b9190613543565b610fbf565b005b34801561043e57600080fd5b5061045960048036038101906104549190613745565b610fdf565b6040516104669190614213565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613700565b611032565b005b3480156104a457600080fd5b506104bf60048036038101906104ba9190613745565b6110c4565b6040516104cc9190613d94565b60405180910390f35b3480156104e157600080fd5b506104ea6110da565b6040516104f79190614213565b60405180910390f35b34801561050c57600080fd5b50610527600480360381019061052291906134de565b6110e0565b6040516105349190614213565b60405180910390f35b34801561054957600080fd5b506105526111c9565b005b34801561056057600080fd5b50610569611251565b6040516105769190613d94565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a19190613745565b61127a565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190613745565b611300565b6040516105dc91906141f8565b60405180910390f35b3480156105f157600080fd5b506105fa611318565b6040516106079190613e16565b60405180910390f35b34801561061c57600080fd5b506106256113aa565b6040516106329190614213565b60405180910390f35b34801561064757600080fd5b506106506113b0565b005b34801561065e57600080fd5b506106796004803603810190610674919061360d565b611458565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613592565b6115d9565b005b6106be60048036038101906106b9919061376e565b611635565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190613745565b611970565b6040516106f49190613e16565b60405180910390f35b34801561070957600080fd5b50610712611a0e565b60405161071f9190614213565b60405180910390f35b34801561073457600080fd5b5061073d611a14565b60405161074a9190614213565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613685565b611a1a565b005b34801561078857600080fd5b506107a3600480360381019061079e91906134de565b611aa0565b6040516107b09190614213565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190613507565b611ab2565b6040516107ed9190613dfb565b60405180910390f35b34801561080257600080fd5b5061081d600480360381019061081891906134de565b611b46565b005b34801561082b57600080fd5b50610834611c3e565b005b34801561084257600080fd5b5061084b611ce6565b6040516108589190614213565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a457506109a382611cec565b5b9050919050565b6060600280546109ba9061459c565b80601f01602080910402602001604051908101604052809291908181526020018280546109e69061459c565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a4882611d56565b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906141b8565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acd826110c4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614098565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5d611d64565b73ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b81610b86611d64565b611ab2565b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613f98565b60405180910390fd5b610bd6838383611d6c565b505050565b610be3611d64565b73ffffffffffffffffffffffffffffffffffffffff16610c01611251565b73ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613ff8565b60405180910390fd5b600d5481610c63610cbc565b610c6d9190614339565b1115610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614138565b60405180910390fd5b610cb88282611e1e565b5050565b6000600154905090565b610cd1838383611e3c565b505050565b6000610ce1836110e0565b8210610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990613e38565b60405180910390fd5b6000610d2c610cbc565b905060008060005b83811015610e92576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7e5786841415610e6f578195505050505050610ece565b8380610e7a906145ff565b9450505b508080610e8a906145ff565b915050610d34565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590614178565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b610f02611d64565b73ffffffffffffffffffffffffffffffffffffffff16610f20611251565b73ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613ff8565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fbc573d6000803e3d6000fd5b50565b610fda838383604051806020016040528060008152506115d9565b505050565b6000610fe9610cbc565b821061102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190613ef8565b60405180910390fd5b819050919050565b61103a611d64565b73ffffffffffffffffffffffffffffffffffffffff16611058611251565b73ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590613ff8565b60405180910390fd5b8181600f91906110bf92919061323b565b505050565b60006110cf826123f5565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890613fb8565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111d1611d64565b73ffffffffffffffffffffffffffffffffffffffff166111ef611251565b73ffffffffffffffffffffffffffffffffffffffff1614611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90613ff8565b60405180910390fd5b61124f60006125f8565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611282611d64565b73ffffffffffffffffffffffffffffffffffffffff166112a0611251565b73ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613ff8565b60405180910390fd5b80600e8190555050565b6113086132c1565b611311826123f5565b9050919050565b6060600380546113279061459c565b80601f01602080910402602001604051908101604052809291908181526020018280546113539061459c565b80156113a05780601f10611375576101008083540402835291602001916113a0565b820191906000526020600020905b81548152906001019060200180831161138357829003601f168201915b5050505050905090565b600e5481565b6113b8611d64565b73ffffffffffffffffffffffffffffffffffffffff166113d6611251565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613ff8565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b611460611d64565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614038565b60405180910390fd5b80600760006114db611d64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611588611d64565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115cd9190613dfb565b60405180910390a35050565b6115e4848484611e3c565b6115f0848484846126bc565b61162f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611626906140d8565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90613f58565b60405180910390fd5b600a60019054906101000a900460ff16806116ca5750600a60009054906101000a900460ff165b611709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611700906140b8565b60405180910390fd5b600c548261171633611aa0565b6117209190614339565b1115611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613f78565b60405180910390fd5b600082116117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90614158565b60405180910390fd5b600b548211156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613e58565b60405180910390fd5b600d54826117f5610cbc565b6117ff9190614339565b1115611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790614078565b60405180910390fd5b600a60019054906101000a900460ff161561189e5761185e81612853565b61189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613ed8565b60405180910390fd5b5b60006118a933611aa0565b11156119045781600e546118bd91906143c0565b3410156118ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f690613e98565b60405180910390fd5b611962565b600e5482600e5461191591906143c0565b61191f919061444e565b341015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613e98565b60405180910390fd5b5b61196c3383611e1e565b5050565b606061197b82611d56565b6119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614018565b60405180910390fd5b60006119c583612894565b905060008151116119e55760405180602001604052806000815250611a06565b806040516020016119f69190613d72565b6040516020818303038152906040525b915050919050565b600d5481565b60085481565b611a22611d64565b73ffffffffffffffffffffffffffffffffffffffff16611a40611251565b73ffffffffffffffffffffffffffffffffffffffff1614611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90613ff8565b60405180910390fd5b8060108190555050565b6000611aab8261293b565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b4e611d64565b73ffffffffffffffffffffffffffffffffffffffff16611b6c611251565b73ffffffffffffffffffffffffffffffffffffffff1614611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990613ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613e78565b60405180910390fd5b611c3b816125f8565b50565b611c46611d64565b73ffffffffffffffffffffffffffffffffffffffff16611c64611251565b73ffffffffffffffffffffffffffffffffffffffff1614611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb190613ff8565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611e38828260405180602001604052806000815250612a24565b5050565b6000611e47826123f5565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611e6e611d64565b73ffffffffffffffffffffffffffffffffffffffff161480611eca5750611e93611d64565b73ffffffffffffffffffffffffffffffffffffffff16611eb284610a3d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ee65750611ee58260000151611ee0611d64565b611ab2565b5b905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90614058565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9190613fd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200190613f18565b60405180910390fd5b6120178585856001612f04565b6120276000848460000151611d6c565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16612095919061441a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661213991906142f3565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461223f9190614339565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612385576122b581611d56565b15612384576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123ed8686866001612f0a565b505050505050565b6123fd6132c1565b61240682611d56565b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613eb8565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106124a95760017f00000000000000000000000000000000000000000000000000000000000000008461249c919061444e565b6124a69190614339565b90505b60008390505b8181106125b7576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125a3578093505050506125f3565b5080806125af90614572565b9150506124af565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614198565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126dd8473ffffffffffffffffffffffffffffffffffffffff16612f10565b15612846578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612706611d64565b8786866040518563ffffffff1660e01b81526004016127289493929190613daf565b602060405180830381600087803b15801561274257600080fd5b505af192505050801561277357506040513d601f19601f8201168201806040525081019061277091906136d7565b60015b6127f6573d80600081146127a3576040519150601f19603f3d011682016040523d82523d6000602084013e6127a8565b606091505b506000815114156127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906140d8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061284b565b600190505b949350505050565b600080336040516020016128679190613d33565b60405160208183030381529060405280519060200120905061288c8360105483612f33565b915050919050565b606061289f82611d56565b6128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d590614018565b60405180910390fd5b60006128e8612f4a565b905060008151116129085760405180602001604052806000815250612933565b8061291284612fdc565b604051602001612923929190613d4e565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a390613f38565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290614118565b60405180910390fd5b612aa481611d56565b15612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906140f8565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e906141d8565b60405180910390fd5b612b546000858386612f04565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612c5191906142f3565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c7891906142f3565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612ee757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e8760008884886126bc565b612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd906140d8565b60405180910390fd5b8180612ed1906145ff565b9250508080612edf906145ff565b915050612e16565b5080600181905550612efc6000878588612f0a565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082612f408584613189565b1490509392505050565b6060600f8054612f599061459c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f859061459c565b8015612fd25780601f10612fa757610100808354040283529160200191612fd2565b820191906000526020600020905b815481529060010190602001808311612fb557829003601f168201915b5050505050905090565b60606000821415613024576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613184565b600082905060005b6000821461305657808061303f906145ff565b915050600a8261304f919061438f565b915061302c565b60008167ffffffffffffffff811115613098577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156130ca5781602001600182028036833780820191505090505b5090505b6000851461317d576001826130e3919061444e565b9150600a856130f2919061466c565b60306130fe9190614339565b60f81b81838151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85613176919061438f565b94506130ce565b8093505050505b919050565b60008082905060005b84518110156132195760008582815181106131d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116131f8576131f18382613224565b9250613205565b6132028184613224565b92505b508080613211906145ff565b915050613192565b508091505092915050565b600082600052816020526040600020905092915050565b8280546132479061459c565b90600052602060002090601f01602090048101928261326957600085556132b0565b82601f1061328257803560ff19168380011785556132b0565b828001600101855582156132b0579182015b828111156132af578235825591602001919060010190613294565b5b5090506132bd91906132fb565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156133145760008160009055506001016132fc565b5090565b600061332b61332684614253565b61422e565b9050808382526020820190508285602086028201111561334a57600080fd5b60005b8581101561337a57816133608882613416565b84526020840193506020830192505060018101905061334d565b5050509392505050565b60006133976133928461427f565b61422e565b9050828152602081018484840111156133af57600080fd5b6133ba848285614530565b509392505050565b6000813590506133d181614f66565b92915050565b600082601f8301126133e857600080fd5b81356133f8848260208601613318565b91505092915050565b60008135905061341081614f7d565b92915050565b60008135905061342581614f94565b92915050565b60008135905061343a81614fab565b92915050565b60008151905061344f81614fab565b92915050565b600082601f83011261346657600080fd5b8135613476848260208601613384565b91505092915050565b60008083601f84011261349157600080fd5b8235905067ffffffffffffffff8111156134aa57600080fd5b6020830191508360018202830111156134c257600080fd5b9250929050565b6000813590506134d881614fc2565b92915050565b6000602082840312156134f057600080fd5b60006134fe848285016133c2565b91505092915050565b6000806040838503121561351a57600080fd5b6000613528858286016133c2565b9250506020613539858286016133c2565b9150509250929050565b60008060006060848603121561355857600080fd5b6000613566868287016133c2565b9350506020613577868287016133c2565b9250506040613588868287016134c9565b9150509250925092565b600080600080608085870312156135a857600080fd5b60006135b6878288016133c2565b94505060206135c7878288016133c2565b93505060406135d8878288016134c9565b925050606085013567ffffffffffffffff8111156135f557600080fd5b61360187828801613455565b91505092959194509250565b6000806040838503121561362057600080fd5b600061362e858286016133c2565b925050602061363f85828601613401565b9150509250929050565b6000806040838503121561365c57600080fd5b600061366a858286016133c2565b925050602061367b858286016134c9565b9150509250929050565b60006020828403121561369757600080fd5b60006136a584828501613416565b91505092915050565b6000602082840312156136c057600080fd5b60006136ce8482850161342b565b91505092915050565b6000602082840312156136e957600080fd5b60006136f784828501613440565b91505092915050565b6000806020838503121561371357600080fd5b600083013567ffffffffffffffff81111561372d57600080fd5b6137398582860161347f565b92509250509250929050565b60006020828403121561375757600080fd5b6000613765848285016134c9565b91505092915050565b6000806040838503121561378157600080fd5b600061378f858286016134c9565b925050602083013567ffffffffffffffff8111156137ac57600080fd5b6137b8858286016133d7565b9150509250929050565b6137cb81614482565b82525050565b6137da81614482565b82525050565b6137f16137ec82614482565b614648565b82525050565b61380081614494565b82525050565b6000613811826142b0565b61381b81856142c6565b935061382b81856020860161453f565b61383481614759565b840191505092915050565b600061384a826142bb565b61385481856142d7565b935061386481856020860161453f565b61386d81614759565b840191505092915050565b6000613883826142bb565b61388d81856142e8565b935061389d81856020860161453f565b80840191505092915050565b60006138b66022836142d7565b91506138c182614777565b604082019050919050565b60006138d96015836142d7565b91506138e4826147c6565b602082019050919050565b60006138fc6026836142d7565b9150613907826147ef565b604082019050919050565b600061391f600b836142d7565b915061392a8261483e565b602082019050919050565b6000613942602a836142d7565b915061394d82614867565b604082019050919050565b60006139656017836142d7565b9150613970826148b6565b602082019050919050565b60006139886023836142d7565b9150613993826148df565b604082019050919050565b60006139ab6025836142d7565b91506139b68261492e565b604082019050919050565b60006139ce6031836142d7565b91506139d98261497d565b604082019050919050565b60006139f1601e836142d7565b91506139fc826149cc565b602082019050919050565b6000613a146018836142d7565b9150613a1f826149f5565b602082019050919050565b6000613a376039836142d7565b9150613a4282614a1e565b604082019050919050565b6000613a5a602b836142d7565b9150613a6582614a6d565b604082019050919050565b6000613a7d6026836142d7565b9150613a8882614abc565b604082019050919050565b6000613aa06005836142e8565b9150613aab82614b0b565b600582019050919050565b6000613ac36020836142d7565b9150613ace82614b34565b602082019050919050565b6000613ae6602f836142d7565b9150613af182614b5d565b604082019050919050565b6000613b09601a836142d7565b9150613b1482614bac565b602082019050919050565b6000613b2c6032836142d7565b9150613b3782614bd5565b604082019050919050565b6000613b4f6028836142d7565b9150613b5a82614c24565b604082019050919050565b6000613b726022836142d7565b9150613b7d82614c73565b604082019050919050565b6000613b956018836142d7565b9150613ba082614cc2565b602082019050919050565b6000613bb86033836142d7565b9150613bc382614ceb565b604082019050919050565b6000613bdb601d836142d7565b9150613be682614d3a565b602082019050919050565b6000613bfe6021836142d7565b9150613c0982614d63565b604082019050919050565b6000613c21602c836142d7565b9150613c2c82614db2565b604082019050919050565b6000613c446010836142d7565b9150613c4f82614e01565b602082019050919050565b6000613c67602e836142d7565b9150613c7282614e2a565b604082019050919050565b6000613c8a602f836142d7565b9150613c9582614e79565b604082019050919050565b6000613cad602d836142d7565b9150613cb882614ec8565b604082019050919050565b6000613cd06022836142d7565b9150613cdb82614f17565b604082019050919050565b604082016000820151613cfc60008501826137c2565b506020820151613d0f6020850182613d24565b50505050565b613d1e81614512565b82525050565b613d2d8161451c565b82525050565b6000613d3f82846137e0565b60148201915081905092915050565b6000613d5a8285613878565b9150613d668284613878565b91508190509392505050565b6000613d7e8284613878565b9150613d8982613a93565b915081905092915050565b6000602082019050613da960008301846137d1565b92915050565b6000608082019050613dc460008301876137d1565b613dd160208301866137d1565b613dde6040830185613d15565b8181036060830152613df08184613806565b905095945050505050565b6000602082019050613e1060008301846137f7565b92915050565b60006020820190508181036000830152613e30818461383f565b905092915050565b60006020820190508181036000830152613e51816138a9565b9050919050565b60006020820190508181036000830152613e71816138cc565b9050919050565b60006020820190508181036000830152613e91816138ef565b9050919050565b60006020820190508181036000830152613eb181613912565b9050919050565b60006020820190508181036000830152613ed181613935565b9050919050565b60006020820190508181036000830152613ef181613958565b9050919050565b60006020820190508181036000830152613f118161397b565b9050919050565b60006020820190508181036000830152613f318161399e565b9050919050565b60006020820190508181036000830152613f51816139c1565b9050919050565b60006020820190508181036000830152613f71816139e4565b9050919050565b60006020820190508181036000830152613f9181613a07565b9050919050565b60006020820190508181036000830152613fb181613a2a565b9050919050565b60006020820190508181036000830152613fd181613a4d565b9050919050565b60006020820190508181036000830152613ff181613a70565b9050919050565b6000602082019050818103600083015261401181613ab6565b9050919050565b6000602082019050818103600083015261403181613ad9565b9050919050565b6000602082019050818103600083015261405181613afc565b9050919050565b6000602082019050818103600083015261407181613b1f565b9050919050565b6000602082019050818103600083015261409181613b42565b9050919050565b600060208201905081810360008301526140b181613b65565b9050919050565b600060208201905081810360008301526140d181613b88565b9050919050565b600060208201905081810360008301526140f181613bab565b9050919050565b6000602082019050818103600083015261411181613bce565b9050919050565b6000602082019050818103600083015261413181613bf1565b9050919050565b6000602082019050818103600083015261415181613c14565b9050919050565b6000602082019050818103600083015261417181613c37565b9050919050565b6000602082019050818103600083015261419181613c5a565b9050919050565b600060208201905081810360008301526141b181613c7d565b9050919050565b600060208201905081810360008301526141d181613ca0565b9050919050565b600060208201905081810360008301526141f181613cc3565b9050919050565b600060408201905061420d6000830184613ce6565b92915050565b60006020820190506142286000830184613d15565b92915050565b6000614238614249565b905061424482826145ce565b919050565b6000604051905090565b600067ffffffffffffffff82111561426e5761426d61472a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561429a5761429961472a565b5b6142a382614759565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142fe826144d6565b9150614309836144d6565b9250826fffffffffffffffffffffffffffffffff0382111561432e5761432d61469d565b5b828201905092915050565b600061434482614512565b915061434f83614512565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143845761438361469d565b5b828201905092915050565b600061439a82614512565b91506143a583614512565b9250826143b5576143b46146cc565b5b828204905092915050565b60006143cb82614512565b91506143d683614512565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561440f5761440e61469d565b5b828202905092915050565b6000614425826144d6565b9150614430836144d6565b9250828210156144435761444261469d565b5b828203905092915050565b600061445982614512565b915061446483614512565b9250828210156144775761447661469d565b5b828203905092915050565b600061448d826144f2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561455d578082015181840152602081019050614542565b8381111561456c576000848401525b50505050565b600061457d82614512565b915060008214156145915761459061469d565b5b600182039050919050565b600060028204905060018216806145b457607f821691505b602082108114156145c8576145c76146fb565b5b50919050565b6145d782614759565b810181811067ffffffffffffffff821117156145f6576145f561472a565b5b80604052505050565b600061460a82614512565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561463d5761463c61469d565b5b600182019050919050565b60006146538261465a565b9050919050565b60006146658261476a565b9050919050565b600061467782614512565b915061468283614512565b925082614692576146916146cc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614f6f81614482565b8114614f7a57600080fd5b50565b614f8681614494565b8114614f9157600080fd5b50565b614f9d816144a0565b8114614fa857600080fd5b50565b614fb4816144aa565b8114614fbf57600080fd5b50565b614fcb81614512565b8114614fd657600080fd5b5056fea2646970667358221220bbccec5684c5b89fb3cb90b27ee9453ec70ed6069629d3716dfc45181850656e64736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d54686520416d65726963616e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035441730000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061020f5760003560e01c80638da5cb5b11610118578063c87b56dd116100a0578063dc33e6811161006f578063dc33e6811461077c578063e985e9c5146107b9578063f2fde38b146107f6578063f6fa26ab1461081f578063f968adbe146108365761020f565b8063c87b56dd146106c0578063ca69e323146106fd578063d7224ba014610728578063dab5f340146107535761020f565b8063a035b1fe116100e7578063a035b1fe14610610578063a10866ef1461063b578063a22cb46514610652578063b88d4fde1461067b578063ba41b0c6146106a45761020f565b80638da5cb5b1461055457806391b7f5ed1461057f5780639231ab2a146105a857806395d89b41146105e55761020f565b806333bc1c5c1161019b57806355f804b31161016a57806355f804b31461046f5780636352211e14610498578063639814e0146104d557806370a0823114610500578063715018a61461053d5761020f565b806333bc1c5c146103c75780633ccfd60b146103f257806342842e0e146104095780634f6ccce7146104325761020f565b80630aada278116101e25780630aada278146102e257806318160ddd1461030b57806323b872dd146103365780632f745c591461035f57806331ffd6f11461039c5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b600480360381019061023691906136ae565b610861565b6040516102489190613dfb565b60405180910390f35b34801561025d57600080fd5b506102666109ab565b6040516102739190613e16565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190613745565b610a3d565b6040516102b09190613d94565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190613649565b610ac2565b005b3480156102ee57600080fd5b5061030960048036038101906103049190613649565b610bdb565b005b34801561031757600080fd5b50610320610cbc565b60405161032d9190614213565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613543565b610cc6565b005b34801561036b57600080fd5b5061038660048036038101906103819190613649565b610cd6565b6040516103939190614213565b60405180910390f35b3480156103a857600080fd5b506103b1610ed4565b6040516103be9190613dfb565b60405180910390f35b3480156103d357600080fd5b506103dc610ee7565b6040516103e99190613dfb565b60405180910390f35b3480156103fe57600080fd5b50610407610efa565b005b34801561041557600080fd5b50610430600480360381019061042b9190613543565b610fbf565b005b34801561043e57600080fd5b5061045960048036038101906104549190613745565b610fdf565b6040516104669190614213565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613700565b611032565b005b3480156104a457600080fd5b506104bf60048036038101906104ba9190613745565b6110c4565b6040516104cc9190613d94565b60405180910390f35b3480156104e157600080fd5b506104ea6110da565b6040516104f79190614213565b60405180910390f35b34801561050c57600080fd5b50610527600480360381019061052291906134de565b6110e0565b6040516105349190614213565b60405180910390f35b34801561054957600080fd5b506105526111c9565b005b34801561056057600080fd5b50610569611251565b6040516105769190613d94565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a19190613745565b61127a565b005b3480156105b457600080fd5b506105cf60048036038101906105ca9190613745565b611300565b6040516105dc91906141f8565b60405180910390f35b3480156105f157600080fd5b506105fa611318565b6040516106079190613e16565b60405180910390f35b34801561061c57600080fd5b506106256113aa565b6040516106329190614213565b60405180910390f35b34801561064757600080fd5b506106506113b0565b005b34801561065e57600080fd5b506106796004803603810190610674919061360d565b611458565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613592565b6115d9565b005b6106be60048036038101906106b9919061376e565b611635565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190613745565b611970565b6040516106f49190613e16565b60405180910390f35b34801561070957600080fd5b50610712611a0e565b60405161071f9190614213565b60405180910390f35b34801561073457600080fd5b5061073d611a14565b60405161074a9190614213565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613685565b611a1a565b005b34801561078857600080fd5b506107a3600480360381019061079e91906134de565b611aa0565b6040516107b09190614213565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190613507565b611ab2565b6040516107ed9190613dfb565b60405180910390f35b34801561080257600080fd5b5061081d600480360381019061081891906134de565b611b46565b005b34801561082b57600080fd5b50610834611c3e565b005b34801561084257600080fd5b5061084b611ce6565b6040516108589190614213565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a457506109a382611cec565b5b9050919050565b6060600280546109ba9061459c565b80601f01602080910402602001604051908101604052809291908181526020018280546109e69061459c565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a4882611d56565b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906141b8565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acd826110c4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614098565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5d611d64565b73ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b81610b86611d64565b611ab2565b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613f98565b60405180910390fd5b610bd6838383611d6c565b505050565b610be3611d64565b73ffffffffffffffffffffffffffffffffffffffff16610c01611251565b73ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613ff8565b60405180910390fd5b600d5481610c63610cbc565b610c6d9190614339565b1115610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614138565b60405180910390fd5b610cb88282611e1e565b5050565b6000600154905090565b610cd1838383611e3c565b505050565b6000610ce1836110e0565b8210610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1990613e38565b60405180910390fd5b6000610d2c610cbc565b905060008060005b83811015610e92576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e2657806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e7e5786841415610e6f578195505050505050610ece565b8380610e7a906145ff565b9450505b508080610e8a906145ff565b915050610d34565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590614178565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b610f02611d64565b73ffffffffffffffffffffffffffffffffffffffff16610f20611251565b73ffffffffffffffffffffffffffffffffffffffff1614610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90613ff8565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fbc573d6000803e3d6000fd5b50565b610fda838383604051806020016040528060008152506115d9565b505050565b6000610fe9610cbc565b821061102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190613ef8565b60405180910390fd5b819050919050565b61103a611d64565b73ffffffffffffffffffffffffffffffffffffffff16611058611251565b73ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590613ff8565b60405180910390fd5b8181600f91906110bf92919061323b565b505050565b60006110cf826123f5565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890613fb8565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111d1611d64565b73ffffffffffffffffffffffffffffffffffffffff166111ef611251565b73ffffffffffffffffffffffffffffffffffffffff1614611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90613ff8565b60405180910390fd5b61124f60006125f8565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611282611d64565b73ffffffffffffffffffffffffffffffffffffffff166112a0611251565b73ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90613ff8565b60405180910390fd5b80600e8190555050565b6113086132c1565b611311826123f5565b9050919050565b6060600380546113279061459c565b80601f01602080910402602001604051908101604052809291908181526020018280546113539061459c565b80156113a05780601f10611375576101008083540402835291602001916113a0565b820191906000526020600020905b81548152906001019060200180831161138357829003601f168201915b5050505050905090565b600e5481565b6113b8611d64565b73ffffffffffffffffffffffffffffffffffffffff166113d6611251565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613ff8565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b611460611d64565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614038565b60405180910390fd5b80600760006114db611d64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611588611d64565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115cd9190613dfb565b60405180910390a35050565b6115e4848484611e3c565b6115f0848484846126bc565b61162f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611626906140d8565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169a90613f58565b60405180910390fd5b600a60019054906101000a900460ff16806116ca5750600a60009054906101000a900460ff165b611709576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611700906140b8565b60405180910390fd5b600c548261171633611aa0565b6117209190614339565b1115611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613f78565b60405180910390fd5b600082116117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90614158565b60405180910390fd5b600b548211156117e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e090613e58565b60405180910390fd5b600d54826117f5610cbc565b6117ff9190614339565b1115611840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183790614078565b60405180910390fd5b600a60019054906101000a900460ff161561189e5761185e81612853565b61189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613ed8565b60405180910390fd5b5b60006118a933611aa0565b11156119045781600e546118bd91906143c0565b3410156118ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f690613e98565b60405180910390fd5b611962565b600e5482600e5461191591906143c0565b61191f919061444e565b341015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613e98565b60405180910390fd5b5b61196c3383611e1e565b5050565b606061197b82611d56565b6119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190614018565b60405180910390fd5b60006119c583612894565b905060008151116119e55760405180602001604052806000815250611a06565b806040516020016119f69190613d72565b6040516020818303038152906040525b915050919050565b600d5481565b60085481565b611a22611d64565b73ffffffffffffffffffffffffffffffffffffffff16611a40611251565b73ffffffffffffffffffffffffffffffffffffffff1614611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90613ff8565b60405180910390fd5b8060108190555050565b6000611aab8261293b565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b4e611d64565b73ffffffffffffffffffffffffffffffffffffffff16611b6c611251565b73ffffffffffffffffffffffffffffffffffffffff1614611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990613ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2990613e78565b60405180910390fd5b611c3b816125f8565b50565b611c46611d64565b73ffffffffffffffffffffffffffffffffffffffff16611c64611251565b73ffffffffffffffffffffffffffffffffffffffff1614611cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb190613ff8565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611e38828260405180602001604052806000815250612a24565b5050565b6000611e47826123f5565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611e6e611d64565b73ffffffffffffffffffffffffffffffffffffffff161480611eca5750611e93611d64565b73ffffffffffffffffffffffffffffffffffffffff16611eb284610a3d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ee65750611ee58260000151611ee0611d64565b611ab2565b5b905080611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90614058565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9190613fd8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561200a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200190613f18565b60405180910390fd5b6120178585856001612f04565b6120276000848460000151611d6c565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff16612095919061441a565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661213991906142f3565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461223f9190614339565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612385576122b581611d56565b15612384576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123ed8686866001612f0a565b505050505050565b6123fd6132c1565b61240682611d56565b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613eb8565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000003e883106124a95760017f00000000000000000000000000000000000000000000000000000000000003e88461249c919061444e565b6124a69190614339565b90505b60008390505b8181106125b7576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125a3578093505050506125f3565b5080806125af90614572565b9150506124af565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614198565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126dd8473ffffffffffffffffffffffffffffffffffffffff16612f10565b15612846578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612706611d64565b8786866040518563ffffffff1660e01b81526004016127289493929190613daf565b602060405180830381600087803b15801561274257600080fd5b505af192505050801561277357506040513d601f19601f8201168201806040525081019061277091906136d7565b60015b6127f6573d80600081146127a3576040519150601f19603f3d011682016040523d82523d6000602084013e6127a8565b606091505b506000815114156127ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e5906140d8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061284b565b600190505b949350505050565b600080336040516020016128679190613d33565b60405160208183030381529060405280519060200120905061288c8360105483612f33565b915050919050565b606061289f82611d56565b6128de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d590614018565b60405180910390fd5b60006128e8612f4a565b905060008151116129085760405180602001604052806000815250612933565b8061291284612fdc565b604051602001612923929190613d4e565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a390613f38565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290614118565b60405180910390fd5b612aa481611d56565b15612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906140f8565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000003e8831115612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e906141d8565b60405180910390fd5b612b546000858386612f04565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612c5191906142f3565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c7891906142f3565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612ee757818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e8760008884886126bc565b612ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebd906140d8565b60405180910390fd5b8180612ed1906145ff565b9250508080612edf906145ff565b915050612e16565b5080600181905550612efc6000878588612f0a565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082612f408584613189565b1490509392505050565b6060600f8054612f599061459c565b80601f0160208091040260200160405190810160405280929190818152602001828054612f859061459c565b8015612fd25780601f10612fa757610100808354040283529160200191612fd2565b820191906000526020600020905b815481529060010190602001808311612fb557829003601f168201915b5050505050905090565b60606000821415613024576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613184565b600082905060005b6000821461305657808061303f906145ff565b915050600a8261304f919061438f565b915061302c565b60008167ffffffffffffffff811115613098577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156130ca5781602001600182028036833780820191505090505b5090505b6000851461317d576001826130e3919061444e565b9150600a856130f2919061466c565b60306130fe9190614339565b60f81b81838151811061313a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85613176919061438f565b94506130ce565b8093505050505b919050565b60008082905060005b84518110156132195760008582815181106131d6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190508083116131f8576131f18382613224565b9250613205565b6132028184613224565b92505b508080613211906145ff565b915050613192565b508091505092915050565b600082600052816020526040600020905092915050565b8280546132479061459c565b90600052602060002090601f01602090048101928261326957600085556132b0565b82601f1061328257803560ff19168380011785556132b0565b828001600101855582156132b0579182015b828111156132af578235825591602001919060010190613294565b5b5090506132bd91906132fb565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156133145760008160009055506001016132fc565b5090565b600061332b61332684614253565b61422e565b9050808382526020820190508285602086028201111561334a57600080fd5b60005b8581101561337a57816133608882613416565b84526020840193506020830192505060018101905061334d565b5050509392505050565b60006133976133928461427f565b61422e565b9050828152602081018484840111156133af57600080fd5b6133ba848285614530565b509392505050565b6000813590506133d181614f66565b92915050565b600082601f8301126133e857600080fd5b81356133f8848260208601613318565b91505092915050565b60008135905061341081614f7d565b92915050565b60008135905061342581614f94565b92915050565b60008135905061343a81614fab565b92915050565b60008151905061344f81614fab565b92915050565b600082601f83011261346657600080fd5b8135613476848260208601613384565b91505092915050565b60008083601f84011261349157600080fd5b8235905067ffffffffffffffff8111156134aa57600080fd5b6020830191508360018202830111156134c257600080fd5b9250929050565b6000813590506134d881614fc2565b92915050565b6000602082840312156134f057600080fd5b60006134fe848285016133c2565b91505092915050565b6000806040838503121561351a57600080fd5b6000613528858286016133c2565b9250506020613539858286016133c2565b9150509250929050565b60008060006060848603121561355857600080fd5b6000613566868287016133c2565b9350506020613577868287016133c2565b9250506040613588868287016134c9565b9150509250925092565b600080600080608085870312156135a857600080fd5b60006135b6878288016133c2565b94505060206135c7878288016133c2565b93505060406135d8878288016134c9565b925050606085013567ffffffffffffffff8111156135f557600080fd5b61360187828801613455565b91505092959194509250565b6000806040838503121561362057600080fd5b600061362e858286016133c2565b925050602061363f85828601613401565b9150509250929050565b6000806040838503121561365c57600080fd5b600061366a858286016133c2565b925050602061367b858286016134c9565b9150509250929050565b60006020828403121561369757600080fd5b60006136a584828501613416565b91505092915050565b6000602082840312156136c057600080fd5b60006136ce8482850161342b565b91505092915050565b6000602082840312156136e957600080fd5b60006136f784828501613440565b91505092915050565b6000806020838503121561371357600080fd5b600083013567ffffffffffffffff81111561372d57600080fd5b6137398582860161347f565b92509250509250929050565b60006020828403121561375757600080fd5b6000613765848285016134c9565b91505092915050565b6000806040838503121561378157600080fd5b600061378f858286016134c9565b925050602083013567ffffffffffffffff8111156137ac57600080fd5b6137b8858286016133d7565b9150509250929050565b6137cb81614482565b82525050565b6137da81614482565b82525050565b6137f16137ec82614482565b614648565b82525050565b61380081614494565b82525050565b6000613811826142b0565b61381b81856142c6565b935061382b81856020860161453f565b61383481614759565b840191505092915050565b600061384a826142bb565b61385481856142d7565b935061386481856020860161453f565b61386d81614759565b840191505092915050565b6000613883826142bb565b61388d81856142e8565b935061389d81856020860161453f565b80840191505092915050565b60006138b66022836142d7565b91506138c182614777565b604082019050919050565b60006138d96015836142d7565b91506138e4826147c6565b602082019050919050565b60006138fc6026836142d7565b9150613907826147ef565b604082019050919050565b600061391f600b836142d7565b915061392a8261483e565b602082019050919050565b6000613942602a836142d7565b915061394d82614867565b604082019050919050565b60006139656017836142d7565b9150613970826148b6565b602082019050919050565b60006139886023836142d7565b9150613993826148df565b604082019050919050565b60006139ab6025836142d7565b91506139b68261492e565b604082019050919050565b60006139ce6031836142d7565b91506139d98261497d565b604082019050919050565b60006139f1601e836142d7565b91506139fc826149cc565b602082019050919050565b6000613a146018836142d7565b9150613a1f826149f5565b602082019050919050565b6000613a376039836142d7565b9150613a4282614a1e565b604082019050919050565b6000613a5a602b836142d7565b9150613a6582614a6d565b604082019050919050565b6000613a7d6026836142d7565b9150613a8882614abc565b604082019050919050565b6000613aa06005836142e8565b9150613aab82614b0b565b600582019050919050565b6000613ac36020836142d7565b9150613ace82614b34565b602082019050919050565b6000613ae6602f836142d7565b9150613af182614b5d565b604082019050919050565b6000613b09601a836142d7565b9150613b1482614bac565b602082019050919050565b6000613b2c6032836142d7565b9150613b3782614bd5565b604082019050919050565b6000613b4f6028836142d7565b9150613b5a82614c24565b604082019050919050565b6000613b726022836142d7565b9150613b7d82614c73565b604082019050919050565b6000613b956018836142d7565b9150613ba082614cc2565b602082019050919050565b6000613bb86033836142d7565b9150613bc382614ceb565b604082019050919050565b6000613bdb601d836142d7565b9150613be682614d3a565b602082019050919050565b6000613bfe6021836142d7565b9150613c0982614d63565b604082019050919050565b6000613c21602c836142d7565b9150613c2c82614db2565b604082019050919050565b6000613c446010836142d7565b9150613c4f82614e01565b602082019050919050565b6000613c67602e836142d7565b9150613c7282614e2a565b604082019050919050565b6000613c8a602f836142d7565b9150613c9582614e79565b604082019050919050565b6000613cad602d836142d7565b9150613cb882614ec8565b604082019050919050565b6000613cd06022836142d7565b9150613cdb82614f17565b604082019050919050565b604082016000820151613cfc60008501826137c2565b506020820151613d0f6020850182613d24565b50505050565b613d1e81614512565b82525050565b613d2d8161451c565b82525050565b6000613d3f82846137e0565b60148201915081905092915050565b6000613d5a8285613878565b9150613d668284613878565b91508190509392505050565b6000613d7e8284613878565b9150613d8982613a93565b915081905092915050565b6000602082019050613da960008301846137d1565b92915050565b6000608082019050613dc460008301876137d1565b613dd160208301866137d1565b613dde6040830185613d15565b8181036060830152613df08184613806565b905095945050505050565b6000602082019050613e1060008301846137f7565b92915050565b60006020820190508181036000830152613e30818461383f565b905092915050565b60006020820190508181036000830152613e51816138a9565b9050919050565b60006020820190508181036000830152613e71816138cc565b9050919050565b60006020820190508181036000830152613e91816138ef565b9050919050565b60006020820190508181036000830152613eb181613912565b9050919050565b60006020820190508181036000830152613ed181613935565b9050919050565b60006020820190508181036000830152613ef181613958565b9050919050565b60006020820190508181036000830152613f118161397b565b9050919050565b60006020820190508181036000830152613f318161399e565b9050919050565b60006020820190508181036000830152613f51816139c1565b9050919050565b60006020820190508181036000830152613f71816139e4565b9050919050565b60006020820190508181036000830152613f9181613a07565b9050919050565b60006020820190508181036000830152613fb181613a2a565b9050919050565b60006020820190508181036000830152613fd181613a4d565b9050919050565b60006020820190508181036000830152613ff181613a70565b9050919050565b6000602082019050818103600083015261401181613ab6565b9050919050565b6000602082019050818103600083015261403181613ad9565b9050919050565b6000602082019050818103600083015261405181613afc565b9050919050565b6000602082019050818103600083015261407181613b1f565b9050919050565b6000602082019050818103600083015261409181613b42565b9050919050565b600060208201905081810360008301526140b181613b65565b9050919050565b600060208201905081810360008301526140d181613b88565b9050919050565b600060208201905081810360008301526140f181613bab565b9050919050565b6000602082019050818103600083015261411181613bce565b9050919050565b6000602082019050818103600083015261413181613bf1565b9050919050565b6000602082019050818103600083015261415181613c14565b9050919050565b6000602082019050818103600083015261417181613c37565b9050919050565b6000602082019050818103600083015261419181613c5a565b9050919050565b600060208201905081810360008301526141b181613c7d565b9050919050565b600060208201905081810360008301526141d181613ca0565b9050919050565b600060208201905081810360008301526141f181613cc3565b9050919050565b600060408201905061420d6000830184613ce6565b92915050565b60006020820190506142286000830184613d15565b92915050565b6000614238614249565b905061424482826145ce565b919050565b6000604051905090565b600067ffffffffffffffff82111561426e5761426d61472a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561429a5761429961472a565b5b6142a382614759565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142fe826144d6565b9150614309836144d6565b9250826fffffffffffffffffffffffffffffffff0382111561432e5761432d61469d565b5b828201905092915050565b600061434482614512565b915061434f83614512565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143845761438361469d565b5b828201905092915050565b600061439a82614512565b91506143a583614512565b9250826143b5576143b46146cc565b5b828204905092915050565b60006143cb82614512565b91506143d683614512565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561440f5761440e61469d565b5b828202905092915050565b6000614425826144d6565b9150614430836144d6565b9250828210156144435761444261469d565b5b828203905092915050565b600061445982614512565b915061446483614512565b9250828210156144775761447661469d565b5b828203905092915050565b600061448d826144f2565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561455d578082015181840152602081019050614542565b8381111561456c576000848401525b50505050565b600061457d82614512565b915060008214156145915761459061469d565b5b600182039050919050565b600060028204905060018216806145b457607f821691505b602082108114156145c8576145c76146fb565b5b50919050565b6145d782614759565b810181811067ffffffffffffffff821117156145f6576145f561472a565b5b80604052505050565b600061460a82614512565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561463d5761463c61469d565b5b600182019050919050565b60006146538261465a565b9050919050565b60006146658261476a565b9050919050565b600061467782614512565b915061468283614512565b925082614692576146916146cc565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614f6f81614482565b8114614f7a57600080fd5b50565b614f8681614494565b8114614f9157600080fd5b50565b614f9d816144a0565b8114614fa857600080fd5b50565b614fb4816144aa565b8114614fbf57600080fd5b50565b614fcb81614512565b8114614fd657600080fd5b5056fea2646970667358221220bbccec5684c5b89fb3cb90b27ee9453ec70ed6069629d3716dfc45181850656e64736f6c63430008040033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d54686520416d65726963616e730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035441730000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): The Americans
Arg [1] : _SYMBOL (string): TAs

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [3] : 54686520416d65726963616e7300000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 5441730000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24340:3446:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16243:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15824:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26794:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12038:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17078:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12378:864;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24445:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24408:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27674:109;;;;;;;;;;;;;:::i;:::-;;17246:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12144:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27560:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14904:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24522:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13676:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7232:94;;;;;;;;;;;;;:::i;:::-;;7013:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27159:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25075:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15140:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24600:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27353:93;;;;;;;;;;;;;:::i;:::-;;16541:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17429:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25939:847;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25250:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24562:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21050:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27263:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24954:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16858:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7332:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27454:98;;;;;;;;;;;;;:::i;:::-;;24487:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13248:422;13395:4;13452:25;13437:40;;;:11;:40;;;;:105;;;;13509:33;13494:48;;;:11;:48;;;;13437:105;:172;;;;13574:35;13559:50;;;:11;:50;;;;13437:172;:225;;;;13626:36;13650:11;13626:23;:36::i;:::-;13437:225;13417:245;;13248:422;;;:::o;15034:100::-;15088:13;15121:5;15114:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15034:100;:::o;16243:292::-;16347:7;16394:16;16402:7;16394;:16::i;:::-;16372:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16503:15;:24;16519:7;16503:24;;;;;;;;;;;;;;;;;;;;;16496:31;;16243:292;;;:::o;15824:413::-;15897:13;15913:24;15929:7;15913:15;:24::i;:::-;15897:40;;15962:5;15956:11;;:2;:11;;;;15948:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16057:5;16041:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;16066:37;16083:5;16090:12;:10;:12::i;:::-;16066:16;:37::i;:::-;16041:62;16019:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16201:28;16210:2;16214:7;16223:5;16201:8;:28::i;:::-;15824:413;;;:::o;26794:235::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26924:8:::1;;26912;26896:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;26888:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;26992:29;27002:8;27012;26992:9;:29::i;:::-;26794:235:::0;;:::o;12038:100::-;12091:7;12118:12;;12111:19;;12038:100;:::o;17078:162::-;17204:28;17214:4;17220:2;17224:7;17204:9;:28::i;:::-;17078:162;;;:::o;12378:864::-;12503:7;12544:16;12554:5;12544:9;:16::i;:::-;12536:5;:24;12528:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12610:22;12635:13;:11;:13::i;:::-;12610:38;;12659:19;12693:25;12747:9;12742:426;12766:14;12762:1;:18;12742:426;;;12802:31;12836:11;:14;12848:1;12836:14;;;;;;;;;;;12802:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:1;12869:28;;:9;:14;;;:28;;;12865:103;;12938:9;:14;;;12918:34;;12865:103;13007:5;12986:26;;:17;:26;;;12982:175;;;13052:5;13037:11;:20;13033:77;;;13089:1;13082:8;;;;;;;;;13033:77;13128:13;;;;;:::i;:::-;;;;12982:175;12742:426;12782:3;;;;;:::i;:::-;;;;12742:426;;;;13178:56;;;;;;;;;;:::i;:::-;;;;;;;;12378:864;;;;;:::o;24445:33::-;;;;;;;;;;;;;:::o;24408:30::-;;;;;;;;;;;;;:::o;27674:109::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27732:10:::1;27724:28;;:51;27753:21;27724:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27674:109::o:0;17246:177::-;17376:39;17393:4;17399:2;17403:7;17376:39;;;;;;;;;;;;:16;:39::i;:::-;17246:177;;;:::o;12144:228::-;12247:7;12288:13;:11;:13::i;:::-;12280:5;:21;12272:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12359:5;12352:12;;12144:228;;;:::o;27560:106::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27651:7:::1;;27635:13;:23;;;;;;;:::i;:::-;;27560:106:::0;;:::o;14904:124::-;14968:7;14995:20;15007:7;14995:11;:20::i;:::-;:25;;;14988:32;;14904:124;;;:::o;24522:33::-;;;;:::o;13676:258::-;13740:7;13799:1;13782:19;;:5;:19;;;;13760:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13898:12;:19;13911:5;13898:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13890:36;;13883:43;;13676:258;;;:::o;7232:94::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7297:21:::1;7315:1;7297:9;:21::i;:::-;7232:94::o:0;7013:87::-;7059:7;7086:6;;;;;;;;;;;7079:13;;7013:87;:::o;27159:96::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27236:11:::1;27228:5;:19;;;;27159:96:::0;:::o;25075:167::-;25168:21;;:::i;:::-;25214:20;25226:7;25214:11;:20::i;:::-;25207:27;;25075:167;;;:::o;15140:104::-;15196:13;15229:7;15222:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15140:104;:::o;24600:33::-;;;;:::o;27353:93::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27428:10:::1;;;;;;;;;;;27427:11;27414:10;;:24;;;;;;;;;;;;;;;;;;27353:93::o:0;16541:311::-;16671:12;:10;:12::i;:::-;16659:24;;:8;:24;;;;16651:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16772:8;16727:18;:32;16746:12;:10;:12::i;:::-;16727:32;;;;;;;;;;;;;;;:42;16760:8;16727:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;16825:8;16796:48;;16811:12;:10;:12::i;:::-;16796:48;;;16835:8;16796:48;;;;;;:::i;:::-;;;;;;;;16541:311;;:::o;17429:355::-;17588:28;17598:4;17604:2;17608:7;17588:9;:28::i;:::-;17649:48;17672:4;17678:2;17682:7;17691:5;17649:22;:48::i;:::-;17627:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;17429:355;;;;:::o;25939:847::-;24881:10;24868:23;;:9;:23;;;24860:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26044:13:::1;;;;;;;;;;;:27;;;;26061:10;;;;;;;;;;;26044:27;26036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26158:13;;26146:8;26119:24;26132:10;26119:12;:24::i;:::-;:35;;;;:::i;:::-;:52;;26111:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26230:1;26219:8;:12;26211:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;26283:8;;26271;:20;;26263:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26364:8;;26352;26336:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;26328:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26431:13;;;;;;;;;;;26428:93;;;26468:13;26475:5;26468:6;:13::i;:::-;26460:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26428:93;26561:1;26534:24;26547:10;26534:12;:24::i;:::-;:28;26531:206;;;26607:8;26599:5;;:16;;;;:::i;:::-;26586:9;:29;;26578:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;26531:206;;;26704:5;;26692:8;26684:5;;:16;;;;:::i;:::-;26683:26;;;;:::i;:::-;26670:9;:39;;26662:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26531:206;26747:31;26757:10;26769:8;26747:9;:31::i;:::-;25939:847:::0;;:::o;25250:476::-;25368:13;25421:16;25429:7;25421;:16::i;:::-;25399:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25525:23;25551;25566:7;25551:14;:23::i;:::-;25525:49;;25631:1;25611:9;25605:23;:27;:113;;;;;;;;;;;;;;;;;25676:9;25659:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;25605:113;25585:133;;;25250:476;;;:::o;24562:31::-;;;;:::o;21050:43::-;;;;:::o;27263:82::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27332:5:::1;27325:4;:12;;;;27263:82:::0;:::o;24954:113::-;25012:7;25039:20;25053:5;25039:13;:20::i;:::-;25032:27;;24954:113;;;:::o;16858:214::-;17000:4;17029:18;:25;17048:5;17029:25;;;;;;;;;;;;;;;:35;17055:8;17029:35;;;;;;;;;;;;;;;;;;;;;;;;;17022:42;;16858:214;;;;:::o;7332:229::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7455:1:::1;7435:22;;:8;:22;;;;7413:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7534:19;7544:8;7534:9;:19::i;:::-;7332:229:::0;:::o;27454:98::-;7157:12;:10;:12::i;:::-;7146:23;;:7;:5;:7::i;:::-;:23;;;7138:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27531:13:::1;;;;;;;;;;;27530:14;27514:13;;:30;;;;;;;;;;;;;;;;;;27454:98::o:0;24487:28::-;;;;:::o;9545:207::-;9675:4;9719:25;9704:40;;;:11;:40;;;;9697:47;;9545:207;;;:::o;17790:111::-;17847:4;17881:12;;17871:7;:22;17864:29;;17790:111;;;:::o;6520:98::-;6573:7;6600:10;6593:17;;6520:98;:::o;20846:196::-;20988:2;20961:15;:24;20977:7;20961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21026:7;21022:2;21006:28;;21015:5;21006:28;;;;;;;;;;;;20846:196;;;:::o;17909:104::-;17978:27;17988:2;17992:8;17978:27;;;;;;;;;;;;:9;:27::i;:::-;17909:104;;:::o;19300:1540::-;19415:35;19453:20;19465:7;19453:11;:20::i;:::-;19415:58;;19486:22;19528:13;:18;;;19512:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;19587:12;:10;:12::i;:::-;19563:36;;:20;19575:7;19563:11;:20::i;:::-;:36;;;19512:87;:154;;;;19616:50;19633:13;:18;;;19653:12;:10;:12::i;:::-;19616:16;:50::i;:::-;19512:154;19486:181;;19702:17;19680:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19854:4;19832:26;;:13;:18;;;:26;;;19810:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;19957:1;19943:16;;:2;:16;;;;19935:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;20014:43;20036:4;20042:2;20046:7;20055:1;20014:21;:43::i;:::-;20068:49;20085:1;20089:7;20098:13;:18;;;20068:8;:49::i;:::-;20160:1;20130:12;:18;20143:4;20130:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20200:1;20172:12;:16;20185:2;20172:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20235:43;;;;;;;;20250:2;20235:43;;;;;;20261:15;20235:43;;;;;20212:11;:20;20224:7;20212:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20403:19;20435:1;20425:7;:11;;;;:::i;:::-;20403:33;;20492:1;20451:43;;:11;:24;20463:11;20451:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;20447:288;;;20515:20;20523:11;20515:7;:20::i;:::-;20511:213;;;20583:125;;;;;;;;20620:13;:18;;;20583:125;;;;;;20661:13;:28;;;20583:125;;;;;20556:11;:24;20568:11;20556:24;;;;;;;;;;;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20511:213;20447:288;20771:7;20767:2;20752:27;;20761:4;20752:27;;;;;;;;;;;;20790:42;20811:4;20817:2;20821:7;20830:1;20790:20;:42::i;:::-;19300:1540;;;;;;:::o;14216:682::-;14304:21;;:::i;:::-;14351:16;14359:7;14351;:16::i;:::-;14343:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14427:26;14479:12;14468:7;:23;14464:103;;14554:1;14539:12;14529:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14508:47;;14464:103;14584:12;14599:7;14584:22;;14579:242;14616:18;14608:4;:26;14579:242;;14659:31;14693:11;:17;14705:4;14693:17;;;;;;;;;;;14659:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14755:1;14729:28;;:9;:14;;;:28;;;14725:85;;14785:9;14778:16;;;;;;;14725:85;14579:242;14636:6;;;;;:::i;:::-;;;;14579:242;;;;14833:57;;;;;;;;;;:::i;:::-;;;;;;;;14216:682;;;;:::o;7569:173::-;7625:16;7644:6;;;;;;;;;;;7625:25;;7670:8;7661:6;;:17;;;;;;;;;;;;;;;;;;7725:8;7694:40;;7715:8;7694:40;;;;;;;;;;;;7569:173;;:::o;21951:985::-;22106:4;22127:15;:2;:13;;;:15::i;:::-;22123:806;;;22196:2;22180:36;;;22239:12;:10;:12::i;:::-;22274:4;22301:7;22331:5;22180:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22159:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22559:1;22542:6;:13;:18;22538:321;;;22585:109;;;;;;;;;;:::i;:::-;;;;;;;;22538:321;22809:6;22803:13;22794:6;22790:2;22786:15;22779:38;22159:715;22429:45;;;22419:55;;;:6;:55;;;;22412:62;;;;;22123:806;22913:4;22906:11;;21951:985;;;;;;;:::o;25734:197::-;25797:4;25814:12;25856:10;25839:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;25829:39;;;;;;25814:54;;25886:37;25905:5;25912:4;;25918;25886:18;:37::i;:::-;25879:44;;;25734:197;;;:::o;15250:468::-;15368:13;15421:16;15429:7;15421;:16::i;:::-;15399:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;15525:21;15549:10;:8;:10::i;:::-;15525:34;;15614:1;15596:7;15590:21;:25;:120;;;;;;;;;;;;;;;;;15659:7;15668:18;:7;:16;:18::i;:::-;15642:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15590:120;15570:140;;;15250:468;;;:::o;13942:266::-;14003:7;14062:1;14045:19;;:5;:19;;;;14023:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:12;:19;14180:5;14167:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;14159:41;;14152:48;;13942:266;;;:::o;18019:1275::-;18142:20;18165:12;;18142:35;;18210:1;18196:16;;:2;:16;;;;18188:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18270:21;18278:12;18270:7;:21::i;:::-;18269:22;18261:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18356:12;18344:8;:24;;18336:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18420:61;18450:1;18454:2;18458:12;18472:8;18420:21;:61::i;:::-;18494:30;18527:12;:16;18540:2;18527:16;;;;;;;;;;;;;;;18494:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18573:135;;;;;;;;18629:8;18599:11;:19;;;:39;;;;:::i;:::-;18573:135;;;;;;18688:8;18653:11;:24;;;:44;;;;:::i;:::-;18573:135;;;;;18554:12;:16;18567:2;18554:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18747:43;;;;;;;;18762:2;18747:43;;;;;;18773:15;18747:43;;;;;18719:11;:25;18731:12;18719:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18803:20;18826:12;18803:35;;18856:9;18851:325;18875:8;18871:1;:12;18851:325;;;18935:12;18931:2;18910:38;;18927:1;18910:38;;;;;;;;;;;;18989:59;19020:1;19024:2;19028:12;19042:5;18989:22;:59::i;:::-;18963:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;19150:14;;;;;:::i;:::-;;;;18885:3;;;;;:::i;:::-;;;;18851:325;;;;19203:12;19188;:27;;;;19226:60;19255:1;19259:2;19263:12;19277:8;19226:20;:60::i;:::-;18019:1275;;;;;;:::o;22942:159::-;;;;;:::o;23107:158::-;;;;;:::o;2526:117::-;2586:4;2634:1;2612:7;:19;;;:23;2605:30;;2526:117;;;:::o;23324:190::-;23449:4;23502;23473:25;23486:5;23493:4;23473:12;:25::i;:::-;:33;23466:40;;23324:190;;;;;:::o;27037:114::-;27097:13;27130;27123:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27037:114;:::o;7914:656::-;7970:13;8133:1;8124:5;:10;8120:53;;;8151:10;;;;;;;;;;;;;;;;;;;;;8120:53;8183:12;8198:5;8183:20;;8214:14;8239:78;8254:1;8246:4;:9;8239:78;;8272:8;;;;;:::i;:::-;;;;8303:2;8295:10;;;;;:::i;:::-;;;8239:78;;;8327:19;8359:6;8349:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8327:39;;8377:154;8393:1;8384:5;:10;8377:154;;8421:1;8411:11;;;;;:::i;:::-;;;8488:2;8480:5;:10;;;;:::i;:::-;8467:2;:24;;;;:::i;:::-;8454:39;;8437:6;8444;8437:14;;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;8517:2;8508:11;;;;;:::i;:::-;;;8377:154;;;8555:6;8541:21;;;;;7914:656;;;;:::o;23520:549::-;23630:7;23655:20;23678:4;23655:27;;23698:9;23693:339;23717:5;:12;23713:1;:16;23693:339;;;23751:20;23774:5;23780:1;23774:8;;;;;;;;;;;;;;;;;;;;;;23751:31;;23817:12;23801;:28;23797:224;;23865:42;23880:12;23894;23865:14;:42::i;:::-;23850:57;;23797:224;;;23963:42;23978:12;23992;23963:14;:42::i;:::-;23948:57;;23797:224;23693:339;23731:3;;;;;:::i;:::-;;;;23693:339;;;;24049:12;24042:19;;;23520:549;;;;:::o;24077:256::-;24172:13;24240:1;24234:4;24227:15;24269:1;24263:4;24256:15;24310:4;24304;24294:21;24285:30;;24212:114;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:343::-;762:5;787:65;803:48;844:6;803:48;:::i;:::-;787:65;:::i;:::-;778:74;;875:6;868:5;861:21;913:4;906:5;902:16;951:3;942:6;937:3;933:16;930:25;927:2;;;968:1;965;958:12;927:2;981:41;1015:6;1010:3;1005;981:41;:::i;:::-;768:260;;;;;;:::o;1034:139::-;1080:5;1118:6;1105:20;1096:29;;1134:33;1161:5;1134:33;:::i;:::-;1086:87;;;;:::o;1196:303::-;1267:5;1316:3;1309:4;1301:6;1297:17;1293:27;1283:2;;1334:1;1331;1324:12;1283:2;1374:6;1361:20;1399:94;1489:3;1481:6;1474:4;1466:6;1462:17;1399:94;:::i;:::-;1390:103;;1273:226;;;;;:::o;1505:133::-;1548:5;1586:6;1573:20;1564:29;;1602:30;1626:5;1602:30;:::i;:::-;1554:84;;;;:::o;1644:139::-;1690:5;1728:6;1715:20;1706:29;;1744:33;1771:5;1744:33;:::i;:::-;1696:87;;;;:::o;1789:137::-;1834:5;1872:6;1859:20;1850:29;;1888:32;1914:5;1888:32;:::i;:::-;1840:86;;;;:::o;1932:141::-;1988:5;2019:6;2013:13;2004:22;;2035:32;2061:5;2035:32;:::i;:::-;1994:79;;;;:::o;2092:271::-;2147:5;2196:3;2189:4;2181:6;2177:17;2173:27;2163:2;;2214:1;2211;2204:12;2163:2;2254:6;2241:20;2279:78;2353:3;2345:6;2338:4;2330:6;2326:17;2279:78;:::i;:::-;2270:87;;2153:210;;;;;:::o;2383:352::-;2441:8;2451:6;2501:3;2494:4;2486:6;2482:17;2478:27;2468:2;;2519:1;2516;2509:12;2468:2;2555:6;2542:20;2532:30;;2585:18;2577:6;2574:30;2571:2;;;2617:1;2614;2607:12;2571:2;2654:4;2646:6;2642:17;2630:29;;2708:3;2700:4;2692:6;2688:17;2678:8;2674:32;2671:41;2668:2;;;2725:1;2722;2715:12;2668:2;2458:277;;;;;:::o;2741:139::-;2787:5;2825:6;2812:20;2803:29;;2841:33;2868:5;2841:33;:::i;:::-;2793:87;;;;:::o;2886:262::-;2945:6;2994:2;2982:9;2973:7;2969:23;2965:32;2962:2;;;3010:1;3007;3000:12;2962:2;3053:1;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3024:117;2952:196;;;;:::o;3154:407::-;3222:6;3230;3279:2;3267:9;3258:7;3254:23;3250:32;3247:2;;;3295:1;3292;3285:12;3247:2;3338:1;3363:53;3408:7;3399:6;3388:9;3384:22;3363:53;:::i;:::-;3353:63;;3309:117;3465:2;3491:53;3536:7;3527:6;3516:9;3512:22;3491:53;:::i;:::-;3481:63;;3436:118;3237:324;;;;;:::o;3567:552::-;3644:6;3652;3660;3709:2;3697:9;3688:7;3684:23;3680:32;3677:2;;;3725:1;3722;3715:12;3677:2;3768:1;3793:53;3838:7;3829:6;3818:9;3814:22;3793:53;:::i;:::-;3783:63;;3739:117;3895:2;3921:53;3966:7;3957:6;3946:9;3942:22;3921:53;:::i;:::-;3911:63;;3866:118;4023:2;4049:53;4094:7;4085:6;4074:9;4070:22;4049:53;:::i;:::-;4039:63;;3994:118;3667:452;;;;;:::o;4125:809::-;4220:6;4228;4236;4244;4293:3;4281:9;4272:7;4268:23;4264:33;4261:2;;;4310:1;4307;4300:12;4261:2;4353:1;4378:53;4423:7;4414:6;4403:9;4399:22;4378:53;:::i;:::-;4368:63;;4324:117;4480:2;4506:53;4551:7;4542:6;4531:9;4527:22;4506:53;:::i;:::-;4496:63;;4451:118;4608:2;4634:53;4679:7;4670:6;4659:9;4655:22;4634:53;:::i;:::-;4624:63;;4579:118;4764:2;4753:9;4749:18;4736:32;4795:18;4787:6;4784:30;4781:2;;;4827:1;4824;4817:12;4781:2;4855:62;4909:7;4900:6;4889:9;4885:22;4855:62;:::i;:::-;4845:72;;4707:220;4251:683;;;;;;;:::o;4940:401::-;5005:6;5013;5062:2;5050:9;5041:7;5037:23;5033:32;5030:2;;;5078:1;5075;5068:12;5030:2;5121:1;5146:53;5191:7;5182:6;5171:9;5167:22;5146:53;:::i;:::-;5136:63;;5092:117;5248:2;5274:50;5316:7;5307:6;5296:9;5292:22;5274:50;:::i;:::-;5264:60;;5219:115;5020:321;;;;;:::o;5347:407::-;5415:6;5423;5472:2;5460:9;5451:7;5447:23;5443:32;5440:2;;;5488:1;5485;5478:12;5440:2;5531:1;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5502:117;5658:2;5684:53;5729:7;5720:6;5709:9;5705:22;5684:53;:::i;:::-;5674:63;;5629:118;5430:324;;;;;:::o;5760:262::-;5819:6;5868:2;5856:9;5847:7;5843:23;5839:32;5836:2;;;5884:1;5881;5874:12;5836:2;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5826:196;;;;:::o;6028:260::-;6086:6;6135:2;6123:9;6114:7;6110:23;6106:32;6103:2;;;6151:1;6148;6141:12;6103:2;6194:1;6219:52;6263:7;6254:6;6243:9;6239:22;6219:52;:::i;:::-;6209:62;;6165:116;6093:195;;;;:::o;6294:282::-;6363:6;6412:2;6400:9;6391:7;6387:23;6383:32;6380:2;;;6428:1;6425;6418:12;6380:2;6471:1;6496:63;6551:7;6542:6;6531:9;6527:22;6496:63;:::i;:::-;6486:73;;6442:127;6370:206;;;;:::o;6582:395::-;6653:6;6661;6710:2;6698:9;6689:7;6685:23;6681:32;6678:2;;;6726:1;6723;6716:12;6678:2;6797:1;6786:9;6782:17;6769:31;6827:18;6819:6;6816:30;6813:2;;;6859:1;6856;6849:12;6813:2;6895:65;6952:7;6943:6;6932:9;6928:22;6895:65;:::i;:::-;6877:83;;;;6740:230;6668:309;;;;;:::o;6983:262::-;7042:6;7091:2;7079:9;7070:7;7066:23;7062:32;7059:2;;;7107:1;7104;7097:12;7059:2;7150:1;7175:53;7220:7;7211:6;7200:9;7196:22;7175:53;:::i;:::-;7165:63;;7121:117;7049:196;;;;:::o;7251:550::-;7344:6;7352;7401:2;7389:9;7380:7;7376:23;7372:32;7369:2;;;7417:1;7414;7407:12;7369:2;7460:1;7485:53;7530:7;7521:6;7510:9;7506:22;7485:53;:::i;:::-;7475:63;;7431:117;7615:2;7604:9;7600:18;7587:32;7646:18;7638:6;7635:30;7632:2;;;7678:1;7675;7668:12;7632:2;7706:78;7776:7;7767:6;7756:9;7752:22;7706:78;:::i;:::-;7696:88;;7558:236;7359:442;;;;;:::o;7807:108::-;7884:24;7902:5;7884:24;:::i;:::-;7879:3;7872:37;7862:53;;:::o;7921:118::-;8008:24;8026:5;8008:24;:::i;:::-;8003:3;7996:37;7986:53;;:::o;8045:157::-;8150:45;8170:24;8188:5;8170:24;:::i;:::-;8150:45;:::i;:::-;8145:3;8138:58;8128:74;;:::o;8208:109::-;8289:21;8304:5;8289:21;:::i;:::-;8284:3;8277:34;8267:50;;:::o;8323:360::-;8409:3;8437:38;8469:5;8437:38;:::i;:::-;8491:70;8554:6;8549:3;8491:70;:::i;:::-;8484:77;;8570:52;8615:6;8610:3;8603:4;8596:5;8592:16;8570:52;:::i;:::-;8647:29;8669:6;8647:29;:::i;:::-;8642:3;8638:39;8631:46;;8413:270;;;;;:::o;8689:364::-;8777:3;8805:39;8838:5;8805:39;:::i;:::-;8860:71;8924:6;8919:3;8860:71;:::i;:::-;8853:78;;8940:52;8985:6;8980:3;8973:4;8966:5;8962:16;8940:52;:::i;:::-;9017:29;9039:6;9017:29;:::i;:::-;9012:3;9008:39;9001:46;;8781:272;;;;;:::o;9059:377::-;9165:3;9193:39;9226:5;9193:39;:::i;:::-;9248:89;9330:6;9325:3;9248:89;:::i;:::-;9241:96;;9346:52;9391:6;9386:3;9379:4;9372:5;9368:16;9346:52;:::i;:::-;9423:6;9418:3;9414:16;9407:23;;9169:267;;;;;:::o;9442:366::-;9584:3;9605:67;9669:2;9664:3;9605:67;:::i;:::-;9598:74;;9681:93;9770:3;9681:93;:::i;:::-;9799:2;9794:3;9790:12;9783:19;;9588:220;;;:::o;9814:366::-;9956:3;9977:67;10041:2;10036:3;9977:67;:::i;:::-;9970:74;;10053:93;10142:3;10053:93;:::i;:::-;10171:2;10166:3;10162:12;10155:19;;9960:220;;;:::o;10186:366::-;10328:3;10349:67;10413:2;10408:3;10349:67;:::i;:::-;10342:74;;10425:93;10514:3;10425:93;:::i;:::-;10543:2;10538:3;10534:12;10527:19;;10332:220;;;:::o;10558:366::-;10700:3;10721:67;10785:2;10780:3;10721:67;:::i;:::-;10714:74;;10797:93;10886:3;10797:93;:::i;:::-;10915:2;10910:3;10906:12;10899:19;;10704:220;;;:::o;10930:366::-;11072:3;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11169:93;11258:3;11169:93;:::i;:::-;11287:2;11282:3;11278:12;11271:19;;11076:220;;;:::o;11302:366::-;11444:3;11465:67;11529:2;11524:3;11465:67;:::i;:::-;11458:74;;11541:93;11630:3;11541:93;:::i;:::-;11659:2;11654:3;11650:12;11643:19;;11448:220;;;:::o;11674:366::-;11816:3;11837:67;11901:2;11896:3;11837:67;:::i;:::-;11830:74;;11913:93;12002:3;11913:93;:::i;:::-;12031:2;12026:3;12022:12;12015:19;;11820:220;;;:::o;12046:366::-;12188:3;12209:67;12273:2;12268:3;12209:67;:::i;:::-;12202:74;;12285:93;12374:3;12285:93;:::i;:::-;12403:2;12398:3;12394:12;12387:19;;12192:220;;;:::o;12418:366::-;12560:3;12581:67;12645:2;12640:3;12581:67;:::i;:::-;12574:74;;12657:93;12746:3;12657:93;:::i;:::-;12775:2;12770:3;12766:12;12759:19;;12564:220;;;:::o;12790:366::-;12932:3;12953:67;13017:2;13012:3;12953:67;:::i;:::-;12946:74;;13029:93;13118:3;13029:93;:::i;:::-;13147:2;13142:3;13138:12;13131:19;;12936:220;;;:::o;13162:366::-;13304:3;13325:67;13389:2;13384:3;13325:67;:::i;:::-;13318:74;;13401:93;13490:3;13401:93;:::i;:::-;13519:2;13514:3;13510:12;13503:19;;13308:220;;;:::o;13534:366::-;13676:3;13697:67;13761:2;13756:3;13697:67;:::i;:::-;13690:74;;13773:93;13862:3;13773:93;:::i;:::-;13891:2;13886:3;13882:12;13875:19;;13680:220;;;:::o;13906:366::-;14048:3;14069:67;14133:2;14128:3;14069:67;:::i;:::-;14062:74;;14145:93;14234:3;14145:93;:::i;:::-;14263:2;14258:3;14254:12;14247:19;;14052:220;;;:::o;14278:366::-;14420:3;14441:67;14505:2;14500:3;14441:67;:::i;:::-;14434:74;;14517:93;14606:3;14517:93;:::i;:::-;14635:2;14630:3;14626:12;14619:19;;14424:220;;;:::o;14650:400::-;14810:3;14831:84;14913:1;14908:3;14831:84;:::i;:::-;14824:91;;14924:93;15013:3;14924:93;:::i;:::-;15042:1;15037:3;15033:11;15026:18;;14814:236;;;:::o;15056:366::-;15198:3;15219:67;15283:2;15278:3;15219:67;:::i;:::-;15212:74;;15295:93;15384:3;15295:93;:::i;:::-;15413:2;15408:3;15404:12;15397:19;;15202:220;;;:::o;15428:366::-;15570:3;15591:67;15655:2;15650:3;15591:67;:::i;:::-;15584:74;;15667:93;15756:3;15667:93;:::i;:::-;15785:2;15780:3;15776:12;15769:19;;15574:220;;;:::o;15800:366::-;15942:3;15963:67;16027:2;16022:3;15963:67;:::i;:::-;15956:74;;16039:93;16128:3;16039:93;:::i;:::-;16157:2;16152:3;16148:12;16141:19;;15946:220;;;:::o;16172:366::-;16314:3;16335:67;16399:2;16394:3;16335:67;:::i;:::-;16328:74;;16411:93;16500:3;16411:93;:::i;:::-;16529:2;16524:3;16520:12;16513:19;;16318:220;;;:::o;16544:366::-;16686:3;16707:67;16771:2;16766:3;16707:67;:::i;:::-;16700:74;;16783:93;16872:3;16783:93;:::i;:::-;16901:2;16896:3;16892:12;16885:19;;16690:220;;;:::o;16916:366::-;17058:3;17079:67;17143:2;17138:3;17079:67;:::i;:::-;17072:74;;17155:93;17244:3;17155:93;:::i;:::-;17273:2;17268:3;17264:12;17257:19;;17062:220;;;:::o;17288:366::-;17430:3;17451:67;17515:2;17510:3;17451:67;:::i;:::-;17444:74;;17527:93;17616:3;17527:93;:::i;:::-;17645:2;17640:3;17636:12;17629:19;;17434:220;;;:::o;17660:366::-;17802:3;17823:67;17887:2;17882:3;17823:67;:::i;:::-;17816:74;;17899:93;17988:3;17899:93;:::i;:::-;18017:2;18012:3;18008:12;18001:19;;17806:220;;;:::o;18032:366::-;18174:3;18195:67;18259:2;18254:3;18195:67;:::i;:::-;18188:74;;18271:93;18360:3;18271:93;:::i;:::-;18389:2;18384:3;18380:12;18373:19;;18178:220;;;:::o;18404:366::-;18546:3;18567:67;18631:2;18626:3;18567:67;:::i;:::-;18560:74;;18643:93;18732:3;18643:93;:::i;:::-;18761:2;18756:3;18752:12;18745:19;;18550:220;;;:::o;18776:366::-;18918:3;18939:67;19003:2;18998:3;18939:67;:::i;:::-;18932:74;;19015:93;19104:3;19015:93;:::i;:::-;19133:2;19128:3;19124:12;19117:19;;18922:220;;;:::o;19148:366::-;19290:3;19311:67;19375:2;19370:3;19311:67;:::i;:::-;19304:74;;19387:93;19476:3;19387:93;:::i;:::-;19505:2;19500:3;19496:12;19489:19;;19294:220;;;:::o;19520:366::-;19662:3;19683:67;19747:2;19742:3;19683:67;:::i;:::-;19676:74;;19759:93;19848:3;19759:93;:::i;:::-;19877:2;19872:3;19868:12;19861:19;;19666:220;;;:::o;19892:366::-;20034:3;20055:67;20119:2;20114:3;20055:67;:::i;:::-;20048:74;;20131:93;20220:3;20131:93;:::i;:::-;20249:2;20244:3;20240:12;20233:19;;20038:220;;;:::o;20264:366::-;20406:3;20427:67;20491:2;20486:3;20427:67;:::i;:::-;20420:74;;20503:93;20592:3;20503:93;:::i;:::-;20621:2;20616:3;20612:12;20605:19;;20410:220;;;:::o;20636:366::-;20778:3;20799:67;20863:2;20858:3;20799:67;:::i;:::-;20792:74;;20875:93;20964:3;20875:93;:::i;:::-;20993:2;20988:3;20984:12;20977:19;;20782:220;;;:::o;21078:527::-;21237:4;21232:3;21228:14;21324:4;21317:5;21313:16;21307:23;21343:63;21400:4;21395:3;21391:14;21377:12;21343:63;:::i;:::-;21252:164;21508:4;21501:5;21497:16;21491:23;21527:61;21582:4;21577:3;21573:14;21559:12;21527:61;:::i;:::-;21426:172;21206:399;;;:::o;21611:118::-;21698:24;21716:5;21698:24;:::i;:::-;21693:3;21686:37;21676:53;;:::o;21735:105::-;21810:23;21827:5;21810:23;:::i;:::-;21805:3;21798:36;21788:52;;:::o;21846:256::-;21958:3;21973:75;22044:3;22035:6;21973:75;:::i;:::-;22073:2;22068:3;22064:12;22057:19;;22093:3;22086:10;;21962:140;;;;:::o;22108:435::-;22288:3;22310:95;22401:3;22392:6;22310:95;:::i;:::-;22303:102;;22422:95;22513:3;22504:6;22422:95;:::i;:::-;22415:102;;22534:3;22527:10;;22292:251;;;;;:::o;22549:541::-;22782:3;22804:95;22895:3;22886:6;22804:95;:::i;:::-;22797:102;;22916:148;23060:3;22916:148;:::i;:::-;22909:155;;23081:3;23074:10;;22786:304;;;;:::o;23096:222::-;23189:4;23227:2;23216:9;23212:18;23204:26;;23240:71;23308:1;23297:9;23293:17;23284:6;23240:71;:::i;:::-;23194:124;;;;:::o;23324:640::-;23519:4;23557:3;23546:9;23542:19;23534:27;;23571:71;23639:1;23628:9;23624:17;23615:6;23571:71;:::i;:::-;23652:72;23720:2;23709:9;23705:18;23696:6;23652:72;:::i;:::-;23734;23802:2;23791:9;23787:18;23778:6;23734:72;:::i;:::-;23853:9;23847:4;23843:20;23838:2;23827:9;23823:18;23816:48;23881:76;23952:4;23943:6;23881:76;:::i;:::-;23873:84;;23524:440;;;;;;;:::o;23970:210::-;24057:4;24095:2;24084:9;24080:18;24072:26;;24108:65;24170:1;24159:9;24155:17;24146:6;24108:65;:::i;:::-;24062:118;;;;:::o;24186:313::-;24299:4;24337:2;24326:9;24322:18;24314:26;;24386:9;24380:4;24376:20;24372:1;24361:9;24357:17;24350:47;24414:78;24487:4;24478:6;24414:78;:::i;:::-;24406:86;;24304:195;;;;:::o;24505:419::-;24671:4;24709:2;24698:9;24694:18;24686:26;;24758:9;24752:4;24748:20;24744:1;24733:9;24729:17;24722:47;24786:131;24912:4;24786:131;:::i;:::-;24778:139;;24676:248;;;:::o;24930:419::-;25096:4;25134:2;25123:9;25119:18;25111:26;;25183:9;25177:4;25173:20;25169:1;25158:9;25154:17;25147:47;25211:131;25337:4;25211:131;:::i;:::-;25203:139;;25101:248;;;:::o;25355:419::-;25521:4;25559:2;25548:9;25544:18;25536:26;;25608:9;25602:4;25598:20;25594:1;25583:9;25579:17;25572:47;25636:131;25762:4;25636:131;:::i;:::-;25628:139;;25526:248;;;:::o;25780:419::-;25946:4;25984:2;25973:9;25969:18;25961:26;;26033:9;26027:4;26023:20;26019:1;26008:9;26004:17;25997:47;26061:131;26187:4;26061:131;:::i;:::-;26053:139;;25951:248;;;:::o;26205:419::-;26371:4;26409:2;26398:9;26394:18;26386:26;;26458:9;26452:4;26448:20;26444:1;26433:9;26429:17;26422:47;26486:131;26612:4;26486:131;:::i;:::-;26478:139;;26376:248;;;:::o;26630:419::-;26796:4;26834:2;26823:9;26819:18;26811:26;;26883:9;26877:4;26873:20;26869:1;26858:9;26854:17;26847:47;26911:131;27037:4;26911:131;:::i;:::-;26903:139;;26801:248;;;:::o;27055:419::-;27221:4;27259:2;27248:9;27244:18;27236:26;;27308:9;27302:4;27298:20;27294:1;27283:9;27279:17;27272:47;27336:131;27462:4;27336:131;:::i;:::-;27328:139;;27226:248;;;:::o;27480:419::-;27646:4;27684:2;27673:9;27669:18;27661:26;;27733:9;27727:4;27723:20;27719:1;27708:9;27704:17;27697:47;27761:131;27887:4;27761:131;:::i;:::-;27753:139;;27651:248;;;:::o;27905:419::-;28071:4;28109:2;28098:9;28094:18;28086:26;;28158:9;28152:4;28148:20;28144:1;28133:9;28129:17;28122:47;28186:131;28312:4;28186:131;:::i;:::-;28178:139;;28076:248;;;:::o;28330:419::-;28496:4;28534:2;28523:9;28519:18;28511:26;;28583:9;28577:4;28573:20;28569:1;28558:9;28554:17;28547:47;28611:131;28737:4;28611:131;:::i;:::-;28603:139;;28501:248;;;:::o;28755:419::-;28921:4;28959:2;28948:9;28944:18;28936:26;;29008:9;29002:4;28998:20;28994:1;28983:9;28979:17;28972:47;29036:131;29162:4;29036:131;:::i;:::-;29028:139;;28926:248;;;:::o;29180:419::-;29346:4;29384:2;29373:9;29369:18;29361:26;;29433:9;29427:4;29423:20;29419:1;29408:9;29404:17;29397:47;29461:131;29587:4;29461:131;:::i;:::-;29453:139;;29351:248;;;:::o;29605:419::-;29771:4;29809:2;29798:9;29794:18;29786:26;;29858:9;29852:4;29848:20;29844:1;29833:9;29829:17;29822:47;29886:131;30012:4;29886:131;:::i;:::-;29878:139;;29776:248;;;:::o;30030:419::-;30196:4;30234:2;30223:9;30219:18;30211:26;;30283:9;30277:4;30273:20;30269:1;30258:9;30254:17;30247:47;30311:131;30437:4;30311:131;:::i;:::-;30303:139;;30201:248;;;:::o;30455:419::-;30621:4;30659:2;30648:9;30644:18;30636:26;;30708:9;30702:4;30698:20;30694:1;30683:9;30679:17;30672:47;30736:131;30862:4;30736:131;:::i;:::-;30728:139;;30626:248;;;:::o;30880:419::-;31046:4;31084:2;31073:9;31069:18;31061:26;;31133:9;31127:4;31123:20;31119:1;31108:9;31104:17;31097:47;31161:131;31287:4;31161:131;:::i;:::-;31153:139;;31051:248;;;:::o;31305:419::-;31471:4;31509:2;31498:9;31494:18;31486:26;;31558:9;31552:4;31548:20;31544:1;31533:9;31529:17;31522:47;31586:131;31712:4;31586:131;:::i;:::-;31578:139;;31476:248;;;:::o;31730:419::-;31896:4;31934:2;31923:9;31919:18;31911:26;;31983:9;31977:4;31973:20;31969:1;31958:9;31954:17;31947:47;32011:131;32137:4;32011:131;:::i;:::-;32003:139;;31901:248;;;:::o;32155:419::-;32321:4;32359:2;32348:9;32344:18;32336:26;;32408:9;32402:4;32398:20;32394:1;32383:9;32379:17;32372:47;32436:131;32562:4;32436:131;:::i;:::-;32428:139;;32326:248;;;:::o;32580:419::-;32746:4;32784:2;32773:9;32769:18;32761:26;;32833:9;32827:4;32823:20;32819:1;32808:9;32804:17;32797:47;32861:131;32987:4;32861:131;:::i;:::-;32853:139;;32751:248;;;:::o;33005:419::-;33171:4;33209:2;33198:9;33194:18;33186:26;;33258:9;33252:4;33248:20;33244:1;33233:9;33229:17;33222:47;33286:131;33412:4;33286:131;:::i;:::-;33278:139;;33176:248;;;:::o;33430:419::-;33596:4;33634:2;33623:9;33619:18;33611:26;;33683:9;33677:4;33673:20;33669:1;33658:9;33654:17;33647:47;33711:131;33837:4;33711:131;:::i;:::-;33703:139;;33601:248;;;:::o;33855:419::-;34021:4;34059:2;34048:9;34044:18;34036:26;;34108:9;34102:4;34098:20;34094:1;34083:9;34079:17;34072:47;34136:131;34262:4;34136:131;:::i;:::-;34128:139;;34026:248;;;:::o;34280:419::-;34446:4;34484:2;34473:9;34469:18;34461:26;;34533:9;34527:4;34523:20;34519:1;34508:9;34504:17;34497:47;34561:131;34687:4;34561:131;:::i;:::-;34553:139;;34451:248;;;:::o;34705:419::-;34871:4;34909:2;34898:9;34894:18;34886:26;;34958:9;34952:4;34948:20;34944:1;34933:9;34929:17;34922:47;34986:131;35112:4;34986:131;:::i;:::-;34978:139;;34876:248;;;:::o;35130:419::-;35296:4;35334:2;35323:9;35319:18;35311:26;;35383:9;35377:4;35373:20;35369:1;35358:9;35354:17;35347:47;35411:131;35537:4;35411:131;:::i;:::-;35403:139;;35301:248;;;:::o;35555:419::-;35721:4;35759:2;35748:9;35744:18;35736:26;;35808:9;35802:4;35798:20;35794:1;35783:9;35779:17;35772:47;35836:131;35962:4;35836:131;:::i;:::-;35828:139;;35726:248;;;:::o;35980:419::-;36146:4;36184:2;36173:9;36169:18;36161:26;;36233:9;36227:4;36223:20;36219:1;36208:9;36204:17;36197:47;36261:131;36387:4;36261:131;:::i;:::-;36253:139;;36151:248;;;:::o;36405:419::-;36571:4;36609:2;36598:9;36594:18;36586:26;;36658:9;36652:4;36648:20;36644:1;36633:9;36629:17;36622:47;36686:131;36812:4;36686:131;:::i;:::-;36678:139;;36576:248;;;:::o;36830:419::-;36996:4;37034:2;37023:9;37019:18;37011:26;;37083:9;37077:4;37073:20;37069:1;37058:9;37054:17;37047:47;37111:131;37237:4;37111:131;:::i;:::-;37103:139;;37001:248;;;:::o;37255:346::-;37410:4;37448:2;37437:9;37433:18;37425:26;;37461:133;37591:1;37580:9;37576:17;37567:6;37461:133;:::i;:::-;37415:186;;;;:::o;37607:222::-;37700:4;37738:2;37727:9;37723:18;37715:26;;37751:71;37819:1;37808:9;37804:17;37795:6;37751:71;:::i;:::-;37705:124;;;;:::o;37835:129::-;37869:6;37896:20;;:::i;:::-;37886:30;;37925:33;37953:4;37945:6;37925:33;:::i;:::-;37876:88;;;:::o;37970:75::-;38003:6;38036:2;38030:9;38020:19;;38010:35;:::o;38051:311::-;38128:4;38218:18;38210:6;38207:30;38204:2;;;38240:18;;:::i;:::-;38204:2;38290:4;38282:6;38278:17;38270:25;;38350:4;38344;38340:15;38332:23;;38133:229;;;:::o;38368:307::-;38429:4;38519:18;38511:6;38508:30;38505:2;;;38541:18;;:::i;:::-;38505:2;38579:29;38601:6;38579:29;:::i;:::-;38571:37;;38663:4;38657;38653:15;38645:23;;38434:241;;;:::o;38681:98::-;38732:6;38766:5;38760:12;38750:22;;38739:40;;;:::o;38785:99::-;38837:6;38871:5;38865:12;38855:22;;38844:40;;;:::o;38890:168::-;38973:11;39007:6;39002:3;38995:19;39047:4;39042:3;39038:14;39023:29;;38985:73;;;;:::o;39064:169::-;39148:11;39182:6;39177:3;39170:19;39222:4;39217:3;39213:14;39198:29;;39160:73;;;;:::o;39239:148::-;39341:11;39378:3;39363:18;;39353:34;;;;:::o;39393:273::-;39433:3;39452:20;39470:1;39452:20;:::i;:::-;39447:25;;39486:20;39504:1;39486:20;:::i;:::-;39481:25;;39608:1;39572:34;39568:42;39565:1;39562:49;39559:2;;;39614:18;;:::i;:::-;39559:2;39658:1;39655;39651:9;39644:16;;39437:229;;;;:::o;39672:305::-;39712:3;39731:20;39749:1;39731:20;:::i;:::-;39726:25;;39765:20;39783:1;39765:20;:::i;:::-;39760:25;;39919:1;39851:66;39847:74;39844:1;39841:81;39838:2;;;39925:18;;:::i;:::-;39838:2;39969:1;39966;39962:9;39955:16;;39716:261;;;;:::o;39983:185::-;40023:1;40040:20;40058:1;40040:20;:::i;:::-;40035:25;;40074:20;40092:1;40074:20;:::i;:::-;40069:25;;40113:1;40103:2;;40118:18;;:::i;:::-;40103:2;40160:1;40157;40153:9;40148:14;;40025:143;;;;:::o;40174:348::-;40214:7;40237:20;40255:1;40237:20;:::i;:::-;40232:25;;40271:20;40289:1;40271:20;:::i;:::-;40266:25;;40459:1;40391:66;40387:74;40384:1;40381:81;40376:1;40369:9;40362:17;40358:105;40355:2;;;40466:18;;:::i;:::-;40355:2;40514:1;40511;40507:9;40496:20;;40222:300;;;;:::o;40528:191::-;40568:4;40588:20;40606:1;40588:20;:::i;:::-;40583:25;;40622:20;40640:1;40622:20;:::i;:::-;40617:25;;40661:1;40658;40655:8;40652:2;;;40666:18;;:::i;:::-;40652:2;40711:1;40708;40704:9;40696:17;;40573:146;;;;:::o;40725:191::-;40765:4;40785:20;40803:1;40785:20;:::i;:::-;40780:25;;40819:20;40837:1;40819:20;:::i;:::-;40814:25;;40858:1;40855;40852:8;40849:2;;;40863:18;;:::i;:::-;40849:2;40908:1;40905;40901:9;40893:17;;40770:146;;;;:::o;40922:96::-;40959:7;40988:24;41006:5;40988:24;:::i;:::-;40977:35;;40967:51;;;:::o;41024:90::-;41058:7;41101:5;41094:13;41087:21;41076:32;;41066:48;;;:::o;41120:77::-;41157:7;41186:5;41175:16;;41165:32;;;:::o;41203:149::-;41239:7;41279:66;41272:5;41268:78;41257:89;;41247:105;;;:::o;41358:118::-;41395:7;41435:34;41428:5;41424:46;41413:57;;41403:73;;;:::o;41482:126::-;41519:7;41559:42;41552:5;41548:54;41537:65;;41527:81;;;:::o;41614:77::-;41651:7;41680:5;41669:16;;41659:32;;;:::o;41697:101::-;41733:7;41773:18;41766:5;41762:30;41751:41;;41741:57;;;:::o;41804:154::-;41888:6;41883:3;41878;41865:30;41950:1;41941:6;41936:3;41932:16;41925:27;41855:103;;;:::o;41964:307::-;42032:1;42042:113;42056:6;42053:1;42050:13;42042:113;;;42141:1;42136:3;42132:11;42126:18;42122:1;42117:3;42113:11;42106:39;42078:2;42075:1;42071:10;42066:15;;42042:113;;;42173:6;42170:1;42167:13;42164:2;;;42253:1;42244:6;42239:3;42235:16;42228:27;42164:2;42013:258;;;;:::o;42277:171::-;42316:3;42339:24;42357:5;42339:24;:::i;:::-;42330:33;;42385:4;42378:5;42375:15;42372:2;;;42393:18;;:::i;:::-;42372:2;42440:1;42433:5;42429:13;42422:20;;42320:128;;;:::o;42454:320::-;42498:6;42535:1;42529:4;42525:12;42515:22;;42582:1;42576:4;42572:12;42603:18;42593:2;;42659:4;42651:6;42647:17;42637:27;;42593:2;42721;42713:6;42710:14;42690:18;42687:38;42684:2;;;42740:18;;:::i;:::-;42684:2;42505:269;;;;:::o;42780:281::-;42863:27;42885:4;42863:27;:::i;:::-;42855:6;42851:40;42993:6;42981:10;42978:22;42957:18;42945:10;42942:34;42939:62;42936:2;;;43004:18;;:::i;:::-;42936:2;43044:10;43040:2;43033:22;42823:238;;;:::o;43067:233::-;43106:3;43129:24;43147:5;43129:24;:::i;:::-;43120:33;;43175:66;43168:5;43165:77;43162:2;;;43245:18;;:::i;:::-;43162:2;43292:1;43285:5;43281:13;43274:20;;43110:190;;;:::o;43306:100::-;43345:7;43374:26;43394:5;43374:26;:::i;:::-;43363:37;;43353:53;;;:::o;43412:94::-;43451:7;43480:20;43494:5;43480:20;:::i;:::-;43469:31;;43459:47;;;:::o;43512:176::-;43544:1;43561:20;43579:1;43561:20;:::i;:::-;43556:25;;43595:20;43613:1;43595:20;:::i;:::-;43590:25;;43634:1;43624:2;;43639:18;;:::i;:::-;43624:2;43680:1;43677;43673:9;43668:14;;43546:142;;;;:::o;43694:180::-;43742:77;43739:1;43732:88;43839:4;43836:1;43829:15;43863:4;43860:1;43853:15;43880:180;43928:77;43925:1;43918:88;44025:4;44022:1;44015:15;44049:4;44046:1;44039:15;44066:180;44114:77;44111:1;44104:88;44211:4;44208:1;44201:15;44235:4;44232:1;44225:15;44252:180;44300:77;44297:1;44290:88;44397:4;44394:1;44387:15;44421:4;44418:1;44411:15;44438:102;44479:6;44530:2;44526:7;44521:2;44514:5;44510:14;44506:28;44496:38;;44486:54;;;:::o;44546:94::-;44579:8;44627:5;44623:2;44619:14;44598:35;;44588:52;;;:::o;44646:221::-;44786:34;44782:1;44774:6;44770:14;44763:58;44855:4;44850:2;44842:6;44838:15;44831:29;44752:115;:::o;44873:171::-;45013:23;45009:1;45001:6;44997:14;44990:47;44979:65;:::o;45050:225::-;45190:34;45186:1;45178:6;45174:14;45167:58;45259:8;45254:2;45246:6;45242:15;45235:33;45156:119;:::o;45281:161::-;45421:13;45417:1;45409:6;45405:14;45398:37;45387:55;:::o;45448:229::-;45588:34;45584:1;45576:6;45572:14;45565:58;45657:12;45652:2;45644:6;45640:15;45633:37;45554:123;:::o;45683:173::-;45823:25;45819:1;45811:6;45807:14;45800:49;45789:67;:::o;45862:222::-;46002:34;45998:1;45990:6;45986:14;45979:58;46071:5;46066:2;46058:6;46054:15;46047:30;45968:116;:::o;46090:224::-;46230:34;46226:1;46218:6;46214:14;46207:58;46299:7;46294:2;46286:6;46282:15;46275:32;46196:118;:::o;46320:236::-;46460:34;46456:1;46448:6;46444:14;46437:58;46529:19;46524:2;46516:6;46512:15;46505:44;46426:130;:::o;46562:180::-;46702:32;46698:1;46690:6;46686:14;46679:56;46668:74;:::o;46748:174::-;46888:26;46884:1;46876:6;46872:14;46865:50;46854:68;:::o;46928:244::-;47068:34;47064:1;47056:6;47052:14;47045:58;47137:27;47132:2;47124:6;47120:15;47113:52;47034:138;:::o;47178:230::-;47318:34;47314:1;47306:6;47302:14;47295:58;47387:13;47382:2;47374:6;47370:15;47363:38;47284:124;:::o;47414:225::-;47554:34;47550:1;47542:6;47538:14;47531:58;47623:8;47618:2;47610:6;47606:15;47599:33;47520:119;:::o;47645:155::-;47785:7;47781:1;47773:6;47769:14;47762:31;47751:49;:::o;47806:182::-;47946:34;47942:1;47934:6;47930:14;47923:58;47912:76;:::o;47994:234::-;48134:34;48130:1;48122:6;48118:14;48111:58;48203:17;48198:2;48190:6;48186:15;48179:42;48100:128;:::o;48234:176::-;48374:28;48370:1;48362:6;48358:14;48351:52;48340:70;:::o;48416:237::-;48556:34;48552:1;48544:6;48540:14;48533:58;48625:20;48620:2;48612:6;48608:15;48601:45;48522:131;:::o;48659:227::-;48799:34;48795:1;48787:6;48783:14;48776:58;48868:10;48863:2;48855:6;48851:15;48844:35;48765:121;:::o;48892:221::-;49032:34;49028:1;49020:6;49016:14;49009:58;49101:4;49096:2;49088:6;49084:15;49077:29;48998:115;:::o;49119:174::-;49259:26;49255:1;49247:6;49243:14;49236:50;49225:68;:::o;49299:238::-;49439:34;49435:1;49427:6;49423:14;49416:58;49508:21;49503:2;49495:6;49491:15;49484:46;49405:132;:::o;49543:179::-;49683:31;49679:1;49671:6;49667:14;49660:55;49649:73;:::o;49728:220::-;49868:34;49864:1;49856:6;49852:14;49845:58;49937:3;49932:2;49924:6;49920:15;49913:28;49834:114;:::o;49954:231::-;50094:34;50090:1;50082:6;50078:14;50071:58;50163:14;50158:2;50150:6;50146:15;50139:39;50060:125;:::o;50191:166::-;50331:18;50327:1;50319:6;50315:14;50308:42;50297:60;:::o;50363:233::-;50503:34;50499:1;50491:6;50487:14;50480:58;50572:16;50567:2;50559:6;50555:15;50548:41;50469:127;:::o;50602:234::-;50742:34;50738:1;50730:6;50726:14;50719:58;50811:17;50806:2;50798:6;50794:15;50787:42;50708:128;:::o;50842:232::-;50982:34;50978:1;50970:6;50966:14;50959:58;51051:15;51046:2;51038:6;51034:15;51027:40;50948:126;:::o;51080:221::-;51220:34;51216:1;51208:6;51204:14;51197:58;51289:4;51284:2;51276:6;51272:15;51265:29;51186:115;:::o;51307:122::-;51380:24;51398:5;51380:24;:::i;:::-;51373:5;51370:35;51360:2;;51419:1;51416;51409:12;51360:2;51350:79;:::o;51435:116::-;51505:21;51520:5;51505:21;:::i;:::-;51498:5;51495:32;51485:2;;51541:1;51538;51531:12;51485:2;51475:76;:::o;51557:122::-;51630:24;51648:5;51630:24;:::i;:::-;51623:5;51620:35;51610:2;;51669:1;51666;51659:12;51610:2;51600:79;:::o;51685:120::-;51757:23;51774:5;51757:23;:::i;:::-;51750:5;51747:34;51737:2;;51795:1;51792;51785:12;51737:2;51727:78;:::o;51811:122::-;51884:24;51902:5;51884:24;:::i;:::-;51877:5;51874:35;51864:2;;51923:1;51920;51913:12;51864:2;51854:79;:::o

Swarm Source

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