ETH Price: $3,174.18 (-2.78%)

Token

Golden Token: New York (GTNY)
 

Overview

Max Total Supply

0 GTNY

Holders

34

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
793 GTNY
0xcff43A597911a9457071d89d2b2AC3D5b1862b86
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AllocatedEditions

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-17
*/

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface IERC721 {
    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;
}

interface IERC721Metadata {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}


// File contracts/interface/ITreasuryConfig.sol


interface ITreasuryConfig {
    function treasury() external returns (address payable);

    function distributionModel() external returns (address);
}


// File contracts/interface/IMirrorTreasury.sol


interface IMirrorTreasury {
    function transferFunds(address payable to, uint256 value) external;

    function transferERC20(
        address token,
        address to,
        uint256 value
    ) external;

    function contributeWithTributary(address tributary) external payable;

    function contribute(uint256 amount) external payable;
}


// File contracts/lib/Ownable.sol


contract Ownable {
    address public owner;
    address private nextOwner;

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

    // modifiers

    modifier onlyOwner() {
        require(isOwner(), "caller is not the owner.");
        _;
    }

    modifier onlyNextOwner() {
        require(isNextOwner(), "current owner must set caller as next owner.");
        _;
    }

    /**
     * @dev Initialize contract by setting transaction submitter as initial owner.
     */
    constructor(address owner_) {
        owner = owner_;
        emit OwnershipTransferred(address(0), owner);
    }

    /**
     * @dev Initiate ownership transfer by setting nextOwner.
     */
    function transferOwnership(address nextOwner_) external onlyOwner {
        require(nextOwner_ != address(0), "Next owner is the zero address.");

        nextOwner = nextOwner_;
    }

    /**
     * @dev Cancel ownership transfer by deleting nextOwner.
     */
    function cancelOwnershipTransfer() external onlyOwner {
        delete nextOwner;
    }

    /**
     * @dev Accepts ownership transfer by setting owner.
     */
    function acceptOwnership() external onlyNextOwner {
        delete nextOwner;

        owner = msg.sender;

        emit OwnershipTransferred(owner, msg.sender);
    }

    /**
     * @dev Renounce ownership by setting owner to zero address.
     */
    function renounceOwnership() external onlyOwner {
        owner = address(0);

        emit OwnershipTransferred(owner, address(0));
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == owner;
    }

    /**
     * @dev Returns true if the caller is the next owner.
     */
    function isNextOwner() public view returns (bool) {
        return msg.sender == nextOwner;
    }
}


// File contracts/lib/interface/IGovernable.sol


interface IGovernable {
    function changeGovernor(address governor_) external;

    function isGovernor() external view returns (bool);

    function governor() external view returns (address);
}


// File contracts/lib/Governable.sol



contract Governable is Ownable, IGovernable {
    // ============ Mutable Storage ============

    // Mirror governance contract.
    address public override governor;

    // ============ Modifiers ============

    modifier onlyGovernance() {
        require(isOwner() || isGovernor(), "caller is not governance");
        _;
    }

    modifier onlyGovernor() {
        require(isGovernor(), "caller is not governor");
        _;
    }

    // ============ Constructor ============

    constructor(address owner_) Ownable(owner_) {}

    // ============ Administration ============

    function changeGovernor(address governor_) public override onlyGovernance {
        governor = governor_;
    }

    // ============ Utility Functions ============

    function isGovernor() public view override returns (bool) {
        return msg.sender == governor;
    }
}


// File contracts/lib/Reentrancy.sol


contract Reentrancy {
    // ============ Constants ============

    uint256 internal constant REENTRANCY_NOT_ENTERED = 1;
    uint256 internal constant REENTRANCY_ENTERED = 2;

    // ============ Mutable Storage ============

    uint256 internal reentrancyStatus;

    // ============ Modifiers ============

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(reentrancyStatus != REENTRANCY_ENTERED, "Reentrant call");
        // Any calls to nonReentrant after this point will fail
        reentrancyStatus = REENTRANCY_ENTERED;
        _;
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip2200)
        reentrancyStatus = REENTRANCY_NOT_ENTERED;
    }
}


// File contracts/producers/editions/allocated/AllocatedEditions.sol






/**
 * @title AllocatedEditions
 * @author MirrorXYZ
 */
contract AllocatedEditions is IERC721, IERC165, IERC721Metadata, Governable, Reentrancy {
    // ============ Constants ============

    // Upon `withdrawFunds`, 2.5% of the contract's balance will
    // be sent to the Mirror DAO treasury. The tributary will
    // be allocated voting power in DAO governance once registered.
    uint256 internal constant feePercentage = 250;

    // ============ Structs ============

    // Contains general data about the NFT.
    struct NFTMetadata {
        string name;
        string symbol;
        string baseURI;
        bytes32 contentHash;
    }

    // Contains information pertaining to the edition spec.
    struct EditionData {
        // The number of tokens pre-allocated to the minter.
        uint256 allocation;
        // The maximum number of tokens that can be sold.
        uint256 quantity;
        // The price at which each token will be sold, in ETH.
        uint256 price;
    }

    // ============ Storage for Setup ============

    // From `NFTMetadata`
    string public override name;
    string public override symbol;
    string public baseURI;
    bytes32 immutable contentHash;

    // From `EditionData`
    uint256 public immutable allocation;
    uint256 public immutable quantity;
    uint256 public immutable price;

    // Treasury Config, provided at setup, for finding the treasury address.
    address immutable treasuryConfig;
    // Operator of this contract, receives premint.
    address public immutable operator;
    // Address that receive gov tokens via treasury.
    address public immutable tributary;
    // The account that will receive sales revenue.
    address payable immutable fundingRecipient;

    // ============ Mutable Runtime Storage ============

    // `nextTokenId` increments with each token purchased, globally across all editions.
    uint256 private nextTokenId;
    // The number of tokens that have moved outside of the pre-mint allocation.
    uint256 private allocationsTransferred = 0;
    // A special mapping of burned tokens, to take care of burning within
    // the tokenId range of the allocation.
    mapping(uint256 => bool) internal _burned;

    // ============ Events ============

    event EditionPurchased(
        uint256 indexed tokenId,
        uint256 amountPaid,
        address buyer,
        address receiver
    );

    event EditionCreatorChanged(
        address indexed previousCreator,
        address indexed newCreator
    );

    // ============ Constructor ============

    constructor(
        NFTMetadata memory metadata,
        EditionData memory editionData,
        address owner_,
        address treasuryConfig_,
        address operator_,
        address tributary_,
        address payable fundingRecipient_
        
    ) Governable(owner_) {
        // NFT Metadata
        name = metadata.name;
        symbol = metadata.symbol;
        baseURI = metadata.baseURI;
        contentHash = metadata.contentHash;

        // Edition Data.
        allocation = editionData.allocation;
        nextTokenId = editionData.allocation;
        quantity = editionData.quantity;
        price = editionData.price;

        // Administration config.
        treasuryConfig = treasuryConfig_;
        tributary = tributary_;
        operator = operator_;
        fundingRecipient = fundingRecipient_;
    }

    // ============ Edition Methods ============

    function purchase(address recipient)
        external
        payable
        returns (uint256 tokenId)
    {
        // Check that enough funds have been sent to purchase an edition.
        require(msg.value >= price, "Insufficient funds sent");
        // Track and update token id.
        tokenId = nextTokenId;
        nextTokenId++;
        // Check that there are still tokens available to purchase.
        require(tokenId < quantity, "This edition is sold out");
        // Mint a new token for the sender, using the `tokenId`.
        _mint(recipient, tokenId);
        emit EditionPurchased(tokenId, msg.value, msg.sender, recipient);
        return tokenId;
    }

    // ============ NFT Methods ============

    function balanceOf(address owner_) public view override returns (uint256) {
        if (owner_ == operator) {
            return _balances[owner_] + allocation - allocationsTransferred;
        }

        require(
            owner_ != address(0),
            "ERC721: balance query for the zero address"
        );

        return _balances[owner_];
    }

    function ownerOf(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        // The owner if the operator if the token hasn't been transferred or
        // bought, and it's within the range of the allocation.
        if (
            _owners[tokenId] == address(0) &&
            tokenId < allocation &&
            !_burned[tokenId]
        ) {
            return operator;
        }

        address _owner = _owners[tokenId];

        require(
            _owner != address(0),
            "ERC721: owner query for nonexistent token"
        );

        return _owner;
    }

    function burn(uint256 tokenId) public {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "ERC721: transfer caller is not owner nor approved"
        );

        _burn(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override
        returns (string memory)
    {
        return string(abi.encodePacked(baseURI, _toString(tokenId)));
    }

    // Returns e.g. https://mirror-api.com/editions/metadata
    function contractURI() public view returns (string memory) {
        return string(abi.encodePacked(baseURI, "metadata"));
    }

    // The hash of the given content for the NFT. Can be used
    // for IPFS storage, verifying authenticity, etc.
    function getContentHash(uint256) public view returns (bytes32) {
        return contentHash;
    }

    function getRoyaltyRecipient(uint256) public view returns (address) {
        return fundingRecipient;
    }

    // ============ Operational Methods ============

    function withdrawFunds() external Reentrancy.nonReentrant {
        // Transfer the fee to the treasury.
        // Treasury fee is paid first for efficiency, so we don't have to calculate
        // the fee and the revenue amount. Also prevents a reentrancy attack scenario that
        // avoids paying treasury.
        IMirrorTreasury(ITreasuryConfig(treasuryConfig).treasury())
            .contributeWithTributary{value: feeAmount(address(this).balance)}(
            tributary
        );

        // Transfer the remaining available balance to the fundingRecipient.
        _sendFunds(fundingRecipient, address(this).balance);
    }

    function feeAmount(uint256 amount) public pure returns (uint256) {
        return (feePercentage * amount) / 10000;
    }

    // ============ Admin Methods ============

    function changeBaseURI(string memory baseURI_) public onlyGovernance {
        baseURI = baseURI_;
    }

    // ============ Private Methods ============

    // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol
    function _toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    function _sendFunds(address payable recipient, uint256 amount) private {
        require(
            address(this).balance >= amount,
            "Insufficient balance for send"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Unable to send value: recipient may have reverted");
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        if (tokenId < allocation && !_burned[tokenId]) {
            return true;
        }

        return _owners[tokenId] != address(0);
    }

    function _burn(uint256 tokenId) internal {
        address owner_ = ownerOf(tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        if (_balances[owner_] > 0) {
            _balances[owner_] -= 1;
        }
        delete _owners[tokenId];

        _burned[tokenId] = true;

        emit Transfer(owner_, address(0), tokenId);

        if (tokenId < allocation) {}
    }

    mapping(uint256 => address) internal _owners;
    mapping(address => uint256) internal _balances;
    mapping(uint256 => address) internal _tokenApprovals;
    mapping(address => mapping(address => bool)) internal _operatorApprovals;

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC165).interfaceId;
    }

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            msg.sender == owner || isApprovedForAll(owner, msg.sender),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address approver, bool approved)
        public
        virtual
        override
    {
        require(approver != msg.sender, "ERC721: approve to caller");

        _operatorApprovals[msg.sender][approver] = approved;
        emit ApprovalForAll(msg.sender, approver, 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 virtual override {
        //solhint-disable-next-line max-line-length
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "ERC721: transfer caller is not owner nor approved"
        );

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "ERC721: transfer caller is not owner nor approved"
        );
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId)
        internal
        view
        virtual
        returns (bool)
    {
        require(
            _exists(tokenId),
            "ERC721: operator query for nonexistent token"
        );
        address owner = ownerOf(tokenId);
        return (spender == owner ||
            getApproved(tokenId) == spender ||
            isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _balances[to] += 1;
        _owners[tokenId] = to;

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

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(
            ownerOf(tokenId) == from,
            "ERC721: transfer of token that is not own"
        );
        require(
            to != address(0),
            "ERC721: transfer to the zero address (use burn instead)"
        );

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        if (_balances[from] > 0) {
            _balances[from] -= 1;
        }

        _owners[tokenId] = to;

        if (from == operator && tokenId < allocation) {
            allocationsTransferred += 1;
            _balances[to] += 1;
        } else if (to == operator && tokenId < allocation) {
            allocationsTransferred -= 1;
        } else {
            _balances[to] += 1;
        }

        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (isContract(to)) {
            try
                IERC721Receiver(to).onERC721Received(
                    msg.sender,
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/7f6a1666fac8ecff5dd467d0938069bc221ea9e0/contracts/utils/Address.sol
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseURI","type":"string"},{"internalType":"bytes32","name":"contentHash","type":"bytes32"}],"internalType":"struct AllocatedEditions.NFTMetadata","name":"metadata","type":"tuple"},{"components":[{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct AllocatedEditions.EditionData","name":"editionData","type":"tuple"},{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"treasuryConfig_","type":"address"},{"internalType":"address","name":"operator_","type":"address"},{"internalType":"address","name":"tributary_","type":"address"},{"internalType":"address payable","name":"fundingRecipient_","type":"address"}],"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":"previousCreator","type":"address"},{"indexed":true,"internalType":"address","name":"newCreator","type":"address"}],"name":"EditionCreatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"},{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"EditionPurchased","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":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"changeBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"governor_","type":"address"}],"name":"changeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"feeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"","type":"uint256"}],"name":"getContentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getRoyaltyRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNextOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"recipient","type":"address"}],"name":"purchase","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"quantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"approver","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"nextOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tributary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61018060405260006008553480156200001757600080fd5b5060405162002f3838038062002f388339810160408190526200003a91620002e1565b600080546001600160a01b0319166001600160a01b038716908117825560405187928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050865180516200009e916004916020909101906200012a565b506020808801518051620000b79260059201906200012a565b5060408701518051620000d3916006916020909101906200012a565b50606096870151608052855160a0528551600755602086015160c05260409095015160e0526001600160601b031992861b831661010052851b821661014052841b8116610120529190921b166101605250620004d3565b828054620001389062000480565b90600052602060002090601f0160209004810192826200015c5760008555620001a7565b82601f106200017757805160ff1916838001178555620001a7565b82800160010185558215620001a7579182015b82811115620001a75782518255916020019190600101906200018a565b50620001b5929150620001b9565b5090565b5b80821115620001b55760008155600101620001ba565b80516001600160a01b0381168114620001e857600080fd5b919050565b600082601f830112620001ff57600080fd5b81516001600160401b038111156200021b576200021b620004bd565b602062000231601f8301601f191682016200044d565b82815285828487010111156200024657600080fd5b60005b838110156200026657858101830151828201840152820162000249565b83811115620002785760008385840101525b5095945050505050565b6000606082840312156200029557600080fd5b604051606081016001600160401b0381118282101715620002ba57620002ba620004bd565b80604052508091508251815260208301516020820152604083015160408201525092915050565b6000806000806000806000610120888a031215620002fe57600080fd5b87516001600160401b03808211156200031657600080fd5b908901906080828c0312156200032b57600080fd5b6200033562000422565b8251828111156200034557600080fd5b620003538d828601620001ed565b8252506020830151828111156200036957600080fd5b620003778d828601620001ed565b6020830152506040830151828111156200039057600080fd5b6200039e8d828601620001ed565b60408301525060608301516060820152809950505050620003c38960208a0162000282565b9550620003d360808901620001d0565b9450620003e360a08901620001d0565b9350620003f360c08901620001d0565b92506200040360e08901620001d0565b9150620004146101008901620001d0565b905092959891949750929550565b604051608081016001600160401b0381118282101715620004475762000447620004bd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620004785762000478620004bd565b604052919050565b600181811c908216806200049557607f821691505b60208210811415620004b757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c6101605160601c612998620005a0600039600081816105ed0152610dbc0152600081816103f10152610d5d015260008181610485015281816110ca015281816111a401528181611af50152611b9801526000610c7f0152600081816106210152610dec0152600081816103520152610e7401526000818161055801528181611085015281816111fe0152818161177a01528181611b230152611bd40152600061079f01526129986000f3fe60806040526004361061026a5760003560e01c806370a0823111610153578063a22cb465116100cb578063e8a3d4851161007f578063ed459df211610064578063ed459df214610741578063f2fde38b14610761578063ffbdc8cb1461078157600080fd5b8063e8a3d485146106e3578063e985e9c5146106f857600080fd5b8063c7af3352116100b0578063c7af335214610683578063c87b56dd146106a3578063e4c0aaf4146106c357600080fd5b8063a22cb46514610643578063b88d4fde1461066357600080fd5b80638da5cb5b1161012257806395d89b411161010757806395d89b41146105ba578063a015a3d8146105cf578063a035b1fe1461060f57600080fd5b80638da5cb5b1461057a5780638f32d59b1461059a57600080fd5b806370a08231146104fc578063715018a61461051c57806379ba50971461053157806388a17bde1461054657600080fd5b806325b31a97116101e657806342966c68116101b55780636352211e1161019a5780636352211e146104a75780636c0360eb146104c75780636c852657146104dc57600080fd5b806342966c6814610453578063570ca7351461047357600080fd5b806325b31a97146103cc5780632704f9b4146103df57806339a0c6f91461041357806342842e0e1461043357600080fd5b80630c340a241161023d57806323452b9c1161022257806323452b9c1461038257806323b872dd1461039757806324600fc3146103b757600080fd5b80630c340a241461032057806317fc45e21461034057600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063081812fc146102c6578063095ea7b3146102fe575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046125c0565b6107c1565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96108a6565b60405161029b91906127bc565b3480156102d257600080fd5b506102e66102e1366004612643565b610934565b6040516001600160a01b03909116815260200161029b565b34801561030a57600080fd5b5061031e610319366004612594565b6109d2565b005b34801561032c57600080fd5b506002546102e6906001600160a01b031681565b34801561034c57600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161029b565b34801561038e57600080fd5b5061031e610b22565b3480156103a357600080fd5b5061031e6103b23660046124a0565b610b9b565b3480156103c357600080fd5b5061031e610c22565b6103746103da366004612426565b610de8565b3480156103eb57600080fd5b506102e67f000000000000000000000000000000000000000000000000000000000000000081565b34801561041f57600080fd5b5061031e61042e3660046125fa565b610f3a565b34801561043f57600080fd5b5061031e61044e3660046124a0565b610fc0565b34801561045f57600080fd5b5061031e61046e366004612643565b610fdb565b34801561047f57600080fd5b506102e67f000000000000000000000000000000000000000000000000000000000000000081565b3480156104b357600080fd5b506102e66104c2366004612643565b611063565b3480156104d357600080fd5b506102b9611179565b3480156104e857600080fd5b506103746104f7366004612643565b611186565b34801561050857600080fd5b50610374610517366004612426565b6111a0565b34801561052857600080fd5b5061031e6112c5565b34801561053d57600080fd5b5061031e611368565b34801561055257600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b34801561058657600080fd5b506000546102e6906001600160a01b031681565b3480156105a657600080fd5b506000546001600160a01b0316331461028f565b3480156105c657600080fd5b506102b961143d565b3480156105db57600080fd5b506102e66105ea366004612643565b507f000000000000000000000000000000000000000000000000000000000000000090565b34801561061b57600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b34801561064f57600080fd5b5061031e61065e366004612561565b61144a565b34801561066f57600080fd5b5061031e61067e3660046124e1565b61150f565b34801561068f57600080fd5b506002546001600160a01b0316331461028f565b3480156106af57600080fd5b506102b96106be366004612643565b61159d565b3480156106cf57600080fd5b5061031e6106de366004612426565b6115d1565b3480156106ef57600080fd5b506102b961166f565b34801561070457600080fd5b5061028f610713366004612467565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205460ff1690565b34801561074d57600080fd5b506001546001600160a01b0316331461028f565b34801561076d57600080fd5b5061031e61077c366004612426565b611697565b34801561078d57600080fd5b5061037461079c366004612643565b507f000000000000000000000000000000000000000000000000000000000000000090565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061085457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806108a057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600480546108b39061285d565b80601f01602080910402602001604051908101604052809291908181526020018280546108df9061285d565b801561092c5780601f106109015761010080835404028352916020019161092c565b820191906000526020600020905b81548152906001019060200180831161090f57829003601f168201915b505050505081565b600061093f82611776565b6109b65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600c60205260409020546001600160a01b031690565b60006109dd82611063565b9050806001600160a01b0316836001600160a01b03161415610a675760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016109ad565b336001600160a01b0382161480610aa157506001600160a01b0381166000908152600d6020908152604080832033845290915290205460ff165b610b135760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016109ad565b610b1d83836117e1565b505050565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b610ba5338261185c565b610c175760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b610b1d838383611957565b60026003541415610c755760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c00000000000000000000000000000000000060448201526064016109ad565b60026003819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610cd857600080fd5b505af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061244a565b6001600160a01b031663e75cb302610d2747611186565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526024016000604051808303818588803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b5050505050610de17f000000000000000000000000000000000000000000000000000000000000000047611c83565b6001600355565b60007f0000000000000000000000000000000000000000000000000000000000000000341015610e5a5760405162461bcd60e51b815260206004820152601760248201527f496e73756666696369656e742066756e64732073656e7400000000000000000060448201526064016109ad565b50600780549081906000610e6d83612898565b91905055507f00000000000000000000000000000000000000000000000000000000000000008110610ee15760405162461bcd60e51b815260206004820152601860248201527f546869732065646974696f6e20697320736f6c64206f7574000000000000000060448201526064016109ad565b610eeb8282611d9c565b604080513481523360208201526001600160a01b03841681830152905182917fd0583f52c821a4947b04f05eab604fc1b04ba8daad41e9f2fd2d69cf3fc1a56a919081900360600190a2919050565b6000546001600160a01b0316331480610f5d57506002546001600160a01b031633145b610fa95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016109ad565b8051610fbc906006906020840190612317565b5050565b610b1d8383836040518060200160405280600081525061150f565b610fe5338261185c565b6110575760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b61106081611edc565b50565b6000818152600a60205260408120546001600160a01b03161580156110a757507f000000000000000000000000000000000000000000000000000000000000000082105b80156110c2575060008281526009602052604090205460ff16155b156110ee57507f0000000000000000000000000000000000000000000000000000000000000000919050565b6000828152600a60205260409020546001600160a01b0316806108a05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016109ad565b600680546108b39061285d565b60006127106111968360fa6127fb565b6108a091906127e7565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561122d576008546001600160a01b0383166000908152600b6020526040902054611223907f0000000000000000000000000000000000000000000000000000000000000000906127cf565b6108a0919061281a565b6001600160a01b0382166112a95760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016109ad565b506001600160a01b03166000908152600b602052604090205490565b6000546001600160a01b0316331461131f5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b031633146113e85760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b600580546108b39061285d565b6001600160a01b0382163314156114a35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109ad565b336000818152600d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611519338361185c565b61158b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b61159784848484611fb8565b50505050565b606060066115aa83612041565b6040516020016115bb929190612722565b6040516020818303038152906040529050919050565b6000546001600160a01b03163314806115f457506002546001600160a01b031633145b6116405760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016109ad565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b606060066040516020016116839190612747565b604051602081830303815290604052905090565b6000546001600160a01b031633146116f15760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6001600160a01b0381166117475760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60007f0000000000000000000000000000000000000000000000000000000000000000821080156117b6575060008281526009602052604090205460ff16155b156117c357506001919050565b506000908152600a60205260409020546001600160a01b0316151590565b6000818152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061182382611063565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061186782611776565b6118d95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016109ad565b60006118e483611063565b9050806001600160a01b0316846001600160a01b0316148061191f5750836001600160a01b031661191484610934565b6001600160a01b0316145b8061194f57506001600160a01b038082166000908152600d602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661196a82611063565b6001600160a01b0316146119e65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016109ad565b6001600160a01b038216611a625760405162461bcd60e51b815260206004820152603760248201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573732028757365206275726e20696e73746561642900000000000000000060648201526084016109ad565b611a6d6000826117e1565b6001600160a01b0383166000908152600b602052604090205415611aba576001600160a01b0383166000908152600b60205260408120805460019290611ab490849061281a565b90915550505b6000818152600a60205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03848116919091179091557f00000000000000000000000000000000000000000000000000000000000000008116908416148015611b4557507f000000000000000000000000000000000000000000000000000000000000000081105b15611b9657600160086000828254611b5d91906127cf565b90915550506001600160a01b0382166000908152600b60205260408120805460019290611b8b9084906127cf565b90915550611c3d9050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148015611bf657507f000000000000000000000000000000000000000000000000000000000000000081105b15611c0e57600160086000828254611b8b919061281a565b6001600160a01b0382166000908152600b60205260408120805460019290611c379084906127cf565b90915550505b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80471015611cd35760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016109ad565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d20576040519150601f19603f3d011682016040523d82523d6000602084013e611d25565b606091505b5050905080610b1d5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e742060448201527f6d6179206861766520726576657274656400000000000000000000000000000060648201526084016109ad565b6001600160a01b038216611df25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109ad565b611dfb81611776565b15611e485760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109ad565b6001600160a01b0382166000908152600b60205260408120805460019290611e719084906127cf565b90915550506000818152600a6020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611ee782611063565b9050611ef46000836117e1565b6001600160a01b0381166000908152600b602052604090205415611f41576001600160a01b0381166000908152600b60205260408120805460019290611f3b90849061281a565b90915550505b6000828152600a60209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556009909152808220805460ff19166001179055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b611fc3848484611957565b611fcf84848484612173565b6115975760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109ad565b60608161208157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156120ab578061209581612898565b91506120a49050600a836127e7565b9150612085565b60008167ffffffffffffffff8111156120c6576120c6612909565b6040519080825280601f01601f1916602001820160405280156120f0576020820181803683370190505b5090505b841561194f5761210560018361281a565b9150612112600a866128b3565b61211d9060306127cf565b60f81b818381518110612132576121326128f3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061216c600a866127e7565b94506120f4565b6000833b1561230c576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a02906121c7903390899088908890600401612780565b602060405180830381600087803b1580156121e157600080fd5b505af1925050508015612211575060408051601f3d908101601f1916820190925261220e918101906125dd565b60015b6122c1573d80801561223f576040519150601f19603f3d011682016040523d82523d6000602084013e612244565b606091505b5080516122b95760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109ad565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061194f565b506001949350505050565b8280546123239061285d565b90600052602060002090601f016020900481019282612345576000855561238b565b82601f1061235e57805160ff191683800117855561238b565b8280016001018555821561238b579182015b8281111561238b578251825591602001919060010190612370565b5061239792915061239b565b5090565b5b80821115612397576000815560010161239c565b600067ffffffffffffffff808411156123cb576123cb612909565b604051601f8501601f19908116603f011681019082821181831017156123f3576123f3612909565b8160405280935085815286868601111561240c57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561243857600080fd5b81356124438161291f565b9392505050565b60006020828403121561245c57600080fd5b81516124438161291f565b6000806040838503121561247a57600080fd5b82356124858161291f565b915060208301356124958161291f565b809150509250929050565b6000806000606084860312156124b557600080fd5b83356124c08161291f565b925060208401356124d08161291f565b929592945050506040919091013590565b600080600080608085870312156124f757600080fd5b84356125028161291f565b935060208501356125128161291f565b925060408501359150606085013567ffffffffffffffff81111561253557600080fd5b8501601f8101871361254657600080fd5b612555878235602084016123b0565b91505092959194509250565b6000806040838503121561257457600080fd5b823561257f8161291f565b91506020830135801515811461249557600080fd5b600080604083850312156125a757600080fd5b82356125b28161291f565b946020939093013593505050565b6000602082840312156125d257600080fd5b813561244381612934565b6000602082840312156125ef57600080fd5b815161244381612934565b60006020828403121561260c57600080fd5b813567ffffffffffffffff81111561262357600080fd5b8201601f8101841361263457600080fd5b61194f848235602084016123b0565b60006020828403121561265557600080fd5b5035919050565b60008151808452612674816020860160208601612831565b601f01601f19169290920160200192915050565b8054600090600181811c90808316806126a257607f831692505b60208084108214156126c457634e487b7160e01b600052602260045260246000fd5b8180156126d857600181146126e957612716565b60ff19861689528489019650612716565b60008881526020902060005b8681101561270e5781548b8201529085019083016126f5565b505084890196505b50505050505092915050565b600061272e8285612688565b835161273e818360208801612831565b01949350505050565b60006127538284612688565b7f6d6574616461746100000000000000000000000000000000000000000000000081526008019392505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526127b2608083018461265c565b9695505050505050565b602081526000612443602083018461265c565b600082198211156127e2576127e26128c7565b500190565b6000826127f6576127f66128dd565b500490565b6000816000190483118215151615612815576128156128c7565b500290565b60008282101561282c5761282c6128c7565b500390565b60005b8381101561284c578181015183820152602001612834565b838111156115975750506000910152565b600181811c9082168061287157607f821691505b6020821081141561289257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128ac576128ac6128c7565b5060010190565b6000826128c2576128c26128dd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461106057600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461106057600080fdfea2646970667358221220e9c4ae821d6787292ef8d04b8974bc2da85dcf4f0dd0b472b0b6d6c380f624f964736f6c634300080600330000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b5700000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937000000000000000000000000467aadc88d99b4e978a8d3d4f0a9017dcaecaabf000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100c72fbc577db445cdaafc0592ec8cf968e52428b7b21a7e658858746cbdeabc9e0000000000000000000000000000000000000000000000000000000000000016476f6c64656e20546f6b656e3a204e657720596f726b00000000000000000000000000000000000000000000000000000000000000000000000000000000000447544e5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f637573746f6d2f67746e792f0000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061026a5760003560e01c806370a0823111610153578063a22cb465116100cb578063e8a3d4851161007f578063ed459df211610064578063ed459df214610741578063f2fde38b14610761578063ffbdc8cb1461078157600080fd5b8063e8a3d485146106e3578063e985e9c5146106f857600080fd5b8063c7af3352116100b0578063c7af335214610683578063c87b56dd146106a3578063e4c0aaf4146106c357600080fd5b8063a22cb46514610643578063b88d4fde1461066357600080fd5b80638da5cb5b1161012257806395d89b411161010757806395d89b41146105ba578063a015a3d8146105cf578063a035b1fe1461060f57600080fd5b80638da5cb5b1461057a5780638f32d59b1461059a57600080fd5b806370a08231146104fc578063715018a61461051c57806379ba50971461053157806388a17bde1461054657600080fd5b806325b31a97116101e657806342966c68116101b55780636352211e1161019a5780636352211e146104a75780636c0360eb146104c75780636c852657146104dc57600080fd5b806342966c6814610453578063570ca7351461047357600080fd5b806325b31a97146103cc5780632704f9b4146103df57806339a0c6f91461041357806342842e0e1461043357600080fd5b80630c340a241161023d57806323452b9c1161022257806323452b9c1461038257806323b872dd1461039757806324600fc3146103b757600080fd5b80630c340a241461032057806317fc45e21461034057600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063081812fc146102c6578063095ea7b3146102fe575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046125c0565b6107c1565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96108a6565b60405161029b91906127bc565b3480156102d257600080fd5b506102e66102e1366004612643565b610934565b6040516001600160a01b03909116815260200161029b565b34801561030a57600080fd5b5061031e610319366004612594565b6109d2565b005b34801561032c57600080fd5b506002546102e6906001600160a01b031681565b34801561034c57600080fd5b506103747f00000000000000000000000000000000000000000000000000000000000003e881565b60405190815260200161029b565b34801561038e57600080fd5b5061031e610b22565b3480156103a357600080fd5b5061031e6103b23660046124a0565b610b9b565b3480156103c357600080fd5b5061031e610c22565b6103746103da366004612426565b610de8565b3480156103eb57600080fd5b506102e67f000000000000000000000000467aadc88d99b4e978a8d3d4f0a9017dcaecaabf81565b34801561041f57600080fd5b5061031e61042e3660046125fa565b610f3a565b34801561043f57600080fd5b5061031e61044e3660046124a0565b610fc0565b34801561045f57600080fd5b5061031e61046e366004612643565b610fdb565b34801561047f57600080fd5b506102e67f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe7193781565b3480156104b357600080fd5b506102e66104c2366004612643565b611063565b3480156104d357600080fd5b506102b9611179565b3480156104e857600080fd5b506103746104f7366004612643565b611186565b34801561050857600080fd5b50610374610517366004612426565b6111a0565b34801561052857600080fd5b5061031e6112c5565b34801561053d57600080fd5b5061031e611368565b34801561055257600080fd5b506103747f000000000000000000000000000000000000000000000000000000000000032081565b34801561058657600080fd5b506000546102e6906001600160a01b031681565b3480156105a657600080fd5b506000546001600160a01b0316331461028f565b3480156105c657600080fd5b506102b961143d565b3480156105db57600080fd5b506102e66105ea366004612643565b507f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe7193790565b34801561061b57600080fd5b506103747f0000000000000000000000000000000000000000000000001bc16d674ec8000081565b34801561064f57600080fd5b5061031e61065e366004612561565b61144a565b34801561066f57600080fd5b5061031e61067e3660046124e1565b61150f565b34801561068f57600080fd5b506002546001600160a01b0316331461028f565b3480156106af57600080fd5b506102b96106be366004612643565b61159d565b3480156106cf57600080fd5b5061031e6106de366004612426565b6115d1565b3480156106ef57600080fd5b506102b961166f565b34801561070457600080fd5b5061028f610713366004612467565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205460ff1690565b34801561074d57600080fd5b506001546001600160a01b0316331461028f565b34801561076d57600080fd5b5061031e61077c366004612426565b611697565b34801561078d57600080fd5b5061037461079c366004612643565b507fc72fbc577db445cdaafc0592ec8cf968e52428b7b21a7e658858746cbdeabc9e90565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061085457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806108a057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600480546108b39061285d565b80601f01602080910402602001604051908101604052809291908181526020018280546108df9061285d565b801561092c5780601f106109015761010080835404028352916020019161092c565b820191906000526020600020905b81548152906001019060200180831161090f57829003601f168201915b505050505081565b600061093f82611776565b6109b65760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000908152600c60205260409020546001600160a01b031690565b60006109dd82611063565b9050806001600160a01b0316836001600160a01b03161415610a675760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016109ad565b336001600160a01b0382161480610aa157506001600160a01b0381166000908152600d6020908152604080832033845290915290205460ff165b610b135760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016109ad565b610b1d83836117e1565b505050565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b610ba5338261185c565b610c175760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b610b1d838383611957565b60026003541415610c755760405162461bcd60e51b815260206004820152600e60248201527f5265656e7472616e742063616c6c00000000000000000000000000000000000060448201526064016109ad565b60026003819055507f00000000000000000000000021a93be569666527dae0fdbfbe7715299dec12026001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610cd857600080fd5b505af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061244a565b6001600160a01b031663e75cb302610d2747611186565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b037f000000000000000000000000467aadc88d99b4e978a8d3d4f0a9017dcaecaabf1660048201526024016000604051808303818588803b158015610d9e57600080fd5b505af1158015610db2573d6000803e3d6000fd5b5050505050610de17f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe7193747611c83565b6001600355565b60007f0000000000000000000000000000000000000000000000001bc16d674ec80000341015610e5a5760405162461bcd60e51b815260206004820152601760248201527f496e73756666696369656e742066756e64732073656e7400000000000000000060448201526064016109ad565b50600780549081906000610e6d83612898565b91905055507f00000000000000000000000000000000000000000000000000000000000003e88110610ee15760405162461bcd60e51b815260206004820152601860248201527f546869732065646974696f6e20697320736f6c64206f7574000000000000000060448201526064016109ad565b610eeb8282611d9c565b604080513481523360208201526001600160a01b03841681830152905182917fd0583f52c821a4947b04f05eab604fc1b04ba8daad41e9f2fd2d69cf3fc1a56a919081900360600190a2919050565b6000546001600160a01b0316331480610f5d57506002546001600160a01b031633145b610fa95760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016109ad565b8051610fbc906006906020840190612317565b5050565b610b1d8383836040518060200160405280600081525061150f565b610fe5338261185c565b6110575760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b61106081611edc565b50565b6000818152600a60205260408120546001600160a01b03161580156110a757507f000000000000000000000000000000000000000000000000000000000000032082105b80156110c2575060008281526009602052604090205460ff16155b156110ee57507f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937919050565b6000828152600a60205260409020546001600160a01b0316806108a05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016109ad565b600680546108b39061285d565b60006127106111968360fa6127fb565b6108a091906127e7565b60007f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe719376001600160a01b0316826001600160a01b0316141561122d576008546001600160a01b0383166000908152600b6020526040902054611223907f0000000000000000000000000000000000000000000000000000000000000320906127cf565b6108a0919061281a565b6001600160a01b0382166112a95760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016109ad565b506001600160a01b03166000908152600b602052604090205490565b6000546001600160a01b0316331461131f5760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6001546001600160a01b031633146113e85760405162461bcd60e51b815260206004820152602c60248201527f63757272656e74206f776e6572206d757374207365742063616c6c657220617360448201527f206e657874206f776e65722e000000000000000000000000000000000000000060648201526084016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19908116909155600080543392168217815560405182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3565b600580546108b39061285d565b6001600160a01b0382163314156114a35760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016109ad565b336000818152600d602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611519338361185c565b61158b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016109ad565b61159784848484611fb8565b50505050565b606060066115aa83612041565b6040516020016115bb929190612722565b6040516020818303038152906040529050919050565b6000546001600160a01b03163314806115f457506002546001600160a01b031633145b6116405760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420676f7665726e616e6365000000000000000060448201526064016109ad565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b606060066040516020016116839190612747565b604051602081830303815290604052905090565b6000546001600160a01b031633146116f15760405162461bcd60e51b815260206004820152601860248201527f63616c6c6572206973206e6f7420746865206f776e65722e000000000000000060448201526064016109ad565b6001600160a01b0381166117475760405162461bcd60e51b815260206004820152601f60248201527f4e657874206f776e657220697320746865207a65726f20616464726573732e0060448201526064016109ad565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60007f0000000000000000000000000000000000000000000000000000000000000320821080156117b6575060008281526009602052604090205460ff16155b156117c357506001919050565b506000908152600a60205260409020546001600160a01b0316151590565b6000818152600c60205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155819061182382611063565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061186782611776565b6118d95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016109ad565b60006118e483611063565b9050806001600160a01b0316846001600160a01b0316148061191f5750836001600160a01b031661191484610934565b6001600160a01b0316145b8061194f57506001600160a01b038082166000908152600d602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661196a82611063565b6001600160a01b0316146119e65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016109ad565b6001600160a01b038216611a625760405162461bcd60e51b815260206004820152603760248201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573732028757365206275726e20696e73746561642900000000000000000060648201526084016109ad565b611a6d6000826117e1565b6001600160a01b0383166000908152600b602052604090205415611aba576001600160a01b0383166000908152600b60205260408120805460019290611ab490849061281a565b90915550505b6000818152600a60205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03848116919091179091557f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe719378116908416148015611b4557507f000000000000000000000000000000000000000000000000000000000000032081105b15611b9657600160086000828254611b5d91906127cf565b90915550506001600160a01b0382166000908152600b60205260408120805460019290611b8b9084906127cf565b90915550611c3d9050565b7f000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe719376001600160a01b0316826001600160a01b0316148015611bf657507f000000000000000000000000000000000000000000000000000000000000032081105b15611c0e57600160086000828254611b8b919061281a565b6001600160a01b0382166000908152600b60205260408120805460019290611c379084906127cf565b90915550505b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80471015611cd35760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e742062616c616e636520666f722073656e6400000060448201526064016109ad565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d20576040519150601f19603f3d011682016040523d82523d6000602084013e611d25565b606091505b5050905080610b1d5760405162461bcd60e51b815260206004820152603160248201527f556e61626c6520746f2073656e642076616c75653a20726563697069656e742060448201527f6d6179206861766520726576657274656400000000000000000000000000000060648201526084016109ad565b6001600160a01b038216611df25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016109ad565b611dfb81611776565b15611e485760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016109ad565b6001600160a01b0382166000908152600b60205260408120805460019290611e719084906127cf565b90915550506000818152600a6020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611ee782611063565b9050611ef46000836117e1565b6001600160a01b0381166000908152600b602052604090205415611f41576001600160a01b0381166000908152600b60205260408120805460019290611f3b90849061281a565b90915550505b6000828152600a60209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191690556009909152808220805460ff19166001179055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b611fc3848484611957565b611fcf84848484612173565b6115975760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109ad565b60608161208157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156120ab578061209581612898565b91506120a49050600a836127e7565b9150612085565b60008167ffffffffffffffff8111156120c6576120c6612909565b6040519080825280601f01601f1916602001820160405280156120f0576020820181803683370190505b5090505b841561194f5761210560018361281a565b9150612112600a866128b3565b61211d9060306127cf565b60f81b818381518110612132576121326128f3565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061216c600a866127e7565b94506120f4565b6000833b1561230c576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a02906121c7903390899088908890600401612780565b602060405180830381600087803b1580156121e157600080fd5b505af1925050508015612211575060408051601f3d908101601f1916820190925261220e918101906125dd565b60015b6122c1573d80801561223f576040519150601f19603f3d011682016040523d82523d6000602084013e612244565b606091505b5080516122b95760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016109ad565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061194f565b506001949350505050565b8280546123239061285d565b90600052602060002090601f016020900481019282612345576000855561238b565b82601f1061235e57805160ff191683800117855561238b565b8280016001018555821561238b579182015b8281111561238b578251825591602001919060010190612370565b5061239792915061239b565b5090565b5b80821115612397576000815560010161239c565b600067ffffffffffffffff808411156123cb576123cb612909565b604051601f8501601f19908116603f011681019082821181831017156123f3576123f3612909565b8160405280935085815286868601111561240c57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561243857600080fd5b81356124438161291f565b9392505050565b60006020828403121561245c57600080fd5b81516124438161291f565b6000806040838503121561247a57600080fd5b82356124858161291f565b915060208301356124958161291f565b809150509250929050565b6000806000606084860312156124b557600080fd5b83356124c08161291f565b925060208401356124d08161291f565b929592945050506040919091013590565b600080600080608085870312156124f757600080fd5b84356125028161291f565b935060208501356125128161291f565b925060408501359150606085013567ffffffffffffffff81111561253557600080fd5b8501601f8101871361254657600080fd5b612555878235602084016123b0565b91505092959194509250565b6000806040838503121561257457600080fd5b823561257f8161291f565b91506020830135801515811461249557600080fd5b600080604083850312156125a757600080fd5b82356125b28161291f565b946020939093013593505050565b6000602082840312156125d257600080fd5b813561244381612934565b6000602082840312156125ef57600080fd5b815161244381612934565b60006020828403121561260c57600080fd5b813567ffffffffffffffff81111561262357600080fd5b8201601f8101841361263457600080fd5b61194f848235602084016123b0565b60006020828403121561265557600080fd5b5035919050565b60008151808452612674816020860160208601612831565b601f01601f19169290920160200192915050565b8054600090600181811c90808316806126a257607f831692505b60208084108214156126c457634e487b7160e01b600052602260045260246000fd5b8180156126d857600181146126e957612716565b60ff19861689528489019650612716565b60008881526020902060005b8681101561270e5781548b8201529085019083016126f5565b505084890196505b50505050505092915050565b600061272e8285612688565b835161273e818360208801612831565b01949350505050565b60006127538284612688565b7f6d6574616461746100000000000000000000000000000000000000000000000081526008019392505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526127b2608083018461265c565b9695505050505050565b602081526000612443602083018461265c565b600082198211156127e2576127e26128c7565b500190565b6000826127f6576127f66128dd565b500490565b6000816000190483118215151615612815576128156128c7565b500290565b60008282101561282c5761282c6128c7565b500390565b60005b8381101561284c578181015183820152602001612834565b838111156115975750506000910152565b600181811c9082168061287157607f821691505b6020821081141561289257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156128ac576128ac6128c7565b5060010190565b6000826128c2576128c26128dd565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461106057600080fd5b7fffffffff000000000000000000000000000000000000000000000000000000008116811461106057600080fdfea2646970667358221220e9c4ae821d6787292ef8d04b8974bc2da85dcf4f0dd0b472b0b6d6c380f624f964736f6c63430008060033

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

0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b5700000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937000000000000000000000000467aadc88d99b4e978a8d3d4f0a9017dcaecaabf000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100c72fbc577db445cdaafc0592ec8cf968e52428b7b21a7e658858746cbdeabc9e0000000000000000000000000000000000000000000000000000000000000016476f6c64656e20546f6b656e3a204e657720596f726b00000000000000000000000000000000000000000000000000000000000000000000000000000000000447544e5900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f637573746f6d2f67746e792f0000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : metadata (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : editionData (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [2] : owner_ (address): 0x2330ee705fFD040bB0cbA8CB7734Dfe00E7C4b57
Arg [3] : treasuryConfig_ (address): 0x21A93bE569666527dAe0FDBFbe7715299dEC1202
Arg [4] : operator_ (address): 0xB96E81f80b3AEEf65CB6d0E280b15FD5DBE71937
Arg [5] : tributary_ (address): 0x467aadC88d99B4E978A8d3d4f0A9017DCAECaAbF
Arg [6] : fundingRecipient_ (address): 0xB96E81f80b3AEEf65CB6d0E280b15FD5DBE71937

-----Encoded View---------------
20 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [2] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [3] : 0000000000000000000000000000000000000000000000001bc16d674ec80000
Arg [4] : 0000000000000000000000002330ee705ffd040bb0cba8cb7734dfe00e7c4b57
Arg [5] : 00000000000000000000000021a93be569666527dae0fdbfbe7715299dec1202
Arg [6] : 000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937
Arg [7] : 000000000000000000000000467aadc88d99b4e978a8d3d4f0a9017dcaecaabf
Arg [8] : 000000000000000000000000b96e81f80b3aeef65cb6d0e280b15fd5dbe71937
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [10] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [12] : c72fbc577db445cdaafc0592ec8cf968e52428b7b21a7e658858746cbdeabc9e
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000016
Arg [14] : 476f6c64656e20546f6b656e3a204e657720596f726b00000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [16] : 47544e5900000000000000000000000000000000000000000000000000000000
Arg [17] : 000000000000000000000000000000000000000000000000000000000000002c
Arg [18] : 68747470733a2f2f6d6972726f722d6170692e636f6d2f65646974696f6e732f
Arg [19] : 637573746f6d2f67746e792f0000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

7102:16407:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16543:342;;;;;;;;;;-1:-1:-1;16543:342:0;;;;;:::i;:::-;;:::i;:::-;;;8043:14:1;;8036:22;8018:41;;8006:2;7991:18;16543:342:0;;;;;;;;8162:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17532:308::-;;;;;;;;;;-1:-1:-1;17532:308:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7295:55:1;;;7277:74;;7265:2;7250:18;17532:308:0;7232:125:1;17124:400:0;;;;;;;;;;-1:-1:-1;17124:400:0;;;;;:::i;:::-;;:::i;:::-;;5322:32;;;;;;;;;;-1:-1:-1;5322:32:0;;;;-1:-1:-1;;;;;5322:32:0;;;8367:33;;;;;;;;;;;;;;;;;;8216:25:1;;;8204:2;8189:18;8367:33:0;8171:76:1;3925:89:0;;;;;;;;;;;;;:::i;18401:374::-;;;;;;;;;;-1:-1:-1;18401:374:0;;;;;:::i;:::-;;:::i;13452:651::-;;;;;;;;;;;;;:::i;10622:692::-;;;;;;:::i;:::-;;:::i;8710:34::-;;;;;;;;;;;;;;;14292:106;;;;;;;;;;-1:-1:-1;14292:106:0;;;;;:::i;:::-;;:::i;18783:185::-;;;;;;;;;;-1:-1:-1;18783:185:0;;;;;:::i;:::-;;:::i;12414:222::-;;;;;;;;;;-1:-1:-1;12414:222:0;;;;;:::i;:::-;;:::i;8616:33::-;;;;;;;;;;;;;;;11745:661;;;;;;;;;;-1:-1:-1;11745:661:0;;;;;:::i;:::-;;:::i;8232:21::-;;;;;;;;;;;;;:::i;14111:123::-;;;;;;;;;;-1:-1:-1;14111:123:0;;;;;:::i;:::-;;:::i;11370:367::-;;;;;;;;;;-1:-1:-1;11370:367:0;;;;;:::i;:::-;;:::i;4363:142::-;;;;;;;;;;;;;:::i;4098:173::-;;;;;;;;;;;;;:::i;8325:35::-;;;;;;;;;;;;;;;2904:20;;;;;;;;;;-1:-1:-1;2904:20:0;;;;-1:-1:-1;;;;;2904:20:0;;;4593:91;;;;;;;;;;-1:-1:-1;4633:4:0;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;4593:91;;8196:29;;;;;;;;;;;;;:::i;13278:110::-;;;;;;;;;;-1:-1:-1;13278:110:0;;;;;:::i;:::-;-1:-1:-1;13364:16:0;;13278:110;8407:30;;;;;;;;;;;;;;;17848:321;;;;;;;;;;-1:-1:-1;17848:321:0;;;;;:::i;:::-;;:::i;18976:363::-;;;;;;;;;;-1:-1:-1;18976:363:0;;;;;:::i;:::-;;:::i;5974:106::-;;;;;;;;;;-1:-1:-1;6064:8:0;;-1:-1:-1;;;;;6064:8:0;6050:10;:22;5974:106;;12644:200;;;;;;;;;;-1:-1:-1;12644:200:0;;;;;:::i;:::-;;:::i;5799:113::-;;;;;;;;;;-1:-1:-1;5799:113:0;;;;;:::i;:::-;;:::i;12914:130::-;;;;;;;;;;;;;:::i;18177:216::-;;;;;;;;;;-1:-1:-1;18177:216:0;;;;;:::i;:::-;-1:-1:-1;;;;;18349:25:0;;;18320:4;18349:25;;;:18;:25;;;;;;;;:36;;;;;;;;;;;;;;;18177:216;4769:99;;;;;;;;;;-1:-1:-1;4851:9:0;;-1:-1:-1;;;;;4851:9:0;4837:10;:23;4769:99;;3649:188;;;;;;;;;;-1:-1:-1;3649:188:0;;;;;:::i;:::-;;:::i;13170:100::-;;;;;;;;;;-1:-1:-1;13170:100:0;;;;;:::i;:::-;-1:-1:-1;13251:11:0;;13170:100;16543:342;16673:4;16715:40;;;16730:25;16715:40;;:105;;-1:-1:-1;16772:48:0;;;16787:33;16772:48;16715:105;:162;;;-1:-1:-1;16837:40:0;;;16852:25;16837:40;16715:162;16695:182;16543:342;-1:-1:-1;;16543:342:0:o;8162:27::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17532:308::-;17653:7;17700:16;17708:7;17700;:16::i;:::-;17678:110;;;;-1:-1:-1;;;17678:110:0;;13665:2:1;17678:110:0;;;13647:21:1;13704:2;13684:18;;;13677:30;13743:34;13723:18;;;13716:62;13814:14;13794:18;;;13787:42;13846:19;;17678:110:0;;;;;;;;;-1:-1:-1;17808:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;17808:24:0;;17532:308::o;17124:400::-;17205:13;17221:16;17229:7;17221;:16::i;:::-;17205:32;;17262:5;-1:-1:-1;;;;;17256:11:0;:2;-1:-1:-1;;;;;17256:11:0;;;17248:57;;;;-1:-1:-1;;;17248:57:0;;14488:2:1;17248:57:0;;;14470:21:1;14527:2;14507:18;;;14500:30;14566:34;14546:18;;;14539:62;14637:3;14617:18;;;14610:31;14658:19;;17248:57:0;14460:223:1;17248:57:0;17340:10;-1:-1:-1;;;;;17340:19:0;;;;:58;;-1:-1:-1;;;;;;18349:25:0;;18320:4;18349:25;;;:18;:25;;;;;;;;17387:10;18349:36;;;;;;;;;;17363:35;17318:164;;;;-1:-1:-1;;;17318:164:0;;12058:2:1;17318:164:0;;;12040:21:1;12097:2;12077:18;;;12070:30;12136:34;12116:18;;;12109:62;12207:26;12187:18;;;12180:54;12251:19;;17318:164:0;12030:246:1;17318:164:0;17495:21;17504:2;17508:7;17495:8;:21::i;:::-;17194:330;17124:400;;:::o;3925:89::-;4633:4;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;3134:46;;;;-1:-1:-1;;;3134:46:0;;9451:2:1;3134:46:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:26;9509:18;;;9502:54;9573:18;;3134:46:0;9423:174:1;3134:46:0;3997:9:::1;3990:16:::0;;-1:-1:-1;;3990:16:0::1;::::0;;3925:89::o;18401:374::-;18610:39;18629:10;18641:7;18610:18;:39::i;:::-;18588:138;;;;-1:-1:-1;;;18588:138:0;;15586:2:1;18588:138:0;;;15568:21:1;15625:2;15605:18;;;15598:30;15664:34;15644:18;;;15637:62;15735:19;15715:18;;;15708:47;15772:19;;18588:138:0;15558:239:1;18588:138:0;18739:28;18749:4;18755:2;18759:7;18739:9;:28::i;13452:651::-;6310:1;6575:16;;:38;;6567:65;;;;-1:-1:-1;;;6567:65:0;;14890:2:1;6567:65:0;;;14872:21:1;14929:2;14909:18;;;14902:30;14968:16;14948:18;;;14941:44;15002:18;;6567:65:0;14862:164:1;6567:65:0;6310:1;6708:16;:37;;;;13812:14:::1;-1:-1:-1::0;;;;;13796:40:0::1;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13780:97:0::1;;13885:32;13895:21;13885:9;:32::i;:::-;13780:173;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;13933:9:0::1;7295:55:1::0;13780:173:0::1;::::0;::::1;7277:74:1::0;7250:18;;13780:173:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14044:51;14055:16;14073:21;14044:10;:51::i;:::-;6255:1:::0;6901:16;:41;13452:651::o;10622:692::-;10712:15;10841:5;10828:9;:18;;10820:54;;;;-1:-1:-1;;;10820:54:0;;16846:2:1;10820:54:0;;;16828:21:1;16885:2;16865:18;;;16858:30;16924:25;16904:18;;;16897:53;16967:18;;10820:54:0;16818:173:1;10820:54:0;-1:-1:-1;10934:11:0;;;;;;10956;:13;10934:11;10956:13;:::i;:::-;;;;;;11067:8;11057:7;:18;11049:55;;;;-1:-1:-1;;;11049:55:0;;15233:2:1;11049:55:0;;;15215:21:1;15272:2;15252:18;;;15245:30;15311:26;15291:18;;;15284:54;15355:18;;11049:55:0;15205:174:1;11049:55:0;11181:25;11187:9;11198:7;11181:5;:25::i;:::-;11222:59;;;11248:9;17380:25:1;;11259:10:0;17497:2:1;17482:18;;17475:43;-1:-1:-1;;;;;17554:15:1;;17534:18;;;17527:43;11222:59:0;;11239:7;;11222:59;;;;;;17368:2:1;11222:59:0;;;10622:692;;;:::o;14292:106::-;4633:4;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;5454:25;;;-1:-1:-1;6064:8:0;;-1:-1:-1;;;;;6064:8:0;6050:10;:22;5467:12;5446:62;;;;-1:-1:-1;;;5446:62:0;;10938:2:1;5446:62:0;;;10920:21:1;10977:2;10957:18;;;10950:30;11016:26;10996:18;;;10989:54;11060:18;;5446:62:0;10910:174:1;5446:62:0;14372:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;14292:106:::0;:::o;18783:185::-;18921:39;18938:4;18944:2;18948:7;18921:39;;;;;;;;;;;;:16;:39::i;12414:222::-;12485:39;12504:10;12516:7;12485:18;:39::i;:::-;12463:138;;;;-1:-1:-1;;;12463:138:0;;15586:2:1;12463:138:0;;;15568:21:1;15625:2;15605:18;;;15598:30;15664:34;15644:18;;;15637:62;15735:19;15715:18;;;15708:47;15772:19;;12463:138:0;15558:239:1;12463:138:0;12614:14;12620:7;12614:5;:14::i;:::-;12414:222;:::o;11745:661::-;11862:7;12048:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12048:16:0;:30;:67;;;;;12105:10;12095:7;:20;12048:67;:101;;;;-1:-1:-1;12133:16:0;;;;:7;:16;;;;;;;;12132:17;12048:101;12030:173;;;-1:-1:-1;12183:8:0;;11745:661;-1:-1:-1;11745:661:0:o;12030:173::-;12215:14;12232:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12232:16:0;12283:20;12261:111;;;;-1:-1:-1;;;12261:111:0;;12894:2:1;12261:111:0;;;12876:21:1;12933:2;12913:18;;;12906:30;12972:34;12952:18;;;12945:62;13043:11;13023:18;;;13016:39;13072:19;;12261:111:0;12866:231:1;8232:21:0;;;;;;;:::i;14111:123::-;14167:7;14221:5;14195:22;14211:6;7483:3;14195:22;:::i;:::-;14194:32;;;;:::i;11370:367::-;11435:7;11469:8;-1:-1:-1;;;;;11459:18:0;:6;-1:-1:-1;;;;;11459:18:0;;11455:113;;;11534:22;;-1:-1:-1;;;;;11501:17:0;;;;;;:9;:17;;;;;;:30;;11521:10;;11501:30;:::i;:::-;:55;;;;:::i;11455:113::-;-1:-1:-1;;;;;11602:20:0;;11580:112;;;;-1:-1:-1;;;11580:112:0;;12483:2:1;11580:112:0;;;12465:21:1;12522:2;12502:18;;;12495:30;12561:34;12541:18;;;12534:62;12632:12;12612:18;;;12605:40;12662:19;;11580:112:0;12455:232:1;11580:112:0;-1:-1:-1;;;;;;11712:17:0;;;;;:9;:17;;;;;;;11370:367::o;4363:142::-;4633:4;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;3134:46;;;;-1:-1:-1;;;3134:46:0;;9451:2:1;3134:46:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:26;9509:18;;;9502:54;9573:18;;3134:46:0;9423:174:1;3134:46:0;4438:1:::1;4422:18:::0;;-1:-1:-1;;4422:18:0::1;::::0;;4458:39:::1;::::0;4438:1;;4458:39:::1;::::0;4438:1;;4458:39:::1;4363:142::o:0;4098:173::-;4851:9;;-1:-1:-1;;;;;4851:9:0;4837:10;:23;3244:70;;;;-1:-1:-1;;;3244:70:0;;8678:2:1;3244:70:0;;;8660:21:1;8717:2;8697:18;;;8690:30;8756:34;8736:18;;;8729:62;8827:14;8807:18;;;8800:42;8859:19;;3244:70:0;8650:234:1;3244:70:0;4166:9:::1;4159:16:::0;;-1:-1:-1;;4159:16:0;;::::1;::::0;;;-1:-1:-1;4188:18:0;;4196:10:::1;4188:18:::0;::::1;::::0;::::1;::::0;;4224:39:::1;::::0;4196:10;;4224:39:::1;::::0;::::1;4098:173::o:0;8196:29::-;;;;;;;:::i;17848:321::-;-1:-1:-1;;;;;17983:22:0;;17995:10;17983:22;;17975:60;;;;-1:-1:-1;;;17975:60:0;;11291:2:1;17975:60:0;;;11273:21:1;11330:2;11310:18;;;11303:30;11369:27;11349:18;;;11342:55;11414:18;;17975:60:0;11263:175:1;17975:60:0;18067:10;18048:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;18048:40:0;;;;;;;;;;;;:51;;-1:-1:-1;;18048:51:0;;;;;;;;;;18115:46;;8018:41:1;;;18048:40:0;;18067:10;18115:46;;7991:18:1;18115:46:0;;;;;;;17848:321;;:::o;18976:363::-;19165:39;19184:10;19196:7;19165:18;:39::i;:::-;19143:138;;;;-1:-1:-1;;;19143:138:0;;15586:2:1;19143:138:0;;;15568:21:1;15625:2;15605:18;;;15598:30;15664:34;15644:18;;;15637:62;15735:19;15715:18;;;15708:47;15772:19;;19143:138:0;15558:239:1;19143:138:0;19292:39;19306:4;19312:2;19316:7;19325:5;19292:13;:39::i;:::-;18976:363;;;;:::o;12644:200::-;12745:13;12807:7;12816:18;12826:7;12816:9;:18::i;:::-;12790:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12776:60;;12644:200;;;:::o;5799:113::-;4633:4;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;5454:25;;;-1:-1:-1;6064:8:0;;-1:-1:-1;;;;;6064:8:0;6050:10;:22;5467:12;5446:62;;;;-1:-1:-1;;;5446:62:0;;10938:2:1;5446:62:0;;;10920:21:1;10977:2;10957:18;;;10950:30;11016:26;10996:18;;;10989:54;11060:18;;5446:62:0;10910:174:1;5446:62:0;5884:8:::1;:20:::0;;-1:-1:-1;;5884:20:0::1;-1:-1:-1::0;;;;;5884:20:0;;;::::1;::::0;;;::::1;::::0;;5799:113::o;12914:130::-;12958:13;13015:7;12998:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;12984:52;;12914:130;:::o;3649:188::-;4633:4;4671:5;-1:-1:-1;;;;;4671:5:0;4657:10;:19;3134:46;;;;-1:-1:-1;;;3134:46:0;;9451:2:1;3134:46:0;;;9433:21:1;9490:2;9470:18;;;9463:30;9529:26;9509:18;;;9502:54;9573:18;;3134:46:0;9423:174:1;3134:46:0;-1:-1:-1;;;;;3734:24:0;::::1;3726:68;;;::::0;-1:-1:-1;;;3726:68:0;;9091:2:1;3726:68:0::1;::::0;::::1;9073:21:1::0;9130:2;9110:18;;;9103:30;9169:33;9149:18;;;9142:61;9220:18;;3726:68:0::1;9063:181:1::0;3726:68:0::1;3807:9;:22:::0;;-1:-1:-1;;3807:22:0::1;-1:-1:-1::0;;;;;3807:22:0;;;::::1;::::0;;;::::1;::::0;;3649:188::o;15651:216::-;15708:4;15739:10;15729:7;:20;:41;;;;-1:-1:-1;15754:16:0;;;;:7;:16;;;;;;;;15753:17;15729:41;15725:85;;;-1:-1:-1;15794:4:0;;15651:216;-1:-1:-1;15651:216:0:o;15725:85::-;-1:-1:-1;15857:1:0;15829:16;;;:7;:16;;;;;;-1:-1:-1;;;;;15829:16:0;:30;;;15651:216::o;21883:167::-;21958:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;21958:29:0;-1:-1:-1;;;;;21958:29:0;;;;;;;;:24;;22012:16;21958:24;22012:7;:16::i;:::-;-1:-1:-1;;;;;22003:39:0;;;;;;;;;;;21883:167;;:::o;19707:445::-;19836:4;19880:16;19888:7;19880;:16::i;:::-;19858:110;;;;-1:-1:-1;;;19858:110:0;;11645:2:1;19858:110:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:34;11703:18;;;11696:62;11794:14;11774:18;;;11767:42;11826:19;;19858:110:0;11617:234:1;19858:110:0;19979:13;19995:16;20003:7;19995;:16::i;:::-;19979:32;;20041:5;-1:-1:-1;;;;;20030:16:0;:7;-1:-1:-1;;;;;20030:16:0;;:64;;;;20087:7;-1:-1:-1;;;;;20063:31:0;:20;20075:7;20063:11;:20::i;:::-;-1:-1:-1;;;;;20063:31:0;;20030:64;:113;;;-1:-1:-1;;;;;;18349:25:0;;;18320:4;18349:25;;;:18;:25;;;;;;;;:36;;;;;;;;;;;;20111:32;20022:122;19707:445;-1:-1:-1;;;;19707:445:0:o;20939:936::-;21105:4;-1:-1:-1;;;;;21085:24:0;:16;21093:7;21085;:16::i;:::-;-1:-1:-1;;;;;21085:24:0;;21063:115;;;;-1:-1:-1;;;21063:115:0;;14078:2:1;21063:115:0;;;14060:21:1;14117:2;14097:18;;;14090:30;14156:34;14136:18;;;14129:62;14227:11;14207:18;;;14200:39;14256:19;;21063:115:0;14050:231:1;21063:115:0;-1:-1:-1;;;;;21211:16:0;;21189:121;;;;-1:-1:-1;;;21189:121:0;;16422:2:1;21189:121:0;;;16404:21:1;16461:2;16441:18;;;16434:30;16500:34;16480:18;;;16473:62;16571:25;16551:18;;;16544:53;16614:19;;21189:121:0;16394:245:1;21189:121:0;21375:29;21392:1;21396:7;21375:8;:29::i;:::-;-1:-1:-1;;;;;21421:15:0;;21439:1;21421:15;;;:9;:15;;;;;;:19;21417:72;;-1:-1:-1;;;;;21457:15:0;;;;;;:9;:15;;;;;:20;;21476:1;;21457:15;:20;;21476:1;;21457:20;:::i;:::-;;;;-1:-1:-1;;21417:72:0;21501:16;;;;:7;:16;;;;;:21;;-1:-1:-1;;21501:21:0;-1:-1:-1;;;;;21501:21:0;;;;;;;;;;21547:8;21539:16;;;;;;:40;;;;;21569:10;21559:7;:20;21539:40;21535:288;;;21622:1;21596:22;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;21638:13:0;;;;;;:9;:13;;;;;:18;;21655:1;;21638:13;:18;;21655:1;;21638:18;:::i;:::-;;;;-1:-1:-1;21535:288:0;;-1:-1:-1;21535:288:0;;21684:8;-1:-1:-1;;;;;21678:14:0;:2;-1:-1:-1;;;;;21678:14:0;;:38;;;;;21706:10;21696:7;:20;21678:38;21674:149;;;21759:1;21733:22;;:27;;;;;;;:::i;21674:149::-;-1:-1:-1;;;;;21793:13:0;;;;;;:9;:13;;;;;:18;;21810:1;;21793:13;:18;;21810:1;;21793:18;:::i;:::-;;;;-1:-1:-1;;21674:149:0;21859:7;21855:2;-1:-1:-1;;;;;21840:27:0;21849:4;-1:-1:-1;;;;;21840:27:0;;;;;;;;;;;20939:936;;;:::o;15298:345::-;15427:6;15402:21;:31;;15380:110;;;;-1:-1:-1;;;15380:110:0;;10223:2:1;15380:110:0;;;10205:21:1;10262:2;10242:18;;;10235:30;10301:31;10281:18;;;10274:59;10350:18;;15380:110:0;10195:179:1;15380:110:0;15504:12;15522:9;-1:-1:-1;;;;;15522:14:0;15544:6;15522:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15503:52;;;15574:7;15566:69;;;;-1:-1:-1;;;15566:69:0;;16004:2:1;15566:69:0;;;15986:21:1;16043:2;16023:18;;;16016:30;16082:34;16062:18;;;16055:62;16153:19;16133:18;;;16126:47;16190:19;;15566:69:0;15976:239:1;20607:324:0;-1:-1:-1;;;;;20687:16:0;;20679:61;;;;-1:-1:-1;;;20679:61:0;;13304:2:1;20679:61:0;;;13286:21:1;;;13323:18;;;13316:30;13382:34;13362:18;;;13355:62;13434:18;;20679:61:0;13276:182:1;20679:61:0;20760:16;20768:7;20760;:16::i;:::-;20759:17;20751:58;;;;-1:-1:-1;;;20751:58:0;;10581:2:1;20751:58:0;;;10563:21:1;10620:2;10600:18;;;10593:30;10659;10639:18;;;10632:58;10707:18;;20751:58:0;10553:178:1;20751:58:0;-1:-1:-1;;;;;20822:13:0;;;;;;:9;:13;;;;;:18;;20839:1;;20822:13;:18;;20839:1;;20822:18;:::i;:::-;;;;-1:-1:-1;;20851:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;20851:21:0;-1:-1:-1;;;;;20851:21:0;;;;;;;;20890:33;;20851:16;;;20890:33;;20851:16;;20890:33;20607:324;;:::o;15875:416::-;15927:14;15944:16;15952:7;15944;:16::i;:::-;15927:33;;16001:29;16018:1;16022:7;16001:8;:29::i;:::-;-1:-1:-1;;;;;16047:17:0;;16067:1;16047:17;;;:9;:17;;;;;;:21;16043:76;;-1:-1:-1;;;;;16085:17:0;;;;;;:9;:17;;;;;:22;;16106:1;;16085:17;:22;;16106:1;;16085:22;:::i;:::-;;;;-1:-1:-1;;16043:76:0;16136:16;;;;:7;:16;;;;;;;;16129:23;;-1:-1:-1;;16129:23:0;;;16165:7;:16;;;;;;:23;;-1:-1:-1;;16165:23:0;16129;16165;;;16206:37;16144:7;;16136:16;-1:-1:-1;;;;;16206:37:0;;;;;16136:16;;16206:37;15916:375;15875:416;:::o;19347:352::-;19504:28;19514:4;19520:2;19524:7;19504:9;:28::i;:::-;19565:48;19588:4;19594:2;19598:7;19607:5;19565:22;:48::i;:::-;19543:148;;;;-1:-1:-1;;;19543:148:0;;9804:2:1;19543:148:0;;;9786:21:1;9843:2;9823:18;;;9816:30;9882:34;9862:18;;;9855:62;9953:20;9933:18;;;9926:48;9991:19;;19543:148:0;9776:240:1;14566:724:0;14623:13;14844:10;14840:53;;-1:-1:-1;;14871:10:0;;;;;;;;;;;;;;;;;;14566:724::o;14840:53::-;14918:5;14903:12;14959:78;14966:9;;14959:78;;14992:8;;;;:::i;:::-;;-1:-1:-1;15015:10:0;;-1:-1:-1;15023:2:0;15015:10;;:::i;:::-;;;14959:78;;;15047:19;15079:6;15069:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15069:17:0;;15047:39;;15097:154;15104:10;;15097:154;;15131:11;15141:1;15131:11;;:::i;:::-;;-1:-1:-1;15200:10:0;15208:2;15200:5;:10;:::i;:::-;15187:24;;:2;:24;:::i;:::-;15174:39;;15157:6;15164;15157:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;15228:11:0;15237:2;15228:11;;:::i;:::-;;;15097:154;;22058:1050;22213:4;23442:20;;23490:8;22230:871;;22286:173;;;;;-1:-1:-1;;;;;22286:36:0;;;;;:173;;22345:10;;22378:4;;22405:7;;22435:5;;22286:173;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22286:173:0;;;;;;;;-1:-1:-1;;22286:173:0;;;;;;;;;;;;:::i;:::-;;;22265:781;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22646:13:0;;22642:389;;22689:108;;-1:-1:-1;;;22689:108:0;;9804:2:1;22689:108:0;;;9786:21:1;9843:2;9823:18;;;9816:30;9882:34;9862:18;;;9855:62;9953:20;9933:18;;;9926:48;9991:19;;22689:108:0;9776:240:1;22642:389:0;22981:6;22975:13;22966:6;22962:2;22958:15;22951:38;22265:781;22523:55;;22533:45;22523:55;;-1:-1:-1;22516:62:0;;22230:871;-1:-1:-1;23085:4:0;22058:1050;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:690:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;289:2;283:9;355:2;343:15;;-1:-1:-1;;339:24:1;;;365:2;335:33;331:42;319:55;;;389:18;;;409:22;;;386:46;383:2;;;435:18;;:::i;:::-;475:10;471:2;464:22;504:6;495:15;;534:6;526;519:22;574:3;565:6;560:3;556:16;553:25;550:2;;;591:1;588;581:12;550:2;641:6;636:3;629:4;621:6;617:17;604:44;696:1;689:4;680:6;672;668:19;664:30;657:41;;;;88:616;;;;;:::o;709:247::-;768:6;821:2;809:9;800:7;796:23;792:32;789:2;;;837:1;834;827:12;789:2;876:9;863:23;895:31;920:5;895:31;:::i;:::-;945:5;779:177;-1:-1:-1;;;779:177:1:o;961:259::-;1039:6;1092:2;1080:9;1071:7;1067:23;1063:32;1060:2;;;1108:1;1105;1098:12;1060:2;1140:9;1134:16;1159:31;1184:5;1159:31;:::i;1225:388::-;1293:6;1301;1354:2;1342:9;1333:7;1329:23;1325:32;1322:2;;;1370:1;1367;1360:12;1322:2;1409:9;1396:23;1428:31;1453:5;1428:31;:::i;:::-;1478:5;-1:-1:-1;1535:2:1;1520:18;;1507:32;1548:33;1507:32;1548:33;:::i;:::-;1600:7;1590:17;;;1312:301;;;;;:::o;1618:456::-;1695:6;1703;1711;1764:2;1752:9;1743:7;1739:23;1735:32;1732:2;;;1780:1;1777;1770:12;1732:2;1819:9;1806:23;1838:31;1863:5;1838:31;:::i;:::-;1888:5;-1:-1:-1;1945:2:1;1930:18;;1917:32;1958:33;1917:32;1958:33;:::i;:::-;1722:352;;2010:7;;-1:-1:-1;;;2064:2:1;2049:18;;;;2036:32;;1722:352::o;2079:794::-;2174:6;2182;2190;2198;2251:3;2239:9;2230:7;2226:23;2222:33;2219:2;;;2268:1;2265;2258:12;2219:2;2307:9;2294:23;2326:31;2351:5;2326:31;:::i;:::-;2376:5;-1:-1:-1;2433:2:1;2418:18;;2405:32;2446:33;2405:32;2446:33;:::i;:::-;2498:7;-1:-1:-1;2552:2:1;2537:18;;2524:32;;-1:-1:-1;2607:2:1;2592:18;;2579:32;2634:18;2623:30;;2620:2;;;2666:1;2663;2656:12;2620:2;2689:22;;2742:4;2734:13;;2730:27;-1:-1:-1;2720:2:1;;2771:1;2768;2761:12;2720:2;2794:73;2859:7;2854:2;2841:16;2836:2;2832;2828:11;2794:73;:::i;:::-;2784:83;;;2209:664;;;;;;;:::o;2878:416::-;2943:6;2951;3004:2;2992:9;2983:7;2979:23;2975:32;2972:2;;;3020:1;3017;3010:12;2972:2;3059:9;3046:23;3078:31;3103:5;3078:31;:::i;:::-;3128:5;-1:-1:-1;3185:2:1;3170:18;;3157:32;3227:15;;3220:23;3208:36;;3198:2;;3258:1;3255;3248:12;3299:315;3367:6;3375;3428:2;3416:9;3407:7;3403:23;3399:32;3396:2;;;3444:1;3441;3434:12;3396:2;3483:9;3470:23;3502:31;3527:5;3502:31;:::i;:::-;3552:5;3604:2;3589:18;;;;3576:32;;-1:-1:-1;;;3386:228:1:o;3619:245::-;3677:6;3730:2;3718:9;3709:7;3705:23;3701:32;3698:2;;;3746:1;3743;3736:12;3698:2;3785:9;3772:23;3804:30;3828:5;3804:30;:::i;3869:249::-;3938:6;3991:2;3979:9;3970:7;3966:23;3962:32;3959:2;;;4007:1;4004;3997:12;3959:2;4039:9;4033:16;4058:30;4082:5;4058:30;:::i;4123:450::-;4192:6;4245:2;4233:9;4224:7;4220:23;4216:32;4213:2;;;4261:1;4258;4251:12;4213:2;4301:9;4288:23;4334:18;4326:6;4323:30;4320:2;;;4366:1;4363;4356:12;4320:2;4389:22;;4442:4;4434:13;;4430:27;-1:-1:-1;4420:2:1;;4471:1;4468;4461:12;4420:2;4494:73;4559:7;4554:2;4541:16;4536:2;4532;4528:11;4494:73;:::i;4578:180::-;4637:6;4690:2;4678:9;4669:7;4665:23;4661:32;4658:2;;;4706:1;4703;4696:12;4658:2;-1:-1:-1;4729:23:1;;4648:110;-1:-1:-1;4648:110:1:o;4763:316::-;4804:3;4842:5;4836:12;4869:6;4864:3;4857:19;4885:63;4941:6;4934:4;4929:3;4925:14;4918:4;4911:5;4907:16;4885:63;:::i;:::-;4993:2;4981:15;-1:-1:-1;;4977:88:1;4968:98;;;;5068:4;4964:109;;4812:267;-1:-1:-1;;4812:267:1:o;5084:1088::-;5169:12;;5134:3;;5224:1;5244:18;;;;5297;;;;5324:2;;5378:4;5370:6;5366:17;5356:27;;5324:2;5404;5452;5444:6;5441:14;5421:18;5418:38;5415:2;;;-1:-1:-1;;;5486:1:1;5479:88;5590:4;5587:1;5580:15;5618:4;5615:1;5608:15;5415:2;5649:18;5676:162;;;;5852:1;5847:319;;;;5642:524;;5676:162;-1:-1:-1;;5713:9:1;5709:82;5704:3;5697:95;5821:6;5816:3;5812:16;5805:23;;5676:162;;5847:319;17654:1;17647:14;;;17691:4;17678:18;;5941:1;5955:165;5969:6;5966:1;5963:13;5955:165;;;6047:14;;6034:11;;;6027:35;6090:16;;;;5984:10;;5955:165;;;5959:3;;6149:6;6144:3;6140:16;6133:23;;5642:524;;;;;;;5142:1030;;;;:::o;6177:376::-;6353:3;6381:38;6415:3;6407:6;6381:38;:::i;:::-;6448:6;6442:13;6464:52;6509:6;6505:2;6498:4;6490:6;6486:17;6464:52;:::i;:::-;6532:15;;6361:192;-1:-1:-1;;;;6361:192:1:o;6558:358::-;6787:3;6815:38;6849:3;6841:6;6815:38;:::i;:::-;6873:10;6862:22;;6908:1;6900:10;;6795:121;-1:-1:-1;;;6795:121:1:o;7362:511::-;7556:4;-1:-1:-1;;;;;7666:2:1;7658:6;7654:15;7643:9;7636:34;7718:2;7710:6;7706:15;7701:2;7690:9;7686:18;7679:43;;7758:6;7753:2;7742:9;7738:18;7731:34;7801:3;7796:2;7785:9;7781:18;7774:31;7822:45;7862:3;7851:9;7847:19;7839:6;7822:45;:::i;:::-;7814:53;7565:308;-1:-1:-1;;;;;;7565:308:1:o;8252:219::-;8401:2;8390:9;8383:21;8364:4;8421:44;8461:2;8450:9;8446:18;8438:6;8421:44;:::i;17707:128::-;17747:3;17778:1;17774:6;17771:1;17768:13;17765:2;;;17784:18;;:::i;:::-;-1:-1:-1;17820:9:1;;17755:80::o;17840:120::-;17880:1;17906;17896:2;;17911:18;;:::i;:::-;-1:-1:-1;17945:9:1;;17886:74::o;17965:228::-;18005:7;18131:1;-1:-1:-1;;18059:74:1;18056:1;18053:81;18048:1;18041:9;18034:17;18030:105;18027:2;;;18138:18;;:::i;:::-;-1:-1:-1;18178:9:1;;18017:176::o;18198:125::-;18238:4;18266:1;18263;18260:8;18257:2;;;18271:18;;:::i;:::-;-1:-1:-1;18308:9:1;;18247:76::o;18328:258::-;18400:1;18410:113;18424:6;18421:1;18418:13;18410:113;;;18500:11;;;18494:18;18481:11;;;18474:39;18446:2;18439:10;18410:113;;;18541:6;18538:1;18535:13;18532:2;;;-1:-1:-1;;18576:1:1;18558:16;;18551:27;18381:205::o;18591:437::-;18670:1;18666:12;;;;18713;;;18734:2;;18788:4;18780:6;18776:17;18766:27;;18734:2;18841;18833:6;18830:14;18810:18;18807:38;18804:2;;;-1:-1:-1;;;18875:1:1;18868:88;18979:4;18976:1;18969:15;19007:4;19004:1;18997:15;18804:2;;18646:382;;;:::o;19033:195::-;19072:3;-1:-1:-1;;19096:5:1;19093:77;19090:2;;;19173:18;;:::i;:::-;-1:-1:-1;19220:1:1;19209:13;;19080:148::o;19233:112::-;19265:1;19291;19281:2;;19296:18;;:::i;:::-;-1:-1:-1;19330:9:1;;19271:74::o;19350:184::-;-1:-1:-1;;;19399:1:1;19392:88;19499:4;19496:1;19489:15;19523:4;19520:1;19513:15;19539:184;-1:-1:-1;;;19588:1:1;19581:88;19688:4;19685:1;19678:15;19712:4;19709:1;19702:15;19728:184;-1:-1:-1;;;19777:1:1;19770:88;19877:4;19874:1;19867:15;19901:4;19898:1;19891:15;19917:184;-1:-1:-1;;;19966:1:1;19959:88;20066:4;20063:1;20056:15;20090:4;20087:1;20080:15;20106:154;-1:-1:-1;;;;;20185:5:1;20181:54;20174:5;20171:65;20161:2;;20250:1;20247;20240:12;20265:177;20350:66;20343:5;20339:78;20332:5;20329:89;20319:2;;20432:1;20429;20422:12

Swarm Source

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